Index: backend/SUPABASE_SETUP.md
===================================================================
--- backend/SUPABASE_SETUP.md	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
+++ backend/SUPABASE_SETUP.md	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -0,0 +1,54 @@
+# Supabase Setup Instructions
+
+Follow these steps to set up Supabase for your project:
+
+## 1. Create a Supabase Project
+
+- Go to [https://app.supabase.com/](https://app.supabase.com/) and sign in or create an account.
+- Click **New Project** and fill in the project name, password, and select a region.
+- Wait for the project to initialize.
+
+## 2. Get Your Supabase Credentials
+
+- In your Supabase project dashboard, go to **Project Settings > API**.
+- Copy the **Project URL** and **Service Role Key** (never expose the service role key to the frontend).
+- Add these to your `.env` file in `/backend`:
+
+```
+SUPABASE_URL=your_supabase_project_url
+SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
+```
+
+## 3. Enable Email Auth
+
+- In the dashboard, go to **Authentication > Providers**.
+- Enable **Email** provider.
+
+## 4. Create the `users` Table
+
+- Go to **Table Editor** in the dashboard.
+- Click **New Table** and name it `users`.
+- Add the following columns:
+  - `id` (UUID, Primary Key, default value: `auth.uid()`)
+  - `username` (text, unique)
+  - `email` (text, unique)
+- Save the table.
+
+## 5. Set Row Level Security (RLS)
+
+- Enable RLS for the `users` table.
+- Add a policy to allow inserts by authenticated users (or by service role for admin registration).
+
+## 6. (Optional) Add More Tables
+
+- You can add more tables for posts, tasks, etc., as your app grows.
+
+## 7. Test Registration
+
+- Use your app's registration form to create a new user. The backend will use Supabase Auth and insert into the `users` table.
+
+---
+
+**Note:** Never expose your service role key to the frontend. Only use it in the backend.
+
+For more details, see the [Supabase documentation](https://supabase.com/docs).
Index: backend/controllers/apiController.js
===================================================================
--- backend/controllers/apiController.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/controllers/apiController.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -1,11 +1,8 @@
-const userService = require('../services/userService');
+const supabase = require('../supabaseClient');
 
 const registerPOST = async (req, res) => {
   try {
-    console.log('Register request received:');
-    console.log('Username:', req.body.username);
-    console.log('Email:', req.body.email);
-    console.log('Password:', req.body.password);
-    if (!req.body.username || !req.body.email || !req.body.password) {
+    const { username, email, password } = req.body;
+    if (!username || !email || !password) {
       return res.status(400).json({
         message: 'Missing required fields',
@@ -13,5 +10,5 @@
       });
     }
-    if (!req.body.email.endsWith('@students.finki.ukim.mk')) {
+    if (!email.endsWith('@students.finki.ukim.mk')) {
       return res.status(400).json({
         message: 'Email must be a valid FINKI student email',
@@ -19,28 +16,38 @@
       });
     }
-    const user = await userService.createUser({
-      username: req.body.username,
-      email: req.body.email,
-      password: req.body.password,
+    // Create user in Supabase Auth
+    const { data, error } = await supabase.auth.admin.createUser({
+      email,
+      password,
+      user_metadata: { username },
+      email_confirm: true
     });
+    if (error) {
+      if (error.message.includes('already registered')) {
+        return res.status(409).json({
+          message: 'Email already exists',
+          success: false,
+        });
+      }
+      return res.status(500).json({
+        message: error.message,
+        success: false,
+      });
+    }
+    // Optionally, store additional user info in a public 'users' table
+    await supabase.from('users').insert([
+      { id: data.user.id, username, email }
+    ]);
     res.status(200).json({
       message: 'Registration successful',
       success: true,
       user: {
-        username: req.body.username,
-        email: req.body.email,
+        id: data.user.id,
+        username,
+        email,
       },
     });
   } catch (error) {
     console.error('Registration error:', error);
-
-    // Handle specific errors
-    if (error.message.includes('already exists')) {
-      return res.status(409).json({
-        message: error.message,
-        success: false,
-      });
-    }
-
     res.status(500).json({
       message: 'An error occurred during registration',
@@ -49,4 +56,5 @@
   }
 };
+
 module.exports = {
   registerPOST,
Index: ckend/db/dbConfig.js
===================================================================
--- backend/db/dbConfig.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-const path = require('path');
-require('dotenv').config({ path: path.join(__dirname, '../../.env') });
-const { Sequelize } = require('sequelize');
-
-const sequelize = new Sequelize(
-  process.env.DB_NAME,
-  process.env.DB_USER,
-  process.env.DB_PASSWORD,
-  {
-    host: process.env.DB_HOST,
-    port: process.env.DB_PORT,
-    dialect: 'postgres',
-    logging: false, // Set to console.log to see SQL queries
-    pool: {
-      max: 5,
-      min: 0,
-      acquire: 30000,
-      idle: 10000,
-    },
-  }
-);
-
-const testConnection = async () => {
-  try {
-    await sequelize.authenticate();
-    console.log('Database connection established successfully.');
-  } catch (error) {
-    console.error('Unable to connect to the database:', error);
-  }
-};
-
-testConnection();
-
-module.exports = sequelize;
Index: ckend/db/dbInit.js
===================================================================
--- backend/db/dbInit.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-const sequelize = require('./dbConfig');
-const User = require('../models/User');
-
-const syncDatabase = async () => {
-  try {
-    await sequelize.sync({ alter: true });
-    console.log('Database & tables created!');
-  } catch (error) {
-    console.error('Error syncing database:', error);
-  }
-};
-
-module.exports = {
-  syncDatabase,
-  User,
-};
Index: ckend/models/user.js
===================================================================
--- backend/models/user.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-const { DataTypes } = require('sequelize');
-const sequelize = require('../db/dbConfig');
-const bcrypt = require('bcrypt');
-
-const User = sequelize.define('User', {
-  id: {
-    type: DataTypes.INTEGER,
-    primaryKey: true,
-    autoIncrement: true,
-  },
-  username: {
-    type: DataTypes.STRING,
-    allowNull: false,
-    unique: true,
-  },
-  email: {
-    type: DataTypes.STRING,
-    allowNull: false,
-    unique: true,
-    validate: {
-      isEmail: true,
-      is: /.*@students\.finki\.ukim\.mk$/i,
-    },
-  },
-  password: {
-    type: DataTypes.STRING,
-    allowNull: false,
-  },
-  createdAt: {
-    type: DataTypes.DATE,
-    defaultValue: DataTypes.NOW,
-  },
-  updatedAt: {
-    type: DataTypes.DATE,
-    defaultValue: DataTypes.NOW,
-  },
-});
-
-User.beforeCreate(async (user) => {
-  const salt = await bcrypt.genSalt(10);
-  user.password = await bcrypt.hash(user.password, salt);
-});
-
-module.exports = User;
Index: backend/node_modules/.bin/nodemon
===================================================================
--- backend/node_modules/.bin/nodemon	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/node_modules/.bin/nodemon	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -1,16 +1,1 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
-    *CYGWIN*|*MINGW*|*MSYS*)
-        if command -v cygpath > /dev/null 2>&1; then
-            basedir=`cygpath -w "$basedir"`
-        fi
-    ;;
-esac
-
-if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../nodemon/bin/nodemon.js" "$@"
-else 
-  exec node  "$basedir/../nodemon/bin/nodemon.js" "$@"
-fi
+../nodemon/bin/nodemon.js
Index: backend/node_modules/.bin/nodetouch
===================================================================
--- backend/node_modules/.bin/nodetouch	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/node_modules/.bin/nodetouch	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -1,16 +1,1 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
-    *CYGWIN*|*MINGW*|*MSYS*)
-        if command -v cygpath > /dev/null 2>&1; then
-            basedir=`cygpath -w "$basedir"`
-        fi
-    ;;
-esac
-
-if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../touch/bin/nodetouch.js" "$@"
-else 
-  exec node  "$basedir/../touch/bin/nodetouch.js" "$@"
-fi
+../touch/bin/nodetouch.js
Index: backend/node_modules/.bin/semver
===================================================================
--- backend/node_modules/.bin/semver	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/node_modules/.bin/semver	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -1,16 +1,1 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
-    *CYGWIN*|*MINGW*|*MSYS*)
-        if command -v cygpath > /dev/null 2>&1; then
-            basedir=`cygpath -w "$basedir"`
-        fi
-    ;;
-esac
-
-if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../semver/bin/semver.js" "$@"
-else 
-  exec node  "$basedir/../semver/bin/semver.js" "$@"
-fi
+../semver/bin/semver.js
Index: ckend/node_modules/.bin/uuid
===================================================================
--- backend/node_modules/.bin/uuid	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-#!/bin/sh
-basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
-
-case `uname` in
-    *CYGWIN*|*MINGW*|*MSYS*)
-        if command -v cygpath > /dev/null 2>&1; then
-            basedir=`cygpath -w "$basedir"`
-        fi
-    ;;
-esac
-
-if [ -x "$basedir/node" ]; then
-  exec "$basedir/node"  "$basedir/../uuid/dist/bin/uuid" "$@"
-else 
-  exec node  "$basedir/../uuid/dist/bin/uuid" "$@"
-fi
Index: backend/node_modules/.package-lock.json
===================================================================
--- backend/node_modules/.package-lock.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/node_modules/.package-lock.json	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -5,18 +5,77 @@
   "requires": true,
   "packages": {
-    "node_modules/@types/debug": {
-      "version": "4.1.12",
-      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
-      "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/ms": "*"
-      }
-    },
-    "node_modules/@types/ms": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
-      "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
-      "license": "MIT"
+    "node_modules/@supabase/auth-js": {
+      "version": "2.69.1",
+      "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.69.1.tgz",
+      "integrity": "sha512-FILtt5WjCNzmReeRLq5wRs3iShwmnWgBvxHfqapC/VoljJl+W8hDAyFmf1NVw3zH+ZjZ05AKxiKxVeb0HNWRMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/functions-js": {
+      "version": "2.4.4",
+      "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz",
+      "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/node-fetch": {
+      "version": "2.6.15",
+      "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
+      "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
+      "license": "MIT",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      }
+    },
+    "node_modules/@supabase/postgrest-js": {
+      "version": "1.19.4",
+      "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz",
+      "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/realtime-js": {
+      "version": "2.11.10",
+      "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.10.tgz",
+      "integrity": "sha512-SJKVa7EejnuyfImrbzx+HaD9i6T784khuw1zP+MBD7BmJYChegGxYigPzkKX8CK8nGuDntmeSD3fvriaH0EGZA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.13",
+        "@types/phoenix": "^1.6.6",
+        "@types/ws": "^8.18.1",
+        "ws": "^8.18.2"
+      }
+    },
+    "node_modules/@supabase/storage-js": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz",
+      "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/supabase-js": {
+      "version": "2.49.10",
+      "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.49.10.tgz",
+      "integrity": "sha512-IRPcIdncuhD2m1eZ2Fkg0S1fq9SXlHfmAetBxPN66kVFtTucR8b01xKuVmKqcIJokB17umMf1bmqyS8yboXGsw==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/auth-js": "2.69.1",
+        "@supabase/functions-js": "2.4.4",
+        "@supabase/node-fetch": "2.6.15",
+        "@supabase/postgrest-js": "1.19.4",
+        "@supabase/realtime-js": "2.11.10",
+        "@supabase/storage-js": "2.7.1"
+      }
     },
     "node_modules/@types/node": {
@@ -29,9 +88,18 @@
       }
     },
-    "node_modules/@types/validator": {
-      "version": "13.15.1",
-      "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.1.tgz",
-      "integrity": "sha512-9gG6ogYcoI2mCMLdcO0NYI0AYrbxIjv0MDmy/5Ywo6CpWWrqYayc+mmgxRsCgtcGJm9BSbXkMsmxGah1iGHAAQ==",
+    "node_modules/@types/phoenix": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
+      "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==",
       "license": "MIT"
+    },
+    "node_modules/@types/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
     },
     "node_modules/accepts": {
@@ -286,10 +354,4 @@
         "url": "https://dotenvx.com"
       }
-    },
-    "node_modules/dottie": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz",
-      "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==",
-      "license": "MIT"
     },
     "node_modules/dunder-proto": {
@@ -457,4 +519,19 @@
       }
     },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
     "node_modules/function-bind": {
       "version": "1.1.2",
@@ -597,13 +674,4 @@
       "license": "ISC"
     },
-    "node_modules/inflection": {
-      "version": "1.13.4",
-      "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz",
-      "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==",
-      "engines": [
-        "node >= 0.4.0"
-      ],
-      "license": "MIT"
-    },
     "node_modules/inherits": {
       "version": "2.0.4",
@@ -673,10 +741,4 @@
       "license": "MIT"
     },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "license": "MIT"
-    },
     "node_modules/math-intrinsics": {
       "version": "1.1.0",
@@ -738,25 +800,4 @@
       "dependencies": {
         "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/moment": {
-      "version": "2.30.1",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
-      "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/moment-timezone": {
-      "version": "0.5.48",
-      "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz",
-      "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==",
-      "license": "MIT",
-      "dependencies": {
-        "moment": "^2.29.4"
       },
       "engines": {
@@ -889,93 +930,4 @@
       }
     },
-    "node_modules/pg": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz",
-      "integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==",
-      "license": "MIT",
-      "dependencies": {
-        "pg-connection-string": "^2.9.0",
-        "pg-pool": "^3.10.0",
-        "pg-protocol": "^1.10.0",
-        "pg-types": "2.2.0",
-        "pgpass": "1.0.5"
-      },
-      "engines": {
-        "node": ">= 8.0.0"
-      },
-      "optionalDependencies": {
-        "pg-cloudflare": "^1.2.5"
-      },
-      "peerDependencies": {
-        "pg-native": ">=3.0.1"
-      },
-      "peerDependenciesMeta": {
-        "pg-native": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/pg-cloudflare": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz",
-      "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==",
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/pg-connection-string": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz",
-      "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==",
-      "license": "MIT"
-    },
-    "node_modules/pg-int8": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
-      "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/pg-pool": {
-      "version": "3.10.0",
-      "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz",
-      "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==",
-      "license": "MIT",
-      "peerDependencies": {
-        "pg": ">=8.0"
-      }
-    },
-    "node_modules/pg-protocol": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz",
-      "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==",
-      "license": "MIT"
-    },
-    "node_modules/pg-types": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
-      "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
-      "license": "MIT",
-      "dependencies": {
-        "pg-int8": "1.0.1",
-        "postgres-array": "~2.0.0",
-        "postgres-bytea": "~1.0.0",
-        "postgres-date": "~1.0.4",
-        "postgres-interval": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pgpass": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
-      "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
-      "license": "MIT",
-      "dependencies": {
-        "split2": "^4.1.0"
-      }
-    },
     "node_modules/picomatch": {
       "version": "2.3.1",
@@ -989,43 +941,4 @@
       "funding": {
         "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/postgres-array": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
-      "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postgres-bytea": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
-      "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postgres-date": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
-      "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postgres-interval": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
-      "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
-      "license": "MIT",
-      "dependencies": {
-        "xtend": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
       }
     },
@@ -1101,10 +1014,4 @@
         "node": ">=8.10.0"
       }
-    },
-    "node_modules/retry-as-promised": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.1.1.tgz",
-      "integrity": "sha512-hMD7odLOt3LkTjcif8aRZqi/hybjpLNgSk5oF5FCowfCjok6LukpN2bDX7R5wDmbgBQFn7YoBxSagmtXHaJYJw==",
-      "license": "MIT"
     },
     "node_modules/router": {
@@ -1154,4 +1061,5 @@
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
       "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+      "dev": true,
       "license": "ISC",
       "bin": {
@@ -1184,75 +1092,4 @@
       }
     },
-    "node_modules/sequelize": {
-      "version": "6.37.7",
-      "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.7.tgz",
-      "integrity": "sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/sequelize"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/debug": "^4.1.8",
-        "@types/validator": "^13.7.17",
-        "debug": "^4.3.4",
-        "dottie": "^2.0.6",
-        "inflection": "^1.13.4",
-        "lodash": "^4.17.21",
-        "moment": "^2.29.4",
-        "moment-timezone": "^0.5.43",
-        "pg-connection-string": "^2.6.1",
-        "retry-as-promised": "^7.0.4",
-        "semver": "^7.5.4",
-        "sequelize-pool": "^7.1.0",
-        "toposort-class": "^1.0.1",
-        "uuid": "^8.3.2",
-        "validator": "^13.9.0",
-        "wkx": "^0.5.0"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ibm_db": {
-          "optional": true
-        },
-        "mariadb": {
-          "optional": true
-        },
-        "mysql2": {
-          "optional": true
-        },
-        "oracledb": {
-          "optional": true
-        },
-        "pg": {
-          "optional": true
-        },
-        "pg-hstore": {
-          "optional": true
-        },
-        "snowflake-sdk": {
-          "optional": true
-        },
-        "sqlite3": {
-          "optional": true
-        },
-        "tedious": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/sequelize-pool": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
-      "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
     "node_modules/serve-static": {
       "version": "2.2.0",
@@ -1361,13 +1198,4 @@
       }
     },
-    "node_modules/split2": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
-      "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 10.x"
-      }
-    },
     "node_modules/statuses": {
       "version": "2.0.1",
@@ -1414,10 +1242,4 @@
       }
     },
-    "node_modules/toposort-class": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
-      "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==",
-      "license": "MIT"
-    },
     "node_modules/touch": {
       "version": "3.1.1",
@@ -1429,4 +1251,10 @@
         "nodetouch": "bin/nodetouch.js"
       }
+    },
+    "node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+      "license": "MIT"
     },
     "node_modules/type-is": {
@@ -1466,22 +1294,4 @@
       }
     },
-    "node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "license": "MIT",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/validator": {
-      "version": "13.15.15",
-      "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz",
-      "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
     "node_modules/vary": {
       "version": "1.1.2",
@@ -1493,11 +1303,18 @@
       }
     },
-    "node_modules/wkx": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
-      "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
+    "node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "license": "MIT",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
       }
     },
@@ -1508,11 +1325,23 @@
       "license": "ISC"
     },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4"
+    "node_modules/ws": {
+      "version": "8.18.2",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
+      "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
       }
     }
Index: ckend/node_modules/@types/debug/LICENSE
===================================================================
--- backend/node_modules/@types/debug/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
Index: ckend/node_modules/@types/debug/README.md
===================================================================
--- backend/node_modules/@types/debug/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-# Installation
-> `npm install --save @types/debug`
-
-# Summary
-This package contains type definitions for debug (https://github.com/debug-js/debug).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug.
-## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug/index.d.ts)
-````ts
-declare var debug: debug.Debug & { debug: debug.Debug; default: debug.Debug };
-
-export = debug;
-export as namespace debug;
-
-declare namespace debug {
-    interface Debug {
-        (namespace: string): Debugger;
-        coerce: (val: any) => any;
-        disable: () => string;
-        enable: (namespaces: string) => void;
-        enabled: (namespaces: string) => boolean;
-        formatArgs: (this: Debugger, args: any[]) => void;
-        log: (...args: any[]) => any;
-        selectColor: (namespace: string) => string | number;
-        humanize: typeof import("ms");
-
-        names: RegExp[];
-        skips: RegExp[];
-
-        formatters: Formatters;
-
-        inspectOpts?: {
-            hideDate?: boolean | number | null;
-            colors?: boolean | number | null;
-            depth?: boolean | number | null;
-            showHidden?: boolean | number | null;
-        };
-    }
-
-    type IDebug = Debug;
-
-    interface Formatters {
-        [formatter: string]: (v: any) => string;
-    }
-
-    type IDebugger = Debugger;
-
-    interface Debugger {
-        (formatter: any, ...args: any[]): void;
-
-        color: string;
-        diff: number;
-        enabled: boolean;
-        log: (...args: any[]) => any;
-        namespace: string;
-        destroy: () => boolean;
-        extend: (namespace: string, delimiter?: string) => Debugger;
-    }
-}
-
-````
-
-### Additional Details
- * Last updated: Thu, 09 Nov 2023 03:06:57 GMT
- * Dependencies: [@types/ms](https://npmjs.com/package/@types/ms)
-
-# Credits
-These definitions were written by [Seon-Wook Park](https://github.com/swook), [Gal Talmor](https://github.com/galtalmor), [John McLaughlin](https://github.com/zamb3zi), [Brasten Sager](https://github.com/brasten), [Nicolas Penin](https://github.com/npenin), [Kristian Brünn](https://github.com/kristianmitk), and [Caleb Gregory](https://github.com/calebgregory).
Index: ckend/node_modules/@types/debug/index.d.ts
===================================================================
--- backend/node_modules/@types/debug/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-declare var debug: debug.Debug & { debug: debug.Debug; default: debug.Debug };
-
-export = debug;
-export as namespace debug;
-
-declare namespace debug {
-    interface Debug {
-        (namespace: string): Debugger;
-        coerce: (val: any) => any;
-        disable: () => string;
-        enable: (namespaces: string) => void;
-        enabled: (namespaces: string) => boolean;
-        formatArgs: (this: Debugger, args: any[]) => void;
-        log: (...args: any[]) => any;
-        selectColor: (namespace: string) => string | number;
-        humanize: typeof import("ms");
-
-        names: RegExp[];
-        skips: RegExp[];
-
-        formatters: Formatters;
-
-        inspectOpts?: {
-            hideDate?: boolean | number | null;
-            colors?: boolean | number | null;
-            depth?: boolean | number | null;
-            showHidden?: boolean | number | null;
-        };
-    }
-
-    type IDebug = Debug;
-
-    interface Formatters {
-        [formatter: string]: (v: any) => string;
-    }
-
-    type IDebugger = Debugger;
-
-    interface Debugger {
-        (formatter: any, ...args: any[]): void;
-
-        color: string;
-        diff: number;
-        enabled: boolean;
-        log: (...args: any[]) => any;
-        namespace: string;
-        destroy: () => boolean;
-        extend: (namespace: string, delimiter?: string) => Debugger;
-    }
-}
Index: ckend/node_modules/@types/debug/package.json
===================================================================
--- backend/node_modules/@types/debug/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-{
-    "name": "@types/debug",
-    "version": "4.1.12",
-    "description": "TypeScript definitions for debug",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/debug",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Seon-Wook Park",
-            "githubUsername": "swook",
-            "url": "https://github.com/swook"
-        },
-        {
-            "name": "Gal Talmor",
-            "githubUsername": "galtalmor",
-            "url": "https://github.com/galtalmor"
-        },
-        {
-            "name": "John McLaughlin",
-            "githubUsername": "zamb3zi",
-            "url": "https://github.com/zamb3zi"
-        },
-        {
-            "name": "Brasten Sager",
-            "githubUsername": "brasten",
-            "url": "https://github.com/brasten"
-        },
-        {
-            "name": "Nicolas Penin",
-            "githubUsername": "npenin",
-            "url": "https://github.com/npenin"
-        },
-        {
-            "name": "Kristian Brünn",
-            "githubUsername": "kristianmitk",
-            "url": "https://github.com/kristianmitk"
-        },
-        {
-            "name": "Caleb Gregory",
-            "githubUsername": "calebgregory",
-            "url": "https://github.com/calebgregory"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/debug"
-    },
-    "scripts": {},
-    "dependencies": {
-        "@types/ms": "*"
-    },
-    "typesPublisherContentHash": "1053110a8e5e302f35fb57f45389304fa5a4f53bb8982b76b8065bcfd7083731",
-    "typeScriptVersion": "4.5"
-}
Index: ckend/node_modules/@types/ms/LICENSE
===================================================================
--- backend/node_modules/@types/ms/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
Index: ckend/node_modules/@types/ms/README.md
===================================================================
--- backend/node_modules/@types/ms/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-# Installation
-> `npm install --save @types/ms`
-
-# Summary
-This package contains type definitions for ms (https://github.com/vercel/ms).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms.
-## [index.d.ts](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms/index.d.ts)
-````ts
-/**
- * Short/Long format for `value`.
- *
- * @param {Number} value
- * @param {{long: boolean}} options
- * @return {String}
- */
-declare function ms(value: number, options?: { long: boolean }): string;
-
-/**
- * Parse the given `value` and return milliseconds.
- *
- * @param {ms.StringValue} value
- * @return {Number}
- */
-declare function ms(value: ms.StringValue): number;
-
-declare namespace ms {
-    // Unit, UnitAnyCase, and StringValue are backported from ms@3
-    // https://github.com/vercel/ms/blob/8b5923d1d86c84a9f6aba8022d416dcf2361aa8d/src/index.ts
-
-    type Unit =
-        | "Years"
-        | "Year"
-        | "Yrs"
-        | "Yr"
-        | "Y"
-        | "Weeks"
-        | "Week"
-        | "W"
-        | "Days"
-        | "Day"
-        | "D"
-        | "Hours"
-        | "Hour"
-        | "Hrs"
-        | "Hr"
-        | "H"
-        | "Minutes"
-        | "Minute"
-        | "Mins"
-        | "Min"
-        | "M"
-        | "Seconds"
-        | "Second"
-        | "Secs"
-        | "Sec"
-        | "s"
-        | "Milliseconds"
-        | "Millisecond"
-        | "Msecs"
-        | "Msec"
-        | "Ms";
-
-    type UnitAnyCase = Unit | Uppercase<Unit> | Lowercase<Unit>;
-
-    type StringValue =
-        | `${number}`
-        | `${number}${UnitAnyCase}`
-        | `${number} ${UnitAnyCase}`;
-}
-
-export = ms;
-
-````
-
-### Additional Details
- * Last updated: Thu, 16 Jan 2025 21:02:45 GMT
- * Dependencies: none
-
-# Credits
-These definitions were written by [Zhiyuan Wang](https://github.com/danny8002).
Index: ckend/node_modules/@types/ms/index.d.ts
===================================================================
--- backend/node_modules/@types/ms/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/**
- * Short/Long format for `value`.
- *
- * @param {Number} value
- * @param {{long: boolean}} options
- * @return {String}
- */
-declare function ms(value: number, options?: { long: boolean }): string;
-
-/**
- * Parse the given `value` and return milliseconds.
- *
- * @param {ms.StringValue} value
- * @return {Number}
- */
-declare function ms(value: ms.StringValue): number;
-
-declare namespace ms {
-    // Unit, UnitAnyCase, and StringValue are backported from ms@3
-    // https://github.com/vercel/ms/blob/8b5923d1d86c84a9f6aba8022d416dcf2361aa8d/src/index.ts
-
-    type Unit =
-        | "Years"
-        | "Year"
-        | "Yrs"
-        | "Yr"
-        | "Y"
-        | "Weeks"
-        | "Week"
-        | "W"
-        | "Days"
-        | "Day"
-        | "D"
-        | "Hours"
-        | "Hour"
-        | "Hrs"
-        | "Hr"
-        | "H"
-        | "Minutes"
-        | "Minute"
-        | "Mins"
-        | "Min"
-        | "M"
-        | "Seconds"
-        | "Second"
-        | "Secs"
-        | "Sec"
-        | "s"
-        | "Milliseconds"
-        | "Millisecond"
-        | "Msecs"
-        | "Msec"
-        | "Ms";
-
-    type UnitAnyCase = Unit | Uppercase<Unit> | Lowercase<Unit>;
-
-    type StringValue =
-        | `${number}`
-        | `${number}${UnitAnyCase}`
-        | `${number} ${UnitAnyCase}`;
-}
-
-export = ms;
Index: ckend/node_modules/@types/ms/package.json
===================================================================
--- backend/node_modules/@types/ms/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-{
-    "name": "@types/ms",
-    "version": "2.1.0",
-    "description": "TypeScript definitions for ms",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ms",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "Zhiyuan Wang",
-            "githubUsername": "danny8002",
-            "url": "https://github.com/danny8002"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/ms"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "peerDependencies": {},
-    "typesPublisherContentHash": "2c8651ce1714fdc6bcbc0f262c93a790f1d127fb1c2dc8edbb583decef56fd39",
-    "typeScriptVersion": "5.0"
-}
Index: ckend/node_modules/@types/validator/LICENSE
===================================================================
--- backend/node_modules/@types/validator/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
Index: ckend/node_modules/@types/validator/README.md
===================================================================
--- backend/node_modules/@types/validator/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-# Installation
-> `npm install --save @types/validator`
-
-# Summary
-This package contains type definitions for validator (https://github.com/validatorjs/validator.js).
-
-# Details
-Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator.
-
-### Additional Details
- * Last updated: Tue, 20 May 2025 19:32:28 GMT
- * Dependencies: none
-
-# Credits
-These definitions were written by [tgfjt](https://github.com/tgfjt), [Ilya Mochalov](https://github.com/chrootsu), [Ayman Nedjmeddine](https://github.com/IOAyman), [Louay Alakkad](https://github.com/louy), [Bonggyun Lee](https://github.com/deptno), [Naoto Yokoyama](https://github.com/builtinnya), [Philipp Katz](https://github.com/qqilihq), [Jace Warren](https://github.com/keatz55), [Munif Tanjim](https://github.com/MunifTanjim), [Vlad Poluch](https://github.com/vlapo), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Matteo Nista](https://github.com/Mattewn99), [Daniel Freire](https://github.com/dcfreire), and [Rik Smale](https://github.com/WikiRik).
Index: ckend/node_modules/@types/validator/es/lib/blacklist.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/blacklist.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.blacklist;
Index: ckend/node_modules/@types/validator/es/lib/contains.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/contains.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.contains;
Index: ckend/node_modules/@types/validator/es/lib/equals.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/equals.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.equals;
Index: ckend/node_modules/@types/validator/es/lib/escape.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/escape.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.escape;
Index: ckend/node_modules/@types/validator/es/lib/isAbaRouting.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isAbaRouting.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isAbaRouting;
Index: ckend/node_modules/@types/validator/es/lib/isAfter.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isAfter.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isAfter;
Index: ckend/node_modules/@types/validator/es/lib/isAlpha.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isAlpha.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type AlphaLocale = validator.AlphaLocale;
-export default validator.isAlpha;
Index: ckend/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isAlphanumeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type AlphanumericLocale = validator.AlphanumericLocale;
-export default validator.isAlphanumeric;
Index: ckend/node_modules/@types/validator/es/lib/isAscii.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isAscii.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isAscii;
Index: ckend/node_modules/@types/validator/es/lib/isBIC.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBIC.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBIC;
Index: ckend/node_modules/@types/validator/es/lib/isBase32.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBase32.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBase32;
Index: ckend/node_modules/@types/validator/es/lib/isBase58.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBase58.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBase58;
Index: ckend/node_modules/@types/validator/es/lib/isBase64.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBase64.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBase64;
Index: ckend/node_modules/@types/validator/es/lib/isBefore.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBefore.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBefore;
Index: ckend/node_modules/@types/validator/es/lib/isBoolean.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBoolean.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isBoolean, { Options } from "../../lib/isBoolean";
-export default isBoolean;
-export { Options };
Index: ckend/node_modules/@types/validator/es/lib/isBtcAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isBtcAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isBtcAddress;
Index: ckend/node_modules/@types/validator/es/lib/isByteLength.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isByteLength.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsByteLengthOptions = validator.IsByteLengthOptions;
-export default validator.isByteLength;
Index: ckend/node_modules/@types/validator/es/lib/isCreditCard.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isCreditCard.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isCreditCard;
Index: ckend/node_modules/@types/validator/es/lib/isCurrency.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isCurrency.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsCurrencyOptions = validator.IsCurrencyOptions;
-export default validator.isCurrency;
Index: ckend/node_modules/@types/validator/es/lib/isDataURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isDataURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isDataURI;
Index: ckend/node_modules/@types/validator/es/lib/isDate.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isDate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isDate;
Index: ckend/node_modules/@types/validator/es/lib/isDecimal.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isDecimal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../../";
-export type IsDecimalOptions = validator.IsDecimalOptions;
-export type DecimalLocale = validator.DecimalLocale;
-export default validator.isDecimal;
Index: ckend/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isDivisibleBy.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isDivisibleBy;
Index: ckend/node_modules/@types/validator/es/lib/isEAN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isEAN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isEAN;
Index: ckend/node_modules/@types/validator/es/lib/isEmail.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isEmail.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isEmail, { IsEmailOptions } from "../../lib/isEmail";
-export default isEmail;
-export { IsEmailOptions };
Index: ckend/node_modules/@types/validator/es/lib/isEmpty.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isEmpty.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsEmptyOptions = validator.IsEmptyOptions;
-export default validator.isEmpty;
Index: ckend/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isEthereumAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isEthereumAddress;
Index: ckend/node_modules/@types/validator/es/lib/isFQDN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isFQDN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isFQDN, { IsFQDNOptions } from "../../lib/isFQDN";
-export default isFQDN;
-export { IsFQDNOptions };
Index: ckend/node_modules/@types/validator/es/lib/isFloat.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isFloat.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../../";
-export type FloatLocale = validator.FloatLocale;
-export type IsFloatOptions = validator.IsFloatOptions;
-export default validator.isFloat;
Index: ckend/node_modules/@types/validator/es/lib/isFullWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isFullWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isFullWidth;
Index: ckend/node_modules/@types/validator/es/lib/isHSL.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isHSL.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isHSL;
Index: ckend/node_modules/@types/validator/es/lib/isHalfWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isHalfWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isHalfWidth;
Index: ckend/node_modules/@types/validator/es/lib/isHash.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isHash.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type HashAlgorithm = validator.HashAlgorithm;
-export default validator.isHash;
Index: ckend/node_modules/@types/validator/es/lib/isHexColor.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isHexColor.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isHexColor;
Index: ckend/node_modules/@types/validator/es/lib/isHexadecimal.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isHexadecimal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isHexadecimal;
Index: ckend/node_modules/@types/validator/es/lib/isIBAN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isIBAN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import isIBAN, { IsIBANOptions as IsIBANValidationOptions, locales } from "../../lib/isIBAN";
-export default isIBAN;
-export { locales };
-export type IsIBANOptions = IsIBANValidationOptions;
Index: ckend/node_modules/@types/validator/es/lib/isIP.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isIP.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IPVersion = validator.IPVersion;
-export default validator.isIP;
Index: ckend/node_modules/@types/validator/es/lib/isIPRange.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isIPRange.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IPVersion = validator.IPVersion;
-export default validator.isIPRange;
Index: ckend/node_modules/@types/validator/es/lib/isISBN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISBN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type ISBNVersion = validator.ISBNVersion;
-export default validator.isISBN;
Index: ckend/node_modules/@types/validator/es/lib/isISIN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISIN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isISIN;
Index: ckend/node_modules/@types/validator/es/lib/isISO15924.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO15924.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isISO15924;
Index: ckend/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO31661Alpha2.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isISO31661Alpha2, { CountryCodes } from "../../lib/isISO31661Alpha2";
-export default isISO31661Alpha2;
-export { CountryCodes };
Index: ckend/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO31661Alpha3.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isISO31661Alpha3;
Index: ckend/node_modules/@types/validator/es/lib/isISO31661Numeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO31661Numeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isISO31661Numeric;
Index: ckend/node_modules/@types/validator/es/lib/isISO4217.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO4217.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isISO4217, { CurrencyCodes } from "../../lib/isISO4217";
-export default isISO4217;
-export { CurrencyCodes };
Index: ckend/node_modules/@types/validator/es/lib/isISO6346.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO6346.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import { isFreightContainerID, isISO6346 } from "../../lib/isISO6346";
-export default isISO6346;
-export { isFreightContainerID };
Index: ckend/node_modules/@types/validator/es/lib/isISO6391.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO6391.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import isISO6391 from "../../lib/isISO6391";
-export default isISO6391;
Index: ckend/node_modules/@types/validator/es/lib/isISO8601.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISO8601.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsISO8601Options = validator.IsISO8601Options;
-export default validator.isISO8601;
Index: ckend/node_modules/@types/validator/es/lib/isISRC.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISRC.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isISRC;
Index: ckend/node_modules/@types/validator/es/lib/isISSN.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isISSN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsISSNOptions = validator.IsISSNOptions;
-export default validator.isISSN;
Index: ckend/node_modules/@types/validator/es/lib/isIdentityCard.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isIdentityCard.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IdentityCardLocale = validator.IdentityCardLocale;
-export default validator.isIdentityCard;
Index: ckend/node_modules/@types/validator/es/lib/isIn.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isIn.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isIn;
Index: ckend/node_modules/@types/validator/es/lib/isInt.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isInt.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsIntOptions = validator.IsIntOptions;
-export default validator.isInt;
Index: ckend/node_modules/@types/validator/es/lib/isJSON.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isJSON.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isJSON;
Index: ckend/node_modules/@types/validator/es/lib/isJWT.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isJWT.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isJWT;
Index: ckend/node_modules/@types/validator/es/lib/isLatLong.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLatLong.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isLatLong;
Index: ckend/node_modules/@types/validator/es/lib/isLength.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLength.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsLengthOptions = validator.IsLengthOptions;
-export default validator.isLength;
Index: ckend/node_modules/@types/validator/es/lib/isLicensePlate.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLicensePlate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type LicensePlateLocale = validator.LicensePlateLocale;
-export default validator.isLicensePlate;
Index: ckend/node_modules/@types/validator/es/lib/isLocale.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLocale.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isLocale;
Index: ckend/node_modules/@types/validator/es/lib/isLowercase.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLowercase.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isLowercase;
Index: ckend/node_modules/@types/validator/es/lib/isLuhnNumber.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isLuhnNumber.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isLuhnNumber;
Index: ckend/node_modules/@types/validator/es/lib/isMACAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMACAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsMACAddressOptions = validator.IsMACAddressOptions;
-export default validator.isMACAddress;
Index: ckend/node_modules/@types/validator/es/lib/isMD5.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMD5.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isMD5;
Index: ckend/node_modules/@types/validator/es/lib/isMagnetURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMagnetURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isMagnetURI;
Index: ckend/node_modules/@types/validator/es/lib/isMailtoURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMailtoURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import isMailtoURI from "../../lib/isMailtoURI";
-export default isMailtoURI;
Index: ckend/node_modules/@types/validator/es/lib/isMimeType.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMimeType.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isMimeType;
Index: ckend/node_modules/@types/validator/es/lib/isMobilePhone.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMobilePhone.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../../";
-export type MobilePhoneLocale = validator.MobilePhoneLocale;
-export type IsMobilePhoneOptions = validator.IsMobilePhoneOptions;
-export default validator.isMobilePhone;
Index: ckend/node_modules/@types/validator/es/lib/isMongoId.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMongoId.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isMongoId;
Index: ckend/node_modules/@types/validator/es/lib/isMultibyte.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isMultibyte.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isMultibyte;
Index: ckend/node_modules/@types/validator/es/lib/isNumeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isNumeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type IsNumericOptions = validator.IsNumericOptions;
-export default validator.isNumeric;
Index: ckend/node_modules/@types/validator/es/lib/isOctal.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isOctal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isOctal;
Index: ckend/node_modules/@types/validator/es/lib/isPassportNumber.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isPassportNumber.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isPassportNumber;
Index: ckend/node_modules/@types/validator/es/lib/isPort.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isPort.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isPort;
Index: ckend/node_modules/@types/validator/es/lib/isPostalCode.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isPostalCode.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type PostalCodeLocale = validator.PostalCodeLocale;
-export default validator.isPostalCode;
Index: ckend/node_modules/@types/validator/es/lib/isRFC3339.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isRFC3339.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isRFC3339;
Index: ckend/node_modules/@types/validator/es/lib/isRgbColor.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isRgbColor.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isRgbColor;
Index: ckend/node_modules/@types/validator/es/lib/isSemVer.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isSemVer.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isSemVer;
Index: ckend/node_modules/@types/validator/es/lib/isSlug.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isSlug.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isSlug;
Index: ckend/node_modules/@types/validator/es/lib/isStrongPassword.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isStrongPassword.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isStrongPassword;
Index: ckend/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isSurrogatePair.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isSurrogatePair;
Index: ckend/node_modules/@types/validator/es/lib/isTaxID.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isTaxID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../..";
-export default validator.isTaxID;
Index: ckend/node_modules/@types/validator/es/lib/isTime.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isTime.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isTime;
Index: ckend/node_modules/@types/validator/es/lib/isULID.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isULID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isULID;
Index: ckend/node_modules/@types/validator/es/lib/isURL.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isURL.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import isURL, { IsURLOptions } from "../../lib/isURL";
-export default isURL;
-export { IsURLOptions };
Index: ckend/node_modules/@types/validator/es/lib/isUUID.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isUUID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type UUIDVersion = validator.UUIDVersion;
-export default validator.isUUID;
Index: ckend/node_modules/@types/validator/es/lib/isUppercase.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isUppercase.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isUppercase;
Index: ckend/node_modules/@types/validator/es/lib/isVAT.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isVAT.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isVAT;
Index: ckend/node_modules/@types/validator/es/lib/isVariableWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isVariableWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isVariableWidth;
Index: ckend/node_modules/@types/validator/es/lib/isWhitelisted.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/isWhitelisted.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.isWhitelisted;
Index: ckend/node_modules/@types/validator/es/lib/ltrim.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/ltrim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.ltrim;
Index: ckend/node_modules/@types/validator/es/lib/matches.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/matches.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.matches;
Index: ckend/node_modules/@types/validator/es/lib/normalizeEmail.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/normalizeEmail.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../../";
-export type NormalizeEmailOptions = validator.NormalizeEmailOptions;
-export default validator.normalizeEmail;
Index: ckend/node_modules/@types/validator/es/lib/rtrim.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/rtrim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.rtrim;
Index: ckend/node_modules/@types/validator/es/lib/stripLow.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/stripLow.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.stripLow;
Index: ckend/node_modules/@types/validator/es/lib/toBoolean.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/toBoolean.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.toBoolean;
Index: ckend/node_modules/@types/validator/es/lib/toDate.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/toDate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.toDate;
Index: ckend/node_modules/@types/validator/es/lib/toFloat.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/toFloat.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.toFloat;
Index: ckend/node_modules/@types/validator/es/lib/toInt.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/toInt.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.toInt;
Index: ckend/node_modules/@types/validator/es/lib/trim.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/trim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.trim;
Index: ckend/node_modules/@types/validator/es/lib/unescape.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/unescape.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.unescape;
Index: ckend/node_modules/@types/validator/es/lib/whitelist.d.ts
===================================================================
--- backend/node_modules/@types/validator/es/lib/whitelist.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../../";
-export default validator.whitelist;
Index: ckend/node_modules/@types/validator/index.d.ts
===================================================================
--- backend/node_modules/@types/validator/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1510 +1,0 @@
-import * as _isBoolean from "./lib/isBoolean";
-import * as _isEmail from "./lib/isEmail";
-import * as _isFQDN from "./lib/isFQDN";
-import * as _isIBAN from "./lib/isIBAN";
-import * as _isISO31661Alpha2 from "./lib/isISO31661Alpha2";
-import * as _isISO4217 from "./lib/isISO4217";
-import * as _isISO6391 from "./lib/isISO6391";
-import * as _isTaxID from "./lib/isTaxID";
-import * as _isURL from "./lib/isURL";
-
-declare namespace validator {
-    export const version: string;
-
-    /******************
-     *** Validators ***
-     ******************/
-
-    export interface ContainsOptions {
-        /**
-         * @default false
-         */
-        ignoreCase?: boolean | undefined;
-        /**
-         * @default 1
-         */
-        minOccurrences?: number | undefined;
-    }
-
-    /**
-     * Check if the string contains the seed.
-     *
-     * @param seed - Seed
-     */
-    export function contains(str: string, seed: any, options?: ContainsOptions): boolean;
-
-    /**
-     * Check if the string matches the comparison.
-     *
-     * @param comparison - String to compare
-     */
-    export function equals(str: string, comparison: string): boolean;
-
-    /**
-     * Check if the string is an ABA routing number for US bank account / cheque.
-     */
-    export function isAbaRouting(str: string): boolean;
-
-    /**
-     * Check if the string is a date that's after the specified date.
-     *
-     * @param [date] - Date string (defaults to now)
-     */
-    export function isAfter(str: string, date?: string): boolean;
-
-    export type AlphaLocale =
-        | "en-US"
-        | "bg-BG"
-        | "cs-CZ"
-        | "da-DK"
-        | "de-DE"
-        | "el-GR"
-        | "es-AR"
-        | "es-ES"
-        | "fr-FR"
-        | "it-IT"
-        | "nb-NO"
-        | "nl-NL"
-        | "nn-NO"
-        | "hu-HU"
-        | "pl-PL"
-        | "pt-PT"
-        | "ru-RU"
-        | "sl-SI"
-        | "sk-SK"
-        | "sr-RS@latin"
-        | "sr-RS"
-        | "sv-SE"
-        | "tr-TR"
-        | "uk-UA"
-        | "ku-IQ"
-        | "ar"
-        | "he"
-        | "fa-IR"
-        | "en-AU"
-        | "en-GB"
-        | "en-HK"
-        | "en-IN"
-        | "en-NZ"
-        | "en-ZA"
-        | "en-ZM"
-        | "ar-AE"
-        | "ar-BH"
-        | "ar-DZ"
-        | "ar-EG"
-        | "ar-IQ"
-        | "ar-JO"
-        | "ar-KW"
-        | "ar-LB"
-        | "ar-LY"
-        | "ar-MA"
-        | "ar-QM"
-        | "ar-QA"
-        | "ar-SA"
-        | "ar-SD"
-        | "ar-SY"
-        | "ar-TN"
-        | "ar-YE"
-        | "pt-BR"
-        | "pl-Pl";
-
-    export const isAlphaLocales: AlphaLocale[];
-
-    export interface IsAlphaOptions {
-        /**
-         * @default undefined
-         */
-        ignore?: string | RegExp | undefined;
-    }
-
-    /**
-     * Check if the string contains only letters (a-zA-Z).
-     *
-     * @param [locale] - AlphaLocale
-     * @param [options] - IsAlphaOptions
-     */
-    export function isAlpha(str: string, locale?: AlphaLocale, options?: IsAlphaOptions): boolean;
-
-    export type AlphanumericLocale =
-        | "en-US"
-        | "bg-BG"
-        | "cs-CZ"
-        | "da-DK"
-        | "de-DE"
-        | "el-GR"
-        | "es-AR"
-        | "es-ES"
-        | "fr-FR"
-        | "it-IT"
-        | "hu-HU"
-        | "nb-NO"
-        | "nl-NL"
-        | "nn-NO"
-        | "pl-PL"
-        | "pt-PT"
-        | "ru-RU"
-        | "sl-SI"
-        | "sk-SK"
-        | "sr-RS@latin"
-        | "sr-RS"
-        | "sv-SE"
-        | "tr-TR"
-        | "uk-UA"
-        | "ku-IQ"
-        | "ar"
-        | "he"
-        | "fa-IR"
-        | "en-AU"
-        | "en-GB"
-        | "en-HK"
-        | "en-IN"
-        | "en-NZ"
-        | "en-ZA"
-        | "en-ZM"
-        | "ar-AE"
-        | "ar-BH"
-        | "ar-DZ"
-        | "ar-EG"
-        | "ar-IQ"
-        | "ar-JO"
-        | "ar-KW"
-        | "ar-LB"
-        | "ar-LY"
-        | "ar-MA"
-        | "ar-QM"
-        | "ar-QA"
-        | "ar-SA"
-        | "ar-SD"
-        | "ar-SY"
-        | "ar-TN"
-        | "ar-YE"
-        | "pt-BR"
-        | "pl-Pl";
-
-    export const isAlphanumericLocales: AlphanumericLocale[];
-
-    export interface IsAlphanumericOptions {
-        /**
-         * @default undefined
-         */
-        ignore?: string | RegExp | undefined;
-    }
-
-    /**
-     * Check if the string contains only letters and numbers.
-     *
-     * @param [locale] - AlphanumericLocale
-     * @param [options] - IsAlphanumericOptions
-     */
-    export function isAlphanumeric(str: string, locale?: AlphanumericLocale, options?: IsAlphanumericOptions): boolean;
-
-    /**
-     * Check if the string contains ASCII chars only.
-     */
-    export function isAscii(str: string): boolean;
-
-    /**
-     * Check if a string is base32 encoded.
-     */
-    export function isBase32(str: string): boolean;
-    /**
-     * check if a string is base58 encoded
-     */
-    export function isBase58(str: string): boolean;
-
-    export interface IsBase64Options {
-        /**
-         * @default false
-         */
-        urlSafe?: boolean | undefined;
-    }
-
-    /**
-     * Check if a string is base64 encoded.
-     *
-     * @param [options] - Options
-     */
-    export function isBase64(str: string, options?: IsBase64Options): boolean;
-
-    /**
-     * Check if the string is a date that's before the specified date.
-     *
-     * @param [date] - Date string (defaults to now)
-     */
-    export function isBefore(str: string, date?: string): boolean;
-
-    export const isIBAN: typeof _isIBAN.default;
-    export const ibanLocales: typeof _isIBAN.locales;
-
-    /**
-     * Check if a string is a BIC (Bank Identification Code) or SWIFT code.
-     */
-    export function isBIC(str: string): boolean;
-
-    export const isBoolean: typeof _isBoolean.default;
-
-    export interface IsByteLengthOptions {
-        /**
-         * @default 0
-         */
-        min?: number | undefined;
-        /**
-         * @default undefined
-         */
-        max?: number | undefined;
-    }
-
-    /**
-     * Check if the string's length (in UTF-8 bytes) falls in a range.
-     *
-     * @param [options] - Options
-     */
-    export function isByteLength(str: string, options?: IsByteLengthOptions): boolean;
-
-    export interface IsCreditCardOptions {
-        /**
-         * @default undefined
-         */
-        provider?: "amex" | "dinersclub" | "discover" | "jcb" | "mastercard" | "unionpay" | "visa" | "";
-    }
-
-    /**
-     * Check if the string is a credit card.
-     */
-    export function isCreditCard(str: string, options?: IsCreditCardOptions): boolean;
-
-    export interface IsCurrencyOptions {
-        /**
-         * @default '$'
-         */
-        symbol?: string | undefined;
-        /**
-         * @default false
-         */
-        require_symbol?: boolean | undefined;
-        /**
-         * @default false
-         */
-        allow_space_after_symbol?: boolean | undefined;
-        /**
-         * @default false
-         */
-        symbol_after_digits?: boolean | undefined;
-        /**
-         * @default true
-         */
-        allow_negatives?: boolean | undefined;
-        /**
-         * @default false
-         */
-        parens_for_negatives?: boolean | undefined;
-        /**
-         * @default false
-         */
-        negative_sign_before_digits?: boolean | undefined;
-        /**
-         * @default false
-         */
-        negative_sign_after_digits?: boolean | undefined;
-        /**
-         * @default false
-         */
-        allow_negative_sign_placeholder?: boolean | undefined;
-        /**
-         * @default ','
-         */
-        thousands_separator?: string | undefined;
-        /**
-         * @default '.'
-         */
-        decimal_separator?: string | undefined;
-        /**
-         * @default true
-         */
-        allow_decimal?: boolean | undefined;
-        /**
-         * @default false
-         */
-        require_decimal?: boolean | undefined;
-        /**
-         * The array `digits_after_decimal` is filled with the exact number of digits allowed not a range, for example a range `1` to `3` will be given as `[1, 2, 3]`.
-         *
-         * @default [2]
-         */
-        digits_after_decimal?: number[] | undefined;
-        /**
-         * @default false
-         */
-        allow_space_after_digits?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is a valid currency amount.
-     *
-     * @param [options] - Options
-     */
-    export function isCurrency(str: string, options?: IsCurrencyOptions): boolean;
-
-    /**
-     * Check if the string is an [Ethereum](https://ethereum.org/) address using basic regex. Does not validate address checksums.
-     */
-    export function isEthereumAddress(str: string): boolean;
-
-    /**
-     * Check if the string is a valid BTC address.
-     */
-    export function isBtcAddress(str: string): boolean;
-
-    /**
-     * Check if the string is a [data uri format](https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs).
-     */
-    export function isDataURI(str: string): boolean;
-
-    export interface IsDateOptions {
-        /**
-         * @default false
-         */
-        format?: string | undefined;
-        /**
-         * If strictMode is set to true,
-         * the validator will reject inputs different from format.
-         *
-         * @default false
-         */
-        strictMode?: boolean | undefined;
-        /**
-         * `delimiters` is an array of allowed date delimiters
-         *
-         * @default ['/', '-']
-         */
-        delimiters?: string[] | undefined;
-    }
-
-    /**
-     * Check if the string is a valid date.
-     */
-    export function isDate(str: string, options?: IsDateOptions): boolean;
-
-    export type DecimalLocale = FloatLocale;
-
-    export interface IsDecimalOptions {
-        /**
-         * @default false
-         */
-        force_decimal?: boolean | undefined;
-        /**
-         * `decimal_digits` is given as a range like `'1,3'`,
-         * a specific value like `'3'` or min like `'1,'`
-         *
-         * @default '1,'
-         */
-        decimal_digits?: string | undefined;
-        /**
-         * DecimalLocale
-         *
-         * @default 'en-US'
-         */
-        locale?: DecimalLocale | undefined;
-    }
-
-    /**
-     * Check if the string represents a decimal number,
-     * such as `0.1`, `.3`, `1.1`, `1.00003`, `4.0` etc.
-     *
-     * @param [options] - Options
-     */
-    export function isDecimal(str: string, options?: IsDecimalOptions): boolean;
-
-    /**
-     * Check if the string is a number that's divisible by another.
-     *
-     * @param number - Divider number
-     */
-    export function isDivisibleBy(str: string, number: number): boolean;
-
-    export type IsEmailOptions = _isEmail.IsEmailOptions;
-    export const isEmail: typeof _isEmail.default;
-
-    /**
-     *  check if the string is a [Magnet URI format][Mailto URI Format].<br/><br/>`options` is an object of validating emails inside the URI (check `isEmail`s options for details).
-     * @param str
-     * @param [options]
-     */
-    export function isMailtoURI(str: string, options?: IsEmailOptions): boolean;
-
-    export interface IsEmptyOptions {
-        /**
-         * @default false
-         */
-        ignore_whitespace?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string has a length of zero.
-     *
-     * @param [options] - Options
-     */
-    export function isEmpty(str: string, options?: IsEmptyOptions): boolean;
-
-    export type FloatLocale =
-        | "en-US"
-        | "ar"
-        | "en-AU"
-        | "en-GB"
-        | "en-HK"
-        | "en-IN"
-        | "en-NZ"
-        | "en-ZA"
-        | "en-ZM"
-        | "ar-AE"
-        | "ar-BH"
-        | "ar-DZ"
-        | "ar-EG"
-        | "ar-IQ"
-        | "ar-JO"
-        | "ar-KW"
-        | "ar-LB"
-        | "ar-LY"
-        | "ar-MA"
-        | "ar-QM"
-        | "ar-QA"
-        | "ar-SA"
-        | "ar-SD"
-        | "ar-SY"
-        | "ar-TN"
-        | "ar-YE"
-        | "bg-BG"
-        | "cs-CZ"
-        | "da-DK"
-        | "de-DE"
-        | "el-GR"
-        | "es-ES"
-        | "fr-FR"
-        | "it-IT"
-        | "ku-IQ"
-        | "hu-HU"
-        | "nb-NO"
-        | "nn-NO"
-        | "nl-NL"
-        | "pl-PL"
-        | "pt-PT"
-        | "ru-RU"
-        | "sl-SI"
-        | "sr-RS@latin"
-        | "sr-RS"
-        | "sv-SE"
-        | "tr-TR"
-        | "uk-UA"
-        | "pt-BR"
-        | "pl-Pl";
-
-    export const isFloatLocales: FloatLocale[];
-
-    export interface IsFloatOptions {
-        /**
-         * less or equal
-         */
-        min?: number | undefined;
-        /**
-         * greater or equal
-         */
-        max?: number | undefined;
-        /**
-         * greater than
-         */
-        gt?: number | undefined;
-        /**
-         * less than
-         */
-        lt?: number | undefined;
-        /**
-         * FloatLocale
-         */
-        locale?: FloatLocale | undefined;
-    }
-
-    /**
-     * Check if the string is a float.
-     *
-     * @param [options] - Options
-     */
-    export function isFloat(str: string, options?: IsFloatOptions): boolean;
-
-    export type IsFQDNOptions = _isFQDN.IsFQDNOptions;
-    export const isFQDN: typeof _isFQDN.default;
-
-    /**
-     * Check if the string contains any full-width chars.
-     */
-    export function isFullWidth(str: string): boolean;
-
-    /**
-     * Check if the string contains any half-width chars.
-     */
-    export function isHalfWidth(str: string): boolean;
-
-    export type HashAlgorithm =
-        | "md4"
-        | "md5"
-        | "sha1"
-        | "sha256"
-        | "sha384"
-        | "sha512"
-        | "ripemd128"
-        | "ripemd160"
-        | "tiger128"
-        | "tiger160"
-        | "tiger192"
-        | "crc32"
-        | "crc32b";
-
-    /**
-     * Check if the string is a hash of export type algorithm.
-     *
-     * @param algorithm - HashAlgorithm
-     */
-    export function isHash(str: string, algorithm: HashAlgorithm): boolean;
-
-    /**
-     * Check if the string is a hexadecimal number.
-     */
-    export function isHexadecimal(str: string): boolean;
-
-    /**
-     * Check if the string is a hexadecimal color.
-     */
-    export function isHexColor(str: string): boolean;
-
-    /**
-     * Check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on CSS Colors Level 4 specification.
-     * Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: hsl(200grad+.1%62%/1)).
-     */
-    export function isHSL(str: string): boolean;
-
-    export interface IsRgbColorOptions {
-        /**
-         * If you don't want to allow to set rgb or rgba values with percents, like rgb(5%,5%,5%), or rgba(90%,90%,90%,.3), then set it to false. (defaults to true)
-         */
-        includePercentValues?: boolean | undefined;
-        /**
-         * `allowSpaces` defaults to `true`, which prohibits whitespace. If set to false, whitespace between color values is allowed, such as `rgb(255, 255, 255)` or even `rgba(255,       128,        0,      0.7)`.
-         */
-        allowSpaces?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is a rgb or rgba color.
-     *
-     * @param [options] - Options
-     */
-    export function isRgbColor(str: string, options?: IsRgbColorOptions): boolean;
-
-    export type IdentityCardLocale =
-        | "ar-LY"
-        | "ar-TN"
-        | "ES"
-        | "FI"
-        | "he-IL"
-        | "IN"
-        | "IR"
-        | "IT"
-        | "LK"
-        | "NO"
-        | "PK"
-        | "PL"
-        | "TH"
-        | "zh-CN"
-        | "zh-HK"
-        | "zh-TW";
-
-    /**
-     * Check if the string is a valid identity card code.
-     *
-     * @param [locale="any"] - IdentityCardLocale
-     */
-    export function isIdentityCard(str: string, locale?: "any" | IdentityCardLocale): boolean;
-
-    export interface IsIMEIOptions {
-        /**
-         * This value is `false` by default. Set to `true` to allow IMEI with hyphens.
-         */
-        allow_hyphens?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is a valid IMEI.
-     * Non-hyphenated (`###############`) only is supported by default.
-     * Use the `options` param to enable hyphenated (`##-######-######-#`) support.
-     *
-     * @param [options] - Options
-     */
-    export function isIMEI(str: string, options?: IsIMEIOptions): boolean;
-
-    /**
-     * Check if the string is in a array of allowed values.
-     *
-     * @param values - Allowed values.
-     */
-    export function isIn(str: string, values: any[]): boolean;
-
-    export interface IsIntOptions {
-        /**
-         * to check the integer min boundary
-         */
-        min?: number | undefined;
-        /**
-         * to check the integer max boundary
-         */
-        max?: number | undefined;
-        /**
-         * if `false`, will disallow integer values with leading zeroes
-         * @default true
-         */
-        allow_leading_zeroes?: boolean | undefined;
-        /**
-         * enforce integers being less than the value provided
-         */
-        lt?: number | undefined;
-        /**
-         * enforce integers being greater than the value provided
-         */
-        gt?: number | undefined;
-    }
-
-    /**
-     * Check if the string is an integer.
-     *
-     * @param [options] - Options
-     */
-    export function isInt(str: string, options?: IsIntOptions): boolean;
-
-    export type IPVersion = "4" | "6" | 4 | 6;
-
-    /**
-     * Check if the string is an IP (version 4 or 6).
-     *
-     * @param [version] - IP Version
-     */
-    export function isIP(str: string, version?: IPVersion): boolean;
-
-    /**
-     * Check if the string is an IP Range (version 4 or 6).
-     */
-    export function isIPRange(str: string, version?: IPVersion): boolean;
-
-    export type ISBNVersion = "10" | "13" | 10 | 13;
-
-    /**
-     * Check if the string is an ISBN (version 10 or 13).
-     *
-     * @param [version] - ISBN Version
-     */
-    export function isISBN(str: string, version?: ISBNVersion): boolean;
-
-    /**
-     * Check if the string is an EAN (European Article Number).
-     */
-    export function isEAN(str: string): boolean;
-
-    /**
-     * Check if the string is an [ISIN](https://en.wikipedia.org/wiki/International_Securities_Identification_Number) (stock/security identifier).
-     */
-    export function isISIN(str: string): boolean;
-
-    /**
-     * Check if the string is a valid [ISO 15924](https://en.wikipedia.org/wiki/ISO_15924) officially assigned script code.
-     */
-    export function isISO15924(str: string): boolean;
-
-    export const isISO31661Alpha2: typeof _isISO31661Alpha2.default;
-
-    /**
-     * Check if the string is a valid [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) officially assigned country code.
-     */
-    export function isISO31661Alpha3(str: string): boolean;
-
-    /**
-     * Check if the string is a valid [ISO 3166-1 numeric](https://en.wikipedia.org/wiki/ISO_3166-1_numeric) officially assigned country code.
-     */
-    export function isISO31661Numeric(str: string): boolean;
-
-    /**
-     * check if the string is a valid [ISO 6346](https://en.wikipedia.org/wiki/ISO_6346) shipping container identification.
-     * @param str
-     */
-    export function isISO6346(str: string): boolean;
-
-    /**
-     * alias for `isISO6346`, check if the string is a valid [ISO 6346](https://en.wikipedia.org/wiki/ISO_6346) shipping container identification.
-     */
-    export const isFreightContainerID: typeof isISO6346;
-
-    /**
-     * Check if the string is a valid [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) officially assigned language code.
-     */
-    export const isISO6391: typeof _isISO6391.default;
-
-    export interface IsISO8601Options {
-        /**
-         * If `strict` is `true`, performs additional checks for valid dates,
-         * e.g. invalidates dates like `2009-02-29`.
-         *
-         * @default false
-         */
-        strict?: boolean | undefined;
-        /**
-         * If `strictSeparator` is true, date strings with date and time separated
-         * by anything other than a T will be invalid
-         */
-        strictSeparator?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is a valid [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date.
-     *
-     * @param [options] - Options
-     */
-    export function isISO8601(str: string, options?: IsISO8601Options): boolean;
-
-    export interface IsISSNOptions {
-        /**
-         * If `case_sensitive` is `true`, ISSNs with a lowercase `x` as the check digit are rejected.
-         *
-         * @default false
-         */
-        case_sensitive?: boolean | undefined;
-        /**
-         * @default false
-         */
-        require_hyphen?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is an [ISSN](https://en.wikipedia.org/wiki/International_Standard_Serial_Number).
-     *
-     * @param [options] - Options
-     */
-    export function isISSN(str: string, options?: IsISSNOptions): boolean;
-
-    export const isISO4217: typeof _isISO4217.default;
-
-    /**
-     * Check if the string is a [ISRC](https://en.wikipedia.org/wiki/International_Standard_Recording_Code).
-     */
-    export function isISRC(str: string): boolean;
-
-    /**
-     * Check if the string is a valid [RFC 3339](https://tools.ietf.org/html/rfc3339) date.
-     */
-    export function isRFC3339(str: string): boolean;
-
-    /**
-     * Check if the string is valid JSON (note: uses `JSON.parse`).
-     */
-    export function isJSON(str: string): boolean;
-
-    /**
-     * Check if the string is valid JWT token.
-     */
-    export function isJWT(str: string): boolean;
-
-    /**
-     * Check if the string is a valid latitude-longitude coordinate in the format:
-     *
-     * `lat,long` or `lat, long`.
-     */
-    export function isLatLong(str: string): boolean;
-
-    export interface IsLengthOptions {
-        /**
-         * @default 0
-         */
-        min?: number | undefined;
-        /**
-         * @default undefined
-         */
-        max?: number | undefined;
-        /**
-         * @default undefined
-         */
-        discreteLengths?: number | Array<number> | undefined;
-    }
-
-    /**
-     * Check if the string's length falls in a range.
-     *
-     * Note: this export function takes into account surrogate pairs.
-     *
-     * @param [options] - Options
-     */
-    export function isLength(str: string, options?: IsLengthOptions): boolean;
-
-    export type LicensePlateLocale =
-        | "cs-CZ"
-        | "de-DE"
-        | "de-LI"
-        | "en-IN"
-        | "en-SG"
-        | "es-AR"
-        | "hu-HU"
-        | "pt-BR"
-        | "pt-PT"
-        | "sq-AL"
-        | "sv-SE"
-        | "en-PK"
-        | "any";
-
-    /**
-     * Check if the string matches the format of a country's license plate.
-     */
-    export function isLicensePlate(str: string, locale: LicensePlateLocale): boolean;
-    export function isLicensePlate(str: string, locale: string): unknown;
-
-    /**
-     * Check if the string is a locale.
-     */
-    export function isLocale(str: string): boolean;
-
-    /**
-     * Check if the string is lowercase.
-     */
-    export function isLowercase(str: string): boolean;
-
-    export interface IsMACAddressOptions {
-        /**
-         * If `no_colons` is `true`, the validator will allow MAC addresses without the colons.
-         * Also, it allows the use of hyphens or spaces.
-         *
-         * e.g. `01 02 03 04 05 ab` or `01-02-03-04-05-ab`.
-         *
-         * @default false
-         * @deprecated use no_separators instead
-         */
-        no_colons?: boolean | undefined;
-        /**
-         * If `no_separators` is `true`, the validator will allow MAC addresses without the colons.
-         * Also, it allows the use of hyphens or spaces.
-         *
-         * e.g. `01 02 03 04 05 ab` or `01-02-03-04-05-ab`.
-         *
-         * @default false
-         */
-        no_separators?: boolean | undefined;
-        /**
-         * Setting `eui` allows for validation against EUI-48 or EUI-64 instead of both.
-         */
-        eui?: "48" | "64" | undefined;
-    }
-
-    /**
-     * Check if the string passes the [Luhn algorithm check](https://en.m.wikipedia.org/wiki/Luhn_algorithm).
-     */
-    export function isLuhnNumber(str: string): boolean;
-
-    /**
-     * Check if the string is a MAC address.
-     *
-     * @param [options] - Options
-     */
-    export function isMACAddress(str: string, options?: IsMACAddressOptions): boolean;
-
-    /**
-     * Check if the string is a [magnet uri format](https://en.wikipedia.org/wiki/Magnet_URI_scheme).
-     */
-    export function isMagnetURI(str: string): boolean;
-
-    /**
-     * Check if the string is a MD5 hash.
-     */
-    export function isMD5(str: string): boolean;
-
-    /**
-     * Check if the string matches to a valid [MIME export type](https://en.wikipedia.org/wiki/Media_export type) format.
-     */
-    export function isMimeType(str: string): boolean;
-
-    export type MobilePhoneLocale = PhoneLocale | PhoneLocaleAlias;
-    export type PhoneLocale =
-        | "am-AM"
-        | "ar-AE"
-        | "ar-BH"
-        | "ar-DZ"
-        | "ar-LB"
-        | "ar-EG"
-        | "ar-IQ"
-        | "ar-JO"
-        | "ar-KW"
-        | "ar-LY"
-        | "ar-MA"
-        | "ar-OM"
-        | "ar-SA"
-        | "ar-SY"
-        | "ar-TN"
-        | "az-AZ"
-        | "bs-BA"
-        | "be-BY"
-        | "bg-BG"
-        | "bn-BD"
-        | "ca-AD"
-        | "cs-CZ"
-        | "da-DK"
-        | "de-DE"
-        | "de-AT"
-        | "de-CH"
-        | "de-LU"
-        | "el-GR"
-        | "en-AU"
-        | "en-GB"
-        | "en-GG"
-        | "en-GH"
-        | "en-HK"
-        | "en-MO"
-        | "en-IE"
-        | "en-IN"
-        | "en-KE"
-        | "en-MT"
-        | "en-MU"
-        | "en-NG"
-        | "en-NZ"
-        | "en-PK"
-        | "en-PH"
-        | "en-RW"
-        | "en-SG"
-        | "en-SL"
-        | "en-TZ"
-        | "en-UG"
-        | "en-US"
-        | "en-ZA"
-        | "en-ZM"
-        | "en-ZW"
-        | "es-AR"
-        | "es-BO"
-        | "es-CO"
-        | "es-CL"
-        | "es-CR"
-        | "es-DO"
-        | "es-HN"
-        | "es-EC"
-        | "es-ES"
-        | "es-GT"
-        | "es-PE"
-        | "es-MX"
-        | "es-PA"
-        | "es-PY"
-        | "es-UY"
-        | "es-VE"
-        | "et-EE"
-        | "fa-IR"
-        | "fi-FI"
-        | "fj-FJ"
-        | "fo-FO"
-        | "fr-FR"
-        | "fr-GF"
-        | "fr-GP"
-        | "fr-MQ"
-        | "fr-RE"
-        | "he-IL"
-        | "hu-HU"
-        | "id-ID"
-        | "it-IT"
-        | "it-SM"
-        | "ja-JP"
-        | "ka-GE"
-        | "kk-KZ"
-        | "kl-GL"
-        | "ko-KR"
-        | "lt-LT"
-        | "lv-LV"
-        | "mk-MK"
-        | "ms-MY"
-        | "mz-MZ"
-        | "nb-NO"
-        | "ne-NP"
-        | "nl-BE"
-        | "nl-NL"
-        | "nn-NO"
-        | "pl-PL"
-        | "pt-BR"
-        | "pt-PT"
-        | "pt-AO"
-        | "ro-RO"
-        | "ru-RU"
-        | "si-LK"
-        | "sl-SI"
-        | "sk-SK"
-        | "sq-AL"
-        | "sr-RS"
-        | "sv-SE"
-        | "th-TH"
-        | "tr-TR"
-        | "uk-UA"
-        | "uz-UZ"
-        | "vi-VN"
-        | "zh-CN"
-        | "zh-TW";
-    export type PhoneLocaleAlias = "en-CA" | "fr-CA" | "fr-BE" | "zh-HK" | "zh-MO" | "ga-IE" | "fr-CH" | "it-CH";
-
-    export const isMobilePhoneLocales: MobilePhoneLocale[];
-
-    export interface IsMobilePhoneOptions {
-        /**
-         * If this is set to `true`, the mobile phone number must be supplied with the country code and therefore must start with `+`.
-         *
-         * @default false
-         */
-        strictMode?: boolean | undefined;
-    }
-
-    /**
-     * Check if the string is a mobile phone number.
-     *
-     * @param [locale] - MobilePhoneLocale(s)
-     * @param [options] - Options
-     */
-    export function isMobilePhone(
-        str: string,
-        locale?: "any" | MobilePhoneLocale | MobilePhoneLocale[],
-        options?: IsMobilePhoneOptions,
-    ): boolean;
-
-    /**
-     * Check if the string is a valid hex-encoded representation of a [MongoDB ObjectId](http://docs.mongodb.org/manual/reference/object-id/).
-     */
-    export function isMongoId(str: string): boolean;
-
-    /**
-     * Check if the string contains one or more multibyte chars.
-     */
-    export function isMultibyte(str: string): boolean;
-
-    export interface IsNumericOptions {
-        /**
-         * If `no_symbols` is true, the validator will reject numeric strings that feature a symbol (e.g. `+`, `-`, or `.`).
-         *
-         * @default false
-         */
-        no_symbols?: boolean | undefined;
-        locale?: AlphaLocale | undefined;
-    }
-
-    /**
-     * Check if the string contains only numbers.
-     *
-     * @param [options] - Options
-     */
-    export function isNumeric(str: string, options?: IsNumericOptions): boolean;
-
-    /**
-     * Check if the string is a valid octal number.
-     */
-    export function isOctal(str: string): boolean;
-
-    /**
-     * Check if the string is a valid passport number relative to a specific country code.
-     *
-     * @param [countryCode] - Country code
-     */
-    export function isPassportNumber(str: string, countryCode?: string): boolean;
-
-    /**
-     * Check if the string is a valid port number.
-     */
-    export function isPort(str: string): boolean;
-
-    export type PostalCodeLocale =
-        | "AD"
-        | "AT"
-        | "AU"
-        | "BE"
-        | "BG"
-        | "BR"
-        | "CA"
-        | "CH"
-        | "CN"
-        | "CO"
-        | "CZ"
-        | "DE"
-        | "DK"
-        | "DZ"
-        | "EE"
-        | "ES"
-        | "FI"
-        | "FR"
-        | "GB"
-        | "GR"
-        | "HR"
-        | "HU"
-        | "ID"
-        | "IE"
-        | "IL"
-        | "IN"
-        | "IR"
-        | "IS"
-        | "IT"
-        | "JP"
-        | "KE"
-        | "KR"
-        | "LI"
-        | "LT"
-        | "LU"
-        | "LV"
-        | "MX"
-        | "MT"
-        | "NL"
-        | "NO"
-        | "NZ"
-        | "PL"
-        | "PR"
-        | "PT"
-        | "RO"
-        | "RU"
-        | "SA"
-        | "SE"
-        | "SI"
-        | "SK"
-        | "TN"
-        | "TW"
-        | "UA"
-        | "US"
-        | "ZA"
-        | "ZM";
-
-    export const isPostalCodeLocales: PostalCodeLocale[];
-
-    /**
-     * Check if the string is a postal code
-     *
-     * @param locale - PostalCodeLocale
-     */
-    export function isPostalCode(str: string, locale: "any" | PostalCodeLocale): boolean;
-
-    /**
-     * Check if the string is a Semantic Versioning Specification (SemVer).
-     */
-    export function isSemVer(str: string): boolean;
-
-    /**
-     * Check if string is considered a strong password. Allows options to be added
-     */
-
-    export interface StrongPasswordOptions {
-        minLength?: number | undefined;
-        minLowercase?: number | undefined;
-        minUppercase?: number | undefined;
-        minNumbers?: number | undefined;
-        minSymbols?: number | undefined;
-        returnScore?: boolean | undefined;
-        pointsPerUnique?: number | undefined;
-        pointsPerRepeat?: number | undefined;
-        pointsForContainingLower?: number | undefined;
-        pointsForContainingUpper?: number | undefined;
-        pointsForContainingNumber?: number | undefined;
-        pointsForContainingSymbol?: number | undefined;
-    }
-
-    export function isStrongPassword(
-        str: string,
-        options?: StrongPasswordOptions & { returnScore?: false | undefined },
-    ): boolean;
-    export function isStrongPassword(str: string, options: StrongPasswordOptions & { returnScore: true }): number;
-
-    /**
-     * Check if the string contains any surrogate pairs chars.
-     */
-    export function isSurrogatePair(str: string): boolean;
-
-    export interface IsTimeOptions {
-        /**
-         * 'hour24' will validate hours in 24 format and 'hour12' will validate hours in 12 format.
-         * @default 'hour24'
-         */
-        hourFormat?: "hour12" | "hour24";
-        /**
-         * 'default' will validate HH:MM format, 'withSeconds' will validate the HH:MM:SS format
-         *
-         * @default 'default'
-         */
-        mode?: "default" | "withSeconds";
-    }
-
-    /**
-     * Check if the string is a valid time.
-     */
-    export function isTime(str: string, options?: IsTimeOptions): boolean;
-
-    export const isURL: typeof _isURL.default;
-    export type IsURLOptions = _isURL.IsURLOptions;
-
-    export const isTaxID: typeof _isTaxID.default;
-
-    /**
-     * Check if the string is uppercase.
-     */
-    export function isUppercase(str: string): boolean;
-
-    /**
-     * Check if the string is a [ULID](https://github.com/ulid/spec).
-     */
-    export function isULID(str: string): boolean;
-
-    export type UUIDVersion =
-        | "1"
-        | "2"
-        | "3"
-        | "4"
-        | "5"
-        | "6"
-        | "7"
-        | "8"
-        | "nil"
-        | "max"
-        | "all"
-        | 1
-        | 2
-        | 3
-        | 4
-        | 5
-        | 6
-        | 7
-        | 8;
-    /**
-     * Check if the string is a UUID (version 1-8, nil, max, all).
-     *
-     * @param [version="all"] - UUID version
-     */
-    export function isUUID(str: string, version?: UUIDVersion): boolean;
-
-    /**
-     * Check if the string contains a mixture of full and half-width chars.
-     */
-    export function isVariableWidth(str: string): boolean;
-
-    /**
-     * Checks that the string is a [valid VAT number
-     */
-    export function isVAT(str: string, countryCode: string): boolean;
-
-    /**
-     * Checks characters if they appear in the whitelist.
-     *
-     * @param chars - whitelist
-     */
-    export function isWhitelisted(str: string, chars: string | string[]): boolean;
-
-    /**
-     * Check if string matches the pattern.
-     *
-     * @param pattern - `/foo/i`
-     */
-    export function matches(str: string, pattern: RegExp): boolean;
-    /**
-     * Check if string matches the pattern.
-     *
-     * @param pattern - `'foo'`
-     * @param [modifiers] - `'i'`
-     */
-    export function matches(str: string, pattern: string, modifiers?: string): boolean;
-
-    /**
-     * Check if the string is of export type slug.
-     */
-    export function isSlug(str: string): boolean;
-
-    /******************
-     *** Sanitizers ***
-     ******************/
-
-    /**
-     * Remove characters that appear in the blacklist.
-     *
-     * @param chars - The characters are used in a `RegExp` and so you will need to escape some chars, e.g. `blacklist(input, '\\[\\]')`.
-     */
-    export function blacklist(input: string, chars: string): string;
-
-    /**
-     * Replace `<`, `>`, `&`, `'`, `"` and `/` with HTML entities.
-     */
-    export function escape(input: string): string;
-
-    /**
-     * Replaces HTML encoded entities with `<`, `>`, `&`, `'`, `"` and `/`.
-     */
-    export function unescape(input: string): string;
-
-    /**
-     * Trim characters from the left-side of the input.
-     *
-     * @param [chars] - characters (defaults to whitespace)
-     */
-    export function ltrim(input: string, chars?: string): string;
-
-    export interface NormalizeEmailOptions {
-        /**
-         * Transforms the local part (before the @ symbol) of all email addresses to lowercase.
-         * Please note that this may violate RFC 5321, which gives providers the possibility
-         * to treat the local part of email addresses in a case sensitive way
-         * (although in practice most - yet not all - providers don't).
-         * The domain part of the email address is always lowercased, as it's case insensitive per RFC 1035.
-         *
-         * @default true
-         */
-        all_lowercase?: boolean | undefined;
-        /**
-         * GMail addresses are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`.
-         * Please note that when `all_lowercase` is `true`, GMail addresses are lowercased regardless of the value of this setting.
-         *
-         * @default true
-         */
-        gmail_lowercase?: boolean | undefined;
-        /**
-         * Removes dots from the local part of the email address, as GMail ignores them
-         * (e.g. `"john.doe"` and `"johndoe"` are considered equal).
-         *
-         * @default true
-         */
-        gmail_remove_dots?: boolean | undefined;
-        /**
-         * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign
-         * (e.g. `"foo+bar@gmail.com"` becomes `"foo@gmail.com"`).
-         *
-         * @default true
-         */
-        gmail_remove_subaddress?: boolean | undefined;
-        /**
-         * Converts addresses with domain `@googlemail.com` to `@gmail.com`, as they're equivalent.
-         *
-         * @default true
-         */
-        gmail_convert_googlemaildotcom?: boolean | undefined;
-        /**
-         * Outlook.com addresses (including Windows Live and Hotmail) are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`.
-         * Please note that when `all_lowercase` is `true`, Outlook.com addresses are lowercased regardless of the value of this setting.
-         *
-         * @default true
-         */
-        outlookdotcom_lowercase?: boolean | undefined;
-        /**
-         * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign
-         * (e.g. `"foo+bar@outlook.com"` becomes `"foo@outlook.com"`).
-         *
-         * @default true
-         */
-        outlookdotcom_remove_subaddress?: boolean | undefined;
-        /**
-         * Yahoo Mail addresses are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`.
-         * Please note that when `all_lowercase` is `true`, Yahoo Mail addresses are lowercased regardless of the value of this setting.
-         *
-         * @default true
-         */
-        yahoo_lowercase?: boolean | undefined;
-        /**
-         * Normalizes addresses by removing "sub-addresses", which is the part following a `"-"` sign
-         * (e.g. `"foo-bar@yahoo.com"` becomes `"foo@yahoo.com"`).
-         *
-         * @default true
-         */
-        yahoo_remove_subaddress?: boolean | undefined;
-        /**
-         * Yandex Mail addresses are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`.
-         * Please note that when `all_lowercase` is `true`, Yandex Mail addresses are lowercased regardless of the value of this setting.
-         *
-         * @default true
-         */
-        yandex_lowercase?: boolean | undefined;
-        /**
-         * All Yandex domains are equal, this explicitly sets the domain to 'yandex.ru'
-         *
-         * @default true
-         */
-        yandex_convert_yandexru?: boolean | undefined;
-        /**
-         * iCloud addresses (including MobileMe) are known to be case-insensitive, so this switch allows lowercasing them even when `all_lowercase` is set to `false`.
-         * Please note that when `all_lowercase` is `true`, iCloud addresses are lowercased regardless of the value of this setting.
-         *
-         * @default true
-         */
-        icloud_lowercase?: boolean | undefined;
-        /**
-         * Normalizes addresses by removing "sub-addresses", which is the part following a `"+"` sign
-         * (e.g. `"foo+bar@icloud.com"` becomes `"foo@icloud.com"`).
-         *
-         * @default true
-         */
-        icloud_remove_subaddress?: boolean | undefined;
-    }
-
-    /**
-     * Canonicalizes an email address. (This doesn't validate that the input is an email, if you want to validate the email use `isEmail` beforehand)
-     *
-     * @param [options] - Options
-     */
-    export function normalizeEmail(email: string, options?: NormalizeEmailOptions): string | false;
-
-    /**
-     * Trim characters from the right-side of the input.
-     *
-     * @param [chars] - characters (defaults to whitespace)
-     */
-    export function rtrim(input: string, chars?: string): string;
-
-    /**
-     * Remove characters with a numerical value < `32` and `127`, mostly control characters.
-     * Unicode-safe in JavaScript.
-     *
-     * @param [keep_new_lines=false] - if `true`, newline characters are preserved (`\n` and `\r`, hex `0xA` and `0xD`).
-     */
-    export function stripLow(input: string, keep_new_lines?: boolean): string;
-
-    /**
-     * Convert the input string to a boolean.
-     * Everything except for `'0'`, `'false'` and `''` returns `true`.
-     *
-     * @param [strict=false] - in `strict` mode, only `'1'` and `'true'` return `true`.
-     */
-    export function toBoolean(input: string, strict?: boolean): boolean;
-
-    /**
-     * Convert the input string to a `Date`, or `null` if the input is not a date.
-     */
-    export function toDate(input: string): Date | null;
-
-    /**
-     * Convert the input string to a float, or `NaN` if the input is not a float.
-     */
-    export function toFloat(input: string): number;
-
-    /**
-     * Convert the input string to an integer, or `NaN` if the input is not an integer.
-     *
-     * @param [radix=10] - radix or base (defaults to 10)
-     */
-    export function toInt(input: string, radix?: number): number;
-
-    /**
-     * Trim characters from both sides of the input.
-     *
-     * @param [chars] - characters (defaults to whitespace)
-     */
-    export function trim(input: string, chars?: string): string;
-
-    /**
-     * Remove characters that do not appear in the whitelist.
-     *
-     * @param chars - The characters are used in a `RegExp` and so you will need to escape some chars, e.g. `whitelist(input, '\\[\\]')`.
-     */
-    export function whitelist(input: string, chars: string): string;
-
-    /**
-     * Converts to string.
-     */
-    export function toString(input: any): string;
-
-    export const _default: typeof validator;
-
-    export { _default as default };
-}
-
-// eslint-disable-next-line @definitelytyped/export-just-namespace
-export = validator;
-
-export as namespace validator;
Index: ckend/node_modules/@types/validator/lib/blacklist.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/blacklist.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.blacklist;
Index: ckend/node_modules/@types/validator/lib/contains.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/contains.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.contains;
Index: ckend/node_modules/@types/validator/lib/equals.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/equals.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.equals;
Index: ckend/node_modules/@types/validator/lib/escape.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/escape.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.escape;
Index: ckend/node_modules/@types/validator/lib/isAbaRouting.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isAbaRouting.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isAbaRouting;
Index: ckend/node_modules/@types/validator/lib/isAfter.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isAfter.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isAfter;
Index: ckend/node_modules/@types/validator/lib/isAlpha.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isAlpha.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type AlphaLocale = validator.AlphaLocale;
-export default validator.isAlpha;
Index: ckend/node_modules/@types/validator/lib/isAlphanumeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isAlphanumeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type AlphanumericLocale = validator.AlphanumericLocale;
-export default validator.isAlphanumeric;
Index: ckend/node_modules/@types/validator/lib/isAscii.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isAscii.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isAscii;
Index: ckend/node_modules/@types/validator/lib/isBIC.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBIC.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBIC;
Index: ckend/node_modules/@types/validator/lib/isBase32.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBase32.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBase32;
Index: ckend/node_modules/@types/validator/lib/isBase58.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBase58.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBase58;
Index: ckend/node_modules/@types/validator/lib/isBase64.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBase64.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBase64;
Index: ckend/node_modules/@types/validator/lib/isBefore.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBefore.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBefore;
Index: ckend/node_modules/@types/validator/lib/isBoolean.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBoolean.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * check if a string is a boolean.
- */
-export default function isBoolean(str: string, options?: Options): boolean;
-
-export interface Options {
-    /**
-     * If loose is is set to false, the validator will strictly match ['true', 'false', '0', '1'].
-     * If loose is set to true, the validator will also match 'yes', 'no', and will match a valid boolean string of any case. (eg: ['true', 'True', 'TRUE']).
-     * @default false
-     */
-    loose?: boolean | undefined;
-}
Index: ckend/node_modules/@types/validator/lib/isBtcAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isBtcAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isBtcAddress;
Index: ckend/node_modules/@types/validator/lib/isByteLength.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isByteLength.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsByteLengthOptions = validator.IsByteLengthOptions;
-export default validator.isByteLength;
Index: ckend/node_modules/@types/validator/lib/isCreditCard.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isCreditCard.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isCreditCard;
Index: ckend/node_modules/@types/validator/lib/isCurrency.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isCurrency.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsCurrencyOptions = validator.IsCurrencyOptions;
-export default validator.isCurrency;
Index: ckend/node_modules/@types/validator/lib/isDataURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isDataURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isDataURI;
Index: ckend/node_modules/@types/validator/lib/isDate.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isDate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isDate;
Index: ckend/node_modules/@types/validator/lib/isDecimal.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isDecimal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../";
-export type IsDecimalOptions = validator.IsDecimalOptions;
-export type DecimalLocale = validator.DecimalLocale;
-export default validator.isDecimal;
Index: ckend/node_modules/@types/validator/lib/isDivisibleBy.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isDivisibleBy.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isDivisibleBy;
Index: ckend/node_modules/@types/validator/lib/isEAN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isEAN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isEAN;
Index: ckend/node_modules/@types/validator/lib/isEmail.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isEmail.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-export interface IsEmailOptions {
-    /**
-     * If `allow_display_name` is set to `true`, the validator will also match `Display Name <email-address>`.
-     *
-     * @default false
-     */
-    allow_display_name?: boolean | undefined;
-    /**
-     * If `require_display_name` is set to `true`, the validator will reject strings without the format `Display Name <email-address>`.
-     *
-     * @default false
-     */
-    require_display_name?: boolean | undefined;
-    /**
-     * If `allow_utf8_local_part` is set to `false`, the validator will not allow any non-English UTF8 character in email address' local part.
-     *
-     * @default true
-     */
-    allow_utf8_local_part?: boolean | undefined;
-    /**
-     * If `require_tld` is set to `false`, e-mail addresses without having TLD in their domain will also be matched.
-     *
-     * @default true
-     */
-    require_tld?: boolean | undefined;
-    /**
-     * If `ignore_max_length` is set to `true`, the validator will not check for the standard max length of an email.
-     *
-     * @default false
-     */
-    ignore_max_length?: boolean | undefined;
-    /**
-     * If `allow_ip_domain` is set to `true`, the validator will allow IP addresses in the host part.
-     *
-     * @default false
-     */
-    allow_ip_domain?: boolean | undefined;
-    /**
-     * If `domain_specific_validation` is `true`, some additional validation will be enabled,
-     * e.g. disallowing certain syntactically valid email addresses that are rejected by GMail.
-     *
-     * @default false
-     */
-    domain_specific_validation?: boolean | undefined;
-    /**
-     * If `allow_underscores` is set to `true`, the validator will allow underscores in an email address.
-     *
-     * @default false
-     */
-    allow_underscores?: boolean | undefined;
-    /**
-     *  If host_blacklist is set to an array of strings
-     *  and the part of the email after the @ symbol matches one of the strings defined in it,
-     *  the validation fails.
-     */
-    host_blacklist?: string[] | undefined;
-    /**
-     * If host_whitelist is set to an array of strings
-     * and the part of the email after the @ symbol matches none of the strings defined in it,
-     * the validation fails.
-     */
-    host_whitelist?: string[] | undefined;
-    /**
-     *  If blacklisted_chars receives a string, then the validator will reject emails that include
-     *  any of the characters in the string, in the name part.
-     */
-    blacklisted_chars?: string | undefined;
-}
-
-/**
- * Check if the string is an email.
- *
- * @param [options] - Options
- */
-export default function isEmail(str: string, options?: IsEmailOptions): boolean;
Index: ckend/node_modules/@types/validator/lib/isEmpty.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isEmpty.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsEmptyOptions = validator.IsEmptyOptions;
-export default validator.isEmpty;
Index: ckend/node_modules/@types/validator/lib/isEthereumAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isEthereumAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isEthereumAddress;
Index: ckend/node_modules/@types/validator/lib/isFQDN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isFQDN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-export interface IsFQDNOptions {
-    /**
-     * @default true
-     */
-    require_tld?: boolean | undefined;
-    /**
-     * @default false
-     */
-    allow_underscores?: boolean | undefined;
-    /**
-     * @default false
-     */
-    allow_trailing_dot?: boolean | undefined;
-    /**
-     * @default false
-     */
-    allow_numeric_tld?: boolean | undefined;
-    /**
-     * If `allow_wildcard` is set to true, the validator will allow domain starting with `*.` (e.g. `*.example.com` or `*.shop.example.com`).
-     * @default false
-     */
-    allow_wildcard?: boolean | undefined;
-}
-
-/**
- * Check if the string is a fully qualified domain name (e.g. `domain.com`).
- *
- * @param [options] - Options
- */
-export default function isFQDN(str: string, options?: IsFQDNOptions): boolean;
Index: ckend/node_modules/@types/validator/lib/isFloat.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isFloat.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../";
-export type FloatLocale = validator.FloatLocale;
-export type IsFloatOptions = validator.IsFloatOptions;
-export default validator.isFloat;
Index: ckend/node_modules/@types/validator/lib/isFullWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isFullWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isFullWidth;
Index: ckend/node_modules/@types/validator/lib/isHSL.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isHSL.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isHSL;
Index: ckend/node_modules/@types/validator/lib/isHalfWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isHalfWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isHalfWidth;
Index: ckend/node_modules/@types/validator/lib/isHash.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isHash.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type HashAlgorithm = validator.HashAlgorithm;
-export default validator.isHash;
Index: ckend/node_modules/@types/validator/lib/isHexColor.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isHexColor.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isHexColor;
Index: ckend/node_modules/@types/validator/lib/isHexadecimal.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isHexadecimal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isHexadecimal;
Index: ckend/node_modules/@types/validator/lib/isIBAN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIBAN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,96 +1,0 @@
-export const locales: Array<
-    | "AD"
-    | "AE"
-    | "AL"
-    | "AT"
-    | "AZ"
-    | "BA"
-    | "BE"
-    | "BG"
-    | "BH"
-    | "BR"
-    | "BY"
-    | "CH"
-    | "CR"
-    | "CY"
-    | "CZ"
-    | "DE"
-    | "DK"
-    | "DO"
-    | "EE"
-    | "EG"
-    | "ES"
-    | "FI"
-    | "FO"
-    | "FR"
-    | "GB"
-    | "GE"
-    | "GI"
-    | "GL"
-    | "GR"
-    | "GT"
-    | "HR"
-    | "HU"
-    | "IE"
-    | "IL"
-    | "IQ"
-    | "IR"
-    | "IS"
-    | "IT"
-    | "JO"
-    | "KW"
-    | "KZ"
-    | "LB"
-    | "LC"
-    | "LI"
-    | "LT"
-    | "LU"
-    | "LV"
-    | "MC"
-    | "MD"
-    | "ME"
-    | "MK"
-    | "MR"
-    | "MT"
-    | "MU"
-    | "MZ"
-    | "NL"
-    | "NO"
-    | "PK"
-    | "PL"
-    | "PS"
-    | "PT"
-    | "QA"
-    | "RO"
-    | "RS"
-    | "SA"
-    | "SC"
-    | "SE"
-    | "SI"
-    | "SK"
-    | "SM"
-    | "SV"
-    | "TL"
-    | "TN"
-    | "TR"
-    | "UA"
-    | "VA"
-    | "VG"
-    | "XK"
->;
-
-export interface IsIBANOptions {
-    /**
-     * @default undefined
-     */
-    whitelist?: typeof locales | undefined;
-    /**
-     * @default undefined
-     */
-    blacklist?: typeof locales | undefined;
-}
-
-/**
- * Check if a string is a IBAN (International Bank Account Number).
- */
-export default function isIBAN(str: string, options?: IsIBANOptions): boolean;
Index: ckend/node_modules/@types/validator/lib/isIMEI.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIMEI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isIMEI;
Index: ckend/node_modules/@types/validator/lib/isIP.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIP.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IPVersion = validator.IPVersion;
-export default validator.isIP;
Index: ckend/node_modules/@types/validator/lib/isIPRange.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIPRange.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IPVersion = validator.IPVersion;
-export default validator.isIPRange;
Index: ckend/node_modules/@types/validator/lib/isISBN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISBN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type ISBNVersion = validator.ISBNVersion;
-export default validator.isISBN;
Index: ckend/node_modules/@types/validator/lib/isISIN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISIN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isISIN;
Index: ckend/node_modules/@types/validator/lib/isISO15924.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO15924.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isISO15924;
Index: ckend/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO31661Alpha2.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,256 +1,0 @@
-/**
- * Check if the string is a valid [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) officially assigned country code.
- */
-export default function isISO31661Alpha2(str: string): boolean;
-
-export const CountryCodes: Set<
-    | "AD"
-    | "AE"
-    | "AF"
-    | "AG"
-    | "AI"
-    | "AL"
-    | "AM"
-    | "AO"
-    | "AQ"
-    | "AR"
-    | "AS"
-    | "AT"
-    | "AU"
-    | "AW"
-    | "AX"
-    | "AZ"
-    | "BA"
-    | "BB"
-    | "BD"
-    | "BE"
-    | "BF"
-    | "BG"
-    | "BH"
-    | "BI"
-    | "BJ"
-    | "BL"
-    | "BM"
-    | "BN"
-    | "BO"
-    | "BQ"
-    | "BR"
-    | "BS"
-    | "BT"
-    | "BV"
-    | "BW"
-    | "BY"
-    | "BZ"
-    | "CA"
-    | "CC"
-    | "CD"
-    | "CF"
-    | "CG"
-    | "CH"
-    | "CI"
-    | "CK"
-    | "CL"
-    | "CM"
-    | "CN"
-    | "CO"
-    | "CR"
-    | "CU"
-    | "CV"
-    | "CW"
-    | "CX"
-    | "CY"
-    | "CZ"
-    | "DE"
-    | "DJ"
-    | "DK"
-    | "DM"
-    | "DO"
-    | "DZ"
-    | "EC"
-    | "EE"
-    | "EG"
-    | "EH"
-    | "ER"
-    | "ES"
-    | "ET"
-    | "FI"
-    | "FJ"
-    | "FK"
-    | "FM"
-    | "FO"
-    | "FR"
-    | "GA"
-    | "GB"
-    | "GD"
-    | "GE"
-    | "GF"
-    | "GG"
-    | "GH"
-    | "GI"
-    | "GL"
-    | "GM"
-    | "GN"
-    | "GP"
-    | "GQ"
-    | "GR"
-    | "GS"
-    | "GT"
-    | "GU"
-    | "GW"
-    | "GY"
-    | "HK"
-    | "HM"
-    | "HN"
-    | "HR"
-    | "HT"
-    | "HU"
-    | "ID"
-    | "IE"
-    | "IL"
-    | "IM"
-    | "IN"
-    | "IO"
-    | "IQ"
-    | "IR"
-    | "IS"
-    | "IT"
-    | "JE"
-    | "JM"
-    | "JO"
-    | "JP"
-    | "KE"
-    | "KG"
-    | "KH"
-    | "KI"
-    | "KM"
-    | "KN"
-    | "KP"
-    | "KR"
-    | "KW"
-    | "KY"
-    | "KZ"
-    | "LA"
-    | "LB"
-    | "LC"
-    | "LI"
-    | "LK"
-    | "LR"
-    | "LS"
-    | "LT"
-    | "LU"
-    | "LV"
-    | "LY"
-    | "MA"
-    | "MC"
-    | "MD"
-    | "ME"
-    | "MF"
-    | "MG"
-    | "MH"
-    | "MK"
-    | "ML"
-    | "MM"
-    | "MN"
-    | "MO"
-    | "MP"
-    | "MQ"
-    | "MR"
-    | "MS"
-    | "MT"
-    | "MU"
-    | "MV"
-    | "MW"
-    | "MX"
-    | "MY"
-    | "MZ"
-    | "NA"
-    | "NC"
-    | "NE"
-    | "NF"
-    | "NG"
-    | "NI"
-    | "NL"
-    | "NO"
-    | "NP"
-    | "NR"
-    | "NU"
-    | "NZ"
-    | "OM"
-    | "PA"
-    | "PE"
-    | "PF"
-    | "PG"
-    | "PH"
-    | "PK"
-    | "PL"
-    | "PM"
-    | "PN"
-    | "PR"
-    | "PS"
-    | "PT"
-    | "PW"
-    | "PY"
-    | "QA"
-    | "RE"
-    | "RO"
-    | "RS"
-    | "RU"
-    | "RW"
-    | "SA"
-    | "SB"
-    | "SC"
-    | "SD"
-    | "SE"
-    | "SG"
-    | "SH"
-    | "SI"
-    | "SJ"
-    | "SK"
-    | "SL"
-    | "SM"
-    | "SN"
-    | "SO"
-    | "SR"
-    | "SS"
-    | "ST"
-    | "SV"
-    | "SX"
-    | "SY"
-    | "SZ"
-    | "TC"
-    | "TD"
-    | "TF"
-    | "TG"
-    | "TH"
-    | "TJ"
-    | "TK"
-    | "TL"
-    | "TM"
-    | "TN"
-    | "TO"
-    | "TR"
-    | "TT"
-    | "TV"
-    | "TW"
-    | "TZ"
-    | "UA"
-    | "UG"
-    | "UM"
-    | "US"
-    | "UY"
-    | "UZ"
-    | "VA"
-    | "VC"
-    | "VE"
-    | "VG"
-    | "VI"
-    | "VN"
-    | "VU"
-    | "WF"
-    | "WS"
-    | "YE"
-    | "YT"
-    | "ZA"
-    | "ZM"
-    | "ZW"
->;
Index: ckend/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO31661Alpha3.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isISO31661Alpha3;
Index: ckend/node_modules/@types/validator/lib/isISO31661Numeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO31661Numeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isISO31661Numeric;
Index: ckend/node_modules/@types/validator/lib/isISO4217.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO4217.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,186 +1,0 @@
-/**
- * Check if the string is a valid [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) officially assigned currency code.
- */
-export default function isISO4217(str: string): boolean;
-
-export const CurrencyCodes: Set<
-    | "AED"
-    | "AFN"
-    | "ALL"
-    | "AMD"
-    | "ANG"
-    | "AOA"
-    | "ARS"
-    | "AUD"
-    | "AWG"
-    | "AZN"
-    | "BAM"
-    | "BBD"
-    | "BDT"
-    | "BGN"
-    | "BHD"
-    | "BIF"
-    | "BMD"
-    | "BND"
-    | "BOB"
-    | "BOV"
-    | "BRL"
-    | "BSD"
-    | "BTN"
-    | "BWP"
-    | "BYN"
-    | "BZD"
-    | "CAD"
-    | "CDF"
-    | "CHE"
-    | "CHF"
-    | "CHW"
-    | "CLF"
-    | "CLP"
-    | "CNY"
-    | "COP"
-    | "COU"
-    | "CRC"
-    | "CUP"
-    | "CVE"
-    | "CZK"
-    | "DJF"
-    | "DKK"
-    | "DOP"
-    | "DZD"
-    | "EGP"
-    | "ERN"
-    | "ETB"
-    | "EUR"
-    | "FJD"
-    | "FKP"
-    | "GBP"
-    | "GEL"
-    | "GHS"
-    | "GIP"
-    | "GMD"
-    | "GNF"
-    | "GTQ"
-    | "GYD"
-    | "HKD"
-    | "HNL"
-    | "HTG"
-    | "HUF"
-    | "IDR"
-    | "ILS"
-    | "INR"
-    | "IQD"
-    | "IRR"
-    | "ISK"
-    | "JMD"
-    | "JOD"
-    | "JPY"
-    | "KES"
-    | "KGS"
-    | "KHR"
-    | "KMF"
-    | "KPW"
-    | "KRW"
-    | "KWD"
-    | "KYD"
-    | "KZT"
-    | "LAK"
-    | "LBP"
-    | "LKR"
-    | "LRD"
-    | "LSL"
-    | "LYD"
-    | "MAD"
-    | "MDL"
-    | "MGA"
-    | "MKD"
-    | "MMK"
-    | "MNT"
-    | "MOP"
-    | "MRU"
-    | "MUR"
-    | "MVR"
-    | "MWK"
-    | "MXN"
-    | "MXV"
-    | "MYR"
-    | "MZN"
-    | "NAD"
-    | "NGN"
-    | "NIO"
-    | "NOK"
-    | "NPR"
-    | "NZD"
-    | "OMR"
-    | "PAB"
-    | "PEN"
-    | "PGK"
-    | "PHP"
-    | "PKR"
-    | "PLN"
-    | "PYG"
-    | "QAR"
-    | "RON"
-    | "RSD"
-    | "RUB"
-    | "RWF"
-    | "SAR"
-    | "SBD"
-    | "SCR"
-    | "SDG"
-    | "SEK"
-    | "SGD"
-    | "SHP"
-    | "SLE"
-    | "SLL"
-    | "SOS"
-    | "SRD"
-    | "SSP"
-    | "STN"
-    | "SVC"
-    | "SYP"
-    | "SZL"
-    | "THB"
-    | "TJS"
-    | "TMT"
-    | "TND"
-    | "TOP"
-    | "TRY"
-    | "TTD"
-    | "TWD"
-    | "TZS"
-    | "UAH"
-    | "UGX"
-    | "USD"
-    | "USN"
-    | "UYI"
-    | "UYU"
-    | "UYW"
-    | "UZS"
-    | "VED"
-    | "VES"
-    | "VND"
-    | "VUV"
-    | "WST"
-    | "XAF"
-    | "XAG"
-    | "XAU"
-    | "XBA"
-    | "XBB"
-    | "XBC"
-    | "XBD"
-    | "XCD"
-    | "XDR"
-    | "XOF"
-    | "XPD"
-    | "XPF"
-    | "XPT"
-    | "XSU"
-    | "XTS"
-    | "XUA"
-    | "XXX"
-    | "YER"
-    | "ZAR"
-    | "ZMW"
-    | "ZWL"
->;
Index: ckend/node_modules/@types/validator/lib/isISO6346.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO6346.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../";
-
-export const isISO6346: typeof validator.isISO6346;
-export const isFreightContainerID: typeof validator.isFreightContainerID;
Index: ckend/node_modules/@types/validator/lib/isISO6391.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO6391.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/**
- * Check if the string is a valid [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639-1) officially assigned language code.
- */
-export default function isISO6391(str: string): boolean;
Index: ckend/node_modules/@types/validator/lib/isISO8601.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISO8601.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsISO8601Options = validator.IsISO8601Options;
-export default validator.isISO8601;
Index: ckend/node_modules/@types/validator/lib/isISRC.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISRC.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isISRC;
Index: ckend/node_modules/@types/validator/lib/isISSN.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isISSN.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsISSNOptions = validator.IsISSNOptions;
-export default validator.isISSN;
Index: ckend/node_modules/@types/validator/lib/isIdentityCard.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIdentityCard.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IdentityCardLocale = validator.IdentityCardLocale;
-export default validator.isIdentityCard;
Index: ckend/node_modules/@types/validator/lib/isIn.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isIn.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isIn;
Index: ckend/node_modules/@types/validator/lib/isInt.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isInt.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsIntOptions = validator.IsIntOptions;
-export default validator.isInt;
Index: ckend/node_modules/@types/validator/lib/isJSON.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isJSON.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isJSON;
Index: ckend/node_modules/@types/validator/lib/isJWT.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isJWT.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isJWT;
Index: ckend/node_modules/@types/validator/lib/isLatLong.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLatLong.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isLatLong;
Index: ckend/node_modules/@types/validator/lib/isLength.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLength.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsLengthOptions = validator.IsLengthOptions;
-export default validator.isLength;
Index: ckend/node_modules/@types/validator/lib/isLicensePlate.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLicensePlate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type LicensePlateLocale = validator.LicensePlateLocale;
-export default validator.isLicensePlate;
Index: ckend/node_modules/@types/validator/lib/isLocale.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLocale.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isLocale;
Index: ckend/node_modules/@types/validator/lib/isLowercase.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLowercase.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isLowercase;
Index: ckend/node_modules/@types/validator/lib/isLuhnNumber.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isLuhnNumber.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isLuhnNumber;
Index: ckend/node_modules/@types/validator/lib/isMACAddress.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMACAddress.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsMACAddressOptions = validator.IsMACAddressOptions;
-export default validator.isMACAddress;
Index: ckend/node_modules/@types/validator/lib/isMD5.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMD5.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMD5;
Index: ckend/node_modules/@types/validator/lib/isMagnetURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMagnetURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMagnetURI;
Index: ckend/node_modules/@types/validator/lib/isMailtoURI.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMailtoURI.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMailtoURI;
Index: ckend/node_modules/@types/validator/lib/isMimeType.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMimeType.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMimeType;
Index: ckend/node_modules/@types/validator/lib/isMobilePhone.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMobilePhone.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import validator from "../";
-export type MobilePhoneLocale = validator.MobilePhoneLocale;
-export type IsMobilePhoneOptions = validator.IsMobilePhoneOptions;
-export default validator.isMobilePhone;
Index: ckend/node_modules/@types/validator/lib/isMongoId.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMongoId.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMongoId;
Index: ckend/node_modules/@types/validator/lib/isMultibyte.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isMultibyte.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isMultibyte;
Index: ckend/node_modules/@types/validator/lib/isNumeric.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isNumeric.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type IsNumericOptions = validator.IsNumericOptions;
-export default validator.isNumeric;
Index: ckend/node_modules/@types/validator/lib/isOctal.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isOctal.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isOctal;
Index: ckend/node_modules/@types/validator/lib/isPassportNumber.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isPassportNumber.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isPassportNumber;
Index: ckend/node_modules/@types/validator/lib/isPort.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isPort.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isPort;
Index: ckend/node_modules/@types/validator/lib/isPostalCode.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isPostalCode.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type PostalCodeLocale = validator.PostalCodeLocale;
-export default validator.isPostalCode;
Index: ckend/node_modules/@types/validator/lib/isRFC3339.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isRFC3339.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isRFC3339;
Index: ckend/node_modules/@types/validator/lib/isRgbColor.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isRgbColor.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isRgbColor;
Index: ckend/node_modules/@types/validator/lib/isSemVer.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isSemVer.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isSemVer;
Index: ckend/node_modules/@types/validator/lib/isSlug.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isSlug.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isSlug;
Index: ckend/node_modules/@types/validator/lib/isStrongPassword.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isStrongPassword.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isStrongPassword;
Index: ckend/node_modules/@types/validator/lib/isSurrogatePair.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isSurrogatePair.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isSurrogatePair;
Index: ckend/node_modules/@types/validator/lib/isTaxID.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isTaxID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-/**
- * Validator function
- * Return true if the passed string is a valid tax identification number
- * for the specified locale.
- * Throw an error exception if the locale is not supported.
- * @param str
- * @param [locale=en-US]
- */
-export default function isTaxID(str: string, locale?: string): boolean;
Index: ckend/node_modules/@types/validator/lib/isTime.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isTime.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isTime;
Index: ckend/node_modules/@types/validator/lib/isULID.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isULID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isULID;
Index: ckend/node_modules/@types/validator/lib/isURL.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isURL.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-/**
- * Check if the string is an URL.
- *
- * @param [options] - Options
- */
-export default function isURL(str: string, options?: IsURLOptions): boolean;
-
-export interface IsURLOptions {
-    /**
-     * @default ['http','https','ftp']
-     */
-    protocols?: string[] | undefined;
-    /**
-     * @default true
-     */
-    require_tld?: boolean | undefined;
-    /**
-     * @default false
-     */
-    require_protocol?: boolean | undefined;
-    /**
-     * @default true
-     */
-    require_host?: boolean | undefined;
-    /**
-     * if set as true isURL will check if port is present in the URL
-     * @default false
-     */
-    require_port?: boolean | undefined;
-    /**
-     * @default true
-     */
-    require_valid_protocol?: boolean | undefined;
-    /**
-     * @default false
-     */
-    allow_underscores?: boolean | undefined;
-    /**
-     * @default false
-     */
-    host_whitelist?: Array<string | RegExp> | undefined;
-    /**
-     * @default false
-     */
-    host_blacklist?: Array<string | RegExp> | undefined;
-    /**
-     * @default false
-     */
-    allow_trailing_dot?: boolean | undefined;
-    /**
-     * @default false
-     */
-    allow_protocol_relative_urls?: boolean | undefined;
-    /**
-     * @default false
-     */
-    disallow_auth?: boolean | undefined;
-    /**
-     * @default true
-     */
-    allow_fragments?: boolean | undefined;
-    /**
-     * @default true
-     */
-    allow_query_components?: boolean | undefined;
-    /**
-     * @default true
-     */
-    validate_length?: boolean | undefined;
-    /**
-     * @default 2084
-     */
-    max_allowed_length?: number | false | undefined;
-}
Index: ckend/node_modules/@types/validator/lib/isUUID.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isUUID.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type UUIDVersion = validator.UUIDVersion;
-export default validator.isUUID;
Index: ckend/node_modules/@types/validator/lib/isUppercase.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isUppercase.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isUppercase;
Index: ckend/node_modules/@types/validator/lib/isVAT.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isVAT.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isVAT;
Index: ckend/node_modules/@types/validator/lib/isVariableWidth.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isVariableWidth.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isVariableWidth;
Index: ckend/node_modules/@types/validator/lib/isWhitelisted.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/isWhitelisted.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.isWhitelisted;
Index: ckend/node_modules/@types/validator/lib/ltrim.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/ltrim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.ltrim;
Index: ckend/node_modules/@types/validator/lib/matches.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/matches.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.matches;
Index: ckend/node_modules/@types/validator/lib/normalizeEmail.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/normalizeEmail.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import validator from "../";
-export type NormalizeEmailOptions = validator.NormalizeEmailOptions;
-export default validator.normalizeEmail;
Index: ckend/node_modules/@types/validator/lib/rtrim.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/rtrim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.rtrim;
Index: ckend/node_modules/@types/validator/lib/stripLow.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/stripLow.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.stripLow;
Index: ckend/node_modules/@types/validator/lib/toBoolean.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/toBoolean.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.toBoolean;
Index: ckend/node_modules/@types/validator/lib/toDate.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/toDate.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.toDate;
Index: ckend/node_modules/@types/validator/lib/toFloat.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/toFloat.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.toFloat;
Index: ckend/node_modules/@types/validator/lib/toInt.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/toInt.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.toInt;
Index: ckend/node_modules/@types/validator/lib/trim.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/trim.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.trim;
Index: ckend/node_modules/@types/validator/lib/unescape.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/unescape.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.unescape;
Index: ckend/node_modules/@types/validator/lib/whitelist.d.ts
===================================================================
--- backend/node_modules/@types/validator/lib/whitelist.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-import validator from "../";
-export default validator.whitelist;
Index: ckend/node_modules/@types/validator/package.json
===================================================================
--- backend/node_modules/@types/validator/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-{
-    "name": "@types/validator",
-    "version": "13.15.1",
-    "description": "TypeScript definitions for validator",
-    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/validator",
-    "license": "MIT",
-    "contributors": [
-        {
-            "name": "tgfjt",
-            "githubUsername": "tgfjt",
-            "url": "https://github.com/tgfjt"
-        },
-        {
-            "name": "Ilya Mochalov",
-            "githubUsername": "chrootsu",
-            "url": "https://github.com/chrootsu"
-        },
-        {
-            "name": "Ayman Nedjmeddine",
-            "githubUsername": "IOAyman",
-            "url": "https://github.com/IOAyman"
-        },
-        {
-            "name": "Louay Alakkad",
-            "githubUsername": "louy",
-            "url": "https://github.com/louy"
-        },
-        {
-            "name": "Bonggyun Lee",
-            "githubUsername": "deptno",
-            "url": "https://github.com/deptno"
-        },
-        {
-            "name": "Naoto Yokoyama",
-            "githubUsername": "builtinnya",
-            "url": "https://github.com/builtinnya"
-        },
-        {
-            "name": "Philipp Katz",
-            "githubUsername": "qqilihq",
-            "url": "https://github.com/qqilihq"
-        },
-        {
-            "name": "Jace Warren",
-            "githubUsername": "keatz55",
-            "url": "https://github.com/keatz55"
-        },
-        {
-            "name": "Munif Tanjim",
-            "githubUsername": "MunifTanjim",
-            "url": "https://github.com/MunifTanjim"
-        },
-        {
-            "name": "Vlad Poluch",
-            "githubUsername": "vlapo",
-            "url": "https://github.com/vlapo"
-        },
-        {
-            "name": "Piotr Błażejewicz",
-            "githubUsername": "peterblazejewicz",
-            "url": "https://github.com/peterblazejewicz"
-        },
-        {
-            "name": "Matteo Nista",
-            "githubUsername": "Mattewn99",
-            "url": "https://github.com/Mattewn99"
-        },
-        {
-            "name": "Daniel Freire",
-            "githubUsername": "dcfreire",
-            "url": "https://github.com/dcfreire"
-        },
-        {
-            "name": "Rik Smale",
-            "githubUsername": "WikiRik",
-            "url": "https://github.com/WikiRik"
-        }
-    ],
-    "main": "",
-    "types": "index.d.ts",
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
-        "directory": "types/validator"
-    },
-    "scripts": {},
-    "dependencies": {},
-    "peerDependencies": {},
-    "typesPublisherContentHash": "f1ee0e48270c0e20a64839d2f3fe4bf562640e8aaf6a68ce3ea3d961da5b8cba",
-    "typeScriptVersion": "5.1"
-}
Index: ckend/node_modules/dottie/LICENSE
===================================================================
--- backend/node_modules/dottie/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-The MIT License
-
-Copyright (c) 2013-2014 Mick Hansen. http://mhansen.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
Index: ckend/node_modules/dottie/README.md
===================================================================
--- backend/node_modules/dottie/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,112 +1,0 @@
-[![Build Status](https://travis-ci.org/mickhansen/dottie.js.svg?branch=master)](https://travis-ci.org/mickhansen/dottie.js)
-
-Dottie helps you easily (and without sacrificing too much performance) look up and play with nested keys in objects, without them throwing up in your face.
-
-**Not actively maintained. You are likely better off using lodash or ES6+**
-
-## Install
-    npm install dottie
-
-## Usage
-For detailed usage, check source or tests.
-
-### Get value
-Gets nested value, or undefined if unreachable, or a default value if passed.
-
-```js
-var values = {
-  some: {
-    nested: {
-        key: 'foobar';
-    }
-  },
-  'some.dot.included': {
-    key: 'barfoo'
-  }
-}
-
-dottie.get(values, 'some.nested.key'); // returns 'foobar'
-dottie.get(values, 'some.undefined.key'); // returns undefined
-dottie.get(values, 'some.undefined.key', 'defaultval'); // returns 'defaultval'
-dottie.get(values, ['some.dot.included', 'key']); // returns 'barfoo'
-```
-
-*Note: lodash.get() also works fine for this* 
-
-### Set value
-
-Sets nested value, creates nested structure if needed
-
-```js
-dottie.set(values, 'some.nested.value', someValue);
-dottie.set(values, ['some.dot.included', 'value'], someValue);
-dottie.set(values, 'some.nested.object', someValue, {
-  force: true // force overwrite defined non-object keys into objects if needed
-});
-```
-
-### Transform object
-Transform object from keys with dottie notation to nested objects
-
-```js
-var values = {
-  'user.name': 'Gummy Bear',
-  'user.email': 'gummybear@candymountain.com',
-  'user.professional.title': 'King',
-  'user.professional.employer': 'Candy Mountain'
-};
-var transformed = dottie.transform(values);
-
-/*
-{
-  user: {
-    name: 'Gummy Bear',
-    email: 'gummybear@candymountain.com',
-    professional: {
-      title: 'King',
-      employer: 'Candy Mountain'
-    }
-  }
-}
-*/
-```
-
-#### With a custom delimiter
-
-```js
-var values = {
-  'user_name': 'Mick Hansen',
-  'user_email': 'maker@mhansen.io'
-};
-var transformed = dottie.transform(values, { delimiter: '_' });
-
-/*
-{
-  user: {
-    name: 'Mick Hansen',
-    email: 'maker@mhansen.io'
-  }
-}
-*/
-```
-
-### Get paths in object
-```js
-var object = {
-  a: 1,
-  b: {
-    c: 2,
-    d: { e: 3 }
-  }
-};
-
-dottie.paths(object); // ["a", "b.c", "b.d.e"];
-```
-
-## Performance
-
-`0.3.1` and up ships with `dottie.memoizePath: true` by default, if this causes any bugs, please try setting it to false
-
-## License
-
-[MIT](https://github.com/mickhansen/dottie.js/blob/master/LICENSE)
Index: ckend/node_modules/dottie/dottie.js
===================================================================
--- backend/node_modules/dottie/dottie.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,231 +1,0 @@
-(function(undefined) {
-  var root = this;
-
-  // Weird IE shit, objects do not have hasOwn, but the prototype does...
-  var hasOwnProp = Object.prototype.hasOwnProperty;
-
-  var reverseDupArray = function (array) {
-    var result = new Array(array.length);
-    var index  = array.length;
-    var arrayMaxIndex = index - 1;
-
-    while (index--) {
-      result[arrayMaxIndex - index] = array[index];
-    }
-
-    return result;
-  };
-
-  var Dottie = function() {
-    var args = Array.prototype.slice.call(arguments);
-
-    if (args.length == 2) {
-      return Dottie.find.apply(this, args);
-    }
-    return Dottie.transform.apply(this, args);
-  };
-
-  // Legacy syntax, changed syntax to have get/set be similar in arg order
-  Dottie.find = function(path, object) {
-    return Dottie.get(object, path);
-  };
-
-  // Dottie memoization flag
-  Dottie.memoizePath = true;
-  var memoized = {};
-
-  // Traverse object according to path, return value if found - Return undefined if destination is unreachable
-  Dottie.get = function(object, path, defaultVal) {
-    if ((object === undefined) || (object === null) || (path === undefined) || (path === null)) {
-        return defaultVal;
-    }
-
-    var names;
-
-    if (typeof path === "string") {
-      if (Dottie.memoizePath) {
-        if (memoized[path]) {
-          names = memoized[path].slice(0);
-        } else {
-          names = path.split('.').reverse();
-          memoized[path] = names.slice(0);
-        }
-      } else {
-        names = path.split('.').reverse();
-      }
-    } else if (Array.isArray(path)) {
-      names = reverseDupArray(path);
-    }
-
-    while (names.length && (object = object[names.pop()]) !== undefined && object !== null);
-
-    // Handle cases where accessing a childprop of a null value
-    if (object === null && names.length) object = undefined;
-
-    return (object === undefined ? defaultVal : object);
-  };
-
-  Dottie.exists = function(object, path) {
-    return Dottie.get(object, path) !== undefined;
-  };
-
-  // Set nested value
-  Dottie.set = function(object, path, value, options) {
-    var pieces = Array.isArray(path) ? path : path.split('.'), current = object, piece, length = pieces.length;
-    if (pieces[0] === '__proto__') return;
-
-    if (typeof current !== 'object') {
-        throw new Error('Parent is not an object.');
-    }
-
-    for (var index = 0; index < length; index++) {
-      piece = pieces[index];
-
-      // Create namespace (object) where none exists.
-      // If `force === true`, bruteforce the path without throwing errors.
-      if (
-        !hasOwnProp.call(current, piece)
-        || current[piece] === undefined
-        || ((typeof current[piece] !== 'object' || current[piece] === null) && options && options.force === true)) {
-        current[piece] = {};
-      }
-
-      if (index == (length - 1)) {
-        // Set final value
-        current[piece] = value;
-      } else {
-        // We do not overwrite existing path pieces by default
-        if (typeof current[piece] !== 'object' || current[piece] === null) {
-          throw new Error('Target key "' + piece + '" is not suitable for a nested value. (It is in use as non-object. Set `force` to `true` to override.)');
-        }
-
-        // Traverse next in path
-        current = current[piece];
-      }
-    }
-
-    // Is there any case when this is relevant? It's also the last line in the above for-loop
-    current[piece] = value;
-  };
-
-  // Set default nested value
-  Dottie['default'] = function(object, path, value) {
-    if (Dottie.get(object, path) === undefined) {
-      Dottie.set(object, path, value);
-    }
-  };
-
-  // Transform unnested object with .-seperated keys into a nested object.
-  Dottie.transform = function Dottie$transformfunction(object, options) {
-    if (Array.isArray(object)) {
-      return object.map(function(o) {
-        return Dottie.transform(o, options);
-      });
-    }
-
-    options = options || {};
-    options.delimiter = options.delimiter || '.';
-
-    var pieces
-      , piecesLength
-      , piece
-      , current
-      , transformed = {}
-      , key
-      , keys = Object.keys(object)
-      , length = keys.length
-      , i;
-
-    for (i = 0; i < length; i++) {
-      key = keys[i];
-
-      if (key.indexOf(options.delimiter) !== -1) {
-        pieces = key.split(options.delimiter);
-
-        if (pieces[0] === '__proto__') break;
-
-        piecesLength = pieces.length;
-        current = transformed;
-
-        for (var index = 0; index < piecesLength; index++) {
-          piece = pieces[index];
-          if (index != (piecesLength - 1) && !current.hasOwnProperty(piece)) {
-            current[piece] = {};
-          }
-
-          if (index == (piecesLength - 1)) {
-            current[piece] = object[key];
-          }
-
-          current = current[piece];
-          if (current === null) {
-            break;
-          }
-        }
-      } else {
-        transformed[key] = object[key];
-      }
-    }
-
-    return transformed;
-  };
-
-  Dottie.flatten = function(object, seperator) {
-    if (typeof seperator === "undefined") seperator = '.';
-    var flattened = {}
-      , current
-      , nested;
-
-    for (var key in object) {
-      if (hasOwnProp.call(object, key)) {
-        current = object[key];
-        if (Object.prototype.toString.call(current) === "[object Object]") {
-          nested = Dottie.flatten(current, seperator);
-
-          for (var _key in nested) {
-            flattened[key+seperator+_key] = nested[_key];
-          }
-        } else {
-          flattened[key] = current;
-        }
-      }
-    }
-
-    return flattened;
-  };
-
-  Dottie.paths = function(object, prefixes) {
-    var paths = [];
-    var value;
-    var key;
-
-    prefixes = prefixes || [];
-
-    if (typeof object === 'object') {
-      for (key in object) {
-        value = object[key];
-
-        if (typeof value === 'object' && value !== null) {
-          paths = paths.concat(Dottie.paths(value, prefixes.concat([key])));
-        } else {
-          paths.push(prefixes.concat(key).join('.'));
-        }
-      }
-    } else {
-      throw new Error('Paths was called with non-object argument.');
-    }
-
-    return paths;
-  };
-
-  if (typeof module !== 'undefined' && module.exports) {
-    exports = module.exports = Dottie;
-  } else {
-    root['Dottie'] = Dottie;
-    root['Dot'] = Dottie; //BC
-
-    if (typeof define === "function") {
-      define([], function () { return Dottie; });
-    }
-  }
-})();
Index: ckend/node_modules/dottie/package.json
===================================================================
--- backend/node_modules/dottie/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-{
-  "name": "dottie",
-  "version": "2.0.6",
-  "devDependencies": {
-    "chai": "^4.2.0",
-    "mocha": "^10.2.0"
-  },
-  "license": "MIT",
-  "files": [
-    "dottie.js"
-  ],
-  "description": "Fast and safe nested object access and manipulation in JavaScript",
-  "author": "Mick Hansen <maker@mhansen.io>",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/mickhansen/dottie.js.git"
-  },
-  "main": "dottie.js",
-  "scripts": {
-    "test": "mocha -t 5000 -s 100 --reporter spec test"
-  }
-}
Index: ckend/node_modules/inflection/.vscode/settings.json
===================================================================
--- backend/node_modules/inflection/.vscode/settings.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-{
-    "editor.formatOnSave": false
-}
Index: ckend/node_modules/inflection/CHANGELOG.md
===================================================================
--- backend/node_modules/inflection/CHANGELOG.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,190 +1,0 @@
-# History
-
-## 1.13.2 / 2022-01-29
-
-- [fix] `drives` singular form
-- [feat] allow `inflect` to use floats
-- [chore] upgrade packages
-
-## 1.13.1 / 2021-05-21
-
-- [fix] use correct version for `inflector.version`
-- [build] reduce npm bundle size by excluding more files
-- [build] use terser to create a minified file
-
-## 1.13.0 / 2021-05-01
-
-- [update packages] mocha->8.3.2, should->13.2.3
-- [bug fix] `grammar` plural form
-- [bug fix] `bonus` plural form
-- [bug fix] `octopus` plural form
-- [bug fix] `virus` plural form
-- [info] add LICENSE file
-- [info] additional maintainer @p-kuen. @ben-lin thanks for your trust!
-
-## 1.12.0 / 2017-01-27
-
-- [update packages] mocha->3.2.0, should->11.2.0
-- [bug fix] `minus` plural & singular form
-- [bug fix] `save` plural & singular form
-
-## 1.11.0 / 2016-04-20
-
-- [update packages] mocha->3.0.2, should->11.1.0
-- [bug fix] `inflection.transform` in ES6
-
-## 1.10.0 / 2016-04-20
-
-- [update packages] should->8.3.1
-- [bug fix] `campus` plural & singular form
-
-## 1.9.0 / 2016-04-06
-
-- [update packages] mocha->2.4.5, should->8.3.0
-- [bug fix] `genus` plural & singular form
-
-## 1.8.0 / 2015-11-22
-
-- [update packages] mocha->2.3.4, should->7.1.1
-- [bug fix] `criterion` plural & singular form
-
-## 1.7.2 / 2015-10-11
-
-- [update packages] mocha->2.3.3, should->7.1.0
-
-## 1.7.1 / 2015-03-25
-
-- [bug fix] `woman` plural & singular form
-
-## 1.7.0 / 2015-03-25
-
-- [bug fix] `canvas` plural & singular form
-- [update packages] mocha->2.2.1, should->5.2.0
-
-## 1.6.0 / 2014-12-06
-
-- [bug fix] Special rules for index, vertex, and matrix masked by general rule x
-- [update packages] mocha->2.1.0, should->4.6.5
-
-## 1.5.3 / 2014-12-06
-
-- [bug fix] Remove invalid uncountable words
-
-## 1.5.2 / 2014-11-14
-
-- [bug fix] `business` & `access` plural form
-
-## 1.5.1 / 2014-09-23
-
-- [bug fix] Fix `whereas` plural & singular form
-
-## 1.5.0 / 2014-09-23
-
-- [refactor] Add more rules and uncountable nouns
-
-## 1.4.2 / 2014-09-05
-
-- [bug fix] Fix wrong implementation of `goose`, `tooth` & `foot`
-
-## 1.4.1 / 2014-08-31
-
-- [bug fix] Fix `goose`, `tooth` & `foot` plural & singular form
-
-## 1.4.0 / 2014-08-23
-
-- [new feature] Adds support for an `inflect` method that will choose to pluralize or singularize a noun based on an integer value
-
-## 1.3.8 / 2014-07-03
-
-- [others] Syntax tuning
-
-## 1.3.7 / 2014-06-25
-
-- [refactor] Adopt UMD import to work in a variety of different situations
-- [update packages] should->4.0.4
-
-## 1.3.6 / 2014-06-07
-
-- [bug fix] Rearrange rules. `movies`->`movy`
-
-## 1.3.5 / 2014-02-12
-
-- Unable to publsih v1.3.4 therefore jump to v1.3.5
-
-## 1.3.4 / 2014-02-12
-
-- [update packages] should->3.1.2
-- [refactor] Use `mocha` instead of hard coding tests
-
-## 1.3.3 / 2014-01-22
-
-- [update packages] should->3.0.1
-- Added brower.json
-
-## 1.3.2 / 2013-12-12
-
-- [update packages] node.flow->1.2.3
-
-## 1.3.1 / 2013-12-12
-
-- [refactor] Support `Requirejs`
-
-## 1.3.0 / 2013-12-11
-
-- [refactor] Move `var` out of loops
-- [refactor] Change the way `camelize` acts to mimic 100% `Rails ActiveSupport Inflector camelize`
-
-## 1.2.7 / 2013-12-11
-
-- [new feature] Added transform, thnaks to `luk3thomas`
-- [update packages] should->v2.1.1
-
-## 1.2.6 / 2013-05-24
-
-- [bug fix] Use instance instead of `this`
-
-## 1.2.5 / 2013-01-09
-
-- [refactor] Allow all caps strings to be returned from underscore
-
-## 1.2.4 / 2013-01-06
-
-- [bug fix] window obj does not have `call` method
-
-## 1.2.3 / 2012-08-02
-
-- [bug fix] Singularize `status` produces `statu`
-- [update packages] should->v1.1.0
-
-## 1.2.2 / 2012-07-23
-
-- [update packages] node.flow->v1.1.3 & should->v1.0.0
-
-## 1.2.1 / 2012-06-22
-
-- [bug fix] Singularize `address` produces `addres`
-
-## 1.2.0 / 2012-04-10
-
-- [new feature] Browser support
-- [update packages] node.flow->v1.1.1
-
-## 1.1.1 / 2012-02-13
-
-- [update packages] node.flow->v1.1.0
-
-## 1.1.0 / 2012-02-13
-
-- [update packages] node.flow->v1.0.0
-- [refactor] Read version number from package.json
-
-## 1.0.0 / 2012-02-08
-
-- Remove make file
-- Add pluralize rules
-- Add pluralize tests
-- [refactor] Use object.jey instead of for in
-
-## 0.0.1 / 2012-01-16
-
-- Initial release
Index: ckend/node_modules/inflection/LICENSE
===================================================================
--- backend/node_modules/inflection/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2021 dreamerslab
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/inflection/README.md
===================================================================
--- backend/node_modules/inflection/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,505 +1,0 @@
-# inflection
-
-A port of inflection-js to node.js module
-
-<a href="https://www.npmjs.com/package/inflection"><img src="https://img.shields.io/npm/v/inflection" alt="NPM Version" /></a>
-
-
-## Description
-[inflection-js](http://code.google.com/p/inflection-js/) is a port of the functionality from Ruby on Rails' Active Support Inflection classes into Javascript. `inflection` is a port of `inflection-js` to node.js npm package. Instead of [extending JavaScript native](http://wonko.com/post/extending-javascript-natives) String object like `inflection-js` does, `inflection` separate the methods to a independent package to avoid unexpected behaviors.
-
-Note: This library uses [Wiktionary](http://en.wiktionary.org) as its reference.
-
-
-
-## Requires
-
-Checkout `package.json` for dependencies.
-
-
-
-## Angular Support
-
-Checkout [ngInflection](https://github.com/konsumer/ngInflection) from [konsumer](https://github.com/konsumer)
-
-
-
-## Meteor Support
-
-Checkout [Meteor Inflector](https://github.com/katrotz/meteor-inflector) from [Veaceslav Cotruta](https://github.com/katrotz)
-
-
-
-## Installation
-
-Install inflection through npm
-
-	npm install inflection
-
-
-
-## API
-
-- inflection.indexOf( arr, item, from_index, compare_func );
-- inflection.pluralize( str, plural );
-- inflection.singularize( str, singular );
-- inflection.inflect( str, count, singular, plural );
-- inflection.camelize( str, low_first_letter );
-- inflection.underscore( str, all_upper_case );
-- inflection.humanize( str, low_first_letter );
-- inflection.capitalize( str );
-- inflection.dasherize( str );
-- inflection.titleize( str );
-- inflection.demodulize( str );
-- inflection.tableize( str );
-- inflection.classify( str );
-- inflection.foreign_key( str, drop_id_ubar );
-- inflection.ordinalize( str );
-- inflection.transform( str, arr );
-
-
-
-## Usage
-
-> Require the module before using
-
-	var inflection = require( 'inflection' );
-
-
-
-### inflection.indexOf( arr, item, from_index, compare_func );
-
-This lets us detect if an Array contains a given element.
-
-#### Arguments
-
-> arr
-
-	type: Array
-	desc: The subject array.
-
-> item
-
-	type: Object
-	desc: Object to locate in the Array.
-
-> from_index
-
-	type: Number
-	desc: Starts checking from this position in the Array.(optional)
-
-> compare_func
-
-	type: Function
-	desc: Function used to compare Array item vs passed item.(optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.indexOf([ 'hi','there' ], 'guys' ); // === -1
-	inflection.indexOf([ 'hi','there' ], 'hi' ); // === 0
-
-
-
-### inflection.pluralize( str, plural );
-
-This function adds pluralization support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> plural
-
-	type: String
-	desc: Overrides normal output with said String.(optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.pluralize( 'person' ); // === 'people'
-	inflection.pluralize( 'octopus' ); // === "octopi"
-	inflection.pluralize( 'Hat' ); // === 'Hats'
-	inflection.pluralize( 'person', 'guys' ); // === 'guys'
-
-
-
-### inflection.singularize( str, singular );
-
-This function adds singularization support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> singular
-
-	type: String
-	desc: Overrides normal output with said String.(optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.singularize( 'people' ); // === 'person'
-	inflection.singularize( 'octopi' ); // === "octopus"
-	inflection.singularize( 'Hats' ); // === 'Hat'
-	inflection.singularize( 'guys', 'person' ); // === 'person'
-
-
-
-### inflection.inflect( str, count, singular, plural );
-
-This function will pluralize or singularlize a String appropriately based on an integer value.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> count
-	type: Number
-	desc: The number to base pluralization off of.
-
-> singular
-
-	type: String
-	desc: Overrides normal output with said String.(optional)
-
-> plural
-
-	type: String
-	desc: Overrides normal output with said String.(optional)
-
-#### Example code
-
-		var inflection = require( 'inflection' );
-
-		inflection.inflect( 'people', 1 ); // === 'person'
-		inflection.inflect( 'octopi', 1 ); // === 'octopus'
-		inflection.inflect( 'Hats', 1 ); // === 'Hat'
-		inflection.inflect( 'guys', 1 , 'person' ); // === 'person'
-		inflection.inflect( 'person', 2 ); // === 'people'
-		inflection.inflect( 'octopus', 2 ); // === 'octopi'
-		inflection.inflect( 'Hat', 2 ); // === 'Hats'
-		inflection.inflect( 'person', 2, null, 'guys' ); // === 'guys'
-
-
-
-### inflection.camelize( str, low_first_letter );
-
-This function transforms String object from underscore to camelcase.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> low_first_letter
-
-	type: Boolean
-	desc: Default is to capitalize the first letter of the results. Passing true will lowercase it. (optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.camelize( 'message_properties' ); // === 'MessageProperties'
-	inflection.camelize( 'message_properties', true ); // === 'messageProperties'
-
-
-
-### inflection.underscore( str, all_upper_case );
-
-This function transforms String object from camelcase to underscore.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> all_upper_case
-
-	type: Boolean
-	desc: Default is to lowercase and add underscore prefix
-
-
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.underscore( 'MessageProperties' ); // === 'message_properties'
-	inflection.underscore( 'messageProperties' ); // === 'message_properties'
-	inflection.underscore( 'MP' ); // === 'm_p'
-	inflection.underscore( 'MP', true ); // === 'MP'
-
-
-
-### inflection.humanize( str, low_first_letter );
-
-This function adds humanize support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> low_first_letter
-
-	type: Boolean
-	desc: Default is to capitalize the first letter of the results. Passing true will lowercase it. (optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.humanize( 'message_properties' ); // === 'Message properties'
-	inflection.humanize( 'message_properties', true ); // === 'message properties'
-
-
-
-### inflection.capitalize( str );
-
-This function adds capitalization support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.capitalize( 'message_properties' ); // === 'Message_properties'
-	inflection.capitalize( 'message properties', true ); // === 'Message properties'
-
-
-
-### inflection.dasherize( str );
-
-This function replaces underscores with dashes in the string.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.dasherize( 'message_properties' ); // === 'message-properties'
-	inflection.dasherize( 'Message Properties' ); // === 'Message-Properties'
-
-
-
-### inflection.titleize( str );
-
-This function adds titleize support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.titleize( 'message_properties' ); // === 'Message Properties'
-	inflection.titleize( 'message properties to keep' ); // === 'Message Properties to Keep'
-
-
-
-### inflection.demodulize( str );
-
-This function adds demodulize support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.demodulize( 'Message::Bus::Properties' ); // === 'Properties'
-
-
-
-### inflection.tableize( str );
-
-This function adds tableize support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.tableize( 'MessageBusProperty' ); // === 'message_bus_properties'
-
-
-
-### inflection.classify( str );
-
-This function adds classification support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.classify( 'message_bus_properties' ); // === 'MessageBusProperty'
-
-
-
-### inflection.foreign_key( str, drop_id_ubar );
-
-This function adds foreign key support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> low_first_letter
-
-	type: Boolean
-	desc: Default is to seperate id with an underbar at the end of the class name, you can pass true to skip it.(optional)
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.foreign_key( 'MessageBusProperty' ); // === 'message_bus_property_id'
-	inflection.foreign_key( 'MessageBusProperty', true ); // === 'message_bus_propertyid'
-
-
-
-### inflection.ordinalize( str );
-
-This function adds ordinalize support to every String object.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.ordinalize( 'the 1 pitch' ); // === 'the 1st pitch'
-
-
-
-### inflection.transform( str, arr );
-
-This function performs multiple inflection methods on a string.
-
-#### Arguments
-
-> str
-
-	type: String
-	desc: The subject string.
-
-> arr
-
-	type: Array
-	desc: An array of inflection methods.
-
-#### Example code
-
-	var inflection = require( 'inflection' );
-
-	inflection.transform( 'all job', [ 'pluralize', 'capitalize', 'dasherize' ]); // === 'All-jobs'
-
-
-
-## Credit
-
-- Ryan Schuft <ryan.schuft@gmail.com>
-- Lance Pollard <lancejpollard@gmail.com> (Browser support)
-- Dane O'Connor <dane.oconnor@gmail.com>
-- brandondewitt
-- luk3thomas
-- Marcel Klehr
-- Raymond Feng
-- Kane Cohen <kanecohen@gmail.com>
-- Gianni Chiappetta <gianni@runlevel6.org>
-- Eric Brody
-- overlookmotel
-- Patrick Mowrer
-- Greger Olsson
-- Jason Crawford <jason@jasoncrawford.org>
-- Ray Myers <ray.myers@gmail.com>
-
-
-## License
-
-(The MIT License)
-
-Copyright (c) 2011 dreamerslab &lt;ben@dreamerslab.com&gt;
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/inflection/lib/inflection.js
===================================================================
--- backend/node_modules/inflection/lib/inflection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1095 +1,0 @@
-/*!
- * inflection
- * Copyright(c) 2011 Ben Lin <ben@dreamerslab.com>
- * MIT Licensed
- *
- * @fileoverview
- * A port of inflection-js to node.js module.
- */
-
-( function ( root, factory ){
-  if( typeof define === 'function' && define.amd ){
-    define([], factory );
-  }else if( typeof exports === 'object' ){
-    module.exports = factory();
-  }else{
-    root.inflection = factory();
-  }
-}( this, function (){
-
-  /**
-   * @description This is a list of nouns that use the same form for both singular and plural.
-   *              This list should remain entirely in lower case to correctly match Strings.
-   * @private
-   */
-  var uncountable_words = [
-    // 'access',
-    'accommodation',
-    'adulthood',
-    'advertising',
-    'advice',
-    'aggression',
-    'aid',
-    'air',
-    'aircraft',
-    'alcohol',
-    'anger',
-    'applause',
-    'arithmetic',
-    // 'art',
-    'assistance',
-    'athletics',
-    // 'attention',
-
-    'bacon',
-    'baggage',
-    // 'ballet',
-    // 'beauty',
-    'beef',
-    // 'beer',
-    // 'behavior',
-    'biology',
-    // 'billiards',
-    'blood',
-    'botany',
-    // 'bowels',
-    'bread',
-    // 'business',
-    'butter',
-
-    'carbon',
-    'cardboard',
-    'cash',
-    'chalk',
-    'chaos',
-    'chess',
-    'crossroads',
-    'countryside',
-
-    // 'damage',
-    'dancing',
-    // 'danger',
-    'deer',
-    // 'delight',
-    // 'dessert',
-    'dignity',
-    'dirt',
-    // 'distribution',
-    'dust',
-
-    'economics',
-    'education',
-    'electricity',
-    // 'employment',
-    // 'energy',
-    'engineering',
-    'enjoyment',
-    // 'entertainment',
-    'envy',
-    'equipment',
-    'ethics',
-    'evidence',
-    'evolution',
-
-    // 'failure',
-    // 'faith',
-    'fame',
-    'fiction',
-    // 'fish',
-    'flour',
-    'flu',
-    'food',
-    // 'freedom',
-    // 'fruit',
-    'fuel',
-    'fun',
-    // 'funeral',
-    'furniture',
-
-    'gallows',
-    'garbage',
-    'garlic',
-    // 'gas',
-    'genetics',
-    // 'glass',
-    'gold',
-    'golf',
-    'gossip',
-    // 'grass',
-    'gratitude',
-    'grief',
-    // 'ground',
-    'guilt',
-    'gymnastics',
-
-    // 'hair',
-    'happiness',
-    'hardware',
-    'harm',
-    'hate',
-    'hatred',
-    'health',
-    'heat',
-    // 'height',
-    'help',
-    'homework',
-    'honesty',
-    'honey',
-    'hospitality',
-    'housework',
-    'humour',
-    'hunger',
-    'hydrogen',
-
-    'ice',
-    'importance',
-    'inflation',
-    'information',
-    // 'injustice',
-    'innocence',
-    // 'intelligence',
-    'iron',
-    'irony',
-
-    'jam',
-    // 'jealousy',
-    // 'jelly',
-    'jewelry',
-    // 'joy',
-    'judo',
-    // 'juice',
-    // 'justice',
-
-    'karate',
-    // 'kindness',
-    'knowledge',
-
-    // 'labour',
-    'lack',
-    // 'land',
-    'laughter',
-    'lava',
-    'leather',
-    'leisure',
-    'lightning',
-    'linguine',
-    'linguini',
-    'linguistics',
-    'literature',
-    'litter',
-    'livestock',
-    'logic',
-    'loneliness',
-    // 'love',
-    'luck',
-    'luggage',
-
-    'macaroni',
-    'machinery',
-    'magic',
-    // 'mail',
-    'management',
-    'mankind',
-    'marble',
-    'mathematics',
-    'mayonnaise',
-    'measles',
-    // 'meat',
-    // 'metal',
-    'methane',
-    'milk',
-    'minus',
-    'money',
-    // 'moose',
-    'mud',
-    'music',
-    'mumps',
-
-    'nature',
-    'news',
-    'nitrogen',
-    'nonsense',
-    'nurture',
-    'nutrition',
-
-    'obedience',
-    'obesity',
-    // 'oil',
-    'oxygen',
-
-    // 'paper',
-    // 'passion',
-    'pasta',
-    'patience',
-    // 'permission',
-    'physics',
-    'poetry',
-    'pollution',
-    'poverty',
-    // 'power',
-    'pride',
-    // 'production',
-    // 'progress',
-    // 'pronunciation',
-    'psychology',
-    'publicity',
-    'punctuation',
-
-    // 'quality',
-    // 'quantity',
-    'quartz',
-
-    'racism',
-    // 'rain',
-    // 'recreation',
-    'relaxation',
-    'reliability',
-    'research',
-    'respect',
-    'revenge',
-    'rice',
-    'rubbish',
-    'rum',
-
-    'safety',
-    // 'salad',
-    // 'salt',
-    // 'sand',
-    // 'satire',
-    'scenery',
-    'seafood',
-    'seaside',
-    'series',
-    'shame',
-    'sheep',
-    'shopping',
-    // 'silence',
-    'sleep',
-    // 'slang'
-    'smoke',
-    'smoking',
-    'snow',
-    'soap',
-    'software',
-    'soil',
-    // 'sorrow',
-    // 'soup',
-    'spaghetti',
-    // 'speed',
-    'species',
-    // 'spelling',
-    // 'sport',
-    'steam',
-    // 'strength',
-    'stuff',
-    'stupidity',
-    // 'success',
-    // 'sugar',
-    'sunshine',
-    'symmetry',
-
-    // 'tea',
-    'tennis',
-    'thirst',
-    'thunder',
-    'timber',
-    // 'time',
-    // 'toast',
-    // 'tolerance',
-    // 'trade',
-    'traffic',
-    'transportation',
-    // 'travel',
-    'trust',
-
-    // 'understanding',
-    'underwear',
-    'unemployment',
-    'unity',
-    // 'usage',
-
-    'validity',
-    'veal',
-    'vegetation',
-    'vegetarianism',
-    'vengeance',
-    'violence',
-    // 'vision',
-    'vitality',
-
-    'warmth',
-    // 'water',
-    'wealth',
-    'weather',
-    // 'weight',
-    'welfare',
-    'wheat',
-    // 'whiskey',
-    // 'width',
-    'wildlife',
-    // 'wine',
-    'wisdom',
-    // 'wood',
-    // 'wool',
-    // 'work',
-
-    // 'yeast',
-    'yoga',
-
-    'zinc',
-    'zoology'
-  ];
-
-  /**
-   * @description These rules translate from the singular form of a noun to its plural form.
-   * @private
-   */
-
-  var regex = {
-    plural : {
-      men       : new RegExp( '^(m|wom)en$'                    , 'gi' ),
-      people    : new RegExp( '(pe)ople$'                      , 'gi' ),
-      children  : new RegExp( '(child)ren$'                    , 'gi' ),
-      tia       : new RegExp( '([ti])a$'                       , 'gi' ),
-      analyses  : new RegExp( '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$','gi' ),
-      databases : new RegExp( '(database)s$'                   , 'gi' ),
-      drives    : new RegExp( '(drive)s$'                      , 'gi' ),
-      hives     : new RegExp( '(hi|ti)ves$'                    , 'gi' ),
-      curves    : new RegExp( '(curve)s$'                      , 'gi' ),
-      lrves     : new RegExp( '([lr])ves$'                     , 'gi' ),
-      aves      : new RegExp( '([a])ves$'                      , 'gi' ),
-      foves     : new RegExp( '([^fo])ves$'                    , 'gi' ),
-      movies    : new RegExp( '(m)ovies$'                      , 'gi' ),
-      aeiouyies : new RegExp( '([^aeiouy]|qu)ies$'             , 'gi' ),
-      series    : new RegExp( '(s)eries$'                      , 'gi' ),
-      xes       : new RegExp( '(x|ch|ss|sh)es$'                , 'gi' ),
-      mice      : new RegExp( '([m|l])ice$'                    , 'gi' ),
-      buses     : new RegExp( '(bus)es$'                       , 'gi' ),
-      oes       : new RegExp( '(o)es$'                         , 'gi' ),
-      shoes     : new RegExp( '(shoe)s$'                       , 'gi' ),
-      crises    : new RegExp( '(cris|ax|test)es$'              , 'gi' ),
-      octopuses : new RegExp( '(octop|vir)uses$'               , 'gi' ),
-      aliases   : new RegExp( '(alias|canvas|status|campus)es$', 'gi' ),
-      summonses : new RegExp( '^(summons|bonus)es$'            , 'gi' ),
-      oxen      : new RegExp( '^(ox)en'                        , 'gi' ),
-      matrices  : new RegExp( '(matr)ices$'                    , 'gi' ),
-      vertices  : new RegExp( '(vert|ind)ices$'                , 'gi' ),
-      feet      : new RegExp( '^feet$'                         , 'gi' ),
-      teeth     : new RegExp( '^teeth$'                        , 'gi' ),
-      geese     : new RegExp( '^geese$'                        , 'gi' ),
-      quizzes   : new RegExp( '(quiz)zes$'                     , 'gi' ),
-      whereases : new RegExp( '^(whereas)es$'                  , 'gi' ),
-      criteria  : new RegExp( '^(criteri)a$'                   , 'gi' ),
-      genera    : new RegExp( '^genera$'                       , 'gi' ),
-      ss        : new RegExp( 'ss$'                            , 'gi' ),
-      s         : new RegExp( 's$'                             , 'gi' )
-    },
-
-    singular : {
-      man       : new RegExp( '^(m|wom)an$'                  , 'gi' ),
-      person    : new RegExp( '(pe)rson$'                    , 'gi' ),
-      child     : new RegExp( '(child)$'                     , 'gi' ),
-      drive     : new RegExp( '(drive)$'                     , 'gi' ),
-      ox        : new RegExp( '^(ox)$'                       , 'gi' ),
-      axis      : new RegExp( '(ax|test)is$'                 , 'gi' ),
-      octopus   : new RegExp( '(octop|vir)us$'               , 'gi' ),
-      alias     : new RegExp( '(alias|status|canvas|campus)$', 'gi' ),
-      summons   : new RegExp( '^(summons|bonus)$'            , 'gi' ),
-      bus       : new RegExp( '(bu)s$'                       , 'gi' ),
-      buffalo   : new RegExp( '(buffal|tomat|potat)o$'       , 'gi' ),
-      tium      : new RegExp( '([ti])um$'                    , 'gi' ),
-      sis       : new RegExp( 'sis$'                         , 'gi' ),
-      ffe       : new RegExp( '(?:([^f])fe|([lr])f)$'        , 'gi' ),
-      hive      : new RegExp( '(hi|ti)ve$'                   , 'gi' ),
-      aeiouyy   : new RegExp( '([^aeiouy]|qu)y$'             , 'gi' ),
-      x         : new RegExp( '(x|ch|ss|sh)$'                , 'gi' ),
-      matrix    : new RegExp( '(matr)ix$'                    , 'gi' ),
-      vertex    : new RegExp( '(vert|ind)ex$'                , 'gi' ),
-      mouse     : new RegExp( '([m|l])ouse$'                 , 'gi' ),
-      foot      : new RegExp( '^foot$'                       , 'gi' ),
-      tooth     : new RegExp( '^tooth$'                      , 'gi' ),
-      goose     : new RegExp( '^goose$'                      , 'gi' ),
-      quiz      : new RegExp( '(quiz)$'                      , 'gi' ),
-      whereas   : new RegExp( '^(whereas)$'                  , 'gi' ),
-      criterion : new RegExp( '^(criteri)on$'                , 'gi' ),
-      genus     : new RegExp( '^genus$'                      , 'gi' ),
-      s         : new RegExp( 's$'                           , 'gi' ),
-      common    : new RegExp( '$'                            , 'gi' )
-    }
-  };
-
-  var plural_rules = [
-
-    // do not replace if its already a plural word
-    [ regex.plural.men       ],
-    [ regex.plural.people    ],
-    [ regex.plural.children  ],
-    [ regex.plural.tia       ],
-    [ regex.plural.analyses  ],
-    [ regex.plural.databases ],
-    [ regex.plural.drives    ],
-    [ regex.plural.hives     ],
-    [ regex.plural.curves    ],
-    [ regex.plural.lrves     ],
-    [ regex.plural.foves     ],
-    [ regex.plural.aeiouyies ],
-    [ regex.plural.series    ],
-    [ regex.plural.movies    ],
-    [ regex.plural.xes       ],
-    [ regex.plural.mice      ],
-    [ regex.plural.buses     ],
-    [ regex.plural.oes       ],
-    [ regex.plural.shoes     ],
-    [ regex.plural.crises    ],
-    [ regex.plural.octopuses ],
-    [ regex.plural.aliases   ],
-    [ regex.plural.summonses ],
-    [ regex.plural.oxen      ],
-    [ regex.plural.matrices  ],
-    [ regex.plural.feet      ],
-    [ regex.plural.teeth     ],
-    [ regex.plural.geese     ],
-    [ regex.plural.quizzes   ],
-    [ regex.plural.whereases ],
-    [ regex.plural.criteria  ],
-    [ regex.plural.genera    ],
-
-    // original rule
-    [ regex.singular.man      , '$1en' ],
-    [ regex.singular.person   , '$1ople' ],
-    [ regex.singular.child    , '$1ren' ],
-    [ regex.singular.drive    , '$1s' ],
-    [ regex.singular.ox       , '$1en' ],
-    [ regex.singular.axis     , '$1es' ],
-    [ regex.singular.octopus  , '$1uses' ],
-    [ regex.singular.alias    , '$1es' ],
-    [ regex.singular.summons  , '$1es' ],
-    [ regex.singular.bus      , '$1ses' ],
-    [ regex.singular.buffalo  , '$1oes' ],
-    [ regex.singular.tium     , '$1a' ],
-    [ regex.singular.sis      , 'ses' ],
-    [ regex.singular.ffe      , '$1$2ves' ],
-    [ regex.singular.hive     , '$1ves' ],
-    [ regex.singular.aeiouyy  , '$1ies' ],
-    [ regex.singular.matrix   , '$1ices' ],
-    [ regex.singular.vertex   , '$1ices' ],
-    [ regex.singular.x        , '$1es' ],
-    [ regex.singular.mouse    , '$1ice' ],
-    [ regex.singular.foot     , 'feet' ],
-    [ regex.singular.tooth    , 'teeth' ],
-    [ regex.singular.goose    , 'geese' ],
-    [ regex.singular.quiz     , '$1zes' ],
-    [ regex.singular.whereas  , '$1es' ],
-    [ regex.singular.criterion, '$1a' ],
-    [ regex.singular.genus    , 'genera' ],
-
-    [ regex.singular.s     , 's' ],
-    [ regex.singular.common, 's' ]
-  ];
-
-  /**
-   * @description These rules translate from the plural form of a noun to its singular form.
-   * @private
-   */
-  var singular_rules = [
-
-    // do not replace if its already a singular word
-    [ regex.singular.man     ],
-    [ regex.singular.person  ],
-    [ regex.singular.child   ],
-    [ regex.singular.drive   ],
-    [ regex.singular.ox      ],
-    [ regex.singular.axis    ],
-    [ regex.singular.octopus ],
-    [ regex.singular.alias   ],
-    [ regex.singular.summons ],
-    [ regex.singular.bus     ],
-    [ regex.singular.buffalo ],
-    [ regex.singular.tium    ],
-    [ regex.singular.sis     ],
-    [ regex.singular.ffe     ],
-    [ regex.singular.hive    ],
-    [ regex.singular.aeiouyy ],
-    [ regex.singular.x       ],
-    [ regex.singular.matrix  ],
-    [ regex.singular.mouse   ],
-    [ regex.singular.foot    ],
-    [ regex.singular.tooth   ],
-    [ regex.singular.goose   ],
-    [ regex.singular.quiz    ],
-    [ regex.singular.whereas ],
-    [ regex.singular.criterion ],
-    [ regex.singular.genus ],
-
-    // original rule
-    [ regex.plural.men      , '$1an' ],
-    [ regex.plural.people   , '$1rson' ],
-    [ regex.plural.children , '$1' ],
-    [ regex.plural.databases, '$1'],
-    [ regex.plural.drives   , '$1'],
-    [ regex.plural.genera   , 'genus'],
-    [ regex.plural.criteria , '$1on'],
-    [ regex.plural.tia      , '$1um' ],
-    [ regex.plural.analyses , '$1$2sis' ],
-    [ regex.plural.hives    , '$1ve' ],
-    [ regex.plural.curves   , '$1' ],
-    [ regex.plural.lrves    , '$1f' ],
-    [ regex.plural.aves     , '$1ve' ],
-    [ regex.plural.foves    , '$1fe' ],
-    [ regex.plural.movies   , '$1ovie' ],
-    [ regex.plural.aeiouyies, '$1y' ],
-    [ regex.plural.series   , '$1eries' ],
-    [ regex.plural.xes      , '$1' ],
-    [ regex.plural.mice     , '$1ouse' ],
-    [ regex.plural.buses    , '$1' ],
-    [ regex.plural.oes      , '$1' ],
-    [ regex.plural.shoes    , '$1' ],
-    [ regex.plural.crises   , '$1is' ],
-    [ regex.plural.octopuses, '$1us' ],
-    [ regex.plural.aliases  , '$1' ],
-    [ regex.plural.summonses, '$1' ],
-    [ regex.plural.oxen     , '$1' ],
-    [ regex.plural.matrices , '$1ix' ],
-    [ regex.plural.vertices , '$1ex' ],
-    [ regex.plural.feet     , 'foot' ],
-    [ regex.plural.teeth    , 'tooth' ],
-    [ regex.plural.geese    , 'goose' ],
-    [ regex.plural.quizzes  , '$1' ],
-    [ regex.plural.whereases, '$1' ],
-
-    [ regex.plural.ss, 'ss' ],
-    [ regex.plural.s , '' ]
-  ];
-
-  /**
-   * @description This is a list of words that should not be capitalized for title case.
-   * @private
-   */
-  var non_titlecased_words = [
-    'and', 'or', 'nor', 'a', 'an', 'the', 'so', 'but', 'to', 'of', 'at','by',
-    'from', 'into', 'on', 'onto', 'off', 'out', 'in', 'over', 'with', 'for'
-  ];
-
-  /**
-   * @description These are regular expressions used for converting between String formats.
-   * @private
-   */
-  var id_suffix         = new RegExp( '(_ids|_id)$', 'g' );
-  var underbar          = new RegExp( '_', 'g' );
-  var space_or_underbar = new RegExp( '[\ _]', 'g' );
-  var uppercase         = new RegExp( '([A-Z])', 'g' );
-  var underbar_prefix   = new RegExp( '^_' );
-
-  var inflector = {
-
-  /**
-   * A helper method that applies rules based replacement to a String.
-   * @private
-   * @function
-   * @param {String} str String to modify and return based on the passed rules.
-   * @param {Array: [RegExp, String]} rules Regexp to match paired with String to use for replacement
-   * @param {Array: [String]} skip Strings to skip if they match
-   * @param {String} override String to return as though this method succeeded (used to conform to APIs)
-   * @returns {String} Return passed String modified by passed rules.
-   * @example
-   *
-   *     this._apply_rules( 'cows', singular_rules ); // === 'cow'
-   */
-    _apply_rules : function ( str, rules, skip, override ){
-      if( override ){
-        str = override;
-      }else{
-        var ignore = ( inflector.indexOf( skip, str.toLowerCase()) > -1 );
-
-        if( !ignore ){
-          var i = 0;
-          var j = rules.length;
-
-          for( ; i < j; i++ ){
-            if( str.match( rules[ i ][ 0 ])){
-              if( rules[ i ][ 1 ] !== undefined ){
-                str = str.replace( rules[ i ][ 0 ], rules[ i ][ 1 ]);
-              }
-              break;
-            }
-          }
-        }
-      }
-
-      return str;
-    },
-
-
-
-  /**
-   * This lets us detect if an Array contains a given element.
-   * @public
-   * @function
-   * @param {Array} arr The subject array.
-   * @param {Object} item Object to locate in the Array.
-   * @param {Number} from_index Starts checking from this position in the Array.(optional)
-   * @param {Function} compare_func Function used to compare Array item vs passed item.(optional)
-   * @returns {Number} Return index position in the Array of the passed item.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.indexOf([ 'hi','there' ], 'guys' ); // === -1
-   *     inflection.indexOf([ 'hi','there' ], 'hi' ); // === 0
-   */
-    indexOf : function ( arr, item, from_index, compare_func ){
-      if( !from_index ){
-        from_index = -1;
-      }
-
-      var index = -1;
-      var i     = from_index;
-      var j     = arr.length;
-
-      for( ; i < j; i++ ){
-        if( arr[ i ]  === item || compare_func && compare_func( arr[ i ], item )){
-          index = i;
-          break;
-        }
-      }
-
-      return index;
-    },
-
-
-
-  /**
-   * This function adds pluralization support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {String} plural Overrides normal output with said String.(optional)
-   * @returns {String} Singular English language nouns are returned in plural form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.pluralize( 'person' ); // === 'people'
-   *     inflection.pluralize( 'octopus' ); // === 'octopuses'
-   *     inflection.pluralize( 'Hat' ); // === 'Hats'
-   *     inflection.pluralize( 'person', 'guys' ); // === 'guys'
-   */
-    pluralize : function ( str, plural ){
-      return inflector._apply_rules( str, plural_rules, uncountable_words, plural );
-    },
-
-
-
-  /**
-   * This function adds singularization support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {String} singular Overrides normal output with said String.(optional)
-   * @returns {String} Plural English language nouns are returned in singular form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.singularize( 'people' ); // === 'person'
-   *     inflection.singularize( 'octopuses' ); // === 'octopus'
-   *     inflection.singularize( 'Hats' ); // === 'Hat'
-   *     inflection.singularize( 'guys', 'person' ); // === 'person'
-   */
-    singularize : function ( str, singular ){
-      return inflector._apply_rules( str, singular_rules, uncountable_words, singular );
-    },
-
-
-  /**
-   * This function will pluralize or singularlize a String appropriately based on a number value
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Number} count The number to base pluralization off of.
-   * @param {String} singular Overrides normal output with said String.(optional)
-   * @param {String} plural Overrides normal output with said String.(optional)
-   * @returns {String} English language nouns are returned in the plural or singular form based on the count.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.inflect( 'people' 1 ); // === 'person'
-   *     inflection.inflect( 'octopuses' 1 ); // === 'octopus'
-   *     inflection.inflect( 'Hats' 1 ); // === 'Hat'
-   *     inflection.inflect( 'guys', 1 , 'person' ); // === 'person'
-   *     inflection.inflect( 'inches', 1.5 ); // === 'inches'
-   *     inflection.inflect( 'person', 2 ); // === 'people'
-   *     inflection.inflect( 'octopus', 2 ); // === 'octopuses'
-   *     inflection.inflect( 'Hat', 2 ); // === 'Hats'
-   *     inflection.inflect( 'person', 2, null, 'guys' ); // === 'guys'
-   */
-    inflect : function ( str, count, singular, plural ){
-      count = parseFloat( count, 10 );
-
-      if( isNaN( count )) return str;
-
-      if( count === 1 ){
-        return inflector._apply_rules( str, singular_rules, uncountable_words, singular );
-      }else{
-        return inflector._apply_rules( str, plural_rules, uncountable_words, plural );
-      }
-    },
-
-
-
-  /**
-   * This function adds camelization support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Boolean} low_first_letter Default is to capitalize the first letter of the results.(optional)
-   *                                 Passing true will lowercase it.
-   * @returns {String} Lower case underscored words will be returned in camel case.
-   *                  additionally '/' is translated to '::'
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.camelize( 'message_properties' ); // === 'MessageProperties'
-   *     inflection.camelize( 'message_properties', true ); // === 'messageProperties'
-   */
-    camelize : function ( str, low_first_letter ){
-      var str_path = str.split( '/' );
-      var i        = 0;
-      var j        = str_path.length;
-      var str_arr, init_x, k, l, first;
-
-      for( ; i < j; i++ ){
-        str_arr = str_path[ i ].split( '_' );
-        k       = 0;
-        l       = str_arr.length;
-
-        for( ; k < l; k++ ){
-          if( k !== 0 ){
-            str_arr[ k ] = str_arr[ k ].toLowerCase();
-          }
-
-          first = str_arr[ k ].charAt( 0 );
-          first = low_first_letter && i === 0 && k === 0
-            ? first.toLowerCase() : first.toUpperCase();
-          str_arr[ k ] = first + str_arr[ k ].substring( 1 );
-        }
-
-        str_path[ i ] = str_arr.join( '' );
-      }
-
-      return str_path.join( '::' );
-    },
-
-
-
-  /**
-   * This function adds underscore support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Boolean} all_upper_case Default is to lowercase and add underscore prefix.(optional)
-   *                  Passing true will return as entered.
-   * @returns {String} Camel cased words are returned as lower cased and underscored.
-   *                  additionally '::' is translated to '/'.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.underscore( 'MessageProperties' ); // === 'message_properties'
-   *     inflection.underscore( 'messageProperties' ); // === 'message_properties'
-   *     inflection.underscore( 'MP', true ); // === 'MP'
-   */
-    underscore : function ( str, all_upper_case ){
-      if( all_upper_case && str === str.toUpperCase()) return str;
-
-      var str_path = str.split( '::' );
-      var i        = 0;
-      var j        = str_path.length;
-
-      for( ; i < j; i++ ){
-        str_path[ i ] = str_path[ i ].replace( uppercase, '_$1' );
-        str_path[ i ] = str_path[ i ].replace( underbar_prefix, '' );
-      }
-
-      return str_path.join( '/' ).toLowerCase();
-    },
-
-
-
-  /**
-   * This function adds humanize support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Boolean} low_first_letter Default is to capitalize the first letter of the results.(optional)
-   *                                 Passing true will lowercase it.
-   * @returns {String} Lower case underscored words will be returned in humanized form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.humanize( 'message_properties' ); // === 'Message properties'
-   *     inflection.humanize( 'message_properties', true ); // === 'message properties'
-   */
-    humanize : function ( str, low_first_letter ){
-      str = str.toLowerCase();
-      str = str.replace( id_suffix, '' );
-      str = str.replace( underbar, ' ' );
-
-      if( !low_first_letter ){
-        str = inflector.capitalize( str );
-      }
-
-      return str;
-    },
-
-
-
-  /**
-   * This function adds capitalization support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} All characters will be lower case and the first will be upper.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.capitalize( 'message_properties' ); // === 'Message_properties'
-   *     inflection.capitalize( 'message properties', true ); // === 'Message properties'
-   */
-    capitalize : function ( str ){
-      str = str.toLowerCase();
-
-      return str.substring( 0, 1 ).toUpperCase() + str.substring( 1 );
-    },
-
-
-
-  /**
-   * This function replaces underscores with dashes in the string.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Replaces all spaces or underscores with dashes.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.dasherize( 'message_properties' ); // === 'message-properties'
-   *     inflection.dasherize( 'Message Properties' ); // === 'Message-Properties'
-   */
-    dasherize : function ( str ){
-      return str.replace( space_or_underbar, '-' );
-    },
-
-
-
-  /**
-   * This function adds titleize support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Capitalizes words as you would for a book title.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.titleize( 'message_properties' ); // === 'Message Properties'
-   *     inflection.titleize( 'message properties to keep' ); // === 'Message Properties to Keep'
-   */
-    titleize : function ( str ){
-      str         = str.toLowerCase().replace( underbar, ' ' );
-      var str_arr = str.split( ' ' );
-      var i       = 0;
-      var j       = str_arr.length;
-      var d, k, l;
-
-      for( ; i < j; i++ ){
-        d = str_arr[ i ].split( '-' );
-        k = 0;
-        l = d.length;
-
-        for( ; k < l; k++){
-          if( inflector.indexOf( non_titlecased_words, d[ k ].toLowerCase()) < 0 ){
-            d[ k ] = inflector.capitalize( d[ k ]);
-          }
-        }
-
-        str_arr[ i ] = d.join( '-' );
-      }
-
-      str = str_arr.join( ' ' );
-      str = str.substring( 0, 1 ).toUpperCase() + str.substring( 1 );
-
-      return str;
-    },
-
-
-
-  /**
-   * This function adds demodulize support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Removes module names leaving only class names.(Ruby style)
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.demodulize( 'Message::Bus::Properties' ); // === 'Properties'
-   */
-    demodulize : function ( str ){
-      var str_arr = str.split( '::' );
-
-      return str_arr[ str_arr.length - 1 ];
-    },
-
-
-
-  /**
-   * This function adds tableize support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Return camel cased words into their underscored plural form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.tableize( 'MessageBusProperty' ); // === 'message_bus_properties'
-   */
-    tableize : function ( str ){
-      str = inflector.underscore( str );
-      str = inflector.pluralize( str );
-
-      return str;
-    },
-
-
-
-  /**
-   * This function adds classification support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Underscored plural nouns become the camel cased singular form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.classify( 'message_bus_properties' ); // === 'MessageBusProperty'
-   */
-    classify : function ( str ){
-      str = inflector.camelize( str );
-      str = inflector.singularize( str );
-
-      return str;
-    },
-
-
-
-  /**
-   * This function adds foreign key support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Boolean} drop_id_ubar Default is to seperate id with an underbar at the end of the class name,
-                                 you can pass true to skip it.(optional)
-   * @returns {String} Underscored plural nouns become the camel cased singular form.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.foreign_key( 'MessageBusProperty' ); // === 'message_bus_property_id'
-   *     inflection.foreign_key( 'MessageBusProperty', true ); // === 'message_bus_propertyid'
-   */
-    foreign_key : function ( str, drop_id_ubar ){
-      str = inflector.demodulize( str );
-      str = inflector.underscore( str ) + (( drop_id_ubar ) ? ( '' ) : ( '_' )) + 'id';
-
-      return str;
-    },
-
-
-
-  /**
-   * This function adds ordinalize support to every String object.
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @returns {String} Return all found numbers their sequence like '22nd'.
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.ordinalize( 'the 1 pitch' ); // === 'the 1st pitch'
-   */
-    ordinalize : function ( str ){
-      var str_arr = str.split( ' ' );
-      var i       = 0;
-      var j       = str_arr.length;
-
-      for( ; i < j; i++ ){
-        var k = parseInt( str_arr[ i ], 10 );
-
-        if( !isNaN( k )){
-          var ltd = str_arr[ i ].substring( str_arr[ i ].length - 2 );
-          var ld  = str_arr[ i ].substring( str_arr[ i ].length - 1 );
-          var suf = 'th';
-
-          if( ltd != '11' && ltd != '12' && ltd != '13' ){
-            if( ld === '1' ){
-              suf = 'st';
-            }else if( ld === '2' ){
-              suf = 'nd';
-            }else if( ld === '3' ){
-              suf = 'rd';
-            }
-          }
-
-          str_arr[ i ] += suf;
-        }
-      }
-
-      return str_arr.join( ' ' );
-    },
-
-  /**
-   * This function performs multiple inflection methods on a string
-   * @public
-   * @function
-   * @param {String} str The subject string.
-   * @param {Array} arr An array of inflection methods.
-   * @returns {String}
-   * @example
-   *
-   *     var inflection = require( 'inflection' );
-   *
-   *     inflection.transform( 'all job', [ 'pluralize', 'capitalize', 'dasherize' ]); // === 'All-jobs'
-   */
-    transform : function ( str, arr ){
-      var i = 0;
-      var j = arr.length;
-
-      for( ;i < j; i++ ){
-        var method = arr[ i ];
-
-        if( inflector.hasOwnProperty( method )){
-          str = inflector[ method ]( str );
-        }
-      }
-
-      return str;
-    }
-  };
-
-/**
- * @public
- */
-  inflector.version = '1.13.1';
-
-  return inflector;
-}));
Index: ckend/node_modules/inflection/package.json
===================================================================
--- backend/node_modules/inflection/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-{
-  "name": "inflection",
-  "version": "1.13.4",
-  "description": "A port of inflection-js to node.js module",
-  "keywords": [
-    "inflection",
-    "inflections",
-    "inflection-js",
-    "pluralize",
-    "singularize",
-    "camelize",
-    "underscore",
-    "humanize",
-    "capitalize",
-    "dasherize",
-    "titleize",
-    "demodulize",
-    "tableize",
-    "classify",
-    "foreign_key",
-    "ordinalize"
-  ],
-  "author": "dreamerslab <ben@dreamerslab.com>",
-  "contributors": [
-    {
-      "name": "Ryan Schuft",
-      "email": "ryan.schuft@gmail.com"
-    },
-    {
-      "name": "Ben Lin",
-      "email": "ben@dreamerslab.com"
-    },
-    {
-      "name": "Lance Pollard",
-      "email": "lancejpollard@gmail.com"
-    },
-    {
-      "name": "Dane O'Connor",
-      "email": "dane.oconnor@gmail.com"
-    },
-    {
-      "name": "David Miró",
-      "email": "lite.3engine@gmail.com"
-    },
-    {
-      "name": "brandondewitt"
-    },
-    {
-      "name": "luk3thomas"
-    },
-    {
-      "name": "Marcel Klehr"
-    },
-    {
-      "name": "Raymond Feng"
-    },
-    {
-      "name": "Kane Cohen",
-      "email": "kanecohen@gmail.com"
-    },
-    {
-      "name": "Gianni Chiappetta",
-      "email": "gianni@runlevel6.org"
-    },
-    {
-      "name": "Eric Brody"
-    },
-    {
-      "name": "overlookmotel"
-    },
-    {
-      "name": "Patrick Mowrer"
-    },
-    {
-      "name": "Greger Olsson"
-    },
-    {
-      "name": "Jason Crawford",
-      "email": "jason@jasoncrawford.org"
-    },
-    {
-      "name": "Ray Myers",
-      "email": "ray.myers@gmail.com"
-    },
-    {
-      "name": "Dillon Shook",
-      "email": "dshook@alumni.nmt.edu"
-    },
-    {
-      "name": "Patrick Kuen",
-      "email": "p.kuen@cloudacy.com"
-    }
-  ],
-  "devDependencies": {
-    "terser": "^5.15.0",
-    "vitest": "^0.23.4"
-  },
-  "main": "./lib/inflection.js",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/dreamerslab/node.inflection.git"
-  },
-  "engines": [
-    "node >= 0.4.0"
-  ],
-  "license": "MIT",
-  "scripts": {
-    "test": "vitest",
-    "minify": "terser lib/inflection.js -o inflection.min.js -c -m"
-  }
-}
Index: ckend/node_modules/inflection/vite.config.js
===================================================================
--- backend/node_modules/inflection/vite.config.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-/// <reference types="vitest" />
-import { defineConfig } from 'vite'
-
-export default defineConfig({
-  test: {
-  },
-})
Index: ckend/node_modules/lodash/LICENSE
===================================================================
--- backend/node_modules/lodash/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
Index: ckend/node_modules/lodash/README.md
===================================================================
--- backend/node_modules/lodash/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-# lodash v4.17.21
-
-The [Lodash](https://lodash.com/) library exported as [Node.js](https://nodejs.org/) modules.
-
-## Installation
-
-Using npm:
-```shell
-$ npm i -g npm
-$ npm i --save lodash
-```
-
-In Node.js:
-```js
-// Load the full build.
-var _ = require('lodash');
-// Load the core build.
-var _ = require('lodash/core');
-// Load the FP build for immutable auto-curried iteratee-first data-last methods.
-var fp = require('lodash/fp');
-
-// Load method categories.
-var array = require('lodash/array');
-var object = require('lodash/fp/object');
-
-// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
-var at = require('lodash/at');
-var curryN = require('lodash/fp/curryN');
-```
-
-See the [package source](https://github.com/lodash/lodash/tree/4.17.21-npm) for more details.
-
-**Note:**<br>
-Install [n_](https://www.npmjs.com/package/n_) for Lodash use in the Node.js < 6 REPL.
-
-## Support
-
-Tested in Chrome 74-75, Firefox 66-67, IE 11, Edge 18, Safari 11-12, & Node.js 8-12.<br>
-Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available.
Index: ckend/node_modules/lodash/_DataView.js
===================================================================
--- backend/node_modules/lodash/_DataView.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-var getNative = require('./_getNative'),
-    root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var DataView = getNative(root, 'DataView');
-
-module.exports = DataView;
Index: ckend/node_modules/lodash/_Hash.js
===================================================================
--- backend/node_modules/lodash/_Hash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var hashClear = require('./_hashClear'),
-    hashDelete = require('./_hashDelete'),
-    hashGet = require('./_hashGet'),
-    hashHas = require('./_hashHas'),
-    hashSet = require('./_hashSet');
-
-/**
- * Creates a hash object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Hash(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
-
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
-
-// Add methods to `Hash`.
-Hash.prototype.clear = hashClear;
-Hash.prototype['delete'] = hashDelete;
-Hash.prototype.get = hashGet;
-Hash.prototype.has = hashHas;
-Hash.prototype.set = hashSet;
-
-module.exports = Hash;
Index: ckend/node_modules/lodash/_LazyWrapper.js
===================================================================
--- backend/node_modules/lodash/_LazyWrapper.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseCreate = require('./_baseCreate'),
-    baseLodash = require('./_baseLodash');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
- *
- * @private
- * @constructor
- * @param {*} value The value to wrap.
- */
-function LazyWrapper(value) {
-  this.__wrapped__ = value;
-  this.__actions__ = [];
-  this.__dir__ = 1;
-  this.__filtered__ = false;
-  this.__iteratees__ = [];
-  this.__takeCount__ = MAX_ARRAY_LENGTH;
-  this.__views__ = [];
-}
-
-// Ensure `LazyWrapper` is an instance of `baseLodash`.
-LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-LazyWrapper.prototype.constructor = LazyWrapper;
-
-module.exports = LazyWrapper;
Index: ckend/node_modules/lodash/_ListCache.js
===================================================================
--- backend/node_modules/lodash/_ListCache.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var listCacheClear = require('./_listCacheClear'),
-    listCacheDelete = require('./_listCacheDelete'),
-    listCacheGet = require('./_listCacheGet'),
-    listCacheHas = require('./_listCacheHas'),
-    listCacheSet = require('./_listCacheSet');
-
-/**
- * Creates an list cache object.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function ListCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
-
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
-
-// Add methods to `ListCache`.
-ListCache.prototype.clear = listCacheClear;
-ListCache.prototype['delete'] = listCacheDelete;
-ListCache.prototype.get = listCacheGet;
-ListCache.prototype.has = listCacheHas;
-ListCache.prototype.set = listCacheSet;
-
-module.exports = ListCache;
Index: ckend/node_modules/lodash/_LodashWrapper.js
===================================================================
--- backend/node_modules/lodash/_LodashWrapper.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseCreate = require('./_baseCreate'),
-    baseLodash = require('./_baseLodash');
-
-/**
- * The base constructor for creating `lodash` wrapper objects.
- *
- * @private
- * @param {*} value The value to wrap.
- * @param {boolean} [chainAll] Enable explicit method chain sequences.
- */
-function LodashWrapper(value, chainAll) {
-  this.__wrapped__ = value;
-  this.__actions__ = [];
-  this.__chain__ = !!chainAll;
-  this.__index__ = 0;
-  this.__values__ = undefined;
-}
-
-LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-LodashWrapper.prototype.constructor = LodashWrapper;
-
-module.exports = LodashWrapper;
Index: ckend/node_modules/lodash/_Map.js
===================================================================
--- backend/node_modules/lodash/_Map.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-var getNative = require('./_getNative'),
-    root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Map = getNative(root, 'Map');
-
-module.exports = Map;
Index: ckend/node_modules/lodash/_MapCache.js
===================================================================
--- backend/node_modules/lodash/_MapCache.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var mapCacheClear = require('./_mapCacheClear'),
-    mapCacheDelete = require('./_mapCacheDelete'),
-    mapCacheGet = require('./_mapCacheGet'),
-    mapCacheHas = require('./_mapCacheHas'),
-    mapCacheSet = require('./_mapCacheSet');
-
-/**
- * Creates a map cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function MapCache(entries) {
-  var index = -1,
-      length = entries == null ? 0 : entries.length;
-
-  this.clear();
-  while (++index < length) {
-    var entry = entries[index];
-    this.set(entry[0], entry[1]);
-  }
-}
-
-// Add methods to `MapCache`.
-MapCache.prototype.clear = mapCacheClear;
-MapCache.prototype['delete'] = mapCacheDelete;
-MapCache.prototype.get = mapCacheGet;
-MapCache.prototype.has = mapCacheHas;
-MapCache.prototype.set = mapCacheSet;
-
-module.exports = MapCache;
Index: ckend/node_modules/lodash/_Promise.js
===================================================================
--- backend/node_modules/lodash/_Promise.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-var getNative = require('./_getNative'),
-    root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Promise = getNative(root, 'Promise');
-
-module.exports = Promise;
Index: ckend/node_modules/lodash/_Set.js
===================================================================
--- backend/node_modules/lodash/_Set.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-var getNative = require('./_getNative'),
-    root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var Set = getNative(root, 'Set');
-
-module.exports = Set;
Index: ckend/node_modules/lodash/_SetCache.js
===================================================================
--- backend/node_modules/lodash/_SetCache.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var MapCache = require('./_MapCache'),
-    setCacheAdd = require('./_setCacheAdd'),
-    setCacheHas = require('./_setCacheHas');
-
-/**
- *
- * Creates an array cache object to store unique values.
- *
- * @private
- * @constructor
- * @param {Array} [values] The values to cache.
- */
-function SetCache(values) {
-  var index = -1,
-      length = values == null ? 0 : values.length;
-
-  this.__data__ = new MapCache;
-  while (++index < length) {
-    this.add(values[index]);
-  }
-}
-
-// Add methods to `SetCache`.
-SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-SetCache.prototype.has = setCacheHas;
-
-module.exports = SetCache;
Index: ckend/node_modules/lodash/_Stack.js
===================================================================
--- backend/node_modules/lodash/_Stack.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var ListCache = require('./_ListCache'),
-    stackClear = require('./_stackClear'),
-    stackDelete = require('./_stackDelete'),
-    stackGet = require('./_stackGet'),
-    stackHas = require('./_stackHas'),
-    stackSet = require('./_stackSet');
-
-/**
- * Creates a stack cache object to store key-value pairs.
- *
- * @private
- * @constructor
- * @param {Array} [entries] The key-value pairs to cache.
- */
-function Stack(entries) {
-  var data = this.__data__ = new ListCache(entries);
-  this.size = data.size;
-}
-
-// Add methods to `Stack`.
-Stack.prototype.clear = stackClear;
-Stack.prototype['delete'] = stackDelete;
-Stack.prototype.get = stackGet;
-Stack.prototype.has = stackHas;
-Stack.prototype.set = stackSet;
-
-module.exports = Stack;
Index: ckend/node_modules/lodash/_Symbol.js
===================================================================
--- backend/node_modules/lodash/_Symbol.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var root = require('./_root');
-
-/** Built-in value references. */
-var Symbol = root.Symbol;
-
-module.exports = Symbol;
Index: ckend/node_modules/lodash/_Uint8Array.js
===================================================================
--- backend/node_modules/lodash/_Uint8Array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var root = require('./_root');
-
-/** Built-in value references. */
-var Uint8Array = root.Uint8Array;
-
-module.exports = Uint8Array;
Index: ckend/node_modules/lodash/_WeakMap.js
===================================================================
--- backend/node_modules/lodash/_WeakMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-var getNative = require('./_getNative'),
-    root = require('./_root');
-
-/* Built-in method references that are verified to be native. */
-var WeakMap = getNative(root, 'WeakMap');
-
-module.exports = WeakMap;
Index: ckend/node_modules/lodash/_apply.js
===================================================================
--- backend/node_modules/lodash/_apply.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * A faster alternative to `Function#apply`, this function invokes `func`
- * with the `this` binding of `thisArg` and the arguments of `args`.
- *
- * @private
- * @param {Function} func The function to invoke.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} args The arguments to invoke `func` with.
- * @returns {*} Returns the result of `func`.
- */
-function apply(func, thisArg, args) {
-  switch (args.length) {
-    case 0: return func.call(thisArg);
-    case 1: return func.call(thisArg, args[0]);
-    case 2: return func.call(thisArg, args[0], args[1]);
-    case 3: return func.call(thisArg, args[0], args[1], args[2]);
-  }
-  return func.apply(thisArg, args);
-}
-
-module.exports = apply;
Index: ckend/node_modules/lodash/_arrayAggregator.js
===================================================================
--- backend/node_modules/lodash/_arrayAggregator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * A specialized version of `baseAggregator` for arrays.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
-function arrayAggregator(array, setter, iteratee, accumulator) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    var value = array[index];
-    setter(accumulator, value, iteratee(value), array);
-  }
-  return accumulator;
-}
-
-module.exports = arrayAggregator;
Index: ckend/node_modules/lodash/_arrayEach.js
===================================================================
--- backend/node_modules/lodash/_arrayEach.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * A specialized version of `_.forEach` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
-function arrayEach(array, iteratee) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    if (iteratee(array[index], index, array) === false) {
-      break;
-    }
-  }
-  return array;
-}
-
-module.exports = arrayEach;
Index: ckend/node_modules/lodash/_arrayEachRight.js
===================================================================
--- backend/node_modules/lodash/_arrayEachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * A specialized version of `_.forEachRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns `array`.
- */
-function arrayEachRight(array, iteratee) {
-  var length = array == null ? 0 : array.length;
-
-  while (length--) {
-    if (iteratee(array[length], length, array) === false) {
-      break;
-    }
-  }
-  return array;
-}
-
-module.exports = arrayEachRight;
Index: ckend/node_modules/lodash/_arrayEvery.js
===================================================================
--- backend/node_modules/lodash/_arrayEvery.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * A specialized version of `_.every` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- *  else `false`.
- */
-function arrayEvery(array, predicate) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    if (!predicate(array[index], index, array)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-module.exports = arrayEvery;
Index: ckend/node_modules/lodash/_arrayFilter.js
===================================================================
--- backend/node_modules/lodash/_arrayFilter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/**
- * A specialized version of `_.filter` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
-function arrayFilter(array, predicate) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      resIndex = 0,
-      result = [];
-
-  while (++index < length) {
-    var value = array[index];
-    if (predicate(value, index, array)) {
-      result[resIndex++] = value;
-    }
-  }
-  return result;
-}
-
-module.exports = arrayFilter;
Index: ckend/node_modules/lodash/_arrayIncludes.js
===================================================================
--- backend/node_modules/lodash/_arrayIncludes.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * A specialized version of `_.includes` for arrays without support for
- * specifying an index to search from.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludes(array, value) {
-  var length = array == null ? 0 : array.length;
-  return !!length && baseIndexOf(array, value, 0) > -1;
-}
-
-module.exports = arrayIncludes;
Index: ckend/node_modules/lodash/_arrayIncludesWith.js
===================================================================
--- backend/node_modules/lodash/_arrayIncludesWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * This function is like `arrayIncludes` except that it accepts a comparator.
- *
- * @private
- * @param {Array} [array] The array to inspect.
- * @param {*} target The value to search for.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {boolean} Returns `true` if `target` is found, else `false`.
- */
-function arrayIncludesWith(array, value, comparator) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    if (comparator(value, array[index])) {
-      return true;
-    }
-  }
-  return false;
-}
-
-module.exports = arrayIncludesWith;
Index: ckend/node_modules/lodash/_arrayLikeKeys.js
===================================================================
--- backend/node_modules/lodash/_arrayLikeKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var baseTimes = require('./_baseTimes'),
-    isArguments = require('./isArguments'),
-    isArray = require('./isArray'),
-    isBuffer = require('./isBuffer'),
-    isIndex = require('./_isIndex'),
-    isTypedArray = require('./isTypedArray');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an array of the enumerable property names of the array-like `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @param {boolean} inherited Specify returning inherited property names.
- * @returns {Array} Returns the array of property names.
- */
-function arrayLikeKeys(value, inherited) {
-  var isArr = isArray(value),
-      isArg = !isArr && isArguments(value),
-      isBuff = !isArr && !isArg && isBuffer(value),
-      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
-      skipIndexes = isArr || isArg || isBuff || isType,
-      result = skipIndexes ? baseTimes(value.length, String) : [],
-      length = result.length;
-
-  for (var key in value) {
-    if ((inherited || hasOwnProperty.call(value, key)) &&
-        !(skipIndexes && (
-           // Safari 9 has enumerable `arguments.length` in strict mode.
-           key == 'length' ||
-           // Node.js 0.10 has enumerable non-index properties on buffers.
-           (isBuff && (key == 'offset' || key == 'parent')) ||
-           // PhantomJS 2 has enumerable non-index properties on typed arrays.
-           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
-           // Skip index properties.
-           isIndex(key, length)
-        ))) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = arrayLikeKeys;
Index: ckend/node_modules/lodash/_arrayMap.js
===================================================================
--- backend/node_modules/lodash/_arrayMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * A specialized version of `_.map` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function arrayMap(array, iteratee) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      result = Array(length);
-
-  while (++index < length) {
-    result[index] = iteratee(array[index], index, array);
-  }
-  return result;
-}
-
-module.exports = arrayMap;
Index: ckend/node_modules/lodash/_arrayPush.js
===================================================================
--- backend/node_modules/lodash/_arrayPush.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
-function arrayPush(array, values) {
-  var index = -1,
-      length = values.length,
-      offset = array.length;
-
-  while (++index < length) {
-    array[offset + index] = values[index];
-  }
-  return array;
-}
-
-module.exports = arrayPush;
Index: ckend/node_modules/lodash/_arrayReduce.js
===================================================================
--- backend/node_modules/lodash/_arrayReduce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/**
- * A specialized version of `_.reduce` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the first element of `array` as
- *  the initial value.
- * @returns {*} Returns the accumulated value.
- */
-function arrayReduce(array, iteratee, accumulator, initAccum) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  if (initAccum && length) {
-    accumulator = array[++index];
-  }
-  while (++index < length) {
-    accumulator = iteratee(accumulator, array[index], index, array);
-  }
-  return accumulator;
-}
-
-module.exports = arrayReduce;
Index: ckend/node_modules/lodash/_arrayReduceRight.js
===================================================================
--- backend/node_modules/lodash/_arrayReduceRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-/**
- * A specialized version of `_.reduceRight` for arrays without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @param {boolean} [initAccum] Specify using the last element of `array` as
- *  the initial value.
- * @returns {*} Returns the accumulated value.
- */
-function arrayReduceRight(array, iteratee, accumulator, initAccum) {
-  var length = array == null ? 0 : array.length;
-  if (initAccum && length) {
-    accumulator = array[--length];
-  }
-  while (length--) {
-    accumulator = iteratee(accumulator, array[length], length, array);
-  }
-  return accumulator;
-}
-
-module.exports = arrayReduceRight;
Index: ckend/node_modules/lodash/_arraySample.js
===================================================================
--- backend/node_modules/lodash/_arraySample.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var baseRandom = require('./_baseRandom');
-
-/**
- * A specialized version of `_.sample` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @returns {*} Returns the random element.
- */
-function arraySample(array) {
-  var length = array.length;
-  return length ? array[baseRandom(0, length - 1)] : undefined;
-}
-
-module.exports = arraySample;
Index: ckend/node_modules/lodash/_arraySampleSize.js
===================================================================
--- backend/node_modules/lodash/_arraySampleSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    copyArray = require('./_copyArray'),
-    shuffleSelf = require('./_shuffleSelf');
-
-/**
- * A specialized version of `_.sampleSize` for arrays.
- *
- * @private
- * @param {Array} array The array to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
-function arraySampleSize(array, n) {
-  return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
-}
-
-module.exports = arraySampleSize;
Index: ckend/node_modules/lodash/_arrayShuffle.js
===================================================================
--- backend/node_modules/lodash/_arrayShuffle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var copyArray = require('./_copyArray'),
-    shuffleSelf = require('./_shuffleSelf');
-
-/**
- * A specialized version of `_.shuffle` for arrays.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
-function arrayShuffle(array) {
-  return shuffleSelf(copyArray(array));
-}
-
-module.exports = arrayShuffle;
Index: ckend/node_modules/lodash/_arraySome.js
===================================================================
--- backend/node_modules/lodash/_arraySome.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * A specialized version of `_.some` for arrays without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} [array] The array to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- *  else `false`.
- */
-function arraySome(array, predicate) {
-  var index = -1,
-      length = array == null ? 0 : array.length;
-
-  while (++index < length) {
-    if (predicate(array[index], index, array)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-module.exports = arraySome;
Index: ckend/node_modules/lodash/_asciiSize.js
===================================================================
--- backend/node_modules/lodash/_asciiSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-var baseProperty = require('./_baseProperty');
-
-/**
- * Gets the size of an ASCII `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-var asciiSize = baseProperty('length');
-
-module.exports = asciiSize;
Index: ckend/node_modules/lodash/_asciiToArray.js
===================================================================
--- backend/node_modules/lodash/_asciiToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-/**
- * Converts an ASCII `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function asciiToArray(string) {
-  return string.split('');
-}
-
-module.exports = asciiToArray;
Index: ckend/node_modules/lodash/_asciiWords.js
===================================================================
--- backend/node_modules/lodash/_asciiWords.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/** Used to match words composed of alphanumeric characters. */
-var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
-
-/**
- * Splits an ASCII `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
-function asciiWords(string) {
-  return string.match(reAsciiWord) || [];
-}
-
-module.exports = asciiWords;
Index: ckend/node_modules/lodash/_assignMergeValue.js
===================================================================
--- backend/node_modules/lodash/_assignMergeValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    eq = require('./eq');
-
-/**
- * This function is like `assignValue` except that it doesn't assign
- * `undefined` values.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignMergeValue(object, key, value) {
-  if ((value !== undefined && !eq(object[key], value)) ||
-      (value === undefined && !(key in object))) {
-    baseAssignValue(object, key, value);
-  }
-}
-
-module.exports = assignMergeValue;
Index: ckend/node_modules/lodash/_assignValue.js
===================================================================
--- backend/node_modules/lodash/_assignValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    eq = require('./eq');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns `value` to `key` of `object` if the existing value is not equivalent
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function assignValue(object, key, value) {
-  var objValue = object[key];
-  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-      (value === undefined && !(key in object))) {
-    baseAssignValue(object, key, value);
-  }
-}
-
-module.exports = assignValue;
Index: ckend/node_modules/lodash/_assocIndexOf.js
===================================================================
--- backend/node_modules/lodash/_assocIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var eq = require('./eq');
-
-/**
- * Gets the index at which the `key` is found in `array` of key-value pairs.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} key The key to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function assocIndexOf(array, key) {
-  var length = array.length;
-  while (length--) {
-    if (eq(array[length][0], key)) {
-      return length;
-    }
-  }
-  return -1;
-}
-
-module.exports = assocIndexOf;
Index: ckend/node_modules/lodash/_baseAggregator.js
===================================================================
--- backend/node_modules/lodash/_baseAggregator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * Aggregates elements of `collection` on `accumulator` with keys transformed
- * by `iteratee` and values set by `setter`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform keys.
- * @param {Object} accumulator The initial aggregated object.
- * @returns {Function} Returns `accumulator`.
- */
-function baseAggregator(collection, setter, iteratee, accumulator) {
-  baseEach(collection, function(value, key, collection) {
-    setter(accumulator, value, iteratee(value), collection);
-  });
-  return accumulator;
-}
-
-module.exports = baseAggregator;
Index: ckend/node_modules/lodash/_baseAssign.js
===================================================================
--- backend/node_modules/lodash/_baseAssign.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var copyObject = require('./_copyObject'),
-    keys = require('./keys');
-
-/**
- * The base implementation of `_.assign` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssign(object, source) {
-  return object && copyObject(source, keys(source), object);
-}
-
-module.exports = baseAssign;
Index: ckend/node_modules/lodash/_baseAssignIn.js
===================================================================
--- backend/node_modules/lodash/_baseAssignIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var copyObject = require('./_copyObject'),
-    keysIn = require('./keysIn');
-
-/**
- * The base implementation of `_.assignIn` without support for multiple sources
- * or `customizer` functions.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @returns {Object} Returns `object`.
- */
-function baseAssignIn(object, source) {
-  return object && copyObject(source, keysIn(source), object);
-}
-
-module.exports = baseAssignIn;
Index: ckend/node_modules/lodash/_baseAssignValue.js
===================================================================
--- backend/node_modules/lodash/_baseAssignValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var defineProperty = require('./_defineProperty');
-
-/**
- * The base implementation of `assignValue` and `assignMergeValue` without
- * value checks.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {string} key The key of the property to assign.
- * @param {*} value The value to assign.
- */
-function baseAssignValue(object, key, value) {
-  if (key == '__proto__' && defineProperty) {
-    defineProperty(object, key, {
-      'configurable': true,
-      'enumerable': true,
-      'value': value,
-      'writable': true
-    });
-  } else {
-    object[key] = value;
-  }
-}
-
-module.exports = baseAssignValue;
Index: ckend/node_modules/lodash/_baseAt.js
===================================================================
--- backend/node_modules/lodash/_baseAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var get = require('./get');
-
-/**
- * The base implementation of `_.at` without support for individual paths.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {string[]} paths The property paths to pick.
- * @returns {Array} Returns the picked elements.
- */
-function baseAt(object, paths) {
-  var index = -1,
-      length = paths.length,
-      result = Array(length),
-      skip = object == null;
-
-  while (++index < length) {
-    result[index] = skip ? undefined : get(object, paths[index]);
-  }
-  return result;
-}
-
-module.exports = baseAt;
Index: ckend/node_modules/lodash/_baseClamp.js
===================================================================
--- backend/node_modules/lodash/_baseClamp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * The base implementation of `_.clamp` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- */
-function baseClamp(number, lower, upper) {
-  if (number === number) {
-    if (upper !== undefined) {
-      number = number <= upper ? number : upper;
-    }
-    if (lower !== undefined) {
-      number = number >= lower ? number : lower;
-    }
-  }
-  return number;
-}
-
-module.exports = baseClamp;
Index: ckend/node_modules/lodash/_baseClone.js
===================================================================
--- backend/node_modules/lodash/_baseClone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,166 +1,0 @@
-var Stack = require('./_Stack'),
-    arrayEach = require('./_arrayEach'),
-    assignValue = require('./_assignValue'),
-    baseAssign = require('./_baseAssign'),
-    baseAssignIn = require('./_baseAssignIn'),
-    cloneBuffer = require('./_cloneBuffer'),
-    copyArray = require('./_copyArray'),
-    copySymbols = require('./_copySymbols'),
-    copySymbolsIn = require('./_copySymbolsIn'),
-    getAllKeys = require('./_getAllKeys'),
-    getAllKeysIn = require('./_getAllKeysIn'),
-    getTag = require('./_getTag'),
-    initCloneArray = require('./_initCloneArray'),
-    initCloneByTag = require('./_initCloneByTag'),
-    initCloneObject = require('./_initCloneObject'),
-    isArray = require('./isArray'),
-    isBuffer = require('./isBuffer'),
-    isMap = require('./isMap'),
-    isObject = require('./isObject'),
-    isSet = require('./isSet'),
-    keys = require('./keys'),
-    keysIn = require('./keysIn');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_FLAT_FLAG = 2,
-    CLONE_SYMBOLS_FLAG = 4;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
-    arrayTag = '[object Array]',
-    boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    errorTag = '[object Error]',
-    funcTag = '[object Function]',
-    genTag = '[object GeneratorFunction]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    objectTag = '[object Object]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]',
-    weakMapTag = '[object WeakMap]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]',
-    float32Tag = '[object Float32Array]',
-    float64Tag = '[object Float64Array]',
-    int8Tag = '[object Int8Array]',
-    int16Tag = '[object Int16Array]',
-    int32Tag = '[object Int32Array]',
-    uint8Tag = '[object Uint8Array]',
-    uint8ClampedTag = '[object Uint8ClampedArray]',
-    uint16Tag = '[object Uint16Array]',
-    uint32Tag = '[object Uint32Array]';
-
-/** Used to identify `toStringTag` values supported by `_.clone`. */
-var cloneableTags = {};
-cloneableTags[argsTag] = cloneableTags[arrayTag] =
-cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-cloneableTags[boolTag] = cloneableTags[dateTag] =
-cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-cloneableTags[int32Tag] = cloneableTags[mapTag] =
-cloneableTags[numberTag] = cloneableTags[objectTag] =
-cloneableTags[regexpTag] = cloneableTags[setTag] =
-cloneableTags[stringTag] = cloneableTags[symbolTag] =
-cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-cloneableTags[errorTag] = cloneableTags[funcTag] =
-cloneableTags[weakMapTag] = false;
-
-/**
- * The base implementation of `_.clone` and `_.cloneDeep` which tracks
- * traversed objects.
- *
- * @private
- * @param {*} value The value to clone.
- * @param {boolean} bitmask The bitmask flags.
- *  1 - Deep clone
- *  2 - Flatten inherited properties
- *  4 - Clone symbols
- * @param {Function} [customizer] The function to customize cloning.
- * @param {string} [key] The key of `value`.
- * @param {Object} [object] The parent object of `value`.
- * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
- * @returns {*} Returns the cloned value.
- */
-function baseClone(value, bitmask, customizer, key, object, stack) {
-  var result,
-      isDeep = bitmask & CLONE_DEEP_FLAG,
-      isFlat = bitmask & CLONE_FLAT_FLAG,
-      isFull = bitmask & CLONE_SYMBOLS_FLAG;
-
-  if (customizer) {
-    result = object ? customizer(value, key, object, stack) : customizer(value);
-  }
-  if (result !== undefined) {
-    return result;
-  }
-  if (!isObject(value)) {
-    return value;
-  }
-  var isArr = isArray(value);
-  if (isArr) {
-    result = initCloneArray(value);
-    if (!isDeep) {
-      return copyArray(value, result);
-    }
-  } else {
-    var tag = getTag(value),
-        isFunc = tag == funcTag || tag == genTag;
-
-    if (isBuffer(value)) {
-      return cloneBuffer(value, isDeep);
-    }
-    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
-      result = (isFlat || isFunc) ? {} : initCloneObject(value);
-      if (!isDeep) {
-        return isFlat
-          ? copySymbolsIn(value, baseAssignIn(result, value))
-          : copySymbols(value, baseAssign(result, value));
-      }
-    } else {
-      if (!cloneableTags[tag]) {
-        return object ? value : {};
-      }
-      result = initCloneByTag(value, tag, isDeep);
-    }
-  }
-  // Check for circular references and return its corresponding clone.
-  stack || (stack = new Stack);
-  var stacked = stack.get(value);
-  if (stacked) {
-    return stacked;
-  }
-  stack.set(value, result);
-
-  if (isSet(value)) {
-    value.forEach(function(subValue) {
-      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
-    });
-  } else if (isMap(value)) {
-    value.forEach(function(subValue, key) {
-      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
-    });
-  }
-
-  var keysFunc = isFull
-    ? (isFlat ? getAllKeysIn : getAllKeys)
-    : (isFlat ? keysIn : keys);
-
-  var props = isArr ? undefined : keysFunc(value);
-  arrayEach(props || value, function(subValue, key) {
-    if (props) {
-      key = subValue;
-      subValue = value[key];
-    }
-    // Recursively populate clone (susceptible to call stack limits).
-    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
-  });
-  return result;
-}
-
-module.exports = baseClone;
Index: ckend/node_modules/lodash/_baseConforms.js
===================================================================
--- backend/node_modules/lodash/_baseConforms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseConformsTo = require('./_baseConformsTo'),
-    keys = require('./keys');
-
-/**
- * The base implementation of `_.conforms` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- */
-function baseConforms(source) {
-  var props = keys(source);
-  return function(object) {
-    return baseConformsTo(object, source, props);
-  };
-}
-
-module.exports = baseConforms;
Index: ckend/node_modules/lodash/_baseConformsTo.js
===================================================================
--- backend/node_modules/lodash/_baseConformsTo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-/**
- * The base implementation of `_.conformsTo` which accepts `props` to check.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- */
-function baseConformsTo(object, source, props) {
-  var length = props.length;
-  if (object == null) {
-    return !length;
-  }
-  object = Object(object);
-  while (length--) {
-    var key = props[length],
-        predicate = source[key],
-        value = object[key];
-
-    if ((value === undefined && !(key in object)) || !predicate(value)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-module.exports = baseConformsTo;
Index: ckend/node_modules/lodash/_baseCreate.js
===================================================================
--- backend/node_modules/lodash/_baseCreate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var isObject = require('./isObject');
-
-/** Built-in value references. */
-var objectCreate = Object.create;
-
-/**
- * The base implementation of `_.create` without support for assigning
- * properties to the created object.
- *
- * @private
- * @param {Object} proto The object to inherit from.
- * @returns {Object} Returns the new object.
- */
-var baseCreate = (function() {
-  function object() {}
-  return function(proto) {
-    if (!isObject(proto)) {
-      return {};
-    }
-    if (objectCreate) {
-      return objectCreate(proto);
-    }
-    object.prototype = proto;
-    var result = new object;
-    object.prototype = undefined;
-    return result;
-  };
-}());
-
-module.exports = baseCreate;
Index: ckend/node_modules/lodash/_baseDelay.js
===================================================================
--- backend/node_modules/lodash/_baseDelay.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * The base implementation of `_.delay` and `_.defer` which accepts `args`
- * to provide to `func`.
- *
- * @private
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {Array} args The arguments to provide to `func`.
- * @returns {number|Object} Returns the timer id or timeout object.
- */
-function baseDelay(func, wait, args) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  return setTimeout(function() { func.apply(undefined, args); }, wait);
-}
-
-module.exports = baseDelay;
Index: ckend/node_modules/lodash/_baseDifference.js
===================================================================
--- backend/node_modules/lodash/_baseDifference.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-var SetCache = require('./_SetCache'),
-    arrayIncludes = require('./_arrayIncludes'),
-    arrayIncludesWith = require('./_arrayIncludesWith'),
-    arrayMap = require('./_arrayMap'),
-    baseUnary = require('./_baseUnary'),
-    cacheHas = require('./_cacheHas');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * The base implementation of methods like `_.difference` without support
- * for excluding multiple arrays or iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Array} values The values to exclude.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- */
-function baseDifference(array, values, iteratee, comparator) {
-  var index = -1,
-      includes = arrayIncludes,
-      isCommon = true,
-      length = array.length,
-      result = [],
-      valuesLength = values.length;
-
-  if (!length) {
-    return result;
-  }
-  if (iteratee) {
-    values = arrayMap(values, baseUnary(iteratee));
-  }
-  if (comparator) {
-    includes = arrayIncludesWith;
-    isCommon = false;
-  }
-  else if (values.length >= LARGE_ARRAY_SIZE) {
-    includes = cacheHas;
-    isCommon = false;
-    values = new SetCache(values);
-  }
-  outer:
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee == null ? value : iteratee(value);
-
-    value = (comparator || value !== 0) ? value : 0;
-    if (isCommon && computed === computed) {
-      var valuesIndex = valuesLength;
-      while (valuesIndex--) {
-        if (values[valuesIndex] === computed) {
-          continue outer;
-        }
-      }
-      result.push(value);
-    }
-    else if (!includes(values, computed, comparator)) {
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-module.exports = baseDifference;
Index: ckend/node_modules/lodash/_baseEach.js
===================================================================
--- backend/node_modules/lodash/_baseEach.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var baseForOwn = require('./_baseForOwn'),
-    createBaseEach = require('./_createBaseEach');
-
-/**
- * The base implementation of `_.forEach` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
-var baseEach = createBaseEach(baseForOwn);
-
-module.exports = baseEach;
Index: ckend/node_modules/lodash/_baseEachRight.js
===================================================================
--- backend/node_modules/lodash/_baseEachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var baseForOwnRight = require('./_baseForOwnRight'),
-    createBaseEach = require('./_createBaseEach');
-
-/**
- * The base implementation of `_.forEachRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- */
-var baseEachRight = createBaseEach(baseForOwnRight, true);
-
-module.exports = baseEachRight;
Index: ckend/node_modules/lodash/_baseEvery.js
===================================================================
--- backend/node_modules/lodash/_baseEvery.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.every` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- *  else `false`
- */
-function baseEvery(collection, predicate) {
-  var result = true;
-  baseEach(collection, function(value, index, collection) {
-    result = !!predicate(value, index, collection);
-    return result;
-  });
-  return result;
-}
-
-module.exports = baseEvery;
Index: ckend/node_modules/lodash/_baseExtremum.js
===================================================================
--- backend/node_modules/lodash/_baseExtremum.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var isSymbol = require('./isSymbol');
-
-/**
- * The base implementation of methods like `_.max` and `_.min` which accepts a
- * `comparator` to determine the extremum value.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The iteratee invoked per iteration.
- * @param {Function} comparator The comparator used to compare values.
- * @returns {*} Returns the extremum value.
- */
-function baseExtremum(array, iteratee, comparator) {
-  var index = -1,
-      length = array.length;
-
-  while (++index < length) {
-    var value = array[index],
-        current = iteratee(value);
-
-    if (current != null && (computed === undefined
-          ? (current === current && !isSymbol(current))
-          : comparator(current, computed)
-        )) {
-      var computed = current,
-          result = value;
-    }
-  }
-  return result;
-}
-
-module.exports = baseExtremum;
Index: ckend/node_modules/lodash/_baseFill.js
===================================================================
--- backend/node_modules/lodash/_baseFill.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var toInteger = require('./toInteger'),
-    toLength = require('./toLength');
-
-/**
- * The base implementation of `_.fill` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- */
-function baseFill(array, value, start, end) {
-  var length = array.length;
-
-  start = toInteger(start);
-  if (start < 0) {
-    start = -start > length ? 0 : (length + start);
-  }
-  end = (end === undefined || end > length) ? length : toInteger(end);
-  if (end < 0) {
-    end += length;
-  }
-  end = start > end ? 0 : toLength(end);
-  while (start < end) {
-    array[start++] = value;
-  }
-  return array;
-}
-
-module.exports = baseFill;
Index: ckend/node_modules/lodash/_baseFilter.js
===================================================================
--- backend/node_modules/lodash/_baseFilter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.filter` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- */
-function baseFilter(collection, predicate) {
-  var result = [];
-  baseEach(collection, function(value, index, collection) {
-    if (predicate(value, index, collection)) {
-      result.push(value);
-    }
-  });
-  return result;
-}
-
-module.exports = baseFilter;
Index: ckend/node_modules/lodash/_baseFindIndex.js
===================================================================
--- backend/node_modules/lodash/_baseFindIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-/**
- * The base implementation of `_.findIndex` and `_.findLastIndex` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {number} fromIndex The index to search from.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseFindIndex(array, predicate, fromIndex, fromRight) {
-  var length = array.length,
-      index = fromIndex + (fromRight ? 1 : -1);
-
-  while ((fromRight ? index-- : ++index < length)) {
-    if (predicate(array[index], index, array)) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = baseFindIndex;
Index: ckend/node_modules/lodash/_baseFindKey.js
===================================================================
--- backend/node_modules/lodash/_baseFindKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * The base implementation of methods like `_.findKey` and `_.findLastKey`,
- * without support for iteratee shorthands, which iterates over `collection`
- * using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} predicate The function invoked per iteration.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the found element or its key, else `undefined`.
- */
-function baseFindKey(collection, predicate, eachFunc) {
-  var result;
-  eachFunc(collection, function(value, key, collection) {
-    if (predicate(value, key, collection)) {
-      result = key;
-      return false;
-    }
-  });
-  return result;
-}
-
-module.exports = baseFindKey;
Index: ckend/node_modules/lodash/_baseFlatten.js
===================================================================
--- backend/node_modules/lodash/_baseFlatten.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var arrayPush = require('./_arrayPush'),
-    isFlattenable = require('./_isFlattenable');
-
-/**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
-function baseFlatten(array, depth, predicate, isStrict, result) {
-  var index = -1,
-      length = array.length;
-
-  predicate || (predicate = isFlattenable);
-  result || (result = []);
-
-  while (++index < length) {
-    var value = array[index];
-    if (depth > 0 && predicate(value)) {
-      if (depth > 1) {
-        // Recursively flatten arrays (susceptible to call stack limits).
-        baseFlatten(value, depth - 1, predicate, isStrict, result);
-      } else {
-        arrayPush(result, value);
-      }
-    } else if (!isStrict) {
-      result[result.length] = value;
-    }
-  }
-  return result;
-}
-
-module.exports = baseFlatten;
Index: ckend/node_modules/lodash/_baseFor.js
===================================================================
--- backend/node_modules/lodash/_baseFor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var createBaseFor = require('./_createBaseFor');
-
-/**
- * The base implementation of `baseForOwn` which iterates over `object`
- * properties returned by `keysFunc` and invokes `iteratee` for each property.
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseFor = createBaseFor();
-
-module.exports = baseFor;
Index: ckend/node_modules/lodash/_baseForOwn.js
===================================================================
--- backend/node_modules/lodash/_baseForOwn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var baseFor = require('./_baseFor'),
-    keys = require('./keys');
-
-/**
- * The base implementation of `_.forOwn` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwn(object, iteratee) {
-  return object && baseFor(object, iteratee, keys);
-}
-
-module.exports = baseForOwn;
Index: ckend/node_modules/lodash/_baseForOwnRight.js
===================================================================
--- backend/node_modules/lodash/_baseForOwnRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var baseForRight = require('./_baseForRight'),
-    keys = require('./keys');
-
-/**
- * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Object} Returns `object`.
- */
-function baseForOwnRight(object, iteratee) {
-  return object && baseForRight(object, iteratee, keys);
-}
-
-module.exports = baseForOwnRight;
Index: ckend/node_modules/lodash/_baseForRight.js
===================================================================
--- backend/node_modules/lodash/_baseForRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var createBaseFor = require('./_createBaseFor');
-
-/**
- * This function is like `baseFor` except that it iterates over properties
- * in the opposite order.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @returns {Object} Returns `object`.
- */
-var baseForRight = createBaseFor(true);
-
-module.exports = baseForRight;
Index: ckend/node_modules/lodash/_baseFunctions.js
===================================================================
--- backend/node_modules/lodash/_baseFunctions.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    isFunction = require('./isFunction');
-
-/**
- * The base implementation of `_.functions` which creates an array of
- * `object` function property names filtered from `props`.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Array} props The property names to filter.
- * @returns {Array} Returns the function names.
- */
-function baseFunctions(object, props) {
-  return arrayFilter(props, function(key) {
-    return isFunction(object[key]);
-  });
-}
-
-module.exports = baseFunctions;
Index: ckend/node_modules/lodash/_baseGet.js
===================================================================
--- backend/node_modules/lodash/_baseGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var castPath = require('./_castPath'),
-    toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.get` without support for default values.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @returns {*} Returns the resolved value.
- */
-function baseGet(object, path) {
-  path = castPath(path, object);
-
-  var index = 0,
-      length = path.length;
-
-  while (object != null && index < length) {
-    object = object[toKey(path[index++])];
-  }
-  return (index && index == length) ? object : undefined;
-}
-
-module.exports = baseGet;
Index: ckend/node_modules/lodash/_baseGetAllKeys.js
===================================================================
--- backend/node_modules/lodash/_baseGetAllKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var arrayPush = require('./_arrayPush'),
-    isArray = require('./isArray');
-
-/**
- * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
- * `keysFunc` and `symbolsFunc` to get the enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Function} keysFunc The function to get the keys of `object`.
- * @param {Function} symbolsFunc The function to get the symbols of `object`.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function baseGetAllKeys(object, keysFunc, symbolsFunc) {
-  var result = keysFunc(object);
-  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-}
-
-module.exports = baseGetAllKeys;
Index: ckend/node_modules/lodash/_baseGetTag.js
===================================================================
--- backend/node_modules/lodash/_baseGetTag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var Symbol = require('./_Symbol'),
-    getRawTag = require('./_getRawTag'),
-    objectToString = require('./_objectToString');
-
-/** `Object#toString` result references. */
-var nullTag = '[object Null]',
-    undefinedTag = '[object Undefined]';
-
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
-/**
- * The base implementation of `getTag` without fallbacks for buggy environments.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-function baseGetTag(value) {
-  if (value == null) {
-    return value === undefined ? undefinedTag : nullTag;
-  }
-  return (symToStringTag && symToStringTag in Object(value))
-    ? getRawTag(value)
-    : objectToString(value);
-}
-
-module.exports = baseGetTag;
Index: ckend/node_modules/lodash/_baseGt.js
===================================================================
--- backend/node_modules/lodash/_baseGt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * The base implementation of `_.gt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- *  else `false`.
- */
-function baseGt(value, other) {
-  return value > other;
-}
-
-module.exports = baseGt;
Index: ckend/node_modules/lodash/_baseHas.js
===================================================================
--- backend/node_modules/lodash/_baseHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.has` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHas(object, key) {
-  return object != null && hasOwnProperty.call(object, key);
-}
-
-module.exports = baseHas;
Index: ckend/node_modules/lodash/_baseHasIn.js
===================================================================
--- backend/node_modules/lodash/_baseHasIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * The base implementation of `_.hasIn` without support for deep paths.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {Array|string} key The key to check.
- * @returns {boolean} Returns `true` if `key` exists, else `false`.
- */
-function baseHasIn(object, key) {
-  return object != null && key in Object(object);
-}
-
-module.exports = baseHasIn;
Index: ckend/node_modules/lodash/_baseInRange.js
===================================================================
--- backend/node_modules/lodash/_baseInRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * The base implementation of `_.inRange` which doesn't coerce arguments.
- *
- * @private
- * @param {number} number The number to check.
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- */
-function baseInRange(number, start, end) {
-  return number >= nativeMin(start, end) && number < nativeMax(start, end);
-}
-
-module.exports = baseInRange;
Index: ckend/node_modules/lodash/_baseIndexOf.js
===================================================================
--- backend/node_modules/lodash/_baseIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
-    baseIsNaN = require('./_baseIsNaN'),
-    strictIndexOf = require('./_strictIndexOf');
-
-/**
- * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOf(array, value, fromIndex) {
-  return value === value
-    ? strictIndexOf(array, value, fromIndex)
-    : baseFindIndex(array, baseIsNaN, fromIndex);
-}
-
-module.exports = baseIndexOf;
Index: ckend/node_modules/lodash/_baseIndexOfWith.js
===================================================================
--- backend/node_modules/lodash/_baseIndexOfWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * This function is like `baseIndexOf` except that it accepts a comparator.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @param {Function} comparator The comparator invoked per element.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function baseIndexOfWith(array, value, fromIndex, comparator) {
-  var index = fromIndex - 1,
-      length = array.length;
-
-  while (++index < length) {
-    if (comparator(array[index], value)) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = baseIndexOfWith;
Index: ckend/node_modules/lodash/_baseIntersection.js
===================================================================
--- backend/node_modules/lodash/_baseIntersection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-var SetCache = require('./_SetCache'),
-    arrayIncludes = require('./_arrayIncludes'),
-    arrayIncludesWith = require('./_arrayIncludesWith'),
-    arrayMap = require('./_arrayMap'),
-    baseUnary = require('./_baseUnary'),
-    cacheHas = require('./_cacheHas');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * The base implementation of methods like `_.intersection`, without support
- * for iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of shared values.
- */
-function baseIntersection(arrays, iteratee, comparator) {
-  var includes = comparator ? arrayIncludesWith : arrayIncludes,
-      length = arrays[0].length,
-      othLength = arrays.length,
-      othIndex = othLength,
-      caches = Array(othLength),
-      maxLength = Infinity,
-      result = [];
-
-  while (othIndex--) {
-    var array = arrays[othIndex];
-    if (othIndex && iteratee) {
-      array = arrayMap(array, baseUnary(iteratee));
-    }
-    maxLength = nativeMin(array.length, maxLength);
-    caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
-      ? new SetCache(othIndex && array)
-      : undefined;
-  }
-  array = arrays[0];
-
-  var index = -1,
-      seen = caches[0];
-
-  outer:
-  while (++index < length && result.length < maxLength) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
-
-    value = (comparator || value !== 0) ? value : 0;
-    if (!(seen
-          ? cacheHas(seen, computed)
-          : includes(result, computed, comparator)
-        )) {
-      othIndex = othLength;
-      while (--othIndex) {
-        var cache = caches[othIndex];
-        if (!(cache
-              ? cacheHas(cache, computed)
-              : includes(arrays[othIndex], computed, comparator))
-            ) {
-          continue outer;
-        }
-      }
-      if (seen) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-module.exports = baseIntersection;
Index: ckend/node_modules/lodash/_baseInverter.js
===================================================================
--- backend/node_modules/lodash/_baseInverter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var baseForOwn = require('./_baseForOwn');
-
-/**
- * The base implementation of `_.invert` and `_.invertBy` which inverts
- * `object` with values transformed by `iteratee` and set by `setter`.
- *
- * @private
- * @param {Object} object The object to iterate over.
- * @param {Function} setter The function to set `accumulator` values.
- * @param {Function} iteratee The iteratee to transform values.
- * @param {Object} accumulator The initial inverted object.
- * @returns {Function} Returns `accumulator`.
- */
-function baseInverter(object, setter, iteratee, accumulator) {
-  baseForOwn(object, function(value, key, object) {
-    setter(accumulator, iteratee(value), key, object);
-  });
-  return accumulator;
-}
-
-module.exports = baseInverter;
Index: ckend/node_modules/lodash/_baseInvoke.js
===================================================================
--- backend/node_modules/lodash/_baseInvoke.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var apply = require('./_apply'),
-    castPath = require('./_castPath'),
-    last = require('./last'),
-    parent = require('./_parent'),
-    toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.invoke` without support for individual
- * method arguments.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {Array} args The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- */
-function baseInvoke(object, path, args) {
-  path = castPath(path, object);
-  object = parent(object, path);
-  var func = object == null ? object : object[toKey(last(path))];
-  return func == null ? undefined : apply(func, object, args);
-}
-
-module.exports = baseInvoke;
Index: ckend/node_modules/lodash/_baseIsArguments.js
===================================================================
--- backend/node_modules/lodash/_baseIsArguments.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]';
-
-/**
- * The base implementation of `_.isArguments`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- */
-function baseIsArguments(value) {
-  return isObjectLike(value) && baseGetTag(value) == argsTag;
-}
-
-module.exports = baseIsArguments;
Index: ckend/node_modules/lodash/_baseIsArrayBuffer.js
===================================================================
--- backend/node_modules/lodash/_baseIsArrayBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-var arrayBufferTag = '[object ArrayBuffer]';
-
-/**
- * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- */
-function baseIsArrayBuffer(value) {
-  return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
-}
-
-module.exports = baseIsArrayBuffer;
Index: ckend/node_modules/lodash/_baseIsDate.js
===================================================================
--- backend/node_modules/lodash/_baseIsDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var dateTag = '[object Date]';
-
-/**
- * The base implementation of `_.isDate` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- */
-function baseIsDate(value) {
-  return isObjectLike(value) && baseGetTag(value) == dateTag;
-}
-
-module.exports = baseIsDate;
Index: ckend/node_modules/lodash/_baseIsEqual.js
===================================================================
--- backend/node_modules/lodash/_baseIsEqual.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseIsEqualDeep = require('./_baseIsEqualDeep'),
-    isObjectLike = require('./isObjectLike');
-
-/**
- * The base implementation of `_.isEqual` which supports partial comparisons
- * and tracks traversed objects.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {boolean} bitmask The bitmask flags.
- *  1 - Unordered comparison
- *  2 - Partial comparison
- * @param {Function} [customizer] The function to customize comparisons.
- * @param {Object} [stack] Tracks traversed `value` and `other` objects.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- */
-function baseIsEqual(value, other, bitmask, customizer, stack) {
-  if (value === other) {
-    return true;
-  }
-  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-    return value !== value && other !== other;
-  }
-  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-}
-
-module.exports = baseIsEqual;
Index: ckend/node_modules/lodash/_baseIsEqualDeep.js
===================================================================
--- backend/node_modules/lodash/_baseIsEqualDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,83 +1,0 @@
-var Stack = require('./_Stack'),
-    equalArrays = require('./_equalArrays'),
-    equalByTag = require('./_equalByTag'),
-    equalObjects = require('./_equalObjects'),
-    getTag = require('./_getTag'),
-    isArray = require('./isArray'),
-    isBuffer = require('./isBuffer'),
-    isTypedArray = require('./isTypedArray');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
-    arrayTag = '[object Array]',
-    objectTag = '[object Object]';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * A specialized version of `baseIsEqual` for arrays and objects which performs
- * deep comparisons and tracks traversed objects enabling objects with circular
- * references to be compared.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} [stack] Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-  var objIsArr = isArray(object),
-      othIsArr = isArray(other),
-      objTag = objIsArr ? arrayTag : getTag(object),
-      othTag = othIsArr ? arrayTag : getTag(other);
-
-  objTag = objTag == argsTag ? objectTag : objTag;
-  othTag = othTag == argsTag ? objectTag : othTag;
-
-  var objIsObj = objTag == objectTag,
-      othIsObj = othTag == objectTag,
-      isSameTag = objTag == othTag;
-
-  if (isSameTag && isBuffer(object)) {
-    if (!isBuffer(other)) {
-      return false;
-    }
-    objIsArr = true;
-    objIsObj = false;
-  }
-  if (isSameTag && !objIsObj) {
-    stack || (stack = new Stack);
-    return (objIsArr || isTypedArray(object))
-      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-  }
-  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
-    if (objIsWrapped || othIsWrapped) {
-      var objUnwrapped = objIsWrapped ? object.value() : object,
-          othUnwrapped = othIsWrapped ? other.value() : other;
-
-      stack || (stack = new Stack);
-      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-    }
-  }
-  if (!isSameTag) {
-    return false;
-  }
-  stack || (stack = new Stack);
-  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-}
-
-module.exports = baseIsEqualDeep;
Index: ckend/node_modules/lodash/_baseIsMap.js
===================================================================
--- backend/node_modules/lodash/_baseIsMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var getTag = require('./_getTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]';
-
-/**
- * The base implementation of `_.isMap` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- */
-function baseIsMap(value) {
-  return isObjectLike(value) && getTag(value) == mapTag;
-}
-
-module.exports = baseIsMap;
Index: ckend/node_modules/lodash/_baseIsMatch.js
===================================================================
--- backend/node_modules/lodash/_baseIsMatch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-var Stack = require('./_Stack'),
-    baseIsEqual = require('./_baseIsEqual');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * The base implementation of `_.isMatch` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Array} matchData The property names, values, and compare flags to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- */
-function baseIsMatch(object, source, matchData, customizer) {
-  var index = matchData.length,
-      length = index,
-      noCustomizer = !customizer;
-
-  if (object == null) {
-    return !length;
-  }
-  object = Object(object);
-  while (index--) {
-    var data = matchData[index];
-    if ((noCustomizer && data[2])
-          ? data[1] !== object[data[0]]
-          : !(data[0] in object)
-        ) {
-      return false;
-    }
-  }
-  while (++index < length) {
-    data = matchData[index];
-    var key = data[0],
-        objValue = object[key],
-        srcValue = data[1];
-
-    if (noCustomizer && data[2]) {
-      if (objValue === undefined && !(key in object)) {
-        return false;
-      }
-    } else {
-      var stack = new Stack;
-      if (customizer) {
-        var result = customizer(objValue, srcValue, key, object, source, stack);
-      }
-      if (!(result === undefined
-            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
-            : result
-          )) {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-module.exports = baseIsMatch;
Index: ckend/node_modules/lodash/_baseIsNaN.js
===================================================================
--- backend/node_modules/lodash/_baseIsNaN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-/**
- * The base implementation of `_.isNaN` without support for number objects.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- */
-function baseIsNaN(value) {
-  return value !== value;
-}
-
-module.exports = baseIsNaN;
Index: ckend/node_modules/lodash/_baseIsNative.js
===================================================================
--- backend/node_modules/lodash/_baseIsNative.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-var isFunction = require('./isFunction'),
-    isMasked = require('./_isMasked'),
-    isObject = require('./isObject'),
-    toSource = require('./_toSource');
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
-
-/** Used to detect host constructors (Safari). */
-var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
-    objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to detect if a method is native. */
-var reIsNative = RegExp('^' +
-  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-);
-
-/**
- * The base implementation of `_.isNative` without bad shim checks.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- *  else `false`.
- */
-function baseIsNative(value) {
-  if (!isObject(value) || isMasked(value)) {
-    return false;
-  }
-  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-  return pattern.test(toSource(value));
-}
-
-module.exports = baseIsNative;
Index: ckend/node_modules/lodash/_baseIsRegExp.js
===================================================================
--- backend/node_modules/lodash/_baseIsRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var regexpTag = '[object RegExp]';
-
-/**
- * The base implementation of `_.isRegExp` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- */
-function baseIsRegExp(value) {
-  return isObjectLike(value) && baseGetTag(value) == regexpTag;
-}
-
-module.exports = baseIsRegExp;
Index: ckend/node_modules/lodash/_baseIsSet.js
===================================================================
--- backend/node_modules/lodash/_baseIsSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var getTag = require('./_getTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var setTag = '[object Set]';
-
-/**
- * The base implementation of `_.isSet` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- */
-function baseIsSet(value) {
-  return isObjectLike(value) && getTag(value) == setTag;
-}
-
-module.exports = baseIsSet;
Index: ckend/node_modules/lodash/_baseIsTypedArray.js
===================================================================
--- backend/node_modules/lodash/_baseIsTypedArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isLength = require('./isLength'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
-    arrayTag = '[object Array]',
-    boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    errorTag = '[object Error]',
-    funcTag = '[object Function]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    objectTag = '[object Object]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    weakMapTag = '[object WeakMap]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]',
-    float32Tag = '[object Float32Array]',
-    float64Tag = '[object Float64Array]',
-    int8Tag = '[object Int8Array]',
-    int16Tag = '[object Int16Array]',
-    int32Tag = '[object Int32Array]',
-    uint8Tag = '[object Uint8Array]',
-    uint8ClampedTag = '[object Uint8ClampedArray]',
-    uint16Tag = '[object Uint16Array]',
-    uint32Tag = '[object Uint32Array]';
-
-/** Used to identify `toStringTag` values of typed arrays. */
-var typedArrayTags = {};
-typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-typedArrayTags[uint32Tag] = true;
-typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-typedArrayTags[setTag] = typedArrayTags[stringTag] =
-typedArrayTags[weakMapTag] = false;
-
-/**
- * The base implementation of `_.isTypedArray` without Node.js optimizations.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- */
-function baseIsTypedArray(value) {
-  return isObjectLike(value) &&
-    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
-}
-
-module.exports = baseIsTypedArray;
Index: ckend/node_modules/lodash/_baseIteratee.js
===================================================================
--- backend/node_modules/lodash/_baseIteratee.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseMatches = require('./_baseMatches'),
-    baseMatchesProperty = require('./_baseMatchesProperty'),
-    identity = require('./identity'),
-    isArray = require('./isArray'),
-    property = require('./property');
-
-/**
- * The base implementation of `_.iteratee`.
- *
- * @private
- * @param {*} [value=_.identity] The value to convert to an iteratee.
- * @returns {Function} Returns the iteratee.
- */
-function baseIteratee(value) {
-  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
-  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
-  if (typeof value == 'function') {
-    return value;
-  }
-  if (value == null) {
-    return identity;
-  }
-  if (typeof value == 'object') {
-    return isArray(value)
-      ? baseMatchesProperty(value[0], value[1])
-      : baseMatches(value);
-  }
-  return property(value);
-}
-
-module.exports = baseIteratee;
Index: ckend/node_modules/lodash/_baseKeys.js
===================================================================
--- backend/node_modules/lodash/_baseKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var isPrototype = require('./_isPrototype'),
-    nativeKeys = require('./_nativeKeys');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function baseKeys(object) {
-  if (!isPrototype(object)) {
-    return nativeKeys(object);
-  }
-  var result = [];
-  for (var key in Object(object)) {
-    if (hasOwnProperty.call(object, key) && key != 'constructor') {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = baseKeys;
Index: ckend/node_modules/lodash/_baseKeysIn.js
===================================================================
--- backend/node_modules/lodash/_baseKeysIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var isObject = require('./isObject'),
-    isPrototype = require('./_isPrototype'),
-    nativeKeysIn = require('./_nativeKeysIn');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function baseKeysIn(object) {
-  if (!isObject(object)) {
-    return nativeKeysIn(object);
-  }
-  var isProto = isPrototype(object),
-      result = [];
-
-  for (var key in object) {
-    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = baseKeysIn;
Index: ckend/node_modules/lodash/_baseLodash.js
===================================================================
--- backend/node_modules/lodash/_baseLodash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-/**
- * The function whose prototype chain sequence wrappers inherit from.
- *
- * @private
- */
-function baseLodash() {
-  // No operation performed.
-}
-
-module.exports = baseLodash;
Index: ckend/node_modules/lodash/_baseLt.js
===================================================================
--- backend/node_modules/lodash/_baseLt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * The base implementation of `_.lt` which doesn't coerce arguments.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- *  else `false`.
- */
-function baseLt(value, other) {
-  return value < other;
-}
-
-module.exports = baseLt;
Index: ckend/node_modules/lodash/_baseMap.js
===================================================================
--- backend/node_modules/lodash/_baseMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseEach = require('./_baseEach'),
-    isArrayLike = require('./isArrayLike');
-
-/**
- * The base implementation of `_.map` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- */
-function baseMap(collection, iteratee) {
-  var index = -1,
-      result = isArrayLike(collection) ? Array(collection.length) : [];
-
-  baseEach(collection, function(value, key, collection) {
-    result[++index] = iteratee(value, key, collection);
-  });
-  return result;
-}
-
-module.exports = baseMap;
Index: ckend/node_modules/lodash/_baseMatches.js
===================================================================
--- backend/node_modules/lodash/_baseMatches.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
-    getMatchData = require('./_getMatchData'),
-    matchesStrictComparable = require('./_matchesStrictComparable');
-
-/**
- * The base implementation of `_.matches` which doesn't clone `source`.
- *
- * @private
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- */
-function baseMatches(source) {
-  var matchData = getMatchData(source);
-  if (matchData.length == 1 && matchData[0][2]) {
-    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
-  }
-  return function(object) {
-    return object === source || baseIsMatch(object, source, matchData);
-  };
-}
-
-module.exports = baseMatches;
Index: ckend/node_modules/lodash/_baseMatchesProperty.js
===================================================================
--- backend/node_modules/lodash/_baseMatchesProperty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseIsEqual = require('./_baseIsEqual'),
-    get = require('./get'),
-    hasIn = require('./hasIn'),
-    isKey = require('./_isKey'),
-    isStrictComparable = require('./_isStrictComparable'),
-    matchesStrictComparable = require('./_matchesStrictComparable'),
-    toKey = require('./_toKey');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
- *
- * @private
- * @param {string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
-function baseMatchesProperty(path, srcValue) {
-  if (isKey(path) && isStrictComparable(srcValue)) {
-    return matchesStrictComparable(toKey(path), srcValue);
-  }
-  return function(object) {
-    var objValue = get(object, path);
-    return (objValue === undefined && objValue === srcValue)
-      ? hasIn(object, path)
-      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
-  };
-}
-
-module.exports = baseMatchesProperty;
Index: ckend/node_modules/lodash/_baseMean.js
===================================================================
--- backend/node_modules/lodash/_baseMean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var baseSum = require('./_baseSum');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/**
- * The base implementation of `_.mean` and `_.meanBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the mean.
- */
-function baseMean(array, iteratee) {
-  var length = array == null ? 0 : array.length;
-  return length ? (baseSum(array, iteratee) / length) : NAN;
-}
-
-module.exports = baseMean;
Index: ckend/node_modules/lodash/_baseMerge.js
===================================================================
--- backend/node_modules/lodash/_baseMerge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var Stack = require('./_Stack'),
-    assignMergeValue = require('./_assignMergeValue'),
-    baseFor = require('./_baseFor'),
-    baseMergeDeep = require('./_baseMergeDeep'),
-    isObject = require('./isObject'),
-    keysIn = require('./keysIn'),
-    safeGet = require('./_safeGet');
-
-/**
- * The base implementation of `_.merge` without support for multiple sources.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} [customizer] The function to customize merged values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- *  counterparts.
- */
-function baseMerge(object, source, srcIndex, customizer, stack) {
-  if (object === source) {
-    return;
-  }
-  baseFor(source, function(srcValue, key) {
-    stack || (stack = new Stack);
-    if (isObject(srcValue)) {
-      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
-    }
-    else {
-      var newValue = customizer
-        ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
-        : undefined;
-
-      if (newValue === undefined) {
-        newValue = srcValue;
-      }
-      assignMergeValue(object, key, newValue);
-    }
-  }, keysIn);
-}
-
-module.exports = baseMerge;
Index: ckend/node_modules/lodash/_baseMergeDeep.js
===================================================================
--- backend/node_modules/lodash/_baseMergeDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-var assignMergeValue = require('./_assignMergeValue'),
-    cloneBuffer = require('./_cloneBuffer'),
-    cloneTypedArray = require('./_cloneTypedArray'),
-    copyArray = require('./_copyArray'),
-    initCloneObject = require('./_initCloneObject'),
-    isArguments = require('./isArguments'),
-    isArray = require('./isArray'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    isBuffer = require('./isBuffer'),
-    isFunction = require('./isFunction'),
-    isObject = require('./isObject'),
-    isPlainObject = require('./isPlainObject'),
-    isTypedArray = require('./isTypedArray'),
-    safeGet = require('./_safeGet'),
-    toPlainObject = require('./toPlainObject');
-
-/**
- * A specialized version of `baseMerge` for arrays and objects which performs
- * deep merges and tracks traversed objects enabling objects with circular
- * references to be merged.
- *
- * @private
- * @param {Object} object The destination object.
- * @param {Object} source The source object.
- * @param {string} key The key of the value to merge.
- * @param {number} srcIndex The index of `source`.
- * @param {Function} mergeFunc The function to merge values.
- * @param {Function} [customizer] The function to customize assigned values.
- * @param {Object} [stack] Tracks traversed source values and their merged
- *  counterparts.
- */
-function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
-  var objValue = safeGet(object, key),
-      srcValue = safeGet(source, key),
-      stacked = stack.get(srcValue);
-
-  if (stacked) {
-    assignMergeValue(object, key, stacked);
-    return;
-  }
-  var newValue = customizer
-    ? customizer(objValue, srcValue, (key + ''), object, source, stack)
-    : undefined;
-
-  var isCommon = newValue === undefined;
-
-  if (isCommon) {
-    var isArr = isArray(srcValue),
-        isBuff = !isArr && isBuffer(srcValue),
-        isTyped = !isArr && !isBuff && isTypedArray(srcValue);
-
-    newValue = srcValue;
-    if (isArr || isBuff || isTyped) {
-      if (isArray(objValue)) {
-        newValue = objValue;
-      }
-      else if (isArrayLikeObject(objValue)) {
-        newValue = copyArray(objValue);
-      }
-      else if (isBuff) {
-        isCommon = false;
-        newValue = cloneBuffer(srcValue, true);
-      }
-      else if (isTyped) {
-        isCommon = false;
-        newValue = cloneTypedArray(srcValue, true);
-      }
-      else {
-        newValue = [];
-      }
-    }
-    else if (isPlainObject(srcValue) || isArguments(srcValue)) {
-      newValue = objValue;
-      if (isArguments(objValue)) {
-        newValue = toPlainObject(objValue);
-      }
-      else if (!isObject(objValue) || isFunction(objValue)) {
-        newValue = initCloneObject(srcValue);
-      }
-    }
-    else {
-      isCommon = false;
-    }
-  }
-  if (isCommon) {
-    // Recursively merge objects and arrays (susceptible to call stack limits).
-    stack.set(srcValue, newValue);
-    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
-    stack['delete'](srcValue);
-  }
-  assignMergeValue(object, key, newValue);
-}
-
-module.exports = baseMergeDeep;
Index: ckend/node_modules/lodash/_baseNth.js
===================================================================
--- backend/node_modules/lodash/_baseNth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var isIndex = require('./_isIndex');
-
-/**
- * The base implementation of `_.nth` which doesn't coerce arguments.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {number} n The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- */
-function baseNth(array, n) {
-  var length = array.length;
-  if (!length) {
-    return;
-  }
-  n += n < 0 ? length : 0;
-  return isIndex(n, length) ? array[n] : undefined;
-}
-
-module.exports = baseNth;
Index: ckend/node_modules/lodash/_baseOrderBy.js
===================================================================
--- backend/node_modules/lodash/_baseOrderBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseGet = require('./_baseGet'),
-    baseIteratee = require('./_baseIteratee'),
-    baseMap = require('./_baseMap'),
-    baseSortBy = require('./_baseSortBy'),
-    baseUnary = require('./_baseUnary'),
-    compareMultiple = require('./_compareMultiple'),
-    identity = require('./identity'),
-    isArray = require('./isArray');
-
-/**
- * The base implementation of `_.orderBy` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
- * @param {string[]} orders The sort orders of `iteratees`.
- * @returns {Array} Returns the new sorted array.
- */
-function baseOrderBy(collection, iteratees, orders) {
-  if (iteratees.length) {
-    iteratees = arrayMap(iteratees, function(iteratee) {
-      if (isArray(iteratee)) {
-        return function(value) {
-          return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
-        }
-      }
-      return iteratee;
-    });
-  } else {
-    iteratees = [identity];
-  }
-
-  var index = -1;
-  iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
-
-  var result = baseMap(collection, function(value, key, collection) {
-    var criteria = arrayMap(iteratees, function(iteratee) {
-      return iteratee(value);
-    });
-    return { 'criteria': criteria, 'index': ++index, 'value': value };
-  });
-
-  return baseSortBy(result, function(object, other) {
-    return compareMultiple(object, other, orders);
-  });
-}
-
-module.exports = baseOrderBy;
Index: ckend/node_modules/lodash/_basePick.js
===================================================================
--- backend/node_modules/lodash/_basePick.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var basePickBy = require('./_basePickBy'),
-    hasIn = require('./hasIn');
-
-/**
- * The base implementation of `_.pick` without support for individual
- * property identifiers.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @returns {Object} Returns the new object.
- */
-function basePick(object, paths) {
-  return basePickBy(object, paths, function(value, path) {
-    return hasIn(object, path);
-  });
-}
-
-module.exports = basePick;
Index: ckend/node_modules/lodash/_basePickBy.js
===================================================================
--- backend/node_modules/lodash/_basePickBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var baseGet = require('./_baseGet'),
-    baseSet = require('./_baseSet'),
-    castPath = require('./_castPath');
-
-/**
- * The base implementation of  `_.pickBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Object} object The source object.
- * @param {string[]} paths The property paths to pick.
- * @param {Function} predicate The function invoked per property.
- * @returns {Object} Returns the new object.
- */
-function basePickBy(object, paths, predicate) {
-  var index = -1,
-      length = paths.length,
-      result = {};
-
-  while (++index < length) {
-    var path = paths[index],
-        value = baseGet(object, path);
-
-    if (predicate(value, path)) {
-      baseSet(result, castPath(path, object), value);
-    }
-  }
-  return result;
-}
-
-module.exports = basePickBy;
Index: ckend/node_modules/lodash/_baseProperty.js
===================================================================
--- backend/node_modules/lodash/_baseProperty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * The base implementation of `_.property` without support for deep paths.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
-function baseProperty(key) {
-  return function(object) {
-    return object == null ? undefined : object[key];
-  };
-}
-
-module.exports = baseProperty;
Index: ckend/node_modules/lodash/_basePropertyDeep.js
===================================================================
--- backend/node_modules/lodash/_basePropertyDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * A specialized version of `baseProperty` which supports deep paths.
- *
- * @private
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- */
-function basePropertyDeep(path) {
-  return function(object) {
-    return baseGet(object, path);
-  };
-}
-
-module.exports = basePropertyDeep;
Index: ckend/node_modules/lodash/_basePropertyOf.js
===================================================================
--- backend/node_modules/lodash/_basePropertyOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * The base implementation of `_.propertyOf` without support for deep paths.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- */
-function basePropertyOf(object) {
-  return function(key) {
-    return object == null ? undefined : object[key];
-  };
-}
-
-module.exports = basePropertyOf;
Index: ckend/node_modules/lodash/_basePullAll.js
===================================================================
--- backend/node_modules/lodash/_basePullAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIndexOf = require('./_baseIndexOf'),
-    baseIndexOfWith = require('./_baseIndexOfWith'),
-    baseUnary = require('./_baseUnary'),
-    copyArray = require('./_copyArray');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * The base implementation of `_.pullAllBy` without support for iteratee
- * shorthands.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- */
-function basePullAll(array, values, iteratee, comparator) {
-  var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
-      index = -1,
-      length = values.length,
-      seen = array;
-
-  if (array === values) {
-    values = copyArray(values);
-  }
-  if (iteratee) {
-    seen = arrayMap(array, baseUnary(iteratee));
-  }
-  while (++index < length) {
-    var fromIndex = 0,
-        value = values[index],
-        computed = iteratee ? iteratee(value) : value;
-
-    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
-      if (seen !== array) {
-        splice.call(seen, fromIndex, 1);
-      }
-      splice.call(array, fromIndex, 1);
-    }
-  }
-  return array;
-}
-
-module.exports = basePullAll;
Index: ckend/node_modules/lodash/_basePullAt.js
===================================================================
--- backend/node_modules/lodash/_basePullAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseUnset = require('./_baseUnset'),
-    isIndex = require('./_isIndex');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * The base implementation of `_.pullAt` without support for individual
- * indexes or capturing the removed elements.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {number[]} indexes The indexes of elements to remove.
- * @returns {Array} Returns `array`.
- */
-function basePullAt(array, indexes) {
-  var length = array ? indexes.length : 0,
-      lastIndex = length - 1;
-
-  while (length--) {
-    var index = indexes[length];
-    if (length == lastIndex || index !== previous) {
-      var previous = index;
-      if (isIndex(index)) {
-        splice.call(array, index, 1);
-      } else {
-        baseUnset(array, index);
-      }
-    }
-  }
-  return array;
-}
-
-module.exports = basePullAt;
Index: ckend/node_modules/lodash/_baseRandom.js
===================================================================
--- backend/node_modules/lodash/_baseRandom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor,
-    nativeRandom = Math.random;
-
-/**
- * The base implementation of `_.random` without support for returning
- * floating-point numbers.
- *
- * @private
- * @param {number} lower The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the random number.
- */
-function baseRandom(lower, upper) {
-  return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
-}
-
-module.exports = baseRandom;
Index: ckend/node_modules/lodash/_baseRange.js
===================================================================
--- backend/node_modules/lodash/_baseRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
-    nativeMax = Math.max;
-
-/**
- * The base implementation of `_.range` and `_.rangeRight` which doesn't
- * coerce arguments.
- *
- * @private
- * @param {number} start The start of the range.
- * @param {number} end The end of the range.
- * @param {number} step The value to increment or decrement by.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the range of numbers.
- */
-function baseRange(start, end, step, fromRight) {
-  var index = -1,
-      length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
-      result = Array(length);
-
-  while (length--) {
-    result[fromRight ? length : ++index] = start;
-    start += step;
-  }
-  return result;
-}
-
-module.exports = baseRange;
Index: ckend/node_modules/lodash/_baseReduce.js
===================================================================
--- backend/node_modules/lodash/_baseReduce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * The base implementation of `_.reduce` and `_.reduceRight`, without support
- * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @param {*} accumulator The initial value.
- * @param {boolean} initAccum Specify using the first or last element of
- *  `collection` as the initial value.
- * @param {Function} eachFunc The function to iterate over `collection`.
- * @returns {*} Returns the accumulated value.
- */
-function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
-  eachFunc(collection, function(value, index, collection) {
-    accumulator = initAccum
-      ? (initAccum = false, value)
-      : iteratee(accumulator, value, index, collection);
-  });
-  return accumulator;
-}
-
-module.exports = baseReduce;
Index: ckend/node_modules/lodash/_baseRepeat.js
===================================================================
--- backend/node_modules/lodash/_baseRepeat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor;
-
-/**
- * The base implementation of `_.repeat` which doesn't coerce arguments.
- *
- * @private
- * @param {string} string The string to repeat.
- * @param {number} n The number of times to repeat the string.
- * @returns {string} Returns the repeated string.
- */
-function baseRepeat(string, n) {
-  var result = '';
-  if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
-    return result;
-  }
-  // Leverage the exponentiation by squaring algorithm for a faster repeat.
-  // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
-  do {
-    if (n % 2) {
-      result += string;
-    }
-    n = nativeFloor(n / 2);
-    if (n) {
-      string += string;
-    }
-  } while (n);
-
-  return result;
-}
-
-module.exports = baseRepeat;
Index: ckend/node_modules/lodash/_baseRest.js
===================================================================
--- backend/node_modules/lodash/_baseRest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var identity = require('./identity'),
-    overRest = require('./_overRest'),
-    setToString = require('./_setToString');
-
-/**
- * The base implementation of `_.rest` which doesn't validate or coerce arguments.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- */
-function baseRest(func, start) {
-  return setToString(overRest(func, start, identity), func + '');
-}
-
-module.exports = baseRest;
Index: ckend/node_modules/lodash/_baseSample.js
===================================================================
--- backend/node_modules/lodash/_baseSample.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var arraySample = require('./_arraySample'),
-    values = require('./values');
-
-/**
- * The base implementation of `_.sample`.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- */
-function baseSample(collection) {
-  return arraySample(values(collection));
-}
-
-module.exports = baseSample;
Index: ckend/node_modules/lodash/_baseSampleSize.js
===================================================================
--- backend/node_modules/lodash/_baseSampleSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    shuffleSelf = require('./_shuffleSelf'),
-    values = require('./values');
-
-/**
- * The base implementation of `_.sampleSize` without param guards.
- *
- * @private
- * @param {Array|Object} collection The collection to sample.
- * @param {number} n The number of elements to sample.
- * @returns {Array} Returns the random elements.
- */
-function baseSampleSize(collection, n) {
-  var array = values(collection);
-  return shuffleSelf(array, baseClamp(n, 0, array.length));
-}
-
-module.exports = baseSampleSize;
Index: ckend/node_modules/lodash/_baseSet.js
===================================================================
--- backend/node_modules/lodash/_baseSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-var assignValue = require('./_assignValue'),
-    castPath = require('./_castPath'),
-    isIndex = require('./_isIndex'),
-    isObject = require('./isObject'),
-    toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.set`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseSet(object, path, value, customizer) {
-  if (!isObject(object)) {
-    return object;
-  }
-  path = castPath(path, object);
-
-  var index = -1,
-      length = path.length,
-      lastIndex = length - 1,
-      nested = object;
-
-  while (nested != null && ++index < length) {
-    var key = toKey(path[index]),
-        newValue = value;
-
-    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
-      return object;
-    }
-
-    if (index != lastIndex) {
-      var objValue = nested[key];
-      newValue = customizer ? customizer(objValue, key, nested) : undefined;
-      if (newValue === undefined) {
-        newValue = isObject(objValue)
-          ? objValue
-          : (isIndex(path[index + 1]) ? [] : {});
-      }
-    }
-    assignValue(nested, key, newValue);
-    nested = nested[key];
-  }
-  return object;
-}
-
-module.exports = baseSet;
Index: ckend/node_modules/lodash/_baseSetData.js
===================================================================
--- backend/node_modules/lodash/_baseSetData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var identity = require('./identity'),
-    metaMap = require('./_metaMap');
-
-/**
- * The base implementation of `setData` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
-var baseSetData = !metaMap ? identity : function(func, data) {
-  metaMap.set(func, data);
-  return func;
-};
-
-module.exports = baseSetData;
Index: ckend/node_modules/lodash/_baseSetToString.js
===================================================================
--- backend/node_modules/lodash/_baseSetToString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var constant = require('./constant'),
-    defineProperty = require('./_defineProperty'),
-    identity = require('./identity');
-
-/**
- * The base implementation of `setToString` without support for hot loop shorting.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var baseSetToString = !defineProperty ? identity : function(func, string) {
-  return defineProperty(func, 'toString', {
-    'configurable': true,
-    'enumerable': false,
-    'value': constant(string),
-    'writable': true
-  });
-};
-
-module.exports = baseSetToString;
Index: ckend/node_modules/lodash/_baseShuffle.js
===================================================================
--- backend/node_modules/lodash/_baseShuffle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var shuffleSelf = require('./_shuffleSelf'),
-    values = require('./values');
-
-/**
- * The base implementation of `_.shuffle`.
- *
- * @private
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- */
-function baseShuffle(collection) {
-  return shuffleSelf(values(collection));
-}
-
-module.exports = baseShuffle;
Index: ckend/node_modules/lodash/_baseSlice.js
===================================================================
--- backend/node_modules/lodash/_baseSlice.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * The base implementation of `_.slice` without an iteratee call guard.
- *
- * @private
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function baseSlice(array, start, end) {
-  var index = -1,
-      length = array.length;
-
-  if (start < 0) {
-    start = -start > length ? 0 : (length + start);
-  }
-  end = end > length ? length : end;
-  if (end < 0) {
-    end += length;
-  }
-  length = start > end ? 0 : ((end - start) >>> 0);
-  start >>>= 0;
-
-  var result = Array(length);
-  while (++index < length) {
-    result[index] = array[index + start];
-  }
-  return result;
-}
-
-module.exports = baseSlice;
Index: ckend/node_modules/lodash/_baseSome.js
===================================================================
--- backend/node_modules/lodash/_baseSome.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseEach = require('./_baseEach');
-
-/**
- * The base implementation of `_.some` without support for iteratee shorthands.
- *
- * @private
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} predicate The function invoked per iteration.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- *  else `false`.
- */
-function baseSome(collection, predicate) {
-  var result;
-
-  baseEach(collection, function(value, index, collection) {
-    result = predicate(value, index, collection);
-    return !result;
-  });
-  return !!result;
-}
-
-module.exports = baseSome;
Index: ckend/node_modules/lodash/_baseSortBy.js
===================================================================
--- backend/node_modules/lodash/_baseSortBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * The base implementation of `_.sortBy` which uses `comparer` to define the
- * sort order of `array` and replaces criteria objects with their corresponding
- * values.
- *
- * @private
- * @param {Array} array The array to sort.
- * @param {Function} comparer The function to define sort order.
- * @returns {Array} Returns `array`.
- */
-function baseSortBy(array, comparer) {
-  var length = array.length;
-
-  array.sort(comparer);
-  while (length--) {
-    array[length] = array[length].value;
-  }
-  return array;
-}
-
-module.exports = baseSortBy;
Index: ckend/node_modules/lodash/_baseSortedIndex.js
===================================================================
--- backend/node_modules/lodash/_baseSortedIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var baseSortedIndexBy = require('./_baseSortedIndexBy'),
-    identity = require('./identity'),
-    isSymbol = require('./isSymbol');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295,
-    HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-
-/**
- * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
- * performs a binary search of `array` to determine the index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- */
-function baseSortedIndex(array, value, retHighest) {
-  var low = 0,
-      high = array == null ? low : array.length;
-
-  if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
-    while (low < high) {
-      var mid = (low + high) >>> 1,
-          computed = array[mid];
-
-      if (computed !== null && !isSymbol(computed) &&
-          (retHighest ? (computed <= value) : (computed < value))) {
-        low = mid + 1;
-      } else {
-        high = mid;
-      }
-    }
-    return high;
-  }
-  return baseSortedIndexBy(array, value, identity, retHighest);
-}
-
-module.exports = baseSortedIndex;
Index: ckend/node_modules/lodash/_baseSortedIndexBy.js
===================================================================
--- backend/node_modules/lodash/_baseSortedIndexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295,
-    MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeFloor = Math.floor,
-    nativeMin = Math.min;
-
-/**
- * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
- * which invokes `iteratee` for `value` and each element of `array` to compute
- * their sort ranking. The iteratee is invoked with one argument; (value).
- *
- * @private
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} iteratee The iteratee invoked per element.
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- */
-function baseSortedIndexBy(array, value, iteratee, retHighest) {
-  var low = 0,
-      high = array == null ? 0 : array.length;
-  if (high === 0) {
-    return 0;
-  }
-
-  value = iteratee(value);
-  var valIsNaN = value !== value,
-      valIsNull = value === null,
-      valIsSymbol = isSymbol(value),
-      valIsUndefined = value === undefined;
-
-  while (low < high) {
-    var mid = nativeFloor((low + high) / 2),
-        computed = iteratee(array[mid]),
-        othIsDefined = computed !== undefined,
-        othIsNull = computed === null,
-        othIsReflexive = computed === computed,
-        othIsSymbol = isSymbol(computed);
-
-    if (valIsNaN) {
-      var setLow = retHighest || othIsReflexive;
-    } else if (valIsUndefined) {
-      setLow = othIsReflexive && (retHighest || othIsDefined);
-    } else if (valIsNull) {
-      setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
-    } else if (valIsSymbol) {
-      setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
-    } else if (othIsNull || othIsSymbol) {
-      setLow = false;
-    } else {
-      setLow = retHighest ? (computed <= value) : (computed < value);
-    }
-    if (setLow) {
-      low = mid + 1;
-    } else {
-      high = mid;
-    }
-  }
-  return nativeMin(high, MAX_ARRAY_INDEX);
-}
-
-module.exports = baseSortedIndexBy;
Index: ckend/node_modules/lodash/_baseSortedUniq.js
===================================================================
--- backend/node_modules/lodash/_baseSortedUniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var eq = require('./eq');
-
-/**
- * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
- * support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseSortedUniq(array, iteratee) {
-  var index = -1,
-      length = array.length,
-      resIndex = 0,
-      result = [];
-
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
-
-    if (!index || !eq(computed, seen)) {
-      var seen = computed;
-      result[resIndex++] = value === 0 ? 0 : value;
-    }
-  }
-  return result;
-}
-
-module.exports = baseSortedUniq;
Index: ckend/node_modules/lodash/_baseSum.js
===================================================================
--- backend/node_modules/lodash/_baseSum.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-/**
- * The base implementation of `_.sum` and `_.sumBy` without support for
- * iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to iterate over.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {number} Returns the sum.
- */
-function baseSum(array, iteratee) {
-  var result,
-      index = -1,
-      length = array.length;
-
-  while (++index < length) {
-    var current = iteratee(array[index]);
-    if (current !== undefined) {
-      result = result === undefined ? current : (result + current);
-    }
-  }
-  return result;
-}
-
-module.exports = baseSum;
Index: ckend/node_modules/lodash/_baseTimes.js
===================================================================
--- backend/node_modules/lodash/_baseTimes.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * The base implementation of `_.times` without support for iteratee shorthands
- * or max array length checks.
- *
- * @private
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} iteratee The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- */
-function baseTimes(n, iteratee) {
-  var index = -1,
-      result = Array(n);
-
-  while (++index < n) {
-    result[index] = iteratee(index);
-  }
-  return result;
-}
-
-module.exports = baseTimes;
Index: ckend/node_modules/lodash/_baseToNumber.js
===================================================================
--- backend/node_modules/lodash/_baseToNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/**
- * The base implementation of `_.toNumber` which doesn't ensure correct
- * conversions of binary, hexadecimal, or octal string values.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- */
-function baseToNumber(value) {
-  if (typeof value == 'number') {
-    return value;
-  }
-  if (isSymbol(value)) {
-    return NAN;
-  }
-  return +value;
-}
-
-module.exports = baseToNumber;
Index: ckend/node_modules/lodash/_baseToPairs.js
===================================================================
--- backend/node_modules/lodash/_baseToPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var arrayMap = require('./_arrayMap');
-
-/**
- * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
- * of key-value pairs for `object` corresponding to the property names of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the key-value pairs.
- */
-function baseToPairs(object, props) {
-  return arrayMap(props, function(key) {
-    return [key, object[key]];
-  });
-}
-
-module.exports = baseToPairs;
Index: ckend/node_modules/lodash/_baseToString.js
===================================================================
--- backend/node_modules/lodash/_baseToString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var Symbol = require('./_Symbol'),
-    arrayMap = require('./_arrayMap'),
-    isArray = require('./isArray'),
-    isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolToString = symbolProto ? symbolProto.toString : undefined;
-
-/**
- * The base implementation of `_.toString` which doesn't convert nullish
- * values to empty strings.
- *
- * @private
- * @param {*} value The value to process.
- * @returns {string} Returns the string.
- */
-function baseToString(value) {
-  // Exit early for strings to avoid a performance hit in some environments.
-  if (typeof value == 'string') {
-    return value;
-  }
-  if (isArray(value)) {
-    // Recursively convert values (susceptible to call stack limits).
-    return arrayMap(value, baseToString) + '';
-  }
-  if (isSymbol(value)) {
-    return symbolToString ? symbolToString.call(value) : '';
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-module.exports = baseToString;
Index: ckend/node_modules/lodash/_baseTrim.js
===================================================================
--- backend/node_modules/lodash/_baseTrim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var trimmedEndIndex = require('./_trimmedEndIndex');
-
-/** Used to match leading whitespace. */
-var reTrimStart = /^\s+/;
-
-/**
- * The base implementation of `_.trim`.
- *
- * @private
- * @param {string} string The string to trim.
- * @returns {string} Returns the trimmed string.
- */
-function baseTrim(string) {
-  return string
-    ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
-    : string;
-}
-
-module.exports = baseTrim;
Index: ckend/node_modules/lodash/_baseUnary.js
===================================================================
--- backend/node_modules/lodash/_baseUnary.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * The base implementation of `_.unary` without support for storing metadata.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- */
-function baseUnary(func) {
-  return function(value) {
-    return func(value);
-  };
-}
-
-module.exports = baseUnary;
Index: ckend/node_modules/lodash/_baseUniq.js
===================================================================
--- backend/node_modules/lodash/_baseUniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,72 +1,0 @@
-var SetCache = require('./_SetCache'),
-    arrayIncludes = require('./_arrayIncludes'),
-    arrayIncludesWith = require('./_arrayIncludesWith'),
-    cacheHas = require('./_cacheHas'),
-    createSet = require('./_createSet'),
-    setToArray = require('./_setToArray');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * The base implementation of `_.uniqBy` without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- */
-function baseUniq(array, iteratee, comparator) {
-  var index = -1,
-      includes = arrayIncludes,
-      length = array.length,
-      isCommon = true,
-      result = [],
-      seen = result;
-
-  if (comparator) {
-    isCommon = false;
-    includes = arrayIncludesWith;
-  }
-  else if (length >= LARGE_ARRAY_SIZE) {
-    var set = iteratee ? null : createSet(array);
-    if (set) {
-      return setToArray(set);
-    }
-    isCommon = false;
-    includes = cacheHas;
-    seen = new SetCache;
-  }
-  else {
-    seen = iteratee ? [] : result;
-  }
-  outer:
-  while (++index < length) {
-    var value = array[index],
-        computed = iteratee ? iteratee(value) : value;
-
-    value = (comparator || value !== 0) ? value : 0;
-    if (isCommon && computed === computed) {
-      var seenIndex = seen.length;
-      while (seenIndex--) {
-        if (seen[seenIndex] === computed) {
-          continue outer;
-        }
-      }
-      if (iteratee) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-    else if (!includes(seen, computed, comparator)) {
-      if (seen !== result) {
-        seen.push(computed);
-      }
-      result.push(value);
-    }
-  }
-  return result;
-}
-
-module.exports = baseUniq;
Index: ckend/node_modules/lodash/_baseUnset.js
===================================================================
--- backend/node_modules/lodash/_baseUnset.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var castPath = require('./_castPath'),
-    last = require('./last'),
-    parent = require('./_parent'),
-    toKey = require('./_toKey');
-
-/**
- * The base implementation of `_.unset`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The property path to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- */
-function baseUnset(object, path) {
-  path = castPath(path, object);
-  object = parent(object, path);
-  return object == null || delete object[toKey(last(path))];
-}
-
-module.exports = baseUnset;
Index: ckend/node_modules/lodash/_baseUpdate.js
===================================================================
--- backend/node_modules/lodash/_baseUpdate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseGet = require('./_baseGet'),
-    baseSet = require('./_baseSet');
-
-/**
- * The base implementation of `_.update`.
- *
- * @private
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to update.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize path creation.
- * @returns {Object} Returns `object`.
- */
-function baseUpdate(object, path, updater, customizer) {
-  return baseSet(object, path, updater(baseGet(object, path)), customizer);
-}
-
-module.exports = baseUpdate;
Index: ckend/node_modules/lodash/_baseValues.js
===================================================================
--- backend/node_modules/lodash/_baseValues.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var arrayMap = require('./_arrayMap');
-
-/**
- * The base implementation of `_.values` and `_.valuesIn` which creates an
- * array of `object` property values corresponding to the property names
- * of `props`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} props The property names to get values for.
- * @returns {Object} Returns the array of property values.
- */
-function baseValues(object, props) {
-  return arrayMap(props, function(key) {
-    return object[key];
-  });
-}
-
-module.exports = baseValues;
Index: ckend/node_modules/lodash/_baseWhile.js
===================================================================
--- backend/node_modules/lodash/_baseWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
- * without support for iteratee shorthands.
- *
- * @private
- * @param {Array} array The array to query.
- * @param {Function} predicate The function invoked per iteration.
- * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Array} Returns the slice of `array`.
- */
-function baseWhile(array, predicate, isDrop, fromRight) {
-  var length = array.length,
-      index = fromRight ? length : -1;
-
-  while ((fromRight ? index-- : ++index < length) &&
-    predicate(array[index], index, array)) {}
-
-  return isDrop
-    ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
-    : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
-}
-
-module.exports = baseWhile;
Index: ckend/node_modules/lodash/_baseWrapperValue.js
===================================================================
--- backend/node_modules/lodash/_baseWrapperValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    arrayPush = require('./_arrayPush'),
-    arrayReduce = require('./_arrayReduce');
-
-/**
- * The base implementation of `wrapperValue` which returns the result of
- * performing a sequence of actions on the unwrapped `value`, where each
- * successive action is supplied the return value of the previous.
- *
- * @private
- * @param {*} value The unwrapped value.
- * @param {Array} actions Actions to perform to resolve the unwrapped value.
- * @returns {*} Returns the resolved value.
- */
-function baseWrapperValue(value, actions) {
-  var result = value;
-  if (result instanceof LazyWrapper) {
-    result = result.value();
-  }
-  return arrayReduce(actions, function(result, action) {
-    return action.func.apply(action.thisArg, arrayPush([result], action.args));
-  }, result);
-}
-
-module.exports = baseWrapperValue;
Index: ckend/node_modules/lodash/_baseXor.js
===================================================================
--- backend/node_modules/lodash/_baseXor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseDifference = require('./_baseDifference'),
-    baseFlatten = require('./_baseFlatten'),
-    baseUniq = require('./_baseUniq');
-
-/**
- * The base implementation of methods like `_.xor`, without support for
- * iteratee shorthands, that accepts an array of arrays to inspect.
- *
- * @private
- * @param {Array} arrays The arrays to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of values.
- */
-function baseXor(arrays, iteratee, comparator) {
-  var length = arrays.length;
-  if (length < 2) {
-    return length ? baseUniq(arrays[0]) : [];
-  }
-  var index = -1,
-      result = Array(length);
-
-  while (++index < length) {
-    var array = arrays[index],
-        othIndex = -1;
-
-    while (++othIndex < length) {
-      if (othIndex != index) {
-        result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
-      }
-    }
-  }
-  return baseUniq(baseFlatten(result, 1), iteratee, comparator);
-}
-
-module.exports = baseXor;
Index: ckend/node_modules/lodash/_baseZipObject.js
===================================================================
--- backend/node_modules/lodash/_baseZipObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
- *
- * @private
- * @param {Array} props The property identifiers.
- * @param {Array} values The property values.
- * @param {Function} assignFunc The function to assign values.
- * @returns {Object} Returns the new object.
- */
-function baseZipObject(props, values, assignFunc) {
-  var index = -1,
-      length = props.length,
-      valsLength = values.length,
-      result = {};
-
-  while (++index < length) {
-    var value = index < valsLength ? values[index] : undefined;
-    assignFunc(result, props[index], value);
-  }
-  return result;
-}
-
-module.exports = baseZipObject;
Index: ckend/node_modules/lodash/_cacheHas.js
===================================================================
--- backend/node_modules/lodash/_cacheHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * Checks if a `cache` value for `key` exists.
- *
- * @private
- * @param {Object} cache The cache to query.
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function cacheHas(cache, key) {
-  return cache.has(key);
-}
-
-module.exports = cacheHas;
Index: ckend/node_modules/lodash/_castArrayLikeObject.js
===================================================================
--- backend/node_modules/lodash/_castArrayLikeObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Casts `value` to an empty array if it's not an array like object.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Array|Object} Returns the cast array-like object.
- */
-function castArrayLikeObject(value) {
-  return isArrayLikeObject(value) ? value : [];
-}
-
-module.exports = castArrayLikeObject;
Index: ckend/node_modules/lodash/_castFunction.js
===================================================================
--- backend/node_modules/lodash/_castFunction.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var identity = require('./identity');
-
-/**
- * Casts `value` to `identity` if it's not a function.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {Function} Returns cast function.
- */
-function castFunction(value) {
-  return typeof value == 'function' ? value : identity;
-}
-
-module.exports = castFunction;
Index: ckend/node_modules/lodash/_castPath.js
===================================================================
--- backend/node_modules/lodash/_castPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var isArray = require('./isArray'),
-    isKey = require('./_isKey'),
-    stringToPath = require('./_stringToPath'),
-    toString = require('./toString');
-
-/**
- * Casts `value` to a path array if it's not one.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {Object} [object] The object to query keys on.
- * @returns {Array} Returns the cast property path array.
- */
-function castPath(value, object) {
-  if (isArray(value)) {
-    return value;
-  }
-  return isKey(value, object) ? [value] : stringToPath(toString(value));
-}
-
-module.exports = castPath;
Index: ckend/node_modules/lodash/_castRest.js
===================================================================
--- backend/node_modules/lodash/_castRest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var baseRest = require('./_baseRest');
-
-/**
- * A `baseRest` alias which can be replaced with `identity` by module
- * replacement plugins.
- *
- * @private
- * @type {Function}
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
-var castRest = baseRest;
-
-module.exports = castRest;
Index: ckend/node_modules/lodash/_castSlice.js
===================================================================
--- backend/node_modules/lodash/_castSlice.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Casts `array` to a slice if it's needed.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {number} start The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the cast slice.
- */
-function castSlice(array, start, end) {
-  var length = array.length;
-  end = end === undefined ? length : end;
-  return (!start && end >= length) ? array : baseSlice(array, start, end);
-}
-
-module.exports = castSlice;
Index: ckend/node_modules/lodash/_charsEndIndex.js
===================================================================
--- backend/node_modules/lodash/_charsEndIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the last unmatched string symbol.
- */
-function charsEndIndex(strSymbols, chrSymbols) {
-  var index = strSymbols.length;
-
-  while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-  return index;
-}
-
-module.exports = charsEndIndex;
Index: ckend/node_modules/lodash/_charsStartIndex.js
===================================================================
--- backend/node_modules/lodash/_charsStartIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var baseIndexOf = require('./_baseIndexOf');
-
-/**
- * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
- * that is not found in the character symbols.
- *
- * @private
- * @param {Array} strSymbols The string symbols to inspect.
- * @param {Array} chrSymbols The character symbols to find.
- * @returns {number} Returns the index of the first unmatched string symbol.
- */
-function charsStartIndex(strSymbols, chrSymbols) {
-  var index = -1,
-      length = strSymbols.length;
-
-  while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-  return index;
-}
-
-module.exports = charsStartIndex;
Index: ckend/node_modules/lodash/_cloneArrayBuffer.js
===================================================================
--- backend/node_modules/lodash/_cloneArrayBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var Uint8Array = require('./_Uint8Array');
-
-/**
- * Creates a clone of `arrayBuffer`.
- *
- * @private
- * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
- * @returns {ArrayBuffer} Returns the cloned array buffer.
- */
-function cloneArrayBuffer(arrayBuffer) {
-  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
-  new Uint8Array(result).set(new Uint8Array(arrayBuffer));
-  return result;
-}
-
-module.exports = cloneArrayBuffer;
Index: ckend/node_modules/lodash/_cloneBuffer.js
===================================================================
--- backend/node_modules/lodash/_cloneBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var root = require('./_root');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined,
-    allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;
-
-/**
- * Creates a clone of  `buffer`.
- *
- * @private
- * @param {Buffer} buffer The buffer to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Buffer} Returns the cloned buffer.
- */
-function cloneBuffer(buffer, isDeep) {
-  if (isDeep) {
-    return buffer.slice();
-  }
-  var length = buffer.length,
-      result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
-
-  buffer.copy(result);
-  return result;
-}
-
-module.exports = cloneBuffer;
Index: ckend/node_modules/lodash/_cloneDataView.js
===================================================================
--- backend/node_modules/lodash/_cloneDataView.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer');
-
-/**
- * Creates a clone of `dataView`.
- *
- * @private
- * @param {Object} dataView The data view to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned data view.
- */
-function cloneDataView(dataView, isDeep) {
-  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
-  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-}
-
-module.exports = cloneDataView;
Index: ckend/node_modules/lodash/_cloneRegExp.js
===================================================================
--- backend/node_modules/lodash/_cloneRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-/** Used to match `RegExp` flags from their coerced string values. */
-var reFlags = /\w*$/;
-
-/**
- * Creates a clone of `regexp`.
- *
- * @private
- * @param {Object} regexp The regexp to clone.
- * @returns {Object} Returns the cloned regexp.
- */
-function cloneRegExp(regexp) {
-  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
-  result.lastIndex = regexp.lastIndex;
-  return result;
-}
-
-module.exports = cloneRegExp;
Index: ckend/node_modules/lodash/_cloneSymbol.js
===================================================================
--- backend/node_modules/lodash/_cloneSymbol.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var Symbol = require('./_Symbol');
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
-/**
- * Creates a clone of the `symbol` object.
- *
- * @private
- * @param {Object} symbol The symbol object to clone.
- * @returns {Object} Returns the cloned symbol object.
- */
-function cloneSymbol(symbol) {
-  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
-}
-
-module.exports = cloneSymbol;
Index: ckend/node_modules/lodash/_cloneTypedArray.js
===================================================================
--- backend/node_modules/lodash/_cloneTypedArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer');
-
-/**
- * Creates a clone of `typedArray`.
- *
- * @private
- * @param {Object} typedArray The typed array to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the cloned typed array.
- */
-function cloneTypedArray(typedArray, isDeep) {
-  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
-  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
-}
-
-module.exports = cloneTypedArray;
Index: ckend/node_modules/lodash/_compareAscending.js
===================================================================
--- backend/node_modules/lodash/_compareAscending.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var isSymbol = require('./isSymbol');
-
-/**
- * Compares values to sort them in ascending order.
- *
- * @private
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {number} Returns the sort order indicator for `value`.
- */
-function compareAscending(value, other) {
-  if (value !== other) {
-    var valIsDefined = value !== undefined,
-        valIsNull = value === null,
-        valIsReflexive = value === value,
-        valIsSymbol = isSymbol(value);
-
-    var othIsDefined = other !== undefined,
-        othIsNull = other === null,
-        othIsReflexive = other === other,
-        othIsSymbol = isSymbol(other);
-
-    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-        (valIsNull && othIsDefined && othIsReflexive) ||
-        (!valIsDefined && othIsReflexive) ||
-        !valIsReflexive) {
-      return 1;
-    }
-    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-        (othIsNull && valIsDefined && valIsReflexive) ||
-        (!othIsDefined && valIsReflexive) ||
-        !othIsReflexive) {
-      return -1;
-    }
-  }
-  return 0;
-}
-
-module.exports = compareAscending;
Index: ckend/node_modules/lodash/_compareMultiple.js
===================================================================
--- backend/node_modules/lodash/_compareMultiple.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var compareAscending = require('./_compareAscending');
-
-/**
- * Used by `_.orderBy` to compare multiple properties of a value to another
- * and stable sort them.
- *
- * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
- * specify an order of "desc" for descending or "asc" for ascending sort order
- * of corresponding values.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {boolean[]|string[]} orders The order to sort by for each property.
- * @returns {number} Returns the sort order indicator for `object`.
- */
-function compareMultiple(object, other, orders) {
-  var index = -1,
-      objCriteria = object.criteria,
-      othCriteria = other.criteria,
-      length = objCriteria.length,
-      ordersLength = orders.length;
-
-  while (++index < length) {
-    var result = compareAscending(objCriteria[index], othCriteria[index]);
-    if (result) {
-      if (index >= ordersLength) {
-        return result;
-      }
-      var order = orders[index];
-      return result * (order == 'desc' ? -1 : 1);
-    }
-  }
-  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-  // that causes it, under certain circumstances, to provide the same value for
-  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-  // for more details.
-  //
-  // This also ensures a stable sort in V8 and other engines.
-  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-  return object.index - other.index;
-}
-
-module.exports = compareMultiple;
Index: ckend/node_modules/lodash/_composeArgs.js
===================================================================
--- backend/node_modules/lodash/_composeArgs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates an array that is the composition of partially applied arguments,
- * placeholders, and provided arguments into a single array of arguments.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to prepend to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
-function composeArgs(args, partials, holders, isCurried) {
-  var argsIndex = -1,
-      argsLength = args.length,
-      holdersLength = holders.length,
-      leftIndex = -1,
-      leftLength = partials.length,
-      rangeLength = nativeMax(argsLength - holdersLength, 0),
-      result = Array(leftLength + rangeLength),
-      isUncurried = !isCurried;
-
-  while (++leftIndex < leftLength) {
-    result[leftIndex] = partials[leftIndex];
-  }
-  while (++argsIndex < holdersLength) {
-    if (isUncurried || argsIndex < argsLength) {
-      result[holders[argsIndex]] = args[argsIndex];
-    }
-  }
-  while (rangeLength--) {
-    result[leftIndex++] = args[argsIndex++];
-  }
-  return result;
-}
-
-module.exports = composeArgs;
Index: ckend/node_modules/lodash/_composeArgsRight.js
===================================================================
--- backend/node_modules/lodash/_composeArgsRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This function is like `composeArgs` except that the arguments composition
- * is tailored for `_.partialRight`.
- *
- * @private
- * @param {Array} args The provided arguments.
- * @param {Array} partials The arguments to append to those provided.
- * @param {Array} holders The `partials` placeholder indexes.
- * @params {boolean} [isCurried] Specify composing for a curried function.
- * @returns {Array} Returns the new array of composed arguments.
- */
-function composeArgsRight(args, partials, holders, isCurried) {
-  var argsIndex = -1,
-      argsLength = args.length,
-      holdersIndex = -1,
-      holdersLength = holders.length,
-      rightIndex = -1,
-      rightLength = partials.length,
-      rangeLength = nativeMax(argsLength - holdersLength, 0),
-      result = Array(rangeLength + rightLength),
-      isUncurried = !isCurried;
-
-  while (++argsIndex < rangeLength) {
-    result[argsIndex] = args[argsIndex];
-  }
-  var offset = argsIndex;
-  while (++rightIndex < rightLength) {
-    result[offset + rightIndex] = partials[rightIndex];
-  }
-  while (++holdersIndex < holdersLength) {
-    if (isUncurried || argsIndex < argsLength) {
-      result[offset + holders[holdersIndex]] = args[argsIndex++];
-    }
-  }
-  return result;
-}
-
-module.exports = composeArgsRight;
Index: ckend/node_modules/lodash/_copyArray.js
===================================================================
--- backend/node_modules/lodash/_copyArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * Copies the values of `source` to `array`.
- *
- * @private
- * @param {Array} source The array to copy values from.
- * @param {Array} [array=[]] The array to copy values to.
- * @returns {Array} Returns `array`.
- */
-function copyArray(source, array) {
-  var index = -1,
-      length = source.length;
-
-  array || (array = Array(length));
-  while (++index < length) {
-    array[index] = source[index];
-  }
-  return array;
-}
-
-module.exports = copyArray;
Index: ckend/node_modules/lodash/_copyObject.js
===================================================================
--- backend/node_modules/lodash/_copyObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var assignValue = require('./_assignValue'),
-    baseAssignValue = require('./_baseAssignValue');
-
-/**
- * Copies properties of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy properties from.
- * @param {Array} props The property identifiers to copy.
- * @param {Object} [object={}] The object to copy properties to.
- * @param {Function} [customizer] The function to customize copied values.
- * @returns {Object} Returns `object`.
- */
-function copyObject(source, props, object, customizer) {
-  var isNew = !object;
-  object || (object = {});
-
-  var index = -1,
-      length = props.length;
-
-  while (++index < length) {
-    var key = props[index];
-
-    var newValue = customizer
-      ? customizer(object[key], source[key], key, object, source)
-      : undefined;
-
-    if (newValue === undefined) {
-      newValue = source[key];
-    }
-    if (isNew) {
-      baseAssignValue(object, key, newValue);
-    } else {
-      assignValue(object, key, newValue);
-    }
-  }
-  return object;
-}
-
-module.exports = copyObject;
Index: ckend/node_modules/lodash/_copySymbols.js
===================================================================
--- backend/node_modules/lodash/_copySymbols.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var copyObject = require('./_copyObject'),
-    getSymbols = require('./_getSymbols');
-
-/**
- * Copies own symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbols(source, object) {
-  return copyObject(source, getSymbols(source), object);
-}
-
-module.exports = copySymbols;
Index: ckend/node_modules/lodash/_copySymbolsIn.js
===================================================================
--- backend/node_modules/lodash/_copySymbolsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var copyObject = require('./_copyObject'),
-    getSymbolsIn = require('./_getSymbolsIn');
-
-/**
- * Copies own and inherited symbols of `source` to `object`.
- *
- * @private
- * @param {Object} source The object to copy symbols from.
- * @param {Object} [object={}] The object to copy symbols to.
- * @returns {Object} Returns `object`.
- */
-function copySymbolsIn(source, object) {
-  return copyObject(source, getSymbolsIn(source), object);
-}
-
-module.exports = copySymbolsIn;
Index: ckend/node_modules/lodash/_coreJsData.js
===================================================================
--- backend/node_modules/lodash/_coreJsData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var root = require('./_root');
-
-/** Used to detect overreaching core-js shims. */
-var coreJsData = root['__core-js_shared__'];
-
-module.exports = coreJsData;
Index: ckend/node_modules/lodash/_countHolders.js
===================================================================
--- backend/node_modules/lodash/_countHolders.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * Gets the number of `placeholder` occurrences in `array`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} placeholder The placeholder to search for.
- * @returns {number} Returns the placeholder count.
- */
-function countHolders(array, placeholder) {
-  var length = array.length,
-      result = 0;
-
-  while (length--) {
-    if (array[length] === placeholder) {
-      ++result;
-    }
-  }
-  return result;
-}
-
-module.exports = countHolders;
Index: ckend/node_modules/lodash/_createAggregator.js
===================================================================
--- backend/node_modules/lodash/_createAggregator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var arrayAggregator = require('./_arrayAggregator'),
-    baseAggregator = require('./_baseAggregator'),
-    baseIteratee = require('./_baseIteratee'),
-    isArray = require('./isArray');
-
-/**
- * Creates a function like `_.groupBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} [initializer] The accumulator object initializer.
- * @returns {Function} Returns the new aggregator function.
- */
-function createAggregator(setter, initializer) {
-  return function(collection, iteratee) {
-    var func = isArray(collection) ? arrayAggregator : baseAggregator,
-        accumulator = initializer ? initializer() : {};
-
-    return func(collection, setter, baseIteratee(iteratee, 2), accumulator);
-  };
-}
-
-module.exports = createAggregator;
Index: ckend/node_modules/lodash/_createAssigner.js
===================================================================
--- backend/node_modules/lodash/_createAssigner.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseRest = require('./_baseRest'),
-    isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Creates a function like `_.assign`.
- *
- * @private
- * @param {Function} assigner The function to assign values.
- * @returns {Function} Returns the new assigner function.
- */
-function createAssigner(assigner) {
-  return baseRest(function(object, sources) {
-    var index = -1,
-        length = sources.length,
-        customizer = length > 1 ? sources[length - 1] : undefined,
-        guard = length > 2 ? sources[2] : undefined;
-
-    customizer = (assigner.length > 3 && typeof customizer == 'function')
-      ? (length--, customizer)
-      : undefined;
-
-    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-      customizer = length < 3 ? undefined : customizer;
-      length = 1;
-    }
-    object = Object(object);
-    while (++index < length) {
-      var source = sources[index];
-      if (source) {
-        assigner(object, source, index, customizer);
-      }
-    }
-    return object;
-  });
-}
-
-module.exports = createAssigner;
Index: ckend/node_modules/lodash/_createBaseEach.js
===================================================================
--- backend/node_modules/lodash/_createBaseEach.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var isArrayLike = require('./isArrayLike');
-
-/**
- * Creates a `baseEach` or `baseEachRight` function.
- *
- * @private
- * @param {Function} eachFunc The function to iterate over a collection.
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseEach(eachFunc, fromRight) {
-  return function(collection, iteratee) {
-    if (collection == null) {
-      return collection;
-    }
-    if (!isArrayLike(collection)) {
-      return eachFunc(collection, iteratee);
-    }
-    var length = collection.length,
-        index = fromRight ? length : -1,
-        iterable = Object(collection);
-
-    while ((fromRight ? index-- : ++index < length)) {
-      if (iteratee(iterable[index], index, iterable) === false) {
-        break;
-      }
-    }
-    return collection;
-  };
-}
-
-module.exports = createBaseEach;
Index: ckend/node_modules/lodash/_createBaseFor.js
===================================================================
--- backend/node_modules/lodash/_createBaseFor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/**
- * Creates a base function for methods like `_.forIn` and `_.forOwn`.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new base function.
- */
-function createBaseFor(fromRight) {
-  return function(object, iteratee, keysFunc) {
-    var index = -1,
-        iterable = Object(object),
-        props = keysFunc(object),
-        length = props.length;
-
-    while (length--) {
-      var key = props[fromRight ? length : ++index];
-      if (iteratee(iterable[key], key, iterable) === false) {
-        break;
-      }
-    }
-    return object;
-  };
-}
-
-module.exports = createBaseFor;
Index: ckend/node_modules/lodash/_createBind.js
===================================================================
--- backend/node_modules/lodash/_createBind.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var createCtor = require('./_createCtor'),
-    root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1;
-
-/**
- * Creates a function that wraps `func` to invoke it with the optional `this`
- * binding of `thisArg`.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createBind(func, bitmask, thisArg) {
-  var isBind = bitmask & WRAP_BIND_FLAG,
-      Ctor = createCtor(func);
-
-  function wrapper() {
-    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-    return fn.apply(isBind ? thisArg : this, arguments);
-  }
-  return wrapper;
-}
-
-module.exports = createBind;
Index: ckend/node_modules/lodash/_createCaseFirst.js
===================================================================
--- backend/node_modules/lodash/_createCaseFirst.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var castSlice = require('./_castSlice'),
-    hasUnicode = require('./_hasUnicode'),
-    stringToArray = require('./_stringToArray'),
-    toString = require('./toString');
-
-/**
- * Creates a function like `_.lowerFirst`.
- *
- * @private
- * @param {string} methodName The name of the `String` case method to use.
- * @returns {Function} Returns the new case function.
- */
-function createCaseFirst(methodName) {
-  return function(string) {
-    string = toString(string);
-
-    var strSymbols = hasUnicode(string)
-      ? stringToArray(string)
-      : undefined;
-
-    var chr = strSymbols
-      ? strSymbols[0]
-      : string.charAt(0);
-
-    var trailing = strSymbols
-      ? castSlice(strSymbols, 1).join('')
-      : string.slice(1);
-
-    return chr[methodName]() + trailing;
-  };
-}
-
-module.exports = createCaseFirst;
Index: ckend/node_modules/lodash/_createCompounder.js
===================================================================
--- backend/node_modules/lodash/_createCompounder.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var arrayReduce = require('./_arrayReduce'),
-    deburr = require('./deburr'),
-    words = require('./words');
-
-/** Used to compose unicode capture groups. */
-var rsApos = "['\u2019]";
-
-/** Used to match apostrophes. */
-var reApos = RegExp(rsApos, 'g');
-
-/**
- * Creates a function like `_.camelCase`.
- *
- * @private
- * @param {Function} callback The function to combine each word.
- * @returns {Function} Returns the new compounder function.
- */
-function createCompounder(callback) {
-  return function(string) {
-    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
-  };
-}
-
-module.exports = createCompounder;
Index: ckend/node_modules/lodash/_createCtor.js
===================================================================
--- backend/node_modules/lodash/_createCtor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseCreate = require('./_baseCreate'),
-    isObject = require('./isObject');
-
-/**
- * Creates a function that produces an instance of `Ctor` regardless of
- * whether it was invoked as part of a `new` expression or by `call` or `apply`.
- *
- * @private
- * @param {Function} Ctor The constructor to wrap.
- * @returns {Function} Returns the new wrapped function.
- */
-function createCtor(Ctor) {
-  return function() {
-    // Use a `switch` statement to work with class constructors. See
-    // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
-    // for more details.
-    var args = arguments;
-    switch (args.length) {
-      case 0: return new Ctor;
-      case 1: return new Ctor(args[0]);
-      case 2: return new Ctor(args[0], args[1]);
-      case 3: return new Ctor(args[0], args[1], args[2]);
-      case 4: return new Ctor(args[0], args[1], args[2], args[3]);
-      case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
-      case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
-      case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
-    }
-    var thisBinding = baseCreate(Ctor.prototype),
-        result = Ctor.apply(thisBinding, args);
-
-    // Mimic the constructor's `return` behavior.
-    // See https://es5.github.io/#x13.2.2 for more details.
-    return isObject(result) ? result : thisBinding;
-  };
-}
-
-module.exports = createCtor;
Index: ckend/node_modules/lodash/_createCurry.js
===================================================================
--- backend/node_modules/lodash/_createCurry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var apply = require('./_apply'),
-    createCtor = require('./_createCtor'),
-    createHybrid = require('./_createHybrid'),
-    createRecurry = require('./_createRecurry'),
-    getHolder = require('./_getHolder'),
-    replaceHolders = require('./_replaceHolders'),
-    root = require('./_root');
-
-/**
- * Creates a function that wraps `func` to enable currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {number} arity The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createCurry(func, bitmask, arity) {
-  var Ctor = createCtor(func);
-
-  function wrapper() {
-    var length = arguments.length,
-        args = Array(length),
-        index = length,
-        placeholder = getHolder(wrapper);
-
-    while (index--) {
-      args[index] = arguments[index];
-    }
-    var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
-      ? []
-      : replaceHolders(args, placeholder);
-
-    length -= holders.length;
-    if (length < arity) {
-      return createRecurry(
-        func, bitmask, createHybrid, wrapper.placeholder, undefined,
-        args, holders, undefined, undefined, arity - length);
-    }
-    var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-    return apply(fn, this, args);
-  }
-  return wrapper;
-}
-
-module.exports = createCurry;
Index: ckend/node_modules/lodash/_createFind.js
===================================================================
--- backend/node_modules/lodash/_createFind.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    isArrayLike = require('./isArrayLike'),
-    keys = require('./keys');
-
-/**
- * Creates a `_.find` or `_.findLast` function.
- *
- * @private
- * @param {Function} findIndexFunc The function to find the collection index.
- * @returns {Function} Returns the new find function.
- */
-function createFind(findIndexFunc) {
-  return function(collection, predicate, fromIndex) {
-    var iterable = Object(collection);
-    if (!isArrayLike(collection)) {
-      var iteratee = baseIteratee(predicate, 3);
-      collection = keys(collection);
-      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-    }
-    var index = findIndexFunc(collection, predicate, fromIndex);
-    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-  };
-}
-
-module.exports = createFind;
Index: ckend/node_modules/lodash/_createFlow.js
===================================================================
--- backend/node_modules/lodash/_createFlow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-var LodashWrapper = require('./_LodashWrapper'),
-    flatRest = require('./_flatRest'),
-    getData = require('./_getData'),
-    getFuncName = require('./_getFuncName'),
-    isArray = require('./isArray'),
-    isLaziable = require('./_isLaziable');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_FLAG = 8,
-    WRAP_PARTIAL_FLAG = 32,
-    WRAP_ARY_FLAG = 128,
-    WRAP_REARG_FLAG = 256;
-
-/**
- * Creates a `_.flow` or `_.flowRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new flow function.
- */
-function createFlow(fromRight) {
-  return flatRest(function(funcs) {
-    var length = funcs.length,
-        index = length,
-        prereq = LodashWrapper.prototype.thru;
-
-    if (fromRight) {
-      funcs.reverse();
-    }
-    while (index--) {
-      var func = funcs[index];
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
-        var wrapper = new LodashWrapper([], true);
-      }
-    }
-    index = wrapper ? index : length;
-    while (++index < length) {
-      func = funcs[index];
-
-      var funcName = getFuncName(func),
-          data = funcName == 'wrapper' ? getData(func) : undefined;
-
-      if (data && isLaziable(data[0]) &&
-            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
-            !data[4].length && data[9] == 1
-          ) {
-        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
-      } else {
-        wrapper = (func.length == 1 && isLaziable(func))
-          ? wrapper[funcName]()
-          : wrapper.thru(func);
-      }
-    }
-    return function() {
-      var args = arguments,
-          value = args[0];
-
-      if (wrapper && args.length == 1 && isArray(value)) {
-        return wrapper.plant(value).value();
-      }
-      var index = 0,
-          result = length ? funcs[index].apply(this, args) : value;
-
-      while (++index < length) {
-        result = funcs[index].call(this, result);
-      }
-      return result;
-    };
-  });
-}
-
-module.exports = createFlow;
Index: ckend/node_modules/lodash/_createHybrid.js
===================================================================
--- backend/node_modules/lodash/_createHybrid.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,92 +1,0 @@
-var composeArgs = require('./_composeArgs'),
-    composeArgsRight = require('./_composeArgsRight'),
-    countHolders = require('./_countHolders'),
-    createCtor = require('./_createCtor'),
-    createRecurry = require('./_createRecurry'),
-    getHolder = require('./_getHolder'),
-    reorder = require('./_reorder'),
-    replaceHolders = require('./_replaceHolders'),
-    root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_CURRY_FLAG = 8,
-    WRAP_CURRY_RIGHT_FLAG = 16,
-    WRAP_ARY_FLAG = 128,
-    WRAP_FLIP_FLAG = 512;
-
-/**
- * Creates a function that wraps `func` to invoke it with optional `this`
- * binding of `thisArg`, partial application, and currying.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- *  the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [partialsRight] The arguments to append to those provided
- *  to the new function.
- * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
-  var isAry = bitmask & WRAP_ARY_FLAG,
-      isBind = bitmask & WRAP_BIND_FLAG,
-      isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
-      isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
-      isFlip = bitmask & WRAP_FLIP_FLAG,
-      Ctor = isBindKey ? undefined : createCtor(func);
-
-  function wrapper() {
-    var length = arguments.length,
-        args = Array(length),
-        index = length;
-
-    while (index--) {
-      args[index] = arguments[index];
-    }
-    if (isCurried) {
-      var placeholder = getHolder(wrapper),
-          holdersCount = countHolders(args, placeholder);
-    }
-    if (partials) {
-      args = composeArgs(args, partials, holders, isCurried);
-    }
-    if (partialsRight) {
-      args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
-    }
-    length -= holdersCount;
-    if (isCurried && length < arity) {
-      var newHolders = replaceHolders(args, placeholder);
-      return createRecurry(
-        func, bitmask, createHybrid, wrapper.placeholder, thisArg,
-        args, newHolders, argPos, ary, arity - length
-      );
-    }
-    var thisBinding = isBind ? thisArg : this,
-        fn = isBindKey ? thisBinding[func] : func;
-
-    length = args.length;
-    if (argPos) {
-      args = reorder(args, argPos);
-    } else if (isFlip && length > 1) {
-      args.reverse();
-    }
-    if (isAry && ary < length) {
-      args.length = ary;
-    }
-    if (this && this !== root && this instanceof wrapper) {
-      fn = Ctor || createCtor(fn);
-    }
-    return fn.apply(thisBinding, args);
-  }
-  return wrapper;
-}
-
-module.exports = createHybrid;
Index: ckend/node_modules/lodash/_createInverter.js
===================================================================
--- backend/node_modules/lodash/_createInverter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseInverter = require('./_baseInverter');
-
-/**
- * Creates a function like `_.invertBy`.
- *
- * @private
- * @param {Function} setter The function to set accumulator values.
- * @param {Function} toIteratee The function to resolve iteratees.
- * @returns {Function} Returns the new inverter function.
- */
-function createInverter(setter, toIteratee) {
-  return function(object, iteratee) {
-    return baseInverter(object, setter, toIteratee(iteratee), {});
-  };
-}
-
-module.exports = createInverter;
Index: ckend/node_modules/lodash/_createMathOperation.js
===================================================================
--- backend/node_modules/lodash/_createMathOperation.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var baseToNumber = require('./_baseToNumber'),
-    baseToString = require('./_baseToString');
-
-/**
- * Creates a function that performs a mathematical operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @param {number} [defaultValue] The value used for `undefined` arguments.
- * @returns {Function} Returns the new mathematical operation function.
- */
-function createMathOperation(operator, defaultValue) {
-  return function(value, other) {
-    var result;
-    if (value === undefined && other === undefined) {
-      return defaultValue;
-    }
-    if (value !== undefined) {
-      result = value;
-    }
-    if (other !== undefined) {
-      if (result === undefined) {
-        return other;
-      }
-      if (typeof value == 'string' || typeof other == 'string') {
-        value = baseToString(value);
-        other = baseToString(other);
-      } else {
-        value = baseToNumber(value);
-        other = baseToNumber(other);
-      }
-      result = operator(value, other);
-    }
-    return result;
-  };
-}
-
-module.exports = createMathOperation;
Index: ckend/node_modules/lodash/_createOver.js
===================================================================
--- backend/node_modules/lodash/_createOver.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var apply = require('./_apply'),
-    arrayMap = require('./_arrayMap'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    baseUnary = require('./_baseUnary'),
-    flatRest = require('./_flatRest');
-
-/**
- * Creates a function like `_.over`.
- *
- * @private
- * @param {Function} arrayFunc The function to iterate over iteratees.
- * @returns {Function} Returns the new over function.
- */
-function createOver(arrayFunc) {
-  return flatRest(function(iteratees) {
-    iteratees = arrayMap(iteratees, baseUnary(baseIteratee));
-    return baseRest(function(args) {
-      var thisArg = this;
-      return arrayFunc(iteratees, function(iteratee) {
-        return apply(iteratee, thisArg, args);
-      });
-    });
-  });
-}
-
-module.exports = createOver;
Index: ckend/node_modules/lodash/_createPadding.js
===================================================================
--- backend/node_modules/lodash/_createPadding.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseRepeat = require('./_baseRepeat'),
-    baseToString = require('./_baseToString'),
-    castSlice = require('./_castSlice'),
-    hasUnicode = require('./_hasUnicode'),
-    stringSize = require('./_stringSize'),
-    stringToArray = require('./_stringToArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil;
-
-/**
- * Creates the padding for `string` based on `length`. The `chars` string
- * is truncated if the number of characters exceeds `length`.
- *
- * @private
- * @param {number} length The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padding for `string`.
- */
-function createPadding(length, chars) {
-  chars = chars === undefined ? ' ' : baseToString(chars);
-
-  var charsLength = chars.length;
-  if (charsLength < 2) {
-    return charsLength ? baseRepeat(chars, length) : chars;
-  }
-  var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
-  return hasUnicode(chars)
-    ? castSlice(stringToArray(result), 0, length).join('')
-    : result.slice(0, length);
-}
-
-module.exports = createPadding;
Index: ckend/node_modules/lodash/_createPartial.js
===================================================================
--- backend/node_modules/lodash/_createPartial.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var apply = require('./_apply'),
-    createCtor = require('./_createCtor'),
-    root = require('./_root');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1;
-
-/**
- * Creates a function that wraps `func` to invoke it with the `this` binding
- * of `thisArg` and `partials` prepended to the arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {Array} partials The arguments to prepend to those provided to
- *  the new function.
- * @returns {Function} Returns the new wrapped function.
- */
-function createPartial(func, bitmask, thisArg, partials) {
-  var isBind = bitmask & WRAP_BIND_FLAG,
-      Ctor = createCtor(func);
-
-  function wrapper() {
-    var argsIndex = -1,
-        argsLength = arguments.length,
-        leftIndex = -1,
-        leftLength = partials.length,
-        args = Array(leftLength + argsLength),
-        fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
-    while (++leftIndex < leftLength) {
-      args[leftIndex] = partials[leftIndex];
-    }
-    while (argsLength--) {
-      args[leftIndex++] = arguments[++argsIndex];
-    }
-    return apply(fn, isBind ? thisArg : this, args);
-  }
-  return wrapper;
-}
-
-module.exports = createPartial;
Index: ckend/node_modules/lodash/_createRange.js
===================================================================
--- backend/node_modules/lodash/_createRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var baseRange = require('./_baseRange'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toFinite = require('./toFinite');
-
-/**
- * Creates a `_.range` or `_.rangeRight` function.
- *
- * @private
- * @param {boolean} [fromRight] Specify iterating from right to left.
- * @returns {Function} Returns the new range function.
- */
-function createRange(fromRight) {
-  return function(start, end, step) {
-    if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
-      end = step = undefined;
-    }
-    // Ensure the sign of `-0` is preserved.
-    start = toFinite(start);
-    if (end === undefined) {
-      end = start;
-      start = 0;
-    } else {
-      end = toFinite(end);
-    }
-    step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
-    return baseRange(start, end, step, fromRight);
-  };
-}
-
-module.exports = createRange;
Index: ckend/node_modules/lodash/_createRecurry.js
===================================================================
--- backend/node_modules/lodash/_createRecurry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var isLaziable = require('./_isLaziable'),
-    setData = require('./_setData'),
-    setWrapToString = require('./_setWrapToString');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_CURRY_BOUND_FLAG = 4,
-    WRAP_CURRY_FLAG = 8,
-    WRAP_PARTIAL_FLAG = 32,
-    WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/**
- * Creates a function that wraps `func` to continue currying.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @param {Function} wrapFunc The function to create the `func` wrapper.
- * @param {*} placeholder The placeholder value.
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to prepend to those provided to
- *  the new function.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
-  var isCurry = bitmask & WRAP_CURRY_FLAG,
-      newHolders = isCurry ? holders : undefined,
-      newHoldersRight = isCurry ? undefined : holders,
-      newPartials = isCurry ? partials : undefined,
-      newPartialsRight = isCurry ? undefined : partials;
-
-  bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
-  bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
-
-  if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
-    bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
-  }
-  var newData = [
-    func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
-    newHoldersRight, argPos, ary, arity
-  ];
-
-  var result = wrapFunc.apply(undefined, newData);
-  if (isLaziable(func)) {
-    setData(result, newData);
-  }
-  result.placeholder = placeholder;
-  return setWrapToString(result, func, bitmask);
-}
-
-module.exports = createRecurry;
Index: ckend/node_modules/lodash/_createRelationalOperation.js
===================================================================
--- backend/node_modules/lodash/_createRelationalOperation.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var toNumber = require('./toNumber');
-
-/**
- * Creates a function that performs a relational operation on two values.
- *
- * @private
- * @param {Function} operator The function to perform the operation.
- * @returns {Function} Returns the new relational operation function.
- */
-function createRelationalOperation(operator) {
-  return function(value, other) {
-    if (!(typeof value == 'string' && typeof other == 'string')) {
-      value = toNumber(value);
-      other = toNumber(other);
-    }
-    return operator(value, other);
-  };
-}
-
-module.exports = createRelationalOperation;
Index: ckend/node_modules/lodash/_createRound.js
===================================================================
--- backend/node_modules/lodash/_createRound.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var root = require('./_root'),
-    toInteger = require('./toInteger'),
-    toNumber = require('./toNumber'),
-    toString = require('./toString');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsFinite = root.isFinite,
-    nativeMin = Math.min;
-
-/**
- * Creates a function like `_.round`.
- *
- * @private
- * @param {string} methodName The name of the `Math` method to use when rounding.
- * @returns {Function} Returns the new round function.
- */
-function createRound(methodName) {
-  var func = Math[methodName];
-  return function(number, precision) {
-    number = toNumber(number);
-    precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-    if (precision && nativeIsFinite(number)) {
-      // Shift with exponential notation to avoid floating-point issues.
-      // See [MDN](https://mdn.io/round#Examples) for more details.
-      var pair = (toString(number) + 'e').split('e'),
-          value = func(pair[0] + 'e' + (+pair[1] + precision));
-
-      pair = (toString(value) + 'e').split('e');
-      return +(pair[0] + 'e' + (+pair[1] - precision));
-    }
-    return func(number);
-  };
-}
-
-module.exports = createRound;
Index: ckend/node_modules/lodash/_createSet.js
===================================================================
--- backend/node_modules/lodash/_createSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var Set = require('./_Set'),
-    noop = require('./noop'),
-    setToArray = require('./_setToArray');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Creates a set object of `values`.
- *
- * @private
- * @param {Array} values The values to add to the set.
- * @returns {Object} Returns the new set.
- */
-var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
-  return new Set(values);
-};
-
-module.exports = createSet;
Index: ckend/node_modules/lodash/_createToPairs.js
===================================================================
--- backend/node_modules/lodash/_createToPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var baseToPairs = require('./_baseToPairs'),
-    getTag = require('./_getTag'),
-    mapToArray = require('./_mapToArray'),
-    setToPairs = require('./_setToPairs');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
-
-/**
- * Creates a `_.toPairs` or `_.toPairsIn` function.
- *
- * @private
- * @param {Function} keysFunc The function to get the keys of a given object.
- * @returns {Function} Returns the new pairs function.
- */
-function createToPairs(keysFunc) {
-  return function(object) {
-    var tag = getTag(object);
-    if (tag == mapTag) {
-      return mapToArray(object);
-    }
-    if (tag == setTag) {
-      return setToPairs(object);
-    }
-    return baseToPairs(object, keysFunc(object));
-  };
-}
-
-module.exports = createToPairs;
Index: ckend/node_modules/lodash/_createWrap.js
===================================================================
--- backend/node_modules/lodash/_createWrap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-var baseSetData = require('./_baseSetData'),
-    createBind = require('./_createBind'),
-    createCurry = require('./_createCurry'),
-    createHybrid = require('./_createHybrid'),
-    createPartial = require('./_createPartial'),
-    getData = require('./_getData'),
-    mergeData = require('./_mergeData'),
-    setData = require('./_setData'),
-    setWrapToString = require('./_setWrapToString'),
-    toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_CURRY_FLAG = 8,
-    WRAP_CURRY_RIGHT_FLAG = 16,
-    WRAP_PARTIAL_FLAG = 32,
-    WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that either curries or invokes `func` with optional
- * `this` binding and partially applied arguments.
- *
- * @private
- * @param {Function|string} func The function or method name to wrap.
- * @param {number} bitmask The bitmask flags.
- *    1 - `_.bind`
- *    2 - `_.bindKey`
- *    4 - `_.curry` or `_.curryRight` of a bound function
- *    8 - `_.curry`
- *   16 - `_.curryRight`
- *   32 - `_.partial`
- *   64 - `_.partialRight`
- *  128 - `_.rearg`
- *  256 - `_.ary`
- *  512 - `_.flip`
- * @param {*} [thisArg] The `this` binding of `func`.
- * @param {Array} [partials] The arguments to be partially applied.
- * @param {Array} [holders] The `partials` placeholder indexes.
- * @param {Array} [argPos] The argument positions of the new function.
- * @param {number} [ary] The arity cap of `func`.
- * @param {number} [arity] The arity of `func`.
- * @returns {Function} Returns the new wrapped function.
- */
-function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
-  var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
-  if (!isBindKey && typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var length = partials ? partials.length : 0;
-  if (!length) {
-    bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
-    partials = holders = undefined;
-  }
-  ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
-  arity = arity === undefined ? arity : toInteger(arity);
-  length -= holders ? holders.length : 0;
-
-  if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
-    var partialsRight = partials,
-        holdersRight = holders;
-
-    partials = holders = undefined;
-  }
-  var data = isBindKey ? undefined : getData(func);
-
-  var newData = [
-    func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
-    argPos, ary, arity
-  ];
-
-  if (data) {
-    mergeData(newData, data);
-  }
-  func = newData[0];
-  bitmask = newData[1];
-  thisArg = newData[2];
-  partials = newData[3];
-  holders = newData[4];
-  arity = newData[9] = newData[9] === undefined
-    ? (isBindKey ? 0 : func.length)
-    : nativeMax(newData[9] - length, 0);
-
-  if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
-    bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
-  }
-  if (!bitmask || bitmask == WRAP_BIND_FLAG) {
-    var result = createBind(func, bitmask, thisArg);
-  } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
-    result = createCurry(func, bitmask, arity);
-  } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
-    result = createPartial(func, bitmask, thisArg, partials);
-  } else {
-    result = createHybrid.apply(undefined, newData);
-  }
-  var setter = data ? baseSetData : setData;
-  return setWrapToString(setter(result, newData), func, bitmask);
-}
-
-module.exports = createWrap;
Index: ckend/node_modules/lodash/_customDefaultsAssignIn.js
===================================================================
--- backend/node_modules/lodash/_customDefaultsAssignIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var eq = require('./eq');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
- * of source objects to the destination object for all destination properties
- * that resolve to `undefined`.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to assign.
- * @param {Object} object The parent object of `objValue`.
- * @returns {*} Returns the value to assign.
- */
-function customDefaultsAssignIn(objValue, srcValue, key, object) {
-  if (objValue === undefined ||
-      (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-    return srcValue;
-  }
-  return objValue;
-}
-
-module.exports = customDefaultsAssignIn;
Index: ckend/node_modules/lodash/_customDefaultsMerge.js
===================================================================
--- backend/node_modules/lodash/_customDefaultsMerge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseMerge = require('./_baseMerge'),
-    isObject = require('./isObject');
-
-/**
- * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
- * objects into destination objects that are passed thru.
- *
- * @private
- * @param {*} objValue The destination value.
- * @param {*} srcValue The source value.
- * @param {string} key The key of the property to merge.
- * @param {Object} object The parent object of `objValue`.
- * @param {Object} source The parent object of `srcValue`.
- * @param {Object} [stack] Tracks traversed source values and their merged
- *  counterparts.
- * @returns {*} Returns the value to assign.
- */
-function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
-  if (isObject(objValue) && isObject(srcValue)) {
-    // Recursively merge objects and arrays (susceptible to call stack limits).
-    stack.set(srcValue, objValue);
-    baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
-    stack['delete'](srcValue);
-  }
-  return objValue;
-}
-
-module.exports = customDefaultsMerge;
Index: ckend/node_modules/lodash/_customOmitClone.js
===================================================================
--- backend/node_modules/lodash/_customOmitClone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var isPlainObject = require('./isPlainObject');
-
-/**
- * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
- * objects.
- *
- * @private
- * @param {*} value The value to inspect.
- * @param {string} key The key of the property to inspect.
- * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
- */
-function customOmitClone(value) {
-  return isPlainObject(value) ? undefined : value;
-}
-
-module.exports = customOmitClone;
Index: ckend/node_modules/lodash/_deburrLetter.js
===================================================================
--- backend/node_modules/lodash/_deburrLetter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map Latin Unicode letters to basic Latin letters. */
-var deburredLetters = {
-  // Latin-1 Supplement block.
-  '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
-  '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
-  '\xc7': 'C',  '\xe7': 'c',
-  '\xd0': 'D',  '\xf0': 'd',
-  '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
-  '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
-  '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
-  '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
-  '\xd1': 'N',  '\xf1': 'n',
-  '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
-  '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
-  '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
-  '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
-  '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
-  '\xc6': 'Ae', '\xe6': 'ae',
-  '\xde': 'Th', '\xfe': 'th',
-  '\xdf': 'ss',
-  // Latin Extended-A block.
-  '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
-  '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
-  '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
-  '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
-  '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
-  '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
-  '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
-  '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
-  '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
-  '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
-  '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
-  '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
-  '\u0134': 'J',  '\u0135': 'j',
-  '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
-  '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
-  '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
-  '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
-  '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
-  '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
-  '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
-  '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
-  '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
-  '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
-  '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
-  '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
-  '\u0163': 't',  '\u0165': 't', '\u0167': 't',
-  '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
-  '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
-  '\u0174': 'W',  '\u0175': 'w',
-  '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
-  '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
-  '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
-  '\u0132': 'IJ', '\u0133': 'ij',
-  '\u0152': 'Oe', '\u0153': 'oe',
-  '\u0149': "'n", '\u017f': 's'
-};
-
-/**
- * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
- * letters to basic Latin letters.
- *
- * @private
- * @param {string} letter The matched letter to deburr.
- * @returns {string} Returns the deburred letter.
- */
-var deburrLetter = basePropertyOf(deburredLetters);
-
-module.exports = deburrLetter;
Index: ckend/node_modules/lodash/_defineProperty.js
===================================================================
--- backend/node_modules/lodash/_defineProperty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-var getNative = require('./_getNative');
-
-var defineProperty = (function() {
-  try {
-    var func = getNative(Object, 'defineProperty');
-    func({}, '', {});
-    return func;
-  } catch (e) {}
-}());
-
-module.exports = defineProperty;
Index: ckend/node_modules/lodash/_equalArrays.js
===================================================================
--- backend/node_modules/lodash/_equalArrays.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-var SetCache = require('./_SetCache'),
-    arraySome = require('./_arraySome'),
-    cacheHas = require('./_cacheHas');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
-
-/**
- * A specialized version of `baseIsEqualDeep` for arrays with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Array} array The array to compare.
- * @param {Array} other The other array to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `array` and `other` objects.
- * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
- */
-function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-      arrLength = array.length,
-      othLength = other.length;
-
-  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-    return false;
-  }
-  // Check that cyclic values are equal.
-  var arrStacked = stack.get(array);
-  var othStacked = stack.get(other);
-  if (arrStacked && othStacked) {
-    return arrStacked == other && othStacked == array;
-  }
-  var index = -1,
-      result = true,
-      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-
-  stack.set(array, other);
-  stack.set(other, array);
-
-  // Ignore non-index properties.
-  while (++index < arrLength) {
-    var arrValue = array[index],
-        othValue = other[index];
-
-    if (customizer) {
-      var compared = isPartial
-        ? customizer(othValue, arrValue, index, other, array, stack)
-        : customizer(arrValue, othValue, index, array, other, stack);
-    }
-    if (compared !== undefined) {
-      if (compared) {
-        continue;
-      }
-      result = false;
-      break;
-    }
-    // Recursively compare arrays (susceptible to call stack limits).
-    if (seen) {
-      if (!arraySome(other, function(othValue, othIndex) {
-            if (!cacheHas(seen, othIndex) &&
-                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-              return seen.push(othIndex);
-            }
-          })) {
-        result = false;
-        break;
-      }
-    } else if (!(
-          arrValue === othValue ||
-            equalFunc(arrValue, othValue, bitmask, customizer, stack)
-        )) {
-      result = false;
-      break;
-    }
-  }
-  stack['delete'](array);
-  stack['delete'](other);
-  return result;
-}
-
-module.exports = equalArrays;
Index: ckend/node_modules/lodash/_equalByTag.js
===================================================================
--- backend/node_modules/lodash/_equalByTag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,112 +1,0 @@
-var Symbol = require('./_Symbol'),
-    Uint8Array = require('./_Uint8Array'),
-    eq = require('./eq'),
-    equalArrays = require('./_equalArrays'),
-    mapToArray = require('./_mapToArray'),
-    setToArray = require('./_setToArray');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1,
-    COMPARE_UNORDERED_FLAG = 2;
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    errorTag = '[object Error]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]';
-
-/** Used to convert symbols to primitives and strings. */
-var symbolProto = Symbol ? Symbol.prototype : undefined,
-    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
-
-/**
- * A specialized version of `baseIsEqualDeep` for comparing objects of
- * the same `toStringTag`.
- *
- * **Note:** This function only supports comparing values with tags of
- * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {string} tag The `toStringTag` of the objects to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-  switch (tag) {
-    case dataViewTag:
-      if ((object.byteLength != other.byteLength) ||
-          (object.byteOffset != other.byteOffset)) {
-        return false;
-      }
-      object = object.buffer;
-      other = other.buffer;
-
-    case arrayBufferTag:
-      if ((object.byteLength != other.byteLength) ||
-          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
-        return false;
-      }
-      return true;
-
-    case boolTag:
-    case dateTag:
-    case numberTag:
-      // Coerce booleans to `1` or `0` and dates to milliseconds.
-      // Invalid dates are coerced to `NaN`.
-      return eq(+object, +other);
-
-    case errorTag:
-      return object.name == other.name && object.message == other.message;
-
-    case regexpTag:
-    case stringTag:
-      // Coerce regexes to strings and treat strings, primitives and objects,
-      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-      // for more details.
-      return object == (other + '');
-
-    case mapTag:
-      var convert = mapToArray;
-
-    case setTag:
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
-      convert || (convert = setToArray);
-
-      if (object.size != other.size && !isPartial) {
-        return false;
-      }
-      // Assume cyclic values are equal.
-      var stacked = stack.get(object);
-      if (stacked) {
-        return stacked == other;
-      }
-      bitmask |= COMPARE_UNORDERED_FLAG;
-
-      // Recursively compare objects (susceptible to call stack limits).
-      stack.set(object, other);
-      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
-      stack['delete'](object);
-      return result;
-
-    case symbolTag:
-      if (symbolValueOf) {
-        return symbolValueOf.call(object) == symbolValueOf.call(other);
-      }
-  }
-  return false;
-}
-
-module.exports = equalByTag;
Index: ckend/node_modules/lodash/_equalObjects.js
===================================================================
--- backend/node_modules/lodash/_equalObjects.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-var getAllKeys = require('./_getAllKeys');
-
-/** Used to compose bitmasks for value comparisons. */
-var COMPARE_PARTIAL_FLAG = 1;
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * A specialized version of `baseIsEqualDeep` for objects with support for
- * partial deep comparisons.
- *
- * @private
- * @param {Object} object The object to compare.
- * @param {Object} other The other object to compare.
- * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
- * @param {Function} customizer The function to customize comparisons.
- * @param {Function} equalFunc The function to determine equivalents of values.
- * @param {Object} stack Tracks traversed `object` and `other` objects.
- * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
- */
-function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-      objProps = getAllKeys(object),
-      objLength = objProps.length,
-      othProps = getAllKeys(other),
-      othLength = othProps.length;
-
-  if (objLength != othLength && !isPartial) {
-    return false;
-  }
-  var index = objLength;
-  while (index--) {
-    var key = objProps[index];
-    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-      return false;
-    }
-  }
-  // Check that cyclic values are equal.
-  var objStacked = stack.get(object);
-  var othStacked = stack.get(other);
-  if (objStacked && othStacked) {
-    return objStacked == other && othStacked == object;
-  }
-  var result = true;
-  stack.set(object, other);
-  stack.set(other, object);
-
-  var skipCtor = isPartial;
-  while (++index < objLength) {
-    key = objProps[index];
-    var objValue = object[key],
-        othValue = other[key];
-
-    if (customizer) {
-      var compared = isPartial
-        ? customizer(othValue, objValue, key, other, object, stack)
-        : customizer(objValue, othValue, key, object, other, stack);
-    }
-    // Recursively compare objects (susceptible to call stack limits).
-    if (!(compared === undefined
-          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-          : compared
-        )) {
-      result = false;
-      break;
-    }
-    skipCtor || (skipCtor = key == 'constructor');
-  }
-  if (result && !skipCtor) {
-    var objCtor = object.constructor,
-        othCtor = other.constructor;
-
-    // Non `Object` object instances with different constructors are not equal.
-    if (objCtor != othCtor &&
-        ('constructor' in object && 'constructor' in other) &&
-        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-      result = false;
-    }
-  }
-  stack['delete'](object);
-  stack['delete'](other);
-  return result;
-}
-
-module.exports = equalObjects;
Index: ckend/node_modules/lodash/_escapeHtmlChar.js
===================================================================
--- backend/node_modules/lodash/_escapeHtmlChar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map characters to HTML entities. */
-var htmlEscapes = {
-  '&': '&amp;',
-  '<': '&lt;',
-  '>': '&gt;',
-  '"': '&quot;',
-  "'": '&#39;'
-};
-
-/**
- * Used by `_.escape` to convert characters to HTML entities.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
-var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
-module.exports = escapeHtmlChar;
Index: ckend/node_modules/lodash/_escapeStringChar.js
===================================================================
--- backend/node_modules/lodash/_escapeStringChar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/** Used to escape characters for inclusion in compiled string literals. */
-var stringEscapes = {
-  '\\': '\\',
-  "'": "'",
-  '\n': 'n',
-  '\r': 'r',
-  '\u2028': 'u2028',
-  '\u2029': 'u2029'
-};
-
-/**
- * Used by `_.template` to escape characters for inclusion in compiled string literals.
- *
- * @private
- * @param {string} chr The matched character to escape.
- * @returns {string} Returns the escaped character.
- */
-function escapeStringChar(chr) {
-  return '\\' + stringEscapes[chr];
-}
-
-module.exports = escapeStringChar;
Index: ckend/node_modules/lodash/_flatRest.js
===================================================================
--- backend/node_modules/lodash/_flatRest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var flatten = require('./flatten'),
-    overRest = require('./_overRest'),
-    setToString = require('./_setToString');
-
-/**
- * A specialized version of `baseRest` which flattens the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @returns {Function} Returns the new function.
- */
-function flatRest(func) {
-  return setToString(overRest(func, undefined, flatten), func + '');
-}
-
-module.exports = flatRest;
Index: ckend/node_modules/lodash/_freeGlobal.js
===================================================================
--- backend/node_modules/lodash/_freeGlobal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-module.exports = freeGlobal;
Index: ckend/node_modules/lodash/_getAllKeys.js
===================================================================
--- backend/node_modules/lodash/_getAllKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var baseGetAllKeys = require('./_baseGetAllKeys'),
-    getSymbols = require('./_getSymbols'),
-    keys = require('./keys');
-
-/**
- * Creates an array of own enumerable property names and symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function getAllKeys(object) {
-  return baseGetAllKeys(object, keys, getSymbols);
-}
-
-module.exports = getAllKeys;
Index: ckend/node_modules/lodash/_getAllKeysIn.js
===================================================================
--- backend/node_modules/lodash/_getAllKeysIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseGetAllKeys = require('./_baseGetAllKeys'),
-    getSymbolsIn = require('./_getSymbolsIn'),
-    keysIn = require('./keysIn');
-
-/**
- * Creates an array of own and inherited enumerable property names and
- * symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names and symbols.
- */
-function getAllKeysIn(object) {
-  return baseGetAllKeys(object, keysIn, getSymbolsIn);
-}
-
-module.exports = getAllKeysIn;
Index: ckend/node_modules/lodash/_getData.js
===================================================================
--- backend/node_modules/lodash/_getData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var metaMap = require('./_metaMap'),
-    noop = require('./noop');
-
-/**
- * Gets metadata for `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {*} Returns the metadata for `func`.
- */
-var getData = !metaMap ? noop : function(func) {
-  return metaMap.get(func);
-};
-
-module.exports = getData;
Index: ckend/node_modules/lodash/_getFuncName.js
===================================================================
--- backend/node_modules/lodash/_getFuncName.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var realNames = require('./_realNames');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Gets the name of `func`.
- *
- * @private
- * @param {Function} func The function to query.
- * @returns {string} Returns the function name.
- */
-function getFuncName(func) {
-  var result = (func.name + ''),
-      array = realNames[result],
-      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-
-  while (length--) {
-    var data = array[length],
-        otherFunc = data.func;
-    if (otherFunc == null || otherFunc == func) {
-      return data.name;
-    }
-  }
-  return result;
-}
-
-module.exports = getFuncName;
Index: ckend/node_modules/lodash/_getHolder.js
===================================================================
--- backend/node_modules/lodash/_getHolder.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * Gets the argument placeholder value for `func`.
- *
- * @private
- * @param {Function} func The function to inspect.
- * @returns {*} Returns the placeholder value.
- */
-function getHolder(func) {
-  var object = func;
-  return object.placeholder;
-}
-
-module.exports = getHolder;
Index: ckend/node_modules/lodash/_getMapData.js
===================================================================
--- backend/node_modules/lodash/_getMapData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var isKeyable = require('./_isKeyable');
-
-/**
- * Gets the data for `map`.
- *
- * @private
- * @param {Object} map The map to query.
- * @param {string} key The reference key.
- * @returns {*} Returns the map data.
- */
-function getMapData(map, key) {
-  var data = map.__data__;
-  return isKeyable(key)
-    ? data[typeof key == 'string' ? 'string' : 'hash']
-    : data.map;
-}
-
-module.exports = getMapData;
Index: ckend/node_modules/lodash/_getMatchData.js
===================================================================
--- backend/node_modules/lodash/_getMatchData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var isStrictComparable = require('./_isStrictComparable'),
-    keys = require('./keys');
-
-/**
- * Gets the property names, values, and compare flags of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the match data of `object`.
- */
-function getMatchData(object) {
-  var result = keys(object),
-      length = result.length;
-
-  while (length--) {
-    var key = result[length],
-        value = object[key];
-
-    result[length] = [key, value, isStrictComparable(value)];
-  }
-  return result;
-}
-
-module.exports = getMatchData;
Index: ckend/node_modules/lodash/_getNative.js
===================================================================
--- backend/node_modules/lodash/_getNative.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-var baseIsNative = require('./_baseIsNative'),
-    getValue = require('./_getValue');
-
-/**
- * Gets the native function at `key` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the method to get.
- * @returns {*} Returns the function if it's native, else `undefined`.
- */
-function getNative(object, key) {
-  var value = getValue(object, key);
-  return baseIsNative(value) ? value : undefined;
-}
-
-module.exports = getNative;
Index: ckend/node_modules/lodash/_getPrototype.js
===================================================================
--- backend/node_modules/lodash/_getPrototype.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var overArg = require('./_overArg');
-
-/** Built-in value references. */
-var getPrototype = overArg(Object.getPrototypeOf, Object);
-
-module.exports = getPrototype;
Index: ckend/node_modules/lodash/_getRawTag.js
===================================================================
--- backend/node_modules/lodash/_getRawTag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var Symbol = require('./_Symbol');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/** Built-in value references. */
-var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
-/**
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the raw `toStringTag`.
- */
-function getRawTag(value) {
-  var isOwn = hasOwnProperty.call(value, symToStringTag),
-      tag = value[symToStringTag];
-
-  try {
-    value[symToStringTag] = undefined;
-    var unmasked = true;
-  } catch (e) {}
-
-  var result = nativeObjectToString.call(value);
-  if (unmasked) {
-    if (isOwn) {
-      value[symToStringTag] = tag;
-    } else {
-      delete value[symToStringTag];
-    }
-  }
-  return result;
-}
-
-module.exports = getRawTag;
Index: ckend/node_modules/lodash/_getSymbols.js
===================================================================
--- backend/node_modules/lodash/_getSymbols.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    stubArray = require('./stubArray');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
-
-/**
- * Creates an array of the own enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
-  if (object == null) {
-    return [];
-  }
-  object = Object(object);
-  return arrayFilter(nativeGetSymbols(object), function(symbol) {
-    return propertyIsEnumerable.call(object, symbol);
-  });
-};
-
-module.exports = getSymbols;
Index: ckend/node_modules/lodash/_getSymbolsIn.js
===================================================================
--- backend/node_modules/lodash/_getSymbolsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var arrayPush = require('./_arrayPush'),
-    getPrototype = require('./_getPrototype'),
-    getSymbols = require('./_getSymbols'),
-    stubArray = require('./stubArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeGetSymbols = Object.getOwnPropertySymbols;
-
-/**
- * Creates an array of the own and inherited enumerable symbols of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of symbols.
- */
-var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
-  var result = [];
-  while (object) {
-    arrayPush(result, getSymbols(object));
-    object = getPrototype(object);
-  }
-  return result;
-};
-
-module.exports = getSymbolsIn;
Index: ckend/node_modules/lodash/_getTag.js
===================================================================
--- backend/node_modules/lodash/_getTag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-var DataView = require('./_DataView'),
-    Map = require('./_Map'),
-    Promise = require('./_Promise'),
-    Set = require('./_Set'),
-    WeakMap = require('./_WeakMap'),
-    baseGetTag = require('./_baseGetTag'),
-    toSource = require('./_toSource');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    objectTag = '[object Object]',
-    promiseTag = '[object Promise]',
-    setTag = '[object Set]',
-    weakMapTag = '[object WeakMap]';
-
-var dataViewTag = '[object DataView]';
-
-/** Used to detect maps, sets, and weakmaps. */
-var dataViewCtorString = toSource(DataView),
-    mapCtorString = toSource(Map),
-    promiseCtorString = toSource(Promise),
-    setCtorString = toSource(Set),
-    weakMapCtorString = toSource(WeakMap);
-
-/**
- * Gets the `toStringTag` of `value`.
- *
- * @private
- * @param {*} value The value to query.
- * @returns {string} Returns the `toStringTag`.
- */
-var getTag = baseGetTag;
-
-// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
-    (Map && getTag(new Map) != mapTag) ||
-    (Promise && getTag(Promise.resolve()) != promiseTag) ||
-    (Set && getTag(new Set) != setTag) ||
-    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
-  getTag = function(value) {
-    var result = baseGetTag(value),
-        Ctor = result == objectTag ? value.constructor : undefined,
-        ctorString = Ctor ? toSource(Ctor) : '';
-
-    if (ctorString) {
-      switch (ctorString) {
-        case dataViewCtorString: return dataViewTag;
-        case mapCtorString: return mapTag;
-        case promiseCtorString: return promiseTag;
-        case setCtorString: return setTag;
-        case weakMapCtorString: return weakMapTag;
-      }
-    }
-    return result;
-  };
-}
-
-module.exports = getTag;
Index: ckend/node_modules/lodash/_getValue.js
===================================================================
--- backend/node_modules/lodash/_getValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * Gets the value at `key` of `object`.
- *
- * @private
- * @param {Object} [object] The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function getValue(object, key) {
-  return object == null ? undefined : object[key];
-}
-
-module.exports = getValue;
Index: ckend/node_modules/lodash/_getView.js
===================================================================
--- backend/node_modules/lodash/_getView.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * Gets the view, applying any `transforms` to the `start` and `end` positions.
- *
- * @private
- * @param {number} start The start of the view.
- * @param {number} end The end of the view.
- * @param {Array} transforms The transformations to apply to the view.
- * @returns {Object} Returns an object containing the `start` and `end`
- *  positions of the view.
- */
-function getView(start, end, transforms) {
-  var index = -1,
-      length = transforms.length;
-
-  while (++index < length) {
-    var data = transforms[index],
-        size = data.size;
-
-    switch (data.type) {
-      case 'drop':      start += size; break;
-      case 'dropRight': end -= size; break;
-      case 'take':      end = nativeMin(end, start + size); break;
-      case 'takeRight': start = nativeMax(start, end - size); break;
-    }
-  }
-  return { 'start': start, 'end': end };
-}
-
-module.exports = getView;
Index: ckend/node_modules/lodash/_getWrapDetails.js
===================================================================
--- backend/node_modules/lodash/_getWrapDetails.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-/** Used to match wrap detail comments. */
-var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
-    reSplitDetails = /,? & /;
-
-/**
- * Extracts wrapper details from the `source` body comment.
- *
- * @private
- * @param {string} source The source to inspect.
- * @returns {Array} Returns the wrapper details.
- */
-function getWrapDetails(source) {
-  var match = source.match(reWrapDetails);
-  return match ? match[1].split(reSplitDetails) : [];
-}
-
-module.exports = getWrapDetails;
Index: ckend/node_modules/lodash/_hasPath.js
===================================================================
--- backend/node_modules/lodash/_hasPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var castPath = require('./_castPath'),
-    isArguments = require('./isArguments'),
-    isArray = require('./isArray'),
-    isIndex = require('./_isIndex'),
-    isLength = require('./isLength'),
-    toKey = require('./_toKey');
-
-/**
- * Checks if `path` exists on `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @param {Function} hasFunc The function to check properties.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- */
-function hasPath(object, path, hasFunc) {
-  path = castPath(path, object);
-
-  var index = -1,
-      length = path.length,
-      result = false;
-
-  while (++index < length) {
-    var key = toKey(path[index]);
-    if (!(result = object != null && hasFunc(object, key))) {
-      break;
-    }
-    object = object[key];
-  }
-  if (result || ++index != length) {
-    return result;
-  }
-  length = object == null ? 0 : object.length;
-  return !!length && isLength(length) && isIndex(key, length) &&
-    (isArray(object) || isArguments(object));
-}
-
-module.exports = hasPath;
Index: ckend/node_modules/lodash/_hasUnicode.js
===================================================================
--- backend/node_modules/lodash/_hasUnicode.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsZWJ = '\\u200d';
-
-/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
-
-/**
- * Checks if `string` contains Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a symbol is found, else `false`.
- */
-function hasUnicode(string) {
-  return reHasUnicode.test(string);
-}
-
-module.exports = hasUnicode;
Index: ckend/node_modules/lodash/_hasUnicodeWord.js
===================================================================
--- backend/node_modules/lodash/_hasUnicodeWord.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/** Used to detect strings that need a more robust regexp to match words. */
-var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
-
-/**
- * Checks if `string` contains a word composed of Unicode symbols.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {boolean} Returns `true` if a word is found, else `false`.
- */
-function hasUnicodeWord(string) {
-  return reHasUnicodeWord.test(string);
-}
-
-module.exports = hasUnicodeWord;
Index: ckend/node_modules/lodash/_hashClear.js
===================================================================
--- backend/node_modules/lodash/_hashClear.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/**
- * Removes all key-value entries from the hash.
- *
- * @private
- * @name clear
- * @memberOf Hash
- */
-function hashClear() {
-  this.__data__ = nativeCreate ? nativeCreate(null) : {};
-  this.size = 0;
-}
-
-module.exports = hashClear;
Index: ckend/node_modules/lodash/_hashDelete.js
===================================================================
--- backend/node_modules/lodash/_hashDelete.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-/**
- * Removes `key` and its value from the hash.
- *
- * @private
- * @name delete
- * @memberOf Hash
- * @param {Object} hash The hash to modify.
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function hashDelete(key) {
-  var result = this.has(key) && delete this.__data__[key];
-  this.size -= result ? 1 : 0;
-  return result;
-}
-
-module.exports = hashDelete;
Index: ckend/node_modules/lodash/_hashGet.js
===================================================================
--- backend/node_modules/lodash/_hashGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Gets the hash value for `key`.
- *
- * @private
- * @name get
- * @memberOf Hash
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function hashGet(key) {
-  var data = this.__data__;
-  if (nativeCreate) {
-    var result = data[key];
-    return result === HASH_UNDEFINED ? undefined : result;
-  }
-  return hasOwnProperty.call(data, key) ? data[key] : undefined;
-}
-
-module.exports = hashGet;
Index: ckend/node_modules/lodash/_hashHas.js
===================================================================
--- backend/node_modules/lodash/_hashHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Checks if a hash value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Hash
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function hashHas(key) {
-  var data = this.__data__;
-  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-}
-
-module.exports = hashHas;
Index: ckend/node_modules/lodash/_hashSet.js
===================================================================
--- backend/node_modules/lodash/_hashSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var nativeCreate = require('./_nativeCreate');
-
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/**
- * Sets the hash `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Hash
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the hash instance.
- */
-function hashSet(key, value) {
-  var data = this.__data__;
-  this.size += this.has(key) ? 0 : 1;
-  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-  return this;
-}
-
-module.exports = hashSet;
Index: ckend/node_modules/lodash/_initCloneArray.js
===================================================================
--- backend/node_modules/lodash/_initCloneArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Initializes an array clone.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the initialized clone.
- */
-function initCloneArray(array) {
-  var length = array.length,
-      result = new array.constructor(length);
-
-  // Add properties assigned by `RegExp#exec`.
-  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
-    result.index = array.index;
-    result.input = array.input;
-  }
-  return result;
-}
-
-module.exports = initCloneArray;
Index: ckend/node_modules/lodash/_initCloneByTag.js
===================================================================
--- backend/node_modules/lodash/_initCloneByTag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,77 +1,0 @@
-var cloneArrayBuffer = require('./_cloneArrayBuffer'),
-    cloneDataView = require('./_cloneDataView'),
-    cloneRegExp = require('./_cloneRegExp'),
-    cloneSymbol = require('./_cloneSymbol'),
-    cloneTypedArray = require('./_cloneTypedArray');
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]',
-    dateTag = '[object Date]',
-    mapTag = '[object Map]',
-    numberTag = '[object Number]',
-    regexpTag = '[object RegExp]',
-    setTag = '[object Set]',
-    stringTag = '[object String]',
-    symbolTag = '[object Symbol]';
-
-var arrayBufferTag = '[object ArrayBuffer]',
-    dataViewTag = '[object DataView]',
-    float32Tag = '[object Float32Array]',
-    float64Tag = '[object Float64Array]',
-    int8Tag = '[object Int8Array]',
-    int16Tag = '[object Int16Array]',
-    int32Tag = '[object Int32Array]',
-    uint8Tag = '[object Uint8Array]',
-    uint8ClampedTag = '[object Uint8ClampedArray]',
-    uint16Tag = '[object Uint16Array]',
-    uint32Tag = '[object Uint32Array]';
-
-/**
- * Initializes an object clone based on its `toStringTag`.
- *
- * **Note:** This function only supports cloning values with tags of
- * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
- *
- * @private
- * @param {Object} object The object to clone.
- * @param {string} tag The `toStringTag` of the object to clone.
- * @param {boolean} [isDeep] Specify a deep clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneByTag(object, tag, isDeep) {
-  var Ctor = object.constructor;
-  switch (tag) {
-    case arrayBufferTag:
-      return cloneArrayBuffer(object);
-
-    case boolTag:
-    case dateTag:
-      return new Ctor(+object);
-
-    case dataViewTag:
-      return cloneDataView(object, isDeep);
-
-    case float32Tag: case float64Tag:
-    case int8Tag: case int16Tag: case int32Tag:
-    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
-      return cloneTypedArray(object, isDeep);
-
-    case mapTag:
-      return new Ctor;
-
-    case numberTag:
-    case stringTag:
-      return new Ctor(object);
-
-    case regexpTag:
-      return cloneRegExp(object);
-
-    case setTag:
-      return new Ctor;
-
-    case symbolTag:
-      return cloneSymbol(object);
-  }
-}
-
-module.exports = initCloneByTag;
Index: ckend/node_modules/lodash/_initCloneObject.js
===================================================================
--- backend/node_modules/lodash/_initCloneObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseCreate = require('./_baseCreate'),
-    getPrototype = require('./_getPrototype'),
-    isPrototype = require('./_isPrototype');
-
-/**
- * Initializes an object clone.
- *
- * @private
- * @param {Object} object The object to clone.
- * @returns {Object} Returns the initialized clone.
- */
-function initCloneObject(object) {
-  return (typeof object.constructor == 'function' && !isPrototype(object))
-    ? baseCreate(getPrototype(object))
-    : {};
-}
-
-module.exports = initCloneObject;
Index: ckend/node_modules/lodash/_insertWrapDetails.js
===================================================================
--- backend/node_modules/lodash/_insertWrapDetails.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/** Used to match wrap detail comments. */
-var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;
-
-/**
- * Inserts wrapper `details` in a comment at the top of the `source` body.
- *
- * @private
- * @param {string} source The source to modify.
- * @returns {Array} details The details to insert.
- * @returns {string} Returns the modified source.
- */
-function insertWrapDetails(source, details) {
-  var length = details.length;
-  if (!length) {
-    return source;
-  }
-  var lastIndex = length - 1;
-  details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
-  details = details.join(length > 2 ? ', ' : ' ');
-  return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
-}
-
-module.exports = insertWrapDetails;
Index: ckend/node_modules/lodash/_isFlattenable.js
===================================================================
--- backend/node_modules/lodash/_isFlattenable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var Symbol = require('./_Symbol'),
-    isArguments = require('./isArguments'),
-    isArray = require('./isArray');
-
-/** Built-in value references. */
-var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
-
-/**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
-function isFlattenable(value) {
-  return isArray(value) || isArguments(value) ||
-    !!(spreadableSymbol && value && value[spreadableSymbol]);
-}
-
-module.exports = isFlattenable;
Index: ckend/node_modules/lodash/_isIndex.js
===================================================================
--- backend/node_modules/lodash/_isIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/** Used to detect unsigned integer values. */
-var reIsUint = /^(?:0|[1-9]\d*)$/;
-
-/**
- * Checks if `value` is a valid array-like index.
- *
- * @private
- * @param {*} value The value to check.
- * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
- * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
- */
-function isIndex(value, length) {
-  var type = typeof value;
-  length = length == null ? MAX_SAFE_INTEGER : length;
-
-  return !!length &&
-    (type == 'number' ||
-      (type != 'symbol' && reIsUint.test(value))) &&
-        (value > -1 && value % 1 == 0 && value < length);
-}
-
-module.exports = isIndex;
Index: ckend/node_modules/lodash/_isIterateeCall.js
===================================================================
--- backend/node_modules/lodash/_isIterateeCall.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var eq = require('./eq'),
-    isArrayLike = require('./isArrayLike'),
-    isIndex = require('./_isIndex'),
-    isObject = require('./isObject');
-
-/**
- * Checks if the given arguments are from an iteratee call.
- *
- * @private
- * @param {*} value The potential iteratee value argument.
- * @param {*} index The potential iteratee index or key argument.
- * @param {*} object The potential iteratee object argument.
- * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
- *  else `false`.
- */
-function isIterateeCall(value, index, object) {
-  if (!isObject(object)) {
-    return false;
-  }
-  var type = typeof index;
-  if (type == 'number'
-        ? (isArrayLike(object) && isIndex(index, object.length))
-        : (type == 'string' && index in object)
-      ) {
-    return eq(object[index], value);
-  }
-  return false;
-}
-
-module.exports = isIterateeCall;
Index: ckend/node_modules/lodash/_isKey.js
===================================================================
--- backend/node_modules/lodash/_isKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var isArray = require('./isArray'),
-    isSymbol = require('./isSymbol');
-
-/** Used to match property names within property paths. */
-var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-    reIsPlainProp = /^\w*$/;
-
-/**
- * Checks if `value` is a property name and not a property path.
- *
- * @private
- * @param {*} value The value to check.
- * @param {Object} [object] The object to query keys on.
- * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
- */
-function isKey(value, object) {
-  if (isArray(value)) {
-    return false;
-  }
-  var type = typeof value;
-  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-      value == null || isSymbol(value)) {
-    return true;
-  }
-  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-    (object != null && value in Object(object));
-}
-
-module.exports = isKey;
Index: ckend/node_modules/lodash/_isKeyable.js
===================================================================
--- backend/node_modules/lodash/_isKeyable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/**
- * Checks if `value` is suitable for use as unique object key.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
- */
-function isKeyable(value) {
-  var type = typeof value;
-  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-    ? (value !== '__proto__')
-    : (value === null);
-}
-
-module.exports = isKeyable;
Index: ckend/node_modules/lodash/_isLaziable.js
===================================================================
--- backend/node_modules/lodash/_isLaziable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    getData = require('./_getData'),
-    getFuncName = require('./_getFuncName'),
-    lodash = require('./wrapperLodash');
-
-/**
- * Checks if `func` has a lazy counterpart.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
- *  else `false`.
- */
-function isLaziable(func) {
-  var funcName = getFuncName(func),
-      other = lodash[funcName];
-
-  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
-    return false;
-  }
-  if (func === other) {
-    return true;
-  }
-  var data = getData(other);
-  return !!data && func === data[0];
-}
-
-module.exports = isLaziable;
Index: ckend/node_modules/lodash/_isMaskable.js
===================================================================
--- backend/node_modules/lodash/_isMaskable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var coreJsData = require('./_coreJsData'),
-    isFunction = require('./isFunction'),
-    stubFalse = require('./stubFalse');
-
-/**
- * Checks if `func` is capable of being masked.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
- */
-var isMaskable = coreJsData ? isFunction : stubFalse;
-
-module.exports = isMaskable;
Index: ckend/node_modules/lodash/_isMasked.js
===================================================================
--- backend/node_modules/lodash/_isMasked.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var coreJsData = require('./_coreJsData');
-
-/** Used to detect methods masquerading as native. */
-var maskSrcKey = (function() {
-  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-  return uid ? ('Symbol(src)_1.' + uid) : '';
-}());
-
-/**
- * Checks if `func` has its source masked.
- *
- * @private
- * @param {Function} func The function to check.
- * @returns {boolean} Returns `true` if `func` is masked, else `false`.
- */
-function isMasked(func) {
-  return !!maskSrcKey && (maskSrcKey in func);
-}
-
-module.exports = isMasked;
Index: ckend/node_modules/lodash/_isPrototype.js
===================================================================
--- backend/node_modules/lodash/_isPrototype.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Checks if `value` is likely a prototype object.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
- */
-function isPrototype(value) {
-  var Ctor = value && value.constructor,
-      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
-  return value === proto;
-}
-
-module.exports = isPrototype;
Index: ckend/node_modules/lodash/_isStrictComparable.js
===================================================================
--- backend/node_modules/lodash/_isStrictComparable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var isObject = require('./isObject');
-
-/**
- * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` if suitable for strict
- *  equality comparisons, else `false`.
- */
-function isStrictComparable(value) {
-  return value === value && !isObject(value);
-}
-
-module.exports = isStrictComparable;
Index: ckend/node_modules/lodash/_iteratorToArray.js
===================================================================
--- backend/node_modules/lodash/_iteratorToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * Converts `iterator` to an array.
- *
- * @private
- * @param {Object} iterator The iterator to convert.
- * @returns {Array} Returns the converted array.
- */
-function iteratorToArray(iterator) {
-  var data,
-      result = [];
-
-  while (!(data = iterator.next()).done) {
-    result.push(data.value);
-  }
-  return result;
-}
-
-module.exports = iteratorToArray;
Index: ckend/node_modules/lodash/_lazyClone.js
===================================================================
--- backend/node_modules/lodash/_lazyClone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    copyArray = require('./_copyArray');
-
-/**
- * Creates a clone of the lazy wrapper object.
- *
- * @private
- * @name clone
- * @memberOf LazyWrapper
- * @returns {Object} Returns the cloned `LazyWrapper` object.
- */
-function lazyClone() {
-  var result = new LazyWrapper(this.__wrapped__);
-  result.__actions__ = copyArray(this.__actions__);
-  result.__dir__ = this.__dir__;
-  result.__filtered__ = this.__filtered__;
-  result.__iteratees__ = copyArray(this.__iteratees__);
-  result.__takeCount__ = this.__takeCount__;
-  result.__views__ = copyArray(this.__views__);
-  return result;
-}
-
-module.exports = lazyClone;
Index: ckend/node_modules/lodash/_lazyReverse.js
===================================================================
--- backend/node_modules/lodash/_lazyReverse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper');
-
-/**
- * Reverses the direction of lazy iteration.
- *
- * @private
- * @name reverse
- * @memberOf LazyWrapper
- * @returns {Object} Returns the new reversed `LazyWrapper` object.
- */
-function lazyReverse() {
-  if (this.__filtered__) {
-    var result = new LazyWrapper(this);
-    result.__dir__ = -1;
-    result.__filtered__ = true;
-  } else {
-    result = this.clone();
-    result.__dir__ *= -1;
-  }
-  return result;
-}
-
-module.exports = lazyReverse;
Index: ckend/node_modules/lodash/_lazyValue.js
===================================================================
--- backend/node_modules/lodash/_lazyValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-var baseWrapperValue = require('./_baseWrapperValue'),
-    getView = require('./_getView'),
-    isArray = require('./isArray');
-
-/** Used to indicate the type of lazy iteratees. */
-var LAZY_FILTER_FLAG = 1,
-    LAZY_MAP_FLAG = 2;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Extracts the unwrapped value from its lazy wrapper.
- *
- * @private
- * @name value
- * @memberOf LazyWrapper
- * @returns {*} Returns the unwrapped value.
- */
-function lazyValue() {
-  var array = this.__wrapped__.value(),
-      dir = this.__dir__,
-      isArr = isArray(array),
-      isRight = dir < 0,
-      arrLength = isArr ? array.length : 0,
-      view = getView(0, arrLength, this.__views__),
-      start = view.start,
-      end = view.end,
-      length = end - start,
-      index = isRight ? end : (start - 1),
-      iteratees = this.__iteratees__,
-      iterLength = iteratees.length,
-      resIndex = 0,
-      takeCount = nativeMin(length, this.__takeCount__);
-
-  if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
-    return baseWrapperValue(array, this.__actions__);
-  }
-  var result = [];
-
-  outer:
-  while (length-- && resIndex < takeCount) {
-    index += dir;
-
-    var iterIndex = -1,
-        value = array[index];
-
-    while (++iterIndex < iterLength) {
-      var data = iteratees[iterIndex],
-          iteratee = data.iteratee,
-          type = data.type,
-          computed = iteratee(value);
-
-      if (type == LAZY_MAP_FLAG) {
-        value = computed;
-      } else if (!computed) {
-        if (type == LAZY_FILTER_FLAG) {
-          continue outer;
-        } else {
-          break outer;
-        }
-      }
-    }
-    result[resIndex++] = value;
-  }
-  return result;
-}
-
-module.exports = lazyValue;
Index: ckend/node_modules/lodash/_listCacheClear.js
===================================================================
--- backend/node_modules/lodash/_listCacheClear.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/**
- * Removes all key-value entries from the list cache.
- *
- * @private
- * @name clear
- * @memberOf ListCache
- */
-function listCacheClear() {
-  this.__data__ = [];
-  this.size = 0;
-}
-
-module.exports = listCacheClear;
Index: ckend/node_modules/lodash/_listCacheDelete.js
===================================================================
--- backend/node_modules/lodash/_listCacheDelete.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/** Built-in value references. */
-var splice = arrayProto.splice;
-
-/**
- * Removes `key` and its value from the list cache.
- *
- * @private
- * @name delete
- * @memberOf ListCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function listCacheDelete(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
-
-  if (index < 0) {
-    return false;
-  }
-  var lastIndex = data.length - 1;
-  if (index == lastIndex) {
-    data.pop();
-  } else {
-    splice.call(data, index, 1);
-  }
-  --this.size;
-  return true;
-}
-
-module.exports = listCacheDelete;
Index: ckend/node_modules/lodash/_listCacheGet.js
===================================================================
--- backend/node_modules/lodash/_listCacheGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Gets the list cache value for `key`.
- *
- * @private
- * @name get
- * @memberOf ListCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function listCacheGet(key) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
-
-  return index < 0 ? undefined : data[index][1];
-}
-
-module.exports = listCacheGet;
Index: ckend/node_modules/lodash/_listCacheHas.js
===================================================================
--- backend/node_modules/lodash/_listCacheHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Checks if a list cache value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf ListCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function listCacheHas(key) {
-  return assocIndexOf(this.__data__, key) > -1;
-}
-
-module.exports = listCacheHas;
Index: ckend/node_modules/lodash/_listCacheSet.js
===================================================================
--- backend/node_modules/lodash/_listCacheSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var assocIndexOf = require('./_assocIndexOf');
-
-/**
- * Sets the list cache `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf ListCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the list cache instance.
- */
-function listCacheSet(key, value) {
-  var data = this.__data__,
-      index = assocIndexOf(data, key);
-
-  if (index < 0) {
-    ++this.size;
-    data.push([key, value]);
-  } else {
-    data[index][1] = value;
-  }
-  return this;
-}
-
-module.exports = listCacheSet;
Index: ckend/node_modules/lodash/_mapCacheClear.js
===================================================================
--- backend/node_modules/lodash/_mapCacheClear.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var Hash = require('./_Hash'),
-    ListCache = require('./_ListCache'),
-    Map = require('./_Map');
-
-/**
- * Removes all key-value entries from the map.
- *
- * @private
- * @name clear
- * @memberOf MapCache
- */
-function mapCacheClear() {
-  this.size = 0;
-  this.__data__ = {
-    'hash': new Hash,
-    'map': new (Map || ListCache),
-    'string': new Hash
-  };
-}
-
-module.exports = mapCacheClear;
Index: ckend/node_modules/lodash/_mapCacheDelete.js
===================================================================
--- backend/node_modules/lodash/_mapCacheDelete.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Removes `key` and its value from the map.
- *
- * @private
- * @name delete
- * @memberOf MapCache
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function mapCacheDelete(key) {
-  var result = getMapData(this, key)['delete'](key);
-  this.size -= result ? 1 : 0;
-  return result;
-}
-
-module.exports = mapCacheDelete;
Index: ckend/node_modules/lodash/_mapCacheGet.js
===================================================================
--- backend/node_modules/lodash/_mapCacheGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Gets the map value for `key`.
- *
- * @private
- * @name get
- * @memberOf MapCache
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function mapCacheGet(key) {
-  return getMapData(this, key).get(key);
-}
-
-module.exports = mapCacheGet;
Index: ckend/node_modules/lodash/_mapCacheHas.js
===================================================================
--- backend/node_modules/lodash/_mapCacheHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Checks if a map value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf MapCache
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function mapCacheHas(key) {
-  return getMapData(this, key).has(key);
-}
-
-module.exports = mapCacheHas;
Index: ckend/node_modules/lodash/_mapCacheSet.js
===================================================================
--- backend/node_modules/lodash/_mapCacheSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var getMapData = require('./_getMapData');
-
-/**
- * Sets the map `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf MapCache
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the map cache instance.
- */
-function mapCacheSet(key, value) {
-  var data = getMapData(this, key),
-      size = data.size;
-
-  data.set(key, value);
-  this.size += data.size == size ? 0 : 1;
-  return this;
-}
-
-module.exports = mapCacheSet;
Index: ckend/node_modules/lodash/_mapToArray.js
===================================================================
--- backend/node_modules/lodash/_mapToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * Converts `map` to its key-value pairs.
- *
- * @private
- * @param {Object} map The map to convert.
- * @returns {Array} Returns the key-value pairs.
- */
-function mapToArray(map) {
-  var index = -1,
-      result = Array(map.size);
-
-  map.forEach(function(value, key) {
-    result[++index] = [key, value];
-  });
-  return result;
-}
-
-module.exports = mapToArray;
Index: ckend/node_modules/lodash/_matchesStrictComparable.js
===================================================================
--- backend/node_modules/lodash/_matchesStrictComparable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * A specialized version of `matchesProperty` for source values suitable
- * for strict equality comparisons, i.e. `===`.
- *
- * @private
- * @param {string} key The key of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- */
-function matchesStrictComparable(key, srcValue) {
-  return function(object) {
-    if (object == null) {
-      return false;
-    }
-    return object[key] === srcValue &&
-      (srcValue !== undefined || (key in Object(object)));
-  };
-}
-
-module.exports = matchesStrictComparable;
Index: ckend/node_modules/lodash/_memoizeCapped.js
===================================================================
--- backend/node_modules/lodash/_memoizeCapped.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var memoize = require('./memoize');
-
-/** Used as the maximum memoize cache size. */
-var MAX_MEMOIZE_SIZE = 500;
-
-/**
- * A specialized version of `_.memoize` which clears the memoized function's
- * cache when it exceeds `MAX_MEMOIZE_SIZE`.
- *
- * @private
- * @param {Function} func The function to have its output memoized.
- * @returns {Function} Returns the new memoized function.
- */
-function memoizeCapped(func) {
-  var result = memoize(func, function(key) {
-    if (cache.size === MAX_MEMOIZE_SIZE) {
-      cache.clear();
-    }
-    return key;
-  });
-
-  var cache = result.cache;
-  return result;
-}
-
-module.exports = memoizeCapped;
Index: ckend/node_modules/lodash/_mergeData.js
===================================================================
--- backend/node_modules/lodash/_mergeData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-var composeArgs = require('./_composeArgs'),
-    composeArgsRight = require('./_composeArgsRight'),
-    replaceHolders = require('./_replaceHolders');
-
-/** Used as the internal argument placeholder. */
-var PLACEHOLDER = '__lodash_placeholder__';
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_CURRY_BOUND_FLAG = 4,
-    WRAP_CURRY_FLAG = 8,
-    WRAP_ARY_FLAG = 128,
-    WRAP_REARG_FLAG = 256;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Merges the function metadata of `source` into `data`.
- *
- * Merging metadata reduces the number of wrappers used to invoke a function.
- * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
- * may be applied regardless of execution order. Methods like `_.ary` and
- * `_.rearg` modify function arguments, making the order in which they are
- * executed important, preventing the merging of metadata. However, we make
- * an exception for a safe combined case where curried functions have `_.ary`
- * and or `_.rearg` applied.
- *
- * @private
- * @param {Array} data The destination metadata.
- * @param {Array} source The source metadata.
- * @returns {Array} Returns `data`.
- */
-function mergeData(data, source) {
-  var bitmask = data[1],
-      srcBitmask = source[1],
-      newBitmask = bitmask | srcBitmask,
-      isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
-
-  var isCombo =
-    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
-    ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
-    ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
-
-  // Exit early if metadata can't be merged.
-  if (!(isCommon || isCombo)) {
-    return data;
-  }
-  // Use source `thisArg` if available.
-  if (srcBitmask & WRAP_BIND_FLAG) {
-    data[2] = source[2];
-    // Set when currying a bound function.
-    newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
-  }
-  // Compose partial arguments.
-  var value = source[3];
-  if (value) {
-    var partials = data[3];
-    data[3] = partials ? composeArgs(partials, value, source[4]) : value;
-    data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
-  }
-  // Compose partial right arguments.
-  value = source[5];
-  if (value) {
-    partials = data[5];
-    data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
-    data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
-  }
-  // Use source `argPos` if available.
-  value = source[7];
-  if (value) {
-    data[7] = value;
-  }
-  // Use source `ary` if it's smaller.
-  if (srcBitmask & WRAP_ARY_FLAG) {
-    data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
-  }
-  // Use source `arity` if one is not provided.
-  if (data[9] == null) {
-    data[9] = source[9];
-  }
-  // Use source `func` and merge bitmasks.
-  data[0] = source[0];
-  data[1] = newBitmask;
-
-  return data;
-}
-
-module.exports = mergeData;
Index: ckend/node_modules/lodash/_metaMap.js
===================================================================
--- backend/node_modules/lodash/_metaMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var WeakMap = require('./_WeakMap');
-
-/** Used to store function metadata. */
-var metaMap = WeakMap && new WeakMap;
-
-module.exports = metaMap;
Index: ckend/node_modules/lodash/_nativeCreate.js
===================================================================
--- backend/node_modules/lodash/_nativeCreate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var getNative = require('./_getNative');
-
-/* Built-in method references that are verified to be native. */
-var nativeCreate = getNative(Object, 'create');
-
-module.exports = nativeCreate;
Index: ckend/node_modules/lodash/_nativeKeys.js
===================================================================
--- backend/node_modules/lodash/_nativeKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var overArg = require('./_overArg');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeKeys = overArg(Object.keys, Object);
-
-module.exports = nativeKeys;
Index: ckend/node_modules/lodash/_nativeKeysIn.js
===================================================================
--- backend/node_modules/lodash/_nativeKeysIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * This function is like
- * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * except that it includes inherited enumerable properties.
- *
- * @private
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- */
-function nativeKeysIn(object) {
-  var result = [];
-  if (object != null) {
-    for (var key in Object(object)) {
-      result.push(key);
-    }
-  }
-  return result;
-}
-
-module.exports = nativeKeysIn;
Index: ckend/node_modules/lodash/_nodeUtil.js
===================================================================
--- backend/node_modules/lodash/_nodeUtil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var freeGlobal = require('./_freeGlobal');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Detect free variable `process` from Node.js. */
-var freeProcess = moduleExports && freeGlobal.process;
-
-/** Used to access faster Node.js helpers. */
-var nodeUtil = (function() {
-  try {
-    // Use `util.types` for Node.js 10+.
-    var types = freeModule && freeModule.require && freeModule.require('util').types;
-
-    if (types) {
-      return types;
-    }
-
-    // Legacy `process.binding('util')` for Node.js < 10.
-    return freeProcess && freeProcess.binding && freeProcess.binding('util');
-  } catch (e) {}
-}());
-
-module.exports = nodeUtil;
Index: ckend/node_modules/lodash/_objectToString.js
===================================================================
--- backend/node_modules/lodash/_objectToString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * Converts `value` to a string using `Object.prototype.toString`.
- *
- * @private
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- */
-function objectToString(value) {
-  return nativeObjectToString.call(value);
-}
-
-module.exports = objectToString;
Index: ckend/node_modules/lodash/_overArg.js
===================================================================
--- backend/node_modules/lodash/_overArg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/**
- * Creates a unary function that invokes `func` with its argument transformed.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} transform The argument transform.
- * @returns {Function} Returns the new function.
- */
-function overArg(func, transform) {
-  return function(arg) {
-    return func(transform(arg));
-  };
-}
-
-module.exports = overArg;
Index: ckend/node_modules/lodash/_overRest.js
===================================================================
--- backend/node_modules/lodash/_overRest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var apply = require('./_apply');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * A specialized version of `baseRest` which transforms the rest array.
- *
- * @private
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @param {Function} transform The rest array transform.
- * @returns {Function} Returns the new function.
- */
-function overRest(func, start, transform) {
-  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-  return function() {
-    var args = arguments,
-        index = -1,
-        length = nativeMax(args.length - start, 0),
-        array = Array(length);
-
-    while (++index < length) {
-      array[index] = args[start + index];
-    }
-    index = -1;
-    var otherArgs = Array(start + 1);
-    while (++index < start) {
-      otherArgs[index] = args[index];
-    }
-    otherArgs[start] = transform(array);
-    return apply(func, this, otherArgs);
-  };
-}
-
-module.exports = overRest;
Index: ckend/node_modules/lodash/_parent.js
===================================================================
--- backend/node_modules/lodash/_parent.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-var baseGet = require('./_baseGet'),
-    baseSlice = require('./_baseSlice');
-
-/**
- * Gets the parent value at `path` of `object`.
- *
- * @private
- * @param {Object} object The object to query.
- * @param {Array} path The path to get the parent value of.
- * @returns {*} Returns the parent value.
- */
-function parent(object, path) {
-  return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
-}
-
-module.exports = parent;
Index: ckend/node_modules/lodash/_reEscape.js
===================================================================
--- backend/node_modules/lodash/_reEscape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/** Used to match template delimiters. */
-var reEscape = /<%-([\s\S]+?)%>/g;
-
-module.exports = reEscape;
Index: ckend/node_modules/lodash/_reEvaluate.js
===================================================================
--- backend/node_modules/lodash/_reEvaluate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/** Used to match template delimiters. */
-var reEvaluate = /<%([\s\S]+?)%>/g;
-
-module.exports = reEvaluate;
Index: ckend/node_modules/lodash/_reInterpolate.js
===================================================================
--- backend/node_modules/lodash/_reInterpolate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/** Used to match template delimiters. */
-var reInterpolate = /<%=([\s\S]+?)%>/g;
-
-module.exports = reInterpolate;
Index: ckend/node_modules/lodash/_realNames.js
===================================================================
--- backend/node_modules/lodash/_realNames.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-/** Used to lookup unminified function names. */
-var realNames = {};
-
-module.exports = realNames;
Index: ckend/node_modules/lodash/_reorder.js
===================================================================
--- backend/node_modules/lodash/_reorder.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var copyArray = require('./_copyArray'),
-    isIndex = require('./_isIndex');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Reorder `array` according to the specified indexes where the element at
- * the first index is assigned as the first element, the element at
- * the second index is assigned as the second element, and so on.
- *
- * @private
- * @param {Array} array The array to reorder.
- * @param {Array} indexes The arranged array indexes.
- * @returns {Array} Returns `array`.
- */
-function reorder(array, indexes) {
-  var arrLength = array.length,
-      length = nativeMin(indexes.length, arrLength),
-      oldArray = copyArray(array);
-
-  while (length--) {
-    var index = indexes[length];
-    array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
-  }
-  return array;
-}
-
-module.exports = reorder;
Index: ckend/node_modules/lodash/_replaceHolders.js
===================================================================
--- backend/node_modules/lodash/_replaceHolders.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-/** Used as the internal argument placeholder. */
-var PLACEHOLDER = '__lodash_placeholder__';
-
-/**
- * Replaces all `placeholder` elements in `array` with an internal placeholder
- * and returns an array of their indexes.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {*} placeholder The placeholder to replace.
- * @returns {Array} Returns the new array of placeholder indexes.
- */
-function replaceHolders(array, placeholder) {
-  var index = -1,
-      length = array.length,
-      resIndex = 0,
-      result = [];
-
-  while (++index < length) {
-    var value = array[index];
-    if (value === placeholder || value === PLACEHOLDER) {
-      array[index] = PLACEHOLDER;
-      result[resIndex++] = index;
-    }
-  }
-  return result;
-}
-
-module.exports = replaceHolders;
Index: ckend/node_modules/lodash/_root.js
===================================================================
--- backend/node_modules/lodash/_root.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-var freeGlobal = require('./_freeGlobal');
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-module.exports = root;
Index: ckend/node_modules/lodash/_safeGet.js
===================================================================
--- backend/node_modules/lodash/_safeGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
- *
- * @private
- * @param {Object} object The object to query.
- * @param {string} key The key of the property to get.
- * @returns {*} Returns the property value.
- */
-function safeGet(object, key) {
-  if (key === 'constructor' && typeof object[key] === 'function') {
-    return;
-  }
-
-  if (key == '__proto__') {
-    return;
-  }
-
-  return object[key];
-}
-
-module.exports = safeGet;
Index: ckend/node_modules/lodash/_setCacheAdd.js
===================================================================
--- backend/node_modules/lodash/_setCacheAdd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-/** Used to stand-in for `undefined` hash values. */
-var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-/**
- * Adds `value` to the array cache.
- *
- * @private
- * @name add
- * @memberOf SetCache
- * @alias push
- * @param {*} value The value to cache.
- * @returns {Object} Returns the cache instance.
- */
-function setCacheAdd(value) {
-  this.__data__.set(value, HASH_UNDEFINED);
-  return this;
-}
-
-module.exports = setCacheAdd;
Index: ckend/node_modules/lodash/_setCacheHas.js
===================================================================
--- backend/node_modules/lodash/_setCacheHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * Checks if `value` is in the array cache.
- *
- * @private
- * @name has
- * @memberOf SetCache
- * @param {*} value The value to search for.
- * @returns {number} Returns `true` if `value` is found, else `false`.
- */
-function setCacheHas(value) {
-  return this.__data__.has(value);
-}
-
-module.exports = setCacheHas;
Index: ckend/node_modules/lodash/_setData.js
===================================================================
--- backend/node_modules/lodash/_setData.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var baseSetData = require('./_baseSetData'),
-    shortOut = require('./_shortOut');
-
-/**
- * Sets metadata for `func`.
- *
- * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
- * period of time, it will trip its breaker and transition to an identity
- * function to avoid garbage collection pauses in V8. See
- * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
- * for more details.
- *
- * @private
- * @param {Function} func The function to associate metadata with.
- * @param {*} data The metadata.
- * @returns {Function} Returns `func`.
- */
-var setData = shortOut(baseSetData);
-
-module.exports = setData;
Index: ckend/node_modules/lodash/_setToArray.js
===================================================================
--- backend/node_modules/lodash/_setToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * Converts `set` to an array of its values.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the values.
- */
-function setToArray(set) {
-  var index = -1,
-      result = Array(set.size);
-
-  set.forEach(function(value) {
-    result[++index] = value;
-  });
-  return result;
-}
-
-module.exports = setToArray;
Index: ckend/node_modules/lodash/_setToPairs.js
===================================================================
--- backend/node_modules/lodash/_setToPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * Converts `set` to its value-value pairs.
- *
- * @private
- * @param {Object} set The set to convert.
- * @returns {Array} Returns the value-value pairs.
- */
-function setToPairs(set) {
-  var index = -1,
-      result = Array(set.size);
-
-  set.forEach(function(value) {
-    result[++index] = [value, value];
-  });
-  return result;
-}
-
-module.exports = setToPairs;
Index: ckend/node_modules/lodash/_setToString.js
===================================================================
--- backend/node_modules/lodash/_setToString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-var baseSetToString = require('./_baseSetToString'),
-    shortOut = require('./_shortOut');
-
-/**
- * Sets the `toString` method of `func` to return `string`.
- *
- * @private
- * @param {Function} func The function to modify.
- * @param {Function} string The `toString` result.
- * @returns {Function} Returns `func`.
- */
-var setToString = shortOut(baseSetToString);
-
-module.exports = setToString;
Index: ckend/node_modules/lodash/_setWrapToString.js
===================================================================
--- backend/node_modules/lodash/_setWrapToString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var getWrapDetails = require('./_getWrapDetails'),
-    insertWrapDetails = require('./_insertWrapDetails'),
-    setToString = require('./_setToString'),
-    updateWrapDetails = require('./_updateWrapDetails');
-
-/**
- * Sets the `toString` method of `wrapper` to mimic the source of `reference`
- * with wrapper details in a comment at the top of the source body.
- *
- * @private
- * @param {Function} wrapper The function to modify.
- * @param {Function} reference The reference function.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Function} Returns `wrapper`.
- */
-function setWrapToString(wrapper, reference, bitmask) {
-  var source = (reference + '');
-  return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
-}
-
-module.exports = setWrapToString;
Index: ckend/node_modules/lodash/_shortOut.js
===================================================================
--- backend/node_modules/lodash/_shortOut.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-/** Used to detect hot functions by number of calls within a span of milliseconds. */
-var HOT_COUNT = 800,
-    HOT_SPAN = 16;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeNow = Date.now;
-
-/**
- * Creates a function that'll short out and invoke `identity` instead
- * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
- * milliseconds.
- *
- * @private
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new shortable function.
- */
-function shortOut(func) {
-  var count = 0,
-      lastCalled = 0;
-
-  return function() {
-    var stamp = nativeNow(),
-        remaining = HOT_SPAN - (stamp - lastCalled);
-
-    lastCalled = stamp;
-    if (remaining > 0) {
-      if (++count >= HOT_COUNT) {
-        return arguments[0];
-      }
-    } else {
-      count = 0;
-    }
-    return func.apply(undefined, arguments);
-  };
-}
-
-module.exports = shortOut;
Index: ckend/node_modules/lodash/_shuffleSelf.js
===================================================================
--- backend/node_modules/lodash/_shuffleSelf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseRandom = require('./_baseRandom');
-
-/**
- * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
- *
- * @private
- * @param {Array} array The array to shuffle.
- * @param {number} [size=array.length] The size of `array`.
- * @returns {Array} Returns `array`.
- */
-function shuffleSelf(array, size) {
-  var index = -1,
-      length = array.length,
-      lastIndex = length - 1;
-
-  size = size === undefined ? length : size;
-  while (++index < size) {
-    var rand = baseRandom(index, lastIndex),
-        value = array[rand];
-
-    array[rand] = array[index];
-    array[index] = value;
-  }
-  array.length = size;
-  return array;
-}
-
-module.exports = shuffleSelf;
Index: ckend/node_modules/lodash/_stackClear.js
===================================================================
--- backend/node_modules/lodash/_stackClear.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-var ListCache = require('./_ListCache');
-
-/**
- * Removes all key-value entries from the stack.
- *
- * @private
- * @name clear
- * @memberOf Stack
- */
-function stackClear() {
-  this.__data__ = new ListCache;
-  this.size = 0;
-}
-
-module.exports = stackClear;
Index: ckend/node_modules/lodash/_stackDelete.js
===================================================================
--- backend/node_modules/lodash/_stackDelete.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * Removes `key` and its value from the stack.
- *
- * @private
- * @name delete
- * @memberOf Stack
- * @param {string} key The key of the value to remove.
- * @returns {boolean} Returns `true` if the entry was removed, else `false`.
- */
-function stackDelete(key) {
-  var data = this.__data__,
-      result = data['delete'](key);
-
-  this.size = data.size;
-  return result;
-}
-
-module.exports = stackDelete;
Index: ckend/node_modules/lodash/_stackGet.js
===================================================================
--- backend/node_modules/lodash/_stackGet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * Gets the stack value for `key`.
- *
- * @private
- * @name get
- * @memberOf Stack
- * @param {string} key The key of the value to get.
- * @returns {*} Returns the entry value.
- */
-function stackGet(key) {
-  return this.__data__.get(key);
-}
-
-module.exports = stackGet;
Index: ckend/node_modules/lodash/_stackHas.js
===================================================================
--- backend/node_modules/lodash/_stackHas.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-/**
- * Checks if a stack value for `key` exists.
- *
- * @private
- * @name has
- * @memberOf Stack
- * @param {string} key The key of the entry to check.
- * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
- */
-function stackHas(key) {
-  return this.__data__.has(key);
-}
-
-module.exports = stackHas;
Index: ckend/node_modules/lodash/_stackSet.js
===================================================================
--- backend/node_modules/lodash/_stackSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var ListCache = require('./_ListCache'),
-    Map = require('./_Map'),
-    MapCache = require('./_MapCache');
-
-/** Used as the size to enable large array optimizations. */
-var LARGE_ARRAY_SIZE = 200;
-
-/**
- * Sets the stack `key` to `value`.
- *
- * @private
- * @name set
- * @memberOf Stack
- * @param {string} key The key of the value to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns the stack cache instance.
- */
-function stackSet(key, value) {
-  var data = this.__data__;
-  if (data instanceof ListCache) {
-    var pairs = data.__data__;
-    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
-      pairs.push([key, value]);
-      this.size = ++data.size;
-      return this;
-    }
-    data = this.__data__ = new MapCache(pairs);
-  }
-  data.set(key, value);
-  this.size = data.size;
-  return this;
-}
-
-module.exports = stackSet;
Index: ckend/node_modules/lodash/_strictIndexOf.js
===================================================================
--- backend/node_modules/lodash/_strictIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * A specialized version of `_.indexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictIndexOf(array, value, fromIndex) {
-  var index = fromIndex - 1,
-      length = array.length;
-
-  while (++index < length) {
-    if (array[index] === value) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = strictIndexOf;
Index: ckend/node_modules/lodash/_strictLastIndexOf.js
===================================================================
--- backend/node_modules/lodash/_strictLastIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * A specialized version of `_.lastIndexOf` which performs strict equality
- * comparisons of values, i.e. `===`.
- *
- * @private
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} fromIndex The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- */
-function strictLastIndexOf(array, value, fromIndex) {
-  var index = fromIndex + 1;
-  while (index--) {
-    if (array[index] === value) {
-      return index;
-    }
-  }
-  return index;
-}
-
-module.exports = strictLastIndexOf;
Index: ckend/node_modules/lodash/_stringSize.js
===================================================================
--- backend/node_modules/lodash/_stringSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var asciiSize = require('./_asciiSize'),
-    hasUnicode = require('./_hasUnicode'),
-    unicodeSize = require('./_unicodeSize');
-
-/**
- * Gets the number of symbols in `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the string size.
- */
-function stringSize(string) {
-  return hasUnicode(string)
-    ? unicodeSize(string)
-    : asciiSize(string);
-}
-
-module.exports = stringSize;
Index: ckend/node_modules/lodash/_stringToArray.js
===================================================================
--- backend/node_modules/lodash/_stringToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var asciiToArray = require('./_asciiToArray'),
-    hasUnicode = require('./_hasUnicode'),
-    unicodeToArray = require('./_unicodeToArray');
-
-/**
- * Converts `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function stringToArray(string) {
-  return hasUnicode(string)
-    ? unicodeToArray(string)
-    : asciiToArray(string);
-}
-
-module.exports = stringToArray;
Index: ckend/node_modules/lodash/_stringToPath.js
===================================================================
--- backend/node_modules/lodash/_stringToPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var memoizeCapped = require('./_memoizeCapped');
-
-/** Used to match property names within property paths. */
-var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
-/** Used to match backslashes in property paths. */
-var reEscapeChar = /\\(\\)?/g;
-
-/**
- * Converts `string` to a property path array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the property path array.
- */
-var stringToPath = memoizeCapped(function(string) {
-  var result = [];
-  if (string.charCodeAt(0) === 46 /* . */) {
-    result.push('');
-  }
-  string.replace(rePropName, function(match, number, quote, subString) {
-    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
-  });
-  return result;
-});
-
-module.exports = stringToPath;
Index: ckend/node_modules/lodash/_toKey.js
===================================================================
--- backend/node_modules/lodash/_toKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Converts `value` to a string key if it's not a string or symbol.
- *
- * @private
- * @param {*} value The value to inspect.
- * @returns {string|symbol} Returns the key.
- */
-function toKey(value) {
-  if (typeof value == 'string' || isSymbol(value)) {
-    return value;
-  }
-  var result = (value + '');
-  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-}
-
-module.exports = toKey;
Index: ckend/node_modules/lodash/_toSource.js
===================================================================
--- backend/node_modules/lodash/_toSource.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/** Used for built-in method references. */
-var funcProto = Function.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/**
- * Converts `func` to its source code.
- *
- * @private
- * @param {Function} func The function to convert.
- * @returns {string} Returns the source code.
- */
-function toSource(func) {
-  if (func != null) {
-    try {
-      return funcToString.call(func);
-    } catch (e) {}
-    try {
-      return (func + '');
-    } catch (e) {}
-  }
-  return '';
-}
-
-module.exports = toSource;
Index: ckend/node_modules/lodash/_trimmedEndIndex.js
===================================================================
--- backend/node_modules/lodash/_trimmedEndIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-/** Used to match a single whitespace character. */
-var reWhitespace = /\s/;
-
-/**
- * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
- * character of `string`.
- *
- * @private
- * @param {string} string The string to inspect.
- * @returns {number} Returns the index of the last non-whitespace character.
- */
-function trimmedEndIndex(string) {
-  var index = string.length;
-
-  while (index-- && reWhitespace.test(string.charAt(index))) {}
-  return index;
-}
-
-module.exports = trimmedEndIndex;
Index: ckend/node_modules/lodash/_unescapeHtmlChar.js
===================================================================
--- backend/node_modules/lodash/_unescapeHtmlChar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var basePropertyOf = require('./_basePropertyOf');
-
-/** Used to map HTML entities to characters. */
-var htmlUnescapes = {
-  '&amp;': '&',
-  '&lt;': '<',
-  '&gt;': '>',
-  '&quot;': '"',
-  '&#39;': "'"
-};
-
-/**
- * Used by `_.unescape` to convert HTML entities to characters.
- *
- * @private
- * @param {string} chr The matched character to unescape.
- * @returns {string} Returns the unescaped character.
- */
-var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
-
-module.exports = unescapeHtmlChar;
Index: ckend/node_modules/lodash/_unicodeSize.js
===================================================================
--- backend/node_modules/lodash/_unicodeSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
-    rsCombo = '[' + rsComboRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
-    rsOptVar = '[' + rsVarRange + ']?',
-    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-/**
- * Gets the size of a Unicode `string`.
- *
- * @private
- * @param {string} string The string inspect.
- * @returns {number} Returns the string size.
- */
-function unicodeSize(string) {
-  var result = reUnicode.lastIndex = 0;
-  while (reUnicode.test(string)) {
-    ++result;
-  }
-  return result;
-}
-
-module.exports = unicodeSize;
Index: ckend/node_modules/lodash/_unicodeToArray.js
===================================================================
--- backend/node_modules/lodash/_unicodeToArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsVarRange = '\\ufe0e\\ufe0f';
-
-/** Used to compose unicode capture groups. */
-var rsAstral = '[' + rsAstralRange + ']',
-    rsCombo = '[' + rsComboRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var reOptMod = rsModifier + '?',
-    rsOptVar = '[' + rsVarRange + ']?',
-    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-/**
- * Converts a Unicode `string` to an array.
- *
- * @private
- * @param {string} string The string to convert.
- * @returns {Array} Returns the converted array.
- */
-function unicodeToArray(string) {
-  return string.match(reUnicode) || [];
-}
-
-module.exports = unicodeToArray;
Index: ckend/node_modules/lodash/_unicodeWords.js
===================================================================
--- backend/node_modules/lodash/_unicodeWords.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-/** Used to compose unicode character classes. */
-var rsAstralRange = '\\ud800-\\udfff',
-    rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-    rsDingbatRange = '\\u2700-\\u27bf',
-    rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
-    rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
-    rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
-    rsPunctuationRange = '\\u2000-\\u206f',
-    rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
-    rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
-    rsVarRange = '\\ufe0e\\ufe0f',
-    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
-
-/** Used to compose unicode capture groups. */
-var rsApos = "['\u2019]",
-    rsBreak = '[' + rsBreakRange + ']',
-    rsCombo = '[' + rsComboRange + ']',
-    rsDigits = '\\d+',
-    rsDingbat = '[' + rsDingbatRange + ']',
-    rsLower = '[' + rsLowerRange + ']',
-    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
-    rsFitz = '\\ud83c[\\udffb-\\udfff]',
-    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-    rsNonAstral = '[^' + rsAstralRange + ']',
-    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-    rsUpper = '[' + rsUpperRange + ']',
-    rsZWJ = '\\u200d';
-
-/** Used to compose unicode regexes. */
-var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
-    rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
-    rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
-    rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
-    reOptMod = rsModifier + '?',
-    rsOptVar = '[' + rsVarRange + ']?',
-    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-    rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
-    rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
-    rsSeq = rsOptVar + reOptMod + rsOptJoin,
-    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
-
-/** Used to match complex or compound words. */
-var reUnicodeWord = RegExp([
-  rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
-  rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
-  rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
-  rsUpper + '+' + rsOptContrUpper,
-  rsOrdUpper,
-  rsOrdLower,
-  rsDigits,
-  rsEmoji
-].join('|'), 'g');
-
-/**
- * Splits a Unicode `string` into an array of its words.
- *
- * @private
- * @param {string} The string to inspect.
- * @returns {Array} Returns the words of `string`.
- */
-function unicodeWords(string) {
-  return string.match(reUnicodeWord) || [];
-}
-
-module.exports = unicodeWords;
Index: ckend/node_modules/lodash/_updateWrapDetails.js
===================================================================
--- backend/node_modules/lodash/_updateWrapDetails.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var arrayEach = require('./_arrayEach'),
-    arrayIncludes = require('./_arrayIncludes');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_CURRY_FLAG = 8,
-    WRAP_CURRY_RIGHT_FLAG = 16,
-    WRAP_PARTIAL_FLAG = 32,
-    WRAP_PARTIAL_RIGHT_FLAG = 64,
-    WRAP_ARY_FLAG = 128,
-    WRAP_REARG_FLAG = 256,
-    WRAP_FLIP_FLAG = 512;
-
-/** Used to associate wrap methods with their bit flags. */
-var wrapFlags = [
-  ['ary', WRAP_ARY_FLAG],
-  ['bind', WRAP_BIND_FLAG],
-  ['bindKey', WRAP_BIND_KEY_FLAG],
-  ['curry', WRAP_CURRY_FLAG],
-  ['curryRight', WRAP_CURRY_RIGHT_FLAG],
-  ['flip', WRAP_FLIP_FLAG],
-  ['partial', WRAP_PARTIAL_FLAG],
-  ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
-  ['rearg', WRAP_REARG_FLAG]
-];
-
-/**
- * Updates wrapper `details` based on `bitmask` flags.
- *
- * @private
- * @returns {Array} details The details to modify.
- * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
- * @returns {Array} Returns `details`.
- */
-function updateWrapDetails(details, bitmask) {
-  arrayEach(wrapFlags, function(pair) {
-    var value = '_.' + pair[0];
-    if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
-      details.push(value);
-    }
-  });
-  return details.sort();
-}
-
-module.exports = updateWrapDetails;
Index: ckend/node_modules/lodash/_wrapperClone.js
===================================================================
--- backend/node_modules/lodash/_wrapperClone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    LodashWrapper = require('./_LodashWrapper'),
-    copyArray = require('./_copyArray');
-
-/**
- * Creates a clone of `wrapper`.
- *
- * @private
- * @param {Object} wrapper The wrapper to clone.
- * @returns {Object} Returns the cloned wrapper.
- */
-function wrapperClone(wrapper) {
-  if (wrapper instanceof LazyWrapper) {
-    return wrapper.clone();
-  }
-  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
-  result.__actions__ = copyArray(wrapper.__actions__);
-  result.__index__  = wrapper.__index__;
-  result.__values__ = wrapper.__values__;
-  return result;
-}
-
-module.exports = wrapperClone;
Index: ckend/node_modules/lodash/add.js
===================================================================
--- backend/node_modules/lodash/add.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Adds two numbers.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {number} augend The first number in an addition.
- * @param {number} addend The second number in an addition.
- * @returns {number} Returns the total.
- * @example
- *
- * _.add(6, 4);
- * // => 10
- */
-var add = createMathOperation(function(augend, addend) {
-  return augend + addend;
-}, 0);
-
-module.exports = add;
Index: ckend/node_modules/lodash/after.js
===================================================================
--- backend/node_modules/lodash/after.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * The opposite of `_.before`; this method creates a function that invokes
- * `func` once it's called `n` or more times.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {number} n The number of calls before `func` is invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var saves = ['profile', 'settings'];
- *
- * var done = _.after(saves.length, function() {
- *   console.log('done saving!');
- * });
- *
- * _.forEach(saves, function(type) {
- *   asyncSave({ 'type': type, 'complete': done });
- * });
- * // => Logs 'done saving!' after the two async saves have completed.
- */
-function after(n, func) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  n = toInteger(n);
-  return function() {
-    if (--n < 1) {
-      return func.apply(this, arguments);
-    }
-  };
-}
-
-module.exports = after;
Index: ckend/node_modules/lodash/array.js
===================================================================
--- backend/node_modules/lodash/array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-module.exports = {
-  'chunk': require('./chunk'),
-  'compact': require('./compact'),
-  'concat': require('./concat'),
-  'difference': require('./difference'),
-  'differenceBy': require('./differenceBy'),
-  'differenceWith': require('./differenceWith'),
-  'drop': require('./drop'),
-  'dropRight': require('./dropRight'),
-  'dropRightWhile': require('./dropRightWhile'),
-  'dropWhile': require('./dropWhile'),
-  'fill': require('./fill'),
-  'findIndex': require('./findIndex'),
-  'findLastIndex': require('./findLastIndex'),
-  'first': require('./first'),
-  'flatten': require('./flatten'),
-  'flattenDeep': require('./flattenDeep'),
-  'flattenDepth': require('./flattenDepth'),
-  'fromPairs': require('./fromPairs'),
-  'head': require('./head'),
-  'indexOf': require('./indexOf'),
-  'initial': require('./initial'),
-  'intersection': require('./intersection'),
-  'intersectionBy': require('./intersectionBy'),
-  'intersectionWith': require('./intersectionWith'),
-  'join': require('./join'),
-  'last': require('./last'),
-  'lastIndexOf': require('./lastIndexOf'),
-  'nth': require('./nth'),
-  'pull': require('./pull'),
-  'pullAll': require('./pullAll'),
-  'pullAllBy': require('./pullAllBy'),
-  'pullAllWith': require('./pullAllWith'),
-  'pullAt': require('./pullAt'),
-  'remove': require('./remove'),
-  'reverse': require('./reverse'),
-  'slice': require('./slice'),
-  'sortedIndex': require('./sortedIndex'),
-  'sortedIndexBy': require('./sortedIndexBy'),
-  'sortedIndexOf': require('./sortedIndexOf'),
-  'sortedLastIndex': require('./sortedLastIndex'),
-  'sortedLastIndexBy': require('./sortedLastIndexBy'),
-  'sortedLastIndexOf': require('./sortedLastIndexOf'),
-  'sortedUniq': require('./sortedUniq'),
-  'sortedUniqBy': require('./sortedUniqBy'),
-  'tail': require('./tail'),
-  'take': require('./take'),
-  'takeRight': require('./takeRight'),
-  'takeRightWhile': require('./takeRightWhile'),
-  'takeWhile': require('./takeWhile'),
-  'union': require('./union'),
-  'unionBy': require('./unionBy'),
-  'unionWith': require('./unionWith'),
-  'uniq': require('./uniq'),
-  'uniqBy': require('./uniqBy'),
-  'uniqWith': require('./uniqWith'),
-  'unzip': require('./unzip'),
-  'unzipWith': require('./unzipWith'),
-  'without': require('./without'),
-  'xor': require('./xor'),
-  'xorBy': require('./xorBy'),
-  'xorWith': require('./xorWith'),
-  'zip': require('./zip'),
-  'zipObject': require('./zipObject'),
-  'zipObjectDeep': require('./zipObjectDeep'),
-  'zipWith': require('./zipWith')
-};
Index: ckend/node_modules/lodash/ary.js
===================================================================
--- backend/node_modules/lodash/ary.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_ARY_FLAG = 128;
-
-/**
- * Creates a function that invokes `func`, with up to `n` arguments,
- * ignoring any additional arguments.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @param {number} [n=func.length] The arity cap.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.ary(parseInt, 1));
- * // => [6, 8, 10]
- */
-function ary(func, n, guard) {
-  n = guard ? undefined : n;
-  n = (func && n == null) ? func.length : n;
-  return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
-}
-
-module.exports = ary;
Index: ckend/node_modules/lodash/assign.js
===================================================================
--- backend/node_modules/lodash/assign.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-var assignValue = require('./_assignValue'),
-    copyObject = require('./_copyObject'),
-    createAssigner = require('./_createAssigner'),
-    isArrayLike = require('./isArrayLike'),
-    isPrototype = require('./_isPrototype'),
-    keys = require('./keys');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns own enumerable string keyed properties of source objects to the
- * destination object. Source objects are applied from left to right.
- * Subsequent sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object` and is loosely based on
- * [`Object.assign`](https://mdn.io/Object/assign).
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assignIn
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- * }
- *
- * function Bar() {
- *   this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assign({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'c': 3 }
- */
-var assign = createAssigner(function(object, source) {
-  if (isPrototype(source) || isArrayLike(source)) {
-    copyObject(source, keys(source), object);
-    return;
-  }
-  for (var key in source) {
-    if (hasOwnProperty.call(source, key)) {
-      assignValue(object, key, source[key]);
-    }
-  }
-});
-
-module.exports = assign;
Index: ckend/node_modules/lodash/assignIn.js
===================================================================
--- backend/node_modules/lodash/assignIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var copyObject = require('./_copyObject'),
-    createAssigner = require('./_createAssigner'),
-    keysIn = require('./keysIn');
-
-/**
- * This method is like `_.assign` except that it iterates over own and
- * inherited source properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extend
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.assign
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- * }
- *
- * function Bar() {
- *   this.c = 3;
- * }
- *
- * Foo.prototype.b = 2;
- * Bar.prototype.d = 4;
- *
- * _.assignIn({ 'a': 0 }, new Foo, new Bar);
- * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
- */
-var assignIn = createAssigner(function(object, source) {
-  copyObject(source, keysIn(source), object);
-});
-
-module.exports = assignIn;
Index: ckend/node_modules/lodash/assignInWith.js
===================================================================
--- backend/node_modules/lodash/assignInWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var copyObject = require('./_copyObject'),
-    createAssigner = require('./_createAssigner'),
-    keysIn = require('./keysIn');
-
-/**
- * This method is like `_.assignIn` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias extendWith
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- *   return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignInWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
-  copyObject(source, keysIn(source), object, customizer);
-});
-
-module.exports = assignInWith;
Index: ckend/node_modules/lodash/assignWith.js
===================================================================
--- backend/node_modules/lodash/assignWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var copyObject = require('./_copyObject'),
-    createAssigner = require('./_createAssigner'),
-    keys = require('./keys');
-
-/**
- * This method is like `_.assign` except that it accepts `customizer`
- * which is invoked to produce the assigned values. If `customizer` returns
- * `undefined`, assignment is handled by the method instead. The `customizer`
- * is invoked with five arguments: (objValue, srcValue, key, object, source).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @see _.assignInWith
- * @example
- *
- * function customizer(objValue, srcValue) {
- *   return _.isUndefined(objValue) ? srcValue : objValue;
- * }
- *
- * var defaults = _.partialRight(_.assignWith, customizer);
- *
- * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
-  copyObject(source, keys(source), object, customizer);
-});
-
-module.exports = assignWith;
Index: ckend/node_modules/lodash/at.js
===================================================================
--- backend/node_modules/lodash/at.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var baseAt = require('./_baseAt'),
-    flatRest = require('./_flatRest');
-
-/**
- * Creates an array of values corresponding to `paths` of `object`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Array} Returns the picked values.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _.at(object, ['a[0].b.c', 'a[1]']);
- * // => [3, 4]
- */
-var at = flatRest(baseAt);
-
-module.exports = at;
Index: ckend/node_modules/lodash/attempt.js
===================================================================
--- backend/node_modules/lodash/attempt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var apply = require('./_apply'),
-    baseRest = require('./_baseRest'),
-    isError = require('./isError');
-
-/**
- * Attempts to invoke `func`, returning either the result or the caught error
- * object. Any additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Function} func The function to attempt.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {*} Returns the `func` result or error object.
- * @example
- *
- * // Avoid throwing errors for invalid selectors.
- * var elements = _.attempt(function(selector) {
- *   return document.querySelectorAll(selector);
- * }, '>_>');
- *
- * if (_.isError(elements)) {
- *   elements = [];
- * }
- */
-var attempt = baseRest(function(func, args) {
-  try {
-    return apply(func, undefined, args);
-  } catch (e) {
-    return isError(e) ? e : new Error(e);
-  }
-});
-
-module.exports = attempt;
Index: ckend/node_modules/lodash/before.js
===================================================================
--- backend/node_modules/lodash/before.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func`, with the `this` binding and arguments
- * of the created function, while it's called less than `n` times. Subsequent
- * calls to the created function return the result of the last `func` invocation.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {number} n The number of calls at which `func` is no longer invoked.
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * jQuery(element).on('click', _.before(5, addContactToList));
- * // => Allows adding up to 4 contacts to the list.
- */
-function before(n, func) {
-  var result;
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  n = toInteger(n);
-  return function() {
-    if (--n > 0) {
-      result = func.apply(this, arguments);
-    }
-    if (n <= 1) {
-      func = undefined;
-    }
-    return result;
-  };
-}
-
-module.exports = before;
Index: ckend/node_modules/lodash/bind.js
===================================================================
--- backend/node_modules/lodash/bind.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-var baseRest = require('./_baseRest'),
-    createWrap = require('./_createWrap'),
-    getHolder = require('./_getHolder'),
-    replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of `thisArg`
- * and `partials` prepended to the arguments it receives.
- *
- * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for partially applied arguments.
- *
- * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
- * property of bound functions.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to bind.
- * @param {*} thisArg The `this` binding of `func`.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * function greet(greeting, punctuation) {
- *   return greeting + ' ' + this.user + punctuation;
- * }
- *
- * var object = { 'user': 'fred' };
- *
- * var bound = _.bind(greet, object, 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bind(greet, object, _, '!');
- * bound('hi');
- * // => 'hi fred!'
- */
-var bind = baseRest(function(func, thisArg, partials) {
-  var bitmask = WRAP_BIND_FLAG;
-  if (partials.length) {
-    var holders = replaceHolders(partials, getHolder(bind));
-    bitmask |= WRAP_PARTIAL_FLAG;
-  }
-  return createWrap(func, bitmask, thisArg, partials, holders);
-});
-
-// Assign default placeholders.
-bind.placeholder = {};
-
-module.exports = bind;
Index: ckend/node_modules/lodash/bindAll.js
===================================================================
--- backend/node_modules/lodash/bindAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var arrayEach = require('./_arrayEach'),
-    baseAssignValue = require('./_baseAssignValue'),
-    bind = require('./bind'),
-    flatRest = require('./_flatRest'),
-    toKey = require('./_toKey');
-
-/**
- * Binds methods of an object to the object itself, overwriting the existing
- * method.
- *
- * **Note:** This method doesn't set the "length" property of bound functions.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Object} object The object to bind and assign the bound methods to.
- * @param {...(string|string[])} methodNames The object method names to bind.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var view = {
- *   'label': 'docs',
- *   'click': function() {
- *     console.log('clicked ' + this.label);
- *   }
- * };
- *
- * _.bindAll(view, ['click']);
- * jQuery(element).on('click', view.click);
- * // => Logs 'clicked docs' when clicked.
- */
-var bindAll = flatRest(function(object, methodNames) {
-  arrayEach(methodNames, function(key) {
-    key = toKey(key);
-    baseAssignValue(object, key, bind(object[key], object));
-  });
-  return object;
-});
-
-module.exports = bindAll;
Index: ckend/node_modules/lodash/bindKey.js
===================================================================
--- backend/node_modules/lodash/bindKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-var baseRest = require('./_baseRest'),
-    createWrap = require('./_createWrap'),
-    getHolder = require('./_getHolder'),
-    replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_BIND_FLAG = 1,
-    WRAP_BIND_KEY_FLAG = 2,
-    WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes the method at `object[key]` with `partials`
- * prepended to the arguments it receives.
- *
- * This method differs from `_.bind` by allowing bound functions to reference
- * methods that may be redefined or don't yet exist. See
- * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
- * for more details.
- *
- * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * @static
- * @memberOf _
- * @since 0.10.0
- * @category Function
- * @param {Object} object The object to invoke the method on.
- * @param {string} key The key of the method.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new bound function.
- * @example
- *
- * var object = {
- *   'user': 'fred',
- *   'greet': function(greeting, punctuation) {
- *     return greeting + ' ' + this.user + punctuation;
- *   }
- * };
- *
- * var bound = _.bindKey(object, 'greet', 'hi');
- * bound('!');
- * // => 'hi fred!'
- *
- * object.greet = function(greeting, punctuation) {
- *   return greeting + 'ya ' + this.user + punctuation;
- * };
- *
- * bound('!');
- * // => 'hiya fred!'
- *
- * // Bound with placeholders.
- * var bound = _.bindKey(object, 'greet', _, '!');
- * bound('hi');
- * // => 'hiya fred!'
- */
-var bindKey = baseRest(function(object, key, partials) {
-  var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
-  if (partials.length) {
-    var holders = replaceHolders(partials, getHolder(bindKey));
-    bitmask |= WRAP_PARTIAL_FLAG;
-  }
-  return createWrap(key, bitmask, object, partials, holders);
-});
-
-// Assign default placeholders.
-bindKey.placeholder = {};
-
-module.exports = bindKey;
Index: ckend/node_modules/lodash/camelCase.js
===================================================================
--- backend/node_modules/lodash/camelCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var capitalize = require('./capitalize'),
-    createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the camel cased string.
- * @example
- *
- * _.camelCase('Foo Bar');
- * // => 'fooBar'
- *
- * _.camelCase('--foo-bar--');
- * // => 'fooBar'
- *
- * _.camelCase('__FOO_BAR__');
- * // => 'fooBar'
- */
-var camelCase = createCompounder(function(result, word, index) {
-  word = word.toLowerCase();
-  return result + (index ? capitalize(word) : word);
-});
-
-module.exports = camelCase;
Index: ckend/node_modules/lodash/capitalize.js
===================================================================
--- backend/node_modules/lodash/capitalize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var toString = require('./toString'),
-    upperFirst = require('./upperFirst');
-
-/**
- * Converts the first character of `string` to upper case and the remaining
- * to lower case.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to capitalize.
- * @returns {string} Returns the capitalized string.
- * @example
- *
- * _.capitalize('FRED');
- * // => 'Fred'
- */
-function capitalize(string) {
-  return upperFirst(toString(string).toLowerCase());
-}
-
-module.exports = capitalize;
Index: ckend/node_modules/lodash/castArray.js
===================================================================
--- backend/node_modules/lodash/castArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var isArray = require('./isArray');
-
-/**
- * Casts `value` as an array if it's not one.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Lang
- * @param {*} value The value to inspect.
- * @returns {Array} Returns the cast array.
- * @example
- *
- * _.castArray(1);
- * // => [1]
- *
- * _.castArray({ 'a': 1 });
- * // => [{ 'a': 1 }]
- *
- * _.castArray('abc');
- * // => ['abc']
- *
- * _.castArray(null);
- * // => [null]
- *
- * _.castArray(undefined);
- * // => [undefined]
- *
- * _.castArray();
- * // => []
- *
- * var array = [1, 2, 3];
- * console.log(_.castArray(array) === array);
- * // => true
- */
-function castArray() {
-  if (!arguments.length) {
-    return [];
-  }
-  var value = arguments[0];
-  return isArray(value) ? value : [value];
-}
-
-module.exports = castArray;
Index: ckend/node_modules/lodash/ceil.js
===================================================================
--- backend/node_modules/lodash/ceil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded up to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round up.
- * @param {number} [precision=0] The precision to round up to.
- * @returns {number} Returns the rounded up number.
- * @example
- *
- * _.ceil(4.006);
- * // => 5
- *
- * _.ceil(6.004, 2);
- * // => 6.01
- *
- * _.ceil(6040, -2);
- * // => 6100
- */
-var ceil = createRound('ceil');
-
-module.exports = ceil;
Index: ckend/node_modules/lodash/chain.js
===================================================================
--- backend/node_modules/lodash/chain.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var lodash = require('./wrapperLodash');
-
-/**
- * Creates a `lodash` wrapper instance that wraps `value` with explicit method
- * chain sequences enabled. The result of such sequences must be unwrapped
- * with `_#value`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Seq
- * @param {*} value The value to wrap.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36 },
- *   { 'user': 'fred',    'age': 40 },
- *   { 'user': 'pebbles', 'age': 1 }
- * ];
- *
- * var youngest = _
- *   .chain(users)
- *   .sortBy('age')
- *   .map(function(o) {
- *     return o.user + ' is ' + o.age;
- *   })
- *   .head()
- *   .value();
- * // => 'pebbles is 1'
- */
-function chain(value) {
-  var result = lodash(value);
-  result.__chain__ = true;
-  return result;
-}
-
-module.exports = chain;
Index: ckend/node_modules/lodash/chunk.js
===================================================================
--- backend/node_modules/lodash/chunk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
-    nativeMax = Math.max;
-
-/**
- * Creates an array of elements split into groups the length of `size`.
- * If `array` can't be split evenly, the final chunk will be the remaining
- * elements.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to process.
- * @param {number} [size=1] The length of each chunk
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the new array of chunks.
- * @example
- *
- * _.chunk(['a', 'b', 'c', 'd'], 2);
- * // => [['a', 'b'], ['c', 'd']]
- *
- * _.chunk(['a', 'b', 'c', 'd'], 3);
- * // => [['a', 'b', 'c'], ['d']]
- */
-function chunk(array, size, guard) {
-  if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
-    size = 1;
-  } else {
-    size = nativeMax(toInteger(size), 0);
-  }
-  var length = array == null ? 0 : array.length;
-  if (!length || size < 1) {
-    return [];
-  }
-  var index = 0,
-      resIndex = 0,
-      result = Array(nativeCeil(length / size));
-
-  while (index < length) {
-    result[resIndex++] = baseSlice(array, index, (index += size));
-  }
-  return result;
-}
-
-module.exports = chunk;
Index: ckend/node_modules/lodash/clamp.js
===================================================================
--- backend/node_modules/lodash/clamp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    toNumber = require('./toNumber');
-
-/**
- * Clamps `number` within the inclusive `lower` and `upper` bounds.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Number
- * @param {number} number The number to clamp.
- * @param {number} [lower] The lower bound.
- * @param {number} upper The upper bound.
- * @returns {number} Returns the clamped number.
- * @example
- *
- * _.clamp(-10, -5, 5);
- * // => -5
- *
- * _.clamp(10, -5, 5);
- * // => 5
- */
-function clamp(number, lower, upper) {
-  if (upper === undefined) {
-    upper = lower;
-    lower = undefined;
-  }
-  if (upper !== undefined) {
-    upper = toNumber(upper);
-    upper = upper === upper ? upper : 0;
-  }
-  if (lower !== undefined) {
-    lower = toNumber(lower);
-    lower = lower === lower ? lower : 0;
-  }
-  return baseClamp(toNumber(number), lower, upper);
-}
-
-module.exports = clamp;
Index: ckend/node_modules/lodash/clone.js
===================================================================
--- backend/node_modules/lodash/clone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * Creates a shallow clone of `value`.
- *
- * **Note:** This method is loosely based on the
- * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
- * and supports cloning arrays, array buffers, booleans, date objects, maps,
- * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
- * arrays. The own enumerable properties of `arguments` objects are cloned
- * as plain objects. An empty object is returned for uncloneable values such
- * as error objects, functions, DOM nodes, and WeakMaps.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to clone.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeep
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var shallow = _.clone(objects);
- * console.log(shallow[0] === objects[0]);
- * // => true
- */
-function clone(value) {
-  return baseClone(value, CLONE_SYMBOLS_FLAG);
-}
-
-module.exports = clone;
Index: ckend/node_modules/lodash/cloneDeep.js
===================================================================
--- backend/node_modules/lodash/cloneDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.clone` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @returns {*} Returns the deep cloned value.
- * @see _.clone
- * @example
- *
- * var objects = [{ 'a': 1 }, { 'b': 2 }];
- *
- * var deep = _.cloneDeep(objects);
- * console.log(deep[0] === objects[0]);
- * // => false
- */
-function cloneDeep(value) {
-  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-}
-
-module.exports = cloneDeep;
Index: ckend/node_modules/lodash/cloneDeepWith.js
===================================================================
--- backend/node_modules/lodash/cloneDeepWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.cloneWith` except that it recursively clones `value`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to recursively clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the deep cloned value.
- * @see _.cloneWith
- * @example
- *
- * function customizer(value) {
- *   if (_.isElement(value)) {
- *     return value.cloneNode(true);
- *   }
- * }
- *
- * var el = _.cloneDeepWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 20
- */
-function cloneDeepWith(value, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
-}
-
-module.exports = cloneDeepWith;
Index: ckend/node_modules/lodash/cloneWith.js
===================================================================
--- backend/node_modules/lodash/cloneWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var baseClone = require('./_baseClone');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * This method is like `_.clone` except that it accepts `customizer` which
- * is invoked to produce the cloned value. If `customizer` returns `undefined`,
- * cloning is handled by the method instead. The `customizer` is invoked with
- * up to four arguments; (value [, index|key, object, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to clone.
- * @param {Function} [customizer] The function to customize cloning.
- * @returns {*} Returns the cloned value.
- * @see _.cloneDeepWith
- * @example
- *
- * function customizer(value) {
- *   if (_.isElement(value)) {
- *     return value.cloneNode(false);
- *   }
- * }
- *
- * var el = _.cloneWith(document.body, customizer);
- *
- * console.log(el === document.body);
- * // => false
- * console.log(el.nodeName);
- * // => 'BODY'
- * console.log(el.childNodes.length);
- * // => 0
- */
-function cloneWith(value, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
-}
-
-module.exports = cloneWith;
Index: ckend/node_modules/lodash/collection.js
===================================================================
--- backend/node_modules/lodash/collection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-module.exports = {
-  'countBy': require('./countBy'),
-  'each': require('./each'),
-  'eachRight': require('./eachRight'),
-  'every': require('./every'),
-  'filter': require('./filter'),
-  'find': require('./find'),
-  'findLast': require('./findLast'),
-  'flatMap': require('./flatMap'),
-  'flatMapDeep': require('./flatMapDeep'),
-  'flatMapDepth': require('./flatMapDepth'),
-  'forEach': require('./forEach'),
-  'forEachRight': require('./forEachRight'),
-  'groupBy': require('./groupBy'),
-  'includes': require('./includes'),
-  'invokeMap': require('./invokeMap'),
-  'keyBy': require('./keyBy'),
-  'map': require('./map'),
-  'orderBy': require('./orderBy'),
-  'partition': require('./partition'),
-  'reduce': require('./reduce'),
-  'reduceRight': require('./reduceRight'),
-  'reject': require('./reject'),
-  'sample': require('./sample'),
-  'sampleSize': require('./sampleSize'),
-  'shuffle': require('./shuffle'),
-  'size': require('./size'),
-  'some': require('./some'),
-  'sortBy': require('./sortBy')
-};
Index: ckend/node_modules/lodash/commit.js
===================================================================
--- backend/node_modules/lodash/commit.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var LodashWrapper = require('./_LodashWrapper');
-
-/**
- * Executes the chain sequence and returns the wrapped result.
- *
- * @name commit
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2];
- * var wrapped = _(array).push(3);
- *
- * console.log(array);
- * // => [1, 2]
- *
- * wrapped = wrapped.commit();
- * console.log(array);
- * // => [1, 2, 3]
- *
- * wrapped.last();
- * // => 3
- *
- * console.log(array);
- * // => [1, 2, 3]
- */
-function wrapperCommit() {
-  return new LodashWrapper(this.value(), this.__chain__);
-}
-
-module.exports = wrapperCommit;
Index: ckend/node_modules/lodash/compact.js
===================================================================
--- backend/node_modules/lodash/compact.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * Creates an array with all falsey values removed. The values `false`, `null`,
- * `0`, `""`, `undefined`, and `NaN` are falsey.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to compact.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.compact([0, 1, false, 2, '', 3]);
- * // => [1, 2, 3]
- */
-function compact(array) {
-  var index = -1,
-      length = array == null ? 0 : array.length,
-      resIndex = 0,
-      result = [];
-
-  while (++index < length) {
-    var value = array[index];
-    if (value) {
-      result[resIndex++] = value;
-    }
-  }
-  return result;
-}
-
-module.exports = compact;
Index: ckend/node_modules/lodash/concat.js
===================================================================
--- backend/node_modules/lodash/concat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var arrayPush = require('./_arrayPush'),
-    baseFlatten = require('./_baseFlatten'),
-    copyArray = require('./_copyArray'),
-    isArray = require('./isArray');
-
-/**
- * Creates a new array concatenating `array` with any additional arrays
- * and/or values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to concatenate.
- * @param {...*} [values] The values to concatenate.
- * @returns {Array} Returns the new concatenated array.
- * @example
- *
- * var array = [1];
- * var other = _.concat(array, 2, [3], [[4]]);
- *
- * console.log(other);
- * // => [1, 2, 3, [4]]
- *
- * console.log(array);
- * // => [1]
- */
-function concat() {
-  var length = arguments.length;
-  if (!length) {
-    return [];
-  }
-  var args = Array(length - 1),
-      array = arguments[0],
-      index = length;
-
-  while (index--) {
-    args[index - 1] = arguments[index];
-  }
-  return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-}
-
-module.exports = concat;
Index: ckend/node_modules/lodash/cond.js
===================================================================
--- backend/node_modules/lodash/cond.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-var apply = require('./_apply'),
-    arrayMap = require('./_arrayMap'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that iterates over `pairs` and invokes the corresponding
- * function of the first predicate to return truthy. The predicate-function
- * pairs are invoked with the `this` binding and arguments of the created
- * function.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Array} pairs The predicate-function pairs.
- * @returns {Function} Returns the new composite function.
- * @example
- *
- * var func = _.cond([
- *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
- *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
- *   [_.stubTrue,                      _.constant('no match')]
- * ]);
- *
- * func({ 'a': 1, 'b': 2 });
- * // => 'matches A'
- *
- * func({ 'a': 0, 'b': 1 });
- * // => 'matches B'
- *
- * func({ 'a': '1', 'b': '2' });
- * // => 'no match'
- */
-function cond(pairs) {
-  var length = pairs == null ? 0 : pairs.length,
-      toIteratee = baseIteratee;
-
-  pairs = !length ? [] : arrayMap(pairs, function(pair) {
-    if (typeof pair[1] != 'function') {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-    return [toIteratee(pair[0]), pair[1]];
-  });
-
-  return baseRest(function(args) {
-    var index = -1;
-    while (++index < length) {
-      var pair = pairs[index];
-      if (apply(pair[0], this, args)) {
-        return apply(pair[1], this, args);
-      }
-    }
-  });
-}
-
-module.exports = cond;
Index: ckend/node_modules/lodash/conforms.js
===================================================================
--- backend/node_modules/lodash/conforms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var baseClone = require('./_baseClone'),
-    baseConforms = require('./_baseConforms');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that invokes the predicate properties of `source` with
- * the corresponding property values of a given object, returning `true` if
- * all predicates return truthy, else `false`.
- *
- * **Note:** The created function is equivalent to `_.conformsTo` with
- * `source` partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {Object} source The object of property predicates to conform to.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- *   { 'a': 2, 'b': 1 },
- *   { 'a': 1, 'b': 2 }
- * ];
- *
- * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
- * // => [{ 'a': 1, 'b': 2 }]
- */
-function conforms(source) {
-  return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
-}
-
-module.exports = conforms;
Index: ckend/node_modules/lodash/conformsTo.js
===================================================================
--- backend/node_modules/lodash/conformsTo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseConformsTo = require('./_baseConformsTo'),
-    keys = require('./keys');
-
-/**
- * Checks if `object` conforms to `source` by invoking the predicate
- * properties of `source` with the corresponding property values of `object`.
- *
- * **Note:** This method is equivalent to `_.conforms` when `source` is
- * partially applied.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property predicates to conform to.
- * @returns {boolean} Returns `true` if `object` conforms, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
- * // => true
- *
- * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
- * // => false
- */
-function conformsTo(object, source) {
-  return source == null || baseConformsTo(object, source, keys(source));
-}
-
-module.exports = conformsTo;
Index: ckend/node_modules/lodash/constant.js
===================================================================
--- backend/node_modules/lodash/constant.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/**
- * Creates a function that returns `value`.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {*} value The value to return from the new function.
- * @returns {Function} Returns the new constant function.
- * @example
- *
- * var objects = _.times(2, _.constant({ 'a': 1 }));
- *
- * console.log(objects);
- * // => [{ 'a': 1 }, { 'a': 1 }]
- *
- * console.log(objects[0] === objects[1]);
- * // => true
- */
-function constant(value) {
-  return function() {
-    return value;
-  };
-}
-
-module.exports = constant;
Index: ckend/node_modules/lodash/core.js
===================================================================
--- backend/node_modules/lodash/core.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3877 +1,0 @@
-/**
- * @license
- * Lodash (Custom Build) <https://lodash.com/>
- * Build: `lodash core -o ./dist/lodash.core.js`
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-;(function() {
-
-  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
-  var undefined;
-
-  /** Used as the semantic version number. */
-  var VERSION = '4.17.21';
-
-  /** Error message constants. */
-  var FUNC_ERROR_TEXT = 'Expected a function';
-
-  /** Used to compose bitmasks for value comparisons. */
-  var COMPARE_PARTIAL_FLAG = 1,
-      COMPARE_UNORDERED_FLAG = 2;
-
-  /** Used to compose bitmasks for function metadata. */
-  var WRAP_BIND_FLAG = 1,
-      WRAP_PARTIAL_FLAG = 32;
-
-  /** Used as references for various `Number` constants. */
-  var INFINITY = 1 / 0,
-      MAX_SAFE_INTEGER = 9007199254740991;
-
-  /** `Object#toString` result references. */
-  var argsTag = '[object Arguments]',
-      arrayTag = '[object Array]',
-      asyncTag = '[object AsyncFunction]',
-      boolTag = '[object Boolean]',
-      dateTag = '[object Date]',
-      errorTag = '[object Error]',
-      funcTag = '[object Function]',
-      genTag = '[object GeneratorFunction]',
-      numberTag = '[object Number]',
-      objectTag = '[object Object]',
-      proxyTag = '[object Proxy]',
-      regexpTag = '[object RegExp]',
-      stringTag = '[object String]';
-
-  /** Used to match HTML entities and HTML characters. */
-  var reUnescapedHtml = /[&<>"']/g,
-      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
-  /** Used to detect unsigned integer values. */
-  var reIsUint = /^(?:0|[1-9]\d*)$/;
-
-  /** Used to map characters to HTML entities. */
-  var htmlEscapes = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#39;'
-  };
-
-  /** Detect free variable `global` from Node.js. */
-  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-  /** Detect free variable `self`. */
-  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-  /** Used as a reference to the global object. */
-  var root = freeGlobal || freeSelf || Function('return this')();
-
-  /** Detect free variable `exports`. */
-  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-  /** Detect free variable `module`. */
-  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * Appends the elements of `values` to `array`.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {Array} values The values to append.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayPush(array, values) {
-    array.push.apply(array, values);
-    return array;
-  }
-
-  /**
-   * The base implementation of `_.findIndex` and `_.findLastIndex` without
-   * support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {number} fromIndex The index to search from.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseFindIndex(array, predicate, fromIndex, fromRight) {
-    var length = array.length,
-        index = fromIndex + (fromRight ? 1 : -1);
-
-    while ((fromRight ? index-- : ++index < length)) {
-      if (predicate(array[index], index, array)) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * The base implementation of `_.property` without support for deep paths.
-   *
-   * @private
-   * @param {string} key The key of the property to get.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function baseProperty(key) {
-    return function(object) {
-      return object == null ? undefined : object[key];
-    };
-  }
-
-  /**
-   * The base implementation of `_.propertyOf` without support for deep paths.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function basePropertyOf(object) {
-    return function(key) {
-      return object == null ? undefined : object[key];
-    };
-  }
-
-  /**
-   * The base implementation of `_.reduce` and `_.reduceRight`, without support
-   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} accumulator The initial value.
-   * @param {boolean} initAccum Specify using the first or last element of
-   *  `collection` as the initial value.
-   * @param {Function} eachFunc The function to iterate over `collection`.
-   * @returns {*} Returns the accumulated value.
-   */
-  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
-    eachFunc(collection, function(value, index, collection) {
-      accumulator = initAccum
-        ? (initAccum = false, value)
-        : iteratee(accumulator, value, index, collection);
-    });
-    return accumulator;
-  }
-
-  /**
-   * The base implementation of `_.values` and `_.valuesIn` which creates an
-   * array of `object` property values corresponding to the property names
-   * of `props`.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @param {Array} props The property names to get values for.
-   * @returns {Object} Returns the array of property values.
-   */
-  function baseValues(object, props) {
-    return baseMap(props, function(key) {
-      return object[key];
-    });
-  }
-
-  /**
-   * Used by `_.escape` to convert characters to HTML entities.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
-  /**
-   * Creates a unary function that invokes `func` with its argument transformed.
-   *
-   * @private
-   * @param {Function} func The function to wrap.
-   * @param {Function} transform The argument transform.
-   * @returns {Function} Returns the new function.
-   */
-  function overArg(func, transform) {
-    return function(arg) {
-      return func(transform(arg));
-    };
-  }
-
-  /*--------------------------------------------------------------------------*/
-
-  /** Used for built-in method references. */
-  var arrayProto = Array.prototype,
-      objectProto = Object.prototype;
-
-  /** Used to check objects for own properties. */
-  var hasOwnProperty = objectProto.hasOwnProperty;
-
-  /** Used to generate unique IDs. */
-  var idCounter = 0;
-
-  /**
-   * Used to resolve the
-   * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
-   * of values.
-   */
-  var nativeObjectToString = objectProto.toString;
-
-  /** Used to restore the original `_` reference in `_.noConflict`. */
-  var oldDash = root._;
-
-  /** Built-in value references. */
-  var objectCreate = Object.create,
-      propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-  /* Built-in method references for those with the same name as other `lodash` methods. */
-  var nativeIsFinite = root.isFinite,
-      nativeKeys = overArg(Object.keys, Object),
-      nativeMax = Math.max;
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Creates a `lodash` object which wraps `value` to enable implicit method
-   * chain sequences. Methods that operate on and return arrays, collections,
-   * and functions can be chained together. Methods that retrieve a single value
-   * or may return a primitive value will automatically end the chain sequence
-   * and return the unwrapped value. Otherwise, the value must be unwrapped
-   * with `_#value`.
-   *
-   * Explicit chain sequences, which must be unwrapped with `_#value`, may be
-   * enabled using `_.chain`.
-   *
-   * The execution of chained methods is lazy, that is, it's deferred until
-   * `_#value` is implicitly or explicitly called.
-   *
-   * Lazy evaluation allows several methods to support shortcut fusion.
-   * Shortcut fusion is an optimization to merge iteratee calls; this avoids
-   * the creation of intermediate arrays and can greatly reduce the number of
-   * iteratee executions. Sections of a chain sequence qualify for shortcut
-   * fusion if the section is applied to an array and iteratees accept only
-   * one argument. The heuristic for whether a section qualifies for shortcut
-   * fusion is subject to change.
-   *
-   * Chaining is supported in custom builds as long as the `_#value` method is
-   * directly or indirectly included in the build.
-   *
-   * In addition to lodash methods, wrappers have `Array` and `String` methods.
-   *
-   * The wrapper `Array` methods are:
-   * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
-   *
-   * The wrapper `String` methods are:
-   * `replace` and `split`
-   *
-   * The wrapper methods that support shortcut fusion are:
-   * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
-   * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
-   * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
-   *
-   * The chainable wrapper methods are:
-   * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
-   * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
-   * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
-   * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
-   * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
-   * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
-   * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
-   * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
-   * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
-   * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
-   * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
-   * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
-   * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
-   * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
-   * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
-   * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
-   * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
-   * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
-   * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
-   * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
-   * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
-   * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
-   * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
-   * `zipObject`, `zipObjectDeep`, and `zipWith`
-   *
-   * The wrapper methods that are **not** chainable by default are:
-   * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
-   * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
-   * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
-   * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
-   * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
-   * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
-   * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
-   * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
-   * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
-   * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
-   * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
-   * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
-   * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
-   * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
-   * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
-   * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
-   * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
-   * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
-   * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
-   * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
-   * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
-   * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
-   * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
-   * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
-   * `upperFirst`, `value`, and `words`
-   *
-   * @name _
-   * @constructor
-   * @category Seq
-   * @param {*} value The value to wrap in a `lodash` instance.
-   * @returns {Object} Returns the new `lodash` wrapper instance.
-   * @example
-   *
-   * function square(n) {
-   *   return n * n;
-   * }
-   *
-   * var wrapped = _([1, 2, 3]);
-   *
-   * // Returns an unwrapped value.
-   * wrapped.reduce(_.add);
-   * // => 6
-   *
-   * // Returns a wrapped value.
-   * var squares = wrapped.map(square);
-   *
-   * _.isArray(squares);
-   * // => false
-   *
-   * _.isArray(squares.value());
-   * // => true
-   */
-  function lodash(value) {
-    return value instanceof LodashWrapper
-      ? value
-      : new LodashWrapper(value);
-  }
-
-  /**
-   * The base implementation of `_.create` without support for assigning
-   * properties to the created object.
-   *
-   * @private
-   * @param {Object} proto The object to inherit from.
-   * @returns {Object} Returns the new object.
-   */
-  var baseCreate = (function() {
-    function object() {}
-    return function(proto) {
-      if (!isObject(proto)) {
-        return {};
-      }
-      if (objectCreate) {
-        return objectCreate(proto);
-      }
-      object.prototype = proto;
-      var result = new object;
-      object.prototype = undefined;
-      return result;
-    };
-  }());
-
-  /**
-   * The base constructor for creating `lodash` wrapper objects.
-   *
-   * @private
-   * @param {*} value The value to wrap.
-   * @param {boolean} [chainAll] Enable explicit method chain sequences.
-   */
-  function LodashWrapper(value, chainAll) {
-    this.__wrapped__ = value;
-    this.__actions__ = [];
-    this.__chain__ = !!chainAll;
-  }
-
-  LodashWrapper.prototype = baseCreate(lodash.prototype);
-  LodashWrapper.prototype.constructor = LodashWrapper;
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Assigns `value` to `key` of `object` if the existing value is not equivalent
-   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-   * for equality comparisons.
-   *
-   * @private
-   * @param {Object} object The object to modify.
-   * @param {string} key The key of the property to assign.
-   * @param {*} value The value to assign.
-   */
-  function assignValue(object, key, value) {
-    var objValue = object[key];
-    if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-        (value === undefined && !(key in object))) {
-      baseAssignValue(object, key, value);
-    }
-  }
-
-  /**
-   * The base implementation of `assignValue` and `assignMergeValue` without
-   * value checks.
-   *
-   * @private
-   * @param {Object} object The object to modify.
-   * @param {string} key The key of the property to assign.
-   * @param {*} value The value to assign.
-   */
-  function baseAssignValue(object, key, value) {
-    object[key] = value;
-  }
-
-  /**
-   * The base implementation of `_.delay` and `_.defer` which accepts `args`
-   * to provide to `func`.
-   *
-   * @private
-   * @param {Function} func The function to delay.
-   * @param {number} wait The number of milliseconds to delay invocation.
-   * @param {Array} args The arguments to provide to `func`.
-   * @returns {number|Object} Returns the timer id or timeout object.
-   */
-  function baseDelay(func, wait, args) {
-    if (typeof func != 'function') {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-    return setTimeout(function() { func.apply(undefined, args); }, wait);
-  }
-
-  /**
-   * The base implementation of `_.forEach` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array|Object} Returns `collection`.
-   */
-  var baseEach = createBaseEach(baseForOwn);
-
-  /**
-   * The base implementation of `_.every` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if all elements pass the predicate check,
-   *  else `false`
-   */
-  function baseEvery(collection, predicate) {
-    var result = true;
-    baseEach(collection, function(value, index, collection) {
-      result = !!predicate(value, index, collection);
-      return result;
-    });
-    return result;
-  }
-
-  /**
-   * The base implementation of methods like `_.max` and `_.min` which accepts a
-   * `comparator` to determine the extremum value.
-   *
-   * @private
-   * @param {Array} array The array to iterate over.
-   * @param {Function} iteratee The iteratee invoked per iteration.
-   * @param {Function} comparator The comparator used to compare values.
-   * @returns {*} Returns the extremum value.
-   */
-  function baseExtremum(array, iteratee, comparator) {
-    var index = -1,
-        length = array.length;
-
-    while (++index < length) {
-      var value = array[index],
-          current = iteratee(value);
-
-      if (current != null && (computed === undefined
-            ? (current === current && !false)
-            : comparator(current, computed)
-          )) {
-        var computed = current,
-            result = value;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.filter` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {Array} Returns the new filtered array.
-   */
-  function baseFilter(collection, predicate) {
-    var result = [];
-    baseEach(collection, function(value, index, collection) {
-      if (predicate(value, index, collection)) {
-        result.push(value);
-      }
-    });
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.flatten` with support for restricting flattening.
-   *
-   * @private
-   * @param {Array} array The array to flatten.
-   * @param {number} depth The maximum recursion depth.
-   * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
-   * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
-   * @param {Array} [result=[]] The initial result value.
-   * @returns {Array} Returns the new flattened array.
-   */
-  function baseFlatten(array, depth, predicate, isStrict, result) {
-    var index = -1,
-        length = array.length;
-
-    predicate || (predicate = isFlattenable);
-    result || (result = []);
-
-    while (++index < length) {
-      var value = array[index];
-      if (depth > 0 && predicate(value)) {
-        if (depth > 1) {
-          // Recursively flatten arrays (susceptible to call stack limits).
-          baseFlatten(value, depth - 1, predicate, isStrict, result);
-        } else {
-          arrayPush(result, value);
-        }
-      } else if (!isStrict) {
-        result[result.length] = value;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * The base implementation of `baseForOwn` which iterates over `object`
-   * properties returned by `keysFunc` and invokes `iteratee` for each property.
-   * Iteratee functions may exit iteration early by explicitly returning `false`.
-   *
-   * @private
-   * @param {Object} object The object to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {Function} keysFunc The function to get the keys of `object`.
-   * @returns {Object} Returns `object`.
-   */
-  var baseFor = createBaseFor();
-
-  /**
-   * The base implementation of `_.forOwn` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Object} object The object to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Object} Returns `object`.
-   */
-  function baseForOwn(object, iteratee) {
-    return object && baseFor(object, iteratee, keys);
-  }
-
-  /**
-   * The base implementation of `_.functions` which creates an array of
-   * `object` function property names filtered from `props`.
-   *
-   * @private
-   * @param {Object} object The object to inspect.
-   * @param {Array} props The property names to filter.
-   * @returns {Array} Returns the function names.
-   */
-  function baseFunctions(object, props) {
-    return baseFilter(props, function(key) {
-      return isFunction(object[key]);
-    });
-  }
-
-  /**
-   * The base implementation of `getTag` without fallbacks for buggy environments.
-   *
-   * @private
-   * @param {*} value The value to query.
-   * @returns {string} Returns the `toStringTag`.
-   */
-  function baseGetTag(value) {
-    return objectToString(value);
-  }
-
-  /**
-   * The base implementation of `_.gt` which doesn't coerce arguments.
-   *
-   * @private
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {boolean} Returns `true` if `value` is greater than `other`,
-   *  else `false`.
-   */
-  function baseGt(value, other) {
-    return value > other;
-  }
-
-  /**
-   * The base implementation of `_.isArguments`.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-   */
-  var baseIsArguments = noop;
-
-  /**
-   * The base implementation of `_.isDate` without Node.js optimizations.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-   */
-  function baseIsDate(value) {
-    return isObjectLike(value) && baseGetTag(value) == dateTag;
-  }
-
-  /**
-   * The base implementation of `_.isEqual` which supports partial comparisons
-   * and tracks traversed objects.
-   *
-   * @private
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @param {boolean} bitmask The bitmask flags.
-   *  1 - Unordered comparison
-   *  2 - Partial comparison
-   * @param {Function} [customizer] The function to customize comparisons.
-   * @param {Object} [stack] Tracks traversed `value` and `other` objects.
-   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-   */
-  function baseIsEqual(value, other, bitmask, customizer, stack) {
-    if (value === other) {
-      return true;
-    }
-    if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-      return value !== value && other !== other;
-    }
-    return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-  }
-
-  /**
-   * A specialized version of `baseIsEqual` for arrays and objects which performs
-   * deep comparisons and tracks traversed objects enabling objects with circular
-   * references to be compared.
-   *
-   * @private
-   * @param {Object} object The object to compare.
-   * @param {Object} other The other object to compare.
-   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-   * @param {Function} customizer The function to customize comparisons.
-   * @param {Function} equalFunc The function to determine equivalents of values.
-   * @param {Object} [stack] Tracks traversed `object` and `other` objects.
-   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-   */
-  function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-    var objIsArr = isArray(object),
-        othIsArr = isArray(other),
-        objTag = objIsArr ? arrayTag : baseGetTag(object),
-        othTag = othIsArr ? arrayTag : baseGetTag(other);
-
-    objTag = objTag == argsTag ? objectTag : objTag;
-    othTag = othTag == argsTag ? objectTag : othTag;
-
-    var objIsObj = objTag == objectTag,
-        othIsObj = othTag == objectTag,
-        isSameTag = objTag == othTag;
-
-    stack || (stack = []);
-    var objStack = find(stack, function(entry) {
-      return entry[0] == object;
-    });
-    var othStack = find(stack, function(entry) {
-      return entry[0] == other;
-    });
-    if (objStack && othStack) {
-      return objStack[1] == other;
-    }
-    stack.push([object, other]);
-    stack.push([other, object]);
-    if (isSameTag && !objIsObj) {
-      var result = (objIsArr)
-        ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-        : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-      stack.pop();
-      return result;
-    }
-    if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-      var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-          othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
-      if (objIsWrapped || othIsWrapped) {
-        var objUnwrapped = objIsWrapped ? object.value() : object,
-            othUnwrapped = othIsWrapped ? other.value() : other;
-
-        var result = equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-        stack.pop();
-        return result;
-      }
-    }
-    if (!isSameTag) {
-      return false;
-    }
-    var result = equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-    stack.pop();
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.isRegExp` without Node.js optimizations.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-   */
-  function baseIsRegExp(value) {
-    return isObjectLike(value) && baseGetTag(value) == regexpTag;
-  }
-
-  /**
-   * The base implementation of `_.iteratee`.
-   *
-   * @private
-   * @param {*} [value=_.identity] The value to convert to an iteratee.
-   * @returns {Function} Returns the iteratee.
-   */
-  function baseIteratee(func) {
-    if (typeof func == 'function') {
-      return func;
-    }
-    if (func == null) {
-      return identity;
-    }
-    return (typeof func == 'object' ? baseMatches : baseProperty)(func);
-  }
-
-  /**
-   * The base implementation of `_.lt` which doesn't coerce arguments.
-   *
-   * @private
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {boolean} Returns `true` if `value` is less than `other`,
-   *  else `false`.
-   */
-  function baseLt(value, other) {
-    return value < other;
-  }
-
-  /**
-   * The base implementation of `_.map` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns the new mapped array.
-   */
-  function baseMap(collection, iteratee) {
-    var index = -1,
-        result = isArrayLike(collection) ? Array(collection.length) : [];
-
-    baseEach(collection, function(value, key, collection) {
-      result[++index] = iteratee(value, key, collection);
-    });
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.matches` which doesn't clone `source`.
-   *
-   * @private
-   * @param {Object} source The object of property values to match.
-   * @returns {Function} Returns the new spec function.
-   */
-  function baseMatches(source) {
-    var props = nativeKeys(source);
-    return function(object) {
-      var length = props.length;
-      if (object == null) {
-        return !length;
-      }
-      object = Object(object);
-      while (length--) {
-        var key = props[length];
-        if (!(key in object &&
-              baseIsEqual(source[key], object[key], COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG)
-            )) {
-          return false;
-        }
-      }
-      return true;
-    };
-  }
-
-  /**
-   * The base implementation of `_.pick` without support for individual
-   * property identifiers.
-   *
-   * @private
-   * @param {Object} object The source object.
-   * @param {string[]} paths The property paths to pick.
-   * @returns {Object} Returns the new object.
-   */
-  function basePick(object, props) {
-    object = Object(object);
-    return reduce(props, function(result, key) {
-      if (key in object) {
-        result[key] = object[key];
-      }
-      return result;
-    }, {});
-  }
-
-  /**
-   * The base implementation of `_.rest` which doesn't validate or coerce arguments.
-   *
-   * @private
-   * @param {Function} func The function to apply a rest parameter to.
-   * @param {number} [start=func.length-1] The start position of the rest parameter.
-   * @returns {Function} Returns the new function.
-   */
-  function baseRest(func, start) {
-    return setToString(overRest(func, start, identity), func + '');
-  }
-
-  /**
-   * The base implementation of `_.slice` without an iteratee call guard.
-   *
-   * @private
-   * @param {Array} array The array to slice.
-   * @param {number} [start=0] The start position.
-   * @param {number} [end=array.length] The end position.
-   * @returns {Array} Returns the slice of `array`.
-   */
-  function baseSlice(array, start, end) {
-    var index = -1,
-        length = array.length;
-
-    if (start < 0) {
-      start = -start > length ? 0 : (length + start);
-    }
-    end = end > length ? length : end;
-    if (end < 0) {
-      end += length;
-    }
-    length = start > end ? 0 : ((end - start) >>> 0);
-    start >>>= 0;
-
-    var result = Array(length);
-    while (++index < length) {
-      result[index] = array[index + start];
-    }
-    return result;
-  }
-
-  /**
-   * Copies the values of `source` to `array`.
-   *
-   * @private
-   * @param {Array} source The array to copy values from.
-   * @param {Array} [array=[]] The array to copy values to.
-   * @returns {Array} Returns `array`.
-   */
-  function copyArray(source) {
-    return baseSlice(source, 0, source.length);
-  }
-
-  /**
-   * The base implementation of `_.some` without support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if any element passes the predicate check,
-   *  else `false`.
-   */
-  function baseSome(collection, predicate) {
-    var result;
-
-    baseEach(collection, function(value, index, collection) {
-      result = predicate(value, index, collection);
-      return !result;
-    });
-    return !!result;
-  }
-
-  /**
-   * The base implementation of `wrapperValue` which returns the result of
-   * performing a sequence of actions on the unwrapped `value`, where each
-   * successive action is supplied the return value of the previous.
-   *
-   * @private
-   * @param {*} value The unwrapped value.
-   * @param {Array} actions Actions to perform to resolve the unwrapped value.
-   * @returns {*} Returns the resolved value.
-   */
-  function baseWrapperValue(value, actions) {
-    var result = value;
-    return reduce(actions, function(result, action) {
-      return action.func.apply(action.thisArg, arrayPush([result], action.args));
-    }, result);
-  }
-
-  /**
-   * Compares values to sort them in ascending order.
-   *
-   * @private
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {number} Returns the sort order indicator for `value`.
-   */
-  function compareAscending(value, other) {
-    if (value !== other) {
-      var valIsDefined = value !== undefined,
-          valIsNull = value === null,
-          valIsReflexive = value === value,
-          valIsSymbol = false;
-
-      var othIsDefined = other !== undefined,
-          othIsNull = other === null,
-          othIsReflexive = other === other,
-          othIsSymbol = false;
-
-      if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-          (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-          (valIsNull && othIsDefined && othIsReflexive) ||
-          (!valIsDefined && othIsReflexive) ||
-          !valIsReflexive) {
-        return 1;
-      }
-      if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-          (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-          (othIsNull && valIsDefined && valIsReflexive) ||
-          (!othIsDefined && valIsReflexive) ||
-          !othIsReflexive) {
-        return -1;
-      }
-    }
-    return 0;
-  }
-
-  /**
-   * Copies properties of `source` to `object`.
-   *
-   * @private
-   * @param {Object} source The object to copy properties from.
-   * @param {Array} props The property identifiers to copy.
-   * @param {Object} [object={}] The object to copy properties to.
-   * @param {Function} [customizer] The function to customize copied values.
-   * @returns {Object} Returns `object`.
-   */
-  function copyObject(source, props, object, customizer) {
-    var isNew = !object;
-    object || (object = {});
-
-    var index = -1,
-        length = props.length;
-
-    while (++index < length) {
-      var key = props[index];
-
-      var newValue = customizer
-        ? customizer(object[key], source[key], key, object, source)
-        : undefined;
-
-      if (newValue === undefined) {
-        newValue = source[key];
-      }
-      if (isNew) {
-        baseAssignValue(object, key, newValue);
-      } else {
-        assignValue(object, key, newValue);
-      }
-    }
-    return object;
-  }
-
-  /**
-   * Creates a function like `_.assign`.
-   *
-   * @private
-   * @param {Function} assigner The function to assign values.
-   * @returns {Function} Returns the new assigner function.
-   */
-  function createAssigner(assigner) {
-    return baseRest(function(object, sources) {
-      var index = -1,
-          length = sources.length,
-          customizer = length > 1 ? sources[length - 1] : undefined;
-
-      customizer = (assigner.length > 3 && typeof customizer == 'function')
-        ? (length--, customizer)
-        : undefined;
-
-      object = Object(object);
-      while (++index < length) {
-        var source = sources[index];
-        if (source) {
-          assigner(object, source, index, customizer);
-        }
-      }
-      return object;
-    });
-  }
-
-  /**
-   * Creates a `baseEach` or `baseEachRight` function.
-   *
-   * @private
-   * @param {Function} eachFunc The function to iterate over a collection.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {Function} Returns the new base function.
-   */
-  function createBaseEach(eachFunc, fromRight) {
-    return function(collection, iteratee) {
-      if (collection == null) {
-        return collection;
-      }
-      if (!isArrayLike(collection)) {
-        return eachFunc(collection, iteratee);
-      }
-      var length = collection.length,
-          index = fromRight ? length : -1,
-          iterable = Object(collection);
-
-      while ((fromRight ? index-- : ++index < length)) {
-        if (iteratee(iterable[index], index, iterable) === false) {
-          break;
-        }
-      }
-      return collection;
-    };
-  }
-
-  /**
-   * Creates a base function for methods like `_.forIn` and `_.forOwn`.
-   *
-   * @private
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {Function} Returns the new base function.
-   */
-  function createBaseFor(fromRight) {
-    return function(object, iteratee, keysFunc) {
-      var index = -1,
-          iterable = Object(object),
-          props = keysFunc(object),
-          length = props.length;
-
-      while (length--) {
-        var key = props[fromRight ? length : ++index];
-        if (iteratee(iterable[key], key, iterable) === false) {
-          break;
-        }
-      }
-      return object;
-    };
-  }
-
-  /**
-   * Creates a function that produces an instance of `Ctor` regardless of
-   * whether it was invoked as part of a `new` expression or by `call` or `apply`.
-   *
-   * @private
-   * @param {Function} Ctor The constructor to wrap.
-   * @returns {Function} Returns the new wrapped function.
-   */
-  function createCtor(Ctor) {
-    return function() {
-      // Use a `switch` statement to work with class constructors. See
-      // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
-      // for more details.
-      var args = arguments;
-      var thisBinding = baseCreate(Ctor.prototype),
-          result = Ctor.apply(thisBinding, args);
-
-      // Mimic the constructor's `return` behavior.
-      // See https://es5.github.io/#x13.2.2 for more details.
-      return isObject(result) ? result : thisBinding;
-    };
-  }
-
-  /**
-   * Creates a `_.find` or `_.findLast` function.
-   *
-   * @private
-   * @param {Function} findIndexFunc The function to find the collection index.
-   * @returns {Function} Returns the new find function.
-   */
-  function createFind(findIndexFunc) {
-    return function(collection, predicate, fromIndex) {
-      var iterable = Object(collection);
-      if (!isArrayLike(collection)) {
-        var iteratee = baseIteratee(predicate, 3);
-        collection = keys(collection);
-        predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-      }
-      var index = findIndexFunc(collection, predicate, fromIndex);
-      return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-    };
-  }
-
-  /**
-   * Creates a function that wraps `func` to invoke it with the `this` binding
-   * of `thisArg` and `partials` prepended to the arguments it receives.
-   *
-   * @private
-   * @param {Function} func The function to wrap.
-   * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-   * @param {*} thisArg The `this` binding of `func`.
-   * @param {Array} partials The arguments to prepend to those provided to
-   *  the new function.
-   * @returns {Function} Returns the new wrapped function.
-   */
-  function createPartial(func, bitmask, thisArg, partials) {
-    if (typeof func != 'function') {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-    var isBind = bitmask & WRAP_BIND_FLAG,
-        Ctor = createCtor(func);
-
-    function wrapper() {
-      var argsIndex = -1,
-          argsLength = arguments.length,
-          leftIndex = -1,
-          leftLength = partials.length,
-          args = Array(leftLength + argsLength),
-          fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
-      while (++leftIndex < leftLength) {
-        args[leftIndex] = partials[leftIndex];
-      }
-      while (argsLength--) {
-        args[leftIndex++] = arguments[++argsIndex];
-      }
-      return fn.apply(isBind ? thisArg : this, args);
-    }
-    return wrapper;
-  }
-
-  /**
-   * A specialized version of `baseIsEqualDeep` for arrays with support for
-   * partial deep comparisons.
-   *
-   * @private
-   * @param {Array} array The array to compare.
-   * @param {Array} other The other array to compare.
-   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-   * @param {Function} customizer The function to customize comparisons.
-   * @param {Function} equalFunc The function to determine equivalents of values.
-   * @param {Object} stack Tracks traversed `array` and `other` objects.
-   * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
-   */
-  function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-    var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-        arrLength = array.length,
-        othLength = other.length;
-
-    if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-      return false;
-    }
-    // Check that cyclic values are equal.
-    var arrStacked = stack.get(array);
-    var othStacked = stack.get(other);
-    if (arrStacked && othStacked) {
-      return arrStacked == other && othStacked == array;
-    }
-    var index = -1,
-        result = true,
-        seen = (bitmask & COMPARE_UNORDERED_FLAG) ? [] : undefined;
-
-    // Ignore non-index properties.
-    while (++index < arrLength) {
-      var arrValue = array[index],
-          othValue = other[index];
-
-      var compared;
-      if (compared !== undefined) {
-        if (compared) {
-          continue;
-        }
-        result = false;
-        break;
-      }
-      // Recursively compare arrays (susceptible to call stack limits).
-      if (seen) {
-        if (!baseSome(other, function(othValue, othIndex) {
-              if (!indexOf(seen, othIndex) &&
-                  (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-                return seen.push(othIndex);
-              }
-            })) {
-          result = false;
-          break;
-        }
-      } else if (!(
-            arrValue === othValue ||
-              equalFunc(arrValue, othValue, bitmask, customizer, stack)
-          )) {
-        result = false;
-        break;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * A specialized version of `baseIsEqualDeep` for comparing objects of
-   * the same `toStringTag`.
-   *
-   * **Note:** This function only supports comparing values with tags of
-   * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
-   *
-   * @private
-   * @param {Object} object The object to compare.
-   * @param {Object} other The other object to compare.
-   * @param {string} tag The `toStringTag` of the objects to compare.
-   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-   * @param {Function} customizer The function to customize comparisons.
-   * @param {Function} equalFunc The function to determine equivalents of values.
-   * @param {Object} stack Tracks traversed `object` and `other` objects.
-   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-   */
-  function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-    switch (tag) {
-
-      case boolTag:
-      case dateTag:
-      case numberTag:
-        // Coerce booleans to `1` or `0` and dates to milliseconds.
-        // Invalid dates are coerced to `NaN`.
-        return eq(+object, +other);
-
-      case errorTag:
-        return object.name == other.name && object.message == other.message;
-
-      case regexpTag:
-      case stringTag:
-        // Coerce regexes to strings and treat strings, primitives and objects,
-        // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-        // for more details.
-        return object == (other + '');
-
-    }
-    return false;
-  }
-
-  /**
-   * A specialized version of `baseIsEqualDeep` for objects with support for
-   * partial deep comparisons.
-   *
-   * @private
-   * @param {Object} object The object to compare.
-   * @param {Object} other The other object to compare.
-   * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-   * @param {Function} customizer The function to customize comparisons.
-   * @param {Function} equalFunc The function to determine equivalents of values.
-   * @param {Object} stack Tracks traversed `object` and `other` objects.
-   * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-   */
-  function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-    var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-        objProps = keys(object),
-        objLength = objProps.length,
-        othProps = keys(other),
-        othLength = othProps.length;
-
-    if (objLength != othLength && !isPartial) {
-      return false;
-    }
-    var index = objLength;
-    while (index--) {
-      var key = objProps[index];
-      if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-        return false;
-      }
-    }
-    // Check that cyclic values are equal.
-    var objStacked = stack.get(object);
-    var othStacked = stack.get(other);
-    if (objStacked && othStacked) {
-      return objStacked == other && othStacked == object;
-    }
-    var result = true;
-
-    var skipCtor = isPartial;
-    while (++index < objLength) {
-      key = objProps[index];
-      var objValue = object[key],
-          othValue = other[key];
-
-      var compared;
-      // Recursively compare objects (susceptible to call stack limits).
-      if (!(compared === undefined
-            ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-            : compared
-          )) {
-        result = false;
-        break;
-      }
-      skipCtor || (skipCtor = key == 'constructor');
-    }
-    if (result && !skipCtor) {
-      var objCtor = object.constructor,
-          othCtor = other.constructor;
-
-      // Non `Object` object instances with different constructors are not equal.
-      if (objCtor != othCtor &&
-          ('constructor' in object && 'constructor' in other) &&
-          !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-            typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-        result = false;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * A specialized version of `baseRest` which flattens the rest array.
-   *
-   * @private
-   * @param {Function} func The function to apply a rest parameter to.
-   * @returns {Function} Returns the new function.
-   */
-  function flatRest(func) {
-    return setToString(overRest(func, undefined, flatten), func + '');
-  }
-
-  /**
-   * Checks if `value` is a flattenable `arguments` object or array.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
-   */
-  function isFlattenable(value) {
-    return isArray(value) || isArguments(value);
-  }
-
-  /**
-   * Checks if `value` is a valid array-like index.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
-   * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
-   */
-  function isIndex(value, length) {
-    var type = typeof value;
-    length = length == null ? MAX_SAFE_INTEGER : length;
-
-    return !!length &&
-      (type == 'number' ||
-        (type != 'symbol' && reIsUint.test(value))) &&
-          (value > -1 && value % 1 == 0 && value < length);
-  }
-
-  /**
-   * Checks if the given arguments are from an iteratee call.
-   *
-   * @private
-   * @param {*} value The potential iteratee value argument.
-   * @param {*} index The potential iteratee index or key argument.
-   * @param {*} object The potential iteratee object argument.
-   * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
-   *  else `false`.
-   */
-  function isIterateeCall(value, index, object) {
-    if (!isObject(object)) {
-      return false;
-    }
-    var type = typeof index;
-    if (type == 'number'
-          ? (isArrayLike(object) && isIndex(index, object.length))
-          : (type == 'string' && index in object)
-        ) {
-      return eq(object[index], value);
-    }
-    return false;
-  }
-
-  /**
-   * This function is like
-   * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-   * except that it includes inherited enumerable properties.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @returns {Array} Returns the array of property names.
-   */
-  function nativeKeysIn(object) {
-    var result = [];
-    if (object != null) {
-      for (var key in Object(object)) {
-        result.push(key);
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Converts `value` to a string using `Object.prototype.toString`.
-   *
-   * @private
-   * @param {*} value The value to convert.
-   * @returns {string} Returns the converted string.
-   */
-  function objectToString(value) {
-    return nativeObjectToString.call(value);
-  }
-
-  /**
-   * A specialized version of `baseRest` which transforms the rest array.
-   *
-   * @private
-   * @param {Function} func The function to apply a rest parameter to.
-   * @param {number} [start=func.length-1] The start position of the rest parameter.
-   * @param {Function} transform The rest array transform.
-   * @returns {Function} Returns the new function.
-   */
-  function overRest(func, start, transform) {
-    start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-    return function() {
-      var args = arguments,
-          index = -1,
-          length = nativeMax(args.length - start, 0),
-          array = Array(length);
-
-      while (++index < length) {
-        array[index] = args[start + index];
-      }
-      index = -1;
-      var otherArgs = Array(start + 1);
-      while (++index < start) {
-        otherArgs[index] = args[index];
-      }
-      otherArgs[start] = transform(array);
-      return func.apply(this, otherArgs);
-    };
-  }
-
-  /**
-   * Sets the `toString` method of `func` to return `string`.
-   *
-   * @private
-   * @param {Function} func The function to modify.
-   * @param {Function} string The `toString` result.
-   * @returns {Function} Returns `func`.
-   */
-  var setToString = identity;
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Creates an array with all falsey values removed. The values `false`, `null`,
-   * `0`, `""`, `undefined`, and `NaN` are falsey.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Array
-   * @param {Array} array The array to compact.
-   * @returns {Array} Returns the new array of filtered values.
-   * @example
-   *
-   * _.compact([0, 1, false, 2, '', 3]);
-   * // => [1, 2, 3]
-   */
-  function compact(array) {
-    return baseFilter(array, Boolean);
-  }
-
-  /**
-   * Creates a new array concatenating `array` with any additional arrays
-   * and/or values.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Array
-   * @param {Array} array The array to concatenate.
-   * @param {...*} [values] The values to concatenate.
-   * @returns {Array} Returns the new concatenated array.
-   * @example
-   *
-   * var array = [1];
-   * var other = _.concat(array, 2, [3], [[4]]);
-   *
-   * console.log(other);
-   * // => [1, 2, 3, [4]]
-   *
-   * console.log(array);
-   * // => [1]
-   */
-  function concat() {
-    var length = arguments.length;
-    if (!length) {
-      return [];
-    }
-    var args = Array(length - 1),
-        array = arguments[0],
-        index = length;
-
-    while (index--) {
-      args[index - 1] = arguments[index];
-    }
-    return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-  }
-
-  /**
-   * This method is like `_.find` except that it returns the index of the first
-   * element `predicate` returns truthy for instead of the element itself.
-   *
-   * @static
-   * @memberOf _
-   * @since 1.1.0
-   * @category Array
-   * @param {Array} array The array to inspect.
-   * @param {Function} [predicate=_.identity] The function invoked per iteration.
-   * @param {number} [fromIndex=0] The index to search from.
-   * @returns {number} Returns the index of the found element, else `-1`.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney',  'active': false },
-   *   { 'user': 'fred',    'active': false },
-   *   { 'user': 'pebbles', 'active': true }
-   * ];
-   *
-   * _.findIndex(users, function(o) { return o.user == 'barney'; });
-   * // => 0
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.findIndex(users, { 'user': 'fred', 'active': false });
-   * // => 1
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.findIndex(users, ['active', false]);
-   * // => 0
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.findIndex(users, 'active');
-   * // => 2
-   */
-  function findIndex(array, predicate, fromIndex) {
-    var length = array == null ? 0 : array.length;
-    if (!length) {
-      return -1;
-    }
-    var index = fromIndex == null ? 0 : toInteger(fromIndex);
-    if (index < 0) {
-      index = nativeMax(length + index, 0);
-    }
-    return baseFindIndex(array, baseIteratee(predicate, 3), index);
-  }
-
-  /**
-   * Flattens `array` a single level deep.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Array
-   * @param {Array} array The array to flatten.
-   * @returns {Array} Returns the new flattened array.
-   * @example
-   *
-   * _.flatten([1, [2, [3, [4]], 5]]);
-   * // => [1, 2, [3, [4]], 5]
-   */
-  function flatten(array) {
-    var length = array == null ? 0 : array.length;
-    return length ? baseFlatten(array, 1) : [];
-  }
-
-  /**
-   * Recursively flattens `array`.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Array
-   * @param {Array} array The array to flatten.
-   * @returns {Array} Returns the new flattened array.
-   * @example
-   *
-   * _.flattenDeep([1, [2, [3, [4]], 5]]);
-   * // => [1, 2, 3, 4, 5]
-   */
-  function flattenDeep(array) {
-    var length = array == null ? 0 : array.length;
-    return length ? baseFlatten(array, INFINITY) : [];
-  }
-
-  /**
-   * Gets the first element of `array`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @alias first
-   * @category Array
-   * @param {Array} array The array to query.
-   * @returns {*} Returns the first element of `array`.
-   * @example
-   *
-   * _.head([1, 2, 3]);
-   * // => 1
-   *
-   * _.head([]);
-   * // => undefined
-   */
-  function head(array) {
-    return (array && array.length) ? array[0] : undefined;
-  }
-
-  /**
-   * Gets the index at which the first occurrence of `value` is found in `array`
-   * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-   * for equality comparisons. If `fromIndex` is negative, it's used as the
-   * offset from the end of `array`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Array
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} [fromIndex=0] The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   * @example
-   *
-   * _.indexOf([1, 2, 1, 2], 2);
-   * // => 1
-   *
-   * // Search from the `fromIndex`.
-   * _.indexOf([1, 2, 1, 2], 2, 2);
-   * // => 3
-   */
-  function indexOf(array, value, fromIndex) {
-    var length = array == null ? 0 : array.length;
-    if (typeof fromIndex == 'number') {
-      fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex;
-    } else {
-      fromIndex = 0;
-    }
-    var index = (fromIndex || 0) - 1,
-        isReflexive = value === value;
-
-    while (++index < length) {
-      var other = array[index];
-      if ((isReflexive ? other === value : other !== other)) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * Gets the last element of `array`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Array
-   * @param {Array} array The array to query.
-   * @returns {*} Returns the last element of `array`.
-   * @example
-   *
-   * _.last([1, 2, 3]);
-   * // => 3
-   */
-  function last(array) {
-    var length = array == null ? 0 : array.length;
-    return length ? array[length - 1] : undefined;
-  }
-
-  /**
-   * Creates a slice of `array` from `start` up to, but not including, `end`.
-   *
-   * **Note:** This method is used instead of
-   * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
-   * returned.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Array
-   * @param {Array} array The array to slice.
-   * @param {number} [start=0] The start position.
-   * @param {number} [end=array.length] The end position.
-   * @returns {Array} Returns the slice of `array`.
-   */
-  function slice(array, start, end) {
-    var length = array == null ? 0 : array.length;
-    start = start == null ? 0 : +start;
-    end = end === undefined ? length : +end;
-    return length ? baseSlice(array, start, end) : [];
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Creates a `lodash` wrapper instance that wraps `value` with explicit method
-   * chain sequences enabled. The result of such sequences must be unwrapped
-   * with `_#value`.
-   *
-   * @static
-   * @memberOf _
-   * @since 1.3.0
-   * @category Seq
-   * @param {*} value The value to wrap.
-   * @returns {Object} Returns the new `lodash` wrapper instance.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney',  'age': 36 },
-   *   { 'user': 'fred',    'age': 40 },
-   *   { 'user': 'pebbles', 'age': 1 }
-   * ];
-   *
-   * var youngest = _
-   *   .chain(users)
-   *   .sortBy('age')
-   *   .map(function(o) {
-   *     return o.user + ' is ' + o.age;
-   *   })
-   *   .head()
-   *   .value();
-   * // => 'pebbles is 1'
-   */
-  function chain(value) {
-    var result = lodash(value);
-    result.__chain__ = true;
-    return result;
-  }
-
-  /**
-   * This method invokes `interceptor` and returns `value`. The interceptor
-   * is invoked with one argument; (value). The purpose of this method is to
-   * "tap into" a method chain sequence in order to modify intermediate results.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Seq
-   * @param {*} value The value to provide to `interceptor`.
-   * @param {Function} interceptor The function to invoke.
-   * @returns {*} Returns `value`.
-   * @example
-   *
-   * _([1, 2, 3])
-   *  .tap(function(array) {
-   *    // Mutate input array.
-   *    array.pop();
-   *  })
-   *  .reverse()
-   *  .value();
-   * // => [2, 1]
-   */
-  function tap(value, interceptor) {
-    interceptor(value);
-    return value;
-  }
-
-  /**
-   * This method is like `_.tap` except that it returns the result of `interceptor`.
-   * The purpose of this method is to "pass thru" values replacing intermediate
-   * results in a method chain sequence.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Seq
-   * @param {*} value The value to provide to `interceptor`.
-   * @param {Function} interceptor The function to invoke.
-   * @returns {*} Returns the result of `interceptor`.
-   * @example
-   *
-   * _('  abc  ')
-   *  .chain()
-   *  .trim()
-   *  .thru(function(value) {
-   *    return [value];
-   *  })
-   *  .value();
-   * // => ['abc']
-   */
-  function thru(value, interceptor) {
-    return interceptor(value);
-  }
-
-  /**
-   * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
-   *
-   * @name chain
-   * @memberOf _
-   * @since 0.1.0
-   * @category Seq
-   * @returns {Object} Returns the new `lodash` wrapper instance.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney', 'age': 36 },
-   *   { 'user': 'fred',   'age': 40 }
-   * ];
-   *
-   * // A sequence without explicit chaining.
-   * _(users).head();
-   * // => { 'user': 'barney', 'age': 36 }
-   *
-   * // A sequence with explicit chaining.
-   * _(users)
-   *   .chain()
-   *   .head()
-   *   .pick('user')
-   *   .value();
-   * // => { 'user': 'barney' }
-   */
-  function wrapperChain() {
-    return chain(this);
-  }
-
-  /**
-   * Executes the chain sequence to resolve the unwrapped value.
-   *
-   * @name value
-   * @memberOf _
-   * @since 0.1.0
-   * @alias toJSON, valueOf
-   * @category Seq
-   * @returns {*} Returns the resolved unwrapped value.
-   * @example
-   *
-   * _([1, 2, 3]).value();
-   * // => [1, 2, 3]
-   */
-  function wrapperValue() {
-    return baseWrapperValue(this.__wrapped__, this.__actions__);
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Checks if `predicate` returns truthy for **all** elements of `collection`.
-   * Iteration is stopped once `predicate` returns falsey. The predicate is
-   * invoked with three arguments: (value, index|key, collection).
-   *
-   * **Note:** This method returns `true` for
-   * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
-   * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
-   * elements of empty collections.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [predicate=_.identity] The function invoked per iteration.
-   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-   * @returns {boolean} Returns `true` if all elements pass the predicate check,
-   *  else `false`.
-   * @example
-   *
-   * _.every([true, 1, null, 'yes'], Boolean);
-   * // => false
-   *
-   * var users = [
-   *   { 'user': 'barney', 'age': 36, 'active': false },
-   *   { 'user': 'fred',   'age': 40, 'active': false }
-   * ];
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.every(users, { 'user': 'barney', 'active': false });
-   * // => false
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.every(users, ['active', false]);
-   * // => true
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.every(users, 'active');
-   * // => false
-   */
-  function every(collection, predicate, guard) {
-    predicate = guard ? undefined : predicate;
-    return baseEvery(collection, baseIteratee(predicate));
-  }
-
-  /**
-   * Iterates over elements of `collection`, returning an array of all elements
-   * `predicate` returns truthy for. The predicate is invoked with three
-   * arguments: (value, index|key, collection).
-   *
-   * **Note:** Unlike `_.remove`, this method returns a new array.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [predicate=_.identity] The function invoked per iteration.
-   * @returns {Array} Returns the new filtered array.
-   * @see _.reject
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney', 'age': 36, 'active': true },
-   *   { 'user': 'fred',   'age': 40, 'active': false }
-   * ];
-   *
-   * _.filter(users, function(o) { return !o.active; });
-   * // => objects for ['fred']
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.filter(users, { 'age': 36, 'active': true });
-   * // => objects for ['barney']
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.filter(users, ['active', false]);
-   * // => objects for ['fred']
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.filter(users, 'active');
-   * // => objects for ['barney']
-   *
-   * // Combining several predicates using `_.overEvery` or `_.overSome`.
-   * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
-   * // => objects for ['fred', 'barney']
-   */
-  function filter(collection, predicate) {
-    return baseFilter(collection, baseIteratee(predicate));
-  }
-
-  /**
-   * Iterates over elements of `collection`, returning the first element
-   * `predicate` returns truthy for. The predicate is invoked with three
-   * arguments: (value, index|key, collection).
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to inspect.
-   * @param {Function} [predicate=_.identity] The function invoked per iteration.
-   * @param {number} [fromIndex=0] The index to search from.
-   * @returns {*} Returns the matched element, else `undefined`.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney',  'age': 36, 'active': true },
-   *   { 'user': 'fred',    'age': 40, 'active': false },
-   *   { 'user': 'pebbles', 'age': 1,  'active': true }
-   * ];
-   *
-   * _.find(users, function(o) { return o.age < 40; });
-   * // => object for 'barney'
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.find(users, { 'age': 1, 'active': true });
-   * // => object for 'pebbles'
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.find(users, ['active', false]);
-   * // => object for 'fred'
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.find(users, 'active');
-   * // => object for 'barney'
-   */
-  var find = createFind(findIndex);
-
-  /**
-   * Iterates over elements of `collection` and invokes `iteratee` for each element.
-   * The iteratee is invoked with three arguments: (value, index|key, collection).
-   * Iteratee functions may exit iteration early by explicitly returning `false`.
-   *
-   * **Note:** As with other "Collections" methods, objects with a "length"
-   * property are iterated like arrays. To avoid this behavior use `_.forIn`
-   * or `_.forOwn` for object iteration.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @alias each
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-   * @returns {Array|Object} Returns `collection`.
-   * @see _.forEachRight
-   * @example
-   *
-   * _.forEach([1, 2], function(value) {
-   *   console.log(value);
-   * });
-   * // => Logs `1` then `2`.
-   *
-   * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
-   *   console.log(key);
-   * });
-   * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-   */
-  function forEach(collection, iteratee) {
-    return baseEach(collection, baseIteratee(iteratee));
-  }
-
-  /**
-   * Creates an array of values by running each element in `collection` thru
-   * `iteratee`. The iteratee is invoked with three arguments:
-   * (value, index|key, collection).
-   *
-   * Many lodash methods are guarded to work as iteratees for methods like
-   * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
-   *
-   * The guarded methods are:
-   * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
-   * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
-   * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
-   * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-   * @returns {Array} Returns the new mapped array.
-   * @example
-   *
-   * function square(n) {
-   *   return n * n;
-   * }
-   *
-   * _.map([4, 8], square);
-   * // => [16, 64]
-   *
-   * _.map({ 'a': 4, 'b': 8 }, square);
-   * // => [16, 64] (iteration order is not guaranteed)
-   *
-   * var users = [
-   *   { 'user': 'barney' },
-   *   { 'user': 'fred' }
-   * ];
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.map(users, 'user');
-   * // => ['barney', 'fred']
-   */
-  function map(collection, iteratee) {
-    return baseMap(collection, baseIteratee(iteratee));
-  }
-
-  /**
-   * Reduces `collection` to a value which is the accumulated result of running
-   * each element in `collection` thru `iteratee`, where each successive
-   * invocation is supplied the return value of the previous. If `accumulator`
-   * is not given, the first element of `collection` is used as the initial
-   * value. The iteratee is invoked with four arguments:
-   * (accumulator, value, index|key, collection).
-   *
-   * Many lodash methods are guarded to work as iteratees for methods like
-   * `_.reduce`, `_.reduceRight`, and `_.transform`.
-   *
-   * The guarded methods are:
-   * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
-   * and `sortBy`
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-   * @param {*} [accumulator] The initial value.
-   * @returns {*} Returns the accumulated value.
-   * @see _.reduceRight
-   * @example
-   *
-   * _.reduce([1, 2], function(sum, n) {
-   *   return sum + n;
-   * }, 0);
-   * // => 3
-   *
-   * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-   *   (result[value] || (result[value] = [])).push(key);
-   *   return result;
-   * }, {});
-   * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
-   */
-  function reduce(collection, iteratee, accumulator) {
-    return baseReduce(collection, baseIteratee(iteratee), accumulator, arguments.length < 3, baseEach);
-  }
-
-  /**
-   * Gets the size of `collection` by returning its length for array-like
-   * values or the number of own enumerable string keyed properties for objects.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object|string} collection The collection to inspect.
-   * @returns {number} Returns the collection size.
-   * @example
-   *
-   * _.size([1, 2, 3]);
-   * // => 3
-   *
-   * _.size({ 'a': 1, 'b': 2 });
-   * // => 2
-   *
-   * _.size('pebbles');
-   * // => 7
-   */
-  function size(collection) {
-    if (collection == null) {
-      return 0;
-    }
-    collection = isArrayLike(collection) ? collection : nativeKeys(collection);
-    return collection.length;
-  }
-
-  /**
-   * Checks if `predicate` returns truthy for **any** element of `collection`.
-   * Iteration is stopped once `predicate` returns truthy. The predicate is
-   * invoked with three arguments: (value, index|key, collection).
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} [predicate=_.identity] The function invoked per iteration.
-   * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-   * @returns {boolean} Returns `true` if any element passes the predicate check,
-   *  else `false`.
-   * @example
-   *
-   * _.some([null, 0, 'yes', false], Boolean);
-   * // => true
-   *
-   * var users = [
-   *   { 'user': 'barney', 'active': true },
-   *   { 'user': 'fred',   'active': false }
-   * ];
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.some(users, { 'user': 'barney', 'active': false });
-   * // => false
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.some(users, ['active', false]);
-   * // => true
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.some(users, 'active');
-   * // => true
-   */
-  function some(collection, predicate, guard) {
-    predicate = guard ? undefined : predicate;
-    return baseSome(collection, baseIteratee(predicate));
-  }
-
-  /**
-   * Creates an array of elements, sorted in ascending order by the results of
-   * running each element in a collection thru each iteratee. This method
-   * performs a stable sort, that is, it preserves the original sort order of
-   * equal elements. The iteratees are invoked with one argument: (value).
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Collection
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {...(Function|Function[])} [iteratees=[_.identity]]
-   *  The iteratees to sort by.
-   * @returns {Array} Returns the new sorted array.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'fred',   'age': 48 },
-   *   { 'user': 'barney', 'age': 36 },
-   *   { 'user': 'fred',   'age': 30 },
-   *   { 'user': 'barney', 'age': 34 }
-   * ];
-   *
-   * _.sortBy(users, [function(o) { return o.user; }]);
-   * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
-   *
-   * _.sortBy(users, ['user', 'age']);
-   * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
-   */
-  function sortBy(collection, iteratee) {
-    var index = 0;
-    iteratee = baseIteratee(iteratee);
-
-    return baseMap(baseMap(collection, function(value, key, collection) {
-      return { 'value': value, 'index': index++, 'criteria': iteratee(value, key, collection) };
-    }).sort(function(object, other) {
-      return compareAscending(object.criteria, other.criteria) || (object.index - other.index);
-    }), baseProperty('value'));
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Creates a function that invokes `func`, with the `this` binding and arguments
-   * of the created function, while it's called less than `n` times. Subsequent
-   * calls to the created function return the result of the last `func` invocation.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Function
-   * @param {number} n The number of calls at which `func` is no longer invoked.
-   * @param {Function} func The function to restrict.
-   * @returns {Function} Returns the new restricted function.
-   * @example
-   *
-   * jQuery(element).on('click', _.before(5, addContactToList));
-   * // => Allows adding up to 4 contacts to the list.
-   */
-  function before(n, func) {
-    var result;
-    if (typeof func != 'function') {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-    n = toInteger(n);
-    return function() {
-      if (--n > 0) {
-        result = func.apply(this, arguments);
-      }
-      if (n <= 1) {
-        func = undefined;
-      }
-      return result;
-    };
-  }
-
-  /**
-   * Creates a function that invokes `func` with the `this` binding of `thisArg`
-   * and `partials` prepended to the arguments it receives.
-   *
-   * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
-   * may be used as a placeholder for partially applied arguments.
-   *
-   * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
-   * property of bound functions.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Function
-   * @param {Function} func The function to bind.
-   * @param {*} thisArg The `this` binding of `func`.
-   * @param {...*} [partials] The arguments to be partially applied.
-   * @returns {Function} Returns the new bound function.
-   * @example
-   *
-   * function greet(greeting, punctuation) {
-   *   return greeting + ' ' + this.user + punctuation;
-   * }
-   *
-   * var object = { 'user': 'fred' };
-   *
-   * var bound = _.bind(greet, object, 'hi');
-   * bound('!');
-   * // => 'hi fred!'
-   *
-   * // Bound with placeholders.
-   * var bound = _.bind(greet, object, _, '!');
-   * bound('hi');
-   * // => 'hi fred!'
-   */
-  var bind = baseRest(function(func, thisArg, partials) {
-    return createPartial(func, WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG, thisArg, partials);
-  });
-
-  /**
-   * Defers invoking the `func` until the current call stack has cleared. Any
-   * additional arguments are provided to `func` when it's invoked.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Function
-   * @param {Function} func The function to defer.
-   * @param {...*} [args] The arguments to invoke `func` with.
-   * @returns {number} Returns the timer id.
-   * @example
-   *
-   * _.defer(function(text) {
-   *   console.log(text);
-   * }, 'deferred');
-   * // => Logs 'deferred' after one millisecond.
-   */
-  var defer = baseRest(function(func, args) {
-    return baseDelay(func, 1, args);
-  });
-
-  /**
-   * Invokes `func` after `wait` milliseconds. Any additional arguments are
-   * provided to `func` when it's invoked.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Function
-   * @param {Function} func The function to delay.
-   * @param {number} wait The number of milliseconds to delay invocation.
-   * @param {...*} [args] The arguments to invoke `func` with.
-   * @returns {number} Returns the timer id.
-   * @example
-   *
-   * _.delay(function(text) {
-   *   console.log(text);
-   * }, 1000, 'later');
-   * // => Logs 'later' after one second.
-   */
-  var delay = baseRest(function(func, wait, args) {
-    return baseDelay(func, toNumber(wait) || 0, args);
-  });
-
-  /**
-   * Creates a function that negates the result of the predicate `func`. The
-   * `func` predicate is invoked with the `this` binding and arguments of the
-   * created function.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Function
-   * @param {Function} predicate The predicate to negate.
-   * @returns {Function} Returns the new negated function.
-   * @example
-   *
-   * function isEven(n) {
-   *   return n % 2 == 0;
-   * }
-   *
-   * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
-   * // => [1, 3, 5]
-   */
-  function negate(predicate) {
-    if (typeof predicate != 'function') {
-      throw new TypeError(FUNC_ERROR_TEXT);
-    }
-    return function() {
-      var args = arguments;
-      return !predicate.apply(this, args);
-    };
-  }
-
-  /**
-   * Creates a function that is restricted to invoking `func` once. Repeat calls
-   * to the function return the value of the first invocation. The `func` is
-   * invoked with the `this` binding and arguments of the created function.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Function
-   * @param {Function} func The function to restrict.
-   * @returns {Function} Returns the new restricted function.
-   * @example
-   *
-   * var initialize = _.once(createApplication);
-   * initialize();
-   * initialize();
-   * // => `createApplication` is invoked once
-   */
-  function once(func) {
-    return before(2, func);
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Creates a shallow clone of `value`.
-   *
-   * **Note:** This method is loosely based on the
-   * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
-   * and supports cloning arrays, array buffers, booleans, date objects, maps,
-   * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
-   * arrays. The own enumerable properties of `arguments` objects are cloned
-   * as plain objects. An empty object is returned for uncloneable values such
-   * as error objects, functions, DOM nodes, and WeakMaps.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to clone.
-   * @returns {*} Returns the cloned value.
-   * @see _.cloneDeep
-   * @example
-   *
-   * var objects = [{ 'a': 1 }, { 'b': 2 }];
-   *
-   * var shallow = _.clone(objects);
-   * console.log(shallow[0] === objects[0]);
-   * // => true
-   */
-  function clone(value) {
-    if (!isObject(value)) {
-      return value;
-    }
-    return isArray(value) ? copyArray(value) : copyObject(value, nativeKeys(value));
-  }
-
-  /**
-   * Performs a
-   * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-   * comparison between two values to determine if they are equivalent.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-   * @example
-   *
-   * var object = { 'a': 1 };
-   * var other = { 'a': 1 };
-   *
-   * _.eq(object, object);
-   * // => true
-   *
-   * _.eq(object, other);
-   * // => false
-   *
-   * _.eq('a', 'a');
-   * // => true
-   *
-   * _.eq('a', Object('a'));
-   * // => false
-   *
-   * _.eq(NaN, NaN);
-   * // => true
-   */
-  function eq(value, other) {
-    return value === other || (value !== value && other !== other);
-  }
-
-  /**
-   * Checks if `value` is likely an `arguments` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-   *  else `false`.
-   * @example
-   *
-   * _.isArguments(function() { return arguments; }());
-   * // => true
-   *
-   * _.isArguments([1, 2, 3]);
-   * // => false
-   */
-  var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-    return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-      !propertyIsEnumerable.call(value, 'callee');
-  };
-
-  /**
-   * Checks if `value` is classified as an `Array` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is an array, else `false`.
-   * @example
-   *
-   * _.isArray([1, 2, 3]);
-   * // => true
-   *
-   * _.isArray(document.body.children);
-   * // => false
-   *
-   * _.isArray('abc');
-   * // => false
-   *
-   * _.isArray(_.noop);
-   * // => false
-   */
-  var isArray = Array.isArray;
-
-  /**
-   * Checks if `value` is array-like. A value is considered array-like if it's
-   * not a function and has a `value.length` that's an integer greater than or
-   * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
-   * @example
-   *
-   * _.isArrayLike([1, 2, 3]);
-   * // => true
-   *
-   * _.isArrayLike(document.body.children);
-   * // => true
-   *
-   * _.isArrayLike('abc');
-   * // => true
-   *
-   * _.isArrayLike(_.noop);
-   * // => false
-   */
-  function isArrayLike(value) {
-    return value != null && isLength(value.length) && !isFunction(value);
-  }
-
-  /**
-   * Checks if `value` is classified as a boolean primitive or object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
-   * @example
-   *
-   * _.isBoolean(false);
-   * // => true
-   *
-   * _.isBoolean(null);
-   * // => false
-   */
-  function isBoolean(value) {
-    return value === true || value === false ||
-      (isObjectLike(value) && baseGetTag(value) == boolTag);
-  }
-
-  /**
-   * Checks if `value` is classified as a `Date` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-   * @example
-   *
-   * _.isDate(new Date);
-   * // => true
-   *
-   * _.isDate('Mon April 23 2012');
-   * // => false
-   */
-  var isDate = baseIsDate;
-
-  /**
-   * Checks if `value` is an empty object, collection, map, or set.
-   *
-   * Objects are considered empty if they have no own enumerable string keyed
-   * properties.
-   *
-   * Array-like values such as `arguments` objects, arrays, buffers, strings, or
-   * jQuery-like collections are considered empty if they have a `length` of `0`.
-   * Similarly, maps and sets are considered empty if they have a `size` of `0`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is empty, else `false`.
-   * @example
-   *
-   * _.isEmpty(null);
-   * // => true
-   *
-   * _.isEmpty(true);
-   * // => true
-   *
-   * _.isEmpty(1);
-   * // => true
-   *
-   * _.isEmpty([1, 2, 3]);
-   * // => false
-   *
-   * _.isEmpty({ 'a': 1 });
-   * // => false
-   */
-  function isEmpty(value) {
-    if (isArrayLike(value) &&
-        (isArray(value) || isString(value) ||
-          isFunction(value.splice) || isArguments(value))) {
-      return !value.length;
-    }
-    return !nativeKeys(value).length;
-  }
-
-  /**
-   * Performs a deep comparison between two values to determine if they are
-   * equivalent.
-   *
-   * **Note:** This method supports comparing arrays, array buffers, booleans,
-   * date objects, error objects, maps, numbers, `Object` objects, regexes,
-   * sets, strings, symbols, and typed arrays. `Object` objects are compared
-   * by their own, not inherited, enumerable properties. Functions and DOM
-   * nodes are compared by strict equality, i.e. `===`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to compare.
-   * @param {*} other The other value to compare.
-   * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-   * @example
-   *
-   * var object = { 'a': 1 };
-   * var other = { 'a': 1 };
-   *
-   * _.isEqual(object, other);
-   * // => true
-   *
-   * object === other;
-   * // => false
-   */
-  function isEqual(value, other) {
-    return baseIsEqual(value, other);
-  }
-
-  /**
-   * Checks if `value` is a finite primitive number.
-   *
-   * **Note:** This method is based on
-   * [`Number.isFinite`](https://mdn.io/Number/isFinite).
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
-   * @example
-   *
-   * _.isFinite(3);
-   * // => true
-   *
-   * _.isFinite(Number.MIN_VALUE);
-   * // => true
-   *
-   * _.isFinite(Infinity);
-   * // => false
-   *
-   * _.isFinite('3');
-   * // => false
-   */
-  function isFinite(value) {
-    return typeof value == 'number' && nativeIsFinite(value);
-  }
-
-  /**
-   * Checks if `value` is classified as a `Function` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a function, else `false`.
-   * @example
-   *
-   * _.isFunction(_);
-   * // => true
-   *
-   * _.isFunction(/abc/);
-   * // => false
-   */
-  function isFunction(value) {
-    if (!isObject(value)) {
-      return false;
-    }
-    // The use of `Object#toString` avoids issues with the `typeof` operator
-    // in Safari 9 which returns 'object' for typed arrays and other constructors.
-    var tag = baseGetTag(value);
-    return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-  }
-
-  /**
-   * Checks if `value` is a valid array-like length.
-   *
-   * **Note:** This method is loosely based on
-   * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
-   * @example
-   *
-   * _.isLength(3);
-   * // => true
-   *
-   * _.isLength(Number.MIN_VALUE);
-   * // => false
-   *
-   * _.isLength(Infinity);
-   * // => false
-   *
-   * _.isLength('3');
-   * // => false
-   */
-  function isLength(value) {
-    return typeof value == 'number' &&
-      value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-  }
-
-  /**
-   * Checks if `value` is the
-   * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
-   * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is an object, else `false`.
-   * @example
-   *
-   * _.isObject({});
-   * // => true
-   *
-   * _.isObject([1, 2, 3]);
-   * // => true
-   *
-   * _.isObject(_.noop);
-   * // => true
-   *
-   * _.isObject(null);
-   * // => false
-   */
-  function isObject(value) {
-    var type = typeof value;
-    return value != null && (type == 'object' || type == 'function');
-  }
-
-  /**
-   * Checks if `value` is object-like. A value is object-like if it's not `null`
-   * and has a `typeof` result of "object".
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
-   * @example
-   *
-   * _.isObjectLike({});
-   * // => true
-   *
-   * _.isObjectLike([1, 2, 3]);
-   * // => true
-   *
-   * _.isObjectLike(_.noop);
-   * // => false
-   *
-   * _.isObjectLike(null);
-   * // => false
-   */
-  function isObjectLike(value) {
-    return value != null && typeof value == 'object';
-  }
-
-  /**
-   * Checks if `value` is `NaN`.
-   *
-   * **Note:** This method is based on
-   * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
-   * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
-   * `undefined` and other non-number values.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-   * @example
-   *
-   * _.isNaN(NaN);
-   * // => true
-   *
-   * _.isNaN(new Number(NaN));
-   * // => true
-   *
-   * isNaN(undefined);
-   * // => true
-   *
-   * _.isNaN(undefined);
-   * // => false
-   */
-  function isNaN(value) {
-    // An `NaN` primitive is the only value that is not equal to itself.
-    // Perform the `toStringTag` check first to avoid errors with some
-    // ActiveX objects in IE.
-    return isNumber(value) && value != +value;
-  }
-
-  /**
-   * Checks if `value` is `null`.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
-   * @example
-   *
-   * _.isNull(null);
-   * // => true
-   *
-   * _.isNull(void 0);
-   * // => false
-   */
-  function isNull(value) {
-    return value === null;
-  }
-
-  /**
-   * Checks if `value` is classified as a `Number` primitive or object.
-   *
-   * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
-   * classified as numbers, use the `_.isFinite` method.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a number, else `false`.
-   * @example
-   *
-   * _.isNumber(3);
-   * // => true
-   *
-   * _.isNumber(Number.MIN_VALUE);
-   * // => true
-   *
-   * _.isNumber(Infinity);
-   * // => true
-   *
-   * _.isNumber('3');
-   * // => false
-   */
-  function isNumber(value) {
-    return typeof value == 'number' ||
-      (isObjectLike(value) && baseGetTag(value) == numberTag);
-  }
-
-  /**
-   * Checks if `value` is classified as a `RegExp` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 0.1.0
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-   * @example
-   *
-   * _.isRegExp(/abc/);
-   * // => true
-   *
-   * _.isRegExp('/abc/');
-   * // => false
-   */
-  var isRegExp = baseIsRegExp;
-
-  /**
-   * Checks if `value` is classified as a `String` primitive or object.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is a string, else `false`.
-   * @example
-   *
-   * _.isString('abc');
-   * // => true
-   *
-   * _.isString(1);
-   * // => false
-   */
-  function isString(value) {
-    return typeof value == 'string' ||
-      (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-  }
-
-  /**
-   * Checks if `value` is `undefined`.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Lang
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
-   * @example
-   *
-   * _.isUndefined(void 0);
-   * // => true
-   *
-   * _.isUndefined(null);
-   * // => false
-   */
-  function isUndefined(value) {
-    return value === undefined;
-  }
-
-  /**
-   * Converts `value` to an array.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Lang
-   * @param {*} value The value to convert.
-   * @returns {Array} Returns the converted array.
-   * @example
-   *
-   * _.toArray({ 'a': 1, 'b': 2 });
-   * // => [1, 2]
-   *
-   * _.toArray('abc');
-   * // => ['a', 'b', 'c']
-   *
-   * _.toArray(1);
-   * // => []
-   *
-   * _.toArray(null);
-   * // => []
-   */
-  function toArray(value) {
-    if (!isArrayLike(value)) {
-      return values(value);
-    }
-    return value.length ? copyArray(value) : [];
-  }
-
-  /**
-   * Converts `value` to an integer.
-   *
-   * **Note:** This method is loosely based on
-   * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to convert.
-   * @returns {number} Returns the converted integer.
-   * @example
-   *
-   * _.toInteger(3.2);
-   * // => 3
-   *
-   * _.toInteger(Number.MIN_VALUE);
-   * // => 0
-   *
-   * _.toInteger(Infinity);
-   * // => 1.7976931348623157e+308
-   *
-   * _.toInteger('3.2');
-   * // => 3
-   */
-  var toInteger = Number;
-
-  /**
-   * Converts `value` to a number.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to process.
-   * @returns {number} Returns the number.
-   * @example
-   *
-   * _.toNumber(3.2);
-   * // => 3.2
-   *
-   * _.toNumber(Number.MIN_VALUE);
-   * // => 5e-324
-   *
-   * _.toNumber(Infinity);
-   * // => Infinity
-   *
-   * _.toNumber('3.2');
-   * // => 3.2
-   */
-  var toNumber = Number;
-
-  /**
-   * Converts `value` to a string. An empty string is returned for `null`
-   * and `undefined` values. The sign of `-0` is preserved.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @category Lang
-   * @param {*} value The value to convert.
-   * @returns {string} Returns the converted string.
-   * @example
-   *
-   * _.toString(null);
-   * // => ''
-   *
-   * _.toString(-0);
-   * // => '-0'
-   *
-   * _.toString([1, 2, 3]);
-   * // => '1,2,3'
-   */
-  function toString(value) {
-    if (typeof value == 'string') {
-      return value;
-    }
-    return value == null ? '' : (value + '');
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Assigns own enumerable string keyed properties of source objects to the
-   * destination object. Source objects are applied from left to right.
-   * Subsequent sources overwrite property assignments of previous sources.
-   *
-   * **Note:** This method mutates `object` and is loosely based on
-   * [`Object.assign`](https://mdn.io/Object/assign).
-   *
-   * @static
-   * @memberOf _
-   * @since 0.10.0
-   * @category Object
-   * @param {Object} object The destination object.
-   * @param {...Object} [sources] The source objects.
-   * @returns {Object} Returns `object`.
-   * @see _.assignIn
-   * @example
-   *
-   * function Foo() {
-   *   this.a = 1;
-   * }
-   *
-   * function Bar() {
-   *   this.c = 3;
-   * }
-   *
-   * Foo.prototype.b = 2;
-   * Bar.prototype.d = 4;
-   *
-   * _.assign({ 'a': 0 }, new Foo, new Bar);
-   * // => { 'a': 1, 'c': 3 }
-   */
-  var assign = createAssigner(function(object, source) {
-    copyObject(source, nativeKeys(source), object);
-  });
-
-  /**
-   * This method is like `_.assign` except that it iterates over own and
-   * inherited source properties.
-   *
-   * **Note:** This method mutates `object`.
-   *
-   * @static
-   * @memberOf _
-   * @since 4.0.0
-   * @alias extend
-   * @category Object
-   * @param {Object} object The destination object.
-   * @param {...Object} [sources] The source objects.
-   * @returns {Object} Returns `object`.
-   * @see _.assign
-   * @example
-   *
-   * function Foo() {
-   *   this.a = 1;
-   * }
-   *
-   * function Bar() {
-   *   this.c = 3;
-   * }
-   *
-   * Foo.prototype.b = 2;
-   * Bar.prototype.d = 4;
-   *
-   * _.assignIn({ 'a': 0 }, new Foo, new Bar);
-   * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
-   */
-  var assignIn = createAssigner(function(object, source) {
-    copyObject(source, nativeKeysIn(source), object);
-  });
-
-  /**
-   * Creates an object that inherits from the `prototype` object. If a
-   * `properties` object is given, its own enumerable string keyed properties
-   * are assigned to the created object.
-   *
-   * @static
-   * @memberOf _
-   * @since 2.3.0
-   * @category Object
-   * @param {Object} prototype The object to inherit from.
-   * @param {Object} [properties] The properties to assign to the object.
-   * @returns {Object} Returns the new object.
-   * @example
-   *
-   * function Shape() {
-   *   this.x = 0;
-   *   this.y = 0;
-   * }
-   *
-   * function Circle() {
-   *   Shape.call(this);
-   * }
-   *
-   * Circle.prototype = _.create(Shape.prototype, {
-   *   'constructor': Circle
-   * });
-   *
-   * var circle = new Circle;
-   * circle instanceof Circle;
-   * // => true
-   *
-   * circle instanceof Shape;
-   * // => true
-   */
-  function create(prototype, properties) {
-    var result = baseCreate(prototype);
-    return properties == null ? result : assign(result, properties);
-  }
-
-  /**
-   * Assigns own and inherited enumerable string keyed properties of source
-   * objects to the destination object for all destination properties that
-   * resolve to `undefined`. Source objects are applied from left to right.
-   * Once a property is set, additional values of the same property are ignored.
-   *
-   * **Note:** This method mutates `object`.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The destination object.
-   * @param {...Object} [sources] The source objects.
-   * @returns {Object} Returns `object`.
-   * @see _.defaultsDeep
-   * @example
-   *
-   * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-   * // => { 'a': 1, 'b': 2 }
-   */
-  var defaults = baseRest(function(object, sources) {
-    object = Object(object);
-
-    var index = -1;
-    var length = sources.length;
-    var guard = length > 2 ? sources[2] : undefined;
-
-    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-      length = 1;
-    }
-
-    while (++index < length) {
-      var source = sources[index];
-      var props = keysIn(source);
-      var propsIndex = -1;
-      var propsLength = props.length;
-
-      while (++propsIndex < propsLength) {
-        var key = props[propsIndex];
-        var value = object[key];
-
-        if (value === undefined ||
-            (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-          object[key] = source[key];
-        }
-      }
-    }
-
-    return object;
-  });
-
-  /**
-   * Checks if `path` is a direct property of `object`.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The object to query.
-   * @param {Array|string} path The path to check.
-   * @returns {boolean} Returns `true` if `path` exists, else `false`.
-   * @example
-   *
-   * var object = { 'a': { 'b': 2 } };
-   * var other = _.create({ 'a': _.create({ 'b': 2 }) });
-   *
-   * _.has(object, 'a');
-   * // => true
-   *
-   * _.has(object, 'a.b');
-   * // => true
-   *
-   * _.has(object, ['a', 'b']);
-   * // => true
-   *
-   * _.has(other, 'a');
-   * // => false
-   */
-  function has(object, path) {
-    return object != null && hasOwnProperty.call(object, path);
-  }
-
-  /**
-   * Creates an array of the own enumerable property names of `object`.
-   *
-   * **Note:** Non-object values are coerced to objects. See the
-   * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-   * for more details.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The object to query.
-   * @returns {Array} Returns the array of property names.
-   * @example
-   *
-   * function Foo() {
-   *   this.a = 1;
-   *   this.b = 2;
-   * }
-   *
-   * Foo.prototype.c = 3;
-   *
-   * _.keys(new Foo);
-   * // => ['a', 'b'] (iteration order is not guaranteed)
-   *
-   * _.keys('hi');
-   * // => ['0', '1']
-   */
-  var keys = nativeKeys;
-
-  /**
-   * Creates an array of the own and inherited enumerable property names of `object`.
-   *
-   * **Note:** Non-object values are coerced to objects.
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Object
-   * @param {Object} object The object to query.
-   * @returns {Array} Returns the array of property names.
-   * @example
-   *
-   * function Foo() {
-   *   this.a = 1;
-   *   this.b = 2;
-   * }
-   *
-   * Foo.prototype.c = 3;
-   *
-   * _.keysIn(new Foo);
-   * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
-   */
-  var keysIn = nativeKeysIn;
-
-  /**
-   * Creates an object composed of the picked `object` properties.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The source object.
-   * @param {...(string|string[])} [paths] The property paths to pick.
-   * @returns {Object} Returns the new object.
-   * @example
-   *
-   * var object = { 'a': 1, 'b': '2', 'c': 3 };
-   *
-   * _.pick(object, ['a', 'c']);
-   * // => { 'a': 1, 'c': 3 }
-   */
-  var pick = flatRest(function(object, paths) {
-    return object == null ? {} : basePick(object, paths);
-  });
-
-  /**
-   * This method is like `_.get` except that if the resolved value is a
-   * function it's invoked with the `this` binding of its parent object and
-   * its result is returned.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The object to query.
-   * @param {Array|string} path The path of the property to resolve.
-   * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-   * @returns {*} Returns the resolved value.
-   * @example
-   *
-   * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
-   *
-   * _.result(object, 'a[0].b.c1');
-   * // => 3
-   *
-   * _.result(object, 'a[0].b.c2');
-   * // => 4
-   *
-   * _.result(object, 'a[0].b.c3', 'default');
-   * // => 'default'
-   *
-   * _.result(object, 'a[0].b.c3', _.constant('default'));
-   * // => 'default'
-   */
-  function result(object, path, defaultValue) {
-    var value = object == null ? undefined : object[path];
-    if (value === undefined) {
-      value = defaultValue;
-    }
-    return isFunction(value) ? value.call(object) : value;
-  }
-
-  /**
-   * Creates an array of the own enumerable string keyed property values of `object`.
-   *
-   * **Note:** Non-object values are coerced to objects.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Object
-   * @param {Object} object The object to query.
-   * @returns {Array} Returns the array of property values.
-   * @example
-   *
-   * function Foo() {
-   *   this.a = 1;
-   *   this.b = 2;
-   * }
-   *
-   * Foo.prototype.c = 3;
-   *
-   * _.values(new Foo);
-   * // => [1, 2] (iteration order is not guaranteed)
-   *
-   * _.values('hi');
-   * // => ['h', 'i']
-   */
-  function values(object) {
-    return object == null ? [] : baseValues(object, keys(object));
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
-   * corresponding HTML entities.
-   *
-   * **Note:** No other characters are escaped. To escape additional
-   * characters use a third-party library like [_he_](https://mths.be/he).
-   *
-   * Though the ">" character is escaped for symmetry, characters like
-   * ">" and "/" don't need escaping in HTML and have no special meaning
-   * unless they're part of a tag or unquoted attribute value. See
-   * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
-   * (under "semi-related fun fact") for more details.
-   *
-   * When working with HTML you should always
-   * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
-   * XSS vectors.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category String
-   * @param {string} [string=''] The string to escape.
-   * @returns {string} Returns the escaped string.
-   * @example
-   *
-   * _.escape('fred, barney, & pebbles');
-   * // => 'fred, barney, &amp; pebbles'
-   */
-  function escape(string) {
-    string = toString(string);
-    return (string && reHasUnescapedHtml.test(string))
-      ? string.replace(reUnescapedHtml, escapeHtmlChar)
-      : string;
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * This method returns the first argument it receives.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Util
-   * @param {*} value Any value.
-   * @returns {*} Returns `value`.
-   * @example
-   *
-   * var object = { 'a': 1 };
-   *
-   * console.log(_.identity(object) === object);
-   * // => true
-   */
-  function identity(value) {
-    return value;
-  }
-
-  /**
-   * Creates a function that invokes `func` with the arguments of the created
-   * function. If `func` is a property name, the created function returns the
-   * property value for a given element. If `func` is an array or object, the
-   * created function returns `true` for elements that contain the equivalent
-   * source properties, otherwise it returns `false`.
-   *
-   * @static
-   * @since 4.0.0
-   * @memberOf _
-   * @category Util
-   * @param {*} [func=_.identity] The value to convert to a callback.
-   * @returns {Function} Returns the callback.
-   * @example
-   *
-   * var users = [
-   *   { 'user': 'barney', 'age': 36, 'active': true },
-   *   { 'user': 'fred',   'age': 40, 'active': false }
-   * ];
-   *
-   * // The `_.matches` iteratee shorthand.
-   * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
-   * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
-   *
-   * // The `_.matchesProperty` iteratee shorthand.
-   * _.filter(users, _.iteratee(['user', 'fred']));
-   * // => [{ 'user': 'fred', 'age': 40 }]
-   *
-   * // The `_.property` iteratee shorthand.
-   * _.map(users, _.iteratee('user'));
-   * // => ['barney', 'fred']
-   *
-   * // Create custom iteratee shorthands.
-   * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
-   *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
-   *     return func.test(string);
-   *   };
-   * });
-   *
-   * _.filter(['abc', 'def'], /ef/);
-   * // => ['def']
-   */
-  var iteratee = baseIteratee;
-
-  /**
-   * Creates a function that performs a partial deep comparison between a given
-   * object and `source`, returning `true` if the given object has equivalent
-   * property values, else `false`.
-   *
-   * **Note:** The created function is equivalent to `_.isMatch` with `source`
-   * partially applied.
-   *
-   * Partial comparisons will match empty array and empty object `source`
-   * values against any array or object value, respectively. See `_.isEqual`
-   * for a list of supported value comparisons.
-   *
-   * **Note:** Multiple values can be checked by combining several matchers
-   * using `_.overSome`
-   *
-   * @static
-   * @memberOf _
-   * @since 3.0.0
-   * @category Util
-   * @param {Object} source The object of property values to match.
-   * @returns {Function} Returns the new spec function.
-   * @example
-   *
-   * var objects = [
-   *   { 'a': 1, 'b': 2, 'c': 3 },
-   *   { 'a': 4, 'b': 5, 'c': 6 }
-   * ];
-   *
-   * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
-   * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
-   *
-   * // Checking for several possible values
-   * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
-   * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
-   */
-  function matches(source) {
-    return baseMatches(assign({}, source));
-  }
-
-  /**
-   * Adds all own enumerable string keyed function properties of a source
-   * object to the destination object. If `object` is a function, then methods
-   * are added to its prototype as well.
-   *
-   * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
-   * avoid conflicts caused by modifying the original.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Util
-   * @param {Function|Object} [object=lodash] The destination object.
-   * @param {Object} source The object of functions to add.
-   * @param {Object} [options={}] The options object.
-   * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
-   * @returns {Function|Object} Returns `object`.
-   * @example
-   *
-   * function vowels(string) {
-   *   return _.filter(string, function(v) {
-   *     return /[aeiou]/i.test(v);
-   *   });
-   * }
-   *
-   * _.mixin({ 'vowels': vowels });
-   * _.vowels('fred');
-   * // => ['e']
-   *
-   * _('fred').vowels().value();
-   * // => ['e']
-   *
-   * _.mixin({ 'vowels': vowels }, { 'chain': false });
-   * _('fred').vowels();
-   * // => ['e']
-   */
-  function mixin(object, source, options) {
-    var props = keys(source),
-        methodNames = baseFunctions(source, props);
-
-    if (options == null &&
-        !(isObject(source) && (methodNames.length || !props.length))) {
-      options = source;
-      source = object;
-      object = this;
-      methodNames = baseFunctions(source, keys(source));
-    }
-    var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
-        isFunc = isFunction(object);
-
-    baseEach(methodNames, function(methodName) {
-      var func = source[methodName];
-      object[methodName] = func;
-      if (isFunc) {
-        object.prototype[methodName] = function() {
-          var chainAll = this.__chain__;
-          if (chain || chainAll) {
-            var result = object(this.__wrapped__),
-                actions = result.__actions__ = copyArray(this.__actions__);
-
-            actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
-            result.__chain__ = chainAll;
-            return result;
-          }
-          return func.apply(object, arrayPush([this.value()], arguments));
-        };
-      }
-    });
-
-    return object;
-  }
-
-  /**
-   * Reverts the `_` variable to its previous value and returns a reference to
-   * the `lodash` function.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Util
-   * @returns {Function} Returns the `lodash` function.
-   * @example
-   *
-   * var lodash = _.noConflict();
-   */
-  function noConflict() {
-    if (root._ === this) {
-      root._ = oldDash;
-    }
-    return this;
-  }
-
-  /**
-   * This method returns `undefined`.
-   *
-   * @static
-   * @memberOf _
-   * @since 2.3.0
-   * @category Util
-   * @example
-   *
-   * _.times(2, _.noop);
-   * // => [undefined, undefined]
-   */
-  function noop() {
-    // No operation performed.
-  }
-
-  /**
-   * Generates a unique ID. If `prefix` is given, the ID is appended to it.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Util
-   * @param {string} [prefix=''] The value to prefix the ID with.
-   * @returns {string} Returns the unique ID.
-   * @example
-   *
-   * _.uniqueId('contact_');
-   * // => 'contact_104'
-   *
-   * _.uniqueId();
-   * // => '105'
-   */
-  function uniqueId(prefix) {
-    var id = ++idCounter;
-    return toString(prefix) + id;
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * Computes the maximum value of `array`. If `array` is empty or falsey,
-   * `undefined` is returned.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Math
-   * @param {Array} array The array to iterate over.
-   * @returns {*} Returns the maximum value.
-   * @example
-   *
-   * _.max([4, 2, 8, 6]);
-   * // => 8
-   *
-   * _.max([]);
-   * // => undefined
-   */
-  function max(array) {
-    return (array && array.length)
-      ? baseExtremum(array, identity, baseGt)
-      : undefined;
-  }
-
-  /**
-   * Computes the minimum value of `array`. If `array` is empty or falsey,
-   * `undefined` is returned.
-   *
-   * @static
-   * @since 0.1.0
-   * @memberOf _
-   * @category Math
-   * @param {Array} array The array to iterate over.
-   * @returns {*} Returns the minimum value.
-   * @example
-   *
-   * _.min([4, 2, 8, 6]);
-   * // => 2
-   *
-   * _.min([]);
-   * // => undefined
-   */
-  function min(array) {
-    return (array && array.length)
-      ? baseExtremum(array, identity, baseLt)
-      : undefined;
-  }
-
-  /*------------------------------------------------------------------------*/
-
-  // Add methods that return wrapped values in chain sequences.
-  lodash.assignIn = assignIn;
-  lodash.before = before;
-  lodash.bind = bind;
-  lodash.chain = chain;
-  lodash.compact = compact;
-  lodash.concat = concat;
-  lodash.create = create;
-  lodash.defaults = defaults;
-  lodash.defer = defer;
-  lodash.delay = delay;
-  lodash.filter = filter;
-  lodash.flatten = flatten;
-  lodash.flattenDeep = flattenDeep;
-  lodash.iteratee = iteratee;
-  lodash.keys = keys;
-  lodash.map = map;
-  lodash.matches = matches;
-  lodash.mixin = mixin;
-  lodash.negate = negate;
-  lodash.once = once;
-  lodash.pick = pick;
-  lodash.slice = slice;
-  lodash.sortBy = sortBy;
-  lodash.tap = tap;
-  lodash.thru = thru;
-  lodash.toArray = toArray;
-  lodash.values = values;
-
-  // Add aliases.
-  lodash.extend = assignIn;
-
-  // Add methods to `lodash.prototype`.
-  mixin(lodash, lodash);
-
-  /*------------------------------------------------------------------------*/
-
-  // Add methods that return unwrapped values in chain sequences.
-  lodash.clone = clone;
-  lodash.escape = escape;
-  lodash.every = every;
-  lodash.find = find;
-  lodash.forEach = forEach;
-  lodash.has = has;
-  lodash.head = head;
-  lodash.identity = identity;
-  lodash.indexOf = indexOf;
-  lodash.isArguments = isArguments;
-  lodash.isArray = isArray;
-  lodash.isBoolean = isBoolean;
-  lodash.isDate = isDate;
-  lodash.isEmpty = isEmpty;
-  lodash.isEqual = isEqual;
-  lodash.isFinite = isFinite;
-  lodash.isFunction = isFunction;
-  lodash.isNaN = isNaN;
-  lodash.isNull = isNull;
-  lodash.isNumber = isNumber;
-  lodash.isObject = isObject;
-  lodash.isRegExp = isRegExp;
-  lodash.isString = isString;
-  lodash.isUndefined = isUndefined;
-  lodash.last = last;
-  lodash.max = max;
-  lodash.min = min;
-  lodash.noConflict = noConflict;
-  lodash.noop = noop;
-  lodash.reduce = reduce;
-  lodash.result = result;
-  lodash.size = size;
-  lodash.some = some;
-  lodash.uniqueId = uniqueId;
-
-  // Add aliases.
-  lodash.each = forEach;
-  lodash.first = head;
-
-  mixin(lodash, (function() {
-    var source = {};
-    baseForOwn(lodash, function(func, methodName) {
-      if (!hasOwnProperty.call(lodash.prototype, methodName)) {
-        source[methodName] = func;
-      }
-    });
-    return source;
-  }()), { 'chain': false });
-
-  /*------------------------------------------------------------------------*/
-
-  /**
-   * The semantic version number.
-   *
-   * @static
-   * @memberOf _
-   * @type {string}
-   */
-  lodash.VERSION = VERSION;
-
-  // Add `Array` methods to `lodash.prototype`.
-  baseEach(['pop', 'join', 'replace', 'reverse', 'split', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
-    var func = (/^(?:replace|split)$/.test(methodName) ? String.prototype : arrayProto)[methodName],
-        chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
-        retUnwrapped = /^(?:pop|join|replace|shift)$/.test(methodName);
-
-    lodash.prototype[methodName] = function() {
-      var args = arguments;
-      if (retUnwrapped && !this.__chain__) {
-        var value = this.value();
-        return func.apply(isArray(value) ? value : [], args);
-      }
-      return this[chainName](function(value) {
-        return func.apply(isArray(value) ? value : [], args);
-      });
-    };
-  });
-
-  // Add chain sequence methods to the `lodash` wrapper.
-  lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
-
-  /*--------------------------------------------------------------------------*/
-
-  // Some AMD build optimizers, like r.js, check for condition patterns like:
-  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
-    // Expose Lodash on the global object to prevent errors when Lodash is
-    // loaded by a script tag in the presence of an AMD loader.
-    // See http://requirejs.org/docs/errors.html#mismatch for more details.
-    // Use `_.noConflict` to remove Lodash from the global object.
-    root._ = lodash;
-
-    // Define as an anonymous module so, through path mapping, it can be
-    // referenced as the "underscore" module.
-    define(function() {
-      return lodash;
-    });
-  }
-  // Check for `exports` after `define` in case a build optimizer adds it.
-  else if (freeModule) {
-    // Export for Node.js.
-    (freeModule.exports = lodash)._ = lodash;
-    // Export for CommonJS support.
-    freeExports._ = lodash;
-  }
-  else {
-    // Export to the global object.
-    root._ = lodash;
-  }
-}.call(this));
Index: ckend/node_modules/lodash/core.min.js
===================================================================
--- backend/node_modules/lodash/core.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-/**
- * @license
- * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
- * Build: `lodash core -o ./dist/lodash.core.js`
- */
-;(function(){function n(n){return H(n)&&pn.call(n,"callee")&&!yn.call(n,"callee")}function t(n,t){return n.push.apply(n,t),n}function r(n){return function(t){return null==t?Z:t[n]}}function e(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function u(n,t){return j(t,function(t){return n[t]})}function o(n){return n instanceof i?n:new i(n)}function i(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t}function c(n,t,r){if(typeof n!="function")throw new TypeError("Expected a function");
-return setTimeout(function(){n.apply(Z,r)},t)}function f(n,t){var r=true;return mn(n,function(n,e,u){return r=!!t(n,e,u)}),r}function a(n,t,r){for(var e=-1,u=n.length;++e<u;){var o=n[e],i=t(o);if(null!=i&&(c===Z?i===i:r(i,c)))var c=i,f=o}return f}function l(n,t){var r=[];return mn(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function p(n,r,e,u,o){var i=-1,c=n.length;for(e||(e=R),o||(o=[]);++i<c;){var f=n[i];0<r&&e(f)?1<r?p(f,r-1,e,u,o):t(o,f):u||(o[o.length]=f)}return o}function s(n,t){return n&&On(n,t,Dn);
-}function h(n,t){return l(t,function(t){return U(n[t])})}function v(n,t){return n>t}function b(n,t,r,e,u){return n===t||(null==n||null==t||!H(n)&&!H(t)?n!==n&&t!==t:y(n,t,r,e,b,u))}function y(n,t,r,e,u,o){var i=Nn(n),c=Nn(t),f=i?"[object Array]":hn.call(n),a=c?"[object Array]":hn.call(t),f="[object Arguments]"==f?"[object Object]":f,a="[object Arguments]"==a?"[object Object]":a,l="[object Object]"==f,c="[object Object]"==a,a=f==a;o||(o=[]);var p=An(o,function(t){return t[0]==n}),s=An(o,function(n){
-return n[0]==t});if(p&&s)return p[1]==t;if(o.push([n,t]),o.push([t,n]),a&&!l){if(i)r=T(n,t,r,e,u,o);else n:{switch(f){case"[object Boolean]":case"[object Date]":case"[object Number]":r=J(+n,+t);break n;case"[object Error]":r=n.name==t.name&&n.message==t.message;break n;case"[object RegExp]":case"[object String]":r=n==t+"";break n}r=false}return o.pop(),r}return 1&r||(i=l&&pn.call(n,"__wrapped__"),f=c&&pn.call(t,"__wrapped__"),!i&&!f)?!!a&&(r=B(n,t,r,e,u,o),o.pop(),r):(i=i?n.value():n,f=f?t.value():t,
-r=u(i,f,r,e,o),o.pop(),r)}function g(n){return typeof n=="function"?n:null==n?X:(typeof n=="object"?d:r)(n)}function _(n,t){return n<t}function j(n,t){var r=-1,e=M(n)?Array(n.length):[];return mn(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function d(n){var t=_n(n);return function(r){var e=t.length;if(null==r)return!e;for(r=Object(r);e--;){var u=t[e];if(!(u in r&&b(n[u],r[u],3)))return false}return true}}function m(n,t){return n=Object(n),C(t,function(t,r){return r in n&&(t[r]=n[r]),t},{})}function O(n){return xn(I(n,void 0,X),n+"");
-}function x(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Array(u);++e<u;)r[e]=n[e+t];return r}function A(n){return x(n,0,n.length)}function E(n,t){var r;return mn(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function w(n,r){return C(r,function(n,r){return r.func.apply(r.thisArg,t([n],r.args))},n)}function k(n,t,r){var e=!r;r||(r={});for(var u=-1,o=t.length;++u<o;){var i=t[u],c=Z;if(c===Z&&(c=n[i]),e)r[i]=c;else{var f=r,a=f[i];pn.call(f,i)&&J(a,c)&&(c!==Z||i in f)||(f[i]=c);
-}}return r}function N(n){return O(function(t,r){var e=-1,u=r.length,o=1<u?r[u-1]:Z,o=3<n.length&&typeof o=="function"?(u--,o):Z;for(t=Object(t);++e<u;){var i=r[e];i&&n(t,i,e,o)}return t})}function F(n){return function(){var t=arguments,r=dn(n.prototype),t=n.apply(r,t);return V(t)?t:r}}function S(n,t,r){function e(){for(var o=-1,i=arguments.length,c=-1,f=r.length,a=Array(f+i),l=this&&this!==on&&this instanceof e?u:n;++c<f;)a[c]=r[c];for(;i--;)a[c++]=arguments[++o];return l.apply(t,a)}if(typeof n!="function")throw new TypeError("Expected a function");
-var u=F(n);return e}function T(n,t,r,e,u,o){var i=n.length,c=t.length;if(i!=c&&!(1&r&&c>i))return false;var c=o.get(n),f=o.get(t);if(c&&f)return c==t&&f==n;for(var c=-1,f=true,a=2&r?[]:Z;++c<i;){var l=n[c],p=t[c];if(void 0!==Z){f=false;break}if(a){if(!E(t,function(n,t){if(!P(a,t)&&(l===n||u(l,n,r,e,o)))return a.push(t)})){f=false;break}}else if(l!==p&&!u(l,p,r,e,o)){f=false;break}}return f}function B(n,t,r,e,u,o){var i=1&r,c=Dn(n),f=c.length,a=Dn(t).length;if(f!=a&&!i)return false;for(a=f;a--;){var l=c[a];if(!(i?l in t:pn.call(t,l)))return false;
-}var p=o.get(n),l=o.get(t);if(p&&l)return p==t&&l==n;for(p=true;++a<f;){var l=c[a],s=n[l],h=t[l];if(void 0!==Z||s!==h&&!u(s,h,r,e,o)){p=false;break}i||(i="constructor"==l)}return p&&!i&&(r=n.constructor,e=t.constructor,r!=e&&"constructor"in n&&"constructor"in t&&!(typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)&&(p=false)),p}function R(t){return Nn(t)||n(t)}function D(n){var t=[];if(null!=n)for(var r in Object(n))t.push(r);return t}function I(n,t,r){return t=jn(t===Z?n.length-1:t,0),
-function(){for(var e=arguments,u=-1,o=jn(e.length-t,0),i=Array(o);++u<o;)i[u]=e[t+u];for(u=-1,o=Array(t+1);++u<t;)o[u]=e[u];return o[t]=r(i),n.apply(this,o)}}function $(n){return(null==n?0:n.length)?p(n,1):[]}function q(n){return n&&n.length?n[0]:Z}function P(n,t,r){var e=null==n?0:n.length;r=typeof r=="number"?0>r?jn(e+r,0):r:0,r=(r||0)-1;for(var u=t===t;++r<e;){var o=n[r];if(u?o===t:o!==o)return r}return-1}function z(n,t){return mn(n,g(t))}function C(n,t,r){return e(n,g(t),r,3>arguments.length,mn);
-}function G(n,t){var r;if(typeof t!="function")throw new TypeError("Expected a function");return n=Fn(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=Z),r}}function J(n,t){return n===t||n!==n&&t!==t}function M(n){var t;return(t=null!=n)&&(t=n.length,t=typeof t=="number"&&-1<t&&0==t%1&&9007199254740991>=t),t&&!U(n)}function U(n){return!!V(n)&&(n=hn.call(n),"[object Function]"==n||"[object GeneratorFunction]"==n||"[object AsyncFunction]"==n||"[object Proxy]"==n)}function V(n){var t=typeof n;
-return null!=n&&("object"==t||"function"==t)}function H(n){return null!=n&&typeof n=="object"}function K(n){return typeof n=="number"||H(n)&&"[object Number]"==hn.call(n)}function L(n){return typeof n=="string"||!Nn(n)&&H(n)&&"[object String]"==hn.call(n)}function Q(n){return typeof n=="string"?n:null==n?"":n+""}function W(n){return null==n?[]:u(n,Dn(n))}function X(n){return n}function Y(n,r,e){var u=Dn(r),o=h(r,u);null!=e||V(r)&&(o.length||!u.length)||(e=r,r=n,n=this,o=h(r,Dn(r)));var i=!(V(e)&&"chain"in e&&!e.chain),c=U(n);
-return mn(o,function(e){var u=r[e];n[e]=u,c&&(n.prototype[e]=function(){var r=this.__chain__;if(i||r){var e=n(this.__wrapped__);return(e.__actions__=A(this.__actions__)).push({func:u,args:arguments,thisArg:n}),e.__chain__=r,e}return u.apply(n,t([this.value()],arguments))})}),n}var Z,nn=1/0,tn=/[&<>"']/g,rn=RegExp(tn.source),en=/^(?:0|[1-9]\d*)$/,un=typeof self=="object"&&self&&self.Object===Object&&self,on=typeof global=="object"&&global&&global.Object===Object&&global||un||Function("return this")(),cn=(un=typeof exports=="object"&&exports&&!exports.nodeType&&exports)&&typeof module=="object"&&module&&!module.nodeType&&module,fn=function(n){
-return function(t){return null==n?Z:n[t]}}({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}),an=Array.prototype,ln=Object.prototype,pn=ln.hasOwnProperty,sn=0,hn=ln.toString,vn=on._,bn=Object.create,yn=ln.propertyIsEnumerable,gn=on.isFinite,_n=function(n,t){return function(r){return n(t(r))}}(Object.keys,Object),jn=Math.max,dn=function(){function n(){}return function(t){return V(t)?bn?bn(t):(n.prototype=t,t=new n,n.prototype=Z,t):{}}}();i.prototype=dn(o.prototype),i.prototype.constructor=i;
-var mn=function(n,t){return function(r,e){if(null==r)return r;if(!M(r))return n(r,e);for(var u=r.length,o=t?u:-1,i=Object(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}(s),On=function(n){return function(t,r,e){var u=-1,o=Object(t);e=e(t);for(var i=e.length;i--;){var c=e[n?i:++u];if(false===r(o[c],c,o))break}return t}}(),xn=X,An=function(n){return function(t,r,e){var u=Object(t);if(!M(t)){var o=g(r);t=Dn(t),r=function(n){return o(u[n],n,u)}}return r=n(t,r,e),-1<r?u[o?t[r]:r]:Z}}(function(n,t,r){var e=null==n?0:n.length;
-if(!e)return-1;r=null==r?0:Fn(r),0>r&&(r=jn(e+r,0));n:{for(t=g(t),e=n.length,r+=-1;++r<e;)if(t(n[r],r,n)){n=r;break n}n=-1}return n}),En=O(function(n,t,r){return S(n,t,r)}),wn=O(function(n,t){return c(n,1,t)}),kn=O(function(n,t,r){return c(n,Sn(t)||0,r)}),Nn=Array.isArray,Fn=Number,Sn=Number,Tn=N(function(n,t){k(t,_n(t),n)}),Bn=N(function(n,t){k(t,D(t),n)}),Rn=O(function(n,t){n=Object(n);var r,e=-1,u=t.length,o=2<u?t[2]:Z;if(r=o){r=t[0];var i=t[1];if(V(o)){var c=typeof i;if("number"==c){if(c=M(o))var c=o.length,f=typeof i,c=null==c?9007199254740991:c,c=!!c&&("number"==f||"symbol"!=f&&en.test(i))&&-1<i&&0==i%1&&i<c;
-}else c="string"==c&&i in o;r=!!c&&J(o[i],r)}else r=false}for(r&&(u=1);++e<u;)for(o=t[e],r=In(o),i=-1,c=r.length;++i<c;){var f=r[i],a=n[f];(a===Z||J(a,ln[f])&&!pn.call(n,f))&&(n[f]=o[f])}return n}),Dn=_n,In=D,$n=function(n){return xn(I(n,Z,$),n+"")}(function(n,t){return null==n?{}:m(n,t)});o.assignIn=Bn,o.before=G,o.bind=En,o.chain=function(n){return n=o(n),n.__chain__=true,n},o.compact=function(n){return l(n,Boolean)},o.concat=function(){var n=arguments.length;if(!n)return[];for(var r=Array(n-1),e=arguments[0];n--;)r[n-1]=arguments[n];
-return t(Nn(e)?A(e):[e],p(r,1))},o.create=function(n,t){var r=dn(n);return null==t?r:Tn(r,t)},o.defaults=Rn,o.defer=wn,o.delay=kn,o.filter=function(n,t){return l(n,g(t))},o.flatten=$,o.flattenDeep=function(n){return(null==n?0:n.length)?p(n,nn):[]},o.iteratee=g,o.keys=Dn,o.map=function(n,t){return j(n,g(t))},o.matches=function(n){return d(Tn({},n))},o.mixin=Y,o.negate=function(n){if(typeof n!="function")throw new TypeError("Expected a function");return function(){return!n.apply(this,arguments)}},o.once=function(n){
-return G(2,n)},o.pick=$n,o.slice=function(n,t,r){var e=null==n?0:n.length;return r=r===Z?e:+r,e?x(n,null==t?0:+t,r):[]},o.sortBy=function(n,t){var e=0;return t=g(t),j(j(n,function(n,r,u){return{value:n,index:e++,criteria:t(n,r,u)}}).sort(function(n,t){var r;n:{r=n.criteria;var e=t.criteria;if(r!==e){var u=r!==Z,o=null===r,i=r===r,c=e!==Z,f=null===e,a=e===e;if(!f&&r>e||o&&c&&a||!u&&a||!i){r=1;break n}if(!o&&r<e||f&&u&&i||!c&&i||!a){r=-1;break n}}r=0}return r||n.index-t.index}),r("value"))},o.tap=function(n,t){
-return t(n),n},o.thru=function(n,t){return t(n)},o.toArray=function(n){return M(n)?n.length?A(n):[]:W(n)},o.values=W,o.extend=Bn,Y(o,o),o.clone=function(n){return V(n)?Nn(n)?A(n):k(n,_n(n)):n},o.escape=function(n){return(n=Q(n))&&rn.test(n)?n.replace(tn,fn):n},o.every=function(n,t,r){return t=r?Z:t,f(n,g(t))},o.find=An,o.forEach=z,o.has=function(n,t){return null!=n&&pn.call(n,t)},o.head=q,o.identity=X,o.indexOf=P,o.isArguments=n,o.isArray=Nn,o.isBoolean=function(n){return true===n||false===n||H(n)&&"[object Boolean]"==hn.call(n);
-},o.isDate=function(n){return H(n)&&"[object Date]"==hn.call(n)},o.isEmpty=function(t){return M(t)&&(Nn(t)||L(t)||U(t.splice)||n(t))?!t.length:!_n(t).length},o.isEqual=function(n,t){return b(n,t)},o.isFinite=function(n){return typeof n=="number"&&gn(n)},o.isFunction=U,o.isNaN=function(n){return K(n)&&n!=+n},o.isNull=function(n){return null===n},o.isNumber=K,o.isObject=V,o.isRegExp=function(n){return H(n)&&"[object RegExp]"==hn.call(n)},o.isString=L,o.isUndefined=function(n){return n===Z},o.last=function(n){
-var t=null==n?0:n.length;return t?n[t-1]:Z},o.max=function(n){return n&&n.length?a(n,X,v):Z},o.min=function(n){return n&&n.length?a(n,X,_):Z},o.noConflict=function(){return on._===this&&(on._=vn),this},o.noop=function(){},o.reduce=C,o.result=function(n,t,r){return t=null==n?Z:n[t],t===Z&&(t=r),U(t)?t.call(n):t},o.size=function(n){return null==n?0:(n=M(n)?n:_n(n),n.length)},o.some=function(n,t,r){return t=r?Z:t,E(n,g(t))},o.uniqueId=function(n){var t=++sn;return Q(n)+t},o.each=z,o.first=q,Y(o,function(){
-var n={};return s(o,function(t,r){pn.call(o.prototype,r)||(n[r]=t)}),n}(),{chain:false}),o.VERSION="4.17.21",mn("pop join replace reverse split push shift sort splice unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?String.prototype:an)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|join|replace|shift)$/.test(n);o.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Nn(u)?u:[],n)}return this[r](function(r){return t.apply(Nn(r)?r:[],n);
-})}}),o.prototype.toJSON=o.prototype.valueOf=o.prototype.value=function(){return w(this.__wrapped__,this.__actions__)},typeof define=="function"&&typeof define.amd=="object"&&define.amd?(on._=o, define(function(){return o})):cn?((cn.exports=o)._=o,un._=o):on._=o}).call(this);
Index: ckend/node_modules/lodash/countBy.js
===================================================================
--- backend/node_modules/lodash/countBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    createAggregator = require('./_createAggregator');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the number of times the key was returned by `iteratee`. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.countBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': 1, '6': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.countBy(['one', 'two', 'three'], 'length');
- * // => { '3': 2, '5': 1 }
- */
-var countBy = createAggregator(function(result, value, key) {
-  if (hasOwnProperty.call(result, key)) {
-    ++result[key];
-  } else {
-    baseAssignValue(result, key, 1);
-  }
-});
-
-module.exports = countBy;
Index: ckend/node_modules/lodash/create.js
===================================================================
--- backend/node_modules/lodash/create.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var baseAssign = require('./_baseAssign'),
-    baseCreate = require('./_baseCreate');
-
-/**
- * Creates an object that inherits from the `prototype` object. If a
- * `properties` object is given, its own enumerable string keyed properties
- * are assigned to the created object.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Object
- * @param {Object} prototype The object to inherit from.
- * @param {Object} [properties] The properties to assign to the object.
- * @returns {Object} Returns the new object.
- * @example
- *
- * function Shape() {
- *   this.x = 0;
- *   this.y = 0;
- * }
- *
- * function Circle() {
- *   Shape.call(this);
- * }
- *
- * Circle.prototype = _.create(Shape.prototype, {
- *   'constructor': Circle
- * });
- *
- * var circle = new Circle;
- * circle instanceof Circle;
- * // => true
- *
- * circle instanceof Shape;
- * // => true
- */
-function create(prototype, properties) {
-  var result = baseCreate(prototype);
-  return properties == null ? result : baseAssign(result, properties);
-}
-
-module.exports = create;
Index: ckend/node_modules/lodash/curry.js
===================================================================
--- backend/node_modules/lodash/curry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_FLAG = 8;
-
-/**
- * Creates a function that accepts arguments of `func` and either invokes
- * `func` returning its result, if at least `arity` number of arguments have
- * been provided, or returns a function that accepts the remaining `func`
- * arguments, and so on. The arity of `func` may be specified if `func.length`
- * is not sufficient.
- *
- * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
- * may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- *   return [a, b, c];
- * };
- *
- * var curried = _.curry(abc);
- *
- * curried(1)(2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2)(3);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(1)(_, 3)(2);
- * // => [1, 2, 3]
- */
-function curry(func, arity, guard) {
-  arity = guard ? undefined : arity;
-  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-  result.placeholder = curry.placeholder;
-  return result;
-}
-
-// Assign default placeholders.
-curry.placeholder = {};
-
-module.exports = curry;
Index: ckend/node_modules/lodash/curryRight.js
===================================================================
--- backend/node_modules/lodash/curryRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_CURRY_RIGHT_FLAG = 16;
-
-/**
- * This method is like `_.curry` except that arguments are applied to `func`
- * in the manner of `_.partialRight` instead of `_.partial`.
- *
- * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for provided arguments.
- *
- * **Note:** This method doesn't set the "length" property of curried functions.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to curry.
- * @param {number} [arity=func.length] The arity of `func`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the new curried function.
- * @example
- *
- * var abc = function(a, b, c) {
- *   return [a, b, c];
- * };
- *
- * var curried = _.curryRight(abc);
- *
- * curried(3)(2)(1);
- * // => [1, 2, 3]
- *
- * curried(2, 3)(1);
- * // => [1, 2, 3]
- *
- * curried(1, 2, 3);
- * // => [1, 2, 3]
- *
- * // Curried with placeholders.
- * curried(3)(1, _)(2);
- * // => [1, 2, 3]
- */
-function curryRight(func, arity, guard) {
-  arity = guard ? undefined : arity;
-  var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-  result.placeholder = curryRight.placeholder;
-  return result;
-}
-
-// Assign default placeholders.
-curryRight.placeholder = {};
-
-module.exports = curryRight;
Index: ckend/node_modules/lodash/date.js
===================================================================
--- backend/node_modules/lodash/date.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-module.exports = {
-  'now': require('./now')
-};
Index: ckend/node_modules/lodash/debounce.js
===================================================================
--- backend/node_modules/lodash/debounce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,191 +1,0 @@
-var isObject = require('./isObject'),
-    now = require('./now'),
-    toNumber = require('./toNumber');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * Creates a debounced function that delays invoking `func` until after `wait`
- * milliseconds have elapsed since the last time the debounced function was
- * invoked. The debounced function comes with a `cancel` method to cancel
- * delayed `func` invocations and a `flush` method to immediately invoke them.
- * Provide `options` to indicate whether `func` should be invoked on the
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
- * with the last arguments provided to the debounced function. Subsequent
- * calls to the debounced function return the result of the last `func`
- * invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the debounced function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.debounce` and `_.throttle`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to debounce.
- * @param {number} [wait=0] The number of milliseconds to delay.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=false]
- *  Specify invoking on the leading edge of the timeout.
- * @param {number} [options.maxWait]
- *  The maximum time `func` is allowed to be delayed before it's invoked.
- * @param {boolean} [options.trailing=true]
- *  Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new debounced function.
- * @example
- *
- * // Avoid costly calculations while the window size is in flux.
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
- *
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
- *   'leading': true,
- *   'trailing': false
- * }));
- *
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
- * var source = new EventSource('/stream');
- * jQuery(source).on('message', debounced);
- *
- * // Cancel the trailing debounced invocation.
- * jQuery(window).on('popstate', debounced.cancel);
- */
-function debounce(func, wait, options) {
-  var lastArgs,
-      lastThis,
-      maxWait,
-      result,
-      timerId,
-      lastCallTime,
-      lastInvokeTime = 0,
-      leading = false,
-      maxing = false,
-      trailing = true;
-
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  wait = toNumber(wait) || 0;
-  if (isObject(options)) {
-    leading = !!options.leading;
-    maxing = 'maxWait' in options;
-    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
-    trailing = 'trailing' in options ? !!options.trailing : trailing;
-  }
-
-  function invokeFunc(time) {
-    var args = lastArgs,
-        thisArg = lastThis;
-
-    lastArgs = lastThis = undefined;
-    lastInvokeTime = time;
-    result = func.apply(thisArg, args);
-    return result;
-  }
-
-  function leadingEdge(time) {
-    // Reset any `maxWait` timer.
-    lastInvokeTime = time;
-    // Start the timer for the trailing edge.
-    timerId = setTimeout(timerExpired, wait);
-    // Invoke the leading edge.
-    return leading ? invokeFunc(time) : result;
-  }
-
-  function remainingWait(time) {
-    var timeSinceLastCall = time - lastCallTime,
-        timeSinceLastInvoke = time - lastInvokeTime,
-        timeWaiting = wait - timeSinceLastCall;
-
-    return maxing
-      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
-      : timeWaiting;
-  }
-
-  function shouldInvoke(time) {
-    var timeSinceLastCall = time - lastCallTime,
-        timeSinceLastInvoke = time - lastInvokeTime;
-
-    // Either this is the first call, activity has stopped and we're at the
-    // trailing edge, the system time has gone backwards and we're treating
-    // it as the trailing edge, or we've hit the `maxWait` limit.
-    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
-      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
-  }
-
-  function timerExpired() {
-    var time = now();
-    if (shouldInvoke(time)) {
-      return trailingEdge(time);
-    }
-    // Restart the timer.
-    timerId = setTimeout(timerExpired, remainingWait(time));
-  }
-
-  function trailingEdge(time) {
-    timerId = undefined;
-
-    // Only invoke if we have `lastArgs` which means `func` has been
-    // debounced at least once.
-    if (trailing && lastArgs) {
-      return invokeFunc(time);
-    }
-    lastArgs = lastThis = undefined;
-    return result;
-  }
-
-  function cancel() {
-    if (timerId !== undefined) {
-      clearTimeout(timerId);
-    }
-    lastInvokeTime = 0;
-    lastArgs = lastCallTime = lastThis = timerId = undefined;
-  }
-
-  function flush() {
-    return timerId === undefined ? result : trailingEdge(now());
-  }
-
-  function debounced() {
-    var time = now(),
-        isInvoking = shouldInvoke(time);
-
-    lastArgs = arguments;
-    lastThis = this;
-    lastCallTime = time;
-
-    if (isInvoking) {
-      if (timerId === undefined) {
-        return leadingEdge(lastCallTime);
-      }
-      if (maxing) {
-        // Handle invocations in a tight loop.
-        clearTimeout(timerId);
-        timerId = setTimeout(timerExpired, wait);
-        return invokeFunc(lastCallTime);
-      }
-    }
-    if (timerId === undefined) {
-      timerId = setTimeout(timerExpired, wait);
-    }
-    return result;
-  }
-  debounced.cancel = cancel;
-  debounced.flush = flush;
-  return debounced;
-}
-
-module.exports = debounce;
Index: ckend/node_modules/lodash/deburr.js
===================================================================
--- backend/node_modules/lodash/deburr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var deburrLetter = require('./_deburrLetter'),
-    toString = require('./toString');
-
-/** Used to match Latin Unicode letters (excluding mathematical operators). */
-var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-
-/** Used to compose unicode character classes. */
-var rsComboMarksRange = '\\u0300-\\u036f',
-    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-    rsComboSymbolsRange = '\\u20d0-\\u20ff',
-    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
-
-/** Used to compose unicode capture groups. */
-var rsCombo = '[' + rsComboRange + ']';
-
-/**
- * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
- * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
- */
-var reComboMark = RegExp(rsCombo, 'g');
-
-/**
- * Deburrs `string` by converting
- * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
- * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
- * letters to basic Latin letters and removing
- * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to deburr.
- * @returns {string} Returns the deburred string.
- * @example
- *
- * _.deburr('déjà vu');
- * // => 'deja vu'
- */
-function deburr(string) {
-  string = toString(string);
-  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
-}
-
-module.exports = deburr;
Index: ckend/node_modules/lodash/defaultTo.js
===================================================================
--- backend/node_modules/lodash/defaultTo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/**
- * Checks `value` to determine whether a default value should be returned in
- * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
- * or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.14.0
- * @category Util
- * @param {*} value The value to check.
- * @param {*} defaultValue The default value.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * _.defaultTo(1, 10);
- * // => 1
- *
- * _.defaultTo(undefined, 10);
- * // => 10
- */
-function defaultTo(value, defaultValue) {
-  return (value == null || value !== value) ? defaultValue : value;
-}
-
-module.exports = defaultTo;
Index: ckend/node_modules/lodash/defaults.js
===================================================================
--- backend/node_modules/lodash/defaults.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-var baseRest = require('./_baseRest'),
-    eq = require('./eq'),
-    isIterateeCall = require('./_isIterateeCall'),
-    keysIn = require('./keysIn');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Assigns own and inherited enumerable string keyed properties of source
- * objects to the destination object for all destination properties that
- * resolve to `undefined`. Source objects are applied from left to right.
- * Once a property is set, additional values of the same property are ignored.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaultsDeep
- * @example
- *
- * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
- * // => { 'a': 1, 'b': 2 }
- */
-var defaults = baseRest(function(object, sources) {
-  object = Object(object);
-
-  var index = -1;
-  var length = sources.length;
-  var guard = length > 2 ? sources[2] : undefined;
-
-  if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-    length = 1;
-  }
-
-  while (++index < length) {
-    var source = sources[index];
-    var props = keysIn(source);
-    var propsIndex = -1;
-    var propsLength = props.length;
-
-    while (++propsIndex < propsLength) {
-      var key = props[propsIndex];
-      var value = object[key];
-
-      if (value === undefined ||
-          (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-        object[key] = source[key];
-      }
-    }
-  }
-
-  return object;
-});
-
-module.exports = defaults;
Index: ckend/node_modules/lodash/defaultsDeep.js
===================================================================
--- backend/node_modules/lodash/defaultsDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var apply = require('./_apply'),
-    baseRest = require('./_baseRest'),
-    customDefaultsMerge = require('./_customDefaultsMerge'),
-    mergeWith = require('./mergeWith');
-
-/**
- * This method is like `_.defaults` except that it recursively assigns
- * default properties.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @see _.defaults
- * @example
- *
- * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
- * // => { 'a': { 'b': 2, 'c': 3 } }
- */
-var defaultsDeep = baseRest(function(args) {
-  args.push(undefined, customDefaultsMerge);
-  return apply(mergeWith, undefined, args);
-});
-
-module.exports = defaultsDeep;
Index: ckend/node_modules/lodash/defer.js
===================================================================
--- backend/node_modules/lodash/defer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var baseDelay = require('./_baseDelay'),
-    baseRest = require('./_baseRest');
-
-/**
- * Defers invoking the `func` until the current call stack has cleared. Any
- * additional arguments are provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to defer.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.defer(function(text) {
- *   console.log(text);
- * }, 'deferred');
- * // => Logs 'deferred' after one millisecond.
- */
-var defer = baseRest(function(func, args) {
-  return baseDelay(func, 1, args);
-});
-
-module.exports = defer;
Index: ckend/node_modules/lodash/delay.js
===================================================================
--- backend/node_modules/lodash/delay.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseDelay = require('./_baseDelay'),
-    baseRest = require('./_baseRest'),
-    toNumber = require('./toNumber');
-
-/**
- * Invokes `func` after `wait` milliseconds. Any additional arguments are
- * provided to `func` when it's invoked.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to delay.
- * @param {number} wait The number of milliseconds to delay invocation.
- * @param {...*} [args] The arguments to invoke `func` with.
- * @returns {number} Returns the timer id.
- * @example
- *
- * _.delay(function(text) {
- *   console.log(text);
- * }, 1000, 'later');
- * // => Logs 'later' after one second.
- */
-var delay = baseRest(function(func, wait, args) {
-  return baseDelay(func, toNumber(wait) || 0, args);
-});
-
-module.exports = delay;
Index: ckend/node_modules/lodash/difference.js
===================================================================
--- backend/node_modules/lodash/difference.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseDifference = require('./_baseDifference'),
-    baseFlatten = require('./_baseFlatten'),
-    baseRest = require('./_baseRest'),
-    isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of `array` values not included in the other given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * **Note:** Unlike `_.pullAll`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.without, _.xor
- * @example
- *
- * _.difference([2, 1], [2, 3]);
- * // => [1]
- */
-var difference = baseRest(function(array, values) {
-  return isArrayLikeObject(array)
-    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
-    : [];
-});
-
-module.exports = difference;
Index: ckend/node_modules/lodash/differenceBy.js
===================================================================
--- backend/node_modules/lodash/differenceBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var baseDifference = require('./_baseDifference'),
-    baseFlatten = require('./_baseFlatten'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.difference` except that it accepts `iteratee` which
- * is invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
-var differenceBy = baseRest(function(array, values) {
-  var iteratee = last(values);
-  if (isArrayLikeObject(iteratee)) {
-    iteratee = undefined;
-  }
-  return isArrayLikeObject(array)
-    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2))
-    : [];
-});
-
-module.exports = differenceBy;
Index: ckend/node_modules/lodash/differenceWith.js
===================================================================
--- backend/node_modules/lodash/differenceWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var baseDifference = require('./_baseDifference'),
-    baseFlatten = require('./_baseFlatten'),
-    baseRest = require('./_baseRest'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.difference` except that it accepts `comparator`
- * which is invoked to compare elements of `array` to `values`. The order and
- * references of result values are determined by the first array. The comparator
- * is invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...Array} [values] The values to exclude.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- *
- * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }]
- */
-var differenceWith = baseRest(function(array, values) {
-  var comparator = last(values);
-  if (isArrayLikeObject(comparator)) {
-    comparator = undefined;
-  }
-  return isArrayLikeObject(array)
-    ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
-    : [];
-});
-
-module.exports = differenceWith;
Index: ckend/node_modules/lodash/divide.js
===================================================================
--- backend/node_modules/lodash/divide.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Divide two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} dividend The first number in a division.
- * @param {number} divisor The second number in a division.
- * @returns {number} Returns the quotient.
- * @example
- *
- * _.divide(6, 4);
- * // => 1.5
- */
-var divide = createMathOperation(function(dividend, divisor) {
-  return dividend / divisor;
-}, 1);
-
-module.exports = divide;
Index: ckend/node_modules/lodash/drop.js
===================================================================
--- backend/node_modules/lodash/drop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.drop([1, 2, 3]);
- * // => [2, 3]
- *
- * _.drop([1, 2, 3], 2);
- * // => [3]
- *
- * _.drop([1, 2, 3], 5);
- * // => []
- *
- * _.drop([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function drop(array, n, guard) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  n = (guard || n === undefined) ? 1 : toInteger(n);
-  return baseSlice(array, n < 0 ? 0 : n, length);
-}
-
-module.exports = drop;
Index: ckend/node_modules/lodash/dropRight.js
===================================================================
--- backend/node_modules/lodash/dropRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements dropped from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to drop.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.dropRight([1, 2, 3]);
- * // => [1, 2]
- *
- * _.dropRight([1, 2, 3], 2);
- * // => [1]
- *
- * _.dropRight([1, 2, 3], 5);
- * // => []
- *
- * _.dropRight([1, 2, 3], 0);
- * // => [1, 2, 3]
- */
-function dropRight(array, n, guard) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  n = (guard || n === undefined) ? 1 : toInteger(n);
-  n = length - n;
-  return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = dropRight;
Index: ckend/node_modules/lodash/dropRightWhile.js
===================================================================
--- backend/node_modules/lodash/dropRightWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the end.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.dropRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropRightWhile(users, ['active', false]);
- * // => objects for ['barney']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropRightWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
-function dropRightWhile(array, predicate) {
-  return (array && array.length)
-    ? baseWhile(array, baseIteratee(predicate, 3), true, true)
-    : [];
-}
-
-module.exports = dropRightWhile;
Index: ckend/node_modules/lodash/dropWhile.js
===================================================================
--- backend/node_modules/lodash/dropWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` excluding elements dropped from the beginning.
- * Elements are dropped until `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.dropWhile(users, function(o) { return !o.active; });
- * // => objects for ['pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.dropWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.dropWhile(users, ['active', false]);
- * // => objects for ['pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.dropWhile(users, 'active');
- * // => objects for ['barney', 'fred', 'pebbles']
- */
-function dropWhile(array, predicate) {
-  return (array && array.length)
-    ? baseWhile(array, baseIteratee(predicate, 3), true)
-    : [];
-}
-
-module.exports = dropWhile;
Index: ckend/node_modules/lodash/each.js
===================================================================
--- backend/node_modules/lodash/each.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./forEach');
Index: ckend/node_modules/lodash/eachRight.js
===================================================================
--- backend/node_modules/lodash/eachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./forEachRight');
Index: ckend/node_modules/lodash/endsWith.js
===================================================================
--- backend/node_modules/lodash/endsWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    baseToString = require('./_baseToString'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/**
- * Checks if `string` ends with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=string.length] The position to search up to.
- * @returns {boolean} Returns `true` if `string` ends with `target`,
- *  else `false`.
- * @example
- *
- * _.endsWith('abc', 'c');
- * // => true
- *
- * _.endsWith('abc', 'b');
- * // => false
- *
- * _.endsWith('abc', 'b', 2);
- * // => true
- */
-function endsWith(string, target, position) {
-  string = toString(string);
-  target = baseToString(target);
-
-  var length = string.length;
-  position = position === undefined
-    ? length
-    : baseClamp(toInteger(position), 0, length);
-
-  var end = position;
-  position -= target.length;
-  return position >= 0 && string.slice(position, end) == target;
-}
-
-module.exports = endsWith;
Index: ckend/node_modules/lodash/entries.js
===================================================================
--- backend/node_modules/lodash/entries.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./toPairs');
Index: ckend/node_modules/lodash/entriesIn.js
===================================================================
--- backend/node_modules/lodash/entriesIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./toPairsIn');
Index: ckend/node_modules/lodash/eq.js
===================================================================
--- backend/node_modules/lodash/eq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-/**
- * Performs a
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * comparison between two values to determine if they are equivalent.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.eq(object, object);
- * // => true
- *
- * _.eq(object, other);
- * // => false
- *
- * _.eq('a', 'a');
- * // => true
- *
- * _.eq('a', Object('a'));
- * // => false
- *
- * _.eq(NaN, NaN);
- * // => true
- */
-function eq(value, other) {
-  return value === other || (value !== value && other !== other);
-}
-
-module.exports = eq;
Index: ckend/node_modules/lodash/escape.js
===================================================================
--- backend/node_modules/lodash/escape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var escapeHtmlChar = require('./_escapeHtmlChar'),
-    toString = require('./toString');
-
-/** Used to match HTML entities and HTML characters. */
-var reUnescapedHtml = /[&<>"']/g,
-    reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
-/**
- * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
- * corresponding HTML entities.
- *
- * **Note:** No other characters are escaped. To escape additional
- * characters use a third-party library like [_he_](https://mths.be/he).
- *
- * Though the ">" character is escaped for symmetry, characters like
- * ">" and "/" don't need escaping in HTML and have no special meaning
- * unless they're part of a tag or unquoted attribute value. See
- * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
- * (under "semi-related fun fact") for more details.
- *
- * When working with HTML you should always
- * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
- * XSS vectors.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escape('fred, barney, & pebbles');
- * // => 'fred, barney, &amp; pebbles'
- */
-function escape(string) {
-  string = toString(string);
-  return (string && reHasUnescapedHtml.test(string))
-    ? string.replace(reUnescapedHtml, escapeHtmlChar)
-    : string;
-}
-
-module.exports = escape;
Index: ckend/node_modules/lodash/escapeRegExp.js
===================================================================
--- backend/node_modules/lodash/escapeRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var toString = require('./toString');
-
-/**
- * Used to match `RegExp`
- * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
- */
-var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
-    reHasRegExpChar = RegExp(reRegExpChar.source);
-
-/**
- * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
- * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to escape.
- * @returns {string} Returns the escaped string.
- * @example
- *
- * _.escapeRegExp('[lodash](https://lodash.com/)');
- * // => '\[lodash\]\(https://lodash\.com/\)'
- */
-function escapeRegExp(string) {
-  string = toString(string);
-  return (string && reHasRegExpChar.test(string))
-    ? string.replace(reRegExpChar, '\\$&')
-    : string;
-}
-
-module.exports = escapeRegExp;
Index: ckend/node_modules/lodash/every.js
===================================================================
--- backend/node_modules/lodash/every.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var arrayEvery = require('./_arrayEvery'),
-    baseEvery = require('./_baseEvery'),
-    baseIteratee = require('./_baseIteratee'),
-    isArray = require('./isArray'),
-    isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **all** elements of `collection`.
- * Iteration is stopped once `predicate` returns falsey. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * **Note:** This method returns `true` for
- * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
- * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
- * elements of empty collections.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if all elements pass the predicate check,
- *  else `false`.
- * @example
- *
- * _.every([true, 1, null, 'yes'], Boolean);
- * // => false
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': false },
- *   { 'user': 'fred',   'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.every(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.every(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.every(users, 'active');
- * // => false
- */
-function every(collection, predicate, guard) {
-  var func = isArray(collection) ? arrayEvery : baseEvery;
-  if (guard && isIterateeCall(collection, predicate, guard)) {
-    predicate = undefined;
-  }
-  return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = every;
Index: ckend/node_modules/lodash/extend.js
===================================================================
--- backend/node_modules/lodash/extend.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignIn');
Index: ckend/node_modules/lodash/extendWith.js
===================================================================
--- backend/node_modules/lodash/extendWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignInWith');
Index: ckend/node_modules/lodash/fill.js
===================================================================
--- backend/node_modules/lodash/fill.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var baseFill = require('./_baseFill'),
-    isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Fills elements of `array` with `value` from `start` up to, but not
- * including, `end`.
- *
- * **Note:** This method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Array
- * @param {Array} array The array to fill.
- * @param {*} value The value to fill `array` with.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.fill(array, 'a');
- * console.log(array);
- * // => ['a', 'a', 'a']
- *
- * _.fill(Array(3), 2);
- * // => [2, 2, 2]
- *
- * _.fill([4, 6, 8, 10], '*', 1, 3);
- * // => [4, '*', '*', 10]
- */
-function fill(array, value, start, end) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
-    start = 0;
-    end = length;
-  }
-  return baseFill(array, value, start, end);
-}
-
-module.exports = fill;
Index: ckend/node_modules/lodash/filter.js
===================================================================
--- backend/node_modules/lodash/filter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    baseFilter = require('./_baseFilter'),
-    baseIteratee = require('./_baseIteratee'),
-    isArray = require('./isArray');
-
-/**
- * Iterates over elements of `collection`, returning an array of all elements
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * **Note:** Unlike `_.remove`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.reject
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': true },
- *   { 'user': 'fred',   'age': 40, 'active': false }
- * ];
- *
- * _.filter(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, { 'age': 36, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.filter(users, 'active');
- * // => objects for ['barney']
- *
- * // Combining several predicates using `_.overEvery` or `_.overSome`.
- * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
- * // => objects for ['fred', 'barney']
- */
-function filter(collection, predicate) {
-  var func = isArray(collection) ? arrayFilter : baseFilter;
-  return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = filter;
Index: ckend/node_modules/lodash/find.js
===================================================================
--- backend/node_modules/lodash/find.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var createFind = require('./_createFind'),
-    findIndex = require('./findIndex');
-
-/**
- * Iterates over elements of `collection`, returning the first element
- * `predicate` returns truthy for. The predicate is invoked with three
- * arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36, 'active': true },
- *   { 'user': 'fred',    'age': 40, 'active': false },
- *   { 'user': 'pebbles', 'age': 1,  'active': true }
- * ];
- *
- * _.find(users, function(o) { return o.age < 40; });
- * // => object for 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.find(users, { 'age': 1, 'active': true });
- * // => object for 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.find(users, ['active', false]);
- * // => object for 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.find(users, 'active');
- * // => object for 'barney'
- */
-var find = createFind(findIndex);
-
-module.exports = find;
Index: ckend/node_modules/lodash/findIndex.js
===================================================================
--- backend/node_modules/lodash/findIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
-    baseIteratee = require('./_baseIteratee'),
-    toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.find` except that it returns the index of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.findIndex(users, function(o) { return o.user == 'barney'; });
- * // => 0
- *
- * // The `_.matches` iteratee shorthand.
- * _.findIndex(users, { 'user': 'fred', 'active': false });
- * // => 1
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findIndex(users, ['active', false]);
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.findIndex(users, 'active');
- * // => 2
- */
-function findIndex(array, predicate, fromIndex) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return -1;
-  }
-  var index = fromIndex == null ? 0 : toInteger(fromIndex);
-  if (index < 0) {
-    index = nativeMax(length + index, 0);
-  }
-  return baseFindIndex(array, baseIteratee(predicate, 3), index);
-}
-
-module.exports = findIndex;
Index: ckend/node_modules/lodash/findKey.js
===================================================================
--- backend/node_modules/lodash/findKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var baseFindKey = require('./_baseFindKey'),
-    baseForOwn = require('./_baseForOwn'),
-    baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.find` except that it returns the key of the first
- * element `predicate` returns truthy for instead of the element itself.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- *  else `undefined`.
- * @example
- *
- * var users = {
- *   'barney':  { 'age': 36, 'active': true },
- *   'fred':    { 'age': 40, 'active': false },
- *   'pebbles': { 'age': 1,  'active': true }
- * };
- *
- * _.findKey(users, function(o) { return o.age < 40; });
- * // => 'barney' (iteration order is not guaranteed)
- *
- * // The `_.matches` iteratee shorthand.
- * _.findKey(users, { 'age': 1, 'active': true });
- * // => 'pebbles'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findKey(users, 'active');
- * // => 'barney'
- */
-function findKey(object, predicate) {
-  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn);
-}
-
-module.exports = findKey;
Index: ckend/node_modules/lodash/findLast.js
===================================================================
--- backend/node_modules/lodash/findLast.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var createFind = require('./_createFind'),
-    findLastIndex = require('./findLastIndex');
-
-/**
- * This method is like `_.find` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=collection.length-1] The index to search from.
- * @returns {*} Returns the matched element, else `undefined`.
- * @example
- *
- * _.findLast([1, 2, 3, 4], function(n) {
- *   return n % 2 == 1;
- * });
- * // => 3
- */
-var findLast = createFind(findLastIndex);
-
-module.exports = findLast;
Index: ckend/node_modules/lodash/findLastIndex.js
===================================================================
--- backend/node_modules/lodash/findLastIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,59 +1,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
-    baseIteratee = require('./_baseIteratee'),
-    toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * This method is like `_.findIndex` except that it iterates over elements
- * of `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the found element, else `-1`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
- * // => 2
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastIndex(users, { 'user': 'barney', 'active': true });
- * // => 0
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastIndex(users, ['active', false]);
- * // => 2
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastIndex(users, 'active');
- * // => 0
- */
-function findLastIndex(array, predicate, fromIndex) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return -1;
-  }
-  var index = length - 1;
-  if (fromIndex !== undefined) {
-    index = toInteger(fromIndex);
-    index = fromIndex < 0
-      ? nativeMax(length + index, 0)
-      : nativeMin(index, length - 1);
-  }
-  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
-}
-
-module.exports = findLastIndex;
Index: ckend/node_modules/lodash/findLastKey.js
===================================================================
--- backend/node_modules/lodash/findLastKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var baseFindKey = require('./_baseFindKey'),
-    baseForOwnRight = require('./_baseForOwnRight'),
-    baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.findKey` except that it iterates over elements of
- * a collection in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {string|undefined} Returns the key of the matched element,
- *  else `undefined`.
- * @example
- *
- * var users = {
- *   'barney':  { 'age': 36, 'active': true },
- *   'fred':    { 'age': 40, 'active': false },
- *   'pebbles': { 'age': 1,  'active': true }
- * };
- *
- * _.findLastKey(users, function(o) { return o.age < 40; });
- * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
- *
- * // The `_.matches` iteratee shorthand.
- * _.findLastKey(users, { 'age': 36, 'active': true });
- * // => 'barney'
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.findLastKey(users, ['active', false]);
- * // => 'fred'
- *
- * // The `_.property` iteratee shorthand.
- * _.findLastKey(users, 'active');
- * // => 'pebbles'
- */
-function findLastKey(object, predicate) {
-  return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight);
-}
-
-module.exports = findLastKey;
Index: ckend/node_modules/lodash/first.js
===================================================================
--- backend/node_modules/lodash/first.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./head');
Index: ckend/node_modules/lodash/flake.lock
===================================================================
--- backend/node_modules/lodash/flake.lock	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-{
-  "nodes": {
-    "nixpkgs": {
-      "locked": {
-        "lastModified": 1613582597,
-        "narHash": "sha256-6LvipIvFuhyorHpUqK3HjySC5Y6gshXHFBhU9EJ4DoM=",
-        "path": "/nix/store/srvplqq673sqd9vyfhyc5w1p88y1gfm4-source",
-        "rev": "6b1057b452c55bb3b463f0d7055bc4ec3fd1f381",
-        "type": "path"
-      },
-      "original": {
-        "id": "nixpkgs",
-        "type": "indirect"
-      }
-    },
-    "root": {
-      "inputs": {
-        "nixpkgs": "nixpkgs",
-        "utils": "utils"
-      }
-    },
-    "utils": {
-      "locked": {
-        "lastModified": 1610051610,
-        "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=",
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc",
-        "type": "github"
-      },
-      "original": {
-        "owner": "numtide",
-        "repo": "flake-utils",
-        "type": "github"
-      }
-    }
-  },
-  "root": "root",
-  "version": 7
-}
Index: ckend/node_modules/lodash/flake.nix
===================================================================
--- backend/node_modules/lodash/flake.nix	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-{
-  inputs = {
-    utils.url = "github:numtide/flake-utils";
-  };
-
-  outputs = { self, nixpkgs, utils }:
-    utils.lib.eachDefaultSystem (system:
-      let
-        pkgs = nixpkgs.legacyPackages."${system}";
-      in rec {
-       devShell = pkgs.mkShell {
-          nativeBuildInputs = with pkgs; [
-            yarn
-            nodejs-14_x
-            nodePackages.typescript-language-server
-            nodePackages.eslint
-          ];
-        };
-      });
-}
Index: ckend/node_modules/lodash/flatMap.js
===================================================================
--- backend/node_modules/lodash/flatMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    map = require('./map');
-
-/**
- * Creates a flattened array of values by running each element in `collection`
- * thru `iteratee` and flattening the mapped results. The iteratee is invoked
- * with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- *   return [n, n];
- * }
- *
- * _.flatMap([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
-function flatMap(collection, iteratee) {
-  return baseFlatten(map(collection, iteratee), 1);
-}
-
-module.exports = flatMap;
Index: ckend/node_modules/lodash/flatMapDeep.js
===================================================================
--- backend/node_modules/lodash/flatMapDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    map = require('./map');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- *   return [[[n, n]]];
- * }
- *
- * _.flatMapDeep([1, 2], duplicate);
- * // => [1, 1, 2, 2]
- */
-function flatMapDeep(collection, iteratee) {
-  return baseFlatten(map(collection, iteratee), INFINITY);
-}
-
-module.exports = flatMapDeep;
Index: ckend/node_modules/lodash/flatMapDepth.js
===================================================================
--- backend/node_modules/lodash/flatMapDepth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    map = require('./map'),
-    toInteger = require('./toInteger');
-
-/**
- * This method is like `_.flatMap` except that it recursively flattens the
- * mapped results up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * function duplicate(n) {
- *   return [[[n, n]]];
- * }
- *
- * _.flatMapDepth([1, 2], duplicate, 2);
- * // => [[1, 1], [2, 2]]
- */
-function flatMapDepth(collection, iteratee, depth) {
-  depth = depth === undefined ? 1 : toInteger(depth);
-  return baseFlatten(map(collection, iteratee), depth);
-}
-
-module.exports = flatMapDepth;
Index: ckend/node_modules/lodash/flatten.js
===================================================================
--- backend/node_modules/lodash/flatten.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseFlatten = require('./_baseFlatten');
-
-/**
- * Flattens `array` a single level deep.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flatten([1, [2, [3, [4]], 5]]);
- * // => [1, 2, [3, [4]], 5]
- */
-function flatten(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? baseFlatten(array, 1) : [];
-}
-
-module.exports = flatten;
Index: ckend/node_modules/lodash/flattenDeep.js
===================================================================
--- backend/node_modules/lodash/flattenDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var baseFlatten = require('./_baseFlatten');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0;
-
-/**
- * Recursively flattens `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, [3, [4]], 5]]);
- * // => [1, 2, 3, 4, 5]
- */
-function flattenDeep(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? baseFlatten(array, INFINITY) : [];
-}
-
-module.exports = flattenDeep;
Index: ckend/node_modules/lodash/flattenDepth.js
===================================================================
--- backend/node_modules/lodash/flattenDepth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    toInteger = require('./toInteger');
-
-/**
- * Recursively flatten `array` up to `depth` times.
- *
- * @static
- * @memberOf _
- * @since 4.4.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @param {number} [depth=1] The maximum recursion depth.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * var array = [1, [2, [3, [4]], 5]];
- *
- * _.flattenDepth(array, 1);
- * // => [1, 2, [3, [4]], 5]
- *
- * _.flattenDepth(array, 2);
- * // => [1, 2, 3, [4], 5]
- */
-function flattenDepth(array, depth) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  depth = depth === undefined ? 1 : toInteger(depth);
-  return baseFlatten(array, depth);
-}
-
-module.exports = flattenDepth;
Index: ckend/node_modules/lodash/flip.js
===================================================================
--- backend/node_modules/lodash/flip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var createWrap = require('./_createWrap');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_FLIP_FLAG = 512;
-
-/**
- * Creates a function that invokes `func` with arguments reversed.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to flip arguments for.
- * @returns {Function} Returns the new flipped function.
- * @example
- *
- * var flipped = _.flip(function() {
- *   return _.toArray(arguments);
- * });
- *
- * flipped('a', 'b', 'c', 'd');
- * // => ['d', 'c', 'b', 'a']
- */
-function flip(func) {
-  return createWrap(func, WRAP_FLIP_FLAG);
-}
-
-module.exports = flip;
Index: ckend/node_modules/lodash/floor.js
===================================================================
--- backend/node_modules/lodash/floor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded down to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round down.
- * @param {number} [precision=0] The precision to round down to.
- * @returns {number} Returns the rounded down number.
- * @example
- *
- * _.floor(4.006);
- * // => 4
- *
- * _.floor(0.046, 2);
- * // => 0.04
- *
- * _.floor(4060, -2);
- * // => 4000
- */
-var floor = createRound('floor');
-
-module.exports = floor;
Index: ckend/node_modules/lodash/flow.js
===================================================================
--- backend/node_modules/lodash/flow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var createFlow = require('./_createFlow');
-
-/**
- * Creates a function that returns the result of invoking the given functions
- * with the `this` binding of the created function, where each successive
- * invocation is supplied the return value of the previous.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flowRight
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var addSquare = _.flow([_.add, square]);
- * addSquare(1, 2);
- * // => 9
- */
-var flow = createFlow();
-
-module.exports = flow;
Index: ckend/node_modules/lodash/flowRight.js
===================================================================
--- backend/node_modules/lodash/flowRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var createFlow = require('./_createFlow');
-
-/**
- * This method is like `_.flow` except that it creates a function that
- * invokes the given functions from right to left.
- *
- * @static
- * @since 3.0.0
- * @memberOf _
- * @category Util
- * @param {...(Function|Function[])} [funcs] The functions to invoke.
- * @returns {Function} Returns the new composite function.
- * @see _.flow
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var addSquare = _.flowRight([square, _.add]);
- * addSquare(1, 2);
- * // => 9
- */
-var flowRight = createFlow(true);
-
-module.exports = flowRight;
Index: ckend/node_modules/lodash/forEach.js
===================================================================
--- backend/node_modules/lodash/forEach.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var arrayEach = require('./_arrayEach'),
-    baseEach = require('./_baseEach'),
-    castFunction = require('./_castFunction'),
-    isArray = require('./isArray');
-
-/**
- * Iterates over elements of `collection` and invokes `iteratee` for each element.
- * The iteratee is invoked with three arguments: (value, index|key, collection).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * **Note:** As with other "Collections" methods, objects with a "length"
- * property are iterated like arrays. To avoid this behavior use `_.forIn`
- * or `_.forOwn` for object iteration.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias each
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEachRight
- * @example
- *
- * _.forEach([1, 2], function(value) {
- *   console.log(value);
- * });
- * // => Logs `1` then `2`.
- *
- * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forEach(collection, iteratee) {
-  var func = isArray(collection) ? arrayEach : baseEach;
-  return func(collection, castFunction(iteratee));
-}
-
-module.exports = forEach;
Index: ckend/node_modules/lodash/forEachRight.js
===================================================================
--- backend/node_modules/lodash/forEachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var arrayEachRight = require('./_arrayEachRight'),
-    baseEachRight = require('./_baseEachRight'),
-    castFunction = require('./_castFunction'),
-    isArray = require('./isArray');
-
-/**
- * This method is like `_.forEach` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @alias eachRight
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array|Object} Returns `collection`.
- * @see _.forEach
- * @example
- *
- * _.forEachRight([1, 2], function(value) {
- *   console.log(value);
- * });
- * // => Logs `2` then `1`.
- */
-function forEachRight(collection, iteratee) {
-  var func = isArray(collection) ? arrayEachRight : baseEachRight;
-  return func(collection, castFunction(iteratee));
-}
-
-module.exports = forEachRight;
Index: ckend/node_modules/lodash/forIn.js
===================================================================
--- backend/node_modules/lodash/forIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseFor = require('./_baseFor'),
-    castFunction = require('./_castFunction'),
-    keysIn = require('./keysIn');
-
-/**
- * Iterates over own and inherited enumerable string keyed properties of an
- * object and invokes `iteratee` for each property. The iteratee is invoked
- * with three arguments: (value, key, object). Iteratee functions may exit
- * iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forInRight
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forIn(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
- */
-function forIn(object, iteratee) {
-  return object == null
-    ? object
-    : baseFor(object, castFunction(iteratee), keysIn);
-}
-
-module.exports = forIn;
Index: ckend/node_modules/lodash/forInRight.js
===================================================================
--- backend/node_modules/lodash/forInRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseForRight = require('./_baseForRight'),
-    castFunction = require('./_castFunction'),
-    keysIn = require('./keysIn');
-
-/**
- * This method is like `_.forIn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forIn
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forInRight(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
- */
-function forInRight(object, iteratee) {
-  return object == null
-    ? object
-    : baseForRight(object, castFunction(iteratee), keysIn);
-}
-
-module.exports = forInRight;
Index: ckend/node_modules/lodash/forOwn.js
===================================================================
--- backend/node_modules/lodash/forOwn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseForOwn = require('./_baseForOwn'),
-    castFunction = require('./_castFunction');
-
-/**
- * Iterates over own enumerable string keyed properties of an object and
- * invokes `iteratee` for each property. The iteratee is invoked with three
- * arguments: (value, key, object). Iteratee functions may exit iteration
- * early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 0.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwnRight
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwn(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'a' then 'b' (iteration order is not guaranteed).
- */
-function forOwn(object, iteratee) {
-  return object && baseForOwn(object, castFunction(iteratee));
-}
-
-module.exports = forOwn;
Index: ckend/node_modules/lodash/forOwnRight.js
===================================================================
--- backend/node_modules/lodash/forOwnRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseForOwnRight = require('./_baseForOwnRight'),
-    castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.forOwn` except that it iterates over properties of
- * `object` in the opposite order.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns `object`.
- * @see _.forOwn
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.forOwnRight(new Foo, function(value, key) {
- *   console.log(key);
- * });
- * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
- */
-function forOwnRight(object, iteratee) {
-  return object && baseForOwnRight(object, castFunction(iteratee));
-}
-
-module.exports = forOwnRight;
Index: ckend/node_modules/lodash/fp.js
===================================================================
--- backend/node_modules/lodash/fp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var _ = require('./lodash.min').runInContext();
-module.exports = require('./fp/_baseConvert')(_, _);
Index: ckend/node_modules/lodash/fp/F.js
===================================================================
--- backend/node_modules/lodash/fp/F.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./stubFalse');
Index: ckend/node_modules/lodash/fp/T.js
===================================================================
--- backend/node_modules/lodash/fp/T.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./stubTrue');
Index: ckend/node_modules/lodash/fp/__.js
===================================================================
--- backend/node_modules/lodash/fp/__.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./placeholder');
Index: ckend/node_modules/lodash/fp/_baseConvert.js
===================================================================
--- backend/node_modules/lodash/fp/_baseConvert.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,569 +1,0 @@
-var mapping = require('./_mapping'),
-    fallbackHolder = require('./placeholder');
-
-/** Built-in value reference. */
-var push = Array.prototype.push;
-
-/**
- * Creates a function, with an arity of `n`, that invokes `func` with the
- * arguments it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {number} n The arity of the new function.
- * @returns {Function} Returns the new function.
- */
-function baseArity(func, n) {
-  return n == 2
-    ? function(a, b) { return func.apply(undefined, arguments); }
-    : function(a) { return func.apply(undefined, arguments); };
-}
-
-/**
- * Creates a function that invokes `func`, with up to `n` arguments, ignoring
- * any additional arguments.
- *
- * @private
- * @param {Function} func The function to cap arguments for.
- * @param {number} n The arity cap.
- * @returns {Function} Returns the new function.
- */
-function baseAry(func, n) {
-  return n == 2
-    ? function(a, b) { return func(a, b); }
-    : function(a) { return func(a); };
-}
-
-/**
- * Creates a clone of `array`.
- *
- * @private
- * @param {Array} array The array to clone.
- * @returns {Array} Returns the cloned array.
- */
-function cloneArray(array) {
-  var length = array ? array.length : 0,
-      result = Array(length);
-
-  while (length--) {
-    result[length] = array[length];
-  }
-  return result;
-}
-
-/**
- * Creates a function that clones a given object using the assignment `func`.
- *
- * @private
- * @param {Function} func The assignment function.
- * @returns {Function} Returns the new cloner function.
- */
-function createCloner(func) {
-  return function(object) {
-    return func({}, object);
-  };
-}
-
-/**
- * A specialized version of `_.spread` which flattens the spread array into
- * the arguments of the invoked `func`.
- *
- * @private
- * @param {Function} func The function to spread arguments over.
- * @param {number} start The start position of the spread.
- * @returns {Function} Returns the new function.
- */
-function flatSpread(func, start) {
-  return function() {
-    var length = arguments.length,
-        lastIndex = length - 1,
-        args = Array(length);
-
-    while (length--) {
-      args[length] = arguments[length];
-    }
-    var array = args[start],
-        otherArgs = args.slice(0, start);
-
-    if (array) {
-      push.apply(otherArgs, array);
-    }
-    if (start != lastIndex) {
-      push.apply(otherArgs, args.slice(start + 1));
-    }
-    return func.apply(this, otherArgs);
-  };
-}
-
-/**
- * Creates a function that wraps `func` and uses `cloner` to clone the first
- * argument it receives.
- *
- * @private
- * @param {Function} func The function to wrap.
- * @param {Function} cloner The function to clone arguments.
- * @returns {Function} Returns the new immutable function.
- */
-function wrapImmutable(func, cloner) {
-  return function() {
-    var length = arguments.length;
-    if (!length) {
-      return;
-    }
-    var args = Array(length);
-    while (length--) {
-      args[length] = arguments[length];
-    }
-    var result = args[0] = cloner.apply(undefined, args);
-    func.apply(undefined, args);
-    return result;
-  };
-}
-
-/**
- * The base implementation of `convert` which accepts a `util` object of methods
- * required to perform conversions.
- *
- * @param {Object} util The util object.
- * @param {string} name The name of the function to convert.
- * @param {Function} func The function to convert.
- * @param {Object} [options] The options object.
- * @param {boolean} [options.cap=true] Specify capping iteratee arguments.
- * @param {boolean} [options.curry=true] Specify currying.
- * @param {boolean} [options.fixed=true] Specify fixed arity.
- * @param {boolean} [options.immutable=true] Specify immutable operations.
- * @param {boolean} [options.rearg=true] Specify rearranging arguments.
- * @returns {Function|Object} Returns the converted function or object.
- */
-function baseConvert(util, name, func, options) {
-  var isLib = typeof name == 'function',
-      isObj = name === Object(name);
-
-  if (isObj) {
-    options = func;
-    func = name;
-    name = undefined;
-  }
-  if (func == null) {
-    throw new TypeError;
-  }
-  options || (options = {});
-
-  var config = {
-    'cap': 'cap' in options ? options.cap : true,
-    'curry': 'curry' in options ? options.curry : true,
-    'fixed': 'fixed' in options ? options.fixed : true,
-    'immutable': 'immutable' in options ? options.immutable : true,
-    'rearg': 'rearg' in options ? options.rearg : true
-  };
-
-  var defaultHolder = isLib ? func : fallbackHolder,
-      forceCurry = ('curry' in options) && options.curry,
-      forceFixed = ('fixed' in options) && options.fixed,
-      forceRearg = ('rearg' in options) && options.rearg,
-      pristine = isLib ? func.runInContext() : undefined;
-
-  var helpers = isLib ? func : {
-    'ary': util.ary,
-    'assign': util.assign,
-    'clone': util.clone,
-    'curry': util.curry,
-    'forEach': util.forEach,
-    'isArray': util.isArray,
-    'isError': util.isError,
-    'isFunction': util.isFunction,
-    'isWeakMap': util.isWeakMap,
-    'iteratee': util.iteratee,
-    'keys': util.keys,
-    'rearg': util.rearg,
-    'toInteger': util.toInteger,
-    'toPath': util.toPath
-  };
-
-  var ary = helpers.ary,
-      assign = helpers.assign,
-      clone = helpers.clone,
-      curry = helpers.curry,
-      each = helpers.forEach,
-      isArray = helpers.isArray,
-      isError = helpers.isError,
-      isFunction = helpers.isFunction,
-      isWeakMap = helpers.isWeakMap,
-      keys = helpers.keys,
-      rearg = helpers.rearg,
-      toInteger = helpers.toInteger,
-      toPath = helpers.toPath;
-
-  var aryMethodKeys = keys(mapping.aryMethod);
-
-  var wrappers = {
-    'castArray': function(castArray) {
-      return function() {
-        var value = arguments[0];
-        return isArray(value)
-          ? castArray(cloneArray(value))
-          : castArray.apply(undefined, arguments);
-      };
-    },
-    'iteratee': function(iteratee) {
-      return function() {
-        var func = arguments[0],
-            arity = arguments[1],
-            result = iteratee(func, arity),
-            length = result.length;
-
-        if (config.cap && typeof arity == 'number') {
-          arity = arity > 2 ? (arity - 2) : 1;
-          return (length && length <= arity) ? result : baseAry(result, arity);
-        }
-        return result;
-      };
-    },
-    'mixin': function(mixin) {
-      return function(source) {
-        var func = this;
-        if (!isFunction(func)) {
-          return mixin(func, Object(source));
-        }
-        var pairs = [];
-        each(keys(source), function(key) {
-          if (isFunction(source[key])) {
-            pairs.push([key, func.prototype[key]]);
-          }
-        });
-
-        mixin(func, Object(source));
-
-        each(pairs, function(pair) {
-          var value = pair[1];
-          if (isFunction(value)) {
-            func.prototype[pair[0]] = value;
-          } else {
-            delete func.prototype[pair[0]];
-          }
-        });
-        return func;
-      };
-    },
-    'nthArg': function(nthArg) {
-      return function(n) {
-        var arity = n < 0 ? 1 : (toInteger(n) + 1);
-        return curry(nthArg(n), arity);
-      };
-    },
-    'rearg': function(rearg) {
-      return function(func, indexes) {
-        var arity = indexes ? indexes.length : 0;
-        return curry(rearg(func, indexes), arity);
-      };
-    },
-    'runInContext': function(runInContext) {
-      return function(context) {
-        return baseConvert(util, runInContext(context), options);
-      };
-    }
-  };
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * Casts `func` to a function with an arity capped iteratee if needed.
-   *
-   * @private
-   * @param {string} name The name of the function to inspect.
-   * @param {Function} func The function to inspect.
-   * @returns {Function} Returns the cast function.
-   */
-  function castCap(name, func) {
-    if (config.cap) {
-      var indexes = mapping.iterateeRearg[name];
-      if (indexes) {
-        return iterateeRearg(func, indexes);
-      }
-      var n = !isLib && mapping.iterateeAry[name];
-      if (n) {
-        return iterateeAry(func, n);
-      }
-    }
-    return func;
-  }
-
-  /**
-   * Casts `func` to a curried function if needed.
-   *
-   * @private
-   * @param {string} name The name of the function to inspect.
-   * @param {Function} func The function to inspect.
-   * @param {number} n The arity of `func`.
-   * @returns {Function} Returns the cast function.
-   */
-  function castCurry(name, func, n) {
-    return (forceCurry || (config.curry && n > 1))
-      ? curry(func, n)
-      : func;
-  }
-
-  /**
-   * Casts `func` to a fixed arity function if needed.
-   *
-   * @private
-   * @param {string} name The name of the function to inspect.
-   * @param {Function} func The function to inspect.
-   * @param {number} n The arity cap.
-   * @returns {Function} Returns the cast function.
-   */
-  function castFixed(name, func, n) {
-    if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {
-      var data = mapping.methodSpread[name],
-          start = data && data.start;
-
-      return start  === undefined ? ary(func, n) : flatSpread(func, start);
-    }
-    return func;
-  }
-
-  /**
-   * Casts `func` to an rearged function if needed.
-   *
-   * @private
-   * @param {string} name The name of the function to inspect.
-   * @param {Function} func The function to inspect.
-   * @param {number} n The arity of `func`.
-   * @returns {Function} Returns the cast function.
-   */
-  function castRearg(name, func, n) {
-    return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))
-      ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])
-      : func;
-  }
-
-  /**
-   * Creates a clone of `object` by `path`.
-   *
-   * @private
-   * @param {Object} object The object to clone.
-   * @param {Array|string} path The path to clone by.
-   * @returns {Object} Returns the cloned object.
-   */
-  function cloneByPath(object, path) {
-    path = toPath(path);
-
-    var index = -1,
-        length = path.length,
-        lastIndex = length - 1,
-        result = clone(Object(object)),
-        nested = result;
-
-    while (nested != null && ++index < length) {
-      var key = path[index],
-          value = nested[key];
-
-      if (value != null &&
-          !(isFunction(value) || isError(value) || isWeakMap(value))) {
-        nested[key] = clone(index == lastIndex ? value : Object(value));
-      }
-      nested = nested[key];
-    }
-    return result;
-  }
-
-  /**
-   * Converts `lodash` to an immutable auto-curried iteratee-first data-last
-   * version with conversion `options` applied.
-   *
-   * @param {Object} [options] The options object. See `baseConvert` for more details.
-   * @returns {Function} Returns the converted `lodash`.
-   */
-  function convertLib(options) {
-    return _.runInContext.convert(options)(undefined);
-  }
-
-  /**
-   * Create a converter function for `func` of `name`.
-   *
-   * @param {string} name The name of the function to convert.
-   * @param {Function} func The function to convert.
-   * @returns {Function} Returns the new converter function.
-   */
-  function createConverter(name, func) {
-    var realName = mapping.aliasToReal[name] || name,
-        methodName = mapping.remap[realName] || realName,
-        oldOptions = options;
-
-    return function(options) {
-      var newUtil = isLib ? pristine : helpers,
-          newFunc = isLib ? pristine[methodName] : func,
-          newOptions = assign(assign({}, oldOptions), options);
-
-      return baseConvert(newUtil, realName, newFunc, newOptions);
-    };
-  }
-
-  /**
-   * Creates a function that wraps `func` to invoke its iteratee, with up to `n`
-   * arguments, ignoring any additional arguments.
-   *
-   * @private
-   * @param {Function} func The function to cap iteratee arguments for.
-   * @param {number} n The arity cap.
-   * @returns {Function} Returns the new function.
-   */
-  function iterateeAry(func, n) {
-    return overArg(func, function(func) {
-      return typeof func == 'function' ? baseAry(func, n) : func;
-    });
-  }
-
-  /**
-   * Creates a function that wraps `func` to invoke its iteratee with arguments
-   * arranged according to the specified `indexes` where the argument value at
-   * the first index is provided as the first argument, the argument value at
-   * the second index is provided as the second argument, and so on.
-   *
-   * @private
-   * @param {Function} func The function to rearrange iteratee arguments for.
-   * @param {number[]} indexes The arranged argument indexes.
-   * @returns {Function} Returns the new function.
-   */
-  function iterateeRearg(func, indexes) {
-    return overArg(func, function(func) {
-      var n = indexes.length;
-      return baseArity(rearg(baseAry(func, n), indexes), n);
-    });
-  }
-
-  /**
-   * Creates a function that invokes `func` with its first argument transformed.
-   *
-   * @private
-   * @param {Function} func The function to wrap.
-   * @param {Function} transform The argument transform.
-   * @returns {Function} Returns the new function.
-   */
-  function overArg(func, transform) {
-    return function() {
-      var length = arguments.length;
-      if (!length) {
-        return func();
-      }
-      var args = Array(length);
-      while (length--) {
-        args[length] = arguments[length];
-      }
-      var index = config.rearg ? 0 : (length - 1);
-      args[index] = transform(args[index]);
-      return func.apply(undefined, args);
-    };
-  }
-
-  /**
-   * Creates a function that wraps `func` and applys the conversions
-   * rules by `name`.
-   *
-   * @private
-   * @param {string} name The name of the function to wrap.
-   * @param {Function} func The function to wrap.
-   * @returns {Function} Returns the converted function.
-   */
-  function wrap(name, func, placeholder) {
-    var result,
-        realName = mapping.aliasToReal[name] || name,
-        wrapped = func,
-        wrapper = wrappers[realName];
-
-    if (wrapper) {
-      wrapped = wrapper(func);
-    }
-    else if (config.immutable) {
-      if (mapping.mutate.array[realName]) {
-        wrapped = wrapImmutable(func, cloneArray);
-      }
-      else if (mapping.mutate.object[realName]) {
-        wrapped = wrapImmutable(func, createCloner(func));
-      }
-      else if (mapping.mutate.set[realName]) {
-        wrapped = wrapImmutable(func, cloneByPath);
-      }
-    }
-    each(aryMethodKeys, function(aryKey) {
-      each(mapping.aryMethod[aryKey], function(otherName) {
-        if (realName == otherName) {
-          var data = mapping.methodSpread[realName],
-              afterRearg = data && data.afterRearg;
-
-          result = afterRearg
-            ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)
-            : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);
-
-          result = castCap(realName, result);
-          result = castCurry(realName, result, aryKey);
-          return false;
-        }
-      });
-      return !result;
-    });
-
-    result || (result = wrapped);
-    if (result == func) {
-      result = forceCurry ? curry(result, 1) : function() {
-        return func.apply(this, arguments);
-      };
-    }
-    result.convert = createConverter(realName, func);
-    result.placeholder = func.placeholder = placeholder;
-
-    return result;
-  }
-
-  /*--------------------------------------------------------------------------*/
-
-  if (!isObj) {
-    return wrap(name, func, defaultHolder);
-  }
-  var _ = func;
-
-  // Convert methods by ary cap.
-  var pairs = [];
-  each(aryMethodKeys, function(aryKey) {
-    each(mapping.aryMethod[aryKey], function(key) {
-      var func = _[mapping.remap[key] || key];
-      if (func) {
-        pairs.push([key, wrap(key, func, _)]);
-      }
-    });
-  });
-
-  // Convert remaining methods.
-  each(keys(_), function(key) {
-    var func = _[key];
-    if (typeof func == 'function') {
-      var length = pairs.length;
-      while (length--) {
-        if (pairs[length][0] == key) {
-          return;
-        }
-      }
-      func.convert = createConverter(key, func);
-      pairs.push([key, func]);
-    }
-  });
-
-  // Assign to `_` leaving `_.prototype` unchanged to allow chaining.
-  each(pairs, function(pair) {
-    _[pair[0]] = pair[1];
-  });
-
-  _.convert = convertLib;
-  _.placeholder = _;
-
-  // Assign aliases.
-  each(keys(_), function(key) {
-    each(mapping.realToAlias[key] || [], function(alias) {
-      _[alias] = _[key];
-    });
-  });
-
-  return _;
-}
-
-module.exports = baseConvert;
Index: ckend/node_modules/lodash/fp/_convertBrowser.js
===================================================================
--- backend/node_modules/lodash/fp/_convertBrowser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseConvert = require('./_baseConvert');
-
-/**
- * Converts `lodash` to an immutable auto-curried iteratee-first data-last
- * version with conversion `options` applied.
- *
- * @param {Function} lodash The lodash function to convert.
- * @param {Object} [options] The options object. See `baseConvert` for more details.
- * @returns {Function} Returns the converted `lodash`.
- */
-function browserConvert(lodash, options) {
-  return baseConvert(lodash, lodash, options);
-}
-
-if (typeof _ == 'function' && typeof _.runInContext == 'function') {
-  _ = browserConvert(_.runInContext());
-}
-module.exports = browserConvert;
Index: ckend/node_modules/lodash/fp/_falseOptions.js
===================================================================
--- backend/node_modules/lodash/fp/_falseOptions.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-module.exports = {
-  'cap': false,
-  'curry': false,
-  'fixed': false,
-  'immutable': false,
-  'rearg': false
-};
Index: ckend/node_modules/lodash/fp/_mapping.js
===================================================================
--- backend/node_modules/lodash/fp/_mapping.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,358 +1,0 @@
-/** Used to map aliases to their real names. */
-exports.aliasToReal = {
-
-  // Lodash aliases.
-  'each': 'forEach',
-  'eachRight': 'forEachRight',
-  'entries': 'toPairs',
-  'entriesIn': 'toPairsIn',
-  'extend': 'assignIn',
-  'extendAll': 'assignInAll',
-  'extendAllWith': 'assignInAllWith',
-  'extendWith': 'assignInWith',
-  'first': 'head',
-
-  // Methods that are curried variants of others.
-  'conforms': 'conformsTo',
-  'matches': 'isMatch',
-  'property': 'get',
-
-  // Ramda aliases.
-  '__': 'placeholder',
-  'F': 'stubFalse',
-  'T': 'stubTrue',
-  'all': 'every',
-  'allPass': 'overEvery',
-  'always': 'constant',
-  'any': 'some',
-  'anyPass': 'overSome',
-  'apply': 'spread',
-  'assoc': 'set',
-  'assocPath': 'set',
-  'complement': 'negate',
-  'compose': 'flowRight',
-  'contains': 'includes',
-  'dissoc': 'unset',
-  'dissocPath': 'unset',
-  'dropLast': 'dropRight',
-  'dropLastWhile': 'dropRightWhile',
-  'equals': 'isEqual',
-  'identical': 'eq',
-  'indexBy': 'keyBy',
-  'init': 'initial',
-  'invertObj': 'invert',
-  'juxt': 'over',
-  'omitAll': 'omit',
-  'nAry': 'ary',
-  'path': 'get',
-  'pathEq': 'matchesProperty',
-  'pathOr': 'getOr',
-  'paths': 'at',
-  'pickAll': 'pick',
-  'pipe': 'flow',
-  'pluck': 'map',
-  'prop': 'get',
-  'propEq': 'matchesProperty',
-  'propOr': 'getOr',
-  'props': 'at',
-  'symmetricDifference': 'xor',
-  'symmetricDifferenceBy': 'xorBy',
-  'symmetricDifferenceWith': 'xorWith',
-  'takeLast': 'takeRight',
-  'takeLastWhile': 'takeRightWhile',
-  'unapply': 'rest',
-  'unnest': 'flatten',
-  'useWith': 'overArgs',
-  'where': 'conformsTo',
-  'whereEq': 'isMatch',
-  'zipObj': 'zipObject'
-};
-
-/** Used to map ary to method names. */
-exports.aryMethod = {
-  '1': [
-    'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',
-    'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',
-    'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',
-    'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',
-    'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',
-    'uniqueId', 'words', 'zipAll'
-  ],
-  '2': [
-    'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',
-    'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',
-    'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',
-    'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',
-    'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',
-    'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',
-    'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',
-    'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',
-    'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',
-    'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',
-    'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',
-    'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',
-    'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',
-    'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',
-    'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',
-    'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',
-    'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',
-    'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',
-    'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',
-    'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',
-    'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',
-    'zipObjectDeep'
-  ],
-  '3': [
-    'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',
-    'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',
-    'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',
-    'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',
-    'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',
-    'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',
-    'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',
-    'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',
-    'xorWith', 'zipWith'
-  ],
-  '4': [
-    'fill', 'setWith', 'updateWith'
-  ]
-};
-
-/** Used to map ary to rearg configs. */
-exports.aryRearg = {
-  '2': [1, 0],
-  '3': [2, 0, 1],
-  '4': [3, 2, 0, 1]
-};
-
-/** Used to map method names to their iteratee ary. */
-exports.iterateeAry = {
-  'dropRightWhile': 1,
-  'dropWhile': 1,
-  'every': 1,
-  'filter': 1,
-  'find': 1,
-  'findFrom': 1,
-  'findIndex': 1,
-  'findIndexFrom': 1,
-  'findKey': 1,
-  'findLast': 1,
-  'findLastFrom': 1,
-  'findLastIndex': 1,
-  'findLastIndexFrom': 1,
-  'findLastKey': 1,
-  'flatMap': 1,
-  'flatMapDeep': 1,
-  'flatMapDepth': 1,
-  'forEach': 1,
-  'forEachRight': 1,
-  'forIn': 1,
-  'forInRight': 1,
-  'forOwn': 1,
-  'forOwnRight': 1,
-  'map': 1,
-  'mapKeys': 1,
-  'mapValues': 1,
-  'partition': 1,
-  'reduce': 2,
-  'reduceRight': 2,
-  'reject': 1,
-  'remove': 1,
-  'some': 1,
-  'takeRightWhile': 1,
-  'takeWhile': 1,
-  'times': 1,
-  'transform': 2
-};
-
-/** Used to map method names to iteratee rearg configs. */
-exports.iterateeRearg = {
-  'mapKeys': [1],
-  'reduceRight': [1, 0]
-};
-
-/** Used to map method names to rearg configs. */
-exports.methodRearg = {
-  'assignInAllWith': [1, 0],
-  'assignInWith': [1, 2, 0],
-  'assignAllWith': [1, 0],
-  'assignWith': [1, 2, 0],
-  'differenceBy': [1, 2, 0],
-  'differenceWith': [1, 2, 0],
-  'getOr': [2, 1, 0],
-  'intersectionBy': [1, 2, 0],
-  'intersectionWith': [1, 2, 0],
-  'isEqualWith': [1, 2, 0],
-  'isMatchWith': [2, 1, 0],
-  'mergeAllWith': [1, 0],
-  'mergeWith': [1, 2, 0],
-  'padChars': [2, 1, 0],
-  'padCharsEnd': [2, 1, 0],
-  'padCharsStart': [2, 1, 0],
-  'pullAllBy': [2, 1, 0],
-  'pullAllWith': [2, 1, 0],
-  'rangeStep': [1, 2, 0],
-  'rangeStepRight': [1, 2, 0],
-  'setWith': [3, 1, 2, 0],
-  'sortedIndexBy': [2, 1, 0],
-  'sortedLastIndexBy': [2, 1, 0],
-  'unionBy': [1, 2, 0],
-  'unionWith': [1, 2, 0],
-  'updateWith': [3, 1, 2, 0],
-  'xorBy': [1, 2, 0],
-  'xorWith': [1, 2, 0],
-  'zipWith': [1, 2, 0]
-};
-
-/** Used to map method names to spread configs. */
-exports.methodSpread = {
-  'assignAll': { 'start': 0 },
-  'assignAllWith': { 'start': 0 },
-  'assignInAll': { 'start': 0 },
-  'assignInAllWith': { 'start': 0 },
-  'defaultsAll': { 'start': 0 },
-  'defaultsDeepAll': { 'start': 0 },
-  'invokeArgs': { 'start': 2 },
-  'invokeArgsMap': { 'start': 2 },
-  'mergeAll': { 'start': 0 },
-  'mergeAllWith': { 'start': 0 },
-  'partial': { 'start': 1 },
-  'partialRight': { 'start': 1 },
-  'without': { 'start': 1 },
-  'zipAll': { 'start': 0 }
-};
-
-/** Used to identify methods which mutate arrays or objects. */
-exports.mutate = {
-  'array': {
-    'fill': true,
-    'pull': true,
-    'pullAll': true,
-    'pullAllBy': true,
-    'pullAllWith': true,
-    'pullAt': true,
-    'remove': true,
-    'reverse': true
-  },
-  'object': {
-    'assign': true,
-    'assignAll': true,
-    'assignAllWith': true,
-    'assignIn': true,
-    'assignInAll': true,
-    'assignInAllWith': true,
-    'assignInWith': true,
-    'assignWith': true,
-    'defaults': true,
-    'defaultsAll': true,
-    'defaultsDeep': true,
-    'defaultsDeepAll': true,
-    'merge': true,
-    'mergeAll': true,
-    'mergeAllWith': true,
-    'mergeWith': true,
-  },
-  'set': {
-    'set': true,
-    'setWith': true,
-    'unset': true,
-    'update': true,
-    'updateWith': true
-  }
-};
-
-/** Used to map real names to their aliases. */
-exports.realToAlias = (function() {
-  var hasOwnProperty = Object.prototype.hasOwnProperty,
-      object = exports.aliasToReal,
-      result = {};
-
-  for (var key in object) {
-    var value = object[key];
-    if (hasOwnProperty.call(result, value)) {
-      result[value].push(key);
-    } else {
-      result[value] = [key];
-    }
-  }
-  return result;
-}());
-
-/** Used to map method names to other names. */
-exports.remap = {
-  'assignAll': 'assign',
-  'assignAllWith': 'assignWith',
-  'assignInAll': 'assignIn',
-  'assignInAllWith': 'assignInWith',
-  'curryN': 'curry',
-  'curryRightN': 'curryRight',
-  'defaultsAll': 'defaults',
-  'defaultsDeepAll': 'defaultsDeep',
-  'findFrom': 'find',
-  'findIndexFrom': 'findIndex',
-  'findLastFrom': 'findLast',
-  'findLastIndexFrom': 'findLastIndex',
-  'getOr': 'get',
-  'includesFrom': 'includes',
-  'indexOfFrom': 'indexOf',
-  'invokeArgs': 'invoke',
-  'invokeArgsMap': 'invokeMap',
-  'lastIndexOfFrom': 'lastIndexOf',
-  'mergeAll': 'merge',
-  'mergeAllWith': 'mergeWith',
-  'padChars': 'pad',
-  'padCharsEnd': 'padEnd',
-  'padCharsStart': 'padStart',
-  'propertyOf': 'get',
-  'rangeStep': 'range',
-  'rangeStepRight': 'rangeRight',
-  'restFrom': 'rest',
-  'spreadFrom': 'spread',
-  'trimChars': 'trim',
-  'trimCharsEnd': 'trimEnd',
-  'trimCharsStart': 'trimStart',
-  'zipAll': 'zip'
-};
-
-/** Used to track methods that skip fixing their arity. */
-exports.skipFixed = {
-  'castArray': true,
-  'flow': true,
-  'flowRight': true,
-  'iteratee': true,
-  'mixin': true,
-  'rearg': true,
-  'runInContext': true
-};
-
-/** Used to track methods that skip rearranging arguments. */
-exports.skipRearg = {
-  'add': true,
-  'assign': true,
-  'assignIn': true,
-  'bind': true,
-  'bindKey': true,
-  'concat': true,
-  'difference': true,
-  'divide': true,
-  'eq': true,
-  'gt': true,
-  'gte': true,
-  'isEqual': true,
-  'lt': true,
-  'lte': true,
-  'matchesProperty': true,
-  'merge': true,
-  'multiply': true,
-  'overArgs': true,
-  'partial': true,
-  'partialRight': true,
-  'propertyOf': true,
-  'random': true,
-  'range': true,
-  'rangeRight': true,
-  'subtract': true,
-  'zip': true,
-  'zipObject': true,
-  'zipObjectDeep': true
-};
Index: ckend/node_modules/lodash/fp/_util.js
===================================================================
--- backend/node_modules/lodash/fp/_util.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-module.exports = {
-  'ary': require('../ary'),
-  'assign': require('../_baseAssign'),
-  'clone': require('../clone'),
-  'curry': require('../curry'),
-  'forEach': require('../_arrayEach'),
-  'isArray': require('../isArray'),
-  'isError': require('../isError'),
-  'isFunction': require('../isFunction'),
-  'isWeakMap': require('../isWeakMap'),
-  'iteratee': require('../iteratee'),
-  'keys': require('../_baseKeys'),
-  'rearg': require('../rearg'),
-  'toInteger': require('../toInteger'),
-  'toPath': require('../toPath')
-};
Index: ckend/node_modules/lodash/fp/add.js
===================================================================
--- backend/node_modules/lodash/fp/add.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('add', require('../add'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/after.js
===================================================================
--- backend/node_modules/lodash/fp/after.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('after', require('../after'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/all.js
===================================================================
--- backend/node_modules/lodash/fp/all.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./every');
Index: ckend/node_modules/lodash/fp/allPass.js
===================================================================
--- backend/node_modules/lodash/fp/allPass.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./overEvery');
Index: ckend/node_modules/lodash/fp/always.js
===================================================================
--- backend/node_modules/lodash/fp/always.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./constant');
Index: ckend/node_modules/lodash/fp/any.js
===================================================================
--- backend/node_modules/lodash/fp/any.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./some');
Index: ckend/node_modules/lodash/fp/anyPass.js
===================================================================
--- backend/node_modules/lodash/fp/anyPass.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./overSome');
Index: ckend/node_modules/lodash/fp/apply.js
===================================================================
--- backend/node_modules/lodash/fp/apply.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./spread');
Index: ckend/node_modules/lodash/fp/array.js
===================================================================
--- backend/node_modules/lodash/fp/array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../array'));
Index: ckend/node_modules/lodash/fp/ary.js
===================================================================
--- backend/node_modules/lodash/fp/ary.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('ary', require('../ary'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assign.js
===================================================================
--- backend/node_modules/lodash/fp/assign.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assign', require('../assign'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignAll.js
===================================================================
--- backend/node_modules/lodash/fp/assignAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignAll', require('../assign'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignAllWith.js
===================================================================
--- backend/node_modules/lodash/fp/assignAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignAllWith', require('../assignWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignIn.js
===================================================================
--- backend/node_modules/lodash/fp/assignIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignIn', require('../assignIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignInAll.js
===================================================================
--- backend/node_modules/lodash/fp/assignInAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignInAll', require('../assignIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignInAllWith.js
===================================================================
--- backend/node_modules/lodash/fp/assignInAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignInAllWith', require('../assignInWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignInWith.js
===================================================================
--- backend/node_modules/lodash/fp/assignInWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignInWith', require('../assignInWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assignWith.js
===================================================================
--- backend/node_modules/lodash/fp/assignWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('assignWith', require('../assignWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/assoc.js
===================================================================
--- backend/node_modules/lodash/fp/assoc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./set');
Index: ckend/node_modules/lodash/fp/assocPath.js
===================================================================
--- backend/node_modules/lodash/fp/assocPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./set');
Index: ckend/node_modules/lodash/fp/at.js
===================================================================
--- backend/node_modules/lodash/fp/at.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('at', require('../at'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/attempt.js
===================================================================
--- backend/node_modules/lodash/fp/attempt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('attempt', require('../attempt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/before.js
===================================================================
--- backend/node_modules/lodash/fp/before.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('before', require('../before'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/bind.js
===================================================================
--- backend/node_modules/lodash/fp/bind.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('bind', require('../bind'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/bindAll.js
===================================================================
--- backend/node_modules/lodash/fp/bindAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('bindAll', require('../bindAll'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/bindKey.js
===================================================================
--- backend/node_modules/lodash/fp/bindKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('bindKey', require('../bindKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/camelCase.js
===================================================================
--- backend/node_modules/lodash/fp/camelCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('camelCase', require('../camelCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/capitalize.js
===================================================================
--- backend/node_modules/lodash/fp/capitalize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('capitalize', require('../capitalize'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/castArray.js
===================================================================
--- backend/node_modules/lodash/fp/castArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('castArray', require('../castArray'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/ceil.js
===================================================================
--- backend/node_modules/lodash/fp/ceil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('ceil', require('../ceil'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/chain.js
===================================================================
--- backend/node_modules/lodash/fp/chain.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('chain', require('../chain'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/chunk.js
===================================================================
--- backend/node_modules/lodash/fp/chunk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('chunk', require('../chunk'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/clamp.js
===================================================================
--- backend/node_modules/lodash/fp/clamp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('clamp', require('../clamp'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/clone.js
===================================================================
--- backend/node_modules/lodash/fp/clone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('clone', require('../clone'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/cloneDeep.js
===================================================================
--- backend/node_modules/lodash/fp/cloneDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('cloneDeep', require('../cloneDeep'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/cloneDeepWith.js
===================================================================
--- backend/node_modules/lodash/fp/cloneDeepWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('cloneDeepWith', require('../cloneDeepWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/cloneWith.js
===================================================================
--- backend/node_modules/lodash/fp/cloneWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('cloneWith', require('../cloneWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/collection.js
===================================================================
--- backend/node_modules/lodash/fp/collection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../collection'));
Index: ckend/node_modules/lodash/fp/commit.js
===================================================================
--- backend/node_modules/lodash/fp/commit.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('commit', require('../commit'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/compact.js
===================================================================
--- backend/node_modules/lodash/fp/compact.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('compact', require('../compact'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/complement.js
===================================================================
--- backend/node_modules/lodash/fp/complement.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./negate');
Index: ckend/node_modules/lodash/fp/compose.js
===================================================================
--- backend/node_modules/lodash/fp/compose.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./flowRight');
Index: ckend/node_modules/lodash/fp/concat.js
===================================================================
--- backend/node_modules/lodash/fp/concat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('concat', require('../concat'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/cond.js
===================================================================
--- backend/node_modules/lodash/fp/cond.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('cond', require('../cond'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/conforms.js
===================================================================
--- backend/node_modules/lodash/fp/conforms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./conformsTo');
Index: ckend/node_modules/lodash/fp/conformsTo.js
===================================================================
--- backend/node_modules/lodash/fp/conformsTo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('conformsTo', require('../conformsTo'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/constant.js
===================================================================
--- backend/node_modules/lodash/fp/constant.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('constant', require('../constant'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/contains.js
===================================================================
--- backend/node_modules/lodash/fp/contains.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./includes');
Index: ckend/node_modules/lodash/fp/convert.js
===================================================================
--- backend/node_modules/lodash/fp/convert.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var baseConvert = require('./_baseConvert'),
-    util = require('./_util');
-
-/**
- * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last
- * version with conversion `options` applied. If `name` is an object its methods
- * will be converted.
- *
- * @param {string} name The name of the function to wrap.
- * @param {Function} [func] The function to wrap.
- * @param {Object} [options] The options object. See `baseConvert` for more details.
- * @returns {Function|Object} Returns the converted function or object.
- */
-function convert(name, func, options) {
-  return baseConvert(util, name, func, options);
-}
-
-module.exports = convert;
Index: ckend/node_modules/lodash/fp/countBy.js
===================================================================
--- backend/node_modules/lodash/fp/countBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('countBy', require('../countBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/create.js
===================================================================
--- backend/node_modules/lodash/fp/create.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('create', require('../create'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/curry.js
===================================================================
--- backend/node_modules/lodash/fp/curry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('curry', require('../curry'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/curryN.js
===================================================================
--- backend/node_modules/lodash/fp/curryN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('curryN', require('../curry'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/curryRight.js
===================================================================
--- backend/node_modules/lodash/fp/curryRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('curryRight', require('../curryRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/curryRightN.js
===================================================================
--- backend/node_modules/lodash/fp/curryRightN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('curryRightN', require('../curryRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/date.js
===================================================================
--- backend/node_modules/lodash/fp/date.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../date'));
Index: ckend/node_modules/lodash/fp/debounce.js
===================================================================
--- backend/node_modules/lodash/fp/debounce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('debounce', require('../debounce'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/deburr.js
===================================================================
--- backend/node_modules/lodash/fp/deburr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('deburr', require('../deburr'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defaultTo.js
===================================================================
--- backend/node_modules/lodash/fp/defaultTo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defaultTo', require('../defaultTo'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defaults.js
===================================================================
--- backend/node_modules/lodash/fp/defaults.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defaults', require('../defaults'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defaultsAll.js
===================================================================
--- backend/node_modules/lodash/fp/defaultsAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defaultsAll', require('../defaults'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defaultsDeep.js
===================================================================
--- backend/node_modules/lodash/fp/defaultsDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defaultsDeep', require('../defaultsDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defaultsDeepAll.js
===================================================================
--- backend/node_modules/lodash/fp/defaultsDeepAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defaultsDeepAll', require('../defaultsDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/defer.js
===================================================================
--- backend/node_modules/lodash/fp/defer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('defer', require('../defer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/delay.js
===================================================================
--- backend/node_modules/lodash/fp/delay.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('delay', require('../delay'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/difference.js
===================================================================
--- backend/node_modules/lodash/fp/difference.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('difference', require('../difference'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/differenceBy.js
===================================================================
--- backend/node_modules/lodash/fp/differenceBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('differenceBy', require('../differenceBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/differenceWith.js
===================================================================
--- backend/node_modules/lodash/fp/differenceWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('differenceWith', require('../differenceWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/dissoc.js
===================================================================
--- backend/node_modules/lodash/fp/dissoc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./unset');
Index: ckend/node_modules/lodash/fp/dissocPath.js
===================================================================
--- backend/node_modules/lodash/fp/dissocPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./unset');
Index: ckend/node_modules/lodash/fp/divide.js
===================================================================
--- backend/node_modules/lodash/fp/divide.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('divide', require('../divide'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/drop.js
===================================================================
--- backend/node_modules/lodash/fp/drop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('drop', require('../drop'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/dropLast.js
===================================================================
--- backend/node_modules/lodash/fp/dropLast.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./dropRight');
Index: ckend/node_modules/lodash/fp/dropLastWhile.js
===================================================================
--- backend/node_modules/lodash/fp/dropLastWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./dropRightWhile');
Index: ckend/node_modules/lodash/fp/dropRight.js
===================================================================
--- backend/node_modules/lodash/fp/dropRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('dropRight', require('../dropRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/dropRightWhile.js
===================================================================
--- backend/node_modules/lodash/fp/dropRightWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('dropRightWhile', require('../dropRightWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/dropWhile.js
===================================================================
--- backend/node_modules/lodash/fp/dropWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('dropWhile', require('../dropWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/each.js
===================================================================
--- backend/node_modules/lodash/fp/each.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./forEach');
Index: ckend/node_modules/lodash/fp/eachRight.js
===================================================================
--- backend/node_modules/lodash/fp/eachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./forEachRight');
Index: ckend/node_modules/lodash/fp/endsWith.js
===================================================================
--- backend/node_modules/lodash/fp/endsWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('endsWith', require('../endsWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/entries.js
===================================================================
--- backend/node_modules/lodash/fp/entries.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./toPairs');
Index: ckend/node_modules/lodash/fp/entriesIn.js
===================================================================
--- backend/node_modules/lodash/fp/entriesIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./toPairsIn');
Index: ckend/node_modules/lodash/fp/eq.js
===================================================================
--- backend/node_modules/lodash/fp/eq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('eq', require('../eq'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/equals.js
===================================================================
--- backend/node_modules/lodash/fp/equals.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./isEqual');
Index: ckend/node_modules/lodash/fp/escape.js
===================================================================
--- backend/node_modules/lodash/fp/escape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('escape', require('../escape'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/escapeRegExp.js
===================================================================
--- backend/node_modules/lodash/fp/escapeRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('escapeRegExp', require('../escapeRegExp'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/every.js
===================================================================
--- backend/node_modules/lodash/fp/every.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('every', require('../every'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/extend.js
===================================================================
--- backend/node_modules/lodash/fp/extend.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignIn');
Index: ckend/node_modules/lodash/fp/extendAll.js
===================================================================
--- backend/node_modules/lodash/fp/extendAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignInAll');
Index: ckend/node_modules/lodash/fp/extendAllWith.js
===================================================================
--- backend/node_modules/lodash/fp/extendAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignInAllWith');
Index: ckend/node_modules/lodash/fp/extendWith.js
===================================================================
--- backend/node_modules/lodash/fp/extendWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./assignInWith');
Index: ckend/node_modules/lodash/fp/fill.js
===================================================================
--- backend/node_modules/lodash/fp/fill.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('fill', require('../fill'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/filter.js
===================================================================
--- backend/node_modules/lodash/fp/filter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('filter', require('../filter'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/find.js
===================================================================
--- backend/node_modules/lodash/fp/find.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('find', require('../find'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findFrom.js
===================================================================
--- backend/node_modules/lodash/fp/findFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findFrom', require('../find'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findIndex.js
===================================================================
--- backend/node_modules/lodash/fp/findIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findIndex', require('../findIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findIndexFrom.js
===================================================================
--- backend/node_modules/lodash/fp/findIndexFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findIndexFrom', require('../findIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findKey.js
===================================================================
--- backend/node_modules/lodash/fp/findKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findKey', require('../findKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findLast.js
===================================================================
--- backend/node_modules/lodash/fp/findLast.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findLast', require('../findLast'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findLastFrom.js
===================================================================
--- backend/node_modules/lodash/fp/findLastFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findLastFrom', require('../findLast'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findLastIndex.js
===================================================================
--- backend/node_modules/lodash/fp/findLastIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findLastIndex', require('../findLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findLastIndexFrom.js
===================================================================
--- backend/node_modules/lodash/fp/findLastIndexFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findLastIndexFrom', require('../findLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/findLastKey.js
===================================================================
--- backend/node_modules/lodash/fp/findLastKey.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('findLastKey', require('../findLastKey'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/first.js
===================================================================
--- backend/node_modules/lodash/fp/first.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./head');
Index: ckend/node_modules/lodash/fp/flatMap.js
===================================================================
--- backend/node_modules/lodash/fp/flatMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flatMap', require('../flatMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flatMapDeep.js
===================================================================
--- backend/node_modules/lodash/fp/flatMapDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flatMapDeep', require('../flatMapDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flatMapDepth.js
===================================================================
--- backend/node_modules/lodash/fp/flatMapDepth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flatMapDepth', require('../flatMapDepth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flatten.js
===================================================================
--- backend/node_modules/lodash/fp/flatten.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flatten', require('../flatten'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flattenDeep.js
===================================================================
--- backend/node_modules/lodash/fp/flattenDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flattenDeep', require('../flattenDeep'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flattenDepth.js
===================================================================
--- backend/node_modules/lodash/fp/flattenDepth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flattenDepth', require('../flattenDepth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flip.js
===================================================================
--- backend/node_modules/lodash/fp/flip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flip', require('../flip'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/floor.js
===================================================================
--- backend/node_modules/lodash/fp/floor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('floor', require('../floor'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flow.js
===================================================================
--- backend/node_modules/lodash/fp/flow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flow', require('../flow'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/flowRight.js
===================================================================
--- backend/node_modules/lodash/fp/flowRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('flowRight', require('../flowRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forEach.js
===================================================================
--- backend/node_modules/lodash/fp/forEach.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forEach', require('../forEach'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forEachRight.js
===================================================================
--- backend/node_modules/lodash/fp/forEachRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forEachRight', require('../forEachRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forIn.js
===================================================================
--- backend/node_modules/lodash/fp/forIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forIn', require('../forIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forInRight.js
===================================================================
--- backend/node_modules/lodash/fp/forInRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forInRight', require('../forInRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forOwn.js
===================================================================
--- backend/node_modules/lodash/fp/forOwn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forOwn', require('../forOwn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/forOwnRight.js
===================================================================
--- backend/node_modules/lodash/fp/forOwnRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('forOwnRight', require('../forOwnRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/fromPairs.js
===================================================================
--- backend/node_modules/lodash/fp/fromPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('fromPairs', require('../fromPairs'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/function.js
===================================================================
--- backend/node_modules/lodash/fp/function.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../function'));
Index: ckend/node_modules/lodash/fp/functions.js
===================================================================
--- backend/node_modules/lodash/fp/functions.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('functions', require('../functions'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/functionsIn.js
===================================================================
--- backend/node_modules/lodash/fp/functionsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('functionsIn', require('../functionsIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/get.js
===================================================================
--- backend/node_modules/lodash/fp/get.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('get', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/getOr.js
===================================================================
--- backend/node_modules/lodash/fp/getOr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('getOr', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/groupBy.js
===================================================================
--- backend/node_modules/lodash/fp/groupBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('groupBy', require('../groupBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/gt.js
===================================================================
--- backend/node_modules/lodash/fp/gt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('gt', require('../gt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/gte.js
===================================================================
--- backend/node_modules/lodash/fp/gte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('gte', require('../gte'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/has.js
===================================================================
--- backend/node_modules/lodash/fp/has.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('has', require('../has'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/hasIn.js
===================================================================
--- backend/node_modules/lodash/fp/hasIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('hasIn', require('../hasIn'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/head.js
===================================================================
--- backend/node_modules/lodash/fp/head.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('head', require('../head'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/identical.js
===================================================================
--- backend/node_modules/lodash/fp/identical.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./eq');
Index: ckend/node_modules/lodash/fp/identity.js
===================================================================
--- backend/node_modules/lodash/fp/identity.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('identity', require('../identity'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/inRange.js
===================================================================
--- backend/node_modules/lodash/fp/inRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('inRange', require('../inRange'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/includes.js
===================================================================
--- backend/node_modules/lodash/fp/includes.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('includes', require('../includes'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/includesFrom.js
===================================================================
--- backend/node_modules/lodash/fp/includesFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('includesFrom', require('../includes'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/indexBy.js
===================================================================
--- backend/node_modules/lodash/fp/indexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./keyBy');
Index: ckend/node_modules/lodash/fp/indexOf.js
===================================================================
--- backend/node_modules/lodash/fp/indexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('indexOf', require('../indexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/indexOfFrom.js
===================================================================
--- backend/node_modules/lodash/fp/indexOfFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('indexOfFrom', require('../indexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/init.js
===================================================================
--- backend/node_modules/lodash/fp/init.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./initial');
Index: ckend/node_modules/lodash/fp/initial.js
===================================================================
--- backend/node_modules/lodash/fp/initial.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('initial', require('../initial'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/intersection.js
===================================================================
--- backend/node_modules/lodash/fp/intersection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('intersection', require('../intersection'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/intersectionBy.js
===================================================================
--- backend/node_modules/lodash/fp/intersectionBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('intersectionBy', require('../intersectionBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/intersectionWith.js
===================================================================
--- backend/node_modules/lodash/fp/intersectionWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('intersectionWith', require('../intersectionWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invert.js
===================================================================
--- backend/node_modules/lodash/fp/invert.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invert', require('../invert'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invertBy.js
===================================================================
--- backend/node_modules/lodash/fp/invertBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invertBy', require('../invertBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invertObj.js
===================================================================
--- backend/node_modules/lodash/fp/invertObj.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./invert');
Index: ckend/node_modules/lodash/fp/invoke.js
===================================================================
--- backend/node_modules/lodash/fp/invoke.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invoke', require('../invoke'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invokeArgs.js
===================================================================
--- backend/node_modules/lodash/fp/invokeArgs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invokeArgs', require('../invoke'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invokeArgsMap.js
===================================================================
--- backend/node_modules/lodash/fp/invokeArgsMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invokeArgsMap', require('../invokeMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/invokeMap.js
===================================================================
--- backend/node_modules/lodash/fp/invokeMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('invokeMap', require('../invokeMap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isArguments.js
===================================================================
--- backend/node_modules/lodash/fp/isArguments.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isArguments', require('../isArguments'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isArray.js
===================================================================
--- backend/node_modules/lodash/fp/isArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isArray', require('../isArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isArrayBuffer.js
===================================================================
--- backend/node_modules/lodash/fp/isArrayBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isArrayBuffer', require('../isArrayBuffer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isArrayLike.js
===================================================================
--- backend/node_modules/lodash/fp/isArrayLike.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isArrayLike', require('../isArrayLike'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isArrayLikeObject.js
===================================================================
--- backend/node_modules/lodash/fp/isArrayLikeObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isArrayLikeObject', require('../isArrayLikeObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isBoolean.js
===================================================================
--- backend/node_modules/lodash/fp/isBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isBoolean', require('../isBoolean'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isBuffer.js
===================================================================
--- backend/node_modules/lodash/fp/isBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isBuffer', require('../isBuffer'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isDate.js
===================================================================
--- backend/node_modules/lodash/fp/isDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isDate', require('../isDate'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isElement.js
===================================================================
--- backend/node_modules/lodash/fp/isElement.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isElement', require('../isElement'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isEmpty.js
===================================================================
--- backend/node_modules/lodash/fp/isEmpty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isEmpty', require('../isEmpty'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isEqual.js
===================================================================
--- backend/node_modules/lodash/fp/isEqual.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isEqual', require('../isEqual'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isEqualWith.js
===================================================================
--- backend/node_modules/lodash/fp/isEqualWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isEqualWith', require('../isEqualWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isError.js
===================================================================
--- backend/node_modules/lodash/fp/isError.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isError', require('../isError'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isFinite.js
===================================================================
--- backend/node_modules/lodash/fp/isFinite.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isFinite', require('../isFinite'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isFunction.js
===================================================================
--- backend/node_modules/lodash/fp/isFunction.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isFunction', require('../isFunction'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isInteger.js
===================================================================
--- backend/node_modules/lodash/fp/isInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isInteger', require('../isInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isLength.js
===================================================================
--- backend/node_modules/lodash/fp/isLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isLength', require('../isLength'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isMap.js
===================================================================
--- backend/node_modules/lodash/fp/isMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isMap', require('../isMap'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isMatch.js
===================================================================
--- backend/node_modules/lodash/fp/isMatch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isMatch', require('../isMatch'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isMatchWith.js
===================================================================
--- backend/node_modules/lodash/fp/isMatchWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isMatchWith', require('../isMatchWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isNaN.js
===================================================================
--- backend/node_modules/lodash/fp/isNaN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isNaN', require('../isNaN'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isNative.js
===================================================================
--- backend/node_modules/lodash/fp/isNative.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isNative', require('../isNative'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isNil.js
===================================================================
--- backend/node_modules/lodash/fp/isNil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isNil', require('../isNil'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isNull.js
===================================================================
--- backend/node_modules/lodash/fp/isNull.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isNull', require('../isNull'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isNumber.js
===================================================================
--- backend/node_modules/lodash/fp/isNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isNumber', require('../isNumber'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isObject.js
===================================================================
--- backend/node_modules/lodash/fp/isObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isObject', require('../isObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isObjectLike.js
===================================================================
--- backend/node_modules/lodash/fp/isObjectLike.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isObjectLike', require('../isObjectLike'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isPlainObject.js
===================================================================
--- backend/node_modules/lodash/fp/isPlainObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isPlainObject', require('../isPlainObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isRegExp.js
===================================================================
--- backend/node_modules/lodash/fp/isRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isRegExp', require('../isRegExp'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isSafeInteger.js
===================================================================
--- backend/node_modules/lodash/fp/isSafeInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isSafeInteger', require('../isSafeInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isSet.js
===================================================================
--- backend/node_modules/lodash/fp/isSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isSet', require('../isSet'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isString.js
===================================================================
--- backend/node_modules/lodash/fp/isString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isString', require('../isString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isSymbol.js
===================================================================
--- backend/node_modules/lodash/fp/isSymbol.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isSymbol', require('../isSymbol'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isTypedArray.js
===================================================================
--- backend/node_modules/lodash/fp/isTypedArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isTypedArray', require('../isTypedArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isUndefined.js
===================================================================
--- backend/node_modules/lodash/fp/isUndefined.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isUndefined', require('../isUndefined'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isWeakMap.js
===================================================================
--- backend/node_modules/lodash/fp/isWeakMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isWeakMap', require('../isWeakMap'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/isWeakSet.js
===================================================================
--- backend/node_modules/lodash/fp/isWeakSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('isWeakSet', require('../isWeakSet'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/iteratee.js
===================================================================
--- backend/node_modules/lodash/fp/iteratee.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('iteratee', require('../iteratee'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/join.js
===================================================================
--- backend/node_modules/lodash/fp/join.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('join', require('../join'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/juxt.js
===================================================================
--- backend/node_modules/lodash/fp/juxt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./over');
Index: ckend/node_modules/lodash/fp/kebabCase.js
===================================================================
--- backend/node_modules/lodash/fp/kebabCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('kebabCase', require('../kebabCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/keyBy.js
===================================================================
--- backend/node_modules/lodash/fp/keyBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('keyBy', require('../keyBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/keys.js
===================================================================
--- backend/node_modules/lodash/fp/keys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('keys', require('../keys'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/keysIn.js
===================================================================
--- backend/node_modules/lodash/fp/keysIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('keysIn', require('../keysIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lang.js
===================================================================
--- backend/node_modules/lodash/fp/lang.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../lang'));
Index: ckend/node_modules/lodash/fp/last.js
===================================================================
--- backend/node_modules/lodash/fp/last.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('last', require('../last'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lastIndexOf.js
===================================================================
--- backend/node_modules/lodash/fp/lastIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lastIndexOf', require('../lastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lastIndexOfFrom.js
===================================================================
--- backend/node_modules/lodash/fp/lastIndexOfFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lastIndexOfFrom', require('../lastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lowerCase.js
===================================================================
--- backend/node_modules/lodash/fp/lowerCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lowerCase', require('../lowerCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lowerFirst.js
===================================================================
--- backend/node_modules/lodash/fp/lowerFirst.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lowerFirst', require('../lowerFirst'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lt.js
===================================================================
--- backend/node_modules/lodash/fp/lt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lt', require('../lt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/lte.js
===================================================================
--- backend/node_modules/lodash/fp/lte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('lte', require('../lte'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/map.js
===================================================================
--- backend/node_modules/lodash/fp/map.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('map', require('../map'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mapKeys.js
===================================================================
--- backend/node_modules/lodash/fp/mapKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mapKeys', require('../mapKeys'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mapValues.js
===================================================================
--- backend/node_modules/lodash/fp/mapValues.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mapValues', require('../mapValues'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/matches.js
===================================================================
--- backend/node_modules/lodash/fp/matches.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./isMatch');
Index: ckend/node_modules/lodash/fp/matchesProperty.js
===================================================================
--- backend/node_modules/lodash/fp/matchesProperty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('matchesProperty', require('../matchesProperty'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/math.js
===================================================================
--- backend/node_modules/lodash/fp/math.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../math'));
Index: ckend/node_modules/lodash/fp/max.js
===================================================================
--- backend/node_modules/lodash/fp/max.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('max', require('../max'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/maxBy.js
===================================================================
--- backend/node_modules/lodash/fp/maxBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('maxBy', require('../maxBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mean.js
===================================================================
--- backend/node_modules/lodash/fp/mean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mean', require('../mean'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/meanBy.js
===================================================================
--- backend/node_modules/lodash/fp/meanBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('meanBy', require('../meanBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/memoize.js
===================================================================
--- backend/node_modules/lodash/fp/memoize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('memoize', require('../memoize'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/merge.js
===================================================================
--- backend/node_modules/lodash/fp/merge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('merge', require('../merge'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mergeAll.js
===================================================================
--- backend/node_modules/lodash/fp/mergeAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mergeAll', require('../merge'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mergeAllWith.js
===================================================================
--- backend/node_modules/lodash/fp/mergeAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mergeAllWith', require('../mergeWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mergeWith.js
===================================================================
--- backend/node_modules/lodash/fp/mergeWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mergeWith', require('../mergeWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/method.js
===================================================================
--- backend/node_modules/lodash/fp/method.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('method', require('../method'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/methodOf.js
===================================================================
--- backend/node_modules/lodash/fp/methodOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('methodOf', require('../methodOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/min.js
===================================================================
--- backend/node_modules/lodash/fp/min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('min', require('../min'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/minBy.js
===================================================================
--- backend/node_modules/lodash/fp/minBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('minBy', require('../minBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/mixin.js
===================================================================
--- backend/node_modules/lodash/fp/mixin.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('mixin', require('../mixin'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/multiply.js
===================================================================
--- backend/node_modules/lodash/fp/multiply.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('multiply', require('../multiply'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/nAry.js
===================================================================
--- backend/node_modules/lodash/fp/nAry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./ary');
Index: ckend/node_modules/lodash/fp/negate.js
===================================================================
--- backend/node_modules/lodash/fp/negate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('negate', require('../negate'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/next.js
===================================================================
--- backend/node_modules/lodash/fp/next.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('next', require('../next'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/noop.js
===================================================================
--- backend/node_modules/lodash/fp/noop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('noop', require('../noop'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/now.js
===================================================================
--- backend/node_modules/lodash/fp/now.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('now', require('../now'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/nth.js
===================================================================
--- backend/node_modules/lodash/fp/nth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('nth', require('../nth'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/nthArg.js
===================================================================
--- backend/node_modules/lodash/fp/nthArg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('nthArg', require('../nthArg'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/number.js
===================================================================
--- backend/node_modules/lodash/fp/number.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../number'));
Index: ckend/node_modules/lodash/fp/object.js
===================================================================
--- backend/node_modules/lodash/fp/object.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../object'));
Index: ckend/node_modules/lodash/fp/omit.js
===================================================================
--- backend/node_modules/lodash/fp/omit.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('omit', require('../omit'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/omitAll.js
===================================================================
--- backend/node_modules/lodash/fp/omitAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./omit');
Index: ckend/node_modules/lodash/fp/omitBy.js
===================================================================
--- backend/node_modules/lodash/fp/omitBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('omitBy', require('../omitBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/once.js
===================================================================
--- backend/node_modules/lodash/fp/once.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('once', require('../once'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/orderBy.js
===================================================================
--- backend/node_modules/lodash/fp/orderBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('orderBy', require('../orderBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/over.js
===================================================================
--- backend/node_modules/lodash/fp/over.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('over', require('../over'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/overArgs.js
===================================================================
--- backend/node_modules/lodash/fp/overArgs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('overArgs', require('../overArgs'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/overEvery.js
===================================================================
--- backend/node_modules/lodash/fp/overEvery.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('overEvery', require('../overEvery'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/overSome.js
===================================================================
--- backend/node_modules/lodash/fp/overSome.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('overSome', require('../overSome'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pad.js
===================================================================
--- backend/node_modules/lodash/fp/pad.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pad', require('../pad'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/padChars.js
===================================================================
--- backend/node_modules/lodash/fp/padChars.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('padChars', require('../pad'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/padCharsEnd.js
===================================================================
--- backend/node_modules/lodash/fp/padCharsEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('padCharsEnd', require('../padEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/padCharsStart.js
===================================================================
--- backend/node_modules/lodash/fp/padCharsStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('padCharsStart', require('../padStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/padEnd.js
===================================================================
--- backend/node_modules/lodash/fp/padEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('padEnd', require('../padEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/padStart.js
===================================================================
--- backend/node_modules/lodash/fp/padStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('padStart', require('../padStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/parseInt.js
===================================================================
--- backend/node_modules/lodash/fp/parseInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('parseInt', require('../parseInt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/partial.js
===================================================================
--- backend/node_modules/lodash/fp/partial.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('partial', require('../partial'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/partialRight.js
===================================================================
--- backend/node_modules/lodash/fp/partialRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('partialRight', require('../partialRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/partition.js
===================================================================
--- backend/node_modules/lodash/fp/partition.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('partition', require('../partition'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/path.js
===================================================================
--- backend/node_modules/lodash/fp/path.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./get');
Index: ckend/node_modules/lodash/fp/pathEq.js
===================================================================
--- backend/node_modules/lodash/fp/pathEq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./matchesProperty');
Index: ckend/node_modules/lodash/fp/pathOr.js
===================================================================
--- backend/node_modules/lodash/fp/pathOr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./getOr');
Index: ckend/node_modules/lodash/fp/paths.js
===================================================================
--- backend/node_modules/lodash/fp/paths.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./at');
Index: ckend/node_modules/lodash/fp/pick.js
===================================================================
--- backend/node_modules/lodash/fp/pick.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pick', require('../pick'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pickAll.js
===================================================================
--- backend/node_modules/lodash/fp/pickAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./pick');
Index: ckend/node_modules/lodash/fp/pickBy.js
===================================================================
--- backend/node_modules/lodash/fp/pickBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pickBy', require('../pickBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pipe.js
===================================================================
--- backend/node_modules/lodash/fp/pipe.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./flow');
Index: ckend/node_modules/lodash/fp/placeholder.js
===================================================================
--- backend/node_modules/lodash/fp/placeholder.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-/**
- * The default argument placeholder value for methods.
- *
- * @type {Object}
- */
-module.exports = {};
Index: ckend/node_modules/lodash/fp/plant.js
===================================================================
--- backend/node_modules/lodash/fp/plant.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('plant', require('../plant'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pluck.js
===================================================================
--- backend/node_modules/lodash/fp/pluck.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./map');
Index: ckend/node_modules/lodash/fp/prop.js
===================================================================
--- backend/node_modules/lodash/fp/prop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./get');
Index: ckend/node_modules/lodash/fp/propEq.js
===================================================================
--- backend/node_modules/lodash/fp/propEq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./matchesProperty');
Index: ckend/node_modules/lodash/fp/propOr.js
===================================================================
--- backend/node_modules/lodash/fp/propOr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./getOr');
Index: ckend/node_modules/lodash/fp/property.js
===================================================================
--- backend/node_modules/lodash/fp/property.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./get');
Index: ckend/node_modules/lodash/fp/propertyOf.js
===================================================================
--- backend/node_modules/lodash/fp/propertyOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('propertyOf', require('../get'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/props.js
===================================================================
--- backend/node_modules/lodash/fp/props.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./at');
Index: ckend/node_modules/lodash/fp/pull.js
===================================================================
--- backend/node_modules/lodash/fp/pull.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pull', require('../pull'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pullAll.js
===================================================================
--- backend/node_modules/lodash/fp/pullAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pullAll', require('../pullAll'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pullAllBy.js
===================================================================
--- backend/node_modules/lodash/fp/pullAllBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pullAllBy', require('../pullAllBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pullAllWith.js
===================================================================
--- backend/node_modules/lodash/fp/pullAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pullAllWith', require('../pullAllWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/pullAt.js
===================================================================
--- backend/node_modules/lodash/fp/pullAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('pullAt', require('../pullAt'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/random.js
===================================================================
--- backend/node_modules/lodash/fp/random.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('random', require('../random'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/range.js
===================================================================
--- backend/node_modules/lodash/fp/range.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('range', require('../range'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/rangeRight.js
===================================================================
--- backend/node_modules/lodash/fp/rangeRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('rangeRight', require('../rangeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/rangeStep.js
===================================================================
--- backend/node_modules/lodash/fp/rangeStep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('rangeStep', require('../range'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/rangeStepRight.js
===================================================================
--- backend/node_modules/lodash/fp/rangeStepRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('rangeStepRight', require('../rangeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/rearg.js
===================================================================
--- backend/node_modules/lodash/fp/rearg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('rearg', require('../rearg'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/reduce.js
===================================================================
--- backend/node_modules/lodash/fp/reduce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('reduce', require('../reduce'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/reduceRight.js
===================================================================
--- backend/node_modules/lodash/fp/reduceRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('reduceRight', require('../reduceRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/reject.js
===================================================================
--- backend/node_modules/lodash/fp/reject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('reject', require('../reject'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/remove.js
===================================================================
--- backend/node_modules/lodash/fp/remove.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('remove', require('../remove'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/repeat.js
===================================================================
--- backend/node_modules/lodash/fp/repeat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('repeat', require('../repeat'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/replace.js
===================================================================
--- backend/node_modules/lodash/fp/replace.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('replace', require('../replace'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/rest.js
===================================================================
--- backend/node_modules/lodash/fp/rest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('rest', require('../rest'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/restFrom.js
===================================================================
--- backend/node_modules/lodash/fp/restFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('restFrom', require('../rest'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/result.js
===================================================================
--- backend/node_modules/lodash/fp/result.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('result', require('../result'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/reverse.js
===================================================================
--- backend/node_modules/lodash/fp/reverse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('reverse', require('../reverse'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/round.js
===================================================================
--- backend/node_modules/lodash/fp/round.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('round', require('../round'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sample.js
===================================================================
--- backend/node_modules/lodash/fp/sample.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sample', require('../sample'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sampleSize.js
===================================================================
--- backend/node_modules/lodash/fp/sampleSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sampleSize', require('../sampleSize'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/seq.js
===================================================================
--- backend/node_modules/lodash/fp/seq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../seq'));
Index: ckend/node_modules/lodash/fp/set.js
===================================================================
--- backend/node_modules/lodash/fp/set.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('set', require('../set'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/setWith.js
===================================================================
--- backend/node_modules/lodash/fp/setWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('setWith', require('../setWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/shuffle.js
===================================================================
--- backend/node_modules/lodash/fp/shuffle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('shuffle', require('../shuffle'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/size.js
===================================================================
--- backend/node_modules/lodash/fp/size.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('size', require('../size'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/slice.js
===================================================================
--- backend/node_modules/lodash/fp/slice.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('slice', require('../slice'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/snakeCase.js
===================================================================
--- backend/node_modules/lodash/fp/snakeCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('snakeCase', require('../snakeCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/some.js
===================================================================
--- backend/node_modules/lodash/fp/some.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('some', require('../some'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortBy.js
===================================================================
--- backend/node_modules/lodash/fp/sortBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortBy', require('../sortBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedIndex.js
===================================================================
--- backend/node_modules/lodash/fp/sortedIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedIndex', require('../sortedIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedIndexBy.js
===================================================================
--- backend/node_modules/lodash/fp/sortedIndexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedIndexBy', require('../sortedIndexBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedIndexOf.js
===================================================================
--- backend/node_modules/lodash/fp/sortedIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedIndexOf', require('../sortedIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedLastIndex.js
===================================================================
--- backend/node_modules/lodash/fp/sortedLastIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedLastIndex', require('../sortedLastIndex'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedLastIndexBy.js
===================================================================
--- backend/node_modules/lodash/fp/sortedLastIndexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedLastIndexBy', require('../sortedLastIndexBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedLastIndexOf.js
===================================================================
--- backend/node_modules/lodash/fp/sortedLastIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedLastIndexOf', require('../sortedLastIndexOf'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedUniq.js
===================================================================
--- backend/node_modules/lodash/fp/sortedUniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedUniq', require('../sortedUniq'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sortedUniqBy.js
===================================================================
--- backend/node_modules/lodash/fp/sortedUniqBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sortedUniqBy', require('../sortedUniqBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/split.js
===================================================================
--- backend/node_modules/lodash/fp/split.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('split', require('../split'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/spread.js
===================================================================
--- backend/node_modules/lodash/fp/spread.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('spread', require('../spread'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/spreadFrom.js
===================================================================
--- backend/node_modules/lodash/fp/spreadFrom.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('spreadFrom', require('../spread'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/startCase.js
===================================================================
--- backend/node_modules/lodash/fp/startCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('startCase', require('../startCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/startsWith.js
===================================================================
--- backend/node_modules/lodash/fp/startsWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('startsWith', require('../startsWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/string.js
===================================================================
--- backend/node_modules/lodash/fp/string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../string'));
Index: ckend/node_modules/lodash/fp/stubArray.js
===================================================================
--- backend/node_modules/lodash/fp/stubArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('stubArray', require('../stubArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/stubFalse.js
===================================================================
--- backend/node_modules/lodash/fp/stubFalse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('stubFalse', require('../stubFalse'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/stubObject.js
===================================================================
--- backend/node_modules/lodash/fp/stubObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('stubObject', require('../stubObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/stubString.js
===================================================================
--- backend/node_modules/lodash/fp/stubString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('stubString', require('../stubString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/stubTrue.js
===================================================================
--- backend/node_modules/lodash/fp/stubTrue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('stubTrue', require('../stubTrue'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/subtract.js
===================================================================
--- backend/node_modules/lodash/fp/subtract.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('subtract', require('../subtract'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sum.js
===================================================================
--- backend/node_modules/lodash/fp/sum.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sum', require('../sum'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/sumBy.js
===================================================================
--- backend/node_modules/lodash/fp/sumBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('sumBy', require('../sumBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/symmetricDifference.js
===================================================================
--- backend/node_modules/lodash/fp/symmetricDifference.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./xor');
Index: ckend/node_modules/lodash/fp/symmetricDifferenceBy.js
===================================================================
--- backend/node_modules/lodash/fp/symmetricDifferenceBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./xorBy');
Index: ckend/node_modules/lodash/fp/symmetricDifferenceWith.js
===================================================================
--- backend/node_modules/lodash/fp/symmetricDifferenceWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./xorWith');
Index: ckend/node_modules/lodash/fp/tail.js
===================================================================
--- backend/node_modules/lodash/fp/tail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('tail', require('../tail'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/take.js
===================================================================
--- backend/node_modules/lodash/fp/take.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('take', require('../take'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/takeLast.js
===================================================================
--- backend/node_modules/lodash/fp/takeLast.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./takeRight');
Index: ckend/node_modules/lodash/fp/takeLastWhile.js
===================================================================
--- backend/node_modules/lodash/fp/takeLastWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./takeRightWhile');
Index: ckend/node_modules/lodash/fp/takeRight.js
===================================================================
--- backend/node_modules/lodash/fp/takeRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('takeRight', require('../takeRight'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/takeRightWhile.js
===================================================================
--- backend/node_modules/lodash/fp/takeRightWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('takeRightWhile', require('../takeRightWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/takeWhile.js
===================================================================
--- backend/node_modules/lodash/fp/takeWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('takeWhile', require('../takeWhile'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/tap.js
===================================================================
--- backend/node_modules/lodash/fp/tap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('tap', require('../tap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/template.js
===================================================================
--- backend/node_modules/lodash/fp/template.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('template', require('../template'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/templateSettings.js
===================================================================
--- backend/node_modules/lodash/fp/templateSettings.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('templateSettings', require('../templateSettings'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/throttle.js
===================================================================
--- backend/node_modules/lodash/fp/throttle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('throttle', require('../throttle'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/thru.js
===================================================================
--- backend/node_modules/lodash/fp/thru.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('thru', require('../thru'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/times.js
===================================================================
--- backend/node_modules/lodash/fp/times.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('times', require('../times'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toArray.js
===================================================================
--- backend/node_modules/lodash/fp/toArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toArray', require('../toArray'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toFinite.js
===================================================================
--- backend/node_modules/lodash/fp/toFinite.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toFinite', require('../toFinite'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toInteger.js
===================================================================
--- backend/node_modules/lodash/fp/toInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toInteger', require('../toInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toIterator.js
===================================================================
--- backend/node_modules/lodash/fp/toIterator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toIterator', require('../toIterator'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toJSON.js
===================================================================
--- backend/node_modules/lodash/fp/toJSON.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toJSON', require('../toJSON'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toLength.js
===================================================================
--- backend/node_modules/lodash/fp/toLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toLength', require('../toLength'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toLower.js
===================================================================
--- backend/node_modules/lodash/fp/toLower.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toLower', require('../toLower'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toNumber.js
===================================================================
--- backend/node_modules/lodash/fp/toNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toNumber', require('../toNumber'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toPairs.js
===================================================================
--- backend/node_modules/lodash/fp/toPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toPairs', require('../toPairs'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toPairsIn.js
===================================================================
--- backend/node_modules/lodash/fp/toPairsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toPairsIn', require('../toPairsIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toPath.js
===================================================================
--- backend/node_modules/lodash/fp/toPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toPath', require('../toPath'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toPlainObject.js
===================================================================
--- backend/node_modules/lodash/fp/toPlainObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toPlainObject', require('../toPlainObject'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toSafeInteger.js
===================================================================
--- backend/node_modules/lodash/fp/toSafeInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toSafeInteger', require('../toSafeInteger'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toString.js
===================================================================
--- backend/node_modules/lodash/fp/toString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toString', require('../toString'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/toUpper.js
===================================================================
--- backend/node_modules/lodash/fp/toUpper.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('toUpper', require('../toUpper'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/transform.js
===================================================================
--- backend/node_modules/lodash/fp/transform.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('transform', require('../transform'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trim.js
===================================================================
--- backend/node_modules/lodash/fp/trim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trim', require('../trim'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trimChars.js
===================================================================
--- backend/node_modules/lodash/fp/trimChars.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trimChars', require('../trim'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trimCharsEnd.js
===================================================================
--- backend/node_modules/lodash/fp/trimCharsEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trimCharsEnd', require('../trimEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trimCharsStart.js
===================================================================
--- backend/node_modules/lodash/fp/trimCharsStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trimCharsStart', require('../trimStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trimEnd.js
===================================================================
--- backend/node_modules/lodash/fp/trimEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trimEnd', require('../trimEnd'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/trimStart.js
===================================================================
--- backend/node_modules/lodash/fp/trimStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('trimStart', require('../trimStart'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/truncate.js
===================================================================
--- backend/node_modules/lodash/fp/truncate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('truncate', require('../truncate'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unapply.js
===================================================================
--- backend/node_modules/lodash/fp/unapply.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./rest');
Index: ckend/node_modules/lodash/fp/unary.js
===================================================================
--- backend/node_modules/lodash/fp/unary.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unary', require('../unary'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unescape.js
===================================================================
--- backend/node_modules/lodash/fp/unescape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unescape', require('../unescape'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/union.js
===================================================================
--- backend/node_modules/lodash/fp/union.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('union', require('../union'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unionBy.js
===================================================================
--- backend/node_modules/lodash/fp/unionBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unionBy', require('../unionBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unionWith.js
===================================================================
--- backend/node_modules/lodash/fp/unionWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unionWith', require('../unionWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/uniq.js
===================================================================
--- backend/node_modules/lodash/fp/uniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('uniq', require('../uniq'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/uniqBy.js
===================================================================
--- backend/node_modules/lodash/fp/uniqBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('uniqBy', require('../uniqBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/uniqWith.js
===================================================================
--- backend/node_modules/lodash/fp/uniqWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('uniqWith', require('../uniqWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/uniqueId.js
===================================================================
--- backend/node_modules/lodash/fp/uniqueId.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('uniqueId', require('../uniqueId'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unnest.js
===================================================================
--- backend/node_modules/lodash/fp/unnest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./flatten');
Index: ckend/node_modules/lodash/fp/unset.js
===================================================================
--- backend/node_modules/lodash/fp/unset.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unset', require('../unset'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unzip.js
===================================================================
--- backend/node_modules/lodash/fp/unzip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unzip', require('../unzip'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/unzipWith.js
===================================================================
--- backend/node_modules/lodash/fp/unzipWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('unzipWith', require('../unzipWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/update.js
===================================================================
--- backend/node_modules/lodash/fp/update.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('update', require('../update'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/updateWith.js
===================================================================
--- backend/node_modules/lodash/fp/updateWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('updateWith', require('../updateWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/upperCase.js
===================================================================
--- backend/node_modules/lodash/fp/upperCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('upperCase', require('../upperCase'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/upperFirst.js
===================================================================
--- backend/node_modules/lodash/fp/upperFirst.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('upperFirst', require('../upperFirst'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/useWith.js
===================================================================
--- backend/node_modules/lodash/fp/useWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./overArgs');
Index: ckend/node_modules/lodash/fp/util.js
===================================================================
--- backend/node_modules/lodash/fp/util.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var convert = require('./convert');
-module.exports = convert(require('../util'));
Index: ckend/node_modules/lodash/fp/value.js
===================================================================
--- backend/node_modules/lodash/fp/value.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('value', require('../value'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/valueOf.js
===================================================================
--- backend/node_modules/lodash/fp/valueOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('valueOf', require('../valueOf'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/values.js
===================================================================
--- backend/node_modules/lodash/fp/values.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('values', require('../values'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/valuesIn.js
===================================================================
--- backend/node_modules/lodash/fp/valuesIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('valuesIn', require('../valuesIn'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/where.js
===================================================================
--- backend/node_modules/lodash/fp/where.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./conformsTo');
Index: ckend/node_modules/lodash/fp/whereEq.js
===================================================================
--- backend/node_modules/lodash/fp/whereEq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./isMatch');
Index: ckend/node_modules/lodash/fp/without.js
===================================================================
--- backend/node_modules/lodash/fp/without.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('without', require('../without'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/words.js
===================================================================
--- backend/node_modules/lodash/fp/words.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('words', require('../words'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrap.js
===================================================================
--- backend/node_modules/lodash/fp/wrap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrap', require('../wrap'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrapperAt.js
===================================================================
--- backend/node_modules/lodash/fp/wrapperAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrapperAt', require('../wrapperAt'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrapperChain.js
===================================================================
--- backend/node_modules/lodash/fp/wrapperChain.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrapperChain', require('../wrapperChain'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrapperLodash.js
===================================================================
--- backend/node_modules/lodash/fp/wrapperLodash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrapperLodash', require('../wrapperLodash'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrapperReverse.js
===================================================================
--- backend/node_modules/lodash/fp/wrapperReverse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrapperReverse', require('../wrapperReverse'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/wrapperValue.js
===================================================================
--- backend/node_modules/lodash/fp/wrapperValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('wrapperValue', require('../wrapperValue'), require('./_falseOptions'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/xor.js
===================================================================
--- backend/node_modules/lodash/fp/xor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('xor', require('../xor'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/xorBy.js
===================================================================
--- backend/node_modules/lodash/fp/xorBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('xorBy', require('../xorBy'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/xorWith.js
===================================================================
--- backend/node_modules/lodash/fp/xorWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('xorWith', require('../xorWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/zip.js
===================================================================
--- backend/node_modules/lodash/fp/zip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('zip', require('../zip'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/zipAll.js
===================================================================
--- backend/node_modules/lodash/fp/zipAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('zipAll', require('../zip'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/zipObj.js
===================================================================
--- backend/node_modules/lodash/fp/zipObj.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./zipObject');
Index: ckend/node_modules/lodash/fp/zipObject.js
===================================================================
--- backend/node_modules/lodash/fp/zipObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('zipObject', require('../zipObject'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/zipObjectDeep.js
===================================================================
--- backend/node_modules/lodash/fp/zipObjectDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('zipObjectDeep', require('../zipObjectDeep'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fp/zipWith.js
===================================================================
--- backend/node_modules/lodash/fp/zipWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-var convert = require('./convert'),
-    func = convert('zipWith', require('../zipWith'));
-
-func.placeholder = require('./placeholder');
-module.exports = func;
Index: ckend/node_modules/lodash/fromPairs.js
===================================================================
--- backend/node_modules/lodash/fromPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/**
- * The inverse of `_.toPairs`; this method returns an object composed
- * from key-value `pairs`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} pairs The key-value pairs.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.fromPairs([['a', 1], ['b', 2]]);
- * // => { 'a': 1, 'b': 2 }
- */
-function fromPairs(pairs) {
-  var index = -1,
-      length = pairs == null ? 0 : pairs.length,
-      result = {};
-
-  while (++index < length) {
-    var pair = pairs[index];
-    result[pair[0]] = pair[1];
-  }
-  return result;
-}
-
-module.exports = fromPairs;
Index: ckend/node_modules/lodash/function.js
===================================================================
--- backend/node_modules/lodash/function.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-module.exports = {
-  'after': require('./after'),
-  'ary': require('./ary'),
-  'before': require('./before'),
-  'bind': require('./bind'),
-  'bindKey': require('./bindKey'),
-  'curry': require('./curry'),
-  'curryRight': require('./curryRight'),
-  'debounce': require('./debounce'),
-  'defer': require('./defer'),
-  'delay': require('./delay'),
-  'flip': require('./flip'),
-  'memoize': require('./memoize'),
-  'negate': require('./negate'),
-  'once': require('./once'),
-  'overArgs': require('./overArgs'),
-  'partial': require('./partial'),
-  'partialRight': require('./partialRight'),
-  'rearg': require('./rearg'),
-  'rest': require('./rest'),
-  'spread': require('./spread'),
-  'throttle': require('./throttle'),
-  'unary': require('./unary'),
-  'wrap': require('./wrap')
-};
Index: ckend/node_modules/lodash/functions.js
===================================================================
--- backend/node_modules/lodash/functions.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseFunctions = require('./_baseFunctions'),
-    keys = require('./keys');
-
-/**
- * Creates an array of function property names from own enumerable properties
- * of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functionsIn
- * @example
- *
- * function Foo() {
- *   this.a = _.constant('a');
- *   this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functions(new Foo);
- * // => ['a', 'b']
- */
-function functions(object) {
-  return object == null ? [] : baseFunctions(object, keys(object));
-}
-
-module.exports = functions;
Index: ckend/node_modules/lodash/functionsIn.js
===================================================================
--- backend/node_modules/lodash/functionsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseFunctions = require('./_baseFunctions'),
-    keysIn = require('./keysIn');
-
-/**
- * Creates an array of function property names from own and inherited
- * enumerable properties of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to inspect.
- * @returns {Array} Returns the function names.
- * @see _.functions
- * @example
- *
- * function Foo() {
- *   this.a = _.constant('a');
- *   this.b = _.constant('b');
- * }
- *
- * Foo.prototype.c = _.constant('c');
- *
- * _.functionsIn(new Foo);
- * // => ['a', 'b', 'c']
- */
-function functionsIn(object) {
-  return object == null ? [] : baseFunctions(object, keysIn(object));
-}
-
-module.exports = functionsIn;
Index: ckend/node_modules/lodash/get.js
===================================================================
--- backend/node_modules/lodash/get.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * Gets the value at `path` of `object`. If the resolved value is
- * `undefined`, the `defaultValue` is returned in its place.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to get.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.get(object, 'a[0].b.c');
- * // => 3
- *
- * _.get(object, ['a', '0', 'b', 'c']);
- * // => 3
- *
- * _.get(object, 'a.b.c', 'default');
- * // => 'default'
- */
-function get(object, path, defaultValue) {
-  var result = object == null ? undefined : baseGet(object, path);
-  return result === undefined ? defaultValue : result;
-}
-
-module.exports = get;
Index: ckend/node_modules/lodash/groupBy.js
===================================================================
--- backend/node_modules/lodash/groupBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    createAggregator = require('./_createAggregator');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The order of grouped values
- * is determined by the order they occur in `collection`. The corresponding
- * value of each key is an array of elements responsible for generating the
- * key. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * _.groupBy([6.1, 4.2, 6.3], Math.floor);
- * // => { '4': [4.2], '6': [6.1, 6.3] }
- *
- * // The `_.property` iteratee shorthand.
- * _.groupBy(['one', 'two', 'three'], 'length');
- * // => { '3': ['one', 'two'], '5': ['three'] }
- */
-var groupBy = createAggregator(function(result, value, key) {
-  if (hasOwnProperty.call(result, key)) {
-    result[key].push(value);
-  } else {
-    baseAssignValue(result, key, [value]);
-  }
-});
-
-module.exports = groupBy;
Index: ckend/node_modules/lodash/gt.js
===================================================================
--- backend/node_modules/lodash/gt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseGt = require('./_baseGt'),
-    createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is greater than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than `other`,
- *  else `false`.
- * @see _.lt
- * @example
- *
- * _.gt(3, 1);
- * // => true
- *
- * _.gt(3, 3);
- * // => false
- *
- * _.gt(1, 3);
- * // => false
- */
-var gt = createRelationalOperation(baseGt);
-
-module.exports = gt;
Index: ckend/node_modules/lodash/gte.js
===================================================================
--- backend/node_modules/lodash/gte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is greater than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is greater than or equal to
- *  `other`, else `false`.
- * @see _.lte
- * @example
- *
- * _.gte(3, 1);
- * // => true
- *
- * _.gte(3, 3);
- * // => true
- *
- * _.gte(1, 3);
- * // => false
- */
-var gte = createRelationalOperation(function(value, other) {
-  return value >= other;
-});
-
-module.exports = gte;
Index: ckend/node_modules/lodash/has.js
===================================================================
--- backend/node_modules/lodash/has.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var baseHas = require('./_baseHas'),
-    hasPath = require('./_hasPath');
-
-/**
- * Checks if `path` is a direct property of `object`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = { 'a': { 'b': 2 } };
- * var other = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.has(object, 'a');
- * // => true
- *
- * _.has(object, 'a.b');
- * // => true
- *
- * _.has(object, ['a', 'b']);
- * // => true
- *
- * _.has(other, 'a');
- * // => false
- */
-function has(object, path) {
-  return object != null && hasPath(object, path, baseHas);
-}
-
-module.exports = has;
Index: ckend/node_modules/lodash/hasIn.js
===================================================================
--- backend/node_modules/lodash/hasIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseHasIn = require('./_baseHasIn'),
-    hasPath = require('./_hasPath');
-
-/**
- * Checks if `path` is a direct or inherited property of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path to check.
- * @returns {boolean} Returns `true` if `path` exists, else `false`.
- * @example
- *
- * var object = _.create({ 'a': _.create({ 'b': 2 }) });
- *
- * _.hasIn(object, 'a');
- * // => true
- *
- * _.hasIn(object, 'a.b');
- * // => true
- *
- * _.hasIn(object, ['a', 'b']);
- * // => true
- *
- * _.hasIn(object, 'b');
- * // => false
- */
-function hasIn(object, path) {
-  return object != null && hasPath(object, path, baseHasIn);
-}
-
-module.exports = hasIn;
Index: ckend/node_modules/lodash/head.js
===================================================================
--- backend/node_modules/lodash/head.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * Gets the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @alias first
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the first element of `array`.
- * @example
- *
- * _.head([1, 2, 3]);
- * // => 1
- *
- * _.head([]);
- * // => undefined
- */
-function head(array) {
-  return (array && array.length) ? array[0] : undefined;
-}
-
-module.exports = head;
Index: ckend/node_modules/lodash/identity.js
===================================================================
--- backend/node_modules/lodash/identity.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-/**
- * This method returns the first argument it receives.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {*} value Any value.
- * @returns {*} Returns `value`.
- * @example
- *
- * var object = { 'a': 1 };
- *
- * console.log(_.identity(object) === object);
- * // => true
- */
-function identity(value) {
-  return value;
-}
-
-module.exports = identity;
Index: ckend/node_modules/lodash/inRange.js
===================================================================
--- backend/node_modules/lodash/inRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-var baseInRange = require('./_baseInRange'),
-    toFinite = require('./toFinite'),
-    toNumber = require('./toNumber');
-
-/**
- * Checks if `n` is between `start` and up to, but not including, `end`. If
- * `end` is not specified, it's set to `start` with `start` then set to `0`.
- * If `start` is greater than `end` the params are swapped to support
- * negative ranges.
- *
- * @static
- * @memberOf _
- * @since 3.3.0
- * @category Number
- * @param {number} number The number to check.
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
- * @see _.range, _.rangeRight
- * @example
- *
- * _.inRange(3, 2, 4);
- * // => true
- *
- * _.inRange(4, 8);
- * // => true
- *
- * _.inRange(4, 2);
- * // => false
- *
- * _.inRange(2, 2);
- * // => false
- *
- * _.inRange(1.2, 2);
- * // => true
- *
- * _.inRange(5.2, 4);
- * // => false
- *
- * _.inRange(-3, -2, -6);
- * // => true
- */
-function inRange(number, start, end) {
-  start = toFinite(start);
-  if (end === undefined) {
-    end = start;
-    start = 0;
-  } else {
-    end = toFinite(end);
-  }
-  number = toNumber(number);
-  return baseInRange(number, start, end);
-}
-
-module.exports = inRange;
Index: ckend/node_modules/lodash/includes.js
===================================================================
--- backend/node_modules/lodash/includes.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-var baseIndexOf = require('./_baseIndexOf'),
-    isArrayLike = require('./isArrayLike'),
-    isString = require('./isString'),
-    toInteger = require('./toInteger'),
-    values = require('./values');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Checks if `value` is in `collection`. If `collection` is a string, it's
- * checked for a substring of `value`, otherwise
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * is used for equality comparisons. If `fromIndex` is negative, it's used as
- * the offset from the end of `collection`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {boolean} Returns `true` if `value` is found, else `false`.
- * @example
- *
- * _.includes([1, 2, 3], 1);
- * // => true
- *
- * _.includes([1, 2, 3], 1, 2);
- * // => false
- *
- * _.includes({ 'a': 1, 'b': 2 }, 1);
- * // => true
- *
- * _.includes('abcd', 'bc');
- * // => true
- */
-function includes(collection, value, fromIndex, guard) {
-  collection = isArrayLike(collection) ? collection : values(collection);
-  fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
-
-  var length = collection.length;
-  if (fromIndex < 0) {
-    fromIndex = nativeMax(length + fromIndex, 0);
-  }
-  return isString(collection)
-    ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
-    : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-}
-
-module.exports = includes;
Index: ckend/node_modules/lodash/index.js
===================================================================
--- backend/node_modules/lodash/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./lodash');
Index: ckend/node_modules/lodash/indexOf.js
===================================================================
--- backend/node_modules/lodash/indexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var baseIndexOf = require('./_baseIndexOf'),
-    toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Gets the index at which the first occurrence of `value` is found in `array`
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. If `fromIndex` is negative, it's used as the
- * offset from the end of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=0] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.indexOf([1, 2, 1, 2], 2);
- * // => 1
- *
- * // Search from the `fromIndex`.
- * _.indexOf([1, 2, 1, 2], 2, 2);
- * // => 3
- */
-function indexOf(array, value, fromIndex) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return -1;
-  }
-  var index = fromIndex == null ? 0 : toInteger(fromIndex);
-  if (index < 0) {
-    index = nativeMax(length + index, 0);
-  }
-  return baseIndexOf(array, value, index);
-}
-
-module.exports = indexOf;
Index: ckend/node_modules/lodash/initial.js
===================================================================
--- backend/node_modules/lodash/initial.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Gets all but the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.initial([1, 2, 3]);
- * // => [1, 2]
- */
-function initial(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? baseSlice(array, 0, -1) : [];
-}
-
-module.exports = initial;
Index: ckend/node_modules/lodash/intersection.js
===================================================================
--- backend/node_modules/lodash/intersection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIntersection = require('./_baseIntersection'),
-    baseRest = require('./_baseRest'),
-    castArrayLikeObject = require('./_castArrayLikeObject');
-
-/**
- * Creates an array of unique values that are included in all given arrays
- * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons. The order and references of result values are
- * determined by the first array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersection([2, 1], [2, 3]);
- * // => [2]
- */
-var intersection = baseRest(function(arrays) {
-  var mapped = arrayMap(arrays, castArrayLikeObject);
-  return (mapped.length && mapped[0] === arrays[0])
-    ? baseIntersection(mapped)
-    : [];
-});
-
-module.exports = intersection;
Index: ckend/node_modules/lodash/intersectionBy.js
===================================================================
--- backend/node_modules/lodash/intersectionBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIntersection = require('./_baseIntersection'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    castArrayLikeObject = require('./_castArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.intersection` except that it accepts `iteratee`
- * which is invoked for each element of each `arrays` to generate the criterion
- * by which they're compared. The order and references of result values are
- * determined by the first array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [2.1]
- *
- * // The `_.property` iteratee shorthand.
- * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }]
- */
-var intersectionBy = baseRest(function(arrays) {
-  var iteratee = last(arrays),
-      mapped = arrayMap(arrays, castArrayLikeObject);
-
-  if (iteratee === last(mapped)) {
-    iteratee = undefined;
-  } else {
-    mapped.pop();
-  }
-  return (mapped.length && mapped[0] === arrays[0])
-    ? baseIntersection(mapped, baseIteratee(iteratee, 2))
-    : [];
-});
-
-module.exports = intersectionBy;
Index: ckend/node_modules/lodash/intersectionWith.js
===================================================================
--- backend/node_modules/lodash/intersectionWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIntersection = require('./_baseIntersection'),
-    baseRest = require('./_baseRest'),
-    castArrayLikeObject = require('./_castArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.intersection` except that it accepts `comparator`
- * which is invoked to compare elements of `arrays`. The order and references
- * of result values are determined by the first array. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of intersecting values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.intersectionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }]
- */
-var intersectionWith = baseRest(function(arrays) {
-  var comparator = last(arrays),
-      mapped = arrayMap(arrays, castArrayLikeObject);
-
-  comparator = typeof comparator == 'function' ? comparator : undefined;
-  if (comparator) {
-    mapped.pop();
-  }
-  return (mapped.length && mapped[0] === arrays[0])
-    ? baseIntersection(mapped, undefined, comparator)
-    : [];
-});
-
-module.exports = intersectionWith;
Index: ckend/node_modules/lodash/invert.js
===================================================================
--- backend/node_modules/lodash/invert.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var constant = require('./constant'),
-    createInverter = require('./_createInverter'),
-    identity = require('./identity');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * Creates an object composed of the inverted keys and values of `object`.
- * If `object` contains duplicate values, subsequent values overwrite
- * property assignments of previous values.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Object
- * @param {Object} object The object to invert.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invert(object);
- * // => { '1': 'c', '2': 'b' }
- */
-var invert = createInverter(function(result, value, key) {
-  if (value != null &&
-      typeof value.toString != 'function') {
-    value = nativeObjectToString.call(value);
-  }
-
-  result[value] = key;
-}, constant(identity));
-
-module.exports = invert;
Index: ckend/node_modules/lodash/invertBy.js
===================================================================
--- backend/node_modules/lodash/invertBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    createInverter = require('./_createInverter');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var nativeObjectToString = objectProto.toString;
-
-/**
- * This method is like `_.invert` except that the inverted object is generated
- * from the results of running each element of `object` thru `iteratee`. The
- * corresponding inverted value of each inverted key is an array of keys
- * responsible for generating the inverted value. The iteratee is invoked
- * with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Object
- * @param {Object} object The object to invert.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Object} Returns the new inverted object.
- * @example
- *
- * var object = { 'a': 1, 'b': 2, 'c': 1 };
- *
- * _.invertBy(object);
- * // => { '1': ['a', 'c'], '2': ['b'] }
- *
- * _.invertBy(object, function(value) {
- *   return 'group' + value;
- * });
- * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
- */
-var invertBy = createInverter(function(result, value, key) {
-  if (value != null &&
-      typeof value.toString != 'function') {
-    value = nativeObjectToString.call(value);
-  }
-
-  if (hasOwnProperty.call(result, value)) {
-    result[value].push(key);
-  } else {
-    result[value] = [key];
-  }
-}, baseIteratee);
-
-module.exports = invertBy;
Index: ckend/node_modules/lodash/invoke.js
===================================================================
--- backend/node_modules/lodash/invoke.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var baseInvoke = require('./_baseInvoke'),
-    baseRest = require('./_baseRest');
-
-/**
- * Invokes the method at `path` of `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {*} Returns the result of the invoked method.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
- *
- * _.invoke(object, 'a[0].b.c.slice', 1, 3);
- * // => [2, 3]
- */
-var invoke = baseRest(baseInvoke);
-
-module.exports = invoke;
Index: ckend/node_modules/lodash/invokeMap.js
===================================================================
--- backend/node_modules/lodash/invokeMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var apply = require('./_apply'),
-    baseEach = require('./_baseEach'),
-    baseInvoke = require('./_baseInvoke'),
-    baseRest = require('./_baseRest'),
-    isArrayLike = require('./isArrayLike');
-
-/**
- * Invokes the method at `path` of each element in `collection`, returning
- * an array of the results of each invoked method. Any additional arguments
- * are provided to each invoked method. If `path` is a function, it's invoked
- * for, and `this` bound to, each element in `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array|Function|string} path The path of the method to invoke or
- *  the function invoked per iteration.
- * @param {...*} [args] The arguments to invoke each method with.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
- * // => [[1, 5, 7], [1, 2, 3]]
- *
- * _.invokeMap([123, 456], String.prototype.split, '');
- * // => [['1', '2', '3'], ['4', '5', '6']]
- */
-var invokeMap = baseRest(function(collection, path, args) {
-  var index = -1,
-      isFunc = typeof path == 'function',
-      result = isArrayLike(collection) ? Array(collection.length) : [];
-
-  baseEach(collection, function(value) {
-    result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
-  });
-  return result;
-});
-
-module.exports = invokeMap;
Index: ckend/node_modules/lodash/isArguments.js
===================================================================
--- backend/node_modules/lodash/isArguments.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseIsArguments = require('./_baseIsArguments'),
-    isObjectLike = require('./isObjectLike');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Built-in value references. */
-var propertyIsEnumerable = objectProto.propertyIsEnumerable;
-
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- *  else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-    !propertyIsEnumerable.call(value, 'callee');
-};
-
-module.exports = isArguments;
Index: ckend/node_modules/lodash/isArray.js
===================================================================
--- backend/node_modules/lodash/isArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-module.exports = isArray;
Index: ckend/node_modules/lodash/isArrayBuffer.js
===================================================================
--- backend/node_modules/lodash/isArrayBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsArrayBuffer = require('./_baseIsArrayBuffer'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer;
-
-/**
- * Checks if `value` is classified as an `ArrayBuffer` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
- * @example
- *
- * _.isArrayBuffer(new ArrayBuffer(2));
- * // => true
- *
- * _.isArrayBuffer(new Array(2));
- * // => false
- */
-var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
-
-module.exports = isArrayBuffer;
Index: ckend/node_modules/lodash/isArrayLike.js
===================================================================
--- backend/node_modules/lodash/isArrayLike.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var isFunction = require('./isFunction'),
-    isLength = require('./isLength');
-
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
-  return value != null && isLength(value.length) && !isFunction(value);
-}
-
-module.exports = isArrayLike;
Index: ckend/node_modules/lodash/isArrayLikeObject.js
===================================================================
--- backend/node_modules/lodash/isArrayLikeObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var isArrayLike = require('./isArrayLike'),
-    isObjectLike = require('./isObjectLike');
-
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- *  else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
-  return isObjectLike(value) && isArrayLike(value);
-}
-
-module.exports = isArrayLikeObject;
Index: ckend/node_modules/lodash/isBoolean.js
===================================================================
--- backend/node_modules/lodash/isBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var boolTag = '[object Boolean]';
-
-/**
- * Checks if `value` is classified as a boolean primitive or object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
- * @example
- *
- * _.isBoolean(false);
- * // => true
- *
- * _.isBoolean(null);
- * // => false
- */
-function isBoolean(value) {
-  return value === true || value === false ||
-    (isObjectLike(value) && baseGetTag(value) == boolTag);
-}
-
-module.exports = isBoolean;
Index: ckend/node_modules/lodash/isBuffer.js
===================================================================
--- backend/node_modules/lodash/isBuffer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var root = require('./_root'),
-    stubFalse = require('./stubFalse');
-
-/** Detect free variable `exports`. */
-var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-/** Detect free variable `module`. */
-var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-/** Detect the popular CommonJS extension `module.exports`. */
-var moduleExports = freeModule && freeModule.exports === freeExports;
-
-/** Built-in value references. */
-var Buffer = moduleExports ? root.Buffer : undefined;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
-
-/**
- * Checks if `value` is a buffer.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
- * @example
- *
- * _.isBuffer(new Buffer(2));
- * // => true
- *
- * _.isBuffer(new Uint8Array(2));
- * // => false
- */
-var isBuffer = nativeIsBuffer || stubFalse;
-
-module.exports = isBuffer;
Index: ckend/node_modules/lodash/isDate.js
===================================================================
--- backend/node_modules/lodash/isDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsDate = require('./_baseIsDate'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsDate = nodeUtil && nodeUtil.isDate;
-
-/**
- * Checks if `value` is classified as a `Date` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
- * @example
- *
- * _.isDate(new Date);
- * // => true
- *
- * _.isDate('Mon April 23 2012');
- * // => false
- */
-var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
-
-module.exports = isDate;
Index: ckend/node_modules/lodash/isElement.js
===================================================================
--- backend/node_modules/lodash/isElement.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var isObjectLike = require('./isObjectLike'),
-    isPlainObject = require('./isPlainObject');
-
-/**
- * Checks if `value` is likely a DOM element.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
- * @example
- *
- * _.isElement(document.body);
- * // => true
- *
- * _.isElement('<body>');
- * // => false
- */
-function isElement(value) {
-  return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
-}
-
-module.exports = isElement;
Index: ckend/node_modules/lodash/isEmpty.js
===================================================================
--- backend/node_modules/lodash/isEmpty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,77 +1,0 @@
-var baseKeys = require('./_baseKeys'),
-    getTag = require('./_getTag'),
-    isArguments = require('./isArguments'),
-    isArray = require('./isArray'),
-    isArrayLike = require('./isArrayLike'),
-    isBuffer = require('./isBuffer'),
-    isPrototype = require('./_isPrototype'),
-    isTypedArray = require('./isTypedArray');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Checks if `value` is an empty object, collection, map, or set.
- *
- * Objects are considered empty if they have no own enumerable string keyed
- * properties.
- *
- * Array-like values such as `arguments` objects, arrays, buffers, strings, or
- * jQuery-like collections are considered empty if they have a `length` of `0`.
- * Similarly, maps and sets are considered empty if they have a `size` of `0`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is empty, else `false`.
- * @example
- *
- * _.isEmpty(null);
- * // => true
- *
- * _.isEmpty(true);
- * // => true
- *
- * _.isEmpty(1);
- * // => true
- *
- * _.isEmpty([1, 2, 3]);
- * // => false
- *
- * _.isEmpty({ 'a': 1 });
- * // => false
- */
-function isEmpty(value) {
-  if (value == null) {
-    return true;
-  }
-  if (isArrayLike(value) &&
-      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
-        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
-    return !value.length;
-  }
-  var tag = getTag(value);
-  if (tag == mapTag || tag == setTag) {
-    return !value.size;
-  }
-  if (isPrototype(value)) {
-    return !baseKeys(value).length;
-  }
-  for (var key in value) {
-    if (hasOwnProperty.call(value, key)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-module.exports = isEmpty;
Index: ckend/node_modules/lodash/isEqual.js
===================================================================
--- backend/node_modules/lodash/isEqual.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var baseIsEqual = require('./_baseIsEqual');
-
-/**
- * Performs a deep comparison between two values to determine if they are
- * equivalent.
- *
- * **Note:** This method supports comparing arrays, array buffers, booleans,
- * date objects, error objects, maps, numbers, `Object` objects, regexes,
- * sets, strings, symbols, and typed arrays. `Object` objects are compared
- * by their own, not inherited, enumerable properties. Functions and DOM
- * nodes are compared by strict equality, i.e. `===`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * var object = { 'a': 1 };
- * var other = { 'a': 1 };
- *
- * _.isEqual(object, other);
- * // => true
- *
- * object === other;
- * // => false
- */
-function isEqual(value, other) {
-  return baseIsEqual(value, other);
-}
-
-module.exports = isEqual;
Index: ckend/node_modules/lodash/isEqualWith.js
===================================================================
--- backend/node_modules/lodash/isEqualWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var baseIsEqual = require('./_baseIsEqual');
-
-/**
- * This method is like `_.isEqual` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with up to
- * six arguments: (objValue, othValue [, index|key, object, other, stack]).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
- * @example
- *
- * function isGreeting(value) {
- *   return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, othValue) {
- *   if (isGreeting(objValue) && isGreeting(othValue)) {
- *     return true;
- *   }
- * }
- *
- * var array = ['hello', 'goodbye'];
- * var other = ['hi', 'goodbye'];
- *
- * _.isEqualWith(array, other, customizer);
- * // => true
- */
-function isEqualWith(value, other, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  var result = customizer ? customizer(value, other) : undefined;
-  return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
-}
-
-module.exports = isEqualWith;
Index: ckend/node_modules/lodash/isError.js
===================================================================
--- backend/node_modules/lodash/isError.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike'),
-    isPlainObject = require('./isPlainObject');
-
-/** `Object#toString` result references. */
-var domExcTag = '[object DOMException]',
-    errorTag = '[object Error]';
-
-/**
- * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
- * `SyntaxError`, `TypeError`, or `URIError` object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
- * @example
- *
- * _.isError(new Error);
- * // => true
- *
- * _.isError(Error);
- * // => false
- */
-function isError(value) {
-  if (!isObjectLike(value)) {
-    return false;
-  }
-  var tag = baseGetTag(value);
-  return tag == errorTag || tag == domExcTag ||
-    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
-}
-
-module.exports = isError;
Index: ckend/node_modules/lodash/isFinite.js
===================================================================
--- backend/node_modules/lodash/isFinite.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var root = require('./_root');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeIsFinite = root.isFinite;
-
-/**
- * Checks if `value` is a finite primitive number.
- *
- * **Note:** This method is based on
- * [`Number.isFinite`](https://mdn.io/Number/isFinite).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
- * @example
- *
- * _.isFinite(3);
- * // => true
- *
- * _.isFinite(Number.MIN_VALUE);
- * // => true
- *
- * _.isFinite(Infinity);
- * // => false
- *
- * _.isFinite('3');
- * // => false
- */
-function isFinite(value) {
-  return typeof value == 'number' && nativeIsFinite(value);
-}
-
-module.exports = isFinite;
Index: ckend/node_modules/lodash/isFunction.js
===================================================================
--- backend/node_modules/lodash/isFunction.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObject = require('./isObject');
-
-/** `Object#toString` result references. */
-var asyncTag = '[object AsyncFunction]',
-    funcTag = '[object Function]',
-    genTag = '[object GeneratorFunction]',
-    proxyTag = '[object Proxy]';
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
-  if (!isObject(value)) {
-    return false;
-  }
-  // The use of `Object#toString` avoids issues with the `typeof` operator
-  // in Safari 9 which returns 'object' for typed arrays and other constructors.
-  var tag = baseGetTag(value);
-  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-}
-
-module.exports = isFunction;
Index: ckend/node_modules/lodash/isInteger.js
===================================================================
--- backend/node_modules/lodash/isInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var toInteger = require('./toInteger');
-
-/**
- * Checks if `value` is an integer.
- *
- * **Note:** This method is based on
- * [`Number.isInteger`](https://mdn.io/Number/isInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
- * @example
- *
- * _.isInteger(3);
- * // => true
- *
- * _.isInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isInteger(Infinity);
- * // => false
- *
- * _.isInteger('3');
- * // => false
- */
-function isInteger(value) {
-  return typeof value == 'number' && value == toInteger(value);
-}
-
-module.exports = isInteger;
Index: ckend/node_modules/lodash/isLength.js
===================================================================
--- backend/node_modules/lodash/isLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
-  return typeof value == 'number' &&
-    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isLength;
Index: ckend/node_modules/lodash/isMap.js
===================================================================
--- backend/node_modules/lodash/isMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsMap = require('./_baseIsMap'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsMap = nodeUtil && nodeUtil.isMap;
-
-/**
- * Checks if `value` is classified as a `Map` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a map, else `false`.
- * @example
- *
- * _.isMap(new Map);
- * // => true
- *
- * _.isMap(new WeakMap);
- * // => false
- */
-var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
-
-module.exports = isMap;
Index: ckend/node_modules/lodash/isMatch.js
===================================================================
--- backend/node_modules/lodash/isMatch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
-    getMatchData = require('./_getMatchData');
-
-/**
- * Performs a partial deep comparison between `object` and `source` to
- * determine if `object` contains equivalent property values.
- *
- * **Note:** This method is equivalent to `_.matches` when `source` is
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- *
- * _.isMatch(object, { 'b': 2 });
- * // => true
- *
- * _.isMatch(object, { 'b': 1 });
- * // => false
- */
-function isMatch(object, source) {
-  return object === source || baseIsMatch(object, source, getMatchData(source));
-}
-
-module.exports = isMatch;
Index: ckend/node_modules/lodash/isMatchWith.js
===================================================================
--- backend/node_modules/lodash/isMatchWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var baseIsMatch = require('./_baseIsMatch'),
-    getMatchData = require('./_getMatchData');
-
-/**
- * This method is like `_.isMatch` except that it accepts `customizer` which
- * is invoked to compare values. If `customizer` returns `undefined`, comparisons
- * are handled by the method instead. The `customizer` is invoked with five
- * arguments: (objValue, srcValue, index|key, object, source).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {Object} object The object to inspect.
- * @param {Object} source The object of property values to match.
- * @param {Function} [customizer] The function to customize comparisons.
- * @returns {boolean} Returns `true` if `object` is a match, else `false`.
- * @example
- *
- * function isGreeting(value) {
- *   return /^h(?:i|ello)$/.test(value);
- * }
- *
- * function customizer(objValue, srcValue) {
- *   if (isGreeting(objValue) && isGreeting(srcValue)) {
- *     return true;
- *   }
- * }
- *
- * var object = { 'greeting': 'hello' };
- * var source = { 'greeting': 'hi' };
- *
- * _.isMatchWith(object, source, customizer);
- * // => true
- */
-function isMatchWith(object, source, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  return baseIsMatch(object, source, getMatchData(source), customizer);
-}
-
-module.exports = isMatchWith;
Index: ckend/node_modules/lodash/isNaN.js
===================================================================
--- backend/node_modules/lodash/isNaN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var isNumber = require('./isNumber');
-
-/**
- * Checks if `value` is `NaN`.
- *
- * **Note:** This method is based on
- * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
- * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
- * `undefined` and other non-number values.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
- * @example
- *
- * _.isNaN(NaN);
- * // => true
- *
- * _.isNaN(new Number(NaN));
- * // => true
- *
- * isNaN(undefined);
- * // => true
- *
- * _.isNaN(undefined);
- * // => false
- */
-function isNaN(value) {
-  // An `NaN` primitive is the only value that is not equal to itself.
-  // Perform the `toStringTag` check first to avoid errors with some
-  // ActiveX objects in IE.
-  return isNumber(value) && value != +value;
-}
-
-module.exports = isNaN;
Index: ckend/node_modules/lodash/isNative.js
===================================================================
--- backend/node_modules/lodash/isNative.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var baseIsNative = require('./_baseIsNative'),
-    isMaskable = require('./_isMaskable');
-
-/** Error message constants. */
-var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.';
-
-/**
- * Checks if `value` is a pristine native function.
- *
- * **Note:** This method can't reliably detect native functions in the presence
- * of the core-js package because core-js circumvents this kind of detection.
- * Despite multiple requests, the core-js maintainer has made it clear: any
- * attempt to fix the detection will be obstructed. As a result, we're left
- * with little choice but to throw an error. Unfortunately, this also affects
- * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
- * which rely on core-js.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a native function,
- *  else `false`.
- * @example
- *
- * _.isNative(Array.prototype.push);
- * // => true
- *
- * _.isNative(_);
- * // => false
- */
-function isNative(value) {
-  if (isMaskable(value)) {
-    throw new Error(CORE_ERROR_TEXT);
-  }
-  return baseIsNative(value);
-}
-
-module.exports = isNative;
Index: ckend/node_modules/lodash/isNil.js
===================================================================
--- backend/node_modules/lodash/isNil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-/**
- * Checks if `value` is `null` or `undefined`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
- * @example
- *
- * _.isNil(null);
- * // => true
- *
- * _.isNil(void 0);
- * // => true
- *
- * _.isNil(NaN);
- * // => false
- */
-function isNil(value) {
-  return value == null;
-}
-
-module.exports = isNil;
Index: ckend/node_modules/lodash/isNull.js
===================================================================
--- backend/node_modules/lodash/isNull.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * Checks if `value` is `null`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
- * @example
- *
- * _.isNull(null);
- * // => true
- *
- * _.isNull(void 0);
- * // => false
- */
-function isNull(value) {
-  return value === null;
-}
-
-module.exports = isNull;
Index: ckend/node_modules/lodash/isNumber.js
===================================================================
--- backend/node_modules/lodash/isNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var numberTag = '[object Number]';
-
-/**
- * Checks if `value` is classified as a `Number` primitive or object.
- *
- * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
- * classified as numbers, use the `_.isFinite` method.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a number, else `false`.
- * @example
- *
- * _.isNumber(3);
- * // => true
- *
- * _.isNumber(Number.MIN_VALUE);
- * // => true
- *
- * _.isNumber(Infinity);
- * // => true
- *
- * _.isNumber('3');
- * // => false
- */
-function isNumber(value) {
-  return typeof value == 'number' ||
-    (isObjectLike(value) && baseGetTag(value) == numberTag);
-}
-
-module.exports = isNumber;
Index: ckend/node_modules/lodash/isObject.js
===================================================================
--- backend/node_modules/lodash/isObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
-  var type = typeof value;
-  return value != null && (type == 'object' || type == 'function');
-}
-
-module.exports = isObject;
Index: ckend/node_modules/lodash/isObjectLike.js
===================================================================
--- backend/node_modules/lodash/isObjectLike.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
-  return value != null && typeof value == 'object';
-}
-
-module.exports = isObjectLike;
Index: ckend/node_modules/lodash/isPlainObject.js
===================================================================
--- backend/node_modules/lodash/isPlainObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    getPrototype = require('./_getPrototype'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var objectTag = '[object Object]';
-
-/** Used for built-in method references. */
-var funcProto = Function.prototype,
-    objectProto = Object.prototype;
-
-/** Used to resolve the decompiled source of functions. */
-var funcToString = funcProto.toString;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/** Used to infer the `Object` constructor. */
-var objectCtorString = funcToString.call(Object);
-
-/**
- * Checks if `value` is a plain object, that is, an object created by the
- * `Object` constructor or one with a `[[Prototype]]` of `null`.
- *
- * @static
- * @memberOf _
- * @since 0.8.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- * }
- *
- * _.isPlainObject(new Foo);
- * // => false
- *
- * _.isPlainObject([1, 2, 3]);
- * // => false
- *
- * _.isPlainObject({ 'x': 0, 'y': 0 });
- * // => true
- *
- * _.isPlainObject(Object.create(null));
- * // => true
- */
-function isPlainObject(value) {
-  if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
-    return false;
-  }
-  var proto = getPrototype(value);
-  if (proto === null) {
-    return true;
-  }
-  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
-  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
-    funcToString.call(Ctor) == objectCtorString;
-}
-
-module.exports = isPlainObject;
Index: ckend/node_modules/lodash/isRegExp.js
===================================================================
--- backend/node_modules/lodash/isRegExp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsRegExp = require('./_baseIsRegExp'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;
-
-/**
- * Checks if `value` is classified as a `RegExp` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
- * @example
- *
- * _.isRegExp(/abc/);
- * // => true
- *
- * _.isRegExp('/abc/');
- * // => false
- */
-var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
-
-module.exports = isRegExp;
Index: ckend/node_modules/lodash/isSafeInteger.js
===================================================================
--- backend/node_modules/lodash/isSafeInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var isInteger = require('./isInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
- * double precision number which isn't the result of a rounded unsafe integer.
- *
- * **Note:** This method is based on
- * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
- * @example
- *
- * _.isSafeInteger(3);
- * // => true
- *
- * _.isSafeInteger(Number.MIN_VALUE);
- * // => false
- *
- * _.isSafeInteger(Infinity);
- * // => false
- *
- * _.isSafeInteger('3');
- * // => false
- */
-function isSafeInteger(value) {
-  return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isSafeInteger;
Index: ckend/node_modules/lodash/isSet.js
===================================================================
--- backend/node_modules/lodash/isSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsSet = require('./_baseIsSet'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsSet = nodeUtil && nodeUtil.isSet;
-
-/**
- * Checks if `value` is classified as a `Set` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a set, else `false`.
- * @example
- *
- * _.isSet(new Set);
- * // => true
- *
- * _.isSet(new WeakSet);
- * // => false
- */
-var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
-
-module.exports = isSet;
Index: ckend/node_modules/lodash/isString.js
===================================================================
--- backend/node_modules/lodash/isString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isArray = require('./isArray'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var stringTag = '[object String]';
-
-/**
- * Checks if `value` is classified as a `String` primitive or object.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a string, else `false`.
- * @example
- *
- * _.isString('abc');
- * // => true
- *
- * _.isString(1);
- * // => false
- */
-function isString(value) {
-  return typeof value == 'string' ||
-    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-}
-
-module.exports = isString;
Index: ckend/node_modules/lodash/isSymbol.js
===================================================================
--- backend/node_modules/lodash/isSymbol.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var symbolTag = '[object Symbol]';
-
-/**
- * Checks if `value` is classified as a `Symbol` primitive or object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
- * @example
- *
- * _.isSymbol(Symbol.iterator);
- * // => true
- *
- * _.isSymbol('abc');
- * // => false
- */
-function isSymbol(value) {
-  return typeof value == 'symbol' ||
-    (isObjectLike(value) && baseGetTag(value) == symbolTag);
-}
-
-module.exports = isSymbol;
Index: ckend/node_modules/lodash/isTypedArray.js
===================================================================
--- backend/node_modules/lodash/isTypedArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var baseIsTypedArray = require('./_baseIsTypedArray'),
-    baseUnary = require('./_baseUnary'),
-    nodeUtil = require('./_nodeUtil');
-
-/* Node.js helper references. */
-var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-
-/**
- * Checks if `value` is classified as a typed array.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
- * @example
- *
- * _.isTypedArray(new Uint8Array);
- * // => true
- *
- * _.isTypedArray([]);
- * // => false
- */
-var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-
-module.exports = isTypedArray;
Index: ckend/node_modules/lodash/isUndefined.js
===================================================================
--- backend/node_modules/lodash/isUndefined.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-/**
- * Checks if `value` is `undefined`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
- * @example
- *
- * _.isUndefined(void 0);
- * // => true
- *
- * _.isUndefined(null);
- * // => false
- */
-function isUndefined(value) {
-  return value === undefined;
-}
-
-module.exports = isUndefined;
Index: ckend/node_modules/lodash/isWeakMap.js
===================================================================
--- backend/node_modules/lodash/isWeakMap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var getTag = require('./_getTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var weakMapTag = '[object WeakMap]';
-
-/**
- * Checks if `value` is classified as a `WeakMap` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
- * @example
- *
- * _.isWeakMap(new WeakMap);
- * // => true
- *
- * _.isWeakMap(new Map);
- * // => false
- */
-function isWeakMap(value) {
-  return isObjectLike(value) && getTag(value) == weakMapTag;
-}
-
-module.exports = isWeakMap;
Index: ckend/node_modules/lodash/isWeakSet.js
===================================================================
--- backend/node_modules/lodash/isWeakSet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseGetTag = require('./_baseGetTag'),
-    isObjectLike = require('./isObjectLike');
-
-/** `Object#toString` result references. */
-var weakSetTag = '[object WeakSet]';
-
-/**
- * Checks if `value` is classified as a `WeakSet` object.
- *
- * @static
- * @memberOf _
- * @since 4.3.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
- * @example
- *
- * _.isWeakSet(new WeakSet);
- * // => true
- *
- * _.isWeakSet(new Set);
- * // => false
- */
-function isWeakSet(value) {
-  return isObjectLike(value) && baseGetTag(value) == weakSetTag;
-}
-
-module.exports = isWeakSet;
Index: ckend/node_modules/lodash/iteratee.js
===================================================================
--- backend/node_modules/lodash/iteratee.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-var baseClone = require('./_baseClone'),
-    baseIteratee = require('./_baseIteratee');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that invokes `func` with the arguments of the created
- * function. If `func` is a property name, the created function returns the
- * property value for a given element. If `func` is an array or object, the
- * created function returns `true` for elements that contain the equivalent
- * source properties, otherwise it returns `false`.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Util
- * @param {*} [func=_.identity] The value to convert to a callback.
- * @returns {Function} Returns the callback.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': true },
- *   { 'user': 'fred',   'age': 40, 'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
- * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.filter(users, _.iteratee(['user', 'fred']));
- * // => [{ 'user': 'fred', 'age': 40 }]
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, _.iteratee('user'));
- * // => ['barney', 'fred']
- *
- * // Create custom iteratee shorthands.
- * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
- *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
- *     return func.test(string);
- *   };
- * });
- *
- * _.filter(['abc', 'def'], /ef/);
- * // => ['def']
- */
-function iteratee(func) {
-  return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
-}
-
-module.exports = iteratee;
Index: ckend/node_modules/lodash/join.js
===================================================================
--- backend/node_modules/lodash/join.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeJoin = arrayProto.join;
-
-/**
- * Converts all elements in `array` into a string separated by `separator`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to convert.
- * @param {string} [separator=','] The element separator.
- * @returns {string} Returns the joined string.
- * @example
- *
- * _.join(['a', 'b', 'c'], '~');
- * // => 'a~b~c'
- */
-function join(array, separator) {
-  return array == null ? '' : nativeJoin.call(array, separator);
-}
-
-module.exports = join;
Index: ckend/node_modules/lodash/kebabCase.js
===================================================================
--- backend/node_modules/lodash/kebabCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to
- * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the kebab cased string.
- * @example
- *
- * _.kebabCase('Foo Bar');
- * // => 'foo-bar'
- *
- * _.kebabCase('fooBar');
- * // => 'foo-bar'
- *
- * _.kebabCase('__FOO_BAR__');
- * // => 'foo-bar'
- */
-var kebabCase = createCompounder(function(result, word, index) {
-  return result + (index ? '-' : '') + word.toLowerCase();
-});
-
-module.exports = kebabCase;
Index: ckend/node_modules/lodash/keyBy.js
===================================================================
--- backend/node_modules/lodash/keyBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    createAggregator = require('./_createAggregator');
-
-/**
- * Creates an object composed of keys generated from the results of running
- * each element of `collection` thru `iteratee`. The corresponding value of
- * each key is the last element responsible for generating the key. The
- * iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
- * @returns {Object} Returns the composed aggregate object.
- * @example
- *
- * var array = [
- *   { 'dir': 'left', 'code': 97 },
- *   { 'dir': 'right', 'code': 100 }
- * ];
- *
- * _.keyBy(array, function(o) {
- *   return String.fromCharCode(o.code);
- * });
- * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
- *
- * _.keyBy(array, 'dir');
- * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
- */
-var keyBy = createAggregator(function(result, value, key) {
-  baseAssignValue(result, key, value);
-});
-
-module.exports = keyBy;
Index: ckend/node_modules/lodash/keys.js
===================================================================
--- backend/node_modules/lodash/keys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var arrayLikeKeys = require('./_arrayLikeKeys'),
-    baseKeys = require('./_baseKeys'),
-    isArrayLike = require('./isArrayLike');
-
-/**
- * Creates an array of the own enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects. See the
- * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
- * for more details.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keys(new Foo);
- * // => ['a', 'b'] (iteration order is not guaranteed)
- *
- * _.keys('hi');
- * // => ['0', '1']
- */
-function keys(object) {
-  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-}
-
-module.exports = keys;
Index: ckend/node_modules/lodash/keysIn.js
===================================================================
--- backend/node_modules/lodash/keysIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var arrayLikeKeys = require('./_arrayLikeKeys'),
-    baseKeysIn = require('./_baseKeysIn'),
-    isArrayLike = require('./isArrayLike');
-
-/**
- * Creates an array of the own and inherited enumerable property names of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property names.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.keysIn(new Foo);
- * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
- */
-function keysIn(object) {
-  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-}
-
-module.exports = keysIn;
Index: ckend/node_modules/lodash/lang.js
===================================================================
--- backend/node_modules/lodash/lang.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-module.exports = {
-  'castArray': require('./castArray'),
-  'clone': require('./clone'),
-  'cloneDeep': require('./cloneDeep'),
-  'cloneDeepWith': require('./cloneDeepWith'),
-  'cloneWith': require('./cloneWith'),
-  'conformsTo': require('./conformsTo'),
-  'eq': require('./eq'),
-  'gt': require('./gt'),
-  'gte': require('./gte'),
-  'isArguments': require('./isArguments'),
-  'isArray': require('./isArray'),
-  'isArrayBuffer': require('./isArrayBuffer'),
-  'isArrayLike': require('./isArrayLike'),
-  'isArrayLikeObject': require('./isArrayLikeObject'),
-  'isBoolean': require('./isBoolean'),
-  'isBuffer': require('./isBuffer'),
-  'isDate': require('./isDate'),
-  'isElement': require('./isElement'),
-  'isEmpty': require('./isEmpty'),
-  'isEqual': require('./isEqual'),
-  'isEqualWith': require('./isEqualWith'),
-  'isError': require('./isError'),
-  'isFinite': require('./isFinite'),
-  'isFunction': require('./isFunction'),
-  'isInteger': require('./isInteger'),
-  'isLength': require('./isLength'),
-  'isMap': require('./isMap'),
-  'isMatch': require('./isMatch'),
-  'isMatchWith': require('./isMatchWith'),
-  'isNaN': require('./isNaN'),
-  'isNative': require('./isNative'),
-  'isNil': require('./isNil'),
-  'isNull': require('./isNull'),
-  'isNumber': require('./isNumber'),
-  'isObject': require('./isObject'),
-  'isObjectLike': require('./isObjectLike'),
-  'isPlainObject': require('./isPlainObject'),
-  'isRegExp': require('./isRegExp'),
-  'isSafeInteger': require('./isSafeInteger'),
-  'isSet': require('./isSet'),
-  'isString': require('./isString'),
-  'isSymbol': require('./isSymbol'),
-  'isTypedArray': require('./isTypedArray'),
-  'isUndefined': require('./isUndefined'),
-  'isWeakMap': require('./isWeakMap'),
-  'isWeakSet': require('./isWeakSet'),
-  'lt': require('./lt'),
-  'lte': require('./lte'),
-  'toArray': require('./toArray'),
-  'toFinite': require('./toFinite'),
-  'toInteger': require('./toInteger'),
-  'toLength': require('./toLength'),
-  'toNumber': require('./toNumber'),
-  'toPlainObject': require('./toPlainObject'),
-  'toSafeInteger': require('./toSafeInteger'),
-  'toString': require('./toString')
-};
Index: ckend/node_modules/lodash/last.js
===================================================================
--- backend/node_modules/lodash/last.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-/**
- * Gets the last element of `array`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {*} Returns the last element of `array`.
- * @example
- *
- * _.last([1, 2, 3]);
- * // => 3
- */
-function last(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? array[length - 1] : undefined;
-}
-
-module.exports = last;
Index: ckend/node_modules/lodash/lastIndexOf.js
===================================================================
--- backend/node_modules/lodash/lastIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var baseFindIndex = require('./_baseFindIndex'),
-    baseIsNaN = require('./_baseIsNaN'),
-    strictLastIndexOf = require('./_strictLastIndexOf'),
-    toInteger = require('./toInteger');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max,
-    nativeMin = Math.min;
-
-/**
- * This method is like `_.indexOf` except that it iterates over elements of
- * `array` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @param {number} [fromIndex=array.length-1] The index to search from.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.lastIndexOf([1, 2, 1, 2], 2);
- * // => 3
- *
- * // Search from the `fromIndex`.
- * _.lastIndexOf([1, 2, 1, 2], 2, 2);
- * // => 1
- */
-function lastIndexOf(array, value, fromIndex) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return -1;
-  }
-  var index = length;
-  if (fromIndex !== undefined) {
-    index = toInteger(fromIndex);
-    index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
-  }
-  return value === value
-    ? strictLastIndexOf(array, value, index)
-    : baseFindIndex(array, baseIsNaN, index, true);
-}
-
-module.exports = lastIndexOf;
Index: ckend/node_modules/lodash/lodash.js
===================================================================
--- backend/node_modules/lodash/lodash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17209 +1,0 @@
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-;(function() {
-
-  /** Used as a safe reference for `undefined` in pre-ES5 environments. */
-  var undefined;
-
-  /** Used as the semantic version number. */
-  var VERSION = '4.17.21';
-
-  /** Used as the size to enable large array optimizations. */
-  var LARGE_ARRAY_SIZE = 200;
-
-  /** Error message constants. */
-  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
-      FUNC_ERROR_TEXT = 'Expected a function',
-      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
-
-  /** Used to stand-in for `undefined` hash values. */
-  var HASH_UNDEFINED = '__lodash_hash_undefined__';
-
-  /** Used as the maximum memoize cache size. */
-  var MAX_MEMOIZE_SIZE = 500;
-
-  /** Used as the internal argument placeholder. */
-  var PLACEHOLDER = '__lodash_placeholder__';
-
-  /** Used to compose bitmasks for cloning. */
-  var CLONE_DEEP_FLAG = 1,
-      CLONE_FLAT_FLAG = 2,
-      CLONE_SYMBOLS_FLAG = 4;
-
-  /** Used to compose bitmasks for value comparisons. */
-  var COMPARE_PARTIAL_FLAG = 1,
-      COMPARE_UNORDERED_FLAG = 2;
-
-  /** Used to compose bitmasks for function metadata. */
-  var WRAP_BIND_FLAG = 1,
-      WRAP_BIND_KEY_FLAG = 2,
-      WRAP_CURRY_BOUND_FLAG = 4,
-      WRAP_CURRY_FLAG = 8,
-      WRAP_CURRY_RIGHT_FLAG = 16,
-      WRAP_PARTIAL_FLAG = 32,
-      WRAP_PARTIAL_RIGHT_FLAG = 64,
-      WRAP_ARY_FLAG = 128,
-      WRAP_REARG_FLAG = 256,
-      WRAP_FLIP_FLAG = 512;
-
-  /** Used as default options for `_.truncate`. */
-  var DEFAULT_TRUNC_LENGTH = 30,
-      DEFAULT_TRUNC_OMISSION = '...';
-
-  /** Used to detect hot functions by number of calls within a span of milliseconds. */
-  var HOT_COUNT = 800,
-      HOT_SPAN = 16;
-
-  /** Used to indicate the type of lazy iteratees. */
-  var LAZY_FILTER_FLAG = 1,
-      LAZY_MAP_FLAG = 2,
-      LAZY_WHILE_FLAG = 3;
-
-  /** Used as references for various `Number` constants. */
-  var INFINITY = 1 / 0,
-      MAX_SAFE_INTEGER = 9007199254740991,
-      MAX_INTEGER = 1.7976931348623157e+308,
-      NAN = 0 / 0;
-
-  /** Used as references for the maximum length and index of an array. */
-  var MAX_ARRAY_LENGTH = 4294967295,
-      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,
-      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;
-
-  /** Used to associate wrap methods with their bit flags. */
-  var wrapFlags = [
-    ['ary', WRAP_ARY_FLAG],
-    ['bind', WRAP_BIND_FLAG],
-    ['bindKey', WRAP_BIND_KEY_FLAG],
-    ['curry', WRAP_CURRY_FLAG],
-    ['curryRight', WRAP_CURRY_RIGHT_FLAG],
-    ['flip', WRAP_FLIP_FLAG],
-    ['partial', WRAP_PARTIAL_FLAG],
-    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],
-    ['rearg', WRAP_REARG_FLAG]
-  ];
-
-  /** `Object#toString` result references. */
-  var argsTag = '[object Arguments]',
-      arrayTag = '[object Array]',
-      asyncTag = '[object AsyncFunction]',
-      boolTag = '[object Boolean]',
-      dateTag = '[object Date]',
-      domExcTag = '[object DOMException]',
-      errorTag = '[object Error]',
-      funcTag = '[object Function]',
-      genTag = '[object GeneratorFunction]',
-      mapTag = '[object Map]',
-      numberTag = '[object Number]',
-      nullTag = '[object Null]',
-      objectTag = '[object Object]',
-      promiseTag = '[object Promise]',
-      proxyTag = '[object Proxy]',
-      regexpTag = '[object RegExp]',
-      setTag = '[object Set]',
-      stringTag = '[object String]',
-      symbolTag = '[object Symbol]',
-      undefinedTag = '[object Undefined]',
-      weakMapTag = '[object WeakMap]',
-      weakSetTag = '[object WeakSet]';
-
-  var arrayBufferTag = '[object ArrayBuffer]',
-      dataViewTag = '[object DataView]',
-      float32Tag = '[object Float32Array]',
-      float64Tag = '[object Float64Array]',
-      int8Tag = '[object Int8Array]',
-      int16Tag = '[object Int16Array]',
-      int32Tag = '[object Int32Array]',
-      uint8Tag = '[object Uint8Array]',
-      uint8ClampedTag = '[object Uint8ClampedArray]',
-      uint16Tag = '[object Uint16Array]',
-      uint32Tag = '[object Uint32Array]';
-
-  /** Used to match empty string literals in compiled template source. */
-  var reEmptyStringLeading = /\b__p \+= '';/g,
-      reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
-      reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-
-  /** Used to match HTML entities and HTML characters. */
-  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
-      reUnescapedHtml = /[&<>"']/g,
-      reHasEscapedHtml = RegExp(reEscapedHtml.source),
-      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);
-
-  /** Used to match template delimiters. */
-  var reEscape = /<%-([\s\S]+?)%>/g,
-      reEvaluate = /<%([\s\S]+?)%>/g,
-      reInterpolate = /<%=([\s\S]+?)%>/g;
-
-  /** Used to match property names within property paths. */
-  var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
-      reIsPlainProp = /^\w*$/,
-      rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
-
-  /**
-   * Used to match `RegExp`
-   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
-   */
-  var reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
-      reHasRegExpChar = RegExp(reRegExpChar.source);
-
-  /** Used to match leading whitespace. */
-  var reTrimStart = /^\s+/;
-
-  /** Used to match a single whitespace character. */
-  var reWhitespace = /\s/;
-
-  /** Used to match wrap detail comments. */
-  var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
-      reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/,
-      reSplitDetails = /,? & /;
-
-  /** Used to match words composed of alphanumeric characters. */
-  var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
-
-  /**
-   * Used to validate the `validate` option in `_.template` variable.
-   *
-   * Forbids characters which could potentially change the meaning of the function argument definition:
-   * - "()," (modification of function parameters)
-   * - "=" (default value)
-   * - "[]{}" (destructuring of function parameters)
-   * - "/" (beginning of a comment)
-   * - whitespace
-   */
-  var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
-
-  /** Used to match backslashes in property paths. */
-  var reEscapeChar = /\\(\\)?/g;
-
-  /**
-   * Used to match
-   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
-   */
-  var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-
-  /** Used to match `RegExp` flags from their coerced string values. */
-  var reFlags = /\w*$/;
-
-  /** Used to detect bad signed hexadecimal string values. */
-  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
-  /** Used to detect binary string values. */
-  var reIsBinary = /^0b[01]+$/i;
-
-  /** Used to detect host constructors (Safari). */
-  var reIsHostCtor = /^\[object .+?Constructor\]$/;
-
-  /** Used to detect octal string values. */
-  var reIsOctal = /^0o[0-7]+$/i;
-
-  /** Used to detect unsigned integer values. */
-  var reIsUint = /^(?:0|[1-9]\d*)$/;
-
-  /** Used to match Latin Unicode letters (excluding mathematical operators). */
-  var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
-
-  /** Used to ensure capturing order of template delimiters. */
-  var reNoMatch = /($^)/;
-
-  /** Used to match unescaped characters in compiled string literals. */
-  var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-
-  /** Used to compose unicode character classes. */
-  var rsAstralRange = '\\ud800-\\udfff',
-      rsComboMarksRange = '\\u0300-\\u036f',
-      reComboHalfMarksRange = '\\ufe20-\\ufe2f',
-      rsComboSymbolsRange = '\\u20d0-\\u20ff',
-      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
-      rsDingbatRange = '\\u2700-\\u27bf',
-      rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
-      rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
-      rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
-      rsPunctuationRange = '\\u2000-\\u206f',
-      rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
-      rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
-      rsVarRange = '\\ufe0e\\ufe0f',
-      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
-
-  /** Used to compose unicode capture groups. */
-  var rsApos = "['\u2019]",
-      rsAstral = '[' + rsAstralRange + ']',
-      rsBreak = '[' + rsBreakRange + ']',
-      rsCombo = '[' + rsComboRange + ']',
-      rsDigits = '\\d+',
-      rsDingbat = '[' + rsDingbatRange + ']',
-      rsLower = '[' + rsLowerRange + ']',
-      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
-      rsFitz = '\\ud83c[\\udffb-\\udfff]',
-      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
-      rsNonAstral = '[^' + rsAstralRange + ']',
-      rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
-      rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
-      rsUpper = '[' + rsUpperRange + ']',
-      rsZWJ = '\\u200d';
-
-  /** Used to compose unicode regexes. */
-  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
-      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
-      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
-      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
-      reOptMod = rsModifier + '?',
-      rsOptVar = '[' + rsVarRange + ']?',
-      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
-      rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])',
-      rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])',
-      rsSeq = rsOptVar + reOptMod + rsOptJoin,
-      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
-      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
-
-  /** Used to match apostrophes. */
-  var reApos = RegExp(rsApos, 'g');
-
-  /**
-   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
-   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
-   */
-  var reComboMark = RegExp(rsCombo, 'g');
-
-  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
-  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
-
-  /** Used to match complex or compound words. */
-  var reUnicodeWord = RegExp([
-    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
-    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
-    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
-    rsUpper + '+' + rsOptContrUpper,
-    rsOrdUpper,
-    rsOrdLower,
-    rsDigits,
-    rsEmoji
-  ].join('|'), 'g');
-
-  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
-  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
-
-  /** Used to detect strings that need a more robust regexp to match words. */
-  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
-
-  /** Used to assign default `context` object properties. */
-  var contextProps = [
-    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',
-    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',
-    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',
-    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',
-    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'
-  ];
-
-  /** Used to make template sourceURLs easier to identify. */
-  var templateCounter = -1;
-
-  /** Used to identify `toStringTag` values of typed arrays. */
-  var typedArrayTags = {};
-  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
-  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
-  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
-  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
-  typedArrayTags[uint32Tag] = true;
-  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
-  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
-  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
-  typedArrayTags[errorTag] = typedArrayTags[funcTag] =
-  typedArrayTags[mapTag] = typedArrayTags[numberTag] =
-  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
-  typedArrayTags[setTag] = typedArrayTags[stringTag] =
-  typedArrayTags[weakMapTag] = false;
-
-  /** Used to identify `toStringTag` values supported by `_.clone`. */
-  var cloneableTags = {};
-  cloneableTags[argsTag] = cloneableTags[arrayTag] =
-  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =
-  cloneableTags[boolTag] = cloneableTags[dateTag] =
-  cloneableTags[float32Tag] = cloneableTags[float64Tag] =
-  cloneableTags[int8Tag] = cloneableTags[int16Tag] =
-  cloneableTags[int32Tag] = cloneableTags[mapTag] =
-  cloneableTags[numberTag] = cloneableTags[objectTag] =
-  cloneableTags[regexpTag] = cloneableTags[setTag] =
-  cloneableTags[stringTag] = cloneableTags[symbolTag] =
-  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =
-  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
-  cloneableTags[errorTag] = cloneableTags[funcTag] =
-  cloneableTags[weakMapTag] = false;
-
-  /** Used to map Latin Unicode letters to basic Latin letters. */
-  var deburredLetters = {
-    // Latin-1 Supplement block.
-    '\xc0': 'A',  '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A',
-    '\xe0': 'a',  '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a',
-    '\xc7': 'C',  '\xe7': 'c',
-    '\xd0': 'D',  '\xf0': 'd',
-    '\xc8': 'E',  '\xc9': 'E', '\xca': 'E', '\xcb': 'E',
-    '\xe8': 'e',  '\xe9': 'e', '\xea': 'e', '\xeb': 'e',
-    '\xcc': 'I',  '\xcd': 'I', '\xce': 'I', '\xcf': 'I',
-    '\xec': 'i',  '\xed': 'i', '\xee': 'i', '\xef': 'i',
-    '\xd1': 'N',  '\xf1': 'n',
-    '\xd2': 'O',  '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O',
-    '\xf2': 'o',  '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o',
-    '\xd9': 'U',  '\xda': 'U', '\xdb': 'U', '\xdc': 'U',
-    '\xf9': 'u',  '\xfa': 'u', '\xfb': 'u', '\xfc': 'u',
-    '\xdd': 'Y',  '\xfd': 'y', '\xff': 'y',
-    '\xc6': 'Ae', '\xe6': 'ae',
-    '\xde': 'Th', '\xfe': 'th',
-    '\xdf': 'ss',
-    // Latin Extended-A block.
-    '\u0100': 'A',  '\u0102': 'A', '\u0104': 'A',
-    '\u0101': 'a',  '\u0103': 'a', '\u0105': 'a',
-    '\u0106': 'C',  '\u0108': 'C', '\u010a': 'C', '\u010c': 'C',
-    '\u0107': 'c',  '\u0109': 'c', '\u010b': 'c', '\u010d': 'c',
-    '\u010e': 'D',  '\u0110': 'D', '\u010f': 'd', '\u0111': 'd',
-    '\u0112': 'E',  '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E',
-    '\u0113': 'e',  '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e',
-    '\u011c': 'G',  '\u011e': 'G', '\u0120': 'G', '\u0122': 'G',
-    '\u011d': 'g',  '\u011f': 'g', '\u0121': 'g', '\u0123': 'g',
-    '\u0124': 'H',  '\u0126': 'H', '\u0125': 'h', '\u0127': 'h',
-    '\u0128': 'I',  '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I',
-    '\u0129': 'i',  '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i',
-    '\u0134': 'J',  '\u0135': 'j',
-    '\u0136': 'K',  '\u0137': 'k', '\u0138': 'k',
-    '\u0139': 'L',  '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L',
-    '\u013a': 'l',  '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l',
-    '\u0143': 'N',  '\u0145': 'N', '\u0147': 'N', '\u014a': 'N',
-    '\u0144': 'n',  '\u0146': 'n', '\u0148': 'n', '\u014b': 'n',
-    '\u014c': 'O',  '\u014e': 'O', '\u0150': 'O',
-    '\u014d': 'o',  '\u014f': 'o', '\u0151': 'o',
-    '\u0154': 'R',  '\u0156': 'R', '\u0158': 'R',
-    '\u0155': 'r',  '\u0157': 'r', '\u0159': 'r',
-    '\u015a': 'S',  '\u015c': 'S', '\u015e': 'S', '\u0160': 'S',
-    '\u015b': 's',  '\u015d': 's', '\u015f': 's', '\u0161': 's',
-    '\u0162': 'T',  '\u0164': 'T', '\u0166': 'T',
-    '\u0163': 't',  '\u0165': 't', '\u0167': 't',
-    '\u0168': 'U',  '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U',
-    '\u0169': 'u',  '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u',
-    '\u0174': 'W',  '\u0175': 'w',
-    '\u0176': 'Y',  '\u0177': 'y', '\u0178': 'Y',
-    '\u0179': 'Z',  '\u017b': 'Z', '\u017d': 'Z',
-    '\u017a': 'z',  '\u017c': 'z', '\u017e': 'z',
-    '\u0132': 'IJ', '\u0133': 'ij',
-    '\u0152': 'Oe', '\u0153': 'oe',
-    '\u0149': "'n", '\u017f': 's'
-  };
-
-  /** Used to map characters to HTML entities. */
-  var htmlEscapes = {
-    '&': '&amp;',
-    '<': '&lt;',
-    '>': '&gt;',
-    '"': '&quot;',
-    "'": '&#39;'
-  };
-
-  /** Used to map HTML entities to characters. */
-  var htmlUnescapes = {
-    '&amp;': '&',
-    '&lt;': '<',
-    '&gt;': '>',
-    '&quot;': '"',
-    '&#39;': "'"
-  };
-
-  /** Used to escape characters for inclusion in compiled string literals. */
-  var stringEscapes = {
-    '\\': '\\',
-    "'": "'",
-    '\n': 'n',
-    '\r': 'r',
-    '\u2028': 'u2028',
-    '\u2029': 'u2029'
-  };
-
-  /** Built-in method references without a dependency on `root`. */
-  var freeParseFloat = parseFloat,
-      freeParseInt = parseInt;
-
-  /** Detect free variable `global` from Node.js. */
-  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-  /** Detect free variable `self`. */
-  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-  /** Used as a reference to the global object. */
-  var root = freeGlobal || freeSelf || Function('return this')();
-
-  /** Detect free variable `exports`. */
-  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;
-
-  /** Detect free variable `module`. */
-  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
-
-  /** Detect the popular CommonJS extension `module.exports`. */
-  var moduleExports = freeModule && freeModule.exports === freeExports;
-
-  /** Detect free variable `process` from Node.js. */
-  var freeProcess = moduleExports && freeGlobal.process;
-
-  /** Used to access faster Node.js helpers. */
-  var nodeUtil = (function() {
-    try {
-      // Use `util.types` for Node.js 10+.
-      var types = freeModule && freeModule.require && freeModule.require('util').types;
-
-      if (types) {
-        return types;
-      }
-
-      // Legacy `process.binding('util')` for Node.js < 10.
-      return freeProcess && freeProcess.binding && freeProcess.binding('util');
-    } catch (e) {}
-  }());
-
-  /* Node.js helper references. */
-  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,
-      nodeIsDate = nodeUtil && nodeUtil.isDate,
-      nodeIsMap = nodeUtil && nodeUtil.isMap,
-      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,
-      nodeIsSet = nodeUtil && nodeUtil.isSet,
-      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * A faster alternative to `Function#apply`, this function invokes `func`
-   * with the `this` binding of `thisArg` and the arguments of `args`.
-   *
-   * @private
-   * @param {Function} func The function to invoke.
-   * @param {*} thisArg The `this` binding of `func`.
-   * @param {Array} args The arguments to invoke `func` with.
-   * @returns {*} Returns the result of `func`.
-   */
-  function apply(func, thisArg, args) {
-    switch (args.length) {
-      case 0: return func.call(thisArg);
-      case 1: return func.call(thisArg, args[0]);
-      case 2: return func.call(thisArg, args[0], args[1]);
-      case 3: return func.call(thisArg, args[0], args[1], args[2]);
-    }
-    return func.apply(thisArg, args);
-  }
-
-  /**
-   * A specialized version of `baseAggregator` for arrays.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} setter The function to set `accumulator` values.
-   * @param {Function} iteratee The iteratee to transform keys.
-   * @param {Object} accumulator The initial aggregated object.
-   * @returns {Function} Returns `accumulator`.
-   */
-  function arrayAggregator(array, setter, iteratee, accumulator) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    while (++index < length) {
-      var value = array[index];
-      setter(accumulator, value, iteratee(value), array);
-    }
-    return accumulator;
-  }
-
-  /**
-   * A specialized version of `_.forEach` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayEach(array, iteratee) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    while (++index < length) {
-      if (iteratee(array[index], index, array) === false) {
-        break;
-      }
-    }
-    return array;
-  }
-
-  /**
-   * A specialized version of `_.forEachRight` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayEachRight(array, iteratee) {
-    var length = array == null ? 0 : array.length;
-
-    while (length--) {
-      if (iteratee(array[length], length, array) === false) {
-        break;
-      }
-    }
-    return array;
-  }
-
-  /**
-   * A specialized version of `_.every` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if all elements pass the predicate check,
-   *  else `false`.
-   */
-  function arrayEvery(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    while (++index < length) {
-      if (!predicate(array[index], index, array)) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  /**
-   * A specialized version of `_.filter` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {Array} Returns the new filtered array.
-   */
-  function arrayFilter(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length,
-        resIndex = 0,
-        result = [];
-
-    while (++index < length) {
-      var value = array[index];
-      if (predicate(value, index, array)) {
-        result[resIndex++] = value;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * A specialized version of `_.includes` for arrays without support for
-   * specifying an index to search from.
-   *
-   * @private
-   * @param {Array} [array] The array to inspect.
-   * @param {*} target The value to search for.
-   * @returns {boolean} Returns `true` if `target` is found, else `false`.
-   */
-  function arrayIncludes(array, value) {
-    var length = array == null ? 0 : array.length;
-    return !!length && baseIndexOf(array, value, 0) > -1;
-  }
-
-  /**
-   * This function is like `arrayIncludes` except that it accepts a comparator.
-   *
-   * @private
-   * @param {Array} [array] The array to inspect.
-   * @param {*} target The value to search for.
-   * @param {Function} comparator The comparator invoked per element.
-   * @returns {boolean} Returns `true` if `target` is found, else `false`.
-   */
-  function arrayIncludesWith(array, value, comparator) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    while (++index < length) {
-      if (comparator(value, array[index])) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * A specialized version of `_.map` for arrays without support for iteratee
-   * shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns the new mapped array.
-   */
-  function arrayMap(array, iteratee) {
-    var index = -1,
-        length = array == null ? 0 : array.length,
-        result = Array(length);
-
-    while (++index < length) {
-      result[index] = iteratee(array[index], index, array);
-    }
-    return result;
-  }
-
-  /**
-   * Appends the elements of `values` to `array`.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {Array} values The values to append.
-   * @returns {Array} Returns `array`.
-   */
-  function arrayPush(array, values) {
-    var index = -1,
-        length = values.length,
-        offset = array.length;
-
-    while (++index < length) {
-      array[offset + index] = values[index];
-    }
-    return array;
-  }
-
-  /**
-   * A specialized version of `_.reduce` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} [accumulator] The initial value.
-   * @param {boolean} [initAccum] Specify using the first element of `array` as
-   *  the initial value.
-   * @returns {*} Returns the accumulated value.
-   */
-  function arrayReduce(array, iteratee, accumulator, initAccum) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    if (initAccum && length) {
-      accumulator = array[++index];
-    }
-    while (++index < length) {
-      accumulator = iteratee(accumulator, array[index], index, array);
-    }
-    return accumulator;
-  }
-
-  /**
-   * A specialized version of `_.reduceRight` for arrays without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} [accumulator] The initial value.
-   * @param {boolean} [initAccum] Specify using the last element of `array` as
-   *  the initial value.
-   * @returns {*} Returns the accumulated value.
-   */
-  function arrayReduceRight(array, iteratee, accumulator, initAccum) {
-    var length = array == null ? 0 : array.length;
-    if (initAccum && length) {
-      accumulator = array[--length];
-    }
-    while (length--) {
-      accumulator = iteratee(accumulator, array[length], length, array);
-    }
-    return accumulator;
-  }
-
-  /**
-   * A specialized version of `_.some` for arrays without support for iteratee
-   * shorthands.
-   *
-   * @private
-   * @param {Array} [array] The array to iterate over.
-   * @param {Function} predicate The function invoked per iteration.
-   * @returns {boolean} Returns `true` if any element passes the predicate check,
-   *  else `false`.
-   */
-  function arraySome(array, predicate) {
-    var index = -1,
-        length = array == null ? 0 : array.length;
-
-    while (++index < length) {
-      if (predicate(array[index], index, array)) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  /**
-   * Gets the size of an ASCII `string`.
-   *
-   * @private
-   * @param {string} string The string inspect.
-   * @returns {number} Returns the string size.
-   */
-  var asciiSize = baseProperty('length');
-
-  /**
-   * Converts an ASCII `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function asciiToArray(string) {
-    return string.split('');
-  }
-
-  /**
-   * Splits an ASCII `string` into an array of its words.
-   *
-   * @private
-   * @param {string} The string to inspect.
-   * @returns {Array} Returns the words of `string`.
-   */
-  function asciiWords(string) {
-    return string.match(reAsciiWord) || [];
-  }
-
-  /**
-   * The base implementation of methods like `_.findKey` and `_.findLastKey`,
-   * without support for iteratee shorthands, which iterates over `collection`
-   * using `eachFunc`.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to inspect.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {Function} eachFunc The function to iterate over `collection`.
-   * @returns {*} Returns the found element or its key, else `undefined`.
-   */
-  function baseFindKey(collection, predicate, eachFunc) {
-    var result;
-    eachFunc(collection, function(value, key, collection) {
-      if (predicate(value, key, collection)) {
-        result = key;
-        return false;
-      }
-    });
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.findIndex` and `_.findLastIndex` without
-   * support for iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {Function} predicate The function invoked per iteration.
-   * @param {number} fromIndex The index to search from.
-   * @param {boolean} [fromRight] Specify iterating from right to left.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseFindIndex(array, predicate, fromIndex, fromRight) {
-    var length = array.length,
-        index = fromIndex + (fromRight ? 1 : -1);
-
-    while ((fromRight ? index-- : ++index < length)) {
-      if (predicate(array[index], index, array)) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseIndexOf(array, value, fromIndex) {
-    return value === value
-      ? strictIndexOf(array, value, fromIndex)
-      : baseFindIndex(array, baseIsNaN, fromIndex);
-  }
-
-  /**
-   * This function is like `baseIndexOf` except that it accepts a comparator.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @param {Function} comparator The comparator invoked per element.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function baseIndexOfWith(array, value, fromIndex, comparator) {
-    var index = fromIndex - 1,
-        length = array.length;
-
-    while (++index < length) {
-      if (comparator(array[index], value)) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * The base implementation of `_.isNaN` without support for number objects.
-   *
-   * @private
-   * @param {*} value The value to check.
-   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-   */
-  function baseIsNaN(value) {
-    return value !== value;
-  }
-
-  /**
-   * The base implementation of `_.mean` and `_.meanBy` without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {number} Returns the mean.
-   */
-  function baseMean(array, iteratee) {
-    var length = array == null ? 0 : array.length;
-    return length ? (baseSum(array, iteratee) / length) : NAN;
-  }
-
-  /**
-   * The base implementation of `_.property` without support for deep paths.
-   *
-   * @private
-   * @param {string} key The key of the property to get.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function baseProperty(key) {
-    return function(object) {
-      return object == null ? undefined : object[key];
-    };
-  }
-
-  /**
-   * The base implementation of `_.propertyOf` without support for deep paths.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @returns {Function} Returns the new accessor function.
-   */
-  function basePropertyOf(object) {
-    return function(key) {
-      return object == null ? undefined : object[key];
-    };
-  }
-
-  /**
-   * The base implementation of `_.reduce` and `_.reduceRight`, without support
-   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
-   *
-   * @private
-   * @param {Array|Object} collection The collection to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @param {*} accumulator The initial value.
-   * @param {boolean} initAccum Specify using the first or last element of
-   *  `collection` as the initial value.
-   * @param {Function} eachFunc The function to iterate over `collection`.
-   * @returns {*} Returns the accumulated value.
-   */
-  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
-    eachFunc(collection, function(value, index, collection) {
-      accumulator = initAccum
-        ? (initAccum = false, value)
-        : iteratee(accumulator, value, index, collection);
-    });
-    return accumulator;
-  }
-
-  /**
-   * The base implementation of `_.sortBy` which uses `comparer` to define the
-   * sort order of `array` and replaces criteria objects with their corresponding
-   * values.
-   *
-   * @private
-   * @param {Array} array The array to sort.
-   * @param {Function} comparer The function to define sort order.
-   * @returns {Array} Returns `array`.
-   */
-  function baseSortBy(array, comparer) {
-    var length = array.length;
-
-    array.sort(comparer);
-    while (length--) {
-      array[length] = array[length].value;
-    }
-    return array;
-  }
-
-  /**
-   * The base implementation of `_.sum` and `_.sumBy` without support for
-   * iteratee shorthands.
-   *
-   * @private
-   * @param {Array} array The array to iterate over.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {number} Returns the sum.
-   */
-  function baseSum(array, iteratee) {
-    var result,
-        index = -1,
-        length = array.length;
-
-    while (++index < length) {
-      var current = iteratee(array[index]);
-      if (current !== undefined) {
-        result = result === undefined ? current : (result + current);
-      }
-    }
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.times` without support for iteratee shorthands
-   * or max array length checks.
-   *
-   * @private
-   * @param {number} n The number of times to invoke `iteratee`.
-   * @param {Function} iteratee The function invoked per iteration.
-   * @returns {Array} Returns the array of results.
-   */
-  function baseTimes(n, iteratee) {
-    var index = -1,
-        result = Array(n);
-
-    while (++index < n) {
-      result[index] = iteratee(index);
-    }
-    return result;
-  }
-
-  /**
-   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array
-   * of key-value pairs for `object` corresponding to the property names of `props`.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @param {Array} props The property names to get values for.
-   * @returns {Object} Returns the key-value pairs.
-   */
-  function baseToPairs(object, props) {
-    return arrayMap(props, function(key) {
-      return [key, object[key]];
-    });
-  }
-
-  /**
-   * The base implementation of `_.trim`.
-   *
-   * @private
-   * @param {string} string The string to trim.
-   * @returns {string} Returns the trimmed string.
-   */
-  function baseTrim(string) {
-    return string
-      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
-      : string;
-  }
-
-  /**
-   * The base implementation of `_.unary` without support for storing metadata.
-   *
-   * @private
-   * @param {Function} func The function to cap arguments for.
-   * @returns {Function} Returns the new capped function.
-   */
-  function baseUnary(func) {
-    return function(value) {
-      return func(value);
-    };
-  }
-
-  /**
-   * The base implementation of `_.values` and `_.valuesIn` which creates an
-   * array of `object` property values corresponding to the property names
-   * of `props`.
-   *
-   * @private
-   * @param {Object} object The object to query.
-   * @param {Array} props The property names to get values for.
-   * @returns {Object} Returns the array of property values.
-   */
-  function baseValues(object, props) {
-    return arrayMap(props, function(key) {
-      return object[key];
-    });
-  }
-
-  /**
-   * Checks if a `cache` value for `key` exists.
-   *
-   * @private
-   * @param {Object} cache The cache to query.
-   * @param {string} key The key of the entry to check.
-   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-   */
-  function cacheHas(cache, key) {
-    return cache.has(key);
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol
-   * that is not found in the character symbols.
-   *
-   * @private
-   * @param {Array} strSymbols The string symbols to inspect.
-   * @param {Array} chrSymbols The character symbols to find.
-   * @returns {number} Returns the index of the first unmatched string symbol.
-   */
-  function charsStartIndex(strSymbols, chrSymbols) {
-    var index = -1,
-        length = strSymbols.length;
-
-    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol
-   * that is not found in the character symbols.
-   *
-   * @private
-   * @param {Array} strSymbols The string symbols to inspect.
-   * @param {Array} chrSymbols The character symbols to find.
-   * @returns {number} Returns the index of the last unmatched string symbol.
-   */
-  function charsEndIndex(strSymbols, chrSymbols) {
-    var index = strSymbols.length;
-
-    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}
-    return index;
-  }
-
-  /**
-   * Gets the number of `placeholder` occurrences in `array`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} placeholder The placeholder to search for.
-   * @returns {number} Returns the placeholder count.
-   */
-  function countHolders(array, placeholder) {
-    var length = array.length,
-        result = 0;
-
-    while (length--) {
-      if (array[length] === placeholder) {
-        ++result;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A
-   * letters to basic Latin letters.
-   *
-   * @private
-   * @param {string} letter The matched letter to deburr.
-   * @returns {string} Returns the deburred letter.
-   */
-  var deburrLetter = basePropertyOf(deburredLetters);
-
-  /**
-   * Used by `_.escape` to convert characters to HTML entities.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  var escapeHtmlChar = basePropertyOf(htmlEscapes);
-
-  /**
-   * Used by `_.template` to escape characters for inclusion in compiled string literals.
-   *
-   * @private
-   * @param {string} chr The matched character to escape.
-   * @returns {string} Returns the escaped character.
-   */
-  function escapeStringChar(chr) {
-    return '\\' + stringEscapes[chr];
-  }
-
-  /**
-   * Gets the value at `key` of `object`.
-   *
-   * @private
-   * @param {Object} [object] The object to query.
-   * @param {string} key The key of the property to get.
-   * @returns {*} Returns the property value.
-   */
-  function getValue(object, key) {
-    return object == null ? undefined : object[key];
-  }
-
-  /**
-   * Checks if `string` contains Unicode symbols.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {boolean} Returns `true` if a symbol is found, else `false`.
-   */
-  function hasUnicode(string) {
-    return reHasUnicode.test(string);
-  }
-
-  /**
-   * Checks if `string` contains a word composed of Unicode symbols.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {boolean} Returns `true` if a word is found, else `false`.
-   */
-  function hasUnicodeWord(string) {
-    return reHasUnicodeWord.test(string);
-  }
-
-  /**
-   * Converts `iterator` to an array.
-   *
-   * @private
-   * @param {Object} iterator The iterator to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function iteratorToArray(iterator) {
-    var data,
-        result = [];
-
-    while (!(data = iterator.next()).done) {
-      result.push(data.value);
-    }
-    return result;
-  }
-
-  /**
-   * Converts `map` to its key-value pairs.
-   *
-   * @private
-   * @param {Object} map The map to convert.
-   * @returns {Array} Returns the key-value pairs.
-   */
-  function mapToArray(map) {
-    var index = -1,
-        result = Array(map.size);
-
-    map.forEach(function(value, key) {
-      result[++index] = [key, value];
-    });
-    return result;
-  }
-
-  /**
-   * Creates a unary function that invokes `func` with its argument transformed.
-   *
-   * @private
-   * @param {Function} func The function to wrap.
-   * @param {Function} transform The argument transform.
-   * @returns {Function} Returns the new function.
-   */
-  function overArg(func, transform) {
-    return function(arg) {
-      return func(transform(arg));
-    };
-  }
-
-  /**
-   * Replaces all `placeholder` elements in `array` with an internal placeholder
-   * and returns an array of their indexes.
-   *
-   * @private
-   * @param {Array} array The array to modify.
-   * @param {*} placeholder The placeholder to replace.
-   * @returns {Array} Returns the new array of placeholder indexes.
-   */
-  function replaceHolders(array, placeholder) {
-    var index = -1,
-        length = array.length,
-        resIndex = 0,
-        result = [];
-
-    while (++index < length) {
-      var value = array[index];
-      if (value === placeholder || value === PLACEHOLDER) {
-        array[index] = PLACEHOLDER;
-        result[resIndex++] = index;
-      }
-    }
-    return result;
-  }
-
-  /**
-   * Converts `set` to an array of its values.
-   *
-   * @private
-   * @param {Object} set The set to convert.
-   * @returns {Array} Returns the values.
-   */
-  function setToArray(set) {
-    var index = -1,
-        result = Array(set.size);
-
-    set.forEach(function(value) {
-      result[++index] = value;
-    });
-    return result;
-  }
-
-  /**
-   * Converts `set` to its value-value pairs.
-   *
-   * @private
-   * @param {Object} set The set to convert.
-   * @returns {Array} Returns the value-value pairs.
-   */
-  function setToPairs(set) {
-    var index = -1,
-        result = Array(set.size);
-
-    set.forEach(function(value) {
-      result[++index] = [value, value];
-    });
-    return result;
-  }
-
-  /**
-   * A specialized version of `_.indexOf` which performs strict equality
-   * comparisons of values, i.e. `===`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function strictIndexOf(array, value, fromIndex) {
-    var index = fromIndex - 1,
-        length = array.length;
-
-    while (++index < length) {
-      if (array[index] === value) {
-        return index;
-      }
-    }
-    return -1;
-  }
-
-  /**
-   * A specialized version of `_.lastIndexOf` which performs strict equality
-   * comparisons of values, i.e. `===`.
-   *
-   * @private
-   * @param {Array} array The array to inspect.
-   * @param {*} value The value to search for.
-   * @param {number} fromIndex The index to search from.
-   * @returns {number} Returns the index of the matched value, else `-1`.
-   */
-  function strictLastIndexOf(array, value, fromIndex) {
-    var index = fromIndex + 1;
-    while (index--) {
-      if (array[index] === value) {
-        return index;
-      }
-    }
-    return index;
-  }
-
-  /**
-   * Gets the number of symbols in `string`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {number} Returns the string size.
-   */
-  function stringSize(string) {
-    return hasUnicode(string)
-      ? unicodeSize(string)
-      : asciiSize(string);
-  }
-
-  /**
-   * Converts `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function stringToArray(string) {
-    return hasUnicode(string)
-      ? unicodeToArray(string)
-      : asciiToArray(string);
-  }
-
-  /**
-   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
-   * character of `string`.
-   *
-   * @private
-   * @param {string} string The string to inspect.
-   * @returns {number} Returns the index of the last non-whitespace character.
-   */
-  function trimmedEndIndex(string) {
-    var index = string.length;
-
-    while (index-- && reWhitespace.test(string.charAt(index))) {}
-    return index;
-  }
-
-  /**
-   * Used by `_.unescape` to convert HTML entities to characters.
-   *
-   * @private
-   * @param {string} chr The matched character to unescape.
-   * @returns {string} Returns the unescaped character.
-   */
-  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);
-
-  /**
-   * Gets the size of a Unicode `string`.
-   *
-   * @private
-   * @param {string} string The string inspect.
-   * @returns {number} Returns the string size.
-   */
-  function unicodeSize(string) {
-    var result = reUnicode.lastIndex = 0;
-    while (reUnicode.test(string)) {
-      ++result;
-    }
-    return result;
-  }
-
-  /**
-   * Converts a Unicode `string` to an array.
-   *
-   * @private
-   * @param {string} string The string to convert.
-   * @returns {Array} Returns the converted array.
-   */
-  function unicodeToArray(string) {
-    return string.match(reUnicode) || [];
-  }
-
-  /**
-   * Splits a Unicode `string` into an array of its words.
-   *
-   * @private
-   * @param {string} The string to inspect.
-   * @returns {Array} Returns the words of `string`.
-   */
-  function unicodeWords(string) {
-    return string.match(reUnicodeWord) || [];
-  }
-
-  /*--------------------------------------------------------------------------*/
-
-  /**
-   * Create a new pristine `lodash` function using the `context` object.
-   *
-   * @static
-   * @memberOf _
-   * @since 1.1.0
-   * @category Util
-   * @param {Object} [context=root] The context object.
-   * @returns {Function} Returns a new `lodash` function.
-   * @example
-   *
-   * _.mixin({ 'foo': _.constant('foo') });
-   *
-   * var lodash = _.runInContext();
-   * lodash.mixin({ 'bar': lodash.constant('bar') });
-   *
-   * _.isFunction(_.foo);
-   * // => true
-   * _.isFunction(_.bar);
-   * // => false
-   *
-   * lodash.isFunction(lodash.foo);
-   * // => false
-   * lodash.isFunction(lodash.bar);
-   * // => true
-   *
-   * // Create a suped-up `defer` in Node.js.
-   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;
-   */
-  var runInContext = (function runInContext(context) {
-    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));
-
-    /** Built-in constructor references. */
-    var Array = context.Array,
-        Date = context.Date,
-        Error = context.Error,
-        Function = context.Function,
-        Math = context.Math,
-        Object = context.Object,
-        RegExp = context.RegExp,
-        String = context.String,
-        TypeError = context.TypeError;
-
-    /** Used for built-in method references. */
-    var arrayProto = Array.prototype,
-        funcProto = Function.prototype,
-        objectProto = Object.prototype;
-
-    /** Used to detect overreaching core-js shims. */
-    var coreJsData = context['__core-js_shared__'];
-
-    /** Used to resolve the decompiled source of functions. */
-    var funcToString = funcProto.toString;
-
-    /** Used to check objects for own properties. */
-    var hasOwnProperty = objectProto.hasOwnProperty;
-
-    /** Used to generate unique IDs. */
-    var idCounter = 0;
-
-    /** Used to detect methods masquerading as native. */
-    var maskSrcKey = (function() {
-      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
-      return uid ? ('Symbol(src)_1.' + uid) : '';
-    }());
-
-    /**
-     * Used to resolve the
-     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
-     * of values.
-     */
-    var nativeObjectToString = objectProto.toString;
-
-    /** Used to infer the `Object` constructor. */
-    var objectCtorString = funcToString.call(Object);
-
-    /** Used to restore the original `_` reference in `_.noConflict`. */
-    var oldDash = root._;
-
-    /** Used to detect if a method is native. */
-    var reIsNative = RegExp('^' +
-      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
-      .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
-    );
-
-    /** Built-in value references. */
-    var Buffer = moduleExports ? context.Buffer : undefined,
-        Symbol = context.Symbol,
-        Uint8Array = context.Uint8Array,
-        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,
-        getPrototype = overArg(Object.getPrototypeOf, Object),
-        objectCreate = Object.create,
-        propertyIsEnumerable = objectProto.propertyIsEnumerable,
-        splice = arrayProto.splice,
-        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,
-        symIterator = Symbol ? Symbol.iterator : undefined,
-        symToStringTag = Symbol ? Symbol.toStringTag : undefined;
-
-    var defineProperty = (function() {
-      try {
-        var func = getNative(Object, 'defineProperty');
-        func({}, '', {});
-        return func;
-      } catch (e) {}
-    }());
-
-    /** Mocked built-ins. */
-    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,
-        ctxNow = Date && Date.now !== root.Date.now && Date.now,
-        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;
-
-    /* Built-in method references for those with the same name as other `lodash` methods. */
-    var nativeCeil = Math.ceil,
-        nativeFloor = Math.floor,
-        nativeGetSymbols = Object.getOwnPropertySymbols,
-        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,
-        nativeIsFinite = context.isFinite,
-        nativeJoin = arrayProto.join,
-        nativeKeys = overArg(Object.keys, Object),
-        nativeMax = Math.max,
-        nativeMin = Math.min,
-        nativeNow = Date.now,
-        nativeParseInt = context.parseInt,
-        nativeRandom = Math.random,
-        nativeReverse = arrayProto.reverse;
-
-    /* Built-in method references that are verified to be native. */
-    var DataView = getNative(context, 'DataView'),
-        Map = getNative(context, 'Map'),
-        Promise = getNative(context, 'Promise'),
-        Set = getNative(context, 'Set'),
-        WeakMap = getNative(context, 'WeakMap'),
-        nativeCreate = getNative(Object, 'create');
-
-    /** Used to store function metadata. */
-    var metaMap = WeakMap && new WeakMap;
-
-    /** Used to lookup unminified function names. */
-    var realNames = {};
-
-    /** Used to detect maps, sets, and weakmaps. */
-    var dataViewCtorString = toSource(DataView),
-        mapCtorString = toSource(Map),
-        promiseCtorString = toSource(Promise),
-        setCtorString = toSource(Set),
-        weakMapCtorString = toSource(WeakMap);
-
-    /** Used to convert symbols to primitives and strings. */
-    var symbolProto = Symbol ? Symbol.prototype : undefined,
-        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
-        symbolToString = symbolProto ? symbolProto.toString : undefined;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a `lodash` object which wraps `value` to enable implicit method
-     * chain sequences. Methods that operate on and return arrays, collections,
-     * and functions can be chained together. Methods that retrieve a single value
-     * or may return a primitive value will automatically end the chain sequence
-     * and return the unwrapped value. Otherwise, the value must be unwrapped
-     * with `_#value`.
-     *
-     * Explicit chain sequences, which must be unwrapped with `_#value`, may be
-     * enabled using `_.chain`.
-     *
-     * The execution of chained methods is lazy, that is, it's deferred until
-     * `_#value` is implicitly or explicitly called.
-     *
-     * Lazy evaluation allows several methods to support shortcut fusion.
-     * Shortcut fusion is an optimization to merge iteratee calls; this avoids
-     * the creation of intermediate arrays and can greatly reduce the number of
-     * iteratee executions. Sections of a chain sequence qualify for shortcut
-     * fusion if the section is applied to an array and iteratees accept only
-     * one argument. The heuristic for whether a section qualifies for shortcut
-     * fusion is subject to change.
-     *
-     * Chaining is supported in custom builds as long as the `_#value` method is
-     * directly or indirectly included in the build.
-     *
-     * In addition to lodash methods, wrappers have `Array` and `String` methods.
-     *
-     * The wrapper `Array` methods are:
-     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
-     *
-     * The wrapper `String` methods are:
-     * `replace` and `split`
-     *
-     * The wrapper methods that support shortcut fusion are:
-     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
-     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
-     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
-     *
-     * The chainable wrapper methods are:
-     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
-     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
-     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
-     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
-     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
-     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
-     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
-     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
-     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
-     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
-     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
-     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
-     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
-     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
-     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
-     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
-     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
-     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
-     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
-     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
-     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
-     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
-     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
-     * `zipObject`, `zipObjectDeep`, and `zipWith`
-     *
-     * The wrapper methods that are **not** chainable by default are:
-     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
-     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
-     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
-     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
-     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
-     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
-     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
-     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
-     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
-     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
-     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
-     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
-     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
-     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
-     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
-     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
-     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
-     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
-     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
-     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
-     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
-     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
-     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
-     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
-     * `upperFirst`, `value`, and `words`
-     *
-     * @name _
-     * @constructor
-     * @category Seq
-     * @param {*} value The value to wrap in a `lodash` instance.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var wrapped = _([1, 2, 3]);
-     *
-     * // Returns an unwrapped value.
-     * wrapped.reduce(_.add);
-     * // => 6
-     *
-     * // Returns a wrapped value.
-     * var squares = wrapped.map(square);
-     *
-     * _.isArray(squares);
-     * // => false
-     *
-     * _.isArray(squares.value());
-     * // => true
-     */
-    function lodash(value) {
-      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-        if (value instanceof LodashWrapper) {
-          return value;
-        }
-        if (hasOwnProperty.call(value, '__wrapped__')) {
-          return wrapperClone(value);
-        }
-      }
-      return new LodashWrapper(value);
-    }
-
-    /**
-     * The base implementation of `_.create` without support for assigning
-     * properties to the created object.
-     *
-     * @private
-     * @param {Object} proto The object to inherit from.
-     * @returns {Object} Returns the new object.
-     */
-    var baseCreate = (function() {
-      function object() {}
-      return function(proto) {
-        if (!isObject(proto)) {
-          return {};
-        }
-        if (objectCreate) {
-          return objectCreate(proto);
-        }
-        object.prototype = proto;
-        var result = new object;
-        object.prototype = undefined;
-        return result;
-      };
-    }());
-
-    /**
-     * The function whose prototype chain sequence wrappers inherit from.
-     *
-     * @private
-     */
-    function baseLodash() {
-      // No operation performed.
-    }
-
-    /**
-     * The base constructor for creating `lodash` wrapper objects.
-     *
-     * @private
-     * @param {*} value The value to wrap.
-     * @param {boolean} [chainAll] Enable explicit method chain sequences.
-     */
-    function LodashWrapper(value, chainAll) {
-      this.__wrapped__ = value;
-      this.__actions__ = [];
-      this.__chain__ = !!chainAll;
-      this.__index__ = 0;
-      this.__values__ = undefined;
-    }
-
-    /**
-     * By default, the template delimiters used by lodash are like those in
-     * embedded Ruby (ERB) as well as ES2015 template strings. Change the
-     * following template settings to use alternative delimiters.
-     *
-     * @static
-     * @memberOf _
-     * @type {Object}
-     */
-    lodash.templateSettings = {
-
-      /**
-       * Used to detect `data` property values to be HTML-escaped.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'escape': reEscape,
-
-      /**
-       * Used to detect code to be evaluated.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'evaluate': reEvaluate,
-
-      /**
-       * Used to detect `data` property values to inject.
-       *
-       * @memberOf _.templateSettings
-       * @type {RegExp}
-       */
-      'interpolate': reInterpolate,
-
-      /**
-       * Used to reference the data object in the template text.
-       *
-       * @memberOf _.templateSettings
-       * @type {string}
-       */
-      'variable': '',
-
-      /**
-       * Used to import variables into the compiled template.
-       *
-       * @memberOf _.templateSettings
-       * @type {Object}
-       */
-      'imports': {
-
-        /**
-         * A reference to the `lodash` function.
-         *
-         * @memberOf _.templateSettings.imports
-         * @type {Function}
-         */
-        '_': lodash
-      }
-    };
-
-    // Ensure wrappers are instances of `baseLodash`.
-    lodash.prototype = baseLodash.prototype;
-    lodash.prototype.constructor = lodash;
-
-    LodashWrapper.prototype = baseCreate(baseLodash.prototype);
-    LodashWrapper.prototype.constructor = LodashWrapper;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
-     *
-     * @private
-     * @constructor
-     * @param {*} value The value to wrap.
-     */
-    function LazyWrapper(value) {
-      this.__wrapped__ = value;
-      this.__actions__ = [];
-      this.__dir__ = 1;
-      this.__filtered__ = false;
-      this.__iteratees__ = [];
-      this.__takeCount__ = MAX_ARRAY_LENGTH;
-      this.__views__ = [];
-    }
-
-    /**
-     * Creates a clone of the lazy wrapper object.
-     *
-     * @private
-     * @name clone
-     * @memberOf LazyWrapper
-     * @returns {Object} Returns the cloned `LazyWrapper` object.
-     */
-    function lazyClone() {
-      var result = new LazyWrapper(this.__wrapped__);
-      result.__actions__ = copyArray(this.__actions__);
-      result.__dir__ = this.__dir__;
-      result.__filtered__ = this.__filtered__;
-      result.__iteratees__ = copyArray(this.__iteratees__);
-      result.__takeCount__ = this.__takeCount__;
-      result.__views__ = copyArray(this.__views__);
-      return result;
-    }
-
-    /**
-     * Reverses the direction of lazy iteration.
-     *
-     * @private
-     * @name reverse
-     * @memberOf LazyWrapper
-     * @returns {Object} Returns the new reversed `LazyWrapper` object.
-     */
-    function lazyReverse() {
-      if (this.__filtered__) {
-        var result = new LazyWrapper(this);
-        result.__dir__ = -1;
-        result.__filtered__ = true;
-      } else {
-        result = this.clone();
-        result.__dir__ *= -1;
-      }
-      return result;
-    }
-
-    /**
-     * Extracts the unwrapped value from its lazy wrapper.
-     *
-     * @private
-     * @name value
-     * @memberOf LazyWrapper
-     * @returns {*} Returns the unwrapped value.
-     */
-    function lazyValue() {
-      var array = this.__wrapped__.value(),
-          dir = this.__dir__,
-          isArr = isArray(array),
-          isRight = dir < 0,
-          arrLength = isArr ? array.length : 0,
-          view = getView(0, arrLength, this.__views__),
-          start = view.start,
-          end = view.end,
-          length = end - start,
-          index = isRight ? end : (start - 1),
-          iteratees = this.__iteratees__,
-          iterLength = iteratees.length,
-          resIndex = 0,
-          takeCount = nativeMin(length, this.__takeCount__);
-
-      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {
-        return baseWrapperValue(array, this.__actions__);
-      }
-      var result = [];
-
-      outer:
-      while (length-- && resIndex < takeCount) {
-        index += dir;
-
-        var iterIndex = -1,
-            value = array[index];
-
-        while (++iterIndex < iterLength) {
-          var data = iteratees[iterIndex],
-              iteratee = data.iteratee,
-              type = data.type,
-              computed = iteratee(value);
-
-          if (type == LAZY_MAP_FLAG) {
-            value = computed;
-          } else if (!computed) {
-            if (type == LAZY_FILTER_FLAG) {
-              continue outer;
-            } else {
-              break outer;
-            }
-          }
-        }
-        result[resIndex++] = value;
-      }
-      return result;
-    }
-
-    // Ensure `LazyWrapper` is an instance of `baseLodash`.
-    LazyWrapper.prototype = baseCreate(baseLodash.prototype);
-    LazyWrapper.prototype.constructor = LazyWrapper;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a hash object.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function Hash(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
-
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
-
-    /**
-     * Removes all key-value entries from the hash.
-     *
-     * @private
-     * @name clear
-     * @memberOf Hash
-     */
-    function hashClear() {
-      this.__data__ = nativeCreate ? nativeCreate(null) : {};
-      this.size = 0;
-    }
-
-    /**
-     * Removes `key` and its value from the hash.
-     *
-     * @private
-     * @name delete
-     * @memberOf Hash
-     * @param {Object} hash The hash to modify.
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function hashDelete(key) {
-      var result = this.has(key) && delete this.__data__[key];
-      this.size -= result ? 1 : 0;
-      return result;
-    }
-
-    /**
-     * Gets the hash value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf Hash
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function hashGet(key) {
-      var data = this.__data__;
-      if (nativeCreate) {
-        var result = data[key];
-        return result === HASH_UNDEFINED ? undefined : result;
-      }
-      return hasOwnProperty.call(data, key) ? data[key] : undefined;
-    }
-
-    /**
-     * Checks if a hash value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf Hash
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function hashHas(key) {
-      var data = this.__data__;
-      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
-    }
-
-    /**
-     * Sets the hash `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf Hash
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the hash instance.
-     */
-    function hashSet(key, value) {
-      var data = this.__data__;
-      this.size += this.has(key) ? 0 : 1;
-      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
-      return this;
-    }
-
-    // Add methods to `Hash`.
-    Hash.prototype.clear = hashClear;
-    Hash.prototype['delete'] = hashDelete;
-    Hash.prototype.get = hashGet;
-    Hash.prototype.has = hashHas;
-    Hash.prototype.set = hashSet;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates an list cache object.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function ListCache(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
-
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
-
-    /**
-     * Removes all key-value entries from the list cache.
-     *
-     * @private
-     * @name clear
-     * @memberOf ListCache
-     */
-    function listCacheClear() {
-      this.__data__ = [];
-      this.size = 0;
-    }
-
-    /**
-     * Removes `key` and its value from the list cache.
-     *
-     * @private
-     * @name delete
-     * @memberOf ListCache
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function listCacheDelete(key) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
-
-      if (index < 0) {
-        return false;
-      }
-      var lastIndex = data.length - 1;
-      if (index == lastIndex) {
-        data.pop();
-      } else {
-        splice.call(data, index, 1);
-      }
-      --this.size;
-      return true;
-    }
-
-    /**
-     * Gets the list cache value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf ListCache
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function listCacheGet(key) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
-
-      return index < 0 ? undefined : data[index][1];
-    }
-
-    /**
-     * Checks if a list cache value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf ListCache
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function listCacheHas(key) {
-      return assocIndexOf(this.__data__, key) > -1;
-    }
-
-    /**
-     * Sets the list cache `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf ListCache
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the list cache instance.
-     */
-    function listCacheSet(key, value) {
-      var data = this.__data__,
-          index = assocIndexOf(data, key);
-
-      if (index < 0) {
-        ++this.size;
-        data.push([key, value]);
-      } else {
-        data[index][1] = value;
-      }
-      return this;
-    }
-
-    // Add methods to `ListCache`.
-    ListCache.prototype.clear = listCacheClear;
-    ListCache.prototype['delete'] = listCacheDelete;
-    ListCache.prototype.get = listCacheGet;
-    ListCache.prototype.has = listCacheHas;
-    ListCache.prototype.set = listCacheSet;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a map cache object to store key-value pairs.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function MapCache(entries) {
-      var index = -1,
-          length = entries == null ? 0 : entries.length;
-
-      this.clear();
-      while (++index < length) {
-        var entry = entries[index];
-        this.set(entry[0], entry[1]);
-      }
-    }
-
-    /**
-     * Removes all key-value entries from the map.
-     *
-     * @private
-     * @name clear
-     * @memberOf MapCache
-     */
-    function mapCacheClear() {
-      this.size = 0;
-      this.__data__ = {
-        'hash': new Hash,
-        'map': new (Map || ListCache),
-        'string': new Hash
-      };
-    }
-
-    /**
-     * Removes `key` and its value from the map.
-     *
-     * @private
-     * @name delete
-     * @memberOf MapCache
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function mapCacheDelete(key) {
-      var result = getMapData(this, key)['delete'](key);
-      this.size -= result ? 1 : 0;
-      return result;
-    }
-
-    /**
-     * Gets the map value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf MapCache
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function mapCacheGet(key) {
-      return getMapData(this, key).get(key);
-    }
-
-    /**
-     * Checks if a map value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf MapCache
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function mapCacheHas(key) {
-      return getMapData(this, key).has(key);
-    }
-
-    /**
-     * Sets the map `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf MapCache
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the map cache instance.
-     */
-    function mapCacheSet(key, value) {
-      var data = getMapData(this, key),
-          size = data.size;
-
-      data.set(key, value);
-      this.size += data.size == size ? 0 : 1;
-      return this;
-    }
-
-    // Add methods to `MapCache`.
-    MapCache.prototype.clear = mapCacheClear;
-    MapCache.prototype['delete'] = mapCacheDelete;
-    MapCache.prototype.get = mapCacheGet;
-    MapCache.prototype.has = mapCacheHas;
-    MapCache.prototype.set = mapCacheSet;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     *
-     * Creates an array cache object to store unique values.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [values] The values to cache.
-     */
-    function SetCache(values) {
-      var index = -1,
-          length = values == null ? 0 : values.length;
-
-      this.__data__ = new MapCache;
-      while (++index < length) {
-        this.add(values[index]);
-      }
-    }
-
-    /**
-     * Adds `value` to the array cache.
-     *
-     * @private
-     * @name add
-     * @memberOf SetCache
-     * @alias push
-     * @param {*} value The value to cache.
-     * @returns {Object} Returns the cache instance.
-     */
-    function setCacheAdd(value) {
-      this.__data__.set(value, HASH_UNDEFINED);
-      return this;
-    }
-
-    /**
-     * Checks if `value` is in the array cache.
-     *
-     * @private
-     * @name has
-     * @memberOf SetCache
-     * @param {*} value The value to search for.
-     * @returns {number} Returns `true` if `value` is found, else `false`.
-     */
-    function setCacheHas(value) {
-      return this.__data__.has(value);
-    }
-
-    // Add methods to `SetCache`.
-    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
-    SetCache.prototype.has = setCacheHas;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a stack cache object to store key-value pairs.
-     *
-     * @private
-     * @constructor
-     * @param {Array} [entries] The key-value pairs to cache.
-     */
-    function Stack(entries) {
-      var data = this.__data__ = new ListCache(entries);
-      this.size = data.size;
-    }
-
-    /**
-     * Removes all key-value entries from the stack.
-     *
-     * @private
-     * @name clear
-     * @memberOf Stack
-     */
-    function stackClear() {
-      this.__data__ = new ListCache;
-      this.size = 0;
-    }
-
-    /**
-     * Removes `key` and its value from the stack.
-     *
-     * @private
-     * @name delete
-     * @memberOf Stack
-     * @param {string} key The key of the value to remove.
-     * @returns {boolean} Returns `true` if the entry was removed, else `false`.
-     */
-    function stackDelete(key) {
-      var data = this.__data__,
-          result = data['delete'](key);
-
-      this.size = data.size;
-      return result;
-    }
-
-    /**
-     * Gets the stack value for `key`.
-     *
-     * @private
-     * @name get
-     * @memberOf Stack
-     * @param {string} key The key of the value to get.
-     * @returns {*} Returns the entry value.
-     */
-    function stackGet(key) {
-      return this.__data__.get(key);
-    }
-
-    /**
-     * Checks if a stack value for `key` exists.
-     *
-     * @private
-     * @name has
-     * @memberOf Stack
-     * @param {string} key The key of the entry to check.
-     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
-     */
-    function stackHas(key) {
-      return this.__data__.has(key);
-    }
-
-    /**
-     * Sets the stack `key` to `value`.
-     *
-     * @private
-     * @name set
-     * @memberOf Stack
-     * @param {string} key The key of the value to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns the stack cache instance.
-     */
-    function stackSet(key, value) {
-      var data = this.__data__;
-      if (data instanceof ListCache) {
-        var pairs = data.__data__;
-        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
-          pairs.push([key, value]);
-          this.size = ++data.size;
-          return this;
-        }
-        data = this.__data__ = new MapCache(pairs);
-      }
-      data.set(key, value);
-      this.size = data.size;
-      return this;
-    }
-
-    // Add methods to `Stack`.
-    Stack.prototype.clear = stackClear;
-    Stack.prototype['delete'] = stackDelete;
-    Stack.prototype.get = stackGet;
-    Stack.prototype.has = stackHas;
-    Stack.prototype.set = stackSet;
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates an array of the enumerable property names of the array-like `value`.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @param {boolean} inherited Specify returning inherited property names.
-     * @returns {Array} Returns the array of property names.
-     */
-    function arrayLikeKeys(value, inherited) {
-      var isArr = isArray(value),
-          isArg = !isArr && isArguments(value),
-          isBuff = !isArr && !isArg && isBuffer(value),
-          isType = !isArr && !isArg && !isBuff && isTypedArray(value),
-          skipIndexes = isArr || isArg || isBuff || isType,
-          result = skipIndexes ? baseTimes(value.length, String) : [],
-          length = result.length;
-
-      for (var key in value) {
-        if ((inherited || hasOwnProperty.call(value, key)) &&
-            !(skipIndexes && (
-               // Safari 9 has enumerable `arguments.length` in strict mode.
-               key == 'length' ||
-               // Node.js 0.10 has enumerable non-index properties on buffers.
-               (isBuff && (key == 'offset' || key == 'parent')) ||
-               // PhantomJS 2 has enumerable non-index properties on typed arrays.
-               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
-               // Skip index properties.
-               isIndex(key, length)
-            ))) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * A specialized version of `_.sample` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to sample.
-     * @returns {*} Returns the random element.
-     */
-    function arraySample(array) {
-      var length = array.length;
-      return length ? array[baseRandom(0, length - 1)] : undefined;
-    }
-
-    /**
-     * A specialized version of `_.sampleSize` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to sample.
-     * @param {number} n The number of elements to sample.
-     * @returns {Array} Returns the random elements.
-     */
-    function arraySampleSize(array, n) {
-      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));
-    }
-
-    /**
-     * A specialized version of `_.shuffle` for arrays.
-     *
-     * @private
-     * @param {Array} array The array to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     */
-    function arrayShuffle(array) {
-      return shuffleSelf(copyArray(array));
-    }
-
-    /**
-     * This function is like `assignValue` except that it doesn't assign
-     * `undefined` values.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function assignMergeValue(object, key, value) {
-      if ((value !== undefined && !eq(object[key], value)) ||
-          (value === undefined && !(key in object))) {
-        baseAssignValue(object, key, value);
-      }
-    }
-
-    /**
-     * Assigns `value` to `key` of `object` if the existing value is not equivalent
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function assignValue(object, key, value) {
-      var objValue = object[key];
-      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
-          (value === undefined && !(key in object))) {
-        baseAssignValue(object, key, value);
-      }
-    }
-
-    /**
-     * Gets the index at which the `key` is found in `array` of key-value pairs.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {*} key The key to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     */
-    function assocIndexOf(array, key) {
-      var length = array.length;
-      while (length--) {
-        if (eq(array[length][0], key)) {
-          return length;
-        }
-      }
-      return -1;
-    }
-
-    /**
-     * Aggregates elements of `collection` on `accumulator` with keys transformed
-     * by `iteratee` and values set by `setter`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} setter The function to set `accumulator` values.
-     * @param {Function} iteratee The iteratee to transform keys.
-     * @param {Object} accumulator The initial aggregated object.
-     * @returns {Function} Returns `accumulator`.
-     */
-    function baseAggregator(collection, setter, iteratee, accumulator) {
-      baseEach(collection, function(value, key, collection) {
-        setter(accumulator, value, iteratee(value), collection);
-      });
-      return accumulator;
-    }
-
-    /**
-     * The base implementation of `_.assign` without support for multiple sources
-     * or `customizer` functions.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @returns {Object} Returns `object`.
-     */
-    function baseAssign(object, source) {
-      return object && copyObject(source, keys(source), object);
-    }
-
-    /**
-     * The base implementation of `_.assignIn` without support for multiple sources
-     * or `customizer` functions.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @returns {Object} Returns `object`.
-     */
-    function baseAssignIn(object, source) {
-      return object && copyObject(source, keysIn(source), object);
-    }
-
-    /**
-     * The base implementation of `assignValue` and `assignMergeValue` without
-     * value checks.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {string} key The key of the property to assign.
-     * @param {*} value The value to assign.
-     */
-    function baseAssignValue(object, key, value) {
-      if (key == '__proto__' && defineProperty) {
-        defineProperty(object, key, {
-          'configurable': true,
-          'enumerable': true,
-          'value': value,
-          'writable': true
-        });
-      } else {
-        object[key] = value;
-      }
-    }
-
-    /**
-     * The base implementation of `_.at` without support for individual paths.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {string[]} paths The property paths to pick.
-     * @returns {Array} Returns the picked elements.
-     */
-    function baseAt(object, paths) {
-      var index = -1,
-          length = paths.length,
-          result = Array(length),
-          skip = object == null;
-
-      while (++index < length) {
-        result[index] = skip ? undefined : get(object, paths[index]);
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.clamp` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {number} number The number to clamp.
-     * @param {number} [lower] The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the clamped number.
-     */
-    function baseClamp(number, lower, upper) {
-      if (number === number) {
-        if (upper !== undefined) {
-          number = number <= upper ? number : upper;
-        }
-        if (lower !== undefined) {
-          number = number >= lower ? number : lower;
-        }
-      }
-      return number;
-    }
-
-    /**
-     * The base implementation of `_.clone` and `_.cloneDeep` which tracks
-     * traversed objects.
-     *
-     * @private
-     * @param {*} value The value to clone.
-     * @param {boolean} bitmask The bitmask flags.
-     *  1 - Deep clone
-     *  2 - Flatten inherited properties
-     *  4 - Clone symbols
-     * @param {Function} [customizer] The function to customize cloning.
-     * @param {string} [key] The key of `value`.
-     * @param {Object} [object] The parent object of `value`.
-     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.
-     * @returns {*} Returns the cloned value.
-     */
-    function baseClone(value, bitmask, customizer, key, object, stack) {
-      var result,
-          isDeep = bitmask & CLONE_DEEP_FLAG,
-          isFlat = bitmask & CLONE_FLAT_FLAG,
-          isFull = bitmask & CLONE_SYMBOLS_FLAG;
-
-      if (customizer) {
-        result = object ? customizer(value, key, object, stack) : customizer(value);
-      }
-      if (result !== undefined) {
-        return result;
-      }
-      if (!isObject(value)) {
-        return value;
-      }
-      var isArr = isArray(value);
-      if (isArr) {
-        result = initCloneArray(value);
-        if (!isDeep) {
-          return copyArray(value, result);
-        }
-      } else {
-        var tag = getTag(value),
-            isFunc = tag == funcTag || tag == genTag;
-
-        if (isBuffer(value)) {
-          return cloneBuffer(value, isDeep);
-        }
-        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {
-          result = (isFlat || isFunc) ? {} : initCloneObject(value);
-          if (!isDeep) {
-            return isFlat
-              ? copySymbolsIn(value, baseAssignIn(result, value))
-              : copySymbols(value, baseAssign(result, value));
-          }
-        } else {
-          if (!cloneableTags[tag]) {
-            return object ? value : {};
-          }
-          result = initCloneByTag(value, tag, isDeep);
-        }
-      }
-      // Check for circular references and return its corresponding clone.
-      stack || (stack = new Stack);
-      var stacked = stack.get(value);
-      if (stacked) {
-        return stacked;
-      }
-      stack.set(value, result);
-
-      if (isSet(value)) {
-        value.forEach(function(subValue) {
-          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
-        });
-      } else if (isMap(value)) {
-        value.forEach(function(subValue, key) {
-          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));
-        });
-      }
-
-      var keysFunc = isFull
-        ? (isFlat ? getAllKeysIn : getAllKeys)
-        : (isFlat ? keysIn : keys);
-
-      var props = isArr ? undefined : keysFunc(value);
-      arrayEach(props || value, function(subValue, key) {
-        if (props) {
-          key = subValue;
-          subValue = value[key];
-        }
-        // Recursively populate clone (susceptible to call stack limits).
-        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));
-      });
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.conforms` which doesn't clone `source`.
-     *
-     * @private
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseConforms(source) {
-      var props = keys(source);
-      return function(object) {
-        return baseConformsTo(object, source, props);
-      };
-    }
-
-    /**
-     * The base implementation of `_.conformsTo` which accepts `props` to check.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-     */
-    function baseConformsTo(object, source, props) {
-      var length = props.length;
-      if (object == null) {
-        return !length;
-      }
-      object = Object(object);
-      while (length--) {
-        var key = props[length],
-            predicate = source[key],
-            value = object[key];
-
-        if ((value === undefined && !(key in object)) || !predicate(value)) {
-          return false;
-        }
-      }
-      return true;
-    }
-
-    /**
-     * The base implementation of `_.delay` and `_.defer` which accepts `args`
-     * to provide to `func`.
-     *
-     * @private
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @param {Array} args The arguments to provide to `func`.
-     * @returns {number|Object} Returns the timer id or timeout object.
-     */
-    function baseDelay(func, wait, args) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      return setTimeout(function() { func.apply(undefined, args); }, wait);
-    }
-
-    /**
-     * The base implementation of methods like `_.difference` without support
-     * for excluding multiple arrays or iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Array} values The values to exclude.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     */
-    function baseDifference(array, values, iteratee, comparator) {
-      var index = -1,
-          includes = arrayIncludes,
-          isCommon = true,
-          length = array.length,
-          result = [],
-          valuesLength = values.length;
-
-      if (!length) {
-        return result;
-      }
-      if (iteratee) {
-        values = arrayMap(values, baseUnary(iteratee));
-      }
-      if (comparator) {
-        includes = arrayIncludesWith;
-        isCommon = false;
-      }
-      else if (values.length >= LARGE_ARRAY_SIZE) {
-        includes = cacheHas;
-        isCommon = false;
-        values = new SetCache(values);
-      }
-      outer:
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee == null ? value : iteratee(value);
-
-        value = (comparator || value !== 0) ? value : 0;
-        if (isCommon && computed === computed) {
-          var valuesIndex = valuesLength;
-          while (valuesIndex--) {
-            if (values[valuesIndex] === computed) {
-              continue outer;
-            }
-          }
-          result.push(value);
-        }
-        else if (!includes(values, computed, comparator)) {
-          result.push(value);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.forEach` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     */
-    var baseEach = createBaseEach(baseForOwn);
-
-    /**
-     * The base implementation of `_.forEachRight` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     */
-    var baseEachRight = createBaseEach(baseForOwnRight, true);
-
-    /**
-     * The base implementation of `_.every` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if all elements pass the predicate check,
-     *  else `false`
-     */
-    function baseEvery(collection, predicate) {
-      var result = true;
-      baseEach(collection, function(value, index, collection) {
-        result = !!predicate(value, index, collection);
-        return result;
-      });
-      return result;
-    }
-
-    /**
-     * The base implementation of methods like `_.max` and `_.min` which accepts a
-     * `comparator` to determine the extremum value.
-     *
-     * @private
-     * @param {Array} array The array to iterate over.
-     * @param {Function} iteratee The iteratee invoked per iteration.
-     * @param {Function} comparator The comparator used to compare values.
-     * @returns {*} Returns the extremum value.
-     */
-    function baseExtremum(array, iteratee, comparator) {
-      var index = -1,
-          length = array.length;
-
-      while (++index < length) {
-        var value = array[index],
-            current = iteratee(value);
-
-        if (current != null && (computed === undefined
-              ? (current === current && !isSymbol(current))
-              : comparator(current, computed)
-            )) {
-          var computed = current,
-              result = value;
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.fill` without an iteratee call guard.
-     *
-     * @private
-     * @param {Array} array The array to fill.
-     * @param {*} value The value to fill `array` with.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns `array`.
-     */
-    function baseFill(array, value, start, end) {
-      var length = array.length;
-
-      start = toInteger(start);
-      if (start < 0) {
-        start = -start > length ? 0 : (length + start);
-      }
-      end = (end === undefined || end > length) ? length : toInteger(end);
-      if (end < 0) {
-        end += length;
-      }
-      end = start > end ? 0 : toLength(end);
-      while (start < end) {
-        array[start++] = value;
-      }
-      return array;
-    }
-
-    /**
-     * The base implementation of `_.filter` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     */
-    function baseFilter(collection, predicate) {
-      var result = [];
-      baseEach(collection, function(value, index, collection) {
-        if (predicate(value, index, collection)) {
-          result.push(value);
-        }
-      });
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.flatten` with support for restricting flattening.
-     *
-     * @private
-     * @param {Array} array The array to flatten.
-     * @param {number} depth The maximum recursion depth.
-     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
-     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
-     * @param {Array} [result=[]] The initial result value.
-     * @returns {Array} Returns the new flattened array.
-     */
-    function baseFlatten(array, depth, predicate, isStrict, result) {
-      var index = -1,
-          length = array.length;
-
-      predicate || (predicate = isFlattenable);
-      result || (result = []);
-
-      while (++index < length) {
-        var value = array[index];
-        if (depth > 0 && predicate(value)) {
-          if (depth > 1) {
-            // Recursively flatten arrays (susceptible to call stack limits).
-            baseFlatten(value, depth - 1, predicate, isStrict, result);
-          } else {
-            arrayPush(result, value);
-          }
-        } else if (!isStrict) {
-          result[result.length] = value;
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `baseForOwn` which iterates over `object`
-     * properties returned by `keysFunc` and invokes `iteratee` for each property.
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @returns {Object} Returns `object`.
-     */
-    var baseFor = createBaseFor();
-
-    /**
-     * This function is like `baseFor` except that it iterates over properties
-     * in the opposite order.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @returns {Object} Returns `object`.
-     */
-    var baseForRight = createBaseFor(true);
-
-    /**
-     * The base implementation of `_.forOwn` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     */
-    function baseForOwn(object, iteratee) {
-      return object && baseFor(object, iteratee, keys);
-    }
-
-    /**
-     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     */
-    function baseForOwnRight(object, iteratee) {
-      return object && baseForRight(object, iteratee, keys);
-    }
-
-    /**
-     * The base implementation of `_.functions` which creates an array of
-     * `object` function property names filtered from `props`.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Array} props The property names to filter.
-     * @returns {Array} Returns the function names.
-     */
-    function baseFunctions(object, props) {
-      return arrayFilter(props, function(key) {
-        return isFunction(object[key]);
-      });
-    }
-
-    /**
-     * The base implementation of `_.get` without support for default values.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to get.
-     * @returns {*} Returns the resolved value.
-     */
-    function baseGet(object, path) {
-      path = castPath(path, object);
-
-      var index = 0,
-          length = path.length;
-
-      while (object != null && index < length) {
-        object = object[toKey(path[index++])];
-      }
-      return (index && index == length) ? object : undefined;
-    }
-
-    /**
-     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
-     * `keysFunc` and `symbolsFunc` to get the enumerable property names and
-     * symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Function} keysFunc The function to get the keys of `object`.
-     * @param {Function} symbolsFunc The function to get the symbols of `object`.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function baseGetAllKeys(object, keysFunc, symbolsFunc) {
-      var result = keysFunc(object);
-      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
-    }
-
-    /**
-     * The base implementation of `getTag` without fallbacks for buggy environments.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the `toStringTag`.
-     */
-    function baseGetTag(value) {
-      if (value == null) {
-        return value === undefined ? undefinedTag : nullTag;
-      }
-      return (symToStringTag && symToStringTag in Object(value))
-        ? getRawTag(value)
-        : objectToString(value);
-    }
-
-    /**
-     * The base implementation of `_.gt` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than `other`,
-     *  else `false`.
-     */
-    function baseGt(value, other) {
-      return value > other;
-    }
-
-    /**
-     * The base implementation of `_.has` without support for deep paths.
-     *
-     * @private
-     * @param {Object} [object] The object to query.
-     * @param {Array|string} key The key to check.
-     * @returns {boolean} Returns `true` if `key` exists, else `false`.
-     */
-    function baseHas(object, key) {
-      return object != null && hasOwnProperty.call(object, key);
-    }
-
-    /**
-     * The base implementation of `_.hasIn` without support for deep paths.
-     *
-     * @private
-     * @param {Object} [object] The object to query.
-     * @param {Array|string} key The key to check.
-     * @returns {boolean} Returns `true` if `key` exists, else `false`.
-     */
-    function baseHasIn(object, key) {
-      return object != null && key in Object(object);
-    }
-
-    /**
-     * The base implementation of `_.inRange` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {number} number The number to check.
-     * @param {number} start The start of the range.
-     * @param {number} end The end of the range.
-     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-     */
-    function baseInRange(number, start, end) {
-      return number >= nativeMin(start, end) && number < nativeMax(start, end);
-    }
-
-    /**
-     * The base implementation of methods like `_.intersection`, without support
-     * for iteratee shorthands, that accepts an array of arrays to inspect.
-     *
-     * @private
-     * @param {Array} arrays The arrays to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of shared values.
-     */
-    function baseIntersection(arrays, iteratee, comparator) {
-      var includes = comparator ? arrayIncludesWith : arrayIncludes,
-          length = arrays[0].length,
-          othLength = arrays.length,
-          othIndex = othLength,
-          caches = Array(othLength),
-          maxLength = Infinity,
-          result = [];
-
-      while (othIndex--) {
-        var array = arrays[othIndex];
-        if (othIndex && iteratee) {
-          array = arrayMap(array, baseUnary(iteratee));
-        }
-        maxLength = nativeMin(array.length, maxLength);
-        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))
-          ? new SetCache(othIndex && array)
-          : undefined;
-      }
-      array = arrays[0];
-
-      var index = -1,
-          seen = caches[0];
-
-      outer:
-      while (++index < length && result.length < maxLength) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
-
-        value = (comparator || value !== 0) ? value : 0;
-        if (!(seen
-              ? cacheHas(seen, computed)
-              : includes(result, computed, comparator)
-            )) {
-          othIndex = othLength;
-          while (--othIndex) {
-            var cache = caches[othIndex];
-            if (!(cache
-                  ? cacheHas(cache, computed)
-                  : includes(arrays[othIndex], computed, comparator))
-                ) {
-              continue outer;
-            }
-          }
-          if (seen) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.invert` and `_.invertBy` which inverts
-     * `object` with values transformed by `iteratee` and set by `setter`.
-     *
-     * @private
-     * @param {Object} object The object to iterate over.
-     * @param {Function} setter The function to set `accumulator` values.
-     * @param {Function} iteratee The iteratee to transform values.
-     * @param {Object} accumulator The initial inverted object.
-     * @returns {Function} Returns `accumulator`.
-     */
-    function baseInverter(object, setter, iteratee, accumulator) {
-      baseForOwn(object, function(value, key, object) {
-        setter(accumulator, iteratee(value), key, object);
-      });
-      return accumulator;
-    }
-
-    /**
-     * The base implementation of `_.invoke` without support for individual
-     * method arguments.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {Array} args The arguments to invoke the method with.
-     * @returns {*} Returns the result of the invoked method.
-     */
-    function baseInvoke(object, path, args) {
-      path = castPath(path, object);
-      object = parent(object, path);
-      var func = object == null ? object : object[toKey(last(path))];
-      return func == null ? undefined : apply(func, object, args);
-    }
-
-    /**
-     * The base implementation of `_.isArguments`.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-     */
-    function baseIsArguments(value) {
-      return isObjectLike(value) && baseGetTag(value) == argsTag;
-    }
-
-    /**
-     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-     */
-    function baseIsArrayBuffer(value) {
-      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;
-    }
-
-    /**
-     * The base implementation of `_.isDate` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-     */
-    function baseIsDate(value) {
-      return isObjectLike(value) && baseGetTag(value) == dateTag;
-    }
-
-    /**
-     * The base implementation of `_.isEqual` which supports partial comparisons
-     * and tracks traversed objects.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @param {boolean} bitmask The bitmask flags.
-     *  1 - Unordered comparison
-     *  2 - Partial comparison
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @param {Object} [stack] Tracks traversed `value` and `other` objects.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     */
-    function baseIsEqual(value, other, bitmask, customizer, stack) {
-      if (value === other) {
-        return true;
-      }
-      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
-        return value !== value && other !== other;
-      }
-      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
-    }
-
-    /**
-     * A specialized version of `baseIsEqual` for arrays and objects which performs
-     * deep comparisons and tracks traversed objects enabling objects with circular
-     * references to be compared.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} [stack] Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
-      var objIsArr = isArray(object),
-          othIsArr = isArray(other),
-          objTag = objIsArr ? arrayTag : getTag(object),
-          othTag = othIsArr ? arrayTag : getTag(other);
-
-      objTag = objTag == argsTag ? objectTag : objTag;
-      othTag = othTag == argsTag ? objectTag : othTag;
-
-      var objIsObj = objTag == objectTag,
-          othIsObj = othTag == objectTag,
-          isSameTag = objTag == othTag;
-
-      if (isSameTag && isBuffer(object)) {
-        if (!isBuffer(other)) {
-          return false;
-        }
-        objIsArr = true;
-        objIsObj = false;
-      }
-      if (isSameTag && !objIsObj) {
-        stack || (stack = new Stack);
-        return (objIsArr || isTypedArray(object))
-          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
-          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
-      }
-      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
-        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
-            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
-
-        if (objIsWrapped || othIsWrapped) {
-          var objUnwrapped = objIsWrapped ? object.value() : object,
-              othUnwrapped = othIsWrapped ? other.value() : other;
-
-          stack || (stack = new Stack);
-          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
-        }
-      }
-      if (!isSameTag) {
-        return false;
-      }
-      stack || (stack = new Stack);
-      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
-    }
-
-    /**
-     * The base implementation of `_.isMap` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-     */
-    function baseIsMap(value) {
-      return isObjectLike(value) && getTag(value) == mapTag;
-    }
-
-    /**
-     * The base implementation of `_.isMatch` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @param {Array} matchData The property names, values, and compare flags to match.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     */
-    function baseIsMatch(object, source, matchData, customizer) {
-      var index = matchData.length,
-          length = index,
-          noCustomizer = !customizer;
-
-      if (object == null) {
-        return !length;
-      }
-      object = Object(object);
-      while (index--) {
-        var data = matchData[index];
-        if ((noCustomizer && data[2])
-              ? data[1] !== object[data[0]]
-              : !(data[0] in object)
-            ) {
-          return false;
-        }
-      }
-      while (++index < length) {
-        data = matchData[index];
-        var key = data[0],
-            objValue = object[key],
-            srcValue = data[1];
-
-        if (noCustomizer && data[2]) {
-          if (objValue === undefined && !(key in object)) {
-            return false;
-          }
-        } else {
-          var stack = new Stack;
-          if (customizer) {
-            var result = customizer(objValue, srcValue, key, object, source, stack);
-          }
-          if (!(result === undefined
-                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
-                : result
-              )) {
-            return false;
-          }
-        }
-      }
-      return true;
-    }
-
-    /**
-     * The base implementation of `_.isNative` without bad shim checks.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a native function,
-     *  else `false`.
-     */
-    function baseIsNative(value) {
-      if (!isObject(value) || isMasked(value)) {
-        return false;
-      }
-      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
-      return pattern.test(toSource(value));
-    }
-
-    /**
-     * The base implementation of `_.isRegExp` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-     */
-    function baseIsRegExp(value) {
-      return isObjectLike(value) && baseGetTag(value) == regexpTag;
-    }
-
-    /**
-     * The base implementation of `_.isSet` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-     */
-    function baseIsSet(value) {
-      return isObjectLike(value) && getTag(value) == setTag;
-    }
-
-    /**
-     * The base implementation of `_.isTypedArray` without Node.js optimizations.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-     */
-    function baseIsTypedArray(value) {
-      return isObjectLike(value) &&
-        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
-    }
-
-    /**
-     * The base implementation of `_.iteratee`.
-     *
-     * @private
-     * @param {*} [value=_.identity] The value to convert to an iteratee.
-     * @returns {Function} Returns the iteratee.
-     */
-    function baseIteratee(value) {
-      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
-      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
-      if (typeof value == 'function') {
-        return value;
-      }
-      if (value == null) {
-        return identity;
-      }
-      if (typeof value == 'object') {
-        return isArray(value)
-          ? baseMatchesProperty(value[0], value[1])
-          : baseMatches(value);
-      }
-      return property(value);
-    }
-
-    /**
-     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function baseKeys(object) {
-      if (!isPrototype(object)) {
-        return nativeKeys(object);
-      }
-      var result = [];
-      for (var key in Object(object)) {
-        if (hasOwnProperty.call(object, key) && key != 'constructor') {
-          result.push(key);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function baseKeysIn(object) {
-      if (!isObject(object)) {
-        return nativeKeysIn(object);
-      }
-      var isProto = isPrototype(object),
-          result = [];
-
-      for (var key in object) {
-        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.lt` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than `other`,
-     *  else `false`.
-     */
-    function baseLt(value, other) {
-      return value < other;
-    }
-
-    /**
-     * The base implementation of `_.map` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} iteratee The function invoked per iteration.
-     * @returns {Array} Returns the new mapped array.
-     */
-    function baseMap(collection, iteratee) {
-      var index = -1,
-          result = isArrayLike(collection) ? Array(collection.length) : [];
-
-      baseEach(collection, function(value, key, collection) {
-        result[++index] = iteratee(value, key, collection);
-      });
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.matches` which doesn't clone `source`.
-     *
-     * @private
-     * @param {Object} source The object of property values to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseMatches(source) {
-      var matchData = getMatchData(source);
-      if (matchData.length == 1 && matchData[0][2]) {
-        return matchesStrictComparable(matchData[0][0], matchData[0][1]);
-      }
-      return function(object) {
-        return object === source || baseIsMatch(object, source, matchData);
-      };
-    }
-
-    /**
-     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
-     *
-     * @private
-     * @param {string} path The path of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function baseMatchesProperty(path, srcValue) {
-      if (isKey(path) && isStrictComparable(srcValue)) {
-        return matchesStrictComparable(toKey(path), srcValue);
-      }
-      return function(object) {
-        var objValue = get(object, path);
-        return (objValue === undefined && objValue === srcValue)
-          ? hasIn(object, path)
-          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
-      };
-    }
-
-    /**
-     * The base implementation of `_.merge` without support for multiple sources.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @param {number} srcIndex The index of `source`.
-     * @param {Function} [customizer] The function to customize merged values.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     */
-    function baseMerge(object, source, srcIndex, customizer, stack) {
-      if (object === source) {
-        return;
-      }
-      baseFor(source, function(srcValue, key) {
-        stack || (stack = new Stack);
-        if (isObject(srcValue)) {
-          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);
-        }
-        else {
-          var newValue = customizer
-            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)
-            : undefined;
-
-          if (newValue === undefined) {
-            newValue = srcValue;
-          }
-          assignMergeValue(object, key, newValue);
-        }
-      }, keysIn);
-    }
-
-    /**
-     * A specialized version of `baseMerge` for arrays and objects which performs
-     * deep merges and tracks traversed objects enabling objects with circular
-     * references to be merged.
-     *
-     * @private
-     * @param {Object} object The destination object.
-     * @param {Object} source The source object.
-     * @param {string} key The key of the value to merge.
-     * @param {number} srcIndex The index of `source`.
-     * @param {Function} mergeFunc The function to merge values.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     */
-    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {
-      var objValue = safeGet(object, key),
-          srcValue = safeGet(source, key),
-          stacked = stack.get(srcValue);
-
-      if (stacked) {
-        assignMergeValue(object, key, stacked);
-        return;
-      }
-      var newValue = customizer
-        ? customizer(objValue, srcValue, (key + ''), object, source, stack)
-        : undefined;
-
-      var isCommon = newValue === undefined;
-
-      if (isCommon) {
-        var isArr = isArray(srcValue),
-            isBuff = !isArr && isBuffer(srcValue),
-            isTyped = !isArr && !isBuff && isTypedArray(srcValue);
-
-        newValue = srcValue;
-        if (isArr || isBuff || isTyped) {
-          if (isArray(objValue)) {
-            newValue = objValue;
-          }
-          else if (isArrayLikeObject(objValue)) {
-            newValue = copyArray(objValue);
-          }
-          else if (isBuff) {
-            isCommon = false;
-            newValue = cloneBuffer(srcValue, true);
-          }
-          else if (isTyped) {
-            isCommon = false;
-            newValue = cloneTypedArray(srcValue, true);
-          }
-          else {
-            newValue = [];
-          }
-        }
-        else if (isPlainObject(srcValue) || isArguments(srcValue)) {
-          newValue = objValue;
-          if (isArguments(objValue)) {
-            newValue = toPlainObject(objValue);
-          }
-          else if (!isObject(objValue) || isFunction(objValue)) {
-            newValue = initCloneObject(srcValue);
-          }
-        }
-        else {
-          isCommon = false;
-        }
-      }
-      if (isCommon) {
-        // Recursively merge objects and arrays (susceptible to call stack limits).
-        stack.set(srcValue, newValue);
-        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
-        stack['delete'](srcValue);
-      }
-      assignMergeValue(object, key, newValue);
-    }
-
-    /**
-     * The base implementation of `_.nth` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {Array} array The array to query.
-     * @param {number} n The index of the element to return.
-     * @returns {*} Returns the nth element of `array`.
-     */
-    function baseNth(array, n) {
-      var length = array.length;
-      if (!length) {
-        return;
-      }
-      n += n < 0 ? length : 0;
-      return isIndex(n, length) ? array[n] : undefined;
-    }
-
-    /**
-     * The base implementation of `_.orderBy` without param guards.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
-     * @param {string[]} orders The sort orders of `iteratees`.
-     * @returns {Array} Returns the new sorted array.
-     */
-    function baseOrderBy(collection, iteratees, orders) {
-      if (iteratees.length) {
-        iteratees = arrayMap(iteratees, function(iteratee) {
-          if (isArray(iteratee)) {
-            return function(value) {
-              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);
-            }
-          }
-          return iteratee;
-        });
-      } else {
-        iteratees = [identity];
-      }
-
-      var index = -1;
-      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
-
-      var result = baseMap(collection, function(value, key, collection) {
-        var criteria = arrayMap(iteratees, function(iteratee) {
-          return iteratee(value);
-        });
-        return { 'criteria': criteria, 'index': ++index, 'value': value };
-      });
-
-      return baseSortBy(result, function(object, other) {
-        return compareMultiple(object, other, orders);
-      });
-    }
-
-    /**
-     * The base implementation of `_.pick` without support for individual
-     * property identifiers.
-     *
-     * @private
-     * @param {Object} object The source object.
-     * @param {string[]} paths The property paths to pick.
-     * @returns {Object} Returns the new object.
-     */
-    function basePick(object, paths) {
-      return basePickBy(object, paths, function(value, path) {
-        return hasIn(object, path);
-      });
-    }
-
-    /**
-     * The base implementation of  `_.pickBy` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Object} object The source object.
-     * @param {string[]} paths The property paths to pick.
-     * @param {Function} predicate The function invoked per property.
-     * @returns {Object} Returns the new object.
-     */
-    function basePickBy(object, paths, predicate) {
-      var index = -1,
-          length = paths.length,
-          result = {};
-
-      while (++index < length) {
-        var path = paths[index],
-            value = baseGet(object, path);
-
-        if (predicate(value, path)) {
-          baseSet(result, castPath(path, object), value);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * A specialized version of `baseProperty` which supports deep paths.
-     *
-     * @private
-     * @param {Array|string} path The path of the property to get.
-     * @returns {Function} Returns the new accessor function.
-     */
-    function basePropertyDeep(path) {
-      return function(object) {
-        return baseGet(object, path);
-      };
-    }
-
-    /**
-     * The base implementation of `_.pullAllBy` without support for iteratee
-     * shorthands.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns `array`.
-     */
-    function basePullAll(array, values, iteratee, comparator) {
-      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,
-          index = -1,
-          length = values.length,
-          seen = array;
-
-      if (array === values) {
-        values = copyArray(values);
-      }
-      if (iteratee) {
-        seen = arrayMap(array, baseUnary(iteratee));
-      }
-      while (++index < length) {
-        var fromIndex = 0,
-            value = values[index],
-            computed = iteratee ? iteratee(value) : value;
-
-        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {
-          if (seen !== array) {
-            splice.call(seen, fromIndex, 1);
-          }
-          splice.call(array, fromIndex, 1);
-        }
-      }
-      return array;
-    }
-
-    /**
-     * The base implementation of `_.pullAt` without support for individual
-     * indexes or capturing the removed elements.
-     *
-     * @private
-     * @param {Array} array The array to modify.
-     * @param {number[]} indexes The indexes of elements to remove.
-     * @returns {Array} Returns `array`.
-     */
-    function basePullAt(array, indexes) {
-      var length = array ? indexes.length : 0,
-          lastIndex = length - 1;
-
-      while (length--) {
-        var index = indexes[length];
-        if (length == lastIndex || index !== previous) {
-          var previous = index;
-          if (isIndex(index)) {
-            splice.call(array, index, 1);
-          } else {
-            baseUnset(array, index);
-          }
-        }
-      }
-      return array;
-    }
-
-    /**
-     * The base implementation of `_.random` without support for returning
-     * floating-point numbers.
-     *
-     * @private
-     * @param {number} lower The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the random number.
-     */
-    function baseRandom(lower, upper) {
-      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));
-    }
-
-    /**
-     * The base implementation of `_.range` and `_.rangeRight` which doesn't
-     * coerce arguments.
-     *
-     * @private
-     * @param {number} start The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} step The value to increment or decrement by.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Array} Returns the range of numbers.
-     */
-    function baseRange(start, end, step, fromRight) {
-      var index = -1,
-          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),
-          result = Array(length);
-
-      while (length--) {
-        result[fromRight ? length : ++index] = start;
-        start += step;
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.repeat` which doesn't coerce arguments.
-     *
-     * @private
-     * @param {string} string The string to repeat.
-     * @param {number} n The number of times to repeat the string.
-     * @returns {string} Returns the repeated string.
-     */
-    function baseRepeat(string, n) {
-      var result = '';
-      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {
-        return result;
-      }
-      // Leverage the exponentiation by squaring algorithm for a faster repeat.
-      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.
-      do {
-        if (n % 2) {
-          result += string;
-        }
-        n = nativeFloor(n / 2);
-        if (n) {
-          string += string;
-        }
-      } while (n);
-
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.rest` which doesn't validate or coerce arguments.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @returns {Function} Returns the new function.
-     */
-    function baseRest(func, start) {
-      return setToString(overRest(func, start, identity), func + '');
-    }
-
-    /**
-     * The base implementation of `_.sample`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to sample.
-     * @returns {*} Returns the random element.
-     */
-    function baseSample(collection) {
-      return arraySample(values(collection));
-    }
-
-    /**
-     * The base implementation of `_.sampleSize` without param guards.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to sample.
-     * @param {number} n The number of elements to sample.
-     * @returns {Array} Returns the random elements.
-     */
-    function baseSampleSize(collection, n) {
-      var array = values(collection);
-      return shuffleSelf(array, baseClamp(n, 0, array.length));
-    }
-
-    /**
-     * The base implementation of `_.set`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @param {Function} [customizer] The function to customize path creation.
-     * @returns {Object} Returns `object`.
-     */
-    function baseSet(object, path, value, customizer) {
-      if (!isObject(object)) {
-        return object;
-      }
-      path = castPath(path, object);
-
-      var index = -1,
-          length = path.length,
-          lastIndex = length - 1,
-          nested = object;
-
-      while (nested != null && ++index < length) {
-        var key = toKey(path[index]),
-            newValue = value;
-
-        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
-          return object;
-        }
-
-        if (index != lastIndex) {
-          var objValue = nested[key];
-          newValue = customizer ? customizer(objValue, key, nested) : undefined;
-          if (newValue === undefined) {
-            newValue = isObject(objValue)
-              ? objValue
-              : (isIndex(path[index + 1]) ? [] : {});
-          }
-        }
-        assignValue(nested, key, newValue);
-        nested = nested[key];
-      }
-      return object;
-    }
-
-    /**
-     * The base implementation of `setData` without support for hot loop shorting.
-     *
-     * @private
-     * @param {Function} func The function to associate metadata with.
-     * @param {*} data The metadata.
-     * @returns {Function} Returns `func`.
-     */
-    var baseSetData = !metaMap ? identity : function(func, data) {
-      metaMap.set(func, data);
-      return func;
-    };
-
-    /**
-     * The base implementation of `setToString` without support for hot loop shorting.
-     *
-     * @private
-     * @param {Function} func The function to modify.
-     * @param {Function} string The `toString` result.
-     * @returns {Function} Returns `func`.
-     */
-    var baseSetToString = !defineProperty ? identity : function(func, string) {
-      return defineProperty(func, 'toString', {
-        'configurable': true,
-        'enumerable': false,
-        'value': constant(string),
-        'writable': true
-      });
-    };
-
-    /**
-     * The base implementation of `_.shuffle`.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     */
-    function baseShuffle(collection) {
-      return shuffleSelf(values(collection));
-    }
-
-    /**
-     * The base implementation of `_.slice` without an iteratee call guard.
-     *
-     * @private
-     * @param {Array} array The array to slice.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function baseSlice(array, start, end) {
-      var index = -1,
-          length = array.length;
-
-      if (start < 0) {
-        start = -start > length ? 0 : (length + start);
-      }
-      end = end > length ? length : end;
-      if (end < 0) {
-        end += length;
-      }
-      length = start > end ? 0 : ((end - start) >>> 0);
-      start >>>= 0;
-
-      var result = Array(length);
-      while (++index < length) {
-        result[index] = array[index + start];
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.some` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} predicate The function invoked per iteration.
-     * @returns {boolean} Returns `true` if any element passes the predicate check,
-     *  else `false`.
-     */
-    function baseSome(collection, predicate) {
-      var result;
-
-      baseEach(collection, function(value, index, collection) {
-        result = predicate(value, index, collection);
-        return !result;
-      });
-      return !!result;
-    }
-
-    /**
-     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
-     * performs a binary search of `array` to determine the index at which `value`
-     * should be inserted into `array` in order to maintain its sort order.
-     *
-     * @private
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {boolean} [retHighest] Specify returning the highest qualified index.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     */
-    function baseSortedIndex(array, value, retHighest) {
-      var low = 0,
-          high = array == null ? low : array.length;
-
-      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
-        while (low < high) {
-          var mid = (low + high) >>> 1,
-              computed = array[mid];
-
-          if (computed !== null && !isSymbol(computed) &&
-              (retHighest ? (computed <= value) : (computed < value))) {
-            low = mid + 1;
-          } else {
-            high = mid;
-          }
-        }
-        return high;
-      }
-      return baseSortedIndexBy(array, value, identity, retHighest);
-    }
-
-    /**
-     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
-     * which invokes `iteratee` for `value` and each element of `array` to compute
-     * their sort ranking. The iteratee is invoked with one argument; (value).
-     *
-     * @private
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} iteratee The iteratee invoked per element.
-     * @param {boolean} [retHighest] Specify returning the highest qualified index.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     */
-    function baseSortedIndexBy(array, value, iteratee, retHighest) {
-      var low = 0,
-          high = array == null ? 0 : array.length;
-      if (high === 0) {
-        return 0;
-      }
-
-      value = iteratee(value);
-      var valIsNaN = value !== value,
-          valIsNull = value === null,
-          valIsSymbol = isSymbol(value),
-          valIsUndefined = value === undefined;
-
-      while (low < high) {
-        var mid = nativeFloor((low + high) / 2),
-            computed = iteratee(array[mid]),
-            othIsDefined = computed !== undefined,
-            othIsNull = computed === null,
-            othIsReflexive = computed === computed,
-            othIsSymbol = isSymbol(computed);
-
-        if (valIsNaN) {
-          var setLow = retHighest || othIsReflexive;
-        } else if (valIsUndefined) {
-          setLow = othIsReflexive && (retHighest || othIsDefined);
-        } else if (valIsNull) {
-          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
-        } else if (valIsSymbol) {
-          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
-        } else if (othIsNull || othIsSymbol) {
-          setLow = false;
-        } else {
-          setLow = retHighest ? (computed <= value) : (computed < value);
-        }
-        if (setLow) {
-          low = mid + 1;
-        } else {
-          high = mid;
-        }
-      }
-      return nativeMin(high, MAX_ARRAY_INDEX);
-    }
-
-    /**
-     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without
-     * support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     */
-    function baseSortedUniq(array, iteratee) {
-      var index = -1,
-          length = array.length,
-          resIndex = 0,
-          result = [];
-
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
-
-        if (!index || !eq(computed, seen)) {
-          var seen = computed;
-          result[resIndex++] = value === 0 ? 0 : value;
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.toNumber` which doesn't ensure correct
-     * conversions of binary, hexadecimal, or octal string values.
-     *
-     * @private
-     * @param {*} value The value to process.
-     * @returns {number} Returns the number.
-     */
-    function baseToNumber(value) {
-      if (typeof value == 'number') {
-        return value;
-      }
-      if (isSymbol(value)) {
-        return NAN;
-      }
-      return +value;
-    }
-
-    /**
-     * The base implementation of `_.toString` which doesn't convert nullish
-     * values to empty strings.
-     *
-     * @private
-     * @param {*} value The value to process.
-     * @returns {string} Returns the string.
-     */
-    function baseToString(value) {
-      // Exit early for strings to avoid a performance hit in some environments.
-      if (typeof value == 'string') {
-        return value;
-      }
-      if (isArray(value)) {
-        // Recursively convert values (susceptible to call stack limits).
-        return arrayMap(value, baseToString) + '';
-      }
-      if (isSymbol(value)) {
-        return symbolToString ? symbolToString.call(value) : '';
-      }
-      var result = (value + '');
-      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-    }
-
-    /**
-     * The base implementation of `_.uniqBy` without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     */
-    function baseUniq(array, iteratee, comparator) {
-      var index = -1,
-          includes = arrayIncludes,
-          length = array.length,
-          isCommon = true,
-          result = [],
-          seen = result;
-
-      if (comparator) {
-        isCommon = false;
-        includes = arrayIncludesWith;
-      }
-      else if (length >= LARGE_ARRAY_SIZE) {
-        var set = iteratee ? null : createSet(array);
-        if (set) {
-          return setToArray(set);
-        }
-        isCommon = false;
-        includes = cacheHas;
-        seen = new SetCache;
-      }
-      else {
-        seen = iteratee ? [] : result;
-      }
-      outer:
-      while (++index < length) {
-        var value = array[index],
-            computed = iteratee ? iteratee(value) : value;
-
-        value = (comparator || value !== 0) ? value : 0;
-        if (isCommon && computed === computed) {
-          var seenIndex = seen.length;
-          while (seenIndex--) {
-            if (seen[seenIndex] === computed) {
-              continue outer;
-            }
-          }
-          if (iteratee) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-        else if (!includes(seen, computed, comparator)) {
-          if (seen !== result) {
-            seen.push(computed);
-          }
-          result.push(value);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * The base implementation of `_.unset`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The property path to unset.
-     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-     */
-    function baseUnset(object, path) {
-      path = castPath(path, object);
-      object = parent(object, path);
-      return object == null || delete object[toKey(last(path))];
-    }
-
-    /**
-     * The base implementation of `_.update`.
-     *
-     * @private
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to update.
-     * @param {Function} updater The function to produce the updated value.
-     * @param {Function} [customizer] The function to customize path creation.
-     * @returns {Object} Returns `object`.
-     */
-    function baseUpdate(object, path, updater, customizer) {
-      return baseSet(object, path, updater(baseGet(object, path)), customizer);
-    }
-
-    /**
-     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`
-     * without support for iteratee shorthands.
-     *
-     * @private
-     * @param {Array} array The array to query.
-     * @param {Function} predicate The function invoked per iteration.
-     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function baseWhile(array, predicate, isDrop, fromRight) {
-      var length = array.length,
-          index = fromRight ? length : -1;
-
-      while ((fromRight ? index-- : ++index < length) &&
-        predicate(array[index], index, array)) {}
-
-      return isDrop
-        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))
-        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));
-    }
-
-    /**
-     * The base implementation of `wrapperValue` which returns the result of
-     * performing a sequence of actions on the unwrapped `value`, where each
-     * successive action is supplied the return value of the previous.
-     *
-     * @private
-     * @param {*} value The unwrapped value.
-     * @param {Array} actions Actions to perform to resolve the unwrapped value.
-     * @returns {*} Returns the resolved value.
-     */
-    function baseWrapperValue(value, actions) {
-      var result = value;
-      if (result instanceof LazyWrapper) {
-        result = result.value();
-      }
-      return arrayReduce(actions, function(result, action) {
-        return action.func.apply(action.thisArg, arrayPush([result], action.args));
-      }, result);
-    }
-
-    /**
-     * The base implementation of methods like `_.xor`, without support for
-     * iteratee shorthands, that accepts an array of arrays to inspect.
-     *
-     * @private
-     * @param {Array} arrays The arrays to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of values.
-     */
-    function baseXor(arrays, iteratee, comparator) {
-      var length = arrays.length;
-      if (length < 2) {
-        return length ? baseUniq(arrays[0]) : [];
-      }
-      var index = -1,
-          result = Array(length);
-
-      while (++index < length) {
-        var array = arrays[index],
-            othIndex = -1;
-
-        while (++othIndex < length) {
-          if (othIndex != index) {
-            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);
-          }
-        }
-      }
-      return baseUniq(baseFlatten(result, 1), iteratee, comparator);
-    }
-
-    /**
-     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.
-     *
-     * @private
-     * @param {Array} props The property identifiers.
-     * @param {Array} values The property values.
-     * @param {Function} assignFunc The function to assign values.
-     * @returns {Object} Returns the new object.
-     */
-    function baseZipObject(props, values, assignFunc) {
-      var index = -1,
-          length = props.length,
-          valsLength = values.length,
-          result = {};
-
-      while (++index < length) {
-        var value = index < valsLength ? values[index] : undefined;
-        assignFunc(result, props[index], value);
-      }
-      return result;
-    }
-
-    /**
-     * Casts `value` to an empty array if it's not an array like object.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {Array|Object} Returns the cast array-like object.
-     */
-    function castArrayLikeObject(value) {
-      return isArrayLikeObject(value) ? value : [];
-    }
-
-    /**
-     * Casts `value` to `identity` if it's not a function.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {Function} Returns cast function.
-     */
-    function castFunction(value) {
-      return typeof value == 'function' ? value : identity;
-    }
-
-    /**
-     * Casts `value` to a path array if it's not one.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @param {Object} [object] The object to query keys on.
-     * @returns {Array} Returns the cast property path array.
-     */
-    function castPath(value, object) {
-      if (isArray(value)) {
-        return value;
-      }
-      return isKey(value, object) ? [value] : stringToPath(toString(value));
-    }
-
-    /**
-     * A `baseRest` alias which can be replaced with `identity` by module
-     * replacement plugins.
-     *
-     * @private
-     * @type {Function}
-     * @param {Function} func The function to apply a rest parameter to.
-     * @returns {Function} Returns the new function.
-     */
-    var castRest = baseRest;
-
-    /**
-     * Casts `array` to a slice if it's needed.
-     *
-     * @private
-     * @param {Array} array The array to inspect.
-     * @param {number} start The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the cast slice.
-     */
-    function castSlice(array, start, end) {
-      var length = array.length;
-      end = end === undefined ? length : end;
-      return (!start && end >= length) ? array : baseSlice(array, start, end);
-    }
-
-    /**
-     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).
-     *
-     * @private
-     * @param {number|Object} id The timer id or timeout object of the timer to clear.
-     */
-    var clearTimeout = ctxClearTimeout || function(id) {
-      return root.clearTimeout(id);
-    };
-
-    /**
-     * Creates a clone of  `buffer`.
-     *
-     * @private
-     * @param {Buffer} buffer The buffer to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Buffer} Returns the cloned buffer.
-     */
-    function cloneBuffer(buffer, isDeep) {
-      if (isDeep) {
-        return buffer.slice();
-      }
-      var length = buffer.length,
-          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
-
-      buffer.copy(result);
-      return result;
-    }
-
-    /**
-     * Creates a clone of `arrayBuffer`.
-     *
-     * @private
-     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.
-     * @returns {ArrayBuffer} Returns the cloned array buffer.
-     */
-    function cloneArrayBuffer(arrayBuffer) {
-      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
-      new Uint8Array(result).set(new Uint8Array(arrayBuffer));
-      return result;
-    }
-
-    /**
-     * Creates a clone of `dataView`.
-     *
-     * @private
-     * @param {Object} dataView The data view to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned data view.
-     */
-    function cloneDataView(dataView, isDeep) {
-      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
-      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
-    }
-
-    /**
-     * Creates a clone of `regexp`.
-     *
-     * @private
-     * @param {Object} regexp The regexp to clone.
-     * @returns {Object} Returns the cloned regexp.
-     */
-    function cloneRegExp(regexp) {
-      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
-      result.lastIndex = regexp.lastIndex;
-      return result;
-    }
-
-    /**
-     * Creates a clone of the `symbol` object.
-     *
-     * @private
-     * @param {Object} symbol The symbol object to clone.
-     * @returns {Object} Returns the cloned symbol object.
-     */
-    function cloneSymbol(symbol) {
-      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
-    }
-
-    /**
-     * Creates a clone of `typedArray`.
-     *
-     * @private
-     * @param {Object} typedArray The typed array to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the cloned typed array.
-     */
-    function cloneTypedArray(typedArray, isDeep) {
-      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
-      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
-    }
-
-    /**
-     * Compares values to sort them in ascending order.
-     *
-     * @private
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {number} Returns the sort order indicator for `value`.
-     */
-    function compareAscending(value, other) {
-      if (value !== other) {
-        var valIsDefined = value !== undefined,
-            valIsNull = value === null,
-            valIsReflexive = value === value,
-            valIsSymbol = isSymbol(value);
-
-        var othIsDefined = other !== undefined,
-            othIsNull = other === null,
-            othIsReflexive = other === other,
-            othIsSymbol = isSymbol(other);
-
-        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||
-            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||
-            (valIsNull && othIsDefined && othIsReflexive) ||
-            (!valIsDefined && othIsReflexive) ||
-            !valIsReflexive) {
-          return 1;
-        }
-        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||
-            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||
-            (othIsNull && valIsDefined && valIsReflexive) ||
-            (!othIsDefined && valIsReflexive) ||
-            !othIsReflexive) {
-          return -1;
-        }
-      }
-      return 0;
-    }
-
-    /**
-     * Used by `_.orderBy` to compare multiple properties of a value to another
-     * and stable sort them.
-     *
-     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
-     * specify an order of "desc" for descending or "asc" for ascending sort order
-     * of corresponding values.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {boolean[]|string[]} orders The order to sort by for each property.
-     * @returns {number} Returns the sort order indicator for `object`.
-     */
-    function compareMultiple(object, other, orders) {
-      var index = -1,
-          objCriteria = object.criteria,
-          othCriteria = other.criteria,
-          length = objCriteria.length,
-          ordersLength = orders.length;
-
-      while (++index < length) {
-        var result = compareAscending(objCriteria[index], othCriteria[index]);
-        if (result) {
-          if (index >= ordersLength) {
-            return result;
-          }
-          var order = orders[index];
-          return result * (order == 'desc' ? -1 : 1);
-        }
-      }
-      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications
-      // that causes it, under certain circumstances, to provide the same value for
-      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247
-      // for more details.
-      //
-      // This also ensures a stable sort in V8 and other engines.
-      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.
-      return object.index - other.index;
-    }
-
-    /**
-     * Creates an array that is the composition of partially applied arguments,
-     * placeholders, and provided arguments into a single array of arguments.
-     *
-     * @private
-     * @param {Array} args The provided arguments.
-     * @param {Array} partials The arguments to prepend to those provided.
-     * @param {Array} holders The `partials` placeholder indexes.
-     * @params {boolean} [isCurried] Specify composing for a curried function.
-     * @returns {Array} Returns the new array of composed arguments.
-     */
-    function composeArgs(args, partials, holders, isCurried) {
-      var argsIndex = -1,
-          argsLength = args.length,
-          holdersLength = holders.length,
-          leftIndex = -1,
-          leftLength = partials.length,
-          rangeLength = nativeMax(argsLength - holdersLength, 0),
-          result = Array(leftLength + rangeLength),
-          isUncurried = !isCurried;
-
-      while (++leftIndex < leftLength) {
-        result[leftIndex] = partials[leftIndex];
-      }
-      while (++argsIndex < holdersLength) {
-        if (isUncurried || argsIndex < argsLength) {
-          result[holders[argsIndex]] = args[argsIndex];
-        }
-      }
-      while (rangeLength--) {
-        result[leftIndex++] = args[argsIndex++];
-      }
-      return result;
-    }
-
-    /**
-     * This function is like `composeArgs` except that the arguments composition
-     * is tailored for `_.partialRight`.
-     *
-     * @private
-     * @param {Array} args The provided arguments.
-     * @param {Array} partials The arguments to append to those provided.
-     * @param {Array} holders The `partials` placeholder indexes.
-     * @params {boolean} [isCurried] Specify composing for a curried function.
-     * @returns {Array} Returns the new array of composed arguments.
-     */
-    function composeArgsRight(args, partials, holders, isCurried) {
-      var argsIndex = -1,
-          argsLength = args.length,
-          holdersIndex = -1,
-          holdersLength = holders.length,
-          rightIndex = -1,
-          rightLength = partials.length,
-          rangeLength = nativeMax(argsLength - holdersLength, 0),
-          result = Array(rangeLength + rightLength),
-          isUncurried = !isCurried;
-
-      while (++argsIndex < rangeLength) {
-        result[argsIndex] = args[argsIndex];
-      }
-      var offset = argsIndex;
-      while (++rightIndex < rightLength) {
-        result[offset + rightIndex] = partials[rightIndex];
-      }
-      while (++holdersIndex < holdersLength) {
-        if (isUncurried || argsIndex < argsLength) {
-          result[offset + holders[holdersIndex]] = args[argsIndex++];
-        }
-      }
-      return result;
-    }
-
-    /**
-     * Copies the values of `source` to `array`.
-     *
-     * @private
-     * @param {Array} source The array to copy values from.
-     * @param {Array} [array=[]] The array to copy values to.
-     * @returns {Array} Returns `array`.
-     */
-    function copyArray(source, array) {
-      var index = -1,
-          length = source.length;
-
-      array || (array = Array(length));
-      while (++index < length) {
-        array[index] = source[index];
-      }
-      return array;
-    }
-
-    /**
-     * Copies properties of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy properties from.
-     * @param {Array} props The property identifiers to copy.
-     * @param {Object} [object={}] The object to copy properties to.
-     * @param {Function} [customizer] The function to customize copied values.
-     * @returns {Object} Returns `object`.
-     */
-    function copyObject(source, props, object, customizer) {
-      var isNew = !object;
-      object || (object = {});
-
-      var index = -1,
-          length = props.length;
-
-      while (++index < length) {
-        var key = props[index];
-
-        var newValue = customizer
-          ? customizer(object[key], source[key], key, object, source)
-          : undefined;
-
-        if (newValue === undefined) {
-          newValue = source[key];
-        }
-        if (isNew) {
-          baseAssignValue(object, key, newValue);
-        } else {
-          assignValue(object, key, newValue);
-        }
-      }
-      return object;
-    }
-
-    /**
-     * Copies own symbols of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy symbols from.
-     * @param {Object} [object={}] The object to copy symbols to.
-     * @returns {Object} Returns `object`.
-     */
-    function copySymbols(source, object) {
-      return copyObject(source, getSymbols(source), object);
-    }
-
-    /**
-     * Copies own and inherited symbols of `source` to `object`.
-     *
-     * @private
-     * @param {Object} source The object to copy symbols from.
-     * @param {Object} [object={}] The object to copy symbols to.
-     * @returns {Object} Returns `object`.
-     */
-    function copySymbolsIn(source, object) {
-      return copyObject(source, getSymbolsIn(source), object);
-    }
-
-    /**
-     * Creates a function like `_.groupBy`.
-     *
-     * @private
-     * @param {Function} setter The function to set accumulator values.
-     * @param {Function} [initializer] The accumulator object initializer.
-     * @returns {Function} Returns the new aggregator function.
-     */
-    function createAggregator(setter, initializer) {
-      return function(collection, iteratee) {
-        var func = isArray(collection) ? arrayAggregator : baseAggregator,
-            accumulator = initializer ? initializer() : {};
-
-        return func(collection, setter, getIteratee(iteratee, 2), accumulator);
-      };
-    }
-
-    /**
-     * Creates a function like `_.assign`.
-     *
-     * @private
-     * @param {Function} assigner The function to assign values.
-     * @returns {Function} Returns the new assigner function.
-     */
-    function createAssigner(assigner) {
-      return baseRest(function(object, sources) {
-        var index = -1,
-            length = sources.length,
-            customizer = length > 1 ? sources[length - 1] : undefined,
-            guard = length > 2 ? sources[2] : undefined;
-
-        customizer = (assigner.length > 3 && typeof customizer == 'function')
-          ? (length--, customizer)
-          : undefined;
-
-        if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-          customizer = length < 3 ? undefined : customizer;
-          length = 1;
-        }
-        object = Object(object);
-        while (++index < length) {
-          var source = sources[index];
-          if (source) {
-            assigner(object, source, index, customizer);
-          }
-        }
-        return object;
-      });
-    }
-
-    /**
-     * Creates a `baseEach` or `baseEachRight` function.
-     *
-     * @private
-     * @param {Function} eachFunc The function to iterate over a collection.
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new base function.
-     */
-    function createBaseEach(eachFunc, fromRight) {
-      return function(collection, iteratee) {
-        if (collection == null) {
-          return collection;
-        }
-        if (!isArrayLike(collection)) {
-          return eachFunc(collection, iteratee);
-        }
-        var length = collection.length,
-            index = fromRight ? length : -1,
-            iterable = Object(collection);
-
-        while ((fromRight ? index-- : ++index < length)) {
-          if (iteratee(iterable[index], index, iterable) === false) {
-            break;
-          }
-        }
-        return collection;
-      };
-    }
-
-    /**
-     * Creates a base function for methods like `_.forIn` and `_.forOwn`.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new base function.
-     */
-    function createBaseFor(fromRight) {
-      return function(object, iteratee, keysFunc) {
-        var index = -1,
-            iterable = Object(object),
-            props = keysFunc(object),
-            length = props.length;
-
-        while (length--) {
-          var key = props[fromRight ? length : ++index];
-          if (iteratee(iterable[key], key, iterable) === false) {
-            break;
-          }
-        }
-        return object;
-      };
-    }
-
-    /**
-     * Creates a function that wraps `func` to invoke it with the optional `this`
-     * binding of `thisArg`.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createBind(func, bitmask, thisArg) {
-      var isBind = bitmask & WRAP_BIND_FLAG,
-          Ctor = createCtor(func);
-
-      function wrapper() {
-        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-        return fn.apply(isBind ? thisArg : this, arguments);
-      }
-      return wrapper;
-    }
-
-    /**
-     * Creates a function like `_.lowerFirst`.
-     *
-     * @private
-     * @param {string} methodName The name of the `String` case method to use.
-     * @returns {Function} Returns the new case function.
-     */
-    function createCaseFirst(methodName) {
-      return function(string) {
-        string = toString(string);
-
-        var strSymbols = hasUnicode(string)
-          ? stringToArray(string)
-          : undefined;
-
-        var chr = strSymbols
-          ? strSymbols[0]
-          : string.charAt(0);
-
-        var trailing = strSymbols
-          ? castSlice(strSymbols, 1).join('')
-          : string.slice(1);
-
-        return chr[methodName]() + trailing;
-      };
-    }
-
-    /**
-     * Creates a function like `_.camelCase`.
-     *
-     * @private
-     * @param {Function} callback The function to combine each word.
-     * @returns {Function} Returns the new compounder function.
-     */
-    function createCompounder(callback) {
-      return function(string) {
-        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');
-      };
-    }
-
-    /**
-     * Creates a function that produces an instance of `Ctor` regardless of
-     * whether it was invoked as part of a `new` expression or by `call` or `apply`.
-     *
-     * @private
-     * @param {Function} Ctor The constructor to wrap.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createCtor(Ctor) {
-      return function() {
-        // Use a `switch` statement to work with class constructors. See
-        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist
-        // for more details.
-        var args = arguments;
-        switch (args.length) {
-          case 0: return new Ctor;
-          case 1: return new Ctor(args[0]);
-          case 2: return new Ctor(args[0], args[1]);
-          case 3: return new Ctor(args[0], args[1], args[2]);
-          case 4: return new Ctor(args[0], args[1], args[2], args[3]);
-          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);
-          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);
-          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
-        }
-        var thisBinding = baseCreate(Ctor.prototype),
-            result = Ctor.apply(thisBinding, args);
-
-        // Mimic the constructor's `return` behavior.
-        // See https://es5.github.io/#x13.2.2 for more details.
-        return isObject(result) ? result : thisBinding;
-      };
-    }
-
-    /**
-     * Creates a function that wraps `func` to enable currying.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {number} arity The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createCurry(func, bitmask, arity) {
-      var Ctor = createCtor(func);
-
-      function wrapper() {
-        var length = arguments.length,
-            args = Array(length),
-            index = length,
-            placeholder = getHolder(wrapper);
-
-        while (index--) {
-          args[index] = arguments[index];
-        }
-        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)
-          ? []
-          : replaceHolders(args, placeholder);
-
-        length -= holders.length;
-        if (length < arity) {
-          return createRecurry(
-            func, bitmask, createHybrid, wrapper.placeholder, undefined,
-            args, holders, undefined, undefined, arity - length);
-        }
-        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-        return apply(fn, this, args);
-      }
-      return wrapper;
-    }
-
-    /**
-     * Creates a `_.find` or `_.findLast` function.
-     *
-     * @private
-     * @param {Function} findIndexFunc The function to find the collection index.
-     * @returns {Function} Returns the new find function.
-     */
-    function createFind(findIndexFunc) {
-      return function(collection, predicate, fromIndex) {
-        var iterable = Object(collection);
-        if (!isArrayLike(collection)) {
-          var iteratee = getIteratee(predicate, 3);
-          collection = keys(collection);
-          predicate = function(key) { return iteratee(iterable[key], key, iterable); };
-        }
-        var index = findIndexFunc(collection, predicate, fromIndex);
-        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
-      };
-    }
-
-    /**
-     * Creates a `_.flow` or `_.flowRight` function.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new flow function.
-     */
-    function createFlow(fromRight) {
-      return flatRest(function(funcs) {
-        var length = funcs.length,
-            index = length,
-            prereq = LodashWrapper.prototype.thru;
-
-        if (fromRight) {
-          funcs.reverse();
-        }
-        while (index--) {
-          var func = funcs[index];
-          if (typeof func != 'function') {
-            throw new TypeError(FUNC_ERROR_TEXT);
-          }
-          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
-            var wrapper = new LodashWrapper([], true);
-          }
-        }
-        index = wrapper ? index : length;
-        while (++index < length) {
-          func = funcs[index];
-
-          var funcName = getFuncName(func),
-              data = funcName == 'wrapper' ? getData(func) : undefined;
-
-          if (data && isLaziable(data[0]) &&
-                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
-                !data[4].length && data[9] == 1
-              ) {
-            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
-          } else {
-            wrapper = (func.length == 1 && isLaziable(func))
-              ? wrapper[funcName]()
-              : wrapper.thru(func);
-          }
-        }
-        return function() {
-          var args = arguments,
-              value = args[0];
-
-          if (wrapper && args.length == 1 && isArray(value)) {
-            return wrapper.plant(value).value();
-          }
-          var index = 0,
-              result = length ? funcs[index].apply(this, args) : value;
-
-          while (++index < length) {
-            result = funcs[index].call(this, result);
-          }
-          return result;
-        };
-      });
-    }
-
-    /**
-     * Creates a function that wraps `func` to invoke it with optional `this`
-     * binding of `thisArg`, partial application, and currying.
-     *
-     * @private
-     * @param {Function|string} func The function or method name to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to prepend to those provided to
-     *  the new function.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [partialsRight] The arguments to append to those provided
-     *  to the new function.
-     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {
-      var isAry = bitmask & WRAP_ARY_FLAG,
-          isBind = bitmask & WRAP_BIND_FLAG,
-          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,
-          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),
-          isFlip = bitmask & WRAP_FLIP_FLAG,
-          Ctor = isBindKey ? undefined : createCtor(func);
-
-      function wrapper() {
-        var length = arguments.length,
-            args = Array(length),
-            index = length;
-
-        while (index--) {
-          args[index] = arguments[index];
-        }
-        if (isCurried) {
-          var placeholder = getHolder(wrapper),
-              holdersCount = countHolders(args, placeholder);
-        }
-        if (partials) {
-          args = composeArgs(args, partials, holders, isCurried);
-        }
-        if (partialsRight) {
-          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);
-        }
-        length -= holdersCount;
-        if (isCurried && length < arity) {
-          var newHolders = replaceHolders(args, placeholder);
-          return createRecurry(
-            func, bitmask, createHybrid, wrapper.placeholder, thisArg,
-            args, newHolders, argPos, ary, arity - length
-          );
-        }
-        var thisBinding = isBind ? thisArg : this,
-            fn = isBindKey ? thisBinding[func] : func;
-
-        length = args.length;
-        if (argPos) {
-          args = reorder(args, argPos);
-        } else if (isFlip && length > 1) {
-          args.reverse();
-        }
-        if (isAry && ary < length) {
-          args.length = ary;
-        }
-        if (this && this !== root && this instanceof wrapper) {
-          fn = Ctor || createCtor(fn);
-        }
-        return fn.apply(thisBinding, args);
-      }
-      return wrapper;
-    }
-
-    /**
-     * Creates a function like `_.invertBy`.
-     *
-     * @private
-     * @param {Function} setter The function to set accumulator values.
-     * @param {Function} toIteratee The function to resolve iteratees.
-     * @returns {Function} Returns the new inverter function.
-     */
-    function createInverter(setter, toIteratee) {
-      return function(object, iteratee) {
-        return baseInverter(object, setter, toIteratee(iteratee), {});
-      };
-    }
-
-    /**
-     * Creates a function that performs a mathematical operation on two values.
-     *
-     * @private
-     * @param {Function} operator The function to perform the operation.
-     * @param {number} [defaultValue] The value used for `undefined` arguments.
-     * @returns {Function} Returns the new mathematical operation function.
-     */
-    function createMathOperation(operator, defaultValue) {
-      return function(value, other) {
-        var result;
-        if (value === undefined && other === undefined) {
-          return defaultValue;
-        }
-        if (value !== undefined) {
-          result = value;
-        }
-        if (other !== undefined) {
-          if (result === undefined) {
-            return other;
-          }
-          if (typeof value == 'string' || typeof other == 'string') {
-            value = baseToString(value);
-            other = baseToString(other);
-          } else {
-            value = baseToNumber(value);
-            other = baseToNumber(other);
-          }
-          result = operator(value, other);
-        }
-        return result;
-      };
-    }
-
-    /**
-     * Creates a function like `_.over`.
-     *
-     * @private
-     * @param {Function} arrayFunc The function to iterate over iteratees.
-     * @returns {Function} Returns the new over function.
-     */
-    function createOver(arrayFunc) {
-      return flatRest(function(iteratees) {
-        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));
-        return baseRest(function(args) {
-          var thisArg = this;
-          return arrayFunc(iteratees, function(iteratee) {
-            return apply(iteratee, thisArg, args);
-          });
-        });
-      });
-    }
-
-    /**
-     * Creates the padding for `string` based on `length`. The `chars` string
-     * is truncated if the number of characters exceeds `length`.
-     *
-     * @private
-     * @param {number} length The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padding for `string`.
-     */
-    function createPadding(length, chars) {
-      chars = chars === undefined ? ' ' : baseToString(chars);
-
-      var charsLength = chars.length;
-      if (charsLength < 2) {
-        return charsLength ? baseRepeat(chars, length) : chars;
-      }
-      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));
-      return hasUnicode(chars)
-        ? castSlice(stringToArray(result), 0, length).join('')
-        : result.slice(0, length);
-    }
-
-    /**
-     * Creates a function that wraps `func` to invoke it with the `this` binding
-     * of `thisArg` and `partials` prepended to the arguments it receives.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {*} thisArg The `this` binding of `func`.
-     * @param {Array} partials The arguments to prepend to those provided to
-     *  the new function.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createPartial(func, bitmask, thisArg, partials) {
-      var isBind = bitmask & WRAP_BIND_FLAG,
-          Ctor = createCtor(func);
-
-      function wrapper() {
-        var argsIndex = -1,
-            argsLength = arguments.length,
-            leftIndex = -1,
-            leftLength = partials.length,
-            args = Array(leftLength + argsLength),
-            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;
-
-        while (++leftIndex < leftLength) {
-          args[leftIndex] = partials[leftIndex];
-        }
-        while (argsLength--) {
-          args[leftIndex++] = arguments[++argsIndex];
-        }
-        return apply(fn, isBind ? thisArg : this, args);
-      }
-      return wrapper;
-    }
-
-    /**
-     * Creates a `_.range` or `_.rangeRight` function.
-     *
-     * @private
-     * @param {boolean} [fromRight] Specify iterating from right to left.
-     * @returns {Function} Returns the new range function.
-     */
-    function createRange(fromRight) {
-      return function(start, end, step) {
-        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {
-          end = step = undefined;
-        }
-        // Ensure the sign of `-0` is preserved.
-        start = toFinite(start);
-        if (end === undefined) {
-          end = start;
-          start = 0;
-        } else {
-          end = toFinite(end);
-        }
-        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);
-        return baseRange(start, end, step, fromRight);
-      };
-    }
-
-    /**
-     * Creates a function that performs a relational operation on two values.
-     *
-     * @private
-     * @param {Function} operator The function to perform the operation.
-     * @returns {Function} Returns the new relational operation function.
-     */
-    function createRelationalOperation(operator) {
-      return function(value, other) {
-        if (!(typeof value == 'string' && typeof other == 'string')) {
-          value = toNumber(value);
-          other = toNumber(other);
-        }
-        return operator(value, other);
-      };
-    }
-
-    /**
-     * Creates a function that wraps `func` to continue currying.
-     *
-     * @private
-     * @param {Function} func The function to wrap.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @param {Function} wrapFunc The function to create the `func` wrapper.
-     * @param {*} placeholder The placeholder value.
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to prepend to those provided to
-     *  the new function.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {
-      var isCurry = bitmask & WRAP_CURRY_FLAG,
-          newHolders = isCurry ? holders : undefined,
-          newHoldersRight = isCurry ? undefined : holders,
-          newPartials = isCurry ? partials : undefined,
-          newPartialsRight = isCurry ? undefined : partials;
-
-      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);
-      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);
-
-      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {
-        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);
-      }
-      var newData = [
-        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,
-        newHoldersRight, argPos, ary, arity
-      ];
-
-      var result = wrapFunc.apply(undefined, newData);
-      if (isLaziable(func)) {
-        setData(result, newData);
-      }
-      result.placeholder = placeholder;
-      return setWrapToString(result, func, bitmask);
-    }
-
-    /**
-     * Creates a function like `_.round`.
-     *
-     * @private
-     * @param {string} methodName The name of the `Math` method to use when rounding.
-     * @returns {Function} Returns the new round function.
-     */
-    function createRound(methodName) {
-      var func = Math[methodName];
-      return function(number, precision) {
-        number = toNumber(number);
-        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);
-        if (precision && nativeIsFinite(number)) {
-          // Shift with exponential notation to avoid floating-point issues.
-          // See [MDN](https://mdn.io/round#Examples) for more details.
-          var pair = (toString(number) + 'e').split('e'),
-              value = func(pair[0] + 'e' + (+pair[1] + precision));
-
-          pair = (toString(value) + 'e').split('e');
-          return +(pair[0] + 'e' + (+pair[1] - precision));
-        }
-        return func(number);
-      };
-    }
-
-    /**
-     * Creates a set object of `values`.
-     *
-     * @private
-     * @param {Array} values The values to add to the set.
-     * @returns {Object} Returns the new set.
-     */
-    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
-      return new Set(values);
-    };
-
-    /**
-     * Creates a `_.toPairs` or `_.toPairsIn` function.
-     *
-     * @private
-     * @param {Function} keysFunc The function to get the keys of a given object.
-     * @returns {Function} Returns the new pairs function.
-     */
-    function createToPairs(keysFunc) {
-      return function(object) {
-        var tag = getTag(object);
-        if (tag == mapTag) {
-          return mapToArray(object);
-        }
-        if (tag == setTag) {
-          return setToPairs(object);
-        }
-        return baseToPairs(object, keysFunc(object));
-      };
-    }
-
-    /**
-     * Creates a function that either curries or invokes `func` with optional
-     * `this` binding and partially applied arguments.
-     *
-     * @private
-     * @param {Function|string} func The function or method name to wrap.
-     * @param {number} bitmask The bitmask flags.
-     *    1 - `_.bind`
-     *    2 - `_.bindKey`
-     *    4 - `_.curry` or `_.curryRight` of a bound function
-     *    8 - `_.curry`
-     *   16 - `_.curryRight`
-     *   32 - `_.partial`
-     *   64 - `_.partialRight`
-     *  128 - `_.rearg`
-     *  256 - `_.ary`
-     *  512 - `_.flip`
-     * @param {*} [thisArg] The `this` binding of `func`.
-     * @param {Array} [partials] The arguments to be partially applied.
-     * @param {Array} [holders] The `partials` placeholder indexes.
-     * @param {Array} [argPos] The argument positions of the new function.
-     * @param {number} [ary] The arity cap of `func`.
-     * @param {number} [arity] The arity of `func`.
-     * @returns {Function} Returns the new wrapped function.
-     */
-    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {
-      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;
-      if (!isBindKey && typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      var length = partials ? partials.length : 0;
-      if (!length) {
-        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);
-        partials = holders = undefined;
-      }
-      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);
-      arity = arity === undefined ? arity : toInteger(arity);
-      length -= holders ? holders.length : 0;
-
-      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {
-        var partialsRight = partials,
-            holdersRight = holders;
-
-        partials = holders = undefined;
-      }
-      var data = isBindKey ? undefined : getData(func);
-
-      var newData = [
-        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,
-        argPos, ary, arity
-      ];
-
-      if (data) {
-        mergeData(newData, data);
-      }
-      func = newData[0];
-      bitmask = newData[1];
-      thisArg = newData[2];
-      partials = newData[3];
-      holders = newData[4];
-      arity = newData[9] = newData[9] === undefined
-        ? (isBindKey ? 0 : func.length)
-        : nativeMax(newData[9] - length, 0);
-
-      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {
-        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);
-      }
-      if (!bitmask || bitmask == WRAP_BIND_FLAG) {
-        var result = createBind(func, bitmask, thisArg);
-      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {
-        result = createCurry(func, bitmask, arity);
-      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {
-        result = createPartial(func, bitmask, thisArg, partials);
-      } else {
-        result = createHybrid.apply(undefined, newData);
-      }
-      var setter = data ? baseSetData : setData;
-      return setWrapToString(setter(result, newData), func, bitmask);
-    }
-
-    /**
-     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties
-     * of source objects to the destination object for all destination properties
-     * that resolve to `undefined`.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to assign.
-     * @param {Object} object The parent object of `objValue`.
-     * @returns {*} Returns the value to assign.
-     */
-    function customDefaultsAssignIn(objValue, srcValue, key, object) {
-      if (objValue === undefined ||
-          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-        return srcValue;
-      }
-      return objValue;
-    }
-
-    /**
-     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source
-     * objects into destination objects that are passed thru.
-     *
-     * @private
-     * @param {*} objValue The destination value.
-     * @param {*} srcValue The source value.
-     * @param {string} key The key of the property to merge.
-     * @param {Object} object The parent object of `objValue`.
-     * @param {Object} source The parent object of `srcValue`.
-     * @param {Object} [stack] Tracks traversed source values and their merged
-     *  counterparts.
-     * @returns {*} Returns the value to assign.
-     */
-    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
-      if (isObject(objValue) && isObject(srcValue)) {
-        // Recursively merge objects and arrays (susceptible to call stack limits).
-        stack.set(srcValue, objValue);
-        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);
-        stack['delete'](srcValue);
-      }
-      return objValue;
-    }
-
-    /**
-     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain
-     * objects.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @param {string} key The key of the property to inspect.
-     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
-     */
-    function customOmitClone(value) {
-      return isPlainObject(value) ? undefined : value;
-    }
-
-    /**
-     * A specialized version of `baseIsEqualDeep` for arrays with support for
-     * partial deep comparisons.
-     *
-     * @private
-     * @param {Array} array The array to compare.
-     * @param {Array} other The other array to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `array` and `other` objects.
-     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
-     */
-    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-          arrLength = array.length,
-          othLength = other.length;
-
-      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
-        return false;
-      }
-      // Check that cyclic values are equal.
-      var arrStacked = stack.get(array);
-      var othStacked = stack.get(other);
-      if (arrStacked && othStacked) {
-        return arrStacked == other && othStacked == array;
-      }
-      var index = -1,
-          result = true,
-          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
-
-      stack.set(array, other);
-      stack.set(other, array);
-
-      // Ignore non-index properties.
-      while (++index < arrLength) {
-        var arrValue = array[index],
-            othValue = other[index];
-
-        if (customizer) {
-          var compared = isPartial
-            ? customizer(othValue, arrValue, index, other, array, stack)
-            : customizer(arrValue, othValue, index, array, other, stack);
-        }
-        if (compared !== undefined) {
-          if (compared) {
-            continue;
-          }
-          result = false;
-          break;
-        }
-        // Recursively compare arrays (susceptible to call stack limits).
-        if (seen) {
-          if (!arraySome(other, function(othValue, othIndex) {
-                if (!cacheHas(seen, othIndex) &&
-                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
-                  return seen.push(othIndex);
-                }
-              })) {
-            result = false;
-            break;
-          }
-        } else if (!(
-              arrValue === othValue ||
-                equalFunc(arrValue, othValue, bitmask, customizer, stack)
-            )) {
-          result = false;
-          break;
-        }
-      }
-      stack['delete'](array);
-      stack['delete'](other);
-      return result;
-    }
-
-    /**
-     * A specialized version of `baseIsEqualDeep` for comparing objects of
-     * the same `toStringTag`.
-     *
-     * **Note:** This function only supports comparing values with tags of
-     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {string} tag The `toStringTag` of the objects to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
-      switch (tag) {
-        case dataViewTag:
-          if ((object.byteLength != other.byteLength) ||
-              (object.byteOffset != other.byteOffset)) {
-            return false;
-          }
-          object = object.buffer;
-          other = other.buffer;
-
-        case arrayBufferTag:
-          if ((object.byteLength != other.byteLength) ||
-              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
-            return false;
-          }
-          return true;
-
-        case boolTag:
-        case dateTag:
-        case numberTag:
-          // Coerce booleans to `1` or `0` and dates to milliseconds.
-          // Invalid dates are coerced to `NaN`.
-          return eq(+object, +other);
-
-        case errorTag:
-          return object.name == other.name && object.message == other.message;
-
-        case regexpTag:
-        case stringTag:
-          // Coerce regexes to strings and treat strings, primitives and objects,
-          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
-          // for more details.
-          return object == (other + '');
-
-        case mapTag:
-          var convert = mapToArray;
-
-        case setTag:
-          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
-          convert || (convert = setToArray);
-
-          if (object.size != other.size && !isPartial) {
-            return false;
-          }
-          // Assume cyclic values are equal.
-          var stacked = stack.get(object);
-          if (stacked) {
-            return stacked == other;
-          }
-          bitmask |= COMPARE_UNORDERED_FLAG;
-
-          // Recursively compare objects (susceptible to call stack limits).
-          stack.set(object, other);
-          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
-          stack['delete'](object);
-          return result;
-
-        case symbolTag:
-          if (symbolValueOf) {
-            return symbolValueOf.call(object) == symbolValueOf.call(other);
-          }
-      }
-      return false;
-    }
-
-    /**
-     * A specialized version of `baseIsEqualDeep` for objects with support for
-     * partial deep comparisons.
-     *
-     * @private
-     * @param {Object} object The object to compare.
-     * @param {Object} other The other object to compare.
-     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
-     * @param {Function} customizer The function to customize comparisons.
-     * @param {Function} equalFunc The function to determine equivalents of values.
-     * @param {Object} stack Tracks traversed `object` and `other` objects.
-     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
-     */
-    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
-      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
-          objProps = getAllKeys(object),
-          objLength = objProps.length,
-          othProps = getAllKeys(other),
-          othLength = othProps.length;
-
-      if (objLength != othLength && !isPartial) {
-        return false;
-      }
-      var index = objLength;
-      while (index--) {
-        var key = objProps[index];
-        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
-          return false;
-        }
-      }
-      // Check that cyclic values are equal.
-      var objStacked = stack.get(object);
-      var othStacked = stack.get(other);
-      if (objStacked && othStacked) {
-        return objStacked == other && othStacked == object;
-      }
-      var result = true;
-      stack.set(object, other);
-      stack.set(other, object);
-
-      var skipCtor = isPartial;
-      while (++index < objLength) {
-        key = objProps[index];
-        var objValue = object[key],
-            othValue = other[key];
-
-        if (customizer) {
-          var compared = isPartial
-            ? customizer(othValue, objValue, key, other, object, stack)
-            : customizer(objValue, othValue, key, object, other, stack);
-        }
-        // Recursively compare objects (susceptible to call stack limits).
-        if (!(compared === undefined
-              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
-              : compared
-            )) {
-          result = false;
-          break;
-        }
-        skipCtor || (skipCtor = key == 'constructor');
-      }
-      if (result && !skipCtor) {
-        var objCtor = object.constructor,
-            othCtor = other.constructor;
-
-        // Non `Object` object instances with different constructors are not equal.
-        if (objCtor != othCtor &&
-            ('constructor' in object && 'constructor' in other) &&
-            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
-              typeof othCtor == 'function' && othCtor instanceof othCtor)) {
-          result = false;
-        }
-      }
-      stack['delete'](object);
-      stack['delete'](other);
-      return result;
-    }
-
-    /**
-     * A specialized version of `baseRest` which flattens the rest array.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @returns {Function} Returns the new function.
-     */
-    function flatRest(func) {
-      return setToString(overRest(func, undefined, flatten), func + '');
-    }
-
-    /**
-     * Creates an array of own enumerable property names and symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function getAllKeys(object) {
-      return baseGetAllKeys(object, keys, getSymbols);
-    }
-
-    /**
-     * Creates an array of own and inherited enumerable property names and
-     * symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names and symbols.
-     */
-    function getAllKeysIn(object) {
-      return baseGetAllKeys(object, keysIn, getSymbolsIn);
-    }
-
-    /**
-     * Gets metadata for `func`.
-     *
-     * @private
-     * @param {Function} func The function to query.
-     * @returns {*} Returns the metadata for `func`.
-     */
-    var getData = !metaMap ? noop : function(func) {
-      return metaMap.get(func);
-    };
-
-    /**
-     * Gets the name of `func`.
-     *
-     * @private
-     * @param {Function} func The function to query.
-     * @returns {string} Returns the function name.
-     */
-    function getFuncName(func) {
-      var result = (func.name + ''),
-          array = realNames[result],
-          length = hasOwnProperty.call(realNames, result) ? array.length : 0;
-
-      while (length--) {
-        var data = array[length],
-            otherFunc = data.func;
-        if (otherFunc == null || otherFunc == func) {
-          return data.name;
-        }
-      }
-      return result;
-    }
-
-    /**
-     * Gets the argument placeholder value for `func`.
-     *
-     * @private
-     * @param {Function} func The function to inspect.
-     * @returns {*} Returns the placeholder value.
-     */
-    function getHolder(func) {
-      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;
-      return object.placeholder;
-    }
-
-    /**
-     * Gets the appropriate "iteratee" function. If `_.iteratee` is customized,
-     * this function returns the custom method, otherwise it returns `baseIteratee`.
-     * If arguments are provided, the chosen function is invoked with them and
-     * its result is returned.
-     *
-     * @private
-     * @param {*} [value] The value to convert to an iteratee.
-     * @param {number} [arity] The arity of the created iteratee.
-     * @returns {Function} Returns the chosen function or its result.
-     */
-    function getIteratee() {
-      var result = lodash.iteratee || iteratee;
-      result = result === iteratee ? baseIteratee : result;
-      return arguments.length ? result(arguments[0], arguments[1]) : result;
-    }
-
-    /**
-     * Gets the data for `map`.
-     *
-     * @private
-     * @param {Object} map The map to query.
-     * @param {string} key The reference key.
-     * @returns {*} Returns the map data.
-     */
-    function getMapData(map, key) {
-      var data = map.__data__;
-      return isKeyable(key)
-        ? data[typeof key == 'string' ? 'string' : 'hash']
-        : data.map;
-    }
-
-    /**
-     * Gets the property names, values, and compare flags of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the match data of `object`.
-     */
-    function getMatchData(object) {
-      var result = keys(object),
-          length = result.length;
-
-      while (length--) {
-        var key = result[length],
-            value = object[key];
-
-        result[length] = [key, value, isStrictComparable(value)];
-      }
-      return result;
-    }
-
-    /**
-     * Gets the native function at `key` of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {string} key The key of the method to get.
-     * @returns {*} Returns the function if it's native, else `undefined`.
-     */
-    function getNative(object, key) {
-      var value = getValue(object, key);
-      return baseIsNative(value) ? value : undefined;
-    }
-
-    /**
-     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the raw `toStringTag`.
-     */
-    function getRawTag(value) {
-      var isOwn = hasOwnProperty.call(value, symToStringTag),
-          tag = value[symToStringTag];
-
-      try {
-        value[symToStringTag] = undefined;
-        var unmasked = true;
-      } catch (e) {}
-
-      var result = nativeObjectToString.call(value);
-      if (unmasked) {
-        if (isOwn) {
-          value[symToStringTag] = tag;
-        } else {
-          delete value[symToStringTag];
-        }
-      }
-      return result;
-    }
-
-    /**
-     * Creates an array of the own enumerable symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of symbols.
-     */
-    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
-      if (object == null) {
-        return [];
-      }
-      object = Object(object);
-      return arrayFilter(nativeGetSymbols(object), function(symbol) {
-        return propertyIsEnumerable.call(object, symbol);
-      });
-    };
-
-    /**
-     * Creates an array of the own and inherited enumerable symbols of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of symbols.
-     */
-    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
-      var result = [];
-      while (object) {
-        arrayPush(result, getSymbols(object));
-        object = getPrototype(object);
-      }
-      return result;
-    };
-
-    /**
-     * Gets the `toStringTag` of `value`.
-     *
-     * @private
-     * @param {*} value The value to query.
-     * @returns {string} Returns the `toStringTag`.
-     */
-    var getTag = baseGetTag;
-
-    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
-    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
-        (Map && getTag(new Map) != mapTag) ||
-        (Promise && getTag(Promise.resolve()) != promiseTag) ||
-        (Set && getTag(new Set) != setTag) ||
-        (WeakMap && getTag(new WeakMap) != weakMapTag)) {
-      getTag = function(value) {
-        var result = baseGetTag(value),
-            Ctor = result == objectTag ? value.constructor : undefined,
-            ctorString = Ctor ? toSource(Ctor) : '';
-
-        if (ctorString) {
-          switch (ctorString) {
-            case dataViewCtorString: return dataViewTag;
-            case mapCtorString: return mapTag;
-            case promiseCtorString: return promiseTag;
-            case setCtorString: return setTag;
-            case weakMapCtorString: return weakMapTag;
-          }
-        }
-        return result;
-      };
-    }
-
-    /**
-     * Gets the view, applying any `transforms` to the `start` and `end` positions.
-     *
-     * @private
-     * @param {number} start The start of the view.
-     * @param {number} end The end of the view.
-     * @param {Array} transforms The transformations to apply to the view.
-     * @returns {Object} Returns an object containing the `start` and `end`
-     *  positions of the view.
-     */
-    function getView(start, end, transforms) {
-      var index = -1,
-          length = transforms.length;
-
-      while (++index < length) {
-        var data = transforms[index],
-            size = data.size;
-
-        switch (data.type) {
-          case 'drop':      start += size; break;
-          case 'dropRight': end -= size; break;
-          case 'take':      end = nativeMin(end, start + size); break;
-          case 'takeRight': start = nativeMax(start, end - size); break;
-        }
-      }
-      return { 'start': start, 'end': end };
-    }
-
-    /**
-     * Extracts wrapper details from the `source` body comment.
-     *
-     * @private
-     * @param {string} source The source to inspect.
-     * @returns {Array} Returns the wrapper details.
-     */
-    function getWrapDetails(source) {
-      var match = source.match(reWrapDetails);
-      return match ? match[1].split(reSplitDetails) : [];
-    }
-
-    /**
-     * Checks if `path` exists on `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @param {Function} hasFunc The function to check properties.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     */
-    function hasPath(object, path, hasFunc) {
-      path = castPath(path, object);
-
-      var index = -1,
-          length = path.length,
-          result = false;
-
-      while (++index < length) {
-        var key = toKey(path[index]);
-        if (!(result = object != null && hasFunc(object, key))) {
-          break;
-        }
-        object = object[key];
-      }
-      if (result || ++index != length) {
-        return result;
-      }
-      length = object == null ? 0 : object.length;
-      return !!length && isLength(length) && isIndex(key, length) &&
-        (isArray(object) || isArguments(object));
-    }
-
-    /**
-     * Initializes an array clone.
-     *
-     * @private
-     * @param {Array} array The array to clone.
-     * @returns {Array} Returns the initialized clone.
-     */
-    function initCloneArray(array) {
-      var length = array.length,
-          result = new array.constructor(length);
-
-      // Add properties assigned by `RegExp#exec`.
-      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {
-        result.index = array.index;
-        result.input = array.input;
-      }
-      return result;
-    }
-
-    /**
-     * Initializes an object clone.
-     *
-     * @private
-     * @param {Object} object The object to clone.
-     * @returns {Object} Returns the initialized clone.
-     */
-    function initCloneObject(object) {
-      return (typeof object.constructor == 'function' && !isPrototype(object))
-        ? baseCreate(getPrototype(object))
-        : {};
-    }
-
-    /**
-     * Initializes an object clone based on its `toStringTag`.
-     *
-     * **Note:** This function only supports cloning values with tags of
-     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.
-     *
-     * @private
-     * @param {Object} object The object to clone.
-     * @param {string} tag The `toStringTag` of the object to clone.
-     * @param {boolean} [isDeep] Specify a deep clone.
-     * @returns {Object} Returns the initialized clone.
-     */
-    function initCloneByTag(object, tag, isDeep) {
-      var Ctor = object.constructor;
-      switch (tag) {
-        case arrayBufferTag:
-          return cloneArrayBuffer(object);
-
-        case boolTag:
-        case dateTag:
-          return new Ctor(+object);
-
-        case dataViewTag:
-          return cloneDataView(object, isDeep);
-
-        case float32Tag: case float64Tag:
-        case int8Tag: case int16Tag: case int32Tag:
-        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:
-          return cloneTypedArray(object, isDeep);
-
-        case mapTag:
-          return new Ctor;
-
-        case numberTag:
-        case stringTag:
-          return new Ctor(object);
-
-        case regexpTag:
-          return cloneRegExp(object);
-
-        case setTag:
-          return new Ctor;
-
-        case symbolTag:
-          return cloneSymbol(object);
-      }
-    }
-
-    /**
-     * Inserts wrapper `details` in a comment at the top of the `source` body.
-     *
-     * @private
-     * @param {string} source The source to modify.
-     * @returns {Array} details The details to insert.
-     * @returns {string} Returns the modified source.
-     */
-    function insertWrapDetails(source, details) {
-      var length = details.length;
-      if (!length) {
-        return source;
-      }
-      var lastIndex = length - 1;
-      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];
-      details = details.join(length > 2 ? ', ' : ' ');
-      return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n');
-    }
-
-    /**
-     * Checks if `value` is a flattenable `arguments` object or array.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
-     */
-    function isFlattenable(value) {
-      return isArray(value) || isArguments(value) ||
-        !!(spreadableSymbol && value && value[spreadableSymbol]);
-    }
-
-    /**
-     * Checks if `value` is a valid array-like index.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
-     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
-     */
-    function isIndex(value, length) {
-      var type = typeof value;
-      length = length == null ? MAX_SAFE_INTEGER : length;
-
-      return !!length &&
-        (type == 'number' ||
-          (type != 'symbol' && reIsUint.test(value))) &&
-            (value > -1 && value % 1 == 0 && value < length);
-    }
-
-    /**
-     * Checks if the given arguments are from an iteratee call.
-     *
-     * @private
-     * @param {*} value The potential iteratee value argument.
-     * @param {*} index The potential iteratee index or key argument.
-     * @param {*} object The potential iteratee object argument.
-     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,
-     *  else `false`.
-     */
-    function isIterateeCall(value, index, object) {
-      if (!isObject(object)) {
-        return false;
-      }
-      var type = typeof index;
-      if (type == 'number'
-            ? (isArrayLike(object) && isIndex(index, object.length))
-            : (type == 'string' && index in object)
-          ) {
-        return eq(object[index], value);
-      }
-      return false;
-    }
-
-    /**
-     * Checks if `value` is a property name and not a property path.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @param {Object} [object] The object to query keys on.
-     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
-     */
-    function isKey(value, object) {
-      if (isArray(value)) {
-        return false;
-      }
-      var type = typeof value;
-      if (type == 'number' || type == 'symbol' || type == 'boolean' ||
-          value == null || isSymbol(value)) {
-        return true;
-      }
-      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
-        (object != null && value in Object(object));
-    }
-
-    /**
-     * Checks if `value` is suitable for use as unique object key.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
-     */
-    function isKeyable(value) {
-      var type = typeof value;
-      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
-        ? (value !== '__proto__')
-        : (value === null);
-    }
-
-    /**
-     * Checks if `func` has a lazy counterpart.
-     *
-     * @private
-     * @param {Function} func The function to check.
-     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
-     *  else `false`.
-     */
-    function isLaziable(func) {
-      var funcName = getFuncName(func),
-          other = lodash[funcName];
-
-      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
-        return false;
-      }
-      if (func === other) {
-        return true;
-      }
-      var data = getData(other);
-      return !!data && func === data[0];
-    }
-
-    /**
-     * Checks if `func` has its source masked.
-     *
-     * @private
-     * @param {Function} func The function to check.
-     * @returns {boolean} Returns `true` if `func` is masked, else `false`.
-     */
-    function isMasked(func) {
-      return !!maskSrcKey && (maskSrcKey in func);
-    }
-
-    /**
-     * Checks if `func` is capable of being masked.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.
-     */
-    var isMaskable = coreJsData ? isFunction : stubFalse;
-
-    /**
-     * Checks if `value` is likely a prototype object.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
-     */
-    function isPrototype(value) {
-      var Ctor = value && value.constructor,
-          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
-
-      return value === proto;
-    }
-
-    /**
-     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
-     *
-     * @private
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` if suitable for strict
-     *  equality comparisons, else `false`.
-     */
-    function isStrictComparable(value) {
-      return value === value && !isObject(value);
-    }
-
-    /**
-     * A specialized version of `matchesProperty` for source values suitable
-     * for strict equality comparisons, i.e. `===`.
-     *
-     * @private
-     * @param {string} key The key of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     */
-    function matchesStrictComparable(key, srcValue) {
-      return function(object) {
-        if (object == null) {
-          return false;
-        }
-        return object[key] === srcValue &&
-          (srcValue !== undefined || (key in Object(object)));
-      };
-    }
-
-    /**
-     * A specialized version of `_.memoize` which clears the memoized function's
-     * cache when it exceeds `MAX_MEMOIZE_SIZE`.
-     *
-     * @private
-     * @param {Function} func The function to have its output memoized.
-     * @returns {Function} Returns the new memoized function.
-     */
-    function memoizeCapped(func) {
-      var result = memoize(func, function(key) {
-        if (cache.size === MAX_MEMOIZE_SIZE) {
-          cache.clear();
-        }
-        return key;
-      });
-
-      var cache = result.cache;
-      return result;
-    }
-
-    /**
-     * Merges the function metadata of `source` into `data`.
-     *
-     * Merging metadata reduces the number of wrappers used to invoke a function.
-     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`
-     * may be applied regardless of execution order. Methods like `_.ary` and
-     * `_.rearg` modify function arguments, making the order in which they are
-     * executed important, preventing the merging of metadata. However, we make
-     * an exception for a safe combined case where curried functions have `_.ary`
-     * and or `_.rearg` applied.
-     *
-     * @private
-     * @param {Array} data The destination metadata.
-     * @param {Array} source The source metadata.
-     * @returns {Array} Returns `data`.
-     */
-    function mergeData(data, source) {
-      var bitmask = data[1],
-          srcBitmask = source[1],
-          newBitmask = bitmask | srcBitmask,
-          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);
-
-      var isCombo =
-        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||
-        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||
-        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));
-
-      // Exit early if metadata can't be merged.
-      if (!(isCommon || isCombo)) {
-        return data;
-      }
-      // Use source `thisArg` if available.
-      if (srcBitmask & WRAP_BIND_FLAG) {
-        data[2] = source[2];
-        // Set when currying a bound function.
-        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;
-      }
-      // Compose partial arguments.
-      var value = source[3];
-      if (value) {
-        var partials = data[3];
-        data[3] = partials ? composeArgs(partials, value, source[4]) : value;
-        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];
-      }
-      // Compose partial right arguments.
-      value = source[5];
-      if (value) {
-        partials = data[5];
-        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;
-        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];
-      }
-      // Use source `argPos` if available.
-      value = source[7];
-      if (value) {
-        data[7] = value;
-      }
-      // Use source `ary` if it's smaller.
-      if (srcBitmask & WRAP_ARY_FLAG) {
-        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);
-      }
-      // Use source `arity` if one is not provided.
-      if (data[9] == null) {
-        data[9] = source[9];
-      }
-      // Use source `func` and merge bitmasks.
-      data[0] = source[0];
-      data[1] = newBitmask;
-
-      return data;
-    }
-
-    /**
-     * This function is like
-     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-     * except that it includes inherited enumerable properties.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     */
-    function nativeKeysIn(object) {
-      var result = [];
-      if (object != null) {
-        for (var key in Object(object)) {
-          result.push(key);
-        }
-      }
-      return result;
-    }
-
-    /**
-     * Converts `value` to a string using `Object.prototype.toString`.
-     *
-     * @private
-     * @param {*} value The value to convert.
-     * @returns {string} Returns the converted string.
-     */
-    function objectToString(value) {
-      return nativeObjectToString.call(value);
-    }
-
-    /**
-     * A specialized version of `baseRest` which transforms the rest array.
-     *
-     * @private
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @param {Function} transform The rest array transform.
-     * @returns {Function} Returns the new function.
-     */
-    function overRest(func, start, transform) {
-      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
-      return function() {
-        var args = arguments,
-            index = -1,
-            length = nativeMax(args.length - start, 0),
-            array = Array(length);
-
-        while (++index < length) {
-          array[index] = args[start + index];
-        }
-        index = -1;
-        var otherArgs = Array(start + 1);
-        while (++index < start) {
-          otherArgs[index] = args[index];
-        }
-        otherArgs[start] = transform(array);
-        return apply(func, this, otherArgs);
-      };
-    }
-
-    /**
-     * Gets the parent value at `path` of `object`.
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {Array} path The path to get the parent value of.
-     * @returns {*} Returns the parent value.
-     */
-    function parent(object, path) {
-      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
-    }
-
-    /**
-     * Reorder `array` according to the specified indexes where the element at
-     * the first index is assigned as the first element, the element at
-     * the second index is assigned as the second element, and so on.
-     *
-     * @private
-     * @param {Array} array The array to reorder.
-     * @param {Array} indexes The arranged array indexes.
-     * @returns {Array} Returns `array`.
-     */
-    function reorder(array, indexes) {
-      var arrLength = array.length,
-          length = nativeMin(indexes.length, arrLength),
-          oldArray = copyArray(array);
-
-      while (length--) {
-        var index = indexes[length];
-        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;
-      }
-      return array;
-    }
-
-    /**
-     * Gets the value at `key`, unless `key` is "__proto__" or "constructor".
-     *
-     * @private
-     * @param {Object} object The object to query.
-     * @param {string} key The key of the property to get.
-     * @returns {*} Returns the property value.
-     */
-    function safeGet(object, key) {
-      if (key === 'constructor' && typeof object[key] === 'function') {
-        return;
-      }
-
-      if (key == '__proto__') {
-        return;
-      }
-
-      return object[key];
-    }
-
-    /**
-     * Sets metadata for `func`.
-     *
-     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short
-     * period of time, it will trip its breaker and transition to an identity
-     * function to avoid garbage collection pauses in V8. See
-     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)
-     * for more details.
-     *
-     * @private
-     * @param {Function} func The function to associate metadata with.
-     * @param {*} data The metadata.
-     * @returns {Function} Returns `func`.
-     */
-    var setData = shortOut(baseSetData);
-
-    /**
-     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).
-     *
-     * @private
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @returns {number|Object} Returns the timer id or timeout object.
-     */
-    var setTimeout = ctxSetTimeout || function(func, wait) {
-      return root.setTimeout(func, wait);
-    };
-
-    /**
-     * Sets the `toString` method of `func` to return `string`.
-     *
-     * @private
-     * @param {Function} func The function to modify.
-     * @param {Function} string The `toString` result.
-     * @returns {Function} Returns `func`.
-     */
-    var setToString = shortOut(baseSetToString);
-
-    /**
-     * Sets the `toString` method of `wrapper` to mimic the source of `reference`
-     * with wrapper details in a comment at the top of the source body.
-     *
-     * @private
-     * @param {Function} wrapper The function to modify.
-     * @param {Function} reference The reference function.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @returns {Function} Returns `wrapper`.
-     */
-    function setWrapToString(wrapper, reference, bitmask) {
-      var source = (reference + '');
-      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));
-    }
-
-    /**
-     * Creates a function that'll short out and invoke `identity` instead
-     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
-     * milliseconds.
-     *
-     * @private
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new shortable function.
-     */
-    function shortOut(func) {
-      var count = 0,
-          lastCalled = 0;
-
-      return function() {
-        var stamp = nativeNow(),
-            remaining = HOT_SPAN - (stamp - lastCalled);
-
-        lastCalled = stamp;
-        if (remaining > 0) {
-          if (++count >= HOT_COUNT) {
-            return arguments[0];
-          }
-        } else {
-          count = 0;
-        }
-        return func.apply(undefined, arguments);
-      };
-    }
-
-    /**
-     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.
-     *
-     * @private
-     * @param {Array} array The array to shuffle.
-     * @param {number} [size=array.length] The size of `array`.
-     * @returns {Array} Returns `array`.
-     */
-    function shuffleSelf(array, size) {
-      var index = -1,
-          length = array.length,
-          lastIndex = length - 1;
-
-      size = size === undefined ? length : size;
-      while (++index < size) {
-        var rand = baseRandom(index, lastIndex),
-            value = array[rand];
-
-        array[rand] = array[index];
-        array[index] = value;
-      }
-      array.length = size;
-      return array;
-    }
-
-    /**
-     * Converts `string` to a property path array.
-     *
-     * @private
-     * @param {string} string The string to convert.
-     * @returns {Array} Returns the property path array.
-     */
-    var stringToPath = memoizeCapped(function(string) {
-      var result = [];
-      if (string.charCodeAt(0) === 46 /* . */) {
-        result.push('');
-      }
-      string.replace(rePropName, function(match, number, quote, subString) {
-        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
-      });
-      return result;
-    });
-
-    /**
-     * Converts `value` to a string key if it's not a string or symbol.
-     *
-     * @private
-     * @param {*} value The value to inspect.
-     * @returns {string|symbol} Returns the key.
-     */
-    function toKey(value) {
-      if (typeof value == 'string' || isSymbol(value)) {
-        return value;
-      }
-      var result = (value + '');
-      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
-    }
-
-    /**
-     * Converts `func` to its source code.
-     *
-     * @private
-     * @param {Function} func The function to convert.
-     * @returns {string} Returns the source code.
-     */
-    function toSource(func) {
-      if (func != null) {
-        try {
-          return funcToString.call(func);
-        } catch (e) {}
-        try {
-          return (func + '');
-        } catch (e) {}
-      }
-      return '';
-    }
-
-    /**
-     * Updates wrapper `details` based on `bitmask` flags.
-     *
-     * @private
-     * @returns {Array} details The details to modify.
-     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.
-     * @returns {Array} Returns `details`.
-     */
-    function updateWrapDetails(details, bitmask) {
-      arrayEach(wrapFlags, function(pair) {
-        var value = '_.' + pair[0];
-        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {
-          details.push(value);
-        }
-      });
-      return details.sort();
-    }
-
-    /**
-     * Creates a clone of `wrapper`.
-     *
-     * @private
-     * @param {Object} wrapper The wrapper to clone.
-     * @returns {Object} Returns the cloned wrapper.
-     */
-    function wrapperClone(wrapper) {
-      if (wrapper instanceof LazyWrapper) {
-        return wrapper.clone();
-      }
-      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
-      result.__actions__ = copyArray(wrapper.__actions__);
-      result.__index__  = wrapper.__index__;
-      result.__values__ = wrapper.__values__;
-      return result;
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates an array of elements split into groups the length of `size`.
-     * If `array` can't be split evenly, the final chunk will be the remaining
-     * elements.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to process.
-     * @param {number} [size=1] The length of each chunk
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the new array of chunks.
-     * @example
-     *
-     * _.chunk(['a', 'b', 'c', 'd'], 2);
-     * // => [['a', 'b'], ['c', 'd']]
-     *
-     * _.chunk(['a', 'b', 'c', 'd'], 3);
-     * // => [['a', 'b', 'c'], ['d']]
-     */
-    function chunk(array, size, guard) {
-      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {
-        size = 1;
-      } else {
-        size = nativeMax(toInteger(size), 0);
-      }
-      var length = array == null ? 0 : array.length;
-      if (!length || size < 1) {
-        return [];
-      }
-      var index = 0,
-          resIndex = 0,
-          result = Array(nativeCeil(length / size));
-
-      while (index < length) {
-        result[resIndex++] = baseSlice(array, index, (index += size));
-      }
-      return result;
-    }
-
-    /**
-     * Creates an array with all falsey values removed. The values `false`, `null`,
-     * `0`, `""`, `undefined`, and `NaN` are falsey.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to compact.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.compact([0, 1, false, 2, '', 3]);
-     * // => [1, 2, 3]
-     */
-    function compact(array) {
-      var index = -1,
-          length = array == null ? 0 : array.length,
-          resIndex = 0,
-          result = [];
-
-      while (++index < length) {
-        var value = array[index];
-        if (value) {
-          result[resIndex++] = value;
-        }
-      }
-      return result;
-    }
-
-    /**
-     * Creates a new array concatenating `array` with any additional arrays
-     * and/or values.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to concatenate.
-     * @param {...*} [values] The values to concatenate.
-     * @returns {Array} Returns the new concatenated array.
-     * @example
-     *
-     * var array = [1];
-     * var other = _.concat(array, 2, [3], [[4]]);
-     *
-     * console.log(other);
-     * // => [1, 2, 3, [4]]
-     *
-     * console.log(array);
-     * // => [1]
-     */
-    function concat() {
-      var length = arguments.length;
-      if (!length) {
-        return [];
-      }
-      var args = Array(length - 1),
-          array = arguments[0],
-          index = length;
-
-      while (index--) {
-        args[index - 1] = arguments[index];
-      }
-      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));
-    }
-
-    /**
-     * Creates an array of `array` values not included in the other given arrays
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. The order and references of result values are
-     * determined by the first array.
-     *
-     * **Note:** Unlike `_.pullAll`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.without, _.xor
-     * @example
-     *
-     * _.difference([2, 1], [2, 3]);
-     * // => [1]
-     */
-    var difference = baseRest(function(array, values) {
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))
-        : [];
-    });
-
-    /**
-     * This method is like `_.difference` except that it accepts `iteratee` which
-     * is invoked for each element of `array` and `values` to generate the criterion
-     * by which they're compared. The order and references of result values are
-     * determined by the first array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');
-     * // => [{ 'x': 2 }]
-     */
-    var differenceBy = baseRest(function(array, values) {
-      var iteratee = last(values);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))
-        : [];
-    });
-
-    /**
-     * This method is like `_.difference` except that it accepts `comparator`
-     * which is invoked to compare elements of `array` to `values`. The order and
-     * references of result values are determined by the first array. The comparator
-     * is invoked with two arguments: (arrVal, othVal).
-     *
-     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...Array} [values] The values to exclude.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     *
-     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
-     * // => [{ 'x': 2, 'y': 1 }]
-     */
-    var differenceWith = baseRest(function(array, values) {
-      var comparator = last(values);
-      if (isArrayLikeObject(comparator)) {
-        comparator = undefined;
-      }
-      return isArrayLikeObject(array)
-        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)
-        : [];
-    });
-
-    /**
-     * Creates a slice of `array` with `n` elements dropped from the beginning.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to drop.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.drop([1, 2, 3]);
-     * // => [2, 3]
-     *
-     * _.drop([1, 2, 3], 2);
-     * // => [3]
-     *
-     * _.drop([1, 2, 3], 5);
-     * // => []
-     *
-     * _.drop([1, 2, 3], 0);
-     * // => [1, 2, 3]
-     */
-    function drop(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      return baseSlice(array, n < 0 ? 0 : n, length);
-    }
-
-    /**
-     * Creates a slice of `array` with `n` elements dropped from the end.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to drop.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.dropRight([1, 2, 3]);
-     * // => [1, 2]
-     *
-     * _.dropRight([1, 2, 3], 2);
-     * // => [1]
-     *
-     * _.dropRight([1, 2, 3], 5);
-     * // => []
-     *
-     * _.dropRight([1, 2, 3], 0);
-     * // => [1, 2, 3]
-     */
-    function dropRight(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      n = length - n;
-      return baseSlice(array, 0, n < 0 ? 0 : n);
-    }
-
-    /**
-     * Creates a slice of `array` excluding elements dropped from the end.
-     * Elements are dropped until `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.dropRightWhile(users, function(o) { return !o.active; });
-     * // => objects for ['barney']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.dropRightWhile(users, ['active', false]);
-     * // => objects for ['barney']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.dropRightWhile(users, 'active');
-     * // => objects for ['barney', 'fred', 'pebbles']
-     */
-    function dropRightWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), true, true)
-        : [];
-    }
-
-    /**
-     * Creates a slice of `array` excluding elements dropped from the beginning.
-     * Elements are dropped until `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.dropWhile(users, function(o) { return !o.active; });
-     * // => objects for ['pebbles']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.dropWhile(users, { 'user': 'barney', 'active': false });
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.dropWhile(users, ['active', false]);
-     * // => objects for ['pebbles']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.dropWhile(users, 'active');
-     * // => objects for ['barney', 'fred', 'pebbles']
-     */
-    function dropWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), true)
-        : [];
-    }
-
-    /**
-     * Fills elements of `array` with `value` from `start` up to, but not
-     * including, `end`.
-     *
-     * **Note:** This method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Array
-     * @param {Array} array The array to fill.
-     * @param {*} value The value to fill `array` with.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _.fill(array, 'a');
-     * console.log(array);
-     * // => ['a', 'a', 'a']
-     *
-     * _.fill(Array(3), 2);
-     * // => [2, 2, 2]
-     *
-     * _.fill([4, 6, 8, 10], '*', 1, 3);
-     * // => [4, '*', '*', 10]
-     */
-    function fill(array, value, start, end) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {
-        start = 0;
-        end = length;
-      }
-      return baseFill(array, value, start, end);
-    }
-
-    /**
-     * This method is like `_.find` except that it returns the index of the first
-     * element `predicate` returns truthy for instead of the element itself.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {number} Returns the index of the found element, else `-1`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.findIndex(users, function(o) { return o.user == 'barney'; });
-     * // => 0
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findIndex(users, { 'user': 'fred', 'active': false });
-     * // => 1
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findIndex(users, ['active', false]);
-     * // => 0
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findIndex(users, 'active');
-     * // => 2
-     */
-    function findIndex(array, predicate, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = fromIndex == null ? 0 : toInteger(fromIndex);
-      if (index < 0) {
-        index = nativeMax(length + index, 0);
-      }
-      return baseFindIndex(array, getIteratee(predicate, 3), index);
-    }
-
-    /**
-     * This method is like `_.findIndex` except that it iterates over elements
-     * of `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=array.length-1] The index to search from.
-     * @returns {number} Returns the index of the found element, else `-1`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
-     * // => 2
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findLastIndex(users, { 'user': 'barney', 'active': true });
-     * // => 0
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findLastIndex(users, ['active', false]);
-     * // => 2
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findLastIndex(users, 'active');
-     * // => 0
-     */
-    function findLastIndex(array, predicate, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = length - 1;
-      if (fromIndex !== undefined) {
-        index = toInteger(fromIndex);
-        index = fromIndex < 0
-          ? nativeMax(length + index, 0)
-          : nativeMin(index, length - 1);
-      }
-      return baseFindIndex(array, getIteratee(predicate, 3), index, true);
-    }
-
-    /**
-     * Flattens `array` a single level deep.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * _.flatten([1, [2, [3, [4]], 5]]);
-     * // => [1, 2, [3, [4]], 5]
-     */
-    function flatten(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseFlatten(array, 1) : [];
-    }
-
-    /**
-     * Recursively flattens `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * _.flattenDeep([1, [2, [3, [4]], 5]]);
-     * // => [1, 2, 3, 4, 5]
-     */
-    function flattenDeep(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseFlatten(array, INFINITY) : [];
-    }
-
-    /**
-     * Recursively flatten `array` up to `depth` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.4.0
-     * @category Array
-     * @param {Array} array The array to flatten.
-     * @param {number} [depth=1] The maximum recursion depth.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * var array = [1, [2, [3, [4]], 5]];
-     *
-     * _.flattenDepth(array, 1);
-     * // => [1, 2, [3, [4]], 5]
-     *
-     * _.flattenDepth(array, 2);
-     * // => [1, 2, 3, [4], 5]
-     */
-    function flattenDepth(array, depth) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      depth = depth === undefined ? 1 : toInteger(depth);
-      return baseFlatten(array, depth);
-    }
-
-    /**
-     * The inverse of `_.toPairs`; this method returns an object composed
-     * from key-value `pairs`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} pairs The key-value pairs.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.fromPairs([['a', 1], ['b', 2]]);
-     * // => { 'a': 1, 'b': 2 }
-     */
-    function fromPairs(pairs) {
-      var index = -1,
-          length = pairs == null ? 0 : pairs.length,
-          result = {};
-
-      while (++index < length) {
-        var pair = pairs[index];
-        result[pair[0]] = pair[1];
-      }
-      return result;
-    }
-
-    /**
-     * Gets the first element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @alias first
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {*} Returns the first element of `array`.
-     * @example
-     *
-     * _.head([1, 2, 3]);
-     * // => 1
-     *
-     * _.head([]);
-     * // => undefined
-     */
-    function head(array) {
-      return (array && array.length) ? array[0] : undefined;
-    }
-
-    /**
-     * Gets the index at which the first occurrence of `value` is found in `array`
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. If `fromIndex` is negative, it's used as the
-     * offset from the end of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.indexOf([1, 2, 1, 2], 2);
-     * // => 1
-     *
-     * // Search from the `fromIndex`.
-     * _.indexOf([1, 2, 1, 2], 2, 2);
-     * // => 3
-     */
-    function indexOf(array, value, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = fromIndex == null ? 0 : toInteger(fromIndex);
-      if (index < 0) {
-        index = nativeMax(length + index, 0);
-      }
-      return baseIndexOf(array, value, index);
-    }
-
-    /**
-     * Gets all but the last element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.initial([1, 2, 3]);
-     * // => [1, 2]
-     */
-    function initial(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseSlice(array, 0, -1) : [];
-    }
-
-    /**
-     * Creates an array of unique values that are included in all given arrays
-     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons. The order and references of result values are
-     * determined by the first array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * _.intersection([2, 1], [2, 3]);
-     * // => [2]
-     */
-    var intersection = baseRest(function(arrays) {
-      var mapped = arrayMap(arrays, castArrayLikeObject);
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped)
-        : [];
-    });
-
-    /**
-     * This method is like `_.intersection` except that it accepts `iteratee`
-     * which is invoked for each element of each `arrays` to generate the criterion
-     * by which they're compared. The order and references of result values are
-     * determined by the first array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [2.1]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }]
-     */
-    var intersectionBy = baseRest(function(arrays) {
-      var iteratee = last(arrays),
-          mapped = arrayMap(arrays, castArrayLikeObject);
-
-      if (iteratee === last(mapped)) {
-        iteratee = undefined;
-      } else {
-        mapped.pop();
-      }
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped, getIteratee(iteratee, 2))
-        : [];
-    });
-
-    /**
-     * This method is like `_.intersection` except that it accepts `comparator`
-     * which is invoked to compare elements of `arrays`. The order and references
-     * of result values are determined by the first array. The comparator is
-     * invoked with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of intersecting values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.intersectionWith(objects, others, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }]
-     */
-    var intersectionWith = baseRest(function(arrays) {
-      var comparator = last(arrays),
-          mapped = arrayMap(arrays, castArrayLikeObject);
-
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      if (comparator) {
-        mapped.pop();
-      }
-      return (mapped.length && mapped[0] === arrays[0])
-        ? baseIntersection(mapped, undefined, comparator)
-        : [];
-    });
-
-    /**
-     * Converts all elements in `array` into a string separated by `separator`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to convert.
-     * @param {string} [separator=','] The element separator.
-     * @returns {string} Returns the joined string.
-     * @example
-     *
-     * _.join(['a', 'b', 'c'], '~');
-     * // => 'a~b~c'
-     */
-    function join(array, separator) {
-      return array == null ? '' : nativeJoin.call(array, separator);
-    }
-
-    /**
-     * Gets the last element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {*} Returns the last element of `array`.
-     * @example
-     *
-     * _.last([1, 2, 3]);
-     * // => 3
-     */
-    function last(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? array[length - 1] : undefined;
-    }
-
-    /**
-     * This method is like `_.indexOf` except that it iterates over elements of
-     * `array` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=array.length-1] The index to search from.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.lastIndexOf([1, 2, 1, 2], 2);
-     * // => 3
-     *
-     * // Search from the `fromIndex`.
-     * _.lastIndexOf([1, 2, 1, 2], 2, 2);
-     * // => 1
-     */
-    function lastIndexOf(array, value, fromIndex) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return -1;
-      }
-      var index = length;
-      if (fromIndex !== undefined) {
-        index = toInteger(fromIndex);
-        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
-      }
-      return value === value
-        ? strictLastIndexOf(array, value, index)
-        : baseFindIndex(array, baseIsNaN, index, true);
-    }
-
-    /**
-     * Gets the element at index `n` of `array`. If `n` is negative, the nth
-     * element from the end is returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.11.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=0] The index of the element to return.
-     * @returns {*} Returns the nth element of `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'd'];
-     *
-     * _.nth(array, 1);
-     * // => 'b'
-     *
-     * _.nth(array, -2);
-     * // => 'c';
-     */
-    function nth(array, n) {
-      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
-    }
-
-    /**
-     * Removes all given values from `array` using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
-     * to remove elements from an array by predicate.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {...*} [values] The values to remove.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-     *
-     * _.pull(array, 'a', 'c');
-     * console.log(array);
-     * // => ['b', 'b']
-     */
-    var pull = baseRest(pullAll);
-
-    /**
-     * This method is like `_.pull` except that it accepts an array of values to remove.
-     *
-     * **Note:** Unlike `_.difference`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
-     *
-     * _.pullAll(array, ['a', 'c']);
-     * console.log(array);
-     * // => ['b', 'b']
-     */
-    function pullAll(array, values) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values)
-        : array;
-    }
-
-    /**
-     * This method is like `_.pullAll` except that it accepts `iteratee` which is
-     * invoked for each element of `array` and `values` to generate the criterion
-     * by which they're compared. The iteratee is invoked with one argument: (value).
-     *
-     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
-     *
-     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
-     * console.log(array);
-     * // => [{ 'x': 2 }]
-     */
-    function pullAllBy(array, values, iteratee) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values, getIteratee(iteratee, 2))
-        : array;
-    }
-
-    /**
-     * This method is like `_.pullAll` except that it accepts `comparator` which
-     * is invoked to compare elements of `array` to `values`. The comparator is
-     * invoked with two arguments: (arrVal, othVal).
-     *
-     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Array} values The values to remove.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
-     *
-     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
-     * console.log(array);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
-     */
-    function pullAllWith(array, values, comparator) {
-      return (array && array.length && values && values.length)
-        ? basePullAll(array, values, undefined, comparator)
-        : array;
-    }
-
-    /**
-     * Removes elements from `array` corresponding to `indexes` and returns an
-     * array of removed elements.
-     *
-     * **Note:** Unlike `_.at`, this method mutates `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {...(number|number[])} [indexes] The indexes of elements to remove.
-     * @returns {Array} Returns the new array of removed elements.
-     * @example
-     *
-     * var array = ['a', 'b', 'c', 'd'];
-     * var pulled = _.pullAt(array, [1, 3]);
-     *
-     * console.log(array);
-     * // => ['a', 'c']
-     *
-     * console.log(pulled);
-     * // => ['b', 'd']
-     */
-    var pullAt = flatRest(function(array, indexes) {
-      var length = array == null ? 0 : array.length,
-          result = baseAt(array, indexes);
-
-      basePullAt(array, arrayMap(indexes, function(index) {
-        return isIndex(index, length) ? +index : index;
-      }).sort(compareAscending));
-
-      return result;
-    });
-
-    /**
-     * Removes all elements from `array` that `predicate` returns truthy for
-     * and returns an array of the removed elements. The predicate is invoked
-     * with three arguments: (value, index, array).
-     *
-     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
-     * to pull elements from an array by value.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new array of removed elements.
-     * @example
-     *
-     * var array = [1, 2, 3, 4];
-     * var evens = _.remove(array, function(n) {
-     *   return n % 2 == 0;
-     * });
-     *
-     * console.log(array);
-     * // => [1, 3]
-     *
-     * console.log(evens);
-     * // => [2, 4]
-     */
-    function remove(array, predicate) {
-      var result = [];
-      if (!(array && array.length)) {
-        return result;
-      }
-      var index = -1,
-          indexes = [],
-          length = array.length;
-
-      predicate = getIteratee(predicate, 3);
-      while (++index < length) {
-        var value = array[index];
-        if (predicate(value, index, array)) {
-          result.push(value);
-          indexes.push(index);
-        }
-      }
-      basePullAt(array, indexes);
-      return result;
-    }
-
-    /**
-     * Reverses `array` so that the first element becomes the last, the second
-     * element becomes the second to last, and so on.
-     *
-     * **Note:** This method mutates `array` and is based on
-     * [`Array#reverse`](https://mdn.io/Array/reverse).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to modify.
-     * @returns {Array} Returns `array`.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _.reverse(array);
-     * // => [3, 2, 1]
-     *
-     * console.log(array);
-     * // => [3, 2, 1]
-     */
-    function reverse(array) {
-      return array == null ? array : nativeReverse.call(array);
-    }
-
-    /**
-     * Creates a slice of `array` from `start` up to, but not including, `end`.
-     *
-     * **Note:** This method is used instead of
-     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
-     * returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to slice.
-     * @param {number} [start=0] The start position.
-     * @param {number} [end=array.length] The end position.
-     * @returns {Array} Returns the slice of `array`.
-     */
-    function slice(array, start, end) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
-        start = 0;
-        end = length;
-      }
-      else {
-        start = start == null ? 0 : toInteger(start);
-        end = end === undefined ? length : toInteger(end);
-      }
-      return baseSlice(array, start, end);
-    }
-
-    /**
-     * Uses a binary search to determine the lowest index at which `value`
-     * should be inserted into `array` in order to maintain its sort order.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * _.sortedIndex([30, 50], 40);
-     * // => 1
-     */
-    function sortedIndex(array, value) {
-      return baseSortedIndex(array, value);
-    }
-
-    /**
-     * This method is like `_.sortedIndex` except that it accepts `iteratee`
-     * which is invoked for `value` and each element of `array` to compute their
-     * sort ranking. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * var objects = [{ 'x': 4 }, { 'x': 5 }];
-     *
-     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-     * // => 0
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
-     * // => 0
-     */
-    function sortedIndexBy(array, value, iteratee) {
-      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));
-    }
-
-    /**
-     * This method is like `_.indexOf` except that it performs a binary
-     * search on a sorted `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
-     * // => 1
-     */
-    function sortedIndexOf(array, value) {
-      var length = array == null ? 0 : array.length;
-      if (length) {
-        var index = baseSortedIndex(array, value);
-        if (index < length && eq(array[index], value)) {
-          return index;
-        }
-      }
-      return -1;
-    }
-
-    /**
-     * This method is like `_.sortedIndex` except that it returns the highest
-     * index at which `value` should be inserted into `array` in order to
-     * maintain its sort order.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
-     * // => 4
-     */
-    function sortedLastIndex(array, value) {
-      return baseSortedIndex(array, value, true);
-    }
-
-    /**
-     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
-     * which is invoked for `value` and each element of `array` to compute their
-     * sort ranking. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The sorted array to inspect.
-     * @param {*} value The value to evaluate.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the index at which `value` should be inserted
-     *  into `array`.
-     * @example
-     *
-     * var objects = [{ 'x': 4 }, { 'x': 5 }];
-     *
-     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
-     * // => 1
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
-     * // => 1
-     */
-    function sortedLastIndexBy(array, value, iteratee) {
-      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);
-    }
-
-    /**
-     * This method is like `_.lastIndexOf` except that it performs a binary
-     * search on a sorted `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {*} value The value to search for.
-     * @returns {number} Returns the index of the matched value, else `-1`.
-     * @example
-     *
-     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
-     * // => 3
-     */
-    function sortedLastIndexOf(array, value) {
-      var length = array == null ? 0 : array.length;
-      if (length) {
-        var index = baseSortedIndex(array, value, true) - 1;
-        if (eq(array[index], value)) {
-          return index;
-        }
-      }
-      return -1;
-    }
-
-    /**
-     * This method is like `_.uniq` except that it's designed and optimized
-     * for sorted arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.sortedUniq([1, 1, 2]);
-     * // => [1, 2]
-     */
-    function sortedUniq(array) {
-      return (array && array.length)
-        ? baseSortedUniq(array)
-        : [];
-    }
-
-    /**
-     * This method is like `_.uniqBy` except that it's designed and optimized
-     * for sorted arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
-     * // => [1.1, 2.3]
-     */
-    function sortedUniqBy(array, iteratee) {
-      return (array && array.length)
-        ? baseSortedUniq(array, getIteratee(iteratee, 2))
-        : [];
-    }
-
-    /**
-     * Gets all but the first element of `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.tail([1, 2, 3]);
-     * // => [2, 3]
-     */
-    function tail(array) {
-      var length = array == null ? 0 : array.length;
-      return length ? baseSlice(array, 1, length) : [];
-    }
-
-    /**
-     * Creates a slice of `array` with `n` elements taken from the beginning.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to take.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.take([1, 2, 3]);
-     * // => [1]
-     *
-     * _.take([1, 2, 3], 2);
-     * // => [1, 2]
-     *
-     * _.take([1, 2, 3], 5);
-     * // => [1, 2, 3]
-     *
-     * _.take([1, 2, 3], 0);
-     * // => []
-     */
-    function take(array, n, guard) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      return baseSlice(array, 0, n < 0 ? 0 : n);
-    }
-
-    /**
-     * Creates a slice of `array` with `n` elements taken from the end.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {number} [n=1] The number of elements to take.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * _.takeRight([1, 2, 3]);
-     * // => [3]
-     *
-     * _.takeRight([1, 2, 3], 2);
-     * // => [2, 3]
-     *
-     * _.takeRight([1, 2, 3], 5);
-     * // => [1, 2, 3]
-     *
-     * _.takeRight([1, 2, 3], 0);
-     * // => []
-     */
-    function takeRight(array, n, guard) {
-      var length = array == null ? 0 : array.length;
-      if (!length) {
-        return [];
-      }
-      n = (guard || n === undefined) ? 1 : toInteger(n);
-      n = length - n;
-      return baseSlice(array, n < 0 ? 0 : n, length);
-    }
-
-    /**
-     * Creates a slice of `array` with elements taken from the end. Elements are
-     * taken until `predicate` returns falsey. The predicate is invoked with
-     * three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': true },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': false }
-     * ];
-     *
-     * _.takeRightWhile(users, function(o) { return !o.active; });
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
-     * // => objects for ['pebbles']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.takeRightWhile(users, ['active', false]);
-     * // => objects for ['fred', 'pebbles']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.takeRightWhile(users, 'active');
-     * // => []
-     */
-    function takeRightWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3), false, true)
-        : [];
-    }
-
-    /**
-     * Creates a slice of `array` with elements taken from the beginning. Elements
-     * are taken until `predicate` returns falsey. The predicate is invoked with
-     * three arguments: (value, index, array).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Array
-     * @param {Array} array The array to query.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the slice of `array`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'active': false },
-     *   { 'user': 'fred',    'active': false },
-     *   { 'user': 'pebbles', 'active': true }
-     * ];
-     *
-     * _.takeWhile(users, function(o) { return !o.active; });
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.takeWhile(users, { 'user': 'barney', 'active': false });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.takeWhile(users, ['active', false]);
-     * // => objects for ['barney', 'fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.takeWhile(users, 'active');
-     * // => []
-     */
-    function takeWhile(array, predicate) {
-      return (array && array.length)
-        ? baseWhile(array, getIteratee(predicate, 3))
-        : [];
-    }
-
-    /**
-     * Creates an array of unique values, in order, from all given arrays using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * _.union([2], [1, 2]);
-     * // => [2, 1]
-     */
-    var union = baseRest(function(arrays) {
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-    });
-
-    /**
-     * This method is like `_.union` except that it accepts `iteratee` which is
-     * invoked for each element of each `arrays` to generate the criterion by
-     * which uniqueness is computed. Result values are chosen from the first
-     * array in which the value occurs. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * _.unionBy([2.1], [1.2, 2.3], Math.floor);
-     * // => [2.1, 1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }, { 'x': 2 }]
-     */
-    var unionBy = baseRest(function(arrays) {
-      var iteratee = last(arrays);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));
-    });
-
-    /**
-     * This method is like `_.union` except that it accepts `comparator` which
-     * is invoked to compare elements of `arrays`. Result values are chosen from
-     * the first array in which the value occurs. The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of combined values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.unionWith(objects, others, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-     */
-    var unionWith = baseRest(function(arrays) {
-      var comparator = last(arrays);
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
-    });
-
-    /**
-     * Creates a duplicate-free version of an array, using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons, in which only the first occurrence of each element
-     * is kept. The order of result values is determined by the order they occur
-     * in the array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.uniq([2, 1, 2]);
-     * // => [2, 1]
-     */
-    function uniq(array) {
-      return (array && array.length) ? baseUniq(array) : [];
-    }
-
-    /**
-     * This method is like `_.uniq` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * uniqueness is computed. The order of result values is determined by the
-     * order they occur in the array. The iteratee is invoked with one argument:
-     * (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
-     * // => [2.1, 1.2]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 1 }, { 'x': 2 }]
-     */
-    function uniqBy(array, iteratee) {
-      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];
-    }
-
-    /**
-     * This method is like `_.uniq` except that it accepts `comparator` which
-     * is invoked to compare elements of `array`. The order of result values is
-     * determined by the order they occur in the array.The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new duplicate free array.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.uniqWith(objects, _.isEqual);
-     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
-     */
-    function uniqWith(array, comparator) {
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-    }
-
-    /**
-     * This method is like `_.zip` except that it accepts an array of grouped
-     * elements and creates an array regrouping the elements to their pre-zip
-     * configuration.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.2.0
-     * @category Array
-     * @param {Array} array The array of grouped elements to process.
-     * @returns {Array} Returns the new array of regrouped elements.
-     * @example
-     *
-     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
-     * // => [['a', 1, true], ['b', 2, false]]
-     *
-     * _.unzip(zipped);
-     * // => [['a', 'b'], [1, 2], [true, false]]
-     */
-    function unzip(array) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      var length = 0;
-      array = arrayFilter(array, function(group) {
-        if (isArrayLikeObject(group)) {
-          length = nativeMax(group.length, length);
-          return true;
-        }
-      });
-      return baseTimes(length, function(index) {
-        return arrayMap(array, baseProperty(index));
-      });
-    }
-
-    /**
-     * This method is like `_.unzip` except that it accepts `iteratee` to specify
-     * how regrouped values should be combined. The iteratee is invoked with the
-     * elements of each group: (...group).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Array
-     * @param {Array} array The array of grouped elements to process.
-     * @param {Function} [iteratee=_.identity] The function to combine
-     *  regrouped values.
-     * @returns {Array} Returns the new array of regrouped elements.
-     * @example
-     *
-     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
-     * // => [[1, 10, 100], [2, 20, 200]]
-     *
-     * _.unzipWith(zipped, _.add);
-     * // => [3, 30, 300]
-     */
-    function unzipWith(array, iteratee) {
-      if (!(array && array.length)) {
-        return [];
-      }
-      var result = unzip(array);
-      if (iteratee == null) {
-        return result;
-      }
-      return arrayMap(result, function(group) {
-        return apply(iteratee, undefined, group);
-      });
-    }
-
-    /**
-     * Creates an array excluding all given values using
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * for equality comparisons.
-     *
-     * **Note:** Unlike `_.pull`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {Array} array The array to inspect.
-     * @param {...*} [values] The values to exclude.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.difference, _.xor
-     * @example
-     *
-     * _.without([2, 1, 2, 3], 1, 2);
-     * // => [3]
-     */
-    var without = baseRest(function(array, values) {
-      return isArrayLikeObject(array)
-        ? baseDifference(array, values)
-        : [];
-    });
-
-    /**
-     * Creates an array of unique values that is the
-     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
-     * of the given arrays. The order of result values is determined by the order
-     * they occur in the arrays.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @returns {Array} Returns the new array of filtered values.
-     * @see _.difference, _.without
-     * @example
-     *
-     * _.xor([2, 1], [2, 3]);
-     * // => [1, 3]
-     */
-    var xor = baseRest(function(arrays) {
-      return baseXor(arrayFilter(arrays, isArrayLikeObject));
-    });
-
-    /**
-     * This method is like `_.xor` except that it accepts `iteratee` which is
-     * invoked for each element of each `arrays` to generate the criterion by
-     * which by which they're compared. The order of result values is determined
-     * by the order they occur in the arrays. The iteratee is invoked with one
-     * argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
-     * // => [1.2, 3.4]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
-     * // => [{ 'x': 2 }]
-     */
-    var xorBy = baseRest(function(arrays) {
-      var iteratee = last(arrays);
-      if (isArrayLikeObject(iteratee)) {
-        iteratee = undefined;
-      }
-      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));
-    });
-
-    /**
-     * This method is like `_.xor` except that it accepts `comparator` which is
-     * invoked to compare elements of `arrays`. The order of result values is
-     * determined by the order they occur in the arrays. The comparator is invoked
-     * with two arguments: (arrVal, othVal).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to inspect.
-     * @param {Function} [comparator] The comparator invoked per element.
-     * @returns {Array} Returns the new array of filtered values.
-     * @example
-     *
-     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
-     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
-     *
-     * _.xorWith(objects, others, _.isEqual);
-     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
-     */
-    var xorWith = baseRest(function(arrays) {
-      var comparator = last(arrays);
-      comparator = typeof comparator == 'function' ? comparator : undefined;
-      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
-    });
-
-    /**
-     * Creates an array of grouped elements, the first of which contains the
-     * first elements of the given arrays, the second of which contains the
-     * second elements of the given arrays, and so on.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to process.
-     * @returns {Array} Returns the new array of grouped elements.
-     * @example
-     *
-     * _.zip(['a', 'b'], [1, 2], [true, false]);
-     * // => [['a', 1, true], ['b', 2, false]]
-     */
-    var zip = baseRest(unzip);
-
-    /**
-     * This method is like `_.fromPairs` except that it accepts two arrays,
-     * one of property identifiers and one of corresponding values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.4.0
-     * @category Array
-     * @param {Array} [props=[]] The property identifiers.
-     * @param {Array} [values=[]] The property values.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.zipObject(['a', 'b'], [1, 2]);
-     * // => { 'a': 1, 'b': 2 }
-     */
-    function zipObject(props, values) {
-      return baseZipObject(props || [], values || [], assignValue);
-    }
-
-    /**
-     * This method is like `_.zipObject` except that it supports property paths.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.1.0
-     * @category Array
-     * @param {Array} [props=[]] The property identifiers.
-     * @param {Array} [values=[]] The property values.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
-     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
-     */
-    function zipObjectDeep(props, values) {
-      return baseZipObject(props || [], values || [], baseSet);
-    }
-
-    /**
-     * This method is like `_.zip` except that it accepts `iteratee` to specify
-     * how grouped values should be combined. The iteratee is invoked with the
-     * elements of each group: (...group).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Array
-     * @param {...Array} [arrays] The arrays to process.
-     * @param {Function} [iteratee=_.identity] The function to combine
-     *  grouped values.
-     * @returns {Array} Returns the new array of grouped elements.
-     * @example
-     *
-     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
-     *   return a + b + c;
-     * });
-     * // => [111, 222]
-     */
-    var zipWith = baseRest(function(arrays) {
-      var length = arrays.length,
-          iteratee = length > 1 ? arrays[length - 1] : undefined;
-
-      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
-      return unzipWith(arrays, iteratee);
-    });
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates a `lodash` wrapper instance that wraps `value` with explicit method
-     * chain sequences enabled. The result of such sequences must be unwrapped
-     * with `_#value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.3.0
-     * @category Seq
-     * @param {*} value The value to wrap.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36 },
-     *   { 'user': 'fred',    'age': 40 },
-     *   { 'user': 'pebbles', 'age': 1 }
-     * ];
-     *
-     * var youngest = _
-     *   .chain(users)
-     *   .sortBy('age')
-     *   .map(function(o) {
-     *     return o.user + ' is ' + o.age;
-     *   })
-     *   .head()
-     *   .value();
-     * // => 'pebbles is 1'
-     */
-    function chain(value) {
-      var result = lodash(value);
-      result.__chain__ = true;
-      return result;
-    }
-
-    /**
-     * This method invokes `interceptor` and returns `value`. The interceptor
-     * is invoked with one argument; (value). The purpose of this method is to
-     * "tap into" a method chain sequence in order to modify intermediate results.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @param {*} value The value to provide to `interceptor`.
-     * @param {Function} interceptor The function to invoke.
-     * @returns {*} Returns `value`.
-     * @example
-     *
-     * _([1, 2, 3])
-     *  .tap(function(array) {
-     *    // Mutate input array.
-     *    array.pop();
-     *  })
-     *  .reverse()
-     *  .value();
-     * // => [2, 1]
-     */
-    function tap(value, interceptor) {
-      interceptor(value);
-      return value;
-    }
-
-    /**
-     * This method is like `_.tap` except that it returns the result of `interceptor`.
-     * The purpose of this method is to "pass thru" values replacing intermediate
-     * results in a method chain sequence.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Seq
-     * @param {*} value The value to provide to `interceptor`.
-     * @param {Function} interceptor The function to invoke.
-     * @returns {*} Returns the result of `interceptor`.
-     * @example
-     *
-     * _('  abc  ')
-     *  .chain()
-     *  .trim()
-     *  .thru(function(value) {
-     *    return [value];
-     *  })
-     *  .value();
-     * // => ['abc']
-     */
-    function thru(value, interceptor) {
-      return interceptor(value);
-    }
-
-    /**
-     * This method is the wrapper version of `_.at`.
-     *
-     * @name at
-     * @memberOf _
-     * @since 1.0.0
-     * @category Seq
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-     *
-     * _(object).at(['a[0].b.c', 'a[1]']).value();
-     * // => [3, 4]
-     */
-    var wrapperAt = flatRest(function(paths) {
-      var length = paths.length,
-          start = length ? paths[0] : 0,
-          value = this.__wrapped__,
-          interceptor = function(object) { return baseAt(object, paths); };
-
-      if (length > 1 || this.__actions__.length ||
-          !(value instanceof LazyWrapper) || !isIndex(start)) {
-        return this.thru(interceptor);
-      }
-      value = value.slice(start, +start + (length ? 1 : 0));
-      value.__actions__.push({
-        'func': thru,
-        'args': [interceptor],
-        'thisArg': undefined
-      });
-      return new LodashWrapper(value, this.__chain__).thru(function(array) {
-        if (length && !array.length) {
-          array.push(undefined);
-        }
-        return array;
-      });
-    });
-
-    /**
-     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
-     *
-     * @name chain
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36 },
-     *   { 'user': 'fred',   'age': 40 }
-     * ];
-     *
-     * // A sequence without explicit chaining.
-     * _(users).head();
-     * // => { 'user': 'barney', 'age': 36 }
-     *
-     * // A sequence with explicit chaining.
-     * _(users)
-     *   .chain()
-     *   .head()
-     *   .pick('user')
-     *   .value();
-     * // => { 'user': 'barney' }
-     */
-    function wrapperChain() {
-      return chain(this);
-    }
-
-    /**
-     * Executes the chain sequence and returns the wrapped result.
-     *
-     * @name commit
-     * @memberOf _
-     * @since 3.2.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var array = [1, 2];
-     * var wrapped = _(array).push(3);
-     *
-     * console.log(array);
-     * // => [1, 2]
-     *
-     * wrapped = wrapped.commit();
-     * console.log(array);
-     * // => [1, 2, 3]
-     *
-     * wrapped.last();
-     * // => 3
-     *
-     * console.log(array);
-     * // => [1, 2, 3]
-     */
-    function wrapperCommit() {
-      return new LodashWrapper(this.value(), this.__chain__);
-    }
-
-    /**
-     * Gets the next value on a wrapped object following the
-     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
-     *
-     * @name next
-     * @memberOf _
-     * @since 4.0.0
-     * @category Seq
-     * @returns {Object} Returns the next iterator value.
-     * @example
-     *
-     * var wrapped = _([1, 2]);
-     *
-     * wrapped.next();
-     * // => { 'done': false, 'value': 1 }
-     *
-     * wrapped.next();
-     * // => { 'done': false, 'value': 2 }
-     *
-     * wrapped.next();
-     * // => { 'done': true, 'value': undefined }
-     */
-    function wrapperNext() {
-      if (this.__values__ === undefined) {
-        this.__values__ = toArray(this.value());
-      }
-      var done = this.__index__ >= this.__values__.length,
-          value = done ? undefined : this.__values__[this.__index__++];
-
-      return { 'done': done, 'value': value };
-    }
-
-    /**
-     * Enables the wrapper to be iterable.
-     *
-     * @name Symbol.iterator
-     * @memberOf _
-     * @since 4.0.0
-     * @category Seq
-     * @returns {Object} Returns the wrapper object.
-     * @example
-     *
-     * var wrapped = _([1, 2]);
-     *
-     * wrapped[Symbol.iterator]() === wrapped;
-     * // => true
-     *
-     * Array.from(wrapped);
-     * // => [1, 2]
-     */
-    function wrapperToIterator() {
-      return this;
-    }
-
-    /**
-     * Creates a clone of the chain sequence planting `value` as the wrapped value.
-     *
-     * @name plant
-     * @memberOf _
-     * @since 3.2.0
-     * @category Seq
-     * @param {*} value The value to plant.
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var wrapped = _([1, 2]).map(square);
-     * var other = wrapped.plant([3, 4]);
-     *
-     * other.value();
-     * // => [9, 16]
-     *
-     * wrapped.value();
-     * // => [1, 4]
-     */
-    function wrapperPlant(value) {
-      var result,
-          parent = this;
-
-      while (parent instanceof baseLodash) {
-        var clone = wrapperClone(parent);
-        clone.__index__ = 0;
-        clone.__values__ = undefined;
-        if (result) {
-          previous.__wrapped__ = clone;
-        } else {
-          result = clone;
-        }
-        var previous = clone;
-        parent = parent.__wrapped__;
-      }
-      previous.__wrapped__ = value;
-      return result;
-    }
-
-    /**
-     * This method is the wrapper version of `_.reverse`.
-     *
-     * **Note:** This method mutates the wrapped array.
-     *
-     * @name reverse
-     * @memberOf _
-     * @since 0.1.0
-     * @category Seq
-     * @returns {Object} Returns the new `lodash` wrapper instance.
-     * @example
-     *
-     * var array = [1, 2, 3];
-     *
-     * _(array).reverse().value()
-     * // => [3, 2, 1]
-     *
-     * console.log(array);
-     * // => [3, 2, 1]
-     */
-    function wrapperReverse() {
-      var value = this.__wrapped__;
-      if (value instanceof LazyWrapper) {
-        var wrapped = value;
-        if (this.__actions__.length) {
-          wrapped = new LazyWrapper(this);
-        }
-        wrapped = wrapped.reverse();
-        wrapped.__actions__.push({
-          'func': thru,
-          'args': [reverse],
-          'thisArg': undefined
-        });
-        return new LodashWrapper(wrapped, this.__chain__);
-      }
-      return this.thru(reverse);
-    }
-
-    /**
-     * Executes the chain sequence to resolve the unwrapped value.
-     *
-     * @name value
-     * @memberOf _
-     * @since 0.1.0
-     * @alias toJSON, valueOf
-     * @category Seq
-     * @returns {*} Returns the resolved unwrapped value.
-     * @example
-     *
-     * _([1, 2, 3]).value();
-     * // => [1, 2, 3]
-     */
-    function wrapperValue() {
-      return baseWrapperValue(this.__wrapped__, this.__actions__);
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The corresponding value of
-     * each key is the number of times the key was returned by `iteratee`. The
-     * iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * _.countBy([6.1, 4.2, 6.3], Math.floor);
-     * // => { '4': 1, '6': 2 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.countBy(['one', 'two', 'three'], 'length');
-     * // => { '3': 2, '5': 1 }
-     */
-    var countBy = createAggregator(function(result, value, key) {
-      if (hasOwnProperty.call(result, key)) {
-        ++result[key];
-      } else {
-        baseAssignValue(result, key, 1);
-      }
-    });
-
-    /**
-     * Checks if `predicate` returns truthy for **all** elements of `collection`.
-     * Iteration is stopped once `predicate` returns falsey. The predicate is
-     * invoked with three arguments: (value, index|key, collection).
-     *
-     * **Note:** This method returns `true` for
-     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because
-     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of
-     * elements of empty collections.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {boolean} Returns `true` if all elements pass the predicate check,
-     *  else `false`.
-     * @example
-     *
-     * _.every([true, 1, null, 'yes'], Boolean);
-     * // => false
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': false },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.every(users, { 'user': 'barney', 'active': false });
-     * // => false
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.every(users, ['active', false]);
-     * // => true
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.every(users, 'active');
-     * // => false
-     */
-    function every(collection, predicate, guard) {
-      var func = isArray(collection) ? arrayEvery : baseEvery;
-      if (guard && isIterateeCall(collection, predicate, guard)) {
-        predicate = undefined;
-      }
-      return func(collection, getIteratee(predicate, 3));
-    }
-
-    /**
-     * Iterates over elements of `collection`, returning an array of all elements
-     * `predicate` returns truthy for. The predicate is invoked with three
-     * arguments: (value, index|key, collection).
-     *
-     * **Note:** Unlike `_.remove`, this method returns a new array.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     * @see _.reject
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': true },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * _.filter(users, function(o) { return !o.active; });
-     * // => objects for ['fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.filter(users, { 'age': 36, 'active': true });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.filter(users, ['active', false]);
-     * // => objects for ['fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.filter(users, 'active');
-     * // => objects for ['barney']
-     *
-     * // Combining several predicates using `_.overEvery` or `_.overSome`.
-     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));
-     * // => objects for ['fred', 'barney']
-     */
-    function filter(collection, predicate) {
-      var func = isArray(collection) ? arrayFilter : baseFilter;
-      return func(collection, getIteratee(predicate, 3));
-    }
-
-    /**
-     * Iterates over elements of `collection`, returning the first element
-     * `predicate` returns truthy for. The predicate is invoked with three
-     * arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @returns {*} Returns the matched element, else `undefined`.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36, 'active': true },
-     *   { 'user': 'fred',    'age': 40, 'active': false },
-     *   { 'user': 'pebbles', 'age': 1,  'active': true }
-     * ];
-     *
-     * _.find(users, function(o) { return o.age < 40; });
-     * // => object for 'barney'
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.find(users, { 'age': 1, 'active': true });
-     * // => object for 'pebbles'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.find(users, ['active', false]);
-     * // => object for 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.find(users, 'active');
-     * // => object for 'barney'
-     */
-    var find = createFind(findIndex);
-
-    /**
-     * This method is like `_.find` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param {number} [fromIndex=collection.length-1] The index to search from.
-     * @returns {*} Returns the matched element, else `undefined`.
-     * @example
-     *
-     * _.findLast([1, 2, 3, 4], function(n) {
-     *   return n % 2 == 1;
-     * });
-     * // => 3
-     */
-    var findLast = createFind(findLastIndex);
-
-    /**
-     * Creates a flattened array of values by running each element in `collection`
-     * thru `iteratee` and flattening the mapped results. The iteratee is invoked
-     * with three arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [n, n];
-     * }
-     *
-     * _.flatMap([1, 2], duplicate);
-     * // => [1, 1, 2, 2]
-     */
-    function flatMap(collection, iteratee) {
-      return baseFlatten(map(collection, iteratee), 1);
-    }
-
-    /**
-     * This method is like `_.flatMap` except that it recursively flattens the
-     * mapped results.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [[[n, n]]];
-     * }
-     *
-     * _.flatMapDeep([1, 2], duplicate);
-     * // => [1, 1, 2, 2]
-     */
-    function flatMapDeep(collection, iteratee) {
-      return baseFlatten(map(collection, iteratee), INFINITY);
-    }
-
-    /**
-     * This method is like `_.flatMap` except that it recursively flattens the
-     * mapped results up to `depth` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {number} [depth=1] The maximum recursion depth.
-     * @returns {Array} Returns the new flattened array.
-     * @example
-     *
-     * function duplicate(n) {
-     *   return [[[n, n]]];
-     * }
-     *
-     * _.flatMapDepth([1, 2], duplicate, 2);
-     * // => [[1, 1], [2, 2]]
-     */
-    function flatMapDepth(collection, iteratee, depth) {
-      depth = depth === undefined ? 1 : toInteger(depth);
-      return baseFlatten(map(collection, iteratee), depth);
-    }
-
-    /**
-     * Iterates over elements of `collection` and invokes `iteratee` for each element.
-     * The iteratee is invoked with three arguments: (value, index|key, collection).
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * **Note:** As with other "Collections" methods, objects with a "length"
-     * property are iterated like arrays. To avoid this behavior use `_.forIn`
-     * or `_.forOwn` for object iteration.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @alias each
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     * @see _.forEachRight
-     * @example
-     *
-     * _.forEach([1, 2], function(value) {
-     *   console.log(value);
-     * });
-     * // => Logs `1` then `2`.
-     *
-     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-     */
-    function forEach(collection, iteratee) {
-      var func = isArray(collection) ? arrayEach : baseEach;
-      return func(collection, getIteratee(iteratee, 3));
-    }
-
-    /**
-     * This method is like `_.forEach` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @alias eachRight
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array|Object} Returns `collection`.
-     * @see _.forEach
-     * @example
-     *
-     * _.forEachRight([1, 2], function(value) {
-     *   console.log(value);
-     * });
-     * // => Logs `2` then `1`.
-     */
-    function forEachRight(collection, iteratee) {
-      var func = isArray(collection) ? arrayEachRight : baseEachRight;
-      return func(collection, getIteratee(iteratee, 3));
-    }
-
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The order of grouped values
-     * is determined by the order they occur in `collection`. The corresponding
-     * value of each key is an array of elements responsible for generating the
-     * key. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * _.groupBy([6.1, 4.2, 6.3], Math.floor);
-     * // => { '4': [4.2], '6': [6.1, 6.3] }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.groupBy(['one', 'two', 'three'], 'length');
-     * // => { '3': ['one', 'two'], '5': ['three'] }
-     */
-    var groupBy = createAggregator(function(result, value, key) {
-      if (hasOwnProperty.call(result, key)) {
-        result[key].push(value);
-      } else {
-        baseAssignValue(result, key, [value]);
-      }
-    });
-
-    /**
-     * Checks if `value` is in `collection`. If `collection` is a string, it's
-     * checked for a substring of `value`, otherwise
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * is used for equality comparisons. If `fromIndex` is negative, it's used as
-     * the offset from the end of `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object|string} collection The collection to inspect.
-     * @param {*} value The value to search for.
-     * @param {number} [fromIndex=0] The index to search from.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-     * @returns {boolean} Returns `true` if `value` is found, else `false`.
-     * @example
-     *
-     * _.includes([1, 2, 3], 1);
-     * // => true
-     *
-     * _.includes([1, 2, 3], 1, 2);
-     * // => false
-     *
-     * _.includes({ 'a': 1, 'b': 2 }, 1);
-     * // => true
-     *
-     * _.includes('abcd', 'bc');
-     * // => true
-     */
-    function includes(collection, value, fromIndex, guard) {
-      collection = isArrayLike(collection) ? collection : values(collection);
-      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;
-
-      var length = collection.length;
-      if (fromIndex < 0) {
-        fromIndex = nativeMax(length + fromIndex, 0);
-      }
-      return isString(collection)
-        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)
-        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);
-    }
-
-    /**
-     * Invokes the method at `path` of each element in `collection`, returning
-     * an array of the results of each invoked method. Any additional arguments
-     * are provided to each invoked method. If `path` is a function, it's invoked
-     * for, and `this` bound to, each element in `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Array|Function|string} path The path of the method to invoke or
-     *  the function invoked per iteration.
-     * @param {...*} [args] The arguments to invoke each method with.
-     * @returns {Array} Returns the array of results.
-     * @example
-     *
-     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');
-     * // => [[1, 5, 7], [1, 2, 3]]
-     *
-     * _.invokeMap([123, 456], String.prototype.split, '');
-     * // => [['1', '2', '3'], ['4', '5', '6']]
-     */
-    var invokeMap = baseRest(function(collection, path, args) {
-      var index = -1,
-          isFunc = typeof path == 'function',
-          result = isArrayLike(collection) ? Array(collection.length) : [];
-
-      baseEach(collection, function(value) {
-        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);
-      });
-      return result;
-    });
-
-    /**
-     * Creates an object composed of keys generated from the results of running
-     * each element of `collection` thru `iteratee`. The corresponding value of
-     * each key is the last element responsible for generating the key. The
-     * iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.
-     * @returns {Object} Returns the composed aggregate object.
-     * @example
-     *
-     * var array = [
-     *   { 'dir': 'left', 'code': 97 },
-     *   { 'dir': 'right', 'code': 100 }
-     * ];
-     *
-     * _.keyBy(array, function(o) {
-     *   return String.fromCharCode(o.code);
-     * });
-     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }
-     *
-     * _.keyBy(array, 'dir');
-     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
-     */
-    var keyBy = createAggregator(function(result, value, key) {
-      baseAssignValue(result, key, value);
-    });
-
-    /**
-     * Creates an array of values by running each element in `collection` thru
-     * `iteratee`. The iteratee is invoked with three arguments:
-     * (value, index|key, collection).
-     *
-     * Many lodash methods are guarded to work as iteratees for methods like
-     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
-     *
-     * The guarded methods are:
-     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
-     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
-     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
-     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new mapped array.
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * _.map([4, 8], square);
-     * // => [16, 64]
-     *
-     * _.map({ 'a': 4, 'b': 8 }, square);
-     * // => [16, 64] (iteration order is not guaranteed)
-     *
-     * var users = [
-     *   { 'user': 'barney' },
-     *   { 'user': 'fred' }
-     * ];
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.map(users, 'user');
-     * // => ['barney', 'fred']
-     */
-    function map(collection, iteratee) {
-      var func = isArray(collection) ? arrayMap : baseMap;
-      return func(collection, getIteratee(iteratee, 3));
-    }
-
-    /**
-     * This method is like `_.sortBy` except that it allows specifying the sort
-     * orders of the iteratees to sort by. If `orders` is unspecified, all values
-     * are sorted in ascending order. Otherwise, specify an order of "desc" for
-     * descending or "asc" for ascending sort order of corresponding values.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
-     *  The iteratees to sort by.
-     * @param {string[]} [orders] The sort orders of `iteratees`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
-     * @returns {Array} Returns the new sorted array.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'fred',   'age': 48 },
-     *   { 'user': 'barney', 'age': 34 },
-     *   { 'user': 'fred',   'age': 40 },
-     *   { 'user': 'barney', 'age': 36 }
-     * ];
-     *
-     * // Sort by `user` in ascending order and by `age` in descending order.
-     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
-     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
-     */
-    function orderBy(collection, iteratees, orders, guard) {
-      if (collection == null) {
-        return [];
-      }
-      if (!isArray(iteratees)) {
-        iteratees = iteratees == null ? [] : [iteratees];
-      }
-      orders = guard ? undefined : orders;
-      if (!isArray(orders)) {
-        orders = orders == null ? [] : [orders];
-      }
-      return baseOrderBy(collection, iteratees, orders);
-    }
-
-    /**
-     * Creates an array of elements split into two groups, the first of which
-     * contains elements `predicate` returns truthy for, the second of which
-     * contains elements `predicate` returns falsey for. The predicate is
-     * invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the array of grouped elements.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney',  'age': 36, 'active': false },
-     *   { 'user': 'fred',    'age': 40, 'active': true },
-     *   { 'user': 'pebbles', 'age': 1,  'active': false }
-     * ];
-     *
-     * _.partition(users, function(o) { return o.active; });
-     * // => objects for [['fred'], ['barney', 'pebbles']]
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.partition(users, { 'age': 1, 'active': false });
-     * // => objects for [['pebbles'], ['barney', 'fred']]
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.partition(users, ['active', false]);
-     * // => objects for [['barney', 'pebbles'], ['fred']]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.partition(users, 'active');
-     * // => objects for [['fred'], ['barney', 'pebbles']]
-     */
-    var partition = createAggregator(function(result, value, key) {
-      result[key ? 0 : 1].push(value);
-    }, function() { return [[], []]; });
-
-    /**
-     * Reduces `collection` to a value which is the accumulated result of running
-     * each element in `collection` thru `iteratee`, where each successive
-     * invocation is supplied the return value of the previous. If `accumulator`
-     * is not given, the first element of `collection` is used as the initial
-     * value. The iteratee is invoked with four arguments:
-     * (accumulator, value, index|key, collection).
-     *
-     * Many lodash methods are guarded to work as iteratees for methods like
-     * `_.reduce`, `_.reduceRight`, and `_.transform`.
-     *
-     * The guarded methods are:
-     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
-     * and `sortBy`
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @returns {*} Returns the accumulated value.
-     * @see _.reduceRight
-     * @example
-     *
-     * _.reduce([1, 2], function(sum, n) {
-     *   return sum + n;
-     * }, 0);
-     * // => 3
-     *
-     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-     *   (result[value] || (result[value] = [])).push(key);
-     *   return result;
-     * }, {});
-     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
-     */
-    function reduce(collection, iteratee, accumulator) {
-      var func = isArray(collection) ? arrayReduce : baseReduce,
-          initAccum = arguments.length < 3;
-
-      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);
-    }
-
-    /**
-     * This method is like `_.reduce` except that it iterates over elements of
-     * `collection` from right to left.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The initial value.
-     * @returns {*} Returns the accumulated value.
-     * @see _.reduce
-     * @example
-     *
-     * var array = [[0, 1], [2, 3], [4, 5]];
-     *
-     * _.reduceRight(array, function(flattened, other) {
-     *   return flattened.concat(other);
-     * }, []);
-     * // => [4, 5, 2, 3, 0, 1]
-     */
-    function reduceRight(collection, iteratee, accumulator) {
-      var func = isArray(collection) ? arrayReduceRight : baseReduce,
-          initAccum = arguments.length < 3;
-
-      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
-    }
-
-    /**
-     * The opposite of `_.filter`; this method returns the elements of `collection`
-     * that `predicate` does **not** return truthy for.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the new filtered array.
-     * @see _.filter
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': false },
-     *   { 'user': 'fred',   'age': 40, 'active': true }
-     * ];
-     *
-     * _.reject(users, function(o) { return !o.active; });
-     * // => objects for ['fred']
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.reject(users, { 'age': 40, 'active': true });
-     * // => objects for ['barney']
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.reject(users, ['active', false]);
-     * // => objects for ['fred']
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.reject(users, 'active');
-     * // => objects for ['barney']
-     */
-    function reject(collection, predicate) {
-      var func = isArray(collection) ? arrayFilter : baseFilter;
-      return func(collection, negate(getIteratee(predicate, 3)));
-    }
-
-    /**
-     * Gets a random element from `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to sample.
-     * @returns {*} Returns the random element.
-     * @example
-     *
-     * _.sample([1, 2, 3, 4]);
-     * // => 2
-     */
-    function sample(collection) {
-      var func = isArray(collection) ? arraySample : baseSample;
-      return func(collection);
-    }
-
-    /**
-     * Gets `n` random elements at unique keys from `collection` up to the
-     * size of `collection`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to sample.
-     * @param {number} [n=1] The number of elements to sample.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the random elements.
-     * @example
-     *
-     * _.sampleSize([1, 2, 3], 2);
-     * // => [3, 1]
-     *
-     * _.sampleSize([1, 2, 3], 4);
-     * // => [2, 3, 1]
-     */
-    function sampleSize(collection, n, guard) {
-      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
-        n = 1;
-      } else {
-        n = toInteger(n);
-      }
-      var func = isArray(collection) ? arraySampleSize : baseSampleSize;
-      return func(collection, n);
-    }
-
-    /**
-     * Creates an array of shuffled values, using a version of the
-     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to shuffle.
-     * @returns {Array} Returns the new shuffled array.
-     * @example
-     *
-     * _.shuffle([1, 2, 3, 4]);
-     * // => [4, 1, 3, 2]
-     */
-    function shuffle(collection) {
-      var func = isArray(collection) ? arrayShuffle : baseShuffle;
-      return func(collection);
-    }
-
-    /**
-     * Gets the size of `collection` by returning its length for array-like
-     * values or the number of own enumerable string keyed properties for objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object|string} collection The collection to inspect.
-     * @returns {number} Returns the collection size.
-     * @example
-     *
-     * _.size([1, 2, 3]);
-     * // => 3
-     *
-     * _.size({ 'a': 1, 'b': 2 });
-     * // => 2
-     *
-     * _.size('pebbles');
-     * // => 7
-     */
-    function size(collection) {
-      if (collection == null) {
-        return 0;
-      }
-      if (isArrayLike(collection)) {
-        return isString(collection) ? stringSize(collection) : collection.length;
-      }
-      var tag = getTag(collection);
-      if (tag == mapTag || tag == setTag) {
-        return collection.size;
-      }
-      return baseKeys(collection).length;
-    }
-
-    /**
-     * Checks if `predicate` returns truthy for **any** element of `collection`.
-     * Iteration is stopped once `predicate` returns truthy. The predicate is
-     * invoked with three arguments: (value, index|key, collection).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {boolean} Returns `true` if any element passes the predicate check,
-     *  else `false`.
-     * @example
-     *
-     * _.some([null, 0, 'yes', false], Boolean);
-     * // => true
-     *
-     * var users = [
-     *   { 'user': 'barney', 'active': true },
-     *   { 'user': 'fred',   'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.some(users, { 'user': 'barney', 'active': false });
-     * // => false
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.some(users, ['active', false]);
-     * // => true
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.some(users, 'active');
-     * // => true
-     */
-    function some(collection, predicate, guard) {
-      var func = isArray(collection) ? arraySome : baseSome;
-      if (guard && isIterateeCall(collection, predicate, guard)) {
-        predicate = undefined;
-      }
-      return func(collection, getIteratee(predicate, 3));
-    }
-
-    /**
-     * Creates an array of elements, sorted in ascending order by the results of
-     * running each element in a collection thru each iteratee. This method
-     * performs a stable sort, that is, it preserves the original sort order of
-     * equal elements. The iteratees are invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Collection
-     * @param {Array|Object} collection The collection to iterate over.
-     * @param {...(Function|Function[])} [iteratees=[_.identity]]
-     *  The iteratees to sort by.
-     * @returns {Array} Returns the new sorted array.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'fred',   'age': 48 },
-     *   { 'user': 'barney', 'age': 36 },
-     *   { 'user': 'fred',   'age': 30 },
-     *   { 'user': 'barney', 'age': 34 }
-     * ];
-     *
-     * _.sortBy(users, [function(o) { return o.user; }]);
-     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
-     *
-     * _.sortBy(users, ['user', 'age']);
-     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
-     */
-    var sortBy = baseRest(function(collection, iteratees) {
-      if (collection == null) {
-        return [];
-      }
-      var length = iteratees.length;
-      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
-        iteratees = [];
-      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
-        iteratees = [iteratees[0]];
-      }
-      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-    });
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Gets the timestamp of the number of milliseconds that have elapsed since
-     * the Unix epoch (1 January 1970 00:00:00 UTC).
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Date
-     * @returns {number} Returns the timestamp.
-     * @example
-     *
-     * _.defer(function(stamp) {
-     *   console.log(_.now() - stamp);
-     * }, _.now());
-     * // => Logs the number of milliseconds it took for the deferred invocation.
-     */
-    var now = ctxNow || function() {
-      return root.Date.now();
-    };
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * The opposite of `_.before`; this method creates a function that invokes
-     * `func` once it's called `n` or more times.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {number} n The number of calls before `func` is invoked.
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * var saves = ['profile', 'settings'];
-     *
-     * var done = _.after(saves.length, function() {
-     *   console.log('done saving!');
-     * });
-     *
-     * _.forEach(saves, function(type) {
-     *   asyncSave({ 'type': type, 'complete': done });
-     * });
-     * // => Logs 'done saving!' after the two async saves have completed.
-     */
-    function after(n, func) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      n = toInteger(n);
-      return function() {
-        if (--n < 1) {
-          return func.apply(this, arguments);
-        }
-      };
-    }
-
-    /**
-     * Creates a function that invokes `func`, with up to `n` arguments,
-     * ignoring any additional arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to cap arguments for.
-     * @param {number} [n=func.length] The arity cap.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new capped function.
-     * @example
-     *
-     * _.map(['6', '8', '10'], _.ary(parseInt, 1));
-     * // => [6, 8, 10]
-     */
-    function ary(func, n, guard) {
-      n = guard ? undefined : n;
-      n = (func && n == null) ? func.length : n;
-      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);
-    }
-
-    /**
-     * Creates a function that invokes `func`, with the `this` binding and arguments
-     * of the created function, while it's called less than `n` times. Subsequent
-     * calls to the created function return the result of the last `func` invocation.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {number} n The number of calls at which `func` is no longer invoked.
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * jQuery(element).on('click', _.before(5, addContactToList));
-     * // => Allows adding up to 4 contacts to the list.
-     */
-    function before(n, func) {
-      var result;
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      n = toInteger(n);
-      return function() {
-        if (--n > 0) {
-          result = func.apply(this, arguments);
-        }
-        if (n <= 1) {
-          func = undefined;
-        }
-        return result;
-      };
-    }
-
-    /**
-     * Creates a function that invokes `func` with the `this` binding of `thisArg`
-     * and `partials` prepended to the arguments it receives.
-     *
-     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,
-     * may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** Unlike native `Function#bind`, this method doesn't set the "length"
-     * property of bound functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to bind.
-     * @param {*} thisArg The `this` binding of `func`.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new bound function.
-     * @example
-     *
-     * function greet(greeting, punctuation) {
-     *   return greeting + ' ' + this.user + punctuation;
-     * }
-     *
-     * var object = { 'user': 'fred' };
-     *
-     * var bound = _.bind(greet, object, 'hi');
-     * bound('!');
-     * // => 'hi fred!'
-     *
-     * // Bound with placeholders.
-     * var bound = _.bind(greet, object, _, '!');
-     * bound('hi');
-     * // => 'hi fred!'
-     */
-    var bind = baseRest(function(func, thisArg, partials) {
-      var bitmask = WRAP_BIND_FLAG;
-      if (partials.length) {
-        var holders = replaceHolders(partials, getHolder(bind));
-        bitmask |= WRAP_PARTIAL_FLAG;
-      }
-      return createWrap(func, bitmask, thisArg, partials, holders);
-    });
-
-    /**
-     * Creates a function that invokes the method at `object[key]` with `partials`
-     * prepended to the arguments it receives.
-     *
-     * This method differs from `_.bind` by allowing bound functions to reference
-     * methods that may be redefined or don't yet exist. See
-     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)
-     * for more details.
-     *
-     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.10.0
-     * @category Function
-     * @param {Object} object The object to invoke the method on.
-     * @param {string} key The key of the method.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new bound function.
-     * @example
-     *
-     * var object = {
-     *   'user': 'fred',
-     *   'greet': function(greeting, punctuation) {
-     *     return greeting + ' ' + this.user + punctuation;
-     *   }
-     * };
-     *
-     * var bound = _.bindKey(object, 'greet', 'hi');
-     * bound('!');
-     * // => 'hi fred!'
-     *
-     * object.greet = function(greeting, punctuation) {
-     *   return greeting + 'ya ' + this.user + punctuation;
-     * };
-     *
-     * bound('!');
-     * // => 'hiya fred!'
-     *
-     * // Bound with placeholders.
-     * var bound = _.bindKey(object, 'greet', _, '!');
-     * bound('hi');
-     * // => 'hiya fred!'
-     */
-    var bindKey = baseRest(function(object, key, partials) {
-      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;
-      if (partials.length) {
-        var holders = replaceHolders(partials, getHolder(bindKey));
-        bitmask |= WRAP_PARTIAL_FLAG;
-      }
-      return createWrap(key, bitmask, object, partials, holders);
-    });
-
-    /**
-     * Creates a function that accepts arguments of `func` and either invokes
-     * `func` returning its result, if at least `arity` number of arguments have
-     * been provided, or returns a function that accepts the remaining `func`
-     * arguments, and so on. The arity of `func` may be specified if `func.length`
-     * is not sufficient.
-     *
-     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,
-     * may be used as a placeholder for provided arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of curried functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Function
-     * @param {Function} func The function to curry.
-     * @param {number} [arity=func.length] The arity of `func`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new curried function.
-     * @example
-     *
-     * var abc = function(a, b, c) {
-     *   return [a, b, c];
-     * };
-     *
-     * var curried = _.curry(abc);
-     *
-     * curried(1)(2)(3);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2)(3);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2, 3);
-     * // => [1, 2, 3]
-     *
-     * // Curried with placeholders.
-     * curried(1)(_, 3)(2);
-     * // => [1, 2, 3]
-     */
-    function curry(func, arity, guard) {
-      arity = guard ? undefined : arity;
-      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-      result.placeholder = curry.placeholder;
-      return result;
-    }
-
-    /**
-     * This method is like `_.curry` except that arguments are applied to `func`
-     * in the manner of `_.partialRight` instead of `_.partial`.
-     *
-     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for provided arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of curried functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to curry.
-     * @param {number} [arity=func.length] The arity of `func`.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the new curried function.
-     * @example
-     *
-     * var abc = function(a, b, c) {
-     *   return [a, b, c];
-     * };
-     *
-     * var curried = _.curryRight(abc);
-     *
-     * curried(3)(2)(1);
-     * // => [1, 2, 3]
-     *
-     * curried(2, 3)(1);
-     * // => [1, 2, 3]
-     *
-     * curried(1, 2, 3);
-     * // => [1, 2, 3]
-     *
-     * // Curried with placeholders.
-     * curried(3)(1, _)(2);
-     * // => [1, 2, 3]
-     */
-    function curryRight(func, arity, guard) {
-      arity = guard ? undefined : arity;
-      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);
-      result.placeholder = curryRight.placeholder;
-      return result;
-    }
-
-    /**
-     * Creates a debounced function that delays invoking `func` until after `wait`
-     * milliseconds have elapsed since the last time the debounced function was
-     * invoked. The debounced function comes with a `cancel` method to cancel
-     * delayed `func` invocations and a `flush` method to immediately invoke them.
-     * Provide `options` to indicate whether `func` should be invoked on the
-     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
-     * with the last arguments provided to the debounced function. Subsequent
-     * calls to the debounced function return the result of the last `func`
-     * invocation.
-     *
-     * **Note:** If `leading` and `trailing` options are `true`, `func` is
-     * invoked on the trailing edge of the timeout only if the debounced function
-     * is invoked more than once during the `wait` timeout.
-     *
-     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-     *
-     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-     * for details over the differences between `_.debounce` and `_.throttle`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to debounce.
-     * @param {number} [wait=0] The number of milliseconds to delay.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.leading=false]
-     *  Specify invoking on the leading edge of the timeout.
-     * @param {number} [options.maxWait]
-     *  The maximum time `func` is allowed to be delayed before it's invoked.
-     * @param {boolean} [options.trailing=true]
-     *  Specify invoking on the trailing edge of the timeout.
-     * @returns {Function} Returns the new debounced function.
-     * @example
-     *
-     * // Avoid costly calculations while the window size is in flux.
-     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
-     *
-     * // Invoke `sendMail` when clicked, debouncing subsequent calls.
-     * jQuery(element).on('click', _.debounce(sendMail, 300, {
-     *   'leading': true,
-     *   'trailing': false
-     * }));
-     *
-     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
-     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
-     * var source = new EventSource('/stream');
-     * jQuery(source).on('message', debounced);
-     *
-     * // Cancel the trailing debounced invocation.
-     * jQuery(window).on('popstate', debounced.cancel);
-     */
-    function debounce(func, wait, options) {
-      var lastArgs,
-          lastThis,
-          maxWait,
-          result,
-          timerId,
-          lastCallTime,
-          lastInvokeTime = 0,
-          leading = false,
-          maxing = false,
-          trailing = true;
-
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      wait = toNumber(wait) || 0;
-      if (isObject(options)) {
-        leading = !!options.leading;
-        maxing = 'maxWait' in options;
-        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
-        trailing = 'trailing' in options ? !!options.trailing : trailing;
-      }
-
-      function invokeFunc(time) {
-        var args = lastArgs,
-            thisArg = lastThis;
-
-        lastArgs = lastThis = undefined;
-        lastInvokeTime = time;
-        result = func.apply(thisArg, args);
-        return result;
-      }
-
-      function leadingEdge(time) {
-        // Reset any `maxWait` timer.
-        lastInvokeTime = time;
-        // Start the timer for the trailing edge.
-        timerId = setTimeout(timerExpired, wait);
-        // Invoke the leading edge.
-        return leading ? invokeFunc(time) : result;
-      }
-
-      function remainingWait(time) {
-        var timeSinceLastCall = time - lastCallTime,
-            timeSinceLastInvoke = time - lastInvokeTime,
-            timeWaiting = wait - timeSinceLastCall;
-
-        return maxing
-          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
-          : timeWaiting;
-      }
-
-      function shouldInvoke(time) {
-        var timeSinceLastCall = time - lastCallTime,
-            timeSinceLastInvoke = time - lastInvokeTime;
-
-        // Either this is the first call, activity has stopped and we're at the
-        // trailing edge, the system time has gone backwards and we're treating
-        // it as the trailing edge, or we've hit the `maxWait` limit.
-        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
-          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
-      }
-
-      function timerExpired() {
-        var time = now();
-        if (shouldInvoke(time)) {
-          return trailingEdge(time);
-        }
-        // Restart the timer.
-        timerId = setTimeout(timerExpired, remainingWait(time));
-      }
-
-      function trailingEdge(time) {
-        timerId = undefined;
-
-        // Only invoke if we have `lastArgs` which means `func` has been
-        // debounced at least once.
-        if (trailing && lastArgs) {
-          return invokeFunc(time);
-        }
-        lastArgs = lastThis = undefined;
-        return result;
-      }
-
-      function cancel() {
-        if (timerId !== undefined) {
-          clearTimeout(timerId);
-        }
-        lastInvokeTime = 0;
-        lastArgs = lastCallTime = lastThis = timerId = undefined;
-      }
-
-      function flush() {
-        return timerId === undefined ? result : trailingEdge(now());
-      }
-
-      function debounced() {
-        var time = now(),
-            isInvoking = shouldInvoke(time);
-
-        lastArgs = arguments;
-        lastThis = this;
-        lastCallTime = time;
-
-        if (isInvoking) {
-          if (timerId === undefined) {
-            return leadingEdge(lastCallTime);
-          }
-          if (maxing) {
-            // Handle invocations in a tight loop.
-            clearTimeout(timerId);
-            timerId = setTimeout(timerExpired, wait);
-            return invokeFunc(lastCallTime);
-          }
-        }
-        if (timerId === undefined) {
-          timerId = setTimeout(timerExpired, wait);
-        }
-        return result;
-      }
-      debounced.cancel = cancel;
-      debounced.flush = flush;
-      return debounced;
-    }
-
-    /**
-     * Defers invoking the `func` until the current call stack has cleared. Any
-     * additional arguments are provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to defer.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {number} Returns the timer id.
-     * @example
-     *
-     * _.defer(function(text) {
-     *   console.log(text);
-     * }, 'deferred');
-     * // => Logs 'deferred' after one millisecond.
-     */
-    var defer = baseRest(function(func, args) {
-      return baseDelay(func, 1, args);
-    });
-
-    /**
-     * Invokes `func` after `wait` milliseconds. Any additional arguments are
-     * provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to delay.
-     * @param {number} wait The number of milliseconds to delay invocation.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {number} Returns the timer id.
-     * @example
-     *
-     * _.delay(function(text) {
-     *   console.log(text);
-     * }, 1000, 'later');
-     * // => Logs 'later' after one second.
-     */
-    var delay = baseRest(function(func, wait, args) {
-      return baseDelay(func, toNumber(wait) || 0, args);
-    });
-
-    /**
-     * Creates a function that invokes `func` with arguments reversed.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to flip arguments for.
-     * @returns {Function} Returns the new flipped function.
-     * @example
-     *
-     * var flipped = _.flip(function() {
-     *   return _.toArray(arguments);
-     * });
-     *
-     * flipped('a', 'b', 'c', 'd');
-     * // => ['d', 'c', 'b', 'a']
-     */
-    function flip(func) {
-      return createWrap(func, WRAP_FLIP_FLAG);
-    }
-
-    /**
-     * Creates a function that memoizes the result of `func`. If `resolver` is
-     * provided, it determines the cache key for storing the result based on the
-     * arguments provided to the memoized function. By default, the first argument
-     * provided to the memoized function is used as the map cache key. The `func`
-     * is invoked with the `this` binding of the memoized function.
-     *
-     * **Note:** The cache is exposed as the `cache` property on the memoized
-     * function. Its creation may be customized by replacing the `_.memoize.Cache`
-     * constructor with one whose instances implement the
-     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
-     * method interface of `clear`, `delete`, `get`, `has`, and `set`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to have its output memoized.
-     * @param {Function} [resolver] The function to resolve the cache key.
-     * @returns {Function} Returns the new memoized function.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     * var other = { 'c': 3, 'd': 4 };
-     *
-     * var values = _.memoize(_.values);
-     * values(object);
-     * // => [1, 2]
-     *
-     * values(other);
-     * // => [3, 4]
-     *
-     * object.a = 2;
-     * values(object);
-     * // => [1, 2]
-     *
-     * // Modify the result cache.
-     * values.cache.set(object, ['a', 'b']);
-     * values(object);
-     * // => ['a', 'b']
-     *
-     * // Replace `_.memoize.Cache`.
-     * _.memoize.Cache = WeakMap;
-     */
-    function memoize(func, resolver) {
-      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      var memoized = function() {
-        var args = arguments,
-            key = resolver ? resolver.apply(this, args) : args[0],
-            cache = memoized.cache;
-
-        if (cache.has(key)) {
-          return cache.get(key);
-        }
-        var result = func.apply(this, args);
-        memoized.cache = cache.set(key, result) || cache;
-        return result;
-      };
-      memoized.cache = new (memoize.Cache || MapCache);
-      return memoized;
-    }
-
-    // Expose `MapCache`.
-    memoize.Cache = MapCache;
-
-    /**
-     * Creates a function that negates the result of the predicate `func`. The
-     * `func` predicate is invoked with the `this` binding and arguments of the
-     * created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} predicate The predicate to negate.
-     * @returns {Function} Returns the new negated function.
-     * @example
-     *
-     * function isEven(n) {
-     *   return n % 2 == 0;
-     * }
-     *
-     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
-     * // => [1, 3, 5]
-     */
-    function negate(predicate) {
-      if (typeof predicate != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      return function() {
-        var args = arguments;
-        switch (args.length) {
-          case 0: return !predicate.call(this);
-          case 1: return !predicate.call(this, args[0]);
-          case 2: return !predicate.call(this, args[0], args[1]);
-          case 3: return !predicate.call(this, args[0], args[1], args[2]);
-        }
-        return !predicate.apply(this, args);
-      };
-    }
-
-    /**
-     * Creates a function that is restricted to invoking `func` once. Repeat calls
-     * to the function return the value of the first invocation. The `func` is
-     * invoked with the `this` binding and arguments of the created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to restrict.
-     * @returns {Function} Returns the new restricted function.
-     * @example
-     *
-     * var initialize = _.once(createApplication);
-     * initialize();
-     * initialize();
-     * // => `createApplication` is invoked once
-     */
-    function once(func) {
-      return before(2, func);
-    }
-
-    /**
-     * Creates a function that invokes `func` with its arguments transformed.
-     *
-     * @static
-     * @since 4.0.0
-     * @memberOf _
-     * @category Function
-     * @param {Function} func The function to wrap.
-     * @param {...(Function|Function[])} [transforms=[_.identity]]
-     *  The argument transforms.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * function doubled(n) {
-     *   return n * 2;
-     * }
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var func = _.overArgs(function(x, y) {
-     *   return [x, y];
-     * }, [square, doubled]);
-     *
-     * func(9, 3);
-     * // => [81, 6]
-     *
-     * func(10, 5);
-     * // => [100, 10]
-     */
-    var overArgs = castRest(function(func, transforms) {
-      transforms = (transforms.length == 1 && isArray(transforms[0]))
-        ? arrayMap(transforms[0], baseUnary(getIteratee()))
-        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));
-
-      var funcsLength = transforms.length;
-      return baseRest(function(args) {
-        var index = -1,
-            length = nativeMin(args.length, funcsLength);
-
-        while (++index < length) {
-          args[index] = transforms[index].call(this, args[index]);
-        }
-        return apply(func, this, args);
-      });
-    });
-
-    /**
-     * Creates a function that invokes `func` with `partials` prepended to the
-     * arguments it receives. This method is like `_.bind` except it does **not**
-     * alter the `this` binding.
-     *
-     * The `_.partial.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of partially
-     * applied functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.2.0
-     * @category Function
-     * @param {Function} func The function to partially apply arguments to.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new partially applied function.
-     * @example
-     *
-     * function greet(greeting, name) {
-     *   return greeting + ' ' + name;
-     * }
-     *
-     * var sayHelloTo = _.partial(greet, 'hello');
-     * sayHelloTo('fred');
-     * // => 'hello fred'
-     *
-     * // Partially applied with placeholders.
-     * var greetFred = _.partial(greet, _, 'fred');
-     * greetFred('hi');
-     * // => 'hi fred'
-     */
-    var partial = baseRest(function(func, partials) {
-      var holders = replaceHolders(partials, getHolder(partial));
-      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
-    });
-
-    /**
-     * This method is like `_.partial` except that partially applied arguments
-     * are appended to the arguments it receives.
-     *
-     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
-     * builds, may be used as a placeholder for partially applied arguments.
-     *
-     * **Note:** This method doesn't set the "length" property of partially
-     * applied functions.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Function
-     * @param {Function} func The function to partially apply arguments to.
-     * @param {...*} [partials] The arguments to be partially applied.
-     * @returns {Function} Returns the new partially applied function.
-     * @example
-     *
-     * function greet(greeting, name) {
-     *   return greeting + ' ' + name;
-     * }
-     *
-     * var greetFred = _.partialRight(greet, 'fred');
-     * greetFred('hi');
-     * // => 'hi fred'
-     *
-     * // Partially applied with placeholders.
-     * var sayHelloTo = _.partialRight(greet, 'hello', _);
-     * sayHelloTo('fred');
-     * // => 'hello fred'
-     */
-    var partialRight = baseRest(function(func, partials) {
-      var holders = replaceHolders(partials, getHolder(partialRight));
-      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
-    });
-
-    /**
-     * Creates a function that invokes `func` with arguments arranged according
-     * to the specified `indexes` where the argument value at the first index is
-     * provided as the first argument, the argument value at the second index is
-     * provided as the second argument, and so on.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Function
-     * @param {Function} func The function to rearrange arguments for.
-     * @param {...(number|number[])} indexes The arranged argument indexes.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var rearged = _.rearg(function(a, b, c) {
-     *   return [a, b, c];
-     * }, [2, 0, 1]);
-     *
-     * rearged('b', 'c', 'a')
-     * // => ['a', 'b', 'c']
-     */
-    var rearg = flatRest(function(func, indexes) {
-      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
-    });
-
-    /**
-     * Creates a function that invokes `func` with the `this` binding of the
-     * created function and arguments from `start` and beyond provided as
-     * an array.
-     *
-     * **Note:** This method is based on the
-     * [rest parameter](https://mdn.io/rest_parameters).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to apply a rest parameter to.
-     * @param {number} [start=func.length-1] The start position of the rest parameter.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var say = _.rest(function(what, names) {
-     *   return what + ' ' + _.initial(names).join(', ') +
-     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
-     * });
-     *
-     * say('hello', 'fred', 'barney', 'pebbles');
-     * // => 'hello fred, barney, & pebbles'
-     */
-    function rest(func, start) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      start = start === undefined ? start : toInteger(start);
-      return baseRest(func, start);
-    }
-
-    /**
-     * Creates a function that invokes `func` with the `this` binding of the
-     * create function and an array of arguments much like
-     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
-     *
-     * **Note:** This method is based on the
-     * [spread operator](https://mdn.io/spread_operator).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Function
-     * @param {Function} func The function to spread arguments over.
-     * @param {number} [start=0] The start position of the spread.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var say = _.spread(function(who, what) {
-     *   return who + ' says ' + what;
-     * });
-     *
-     * say(['fred', 'hello']);
-     * // => 'fred says hello'
-     *
-     * var numbers = Promise.all([
-     *   Promise.resolve(40),
-     *   Promise.resolve(36)
-     * ]);
-     *
-     * numbers.then(_.spread(function(x, y) {
-     *   return x + y;
-     * }));
-     * // => a Promise of 76
-     */
-    function spread(func, start) {
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      start = start == null ? 0 : nativeMax(toInteger(start), 0);
-      return baseRest(function(args) {
-        var array = args[start],
-            otherArgs = castSlice(args, 0, start);
-
-        if (array) {
-          arrayPush(otherArgs, array);
-        }
-        return apply(func, this, otherArgs);
-      });
-    }
-
-    /**
-     * Creates a throttled function that only invokes `func` at most once per
-     * every `wait` milliseconds. The throttled function comes with a `cancel`
-     * method to cancel delayed `func` invocations and a `flush` method to
-     * immediately invoke them. Provide `options` to indicate whether `func`
-     * should be invoked on the leading and/or trailing edge of the `wait`
-     * timeout. The `func` is invoked with the last arguments provided to the
-     * throttled function. Subsequent calls to the throttled function return the
-     * result of the last `func` invocation.
-     *
-     * **Note:** If `leading` and `trailing` options are `true`, `func` is
-     * invoked on the trailing edge of the timeout only if the throttled function
-     * is invoked more than once during the `wait` timeout.
-     *
-     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
-     * until to the next tick, similar to `setTimeout` with a timeout of `0`.
-     *
-     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
-     * for details over the differences between `_.throttle` and `_.debounce`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {Function} func The function to throttle.
-     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.leading=true]
-     *  Specify invoking on the leading edge of the timeout.
-     * @param {boolean} [options.trailing=true]
-     *  Specify invoking on the trailing edge of the timeout.
-     * @returns {Function} Returns the new throttled function.
-     * @example
-     *
-     * // Avoid excessively updating the position while scrolling.
-     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
-     *
-     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
-     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
-     * jQuery(element).on('click', throttled);
-     *
-     * // Cancel the trailing throttled invocation.
-     * jQuery(window).on('popstate', throttled.cancel);
-     */
-    function throttle(func, wait, options) {
-      var leading = true,
-          trailing = true;
-
-      if (typeof func != 'function') {
-        throw new TypeError(FUNC_ERROR_TEXT);
-      }
-      if (isObject(options)) {
-        leading = 'leading' in options ? !!options.leading : leading;
-        trailing = 'trailing' in options ? !!options.trailing : trailing;
-      }
-      return debounce(func, wait, {
-        'leading': leading,
-        'maxWait': wait,
-        'trailing': trailing
-      });
-    }
-
-    /**
-     * Creates a function that accepts up to one argument, ignoring any
-     * additional arguments.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Function
-     * @param {Function} func The function to cap arguments for.
-     * @returns {Function} Returns the new capped function.
-     * @example
-     *
-     * _.map(['6', '8', '10'], _.unary(parseInt));
-     * // => [6, 8, 10]
-     */
-    function unary(func) {
-      return ary(func, 1);
-    }
-
-    /**
-     * Creates a function that provides `value` to `wrapper` as its first
-     * argument. Any additional arguments provided to the function are appended
-     * to those provided to the `wrapper`. The wrapper is invoked with the `this`
-     * binding of the created function.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Function
-     * @param {*} value The value to wrap.
-     * @param {Function} [wrapper=identity] The wrapper function.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var p = _.wrap(_.escape, function(func, text) {
-     *   return '<p>' + func(text) + '</p>';
-     * });
-     *
-     * p('fred, barney, & pebbles');
-     * // => '<p>fred, barney, &amp; pebbles</p>'
-     */
-    function wrap(value, wrapper) {
-      return partial(castFunction(wrapper), value);
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Casts `value` as an array if it's not one.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.4.0
-     * @category Lang
-     * @param {*} value The value to inspect.
-     * @returns {Array} Returns the cast array.
-     * @example
-     *
-     * _.castArray(1);
-     * // => [1]
-     *
-     * _.castArray({ 'a': 1 });
-     * // => [{ 'a': 1 }]
-     *
-     * _.castArray('abc');
-     * // => ['abc']
-     *
-     * _.castArray(null);
-     * // => [null]
-     *
-     * _.castArray(undefined);
-     * // => [undefined]
-     *
-     * _.castArray();
-     * // => []
-     *
-     * var array = [1, 2, 3];
-     * console.log(_.castArray(array) === array);
-     * // => true
-     */
-    function castArray() {
-      if (!arguments.length) {
-        return [];
-      }
-      var value = arguments[0];
-      return isArray(value) ? value : [value];
-    }
-
-    /**
-     * Creates a shallow clone of `value`.
-     *
-     * **Note:** This method is loosely based on the
-     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)
-     * and supports cloning arrays, array buffers, booleans, date objects, maps,
-     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed
-     * arrays. The own enumerable properties of `arguments` objects are cloned
-     * as plain objects. An empty object is returned for uncloneable values such
-     * as error objects, functions, DOM nodes, and WeakMaps.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to clone.
-     * @returns {*} Returns the cloned value.
-     * @see _.cloneDeep
-     * @example
-     *
-     * var objects = [{ 'a': 1 }, { 'b': 2 }];
-     *
-     * var shallow = _.clone(objects);
-     * console.log(shallow[0] === objects[0]);
-     * // => true
-     */
-    function clone(value) {
-      return baseClone(value, CLONE_SYMBOLS_FLAG);
-    }
-
-    /**
-     * This method is like `_.clone` except that it accepts `customizer` which
-     * is invoked to produce the cloned value. If `customizer` returns `undefined`,
-     * cloning is handled by the method instead. The `customizer` is invoked with
-     * up to four arguments; (value [, index|key, object, stack]).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to clone.
-     * @param {Function} [customizer] The function to customize cloning.
-     * @returns {*} Returns the cloned value.
-     * @see _.cloneDeepWith
-     * @example
-     *
-     * function customizer(value) {
-     *   if (_.isElement(value)) {
-     *     return value.cloneNode(false);
-     *   }
-     * }
-     *
-     * var el = _.cloneWith(document.body, customizer);
-     *
-     * console.log(el === document.body);
-     * // => false
-     * console.log(el.nodeName);
-     * // => 'BODY'
-     * console.log(el.childNodes.length);
-     * // => 0
-     */
-    function cloneWith(value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);
-    }
-
-    /**
-     * This method is like `_.clone` except that it recursively clones `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Lang
-     * @param {*} value The value to recursively clone.
-     * @returns {*} Returns the deep cloned value.
-     * @see _.clone
-     * @example
-     *
-     * var objects = [{ 'a': 1 }, { 'b': 2 }];
-     *
-     * var deep = _.cloneDeep(objects);
-     * console.log(deep[0] === objects[0]);
-     * // => false
-     */
-    function cloneDeep(value) {
-      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);
-    }
-
-    /**
-     * This method is like `_.cloneWith` except that it recursively clones `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to recursively clone.
-     * @param {Function} [customizer] The function to customize cloning.
-     * @returns {*} Returns the deep cloned value.
-     * @see _.cloneWith
-     * @example
-     *
-     * function customizer(value) {
-     *   if (_.isElement(value)) {
-     *     return value.cloneNode(true);
-     *   }
-     * }
-     *
-     * var el = _.cloneDeepWith(document.body, customizer);
-     *
-     * console.log(el === document.body);
-     * // => false
-     * console.log(el.nodeName);
-     * // => 'BODY'
-     * console.log(el.childNodes.length);
-     * // => 20
-     */
-    function cloneDeepWith(value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
-    }
-
-    /**
-     * Checks if `object` conforms to `source` by invoking the predicate
-     * properties of `source` with the corresponding property values of `object`.
-     *
-     * **Note:** This method is equivalent to `_.conforms` when `source` is
-     * partially applied.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.14.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {boolean} Returns `true` if `object` conforms, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     *
-     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });
-     * // => true
-     *
-     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });
-     * // => false
-     */
-    function conformsTo(object, source) {
-      return source == null || baseConformsTo(object, source, keys(source));
-    }
-
-    /**
-     * Performs a
-     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
-     * comparison between two values to determine if they are equivalent.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     * var other = { 'a': 1 };
-     *
-     * _.eq(object, object);
-     * // => true
-     *
-     * _.eq(object, other);
-     * // => false
-     *
-     * _.eq('a', 'a');
-     * // => true
-     *
-     * _.eq('a', Object('a'));
-     * // => false
-     *
-     * _.eq(NaN, NaN);
-     * // => true
-     */
-    function eq(value, other) {
-      return value === other || (value !== value && other !== other);
-    }
-
-    /**
-     * Checks if `value` is greater than `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than `other`,
-     *  else `false`.
-     * @see _.lt
-     * @example
-     *
-     * _.gt(3, 1);
-     * // => true
-     *
-     * _.gt(3, 3);
-     * // => false
-     *
-     * _.gt(1, 3);
-     * // => false
-     */
-    var gt = createRelationalOperation(baseGt);
-
-    /**
-     * Checks if `value` is greater than or equal to `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is greater than or equal to
-     *  `other`, else `false`.
-     * @see _.lte
-     * @example
-     *
-     * _.gte(3, 1);
-     * // => true
-     *
-     * _.gte(3, 3);
-     * // => true
-     *
-     * _.gte(1, 3);
-     * // => false
-     */
-    var gte = createRelationalOperation(function(value, other) {
-      return value >= other;
-    });
-
-    /**
-     * Checks if `value` is likely an `arguments` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an `arguments` object,
-     *  else `false`.
-     * @example
-     *
-     * _.isArguments(function() { return arguments; }());
-     * // => true
-     *
-     * _.isArguments([1, 2, 3]);
-     * // => false
-     */
-    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
-      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
-        !propertyIsEnumerable.call(value, 'callee');
-    };
-
-    /**
-     * Checks if `value` is classified as an `Array` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array, else `false`.
-     * @example
-     *
-     * _.isArray([1, 2, 3]);
-     * // => true
-     *
-     * _.isArray(document.body.children);
-     * // => false
-     *
-     * _.isArray('abc');
-     * // => false
-     *
-     * _.isArray(_.noop);
-     * // => false
-     */
-    var isArray = Array.isArray;
-
-    /**
-     * Checks if `value` is classified as an `ArrayBuffer` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.
-     * @example
-     *
-     * _.isArrayBuffer(new ArrayBuffer(2));
-     * // => true
-     *
-     * _.isArrayBuffer(new Array(2));
-     * // => false
-     */
-    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;
-
-    /**
-     * Checks if `value` is array-like. A value is considered array-like if it's
-     * not a function and has a `value.length` that's an integer greater than or
-     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
-     * @example
-     *
-     * _.isArrayLike([1, 2, 3]);
-     * // => true
-     *
-     * _.isArrayLike(document.body.children);
-     * // => true
-     *
-     * _.isArrayLike('abc');
-     * // => true
-     *
-     * _.isArrayLike(_.noop);
-     * // => false
-     */
-    function isArrayLike(value) {
-      return value != null && isLength(value.length) && !isFunction(value);
-    }
-
-    /**
-     * This method is like `_.isArrayLike` except that it also checks if `value`
-     * is an object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an array-like object,
-     *  else `false`.
-     * @example
-     *
-     * _.isArrayLikeObject([1, 2, 3]);
-     * // => true
-     *
-     * _.isArrayLikeObject(document.body.children);
-     * // => true
-     *
-     * _.isArrayLikeObject('abc');
-     * // => false
-     *
-     * _.isArrayLikeObject(_.noop);
-     * // => false
-     */
-    function isArrayLikeObject(value) {
-      return isObjectLike(value) && isArrayLike(value);
-    }
-
-    /**
-     * Checks if `value` is classified as a boolean primitive or object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.
-     * @example
-     *
-     * _.isBoolean(false);
-     * // => true
-     *
-     * _.isBoolean(null);
-     * // => false
-     */
-    function isBoolean(value) {
-      return value === true || value === false ||
-        (isObjectLike(value) && baseGetTag(value) == boolTag);
-    }
-
-    /**
-     * Checks if `value` is a buffer.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
-     * @example
-     *
-     * _.isBuffer(new Buffer(2));
-     * // => true
-     *
-     * _.isBuffer(new Uint8Array(2));
-     * // => false
-     */
-    var isBuffer = nativeIsBuffer || stubFalse;
-
-    /**
-     * Checks if `value` is classified as a `Date` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.
-     * @example
-     *
-     * _.isDate(new Date);
-     * // => true
-     *
-     * _.isDate('Mon April 23 2012');
-     * // => false
-     */
-    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;
-
-    /**
-     * Checks if `value` is likely a DOM element.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.
-     * @example
-     *
-     * _.isElement(document.body);
-     * // => true
-     *
-     * _.isElement('<body>');
-     * // => false
-     */
-    function isElement(value) {
-      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);
-    }
-
-    /**
-     * Checks if `value` is an empty object, collection, map, or set.
-     *
-     * Objects are considered empty if they have no own enumerable string keyed
-     * properties.
-     *
-     * Array-like values such as `arguments` objects, arrays, buffers, strings, or
-     * jQuery-like collections are considered empty if they have a `length` of `0`.
-     * Similarly, maps and sets are considered empty if they have a `size` of `0`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is empty, else `false`.
-     * @example
-     *
-     * _.isEmpty(null);
-     * // => true
-     *
-     * _.isEmpty(true);
-     * // => true
-     *
-     * _.isEmpty(1);
-     * // => true
-     *
-     * _.isEmpty([1, 2, 3]);
-     * // => false
-     *
-     * _.isEmpty({ 'a': 1 });
-     * // => false
-     */
-    function isEmpty(value) {
-      if (value == null) {
-        return true;
-      }
-      if (isArrayLike(value) &&
-          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
-            isBuffer(value) || isTypedArray(value) || isArguments(value))) {
-        return !value.length;
-      }
-      var tag = getTag(value);
-      if (tag == mapTag || tag == setTag) {
-        return !value.size;
-      }
-      if (isPrototype(value)) {
-        return !baseKeys(value).length;
-      }
-      for (var key in value) {
-        if (hasOwnProperty.call(value, key)) {
-          return false;
-        }
-      }
-      return true;
-    }
-
-    /**
-     * Performs a deep comparison between two values to determine if they are
-     * equivalent.
-     *
-     * **Note:** This method supports comparing arrays, array buffers, booleans,
-     * date objects, error objects, maps, numbers, `Object` objects, regexes,
-     * sets, strings, symbols, and typed arrays. `Object` objects are compared
-     * by their own, not inherited, enumerable properties. Functions and DOM
-     * nodes are compared by strict equality, i.e. `===`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     * var other = { 'a': 1 };
-     *
-     * _.isEqual(object, other);
-     * // => true
-     *
-     * object === other;
-     * // => false
-     */
-    function isEqual(value, other) {
-      return baseIsEqual(value, other);
-    }
-
-    /**
-     * This method is like `_.isEqual` except that it accepts `customizer` which
-     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-     * are handled by the method instead. The `customizer` is invoked with up to
-     * six arguments: (objValue, othValue [, index|key, object, other, stack]).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
-     * @example
-     *
-     * function isGreeting(value) {
-     *   return /^h(?:i|ello)$/.test(value);
-     * }
-     *
-     * function customizer(objValue, othValue) {
-     *   if (isGreeting(objValue) && isGreeting(othValue)) {
-     *     return true;
-     *   }
-     * }
-     *
-     * var array = ['hello', 'goodbye'];
-     * var other = ['hi', 'goodbye'];
-     *
-     * _.isEqualWith(array, other, customizer);
-     * // => true
-     */
-    function isEqualWith(value, other, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      var result = customizer ? customizer(value, other) : undefined;
-      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;
-    }
-
-    /**
-     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,
-     * `SyntaxError`, `TypeError`, or `URIError` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.
-     * @example
-     *
-     * _.isError(new Error);
-     * // => true
-     *
-     * _.isError(Error);
-     * // => false
-     */
-    function isError(value) {
-      if (!isObjectLike(value)) {
-        return false;
-      }
-      var tag = baseGetTag(value);
-      return tag == errorTag || tag == domExcTag ||
-        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));
-    }
-
-    /**
-     * Checks if `value` is a finite primitive number.
-     *
-     * **Note:** This method is based on
-     * [`Number.isFinite`](https://mdn.io/Number/isFinite).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.
-     * @example
-     *
-     * _.isFinite(3);
-     * // => true
-     *
-     * _.isFinite(Number.MIN_VALUE);
-     * // => true
-     *
-     * _.isFinite(Infinity);
-     * // => false
-     *
-     * _.isFinite('3');
-     * // => false
-     */
-    function isFinite(value) {
-      return typeof value == 'number' && nativeIsFinite(value);
-    }
-
-    /**
-     * Checks if `value` is classified as a `Function` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a function, else `false`.
-     * @example
-     *
-     * _.isFunction(_);
-     * // => true
-     *
-     * _.isFunction(/abc/);
-     * // => false
-     */
-    function isFunction(value) {
-      if (!isObject(value)) {
-        return false;
-      }
-      // The use of `Object#toString` avoids issues with the `typeof` operator
-      // in Safari 9 which returns 'object' for typed arrays and other constructors.
-      var tag = baseGetTag(value);
-      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
-    }
-
-    /**
-     * Checks if `value` is an integer.
-     *
-     * **Note:** This method is based on
-     * [`Number.isInteger`](https://mdn.io/Number/isInteger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.
-     * @example
-     *
-     * _.isInteger(3);
-     * // => true
-     *
-     * _.isInteger(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isInteger(Infinity);
-     * // => false
-     *
-     * _.isInteger('3');
-     * // => false
-     */
-    function isInteger(value) {
-      return typeof value == 'number' && value == toInteger(value);
-    }
-
-    /**
-     * Checks if `value` is a valid array-like length.
-     *
-     * **Note:** This method is loosely based on
-     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
-     * @example
-     *
-     * _.isLength(3);
-     * // => true
-     *
-     * _.isLength(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isLength(Infinity);
-     * // => false
-     *
-     * _.isLength('3');
-     * // => false
-     */
-    function isLength(value) {
-      return typeof value == 'number' &&
-        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-    }
-
-    /**
-     * Checks if `value` is the
-     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
-     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is an object, else `false`.
-     * @example
-     *
-     * _.isObject({});
-     * // => true
-     *
-     * _.isObject([1, 2, 3]);
-     * // => true
-     *
-     * _.isObject(_.noop);
-     * // => true
-     *
-     * _.isObject(null);
-     * // => false
-     */
-    function isObject(value) {
-      var type = typeof value;
-      return value != null && (type == 'object' || type == 'function');
-    }
-
-    /**
-     * Checks if `value` is object-like. A value is object-like if it's not `null`
-     * and has a `typeof` result of "object".
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
-     * @example
-     *
-     * _.isObjectLike({});
-     * // => true
-     *
-     * _.isObjectLike([1, 2, 3]);
-     * // => true
-     *
-     * _.isObjectLike(_.noop);
-     * // => false
-     *
-     * _.isObjectLike(null);
-     * // => false
-     */
-    function isObjectLike(value) {
-      return value != null && typeof value == 'object';
-    }
-
-    /**
-     * Checks if `value` is classified as a `Map` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a map, else `false`.
-     * @example
-     *
-     * _.isMap(new Map);
-     * // => true
-     *
-     * _.isMap(new WeakMap);
-     * // => false
-     */
-    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
-
-    /**
-     * Performs a partial deep comparison between `object` and `source` to
-     * determine if `object` contains equivalent property values.
-     *
-     * **Note:** This method is equivalent to `_.matches` when `source` is
-     * partially applied.
-     *
-     * Partial comparisons will match empty array and empty object `source`
-     * values against any array or object value, respectively. See `_.isEqual`
-     * for a list of supported value comparisons.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2 };
-     *
-     * _.isMatch(object, { 'b': 2 });
-     * // => true
-     *
-     * _.isMatch(object, { 'b': 1 });
-     * // => false
-     */
-    function isMatch(object, source) {
-      return object === source || baseIsMatch(object, source, getMatchData(source));
-    }
-
-    /**
-     * This method is like `_.isMatch` except that it accepts `customizer` which
-     * is invoked to compare values. If `customizer` returns `undefined`, comparisons
-     * are handled by the method instead. The `customizer` is invoked with five
-     * arguments: (objValue, srcValue, index|key, object, source).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {Object} object The object to inspect.
-     * @param {Object} source The object of property values to match.
-     * @param {Function} [customizer] The function to customize comparisons.
-     * @returns {boolean} Returns `true` if `object` is a match, else `false`.
-     * @example
-     *
-     * function isGreeting(value) {
-     *   return /^h(?:i|ello)$/.test(value);
-     * }
-     *
-     * function customizer(objValue, srcValue) {
-     *   if (isGreeting(objValue) && isGreeting(srcValue)) {
-     *     return true;
-     *   }
-     * }
-     *
-     * var object = { 'greeting': 'hello' };
-     * var source = { 'greeting': 'hi' };
-     *
-     * _.isMatchWith(object, source, customizer);
-     * // => true
-     */
-    function isMatchWith(object, source, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return baseIsMatch(object, source, getMatchData(source), customizer);
-    }
-
-    /**
-     * Checks if `value` is `NaN`.
-     *
-     * **Note:** This method is based on
-     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as
-     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for
-     * `undefined` and other non-number values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
-     * @example
-     *
-     * _.isNaN(NaN);
-     * // => true
-     *
-     * _.isNaN(new Number(NaN));
-     * // => true
-     *
-     * isNaN(undefined);
-     * // => true
-     *
-     * _.isNaN(undefined);
-     * // => false
-     */
-    function isNaN(value) {
-      // An `NaN` primitive is the only value that is not equal to itself.
-      // Perform the `toStringTag` check first to avoid errors with some
-      // ActiveX objects in IE.
-      return isNumber(value) && value != +value;
-    }
-
-    /**
-     * Checks if `value` is a pristine native function.
-     *
-     * **Note:** This method can't reliably detect native functions in the presence
-     * of the core-js package because core-js circumvents this kind of detection.
-     * Despite multiple requests, the core-js maintainer has made it clear: any
-     * attempt to fix the detection will be obstructed. As a result, we're left
-     * with little choice but to throw an error. Unfortunately, this also affects
-     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),
-     * which rely on core-js.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a native function,
-     *  else `false`.
-     * @example
-     *
-     * _.isNative(Array.prototype.push);
-     * // => true
-     *
-     * _.isNative(_);
-     * // => false
-     */
-    function isNative(value) {
-      if (isMaskable(value)) {
-        throw new Error(CORE_ERROR_TEXT);
-      }
-      return baseIsNative(value);
-    }
-
-    /**
-     * Checks if `value` is `null`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.
-     * @example
-     *
-     * _.isNull(null);
-     * // => true
-     *
-     * _.isNull(void 0);
-     * // => false
-     */
-    function isNull(value) {
-      return value === null;
-    }
-
-    /**
-     * Checks if `value` is `null` or `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.
-     * @example
-     *
-     * _.isNil(null);
-     * // => true
-     *
-     * _.isNil(void 0);
-     * // => true
-     *
-     * _.isNil(NaN);
-     * // => false
-     */
-    function isNil(value) {
-      return value == null;
-    }
-
-    /**
-     * Checks if `value` is classified as a `Number` primitive or object.
-     *
-     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are
-     * classified as numbers, use the `_.isFinite` method.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a number, else `false`.
-     * @example
-     *
-     * _.isNumber(3);
-     * // => true
-     *
-     * _.isNumber(Number.MIN_VALUE);
-     * // => true
-     *
-     * _.isNumber(Infinity);
-     * // => true
-     *
-     * _.isNumber('3');
-     * // => false
-     */
-    function isNumber(value) {
-      return typeof value == 'number' ||
-        (isObjectLike(value) && baseGetTag(value) == numberTag);
-    }
-
-    /**
-     * Checks if `value` is a plain object, that is, an object created by the
-     * `Object` constructor or one with a `[[Prototype]]` of `null`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.8.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * _.isPlainObject(new Foo);
-     * // => false
-     *
-     * _.isPlainObject([1, 2, 3]);
-     * // => false
-     *
-     * _.isPlainObject({ 'x': 0, 'y': 0 });
-     * // => true
-     *
-     * _.isPlainObject(Object.create(null));
-     * // => true
-     */
-    function isPlainObject(value) {
-      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {
-        return false;
-      }
-      var proto = getPrototype(value);
-      if (proto === null) {
-        return true;
-      }
-      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
-      return typeof Ctor == 'function' && Ctor instanceof Ctor &&
-        funcToString.call(Ctor) == objectCtorString;
-    }
-
-    /**
-     * Checks if `value` is classified as a `RegExp` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.1.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.
-     * @example
-     *
-     * _.isRegExp(/abc/);
-     * // => true
-     *
-     * _.isRegExp('/abc/');
-     * // => false
-     */
-    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;
-
-    /**
-     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754
-     * double precision number which isn't the result of a rounded unsafe integer.
-     *
-     * **Note:** This method is based on
-     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.
-     * @example
-     *
-     * _.isSafeInteger(3);
-     * // => true
-     *
-     * _.isSafeInteger(Number.MIN_VALUE);
-     * // => false
-     *
-     * _.isSafeInteger(Infinity);
-     * // => false
-     *
-     * _.isSafeInteger('3');
-     * // => false
-     */
-    function isSafeInteger(value) {
-      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;
-    }
-
-    /**
-     * Checks if `value` is classified as a `Set` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a set, else `false`.
-     * @example
-     *
-     * _.isSet(new Set);
-     * // => true
-     *
-     * _.isSet(new WeakSet);
-     * // => false
-     */
-    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
-
-    /**
-     * Checks if `value` is classified as a `String` primitive or object.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a string, else `false`.
-     * @example
-     *
-     * _.isString('abc');
-     * // => true
-     *
-     * _.isString(1);
-     * // => false
-     */
-    function isString(value) {
-      return typeof value == 'string' ||
-        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
-    }
-
-    /**
-     * Checks if `value` is classified as a `Symbol` primitive or object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
-     * @example
-     *
-     * _.isSymbol(Symbol.iterator);
-     * // => true
-     *
-     * _.isSymbol('abc');
-     * // => false
-     */
-    function isSymbol(value) {
-      return typeof value == 'symbol' ||
-        (isObjectLike(value) && baseGetTag(value) == symbolTag);
-    }
-
-    /**
-     * Checks if `value` is classified as a typed array.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
-     * @example
-     *
-     * _.isTypedArray(new Uint8Array);
-     * // => true
-     *
-     * _.isTypedArray([]);
-     * // => false
-     */
-    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
-
-    /**
-     * Checks if `value` is `undefined`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.
-     * @example
-     *
-     * _.isUndefined(void 0);
-     * // => true
-     *
-     * _.isUndefined(null);
-     * // => false
-     */
-    function isUndefined(value) {
-      return value === undefined;
-    }
-
-    /**
-     * Checks if `value` is classified as a `WeakMap` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.
-     * @example
-     *
-     * _.isWeakMap(new WeakMap);
-     * // => true
-     *
-     * _.isWeakMap(new Map);
-     * // => false
-     */
-    function isWeakMap(value) {
-      return isObjectLike(value) && getTag(value) == weakMapTag;
-    }
-
-    /**
-     * Checks if `value` is classified as a `WeakSet` object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.3.0
-     * @category Lang
-     * @param {*} value The value to check.
-     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.
-     * @example
-     *
-     * _.isWeakSet(new WeakSet);
-     * // => true
-     *
-     * _.isWeakSet(new Set);
-     * // => false
-     */
-    function isWeakSet(value) {
-      return isObjectLike(value) && baseGetTag(value) == weakSetTag;
-    }
-
-    /**
-     * Checks if `value` is less than `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than `other`,
-     *  else `false`.
-     * @see _.gt
-     * @example
-     *
-     * _.lt(1, 3);
-     * // => true
-     *
-     * _.lt(3, 3);
-     * // => false
-     *
-     * _.lt(3, 1);
-     * // => false
-     */
-    var lt = createRelationalOperation(baseLt);
-
-    /**
-     * Checks if `value` is less than or equal to `other`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.9.0
-     * @category Lang
-     * @param {*} value The value to compare.
-     * @param {*} other The other value to compare.
-     * @returns {boolean} Returns `true` if `value` is less than or equal to
-     *  `other`, else `false`.
-     * @see _.gte
-     * @example
-     *
-     * _.lte(1, 3);
-     * // => true
-     *
-     * _.lte(3, 3);
-     * // => true
-     *
-     * _.lte(3, 1);
-     * // => false
-     */
-    var lte = createRelationalOperation(function(value, other) {
-      return value <= other;
-    });
-
-    /**
-     * Converts `value` to an array.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {Array} Returns the converted array.
-     * @example
-     *
-     * _.toArray({ 'a': 1, 'b': 2 });
-     * // => [1, 2]
-     *
-     * _.toArray('abc');
-     * // => ['a', 'b', 'c']
-     *
-     * _.toArray(1);
-     * // => []
-     *
-     * _.toArray(null);
-     * // => []
-     */
-    function toArray(value) {
-      if (!value) {
-        return [];
-      }
-      if (isArrayLike(value)) {
-        return isString(value) ? stringToArray(value) : copyArray(value);
-      }
-      if (symIterator && value[symIterator]) {
-        return iteratorToArray(value[symIterator]());
-      }
-      var tag = getTag(value),
-          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
-
-      return func(value);
-    }
-
-    /**
-     * Converts `value` to a finite number.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.12.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted number.
-     * @example
-     *
-     * _.toFinite(3.2);
-     * // => 3.2
-     *
-     * _.toFinite(Number.MIN_VALUE);
-     * // => 5e-324
-     *
-     * _.toFinite(Infinity);
-     * // => 1.7976931348623157e+308
-     *
-     * _.toFinite('3.2');
-     * // => 3.2
-     */
-    function toFinite(value) {
-      if (!value) {
-        return value === 0 ? value : 0;
-      }
-      value = toNumber(value);
-      if (value === INFINITY || value === -INFINITY) {
-        var sign = (value < 0 ? -1 : 1);
-        return sign * MAX_INTEGER;
-      }
-      return value === value ? value : 0;
-    }
-
-    /**
-     * Converts `value` to an integer.
-     *
-     * **Note:** This method is loosely based on
-     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toInteger(3.2);
-     * // => 3
-     *
-     * _.toInteger(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toInteger(Infinity);
-     * // => 1.7976931348623157e+308
-     *
-     * _.toInteger('3.2');
-     * // => 3
-     */
-    function toInteger(value) {
-      var result = toFinite(value),
-          remainder = result % 1;
-
-      return result === result ? (remainder ? result - remainder : result) : 0;
-    }
-
-    /**
-     * Converts `value` to an integer suitable for use as the length of an
-     * array-like object.
-     *
-     * **Note:** This method is based on
-     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toLength(3.2);
-     * // => 3
-     *
-     * _.toLength(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toLength(Infinity);
-     * // => 4294967295
-     *
-     * _.toLength('3.2');
-     * // => 3
-     */
-    function toLength(value) {
-      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
-    }
-
-    /**
-     * Converts `value` to a number.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to process.
-     * @returns {number} Returns the number.
-     * @example
-     *
-     * _.toNumber(3.2);
-     * // => 3.2
-     *
-     * _.toNumber(Number.MIN_VALUE);
-     * // => 5e-324
-     *
-     * _.toNumber(Infinity);
-     * // => Infinity
-     *
-     * _.toNumber('3.2');
-     * // => 3.2
-     */
-    function toNumber(value) {
-      if (typeof value == 'number') {
-        return value;
-      }
-      if (isSymbol(value)) {
-        return NAN;
-      }
-      if (isObject(value)) {
-        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
-        value = isObject(other) ? (other + '') : other;
-      }
-      if (typeof value != 'string') {
-        return value === 0 ? value : +value;
-      }
-      value = baseTrim(value);
-      var isBinary = reIsBinary.test(value);
-      return (isBinary || reIsOctal.test(value))
-        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
-        : (reIsBadHex.test(value) ? NAN : +value);
-    }
-
-    /**
-     * Converts `value` to a plain object flattening inherited enumerable string
-     * keyed properties of `value` to own properties of the plain object.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {Object} Returns the converted plain object.
-     * @example
-     *
-     * function Foo() {
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.assign({ 'a': 1 }, new Foo);
-     * // => { 'a': 1, 'b': 2 }
-     *
-     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
-     * // => { 'a': 1, 'b': 2, 'c': 3 }
-     */
-    function toPlainObject(value) {
-      return copyObject(value, keysIn(value));
-    }
-
-    /**
-     * Converts `value` to a safe integer. A safe integer can be compared and
-     * represented correctly.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.toSafeInteger(3.2);
-     * // => 3
-     *
-     * _.toSafeInteger(Number.MIN_VALUE);
-     * // => 0
-     *
-     * _.toSafeInteger(Infinity);
-     * // => 9007199254740991
-     *
-     * _.toSafeInteger('3.2');
-     * // => 3
-     */
-    function toSafeInteger(value) {
-      return value
-        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
-        : (value === 0 ? value : 0);
-    }
-
-    /**
-     * Converts `value` to a string. An empty string is returned for `null`
-     * and `undefined` values. The sign of `-0` is preserved.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Lang
-     * @param {*} value The value to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.toString(null);
-     * // => ''
-     *
-     * _.toString(-0);
-     * // => '-0'
-     *
-     * _.toString([1, 2, 3]);
-     * // => '1,2,3'
-     */
-    function toString(value) {
-      return value == null ? '' : baseToString(value);
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Assigns own enumerable string keyed properties of source objects to the
-     * destination object. Source objects are applied from left to right.
-     * Subsequent sources overwrite property assignments of previous sources.
-     *
-     * **Note:** This method mutates `object` and is loosely based on
-     * [`Object.assign`](https://mdn.io/Object/assign).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.10.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.assignIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * function Bar() {
-     *   this.c = 3;
-     * }
-     *
-     * Foo.prototype.b = 2;
-     * Bar.prototype.d = 4;
-     *
-     * _.assign({ 'a': 0 }, new Foo, new Bar);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    var assign = createAssigner(function(object, source) {
-      if (isPrototype(source) || isArrayLike(source)) {
-        copyObject(source, keys(source), object);
-        return;
-      }
-      for (var key in source) {
-        if (hasOwnProperty.call(source, key)) {
-          assignValue(object, key, source[key]);
-        }
-      }
-    });
-
-    /**
-     * This method is like `_.assign` except that it iterates over own and
-     * inherited source properties.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias extend
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.assign
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     * }
-     *
-     * function Bar() {
-     *   this.c = 3;
-     * }
-     *
-     * Foo.prototype.b = 2;
-     * Bar.prototype.d = 4;
-     *
-     * _.assignIn({ 'a': 0 }, new Foo, new Bar);
-     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
-     */
-    var assignIn = createAssigner(function(object, source) {
-      copyObject(source, keysIn(source), object);
-    });
-
-    /**
-     * This method is like `_.assignIn` except that it accepts `customizer`
-     * which is invoked to produce the assigned values. If `customizer` returns
-     * `undefined`, assignment is handled by the method instead. The `customizer`
-     * is invoked with five arguments: (objValue, srcValue, key, object, source).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias extendWith
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @see _.assignWith
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   return _.isUndefined(objValue) ? srcValue : objValue;
-     * }
-     *
-     * var defaults = _.partialRight(_.assignInWith, customizer);
-     *
-     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {
-      copyObject(source, keysIn(source), object, customizer);
-    });
-
-    /**
-     * This method is like `_.assign` except that it accepts `customizer`
-     * which is invoked to produce the assigned values. If `customizer` returns
-     * `undefined`, assignment is handled by the method instead. The `customizer`
-     * is invoked with five arguments: (objValue, srcValue, key, object, source).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @see _.assignInWith
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   return _.isUndefined(objValue) ? srcValue : objValue;
-     * }
-     *
-     * var defaults = _.partialRight(_.assignWith, customizer);
-     *
-     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {
-      copyObject(source, keys(source), object, customizer);
-    });
-
-    /**
-     * Creates an array of values corresponding to `paths` of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Array} Returns the picked values.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
-     *
-     * _.at(object, ['a[0].b.c', 'a[1]']);
-     * // => [3, 4]
-     */
-    var at = flatRest(baseAt);
-
-    /**
-     * Creates an object that inherits from the `prototype` object. If a
-     * `properties` object is given, its own enumerable string keyed properties
-     * are assigned to the created object.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.3.0
-     * @category Object
-     * @param {Object} prototype The object to inherit from.
-     * @param {Object} [properties] The properties to assign to the object.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * function Shape() {
-     *   this.x = 0;
-     *   this.y = 0;
-     * }
-     *
-     * function Circle() {
-     *   Shape.call(this);
-     * }
-     *
-     * Circle.prototype = _.create(Shape.prototype, {
-     *   'constructor': Circle
-     * });
-     *
-     * var circle = new Circle;
-     * circle instanceof Circle;
-     * // => true
-     *
-     * circle instanceof Shape;
-     * // => true
-     */
-    function create(prototype, properties) {
-      var result = baseCreate(prototype);
-      return properties == null ? result : baseAssign(result, properties);
-    }
-
-    /**
-     * Assigns own and inherited enumerable string keyed properties of source
-     * objects to the destination object for all destination properties that
-     * resolve to `undefined`. Source objects are applied from left to right.
-     * Once a property is set, additional values of the same property are ignored.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.defaultsDeep
-     * @example
-     *
-     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });
-     * // => { 'a': 1, 'b': 2 }
-     */
-    var defaults = baseRest(function(object, sources) {
-      object = Object(object);
-
-      var index = -1;
-      var length = sources.length;
-      var guard = length > 2 ? sources[2] : undefined;
-
-      if (guard && isIterateeCall(sources[0], sources[1], guard)) {
-        length = 1;
-      }
-
-      while (++index < length) {
-        var source = sources[index];
-        var props = keysIn(source);
-        var propsIndex = -1;
-        var propsLength = props.length;
-
-        while (++propsIndex < propsLength) {
-          var key = props[propsIndex];
-          var value = object[key];
-
-          if (value === undefined ||
-              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {
-            object[key] = source[key];
-          }
-        }
-      }
-
-      return object;
-    });
-
-    /**
-     * This method is like `_.defaults` except that it recursively assigns
-     * default properties.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @see _.defaults
-     * @example
-     *
-     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });
-     * // => { 'a': { 'b': 2, 'c': 3 } }
-     */
-    var defaultsDeep = baseRest(function(args) {
-      args.push(undefined, customDefaultsMerge);
-      return apply(mergeWith, undefined, args);
-    });
-
-    /**
-     * This method is like `_.find` except that it returns the key of the first
-     * element `predicate` returns truthy for instead of the element itself.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {string|undefined} Returns the key of the matched element,
-     *  else `undefined`.
-     * @example
-     *
-     * var users = {
-     *   'barney':  { 'age': 36, 'active': true },
-     *   'fred':    { 'age': 40, 'active': false },
-     *   'pebbles': { 'age': 1,  'active': true }
-     * };
-     *
-     * _.findKey(users, function(o) { return o.age < 40; });
-     * // => 'barney' (iteration order is not guaranteed)
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findKey(users, { 'age': 1, 'active': true });
-     * // => 'pebbles'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findKey(users, ['active', false]);
-     * // => 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findKey(users, 'active');
-     * // => 'barney'
-     */
-    function findKey(object, predicate) {
-      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);
-    }
-
-    /**
-     * This method is like `_.findKey` except that it iterates over elements of
-     * a collection in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @param {Function} [predicate=_.identity] The function invoked per iteration.
-     * @returns {string|undefined} Returns the key of the matched element,
-     *  else `undefined`.
-     * @example
-     *
-     * var users = {
-     *   'barney':  { 'age': 36, 'active': true },
-     *   'fred':    { 'age': 40, 'active': false },
-     *   'pebbles': { 'age': 1,  'active': true }
-     * };
-     *
-     * _.findLastKey(users, function(o) { return o.age < 40; });
-     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.findLastKey(users, { 'age': 36, 'active': true });
-     * // => 'barney'
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.findLastKey(users, ['active', false]);
-     * // => 'fred'
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.findLastKey(users, 'active');
-     * // => 'pebbles'
-     */
-    function findLastKey(object, predicate) {
-      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);
-    }
-
-    /**
-     * Iterates over own and inherited enumerable string keyed properties of an
-     * object and invokes `iteratee` for each property. The iteratee is invoked
-     * with three arguments: (value, key, object). Iteratee functions may exit
-     * iteration early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forInRight
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forIn(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).
-     */
-    function forIn(object, iteratee) {
-      return object == null
-        ? object
-        : baseFor(object, getIteratee(iteratee, 3), keysIn);
-    }
-
-    /**
-     * This method is like `_.forIn` except that it iterates over properties of
-     * `object` in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forInRight(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.
-     */
-    function forInRight(object, iteratee) {
-      return object == null
-        ? object
-        : baseForRight(object, getIteratee(iteratee, 3), keysIn);
-    }
-
-    /**
-     * Iterates over own enumerable string keyed properties of an object and
-     * invokes `iteratee` for each property. The iteratee is invoked with three
-     * arguments: (value, key, object). Iteratee functions may exit iteration
-     * early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forOwnRight
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forOwn(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'a' then 'b' (iteration order is not guaranteed).
-     */
-    function forOwn(object, iteratee) {
-      return object && baseForOwn(object, getIteratee(iteratee, 3));
-    }
-
-    /**
-     * This method is like `_.forOwn` except that it iterates over properties of
-     * `object` in the opposite order.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.0.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns `object`.
-     * @see _.forOwn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.forOwnRight(new Foo, function(value, key) {
-     *   console.log(key);
-     * });
-     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.
-     */
-    function forOwnRight(object, iteratee) {
-      return object && baseForOwnRight(object, getIteratee(iteratee, 3));
-    }
-
-    /**
-     * Creates an array of function property names from own enumerable properties
-     * of `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @returns {Array} Returns the function names.
-     * @see _.functionsIn
-     * @example
-     *
-     * function Foo() {
-     *   this.a = _.constant('a');
-     *   this.b = _.constant('b');
-     * }
-     *
-     * Foo.prototype.c = _.constant('c');
-     *
-     * _.functions(new Foo);
-     * // => ['a', 'b']
-     */
-    function functions(object) {
-      return object == null ? [] : baseFunctions(object, keys(object));
-    }
-
-    /**
-     * Creates an array of function property names from own and inherited
-     * enumerable properties of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to inspect.
-     * @returns {Array} Returns the function names.
-     * @see _.functions
-     * @example
-     *
-     * function Foo() {
-     *   this.a = _.constant('a');
-     *   this.b = _.constant('b');
-     * }
-     *
-     * Foo.prototype.c = _.constant('c');
-     *
-     * _.functionsIn(new Foo);
-     * // => ['a', 'b', 'c']
-     */
-    function functionsIn(object) {
-      return object == null ? [] : baseFunctions(object, keysIn(object));
-    }
-
-    /**
-     * Gets the value at `path` of `object`. If the resolved value is
-     * `undefined`, the `defaultValue` is returned in its place.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to get.
-     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.get(object, 'a[0].b.c');
-     * // => 3
-     *
-     * _.get(object, ['a', '0', 'b', 'c']);
-     * // => 3
-     *
-     * _.get(object, 'a.b.c', 'default');
-     * // => 'default'
-     */
-    function get(object, path, defaultValue) {
-      var result = object == null ? undefined : baseGet(object, path);
-      return result === undefined ? defaultValue : result;
-    }
-
-    /**
-     * Checks if `path` is a direct property of `object`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     * @example
-     *
-     * var object = { 'a': { 'b': 2 } };
-     * var other = _.create({ 'a': _.create({ 'b': 2 }) });
-     *
-     * _.has(object, 'a');
-     * // => true
-     *
-     * _.has(object, 'a.b');
-     * // => true
-     *
-     * _.has(object, ['a', 'b']);
-     * // => true
-     *
-     * _.has(other, 'a');
-     * // => false
-     */
-    function has(object, path) {
-      return object != null && hasPath(object, path, baseHas);
-    }
-
-    /**
-     * Checks if `path` is a direct or inherited property of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path to check.
-     * @returns {boolean} Returns `true` if `path` exists, else `false`.
-     * @example
-     *
-     * var object = _.create({ 'a': _.create({ 'b': 2 }) });
-     *
-     * _.hasIn(object, 'a');
-     * // => true
-     *
-     * _.hasIn(object, 'a.b');
-     * // => true
-     *
-     * _.hasIn(object, ['a', 'b']);
-     * // => true
-     *
-     * _.hasIn(object, 'b');
-     * // => false
-     */
-    function hasIn(object, path) {
-      return object != null && hasPath(object, path, baseHasIn);
-    }
-
-    /**
-     * Creates an object composed of the inverted keys and values of `object`.
-     * If `object` contains duplicate values, subsequent values overwrite
-     * property assignments of previous values.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.7.0
-     * @category Object
-     * @param {Object} object The object to invert.
-     * @returns {Object} Returns the new inverted object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2, 'c': 1 };
-     *
-     * _.invert(object);
-     * // => { '1': 'c', '2': 'b' }
-     */
-    var invert = createInverter(function(result, value, key) {
-      if (value != null &&
-          typeof value.toString != 'function') {
-        value = nativeObjectToString.call(value);
-      }
-
-      result[value] = key;
-    }, constant(identity));
-
-    /**
-     * This method is like `_.invert` except that the inverted object is generated
-     * from the results of running each element of `object` thru `iteratee`. The
-     * corresponding inverted value of each inverted key is an array of keys
-     * responsible for generating the inverted value. The iteratee is invoked
-     * with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.1.0
-     * @category Object
-     * @param {Object} object The object to invert.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {Object} Returns the new inverted object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': 2, 'c': 1 };
-     *
-     * _.invertBy(object);
-     * // => { '1': ['a', 'c'], '2': ['b'] }
-     *
-     * _.invertBy(object, function(value) {
-     *   return 'group' + value;
-     * });
-     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }
-     */
-    var invertBy = createInverter(function(result, value, key) {
-      if (value != null &&
-          typeof value.toString != 'function') {
-        value = nativeObjectToString.call(value);
-      }
-
-      if (hasOwnProperty.call(result, value)) {
-        result[value].push(key);
-      } else {
-        result[value] = [key];
-      }
-    }, getIteratee);
-
-    /**
-     * Invokes the method at `path` of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {*} Returns the result of the invoked method.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };
-     *
-     * _.invoke(object, 'a[0].b.c.slice', 1, 3);
-     * // => [2, 3]
-     */
-    var invoke = baseRest(baseInvoke);
-
-    /**
-     * Creates an array of the own enumerable property names of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects. See the
-     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
-     * for more details.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.keys(new Foo);
-     * // => ['a', 'b'] (iteration order is not guaranteed)
-     *
-     * _.keys('hi');
-     * // => ['0', '1']
-     */
-    function keys(object) {
-      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
-    }
-
-    /**
-     * Creates an array of the own and inherited enumerable property names of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property names.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.keysIn(new Foo);
-     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
-     */
-    function keysIn(object) {
-      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
-    }
-
-    /**
-     * The opposite of `_.mapValues`; this method creates an object with the
-     * same values as `object` and keys generated by running each own enumerable
-     * string keyed property of `object` thru `iteratee`. The iteratee is invoked
-     * with three arguments: (value, key, object).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.8.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns the new mapped object.
-     * @see _.mapValues
-     * @example
-     *
-     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
-     *   return key + value;
-     * });
-     * // => { 'a1': 1, 'b2': 2 }
-     */
-    function mapKeys(object, iteratee) {
-      var result = {};
-      iteratee = getIteratee(iteratee, 3);
-
-      baseForOwn(object, function(value, key, object) {
-        baseAssignValue(result, iteratee(value, key, object), value);
-      });
-      return result;
-    }
-
-    /**
-     * Creates an object with the same keys as `object` and values generated
-     * by running each own enumerable string keyed property of `object` thru
-     * `iteratee`. The iteratee is invoked with three arguments:
-     * (value, key, object).
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Object} Returns the new mapped object.
-     * @see _.mapKeys
-     * @example
-     *
-     * var users = {
-     *   'fred':    { 'user': 'fred',    'age': 40 },
-     *   'pebbles': { 'user': 'pebbles', 'age': 1 }
-     * };
-     *
-     * _.mapValues(users, function(o) { return o.age; });
-     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.mapValues(users, 'age');
-     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
-     */
-    function mapValues(object, iteratee) {
-      var result = {};
-      iteratee = getIteratee(iteratee, 3);
-
-      baseForOwn(object, function(value, key, object) {
-        baseAssignValue(result, key, iteratee(value, key, object));
-      });
-      return result;
-    }
-
-    /**
-     * This method is like `_.assign` except that it recursively merges own and
-     * inherited enumerable string keyed properties of source objects into the
-     * destination object. Source properties that resolve to `undefined` are
-     * skipped if a destination value exists. Array and plain object properties
-     * are merged recursively. Other objects and value types are overridden by
-     * assignment. Source objects are applied from left to right. Subsequent
-     * sources overwrite property assignments of previous sources.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.5.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} [sources] The source objects.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {
-     *   'a': [{ 'b': 2 }, { 'd': 4 }]
-     * };
-     *
-     * var other = {
-     *   'a': [{ 'c': 3 }, { 'e': 5 }]
-     * };
-     *
-     * _.merge(object, other);
-     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
-     */
-    var merge = createAssigner(function(object, source, srcIndex) {
-      baseMerge(object, source, srcIndex);
-    });
-
-    /**
-     * This method is like `_.merge` except that it accepts `customizer` which
-     * is invoked to produce the merged values of the destination and source
-     * properties. If `customizer` returns `undefined`, merging is handled by the
-     * method instead. The `customizer` is invoked with six arguments:
-     * (objValue, srcValue, key, object, source, stack).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The destination object.
-     * @param {...Object} sources The source objects.
-     * @param {Function} customizer The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * function customizer(objValue, srcValue) {
-     *   if (_.isArray(objValue)) {
-     *     return objValue.concat(srcValue);
-     *   }
-     * }
-     *
-     * var object = { 'a': [1], 'b': [2] };
-     * var other = { 'a': [3], 'b': [4] };
-     *
-     * _.mergeWith(object, other, customizer);
-     * // => { 'a': [1, 3], 'b': [2, 4] }
-     */
-    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
-      baseMerge(object, source, srcIndex, customizer);
-    });
-
-    /**
-     * The opposite of `_.pick`; this method creates an object composed of the
-     * own and inherited enumerable property paths of `object` that are not omitted.
-     *
-     * **Note:** This method is considerably slower than `_.pick`.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {...(string|string[])} [paths] The property paths to omit.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.omit(object, ['a', 'c']);
-     * // => { 'b': '2' }
-     */
-    var omit = flatRest(function(object, paths) {
-      var result = {};
-      if (object == null) {
-        return result;
-      }
-      var isDeep = false;
-      paths = arrayMap(paths, function(path) {
-        path = castPath(path, object);
-        isDeep || (isDeep = path.length > 1);
-        return path;
-      });
-      copyObject(object, getAllKeysIn(object), result);
-      if (isDeep) {
-        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
-      }
-      var length = paths.length;
-      while (length--) {
-        baseUnset(result, paths[length]);
-      }
-      return result;
-    });
-
-    /**
-     * The opposite of `_.pickBy`; this method creates an object composed of
-     * the own and inherited enumerable string keyed properties of `object` that
-     * `predicate` doesn't return truthy for. The predicate is invoked with two
-     * arguments: (value, key).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {Function} [predicate=_.identity] The function invoked per property.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.omitBy(object, _.isNumber);
-     * // => { 'b': '2' }
-     */
-    function omitBy(object, predicate) {
-      return pickBy(object, negate(getIteratee(predicate)));
-    }
-
-    /**
-     * Creates an object composed of the picked `object` properties.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {...(string|string[])} [paths] The property paths to pick.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.pick(object, ['a', 'c']);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    var pick = flatRest(function(object, paths) {
-      return object == null ? {} : basePick(object, paths);
-    });
-
-    /**
-     * Creates an object composed of the `object` properties `predicate` returns
-     * truthy for. The predicate is invoked with two arguments: (value, key).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The source object.
-     * @param {Function} [predicate=_.identity] The function invoked per property.
-     * @returns {Object} Returns the new object.
-     * @example
-     *
-     * var object = { 'a': 1, 'b': '2', 'c': 3 };
-     *
-     * _.pickBy(object, _.isNumber);
-     * // => { 'a': 1, 'c': 3 }
-     */
-    function pickBy(object, predicate) {
-      if (object == null) {
-        return {};
-      }
-      var props = arrayMap(getAllKeysIn(object), function(prop) {
-        return [prop];
-      });
-      predicate = getIteratee(predicate);
-      return basePickBy(object, props, function(value, path) {
-        return predicate(value, path[0]);
-      });
-    }
-
-    /**
-     * This method is like `_.get` except that if the resolved value is a
-     * function it's invoked with the `this` binding of its parent object and
-     * its result is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @param {Array|string} path The path of the property to resolve.
-     * @param {*} [defaultValue] The value returned for `undefined` resolved values.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
-     *
-     * _.result(object, 'a[0].b.c1');
-     * // => 3
-     *
-     * _.result(object, 'a[0].b.c2');
-     * // => 4
-     *
-     * _.result(object, 'a[0].b.c3', 'default');
-     * // => 'default'
-     *
-     * _.result(object, 'a[0].b.c3', _.constant('default'));
-     * // => 'default'
-     */
-    function result(object, path, defaultValue) {
-      path = castPath(path, object);
-
-      var index = -1,
-          length = path.length;
-
-      // Ensure the loop is entered when path is empty.
-      if (!length) {
-        length = 1;
-        object = undefined;
-      }
-      while (++index < length) {
-        var value = object == null ? undefined : object[toKey(path[index])];
-        if (value === undefined) {
-          index = length;
-          value = defaultValue;
-        }
-        object = isFunction(value) ? value.call(object) : value;
-      }
-      return object;
-    }
-
-    /**
-     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
-     * it's created. Arrays are created for missing index properties while objects
-     * are created for all other missing properties. Use `_.setWith` to customize
-     * `path` creation.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.set(object, 'a[0].b.c', 4);
-     * console.log(object.a[0].b.c);
-     * // => 4
-     *
-     * _.set(object, ['x', '0', 'y', 'z'], 5);
-     * console.log(object.x[0].y.z);
-     * // => 5
-     */
-    function set(object, path, value) {
-      return object == null ? object : baseSet(object, path, value);
-    }
-
-    /**
-     * This method is like `_.set` except that it accepts `customizer` which is
-     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-     * path creation is handled by the method instead. The `customizer` is invoked
-     * with three arguments: (nsValue, key, nsObject).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {*} value The value to set.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {};
-     *
-     * _.setWith(object, '[0][1]', 'a', Object);
-     * // => { '0': { '1': 'a' } }
-     */
-    function setWith(object, path, value, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return object == null ? object : baseSet(object, path, value, customizer);
-    }
-
-    /**
-     * Creates an array of own enumerable string keyed-value pairs for `object`
-     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
-     * entries are returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias entries
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the key-value pairs.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.toPairs(new Foo);
-     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
-     */
-    var toPairs = createToPairs(keys);
-
-    /**
-     * Creates an array of own and inherited enumerable string keyed-value pairs
-     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
-     * or set, its entries are returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @alias entriesIn
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the key-value pairs.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.toPairsIn(new Foo);
-     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
-     */
-    var toPairsIn = createToPairs(keysIn);
-
-    /**
-     * An alternative to `_.reduce`; this method transforms `object` to a new
-     * `accumulator` object which is the result of running each of its own
-     * enumerable string keyed properties thru `iteratee`, with each invocation
-     * potentially mutating the `accumulator` object. If `accumulator` is not
-     * provided, a new object with the same `[[Prototype]]` will be used. The
-     * iteratee is invoked with four arguments: (accumulator, value, key, object).
-     * Iteratee functions may exit iteration early by explicitly returning `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.3.0
-     * @category Object
-     * @param {Object} object The object to iterate over.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @param {*} [accumulator] The custom accumulator value.
-     * @returns {*} Returns the accumulated value.
-     * @example
-     *
-     * _.transform([2, 3, 4], function(result, n) {
-     *   result.push(n *= n);
-     *   return n % 2 == 0;
-     * }, []);
-     * // => [4, 9]
-     *
-     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
-     *   (result[value] || (result[value] = [])).push(key);
-     * }, {});
-     * // => { '1': ['a', 'c'], '2': ['b'] }
-     */
-    function transform(object, iteratee, accumulator) {
-      var isArr = isArray(object),
-          isArrLike = isArr || isBuffer(object) || isTypedArray(object);
-
-      iteratee = getIteratee(iteratee, 4);
-      if (accumulator == null) {
-        var Ctor = object && object.constructor;
-        if (isArrLike) {
-          accumulator = isArr ? new Ctor : [];
-        }
-        else if (isObject(object)) {
-          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
-        }
-        else {
-          accumulator = {};
-        }
-      }
-      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
-        return iteratee(accumulator, value, index, object);
-      });
-      return accumulator;
-    }
-
-    /**
-     * Removes the property at `path` of `object`.
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to unset.
-     * @returns {boolean} Returns `true` if the property is deleted, else `false`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 7 } }] };
-     * _.unset(object, 'a[0].b.c');
-     * // => true
-     *
-     * console.log(object);
-     * // => { 'a': [{ 'b': {} }] };
-     *
-     * _.unset(object, ['a', '0', 'b', 'c']);
-     * // => true
-     *
-     * console.log(object);
-     * // => { 'a': [{ 'b': {} }] };
-     */
-    function unset(object, path) {
-      return object == null ? true : baseUnset(object, path);
-    }
-
-    /**
-     * This method is like `_.set` except that accepts `updater` to produce the
-     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
-     * is invoked with one argument: (value).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {Function} updater The function to produce the updated value.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = { 'a': [{ 'b': { 'c': 3 } }] };
-     *
-     * _.update(object, 'a[0].b.c', function(n) { return n * n; });
-     * console.log(object.a[0].b.c);
-     * // => 9
-     *
-     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
-     * console.log(object.x[0].y.z);
-     * // => 0
-     */
-    function update(object, path, updater) {
-      return object == null ? object : baseUpdate(object, path, castFunction(updater));
-    }
-
-    /**
-     * This method is like `_.update` except that it accepts `customizer` which is
-     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
-     * path creation is handled by the method instead. The `customizer` is invoked
-     * with three arguments: (nsValue, key, nsObject).
-     *
-     * **Note:** This method mutates `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.6.0
-     * @category Object
-     * @param {Object} object The object to modify.
-     * @param {Array|string} path The path of the property to set.
-     * @param {Function} updater The function to produce the updated value.
-     * @param {Function} [customizer] The function to customize assigned values.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var object = {};
-     *
-     * _.updateWith(object, '[0][1]', _.constant('a'), Object);
-     * // => { '0': { '1': 'a' } }
-     */
-    function updateWith(object, path, updater, customizer) {
-      customizer = typeof customizer == 'function' ? customizer : undefined;
-      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
-    }
-
-    /**
-     * Creates an array of the own enumerable string keyed property values of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property values.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.values(new Foo);
-     * // => [1, 2] (iteration order is not guaranteed)
-     *
-     * _.values('hi');
-     * // => ['h', 'i']
-     */
-    function values(object) {
-      return object == null ? [] : baseValues(object, keys(object));
-    }
-
-    /**
-     * Creates an array of the own and inherited enumerable string keyed property
-     * values of `object`.
-     *
-     * **Note:** Non-object values are coerced to objects.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Object
-     * @param {Object} object The object to query.
-     * @returns {Array} Returns the array of property values.
-     * @example
-     *
-     * function Foo() {
-     *   this.a = 1;
-     *   this.b = 2;
-     * }
-     *
-     * Foo.prototype.c = 3;
-     *
-     * _.valuesIn(new Foo);
-     * // => [1, 2, 3] (iteration order is not guaranteed)
-     */
-    function valuesIn(object) {
-      return object == null ? [] : baseValues(object, keysIn(object));
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Clamps `number` within the inclusive `lower` and `upper` bounds.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Number
-     * @param {number} number The number to clamp.
-     * @param {number} [lower] The lower bound.
-     * @param {number} upper The upper bound.
-     * @returns {number} Returns the clamped number.
-     * @example
-     *
-     * _.clamp(-10, -5, 5);
-     * // => -5
-     *
-     * _.clamp(10, -5, 5);
-     * // => 5
-     */
-    function clamp(number, lower, upper) {
-      if (upper === undefined) {
-        upper = lower;
-        lower = undefined;
-      }
-      if (upper !== undefined) {
-        upper = toNumber(upper);
-        upper = upper === upper ? upper : 0;
-      }
-      if (lower !== undefined) {
-        lower = toNumber(lower);
-        lower = lower === lower ? lower : 0;
-      }
-      return baseClamp(toNumber(number), lower, upper);
-    }
-
-    /**
-     * Checks if `n` is between `start` and up to, but not including, `end`. If
-     * `end` is not specified, it's set to `start` with `start` then set to `0`.
-     * If `start` is greater than `end` the params are swapped to support
-     * negative ranges.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.3.0
-     * @category Number
-     * @param {number} number The number to check.
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.
-     * @see _.range, _.rangeRight
-     * @example
-     *
-     * _.inRange(3, 2, 4);
-     * // => true
-     *
-     * _.inRange(4, 8);
-     * // => true
-     *
-     * _.inRange(4, 2);
-     * // => false
-     *
-     * _.inRange(2, 2);
-     * // => false
-     *
-     * _.inRange(1.2, 2);
-     * // => true
-     *
-     * _.inRange(5.2, 4);
-     * // => false
-     *
-     * _.inRange(-3, -2, -6);
-     * // => true
-     */
-    function inRange(number, start, end) {
-      start = toFinite(start);
-      if (end === undefined) {
-        end = start;
-        start = 0;
-      } else {
-        end = toFinite(end);
-      }
-      number = toNumber(number);
-      return baseInRange(number, start, end);
-    }
-
-    /**
-     * Produces a random number between the inclusive `lower` and `upper` bounds.
-     * If only one argument is provided a number between `0` and the given number
-     * is returned. If `floating` is `true`, or either `lower` or `upper` are
-     * floats, a floating-point number is returned instead of an integer.
-     *
-     * **Note:** JavaScript follows the IEEE-754 standard for resolving
-     * floating-point values which can produce unexpected results.
-     *
-     * @static
-     * @memberOf _
-     * @since 0.7.0
-     * @category Number
-     * @param {number} [lower=0] The lower bound.
-     * @param {number} [upper=1] The upper bound.
-     * @param {boolean} [floating] Specify returning a floating-point number.
-     * @returns {number} Returns the random number.
-     * @example
-     *
-     * _.random(0, 5);
-     * // => an integer between 0 and 5
-     *
-     * _.random(5);
-     * // => also an integer between 0 and 5
-     *
-     * _.random(5, true);
-     * // => a floating-point number between 0 and 5
-     *
-     * _.random(1.2, 5.2);
-     * // => a floating-point number between 1.2 and 5.2
-     */
-    function random(lower, upper, floating) {
-      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
-        upper = floating = undefined;
-      }
-      if (floating === undefined) {
-        if (typeof upper == 'boolean') {
-          floating = upper;
-          upper = undefined;
-        }
-        else if (typeof lower == 'boolean') {
-          floating = lower;
-          lower = undefined;
-        }
-      }
-      if (lower === undefined && upper === undefined) {
-        lower = 0;
-        upper = 1;
-      }
-      else {
-        lower = toFinite(lower);
-        if (upper === undefined) {
-          upper = lower;
-          lower = 0;
-        } else {
-          upper = toFinite(upper);
-        }
-      }
-      if (lower > upper) {
-        var temp = lower;
-        lower = upper;
-        upper = temp;
-      }
-      if (floating || lower % 1 || upper % 1) {
-        var rand = nativeRandom();
-        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
-      }
-      return baseRandom(lower, upper);
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the camel cased string.
-     * @example
-     *
-     * _.camelCase('Foo Bar');
-     * // => 'fooBar'
-     *
-     * _.camelCase('--foo-bar--');
-     * // => 'fooBar'
-     *
-     * _.camelCase('__FOO_BAR__');
-     * // => 'fooBar'
-     */
-    var camelCase = createCompounder(function(result, word, index) {
-      word = word.toLowerCase();
-      return result + (index ? capitalize(word) : word);
-    });
-
-    /**
-     * Converts the first character of `string` to upper case and the remaining
-     * to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to capitalize.
-     * @returns {string} Returns the capitalized string.
-     * @example
-     *
-     * _.capitalize('FRED');
-     * // => 'Fred'
-     */
-    function capitalize(string) {
-      return upperFirst(toString(string).toLowerCase());
-    }
-
-    /**
-     * Deburrs `string` by converting
-     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)
-     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)
-     * letters to basic Latin letters and removing
-     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to deburr.
-     * @returns {string} Returns the deburred string.
-     * @example
-     *
-     * _.deburr('déjà vu');
-     * // => 'deja vu'
-     */
-    function deburr(string) {
-      string = toString(string);
-      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');
-    }
-
-    /**
-     * Checks if `string` ends with the given target string.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {string} [target] The string to search for.
-     * @param {number} [position=string.length] The position to search up to.
-     * @returns {boolean} Returns `true` if `string` ends with `target`,
-     *  else `false`.
-     * @example
-     *
-     * _.endsWith('abc', 'c');
-     * // => true
-     *
-     * _.endsWith('abc', 'b');
-     * // => false
-     *
-     * _.endsWith('abc', 'b', 2);
-     * // => true
-     */
-    function endsWith(string, target, position) {
-      string = toString(string);
-      target = baseToString(target);
-
-      var length = string.length;
-      position = position === undefined
-        ? length
-        : baseClamp(toInteger(position), 0, length);
-
-      var end = position;
-      position -= target.length;
-      return position >= 0 && string.slice(position, end) == target;
-    }
-
-    /**
-     * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
-     * corresponding HTML entities.
-     *
-     * **Note:** No other characters are escaped. To escape additional
-     * characters use a third-party library like [_he_](https://mths.be/he).
-     *
-     * Though the ">" character is escaped for symmetry, characters like
-     * ">" and "/" don't need escaping in HTML and have no special meaning
-     * unless they're part of a tag or unquoted attribute value. See
-     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)
-     * (under "semi-related fun fact") for more details.
-     *
-     * When working with HTML you should always
-     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce
-     * XSS vectors.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category String
-     * @param {string} [string=''] The string to escape.
-     * @returns {string} Returns the escaped string.
-     * @example
-     *
-     * _.escape('fred, barney, & pebbles');
-     * // => 'fred, barney, &amp; pebbles'
-     */
-    function escape(string) {
-      string = toString(string);
-      return (string && reHasUnescapedHtml.test(string))
-        ? string.replace(reUnescapedHtml, escapeHtmlChar)
-        : string;
-    }
-
-    /**
-     * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+",
-     * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to escape.
-     * @returns {string} Returns the escaped string.
-     * @example
-     *
-     * _.escapeRegExp('[lodash](https://lodash.com/)');
-     * // => '\[lodash\]\(https://lodash\.com/\)'
-     */
-    function escapeRegExp(string) {
-      string = toString(string);
-      return (string && reHasRegExpChar.test(string))
-        ? string.replace(reRegExpChar, '\\$&')
-        : string;
-    }
-
-    /**
-     * Converts `string` to
-     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the kebab cased string.
-     * @example
-     *
-     * _.kebabCase('Foo Bar');
-     * // => 'foo-bar'
-     *
-     * _.kebabCase('fooBar');
-     * // => 'foo-bar'
-     *
-     * _.kebabCase('__FOO_BAR__');
-     * // => 'foo-bar'
-     */
-    var kebabCase = createCompounder(function(result, word, index) {
-      return result + (index ? '-' : '') + word.toLowerCase();
-    });
-
-    /**
-     * Converts `string`, as space separated words, to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the lower cased string.
-     * @example
-     *
-     * _.lowerCase('--Foo-Bar--');
-     * // => 'foo bar'
-     *
-     * _.lowerCase('fooBar');
-     * // => 'foo bar'
-     *
-     * _.lowerCase('__FOO_BAR__');
-     * // => 'foo bar'
-     */
-    var lowerCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + word.toLowerCase();
-    });
-
-    /**
-     * Converts the first character of `string` to lower case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.lowerFirst('Fred');
-     * // => 'fred'
-     *
-     * _.lowerFirst('FRED');
-     * // => 'fRED'
-     */
-    var lowerFirst = createCaseFirst('toLowerCase');
-
-    /**
-     * Pads `string` on the left and right sides if it's shorter than `length`.
-     * Padding characters are truncated if they can't be evenly divided by `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.pad('abc', 8);
-     * // => '  abc   '
-     *
-     * _.pad('abc', 8, '_-');
-     * // => '_-abc_-_'
-     *
-     * _.pad('abc', 3);
-     * // => 'abc'
-     */
-    function pad(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
-
-      var strLength = length ? stringSize(string) : 0;
-      if (!length || strLength >= length) {
-        return string;
-      }
-      var mid = (length - strLength) / 2;
-      return (
-        createPadding(nativeFloor(mid), chars) +
-        string +
-        createPadding(nativeCeil(mid), chars)
-      );
-    }
-
-    /**
-     * Pads `string` on the right side if it's shorter than `length`. Padding
-     * characters are truncated if they exceed `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.padEnd('abc', 6);
-     * // => 'abc   '
-     *
-     * _.padEnd('abc', 6, '_-');
-     * // => 'abc_-_'
-     *
-     * _.padEnd('abc', 3);
-     * // => 'abc'
-     */
-    function padEnd(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
-
-      var strLength = length ? stringSize(string) : 0;
-      return (length && strLength < length)
-        ? (string + createPadding(length - strLength, chars))
-        : string;
-    }
-
-    /**
-     * Pads `string` on the left side if it's shorter than `length`. Padding
-     * characters are truncated if they exceed `length`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to pad.
-     * @param {number} [length=0] The padding length.
-     * @param {string} [chars=' '] The string used as padding.
-     * @returns {string} Returns the padded string.
-     * @example
-     *
-     * _.padStart('abc', 6);
-     * // => '   abc'
-     *
-     * _.padStart('abc', 6, '_-');
-     * // => '_-_abc'
-     *
-     * _.padStart('abc', 3);
-     * // => 'abc'
-     */
-    function padStart(string, length, chars) {
-      string = toString(string);
-      length = toInteger(length);
-
-      var strLength = length ? stringSize(string) : 0;
-      return (length && strLength < length)
-        ? (createPadding(length - strLength, chars) + string)
-        : string;
-    }
-
-    /**
-     * Converts `string` to an integer of the specified radix. If `radix` is
-     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
-     * hexadecimal, in which case a `radix` of `16` is used.
-     *
-     * **Note:** This method aligns with the
-     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
-     *
-     * @static
-     * @memberOf _
-     * @since 1.1.0
-     * @category String
-     * @param {string} string The string to convert.
-     * @param {number} [radix=10] The radix to interpret `value` by.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {number} Returns the converted integer.
-     * @example
-     *
-     * _.parseInt('08');
-     * // => 8
-     *
-     * _.map(['6', '08', '10'], _.parseInt);
-     * // => [6, 8, 10]
-     */
-    function parseInt(string, radix, guard) {
-      if (guard || radix == null) {
-        radix = 0;
-      } else if (radix) {
-        radix = +radix;
-      }
-      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
-    }
-
-    /**
-     * Repeats the given string `n` times.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to repeat.
-     * @param {number} [n=1] The number of times to repeat the string.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the repeated string.
-     * @example
-     *
-     * _.repeat('*', 3);
-     * // => '***'
-     *
-     * _.repeat('abc', 2);
-     * // => 'abcabc'
-     *
-     * _.repeat('abc', 0);
-     * // => ''
-     */
-    function repeat(string, n, guard) {
-      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
-        n = 1;
-      } else {
-        n = toInteger(n);
-      }
-      return baseRepeat(toString(string), n);
-    }
-
-    /**
-     * Replaces matches for `pattern` in `string` with `replacement`.
-     *
-     * **Note:** This method is based on
-     * [`String#replace`](https://mdn.io/String/replace).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to modify.
-     * @param {RegExp|string} pattern The pattern to replace.
-     * @param {Function|string} replacement The match replacement.
-     * @returns {string} Returns the modified string.
-     * @example
-     *
-     * _.replace('Hi Fred', 'Fred', 'Barney');
-     * // => 'Hi Barney'
-     */
-    function replace() {
-      var args = arguments,
-          string = toString(args[0]);
-
-      return args.length < 3 ? string : string.replace(args[1], args[2]);
-    }
-
-    /**
-     * Converts `string` to
-     * [snake case](https://en.wikipedia.org/wiki/Snake_case).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the snake cased string.
-     * @example
-     *
-     * _.snakeCase('Foo Bar');
-     * // => 'foo_bar'
-     *
-     * _.snakeCase('fooBar');
-     * // => 'foo_bar'
-     *
-     * _.snakeCase('--FOO-BAR--');
-     * // => 'foo_bar'
-     */
-    var snakeCase = createCompounder(function(result, word, index) {
-      return result + (index ? '_' : '') + word.toLowerCase();
-    });
-
-    /**
-     * Splits `string` by `separator`.
-     *
-     * **Note:** This method is based on
-     * [`String#split`](https://mdn.io/String/split).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to split.
-     * @param {RegExp|string} separator The separator pattern to split by.
-     * @param {number} [limit] The length to truncate results to.
-     * @returns {Array} Returns the string segments.
-     * @example
-     *
-     * _.split('a-b-c', '-', 2);
-     * // => ['a', 'b']
-     */
-    function split(string, separator, limit) {
-      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
-        separator = limit = undefined;
-      }
-      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
-      if (!limit) {
-        return [];
-      }
-      string = toString(string);
-      if (string && (
-            typeof separator == 'string' ||
-            (separator != null && !isRegExp(separator))
-          )) {
-        separator = baseToString(separator);
-        if (!separator && hasUnicode(string)) {
-          return castSlice(stringToArray(string), 0, limit);
-        }
-      }
-      return string.split(separator, limit);
-    }
-
-    /**
-     * Converts `string` to
-     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
-     *
-     * @static
-     * @memberOf _
-     * @since 3.1.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the start cased string.
-     * @example
-     *
-     * _.startCase('--foo-bar--');
-     * // => 'Foo Bar'
-     *
-     * _.startCase('fooBar');
-     * // => 'Foo Bar'
-     *
-     * _.startCase('__FOO_BAR__');
-     * // => 'FOO BAR'
-     */
-    var startCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + upperFirst(word);
-    });
-
-    /**
-     * Checks if `string` starts with the given target string.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {string} [target] The string to search for.
-     * @param {number} [position=0] The position to search from.
-     * @returns {boolean} Returns `true` if `string` starts with `target`,
-     *  else `false`.
-     * @example
-     *
-     * _.startsWith('abc', 'a');
-     * // => true
-     *
-     * _.startsWith('abc', 'b');
-     * // => false
-     *
-     * _.startsWith('abc', 'b', 1);
-     * // => true
-     */
-    function startsWith(string, target, position) {
-      string = toString(string);
-      position = position == null
-        ? 0
-        : baseClamp(toInteger(position), 0, string.length);
-
-      target = baseToString(target);
-      return string.slice(position, position + target.length) == target;
-    }
-
-    /**
-     * Creates a compiled template function that can interpolate data properties
-     * in "interpolate" delimiters, HTML-escape interpolated data properties in
-     * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
-     * properties may be accessed as free variables in the template. If a setting
-     * object is given, it takes precedence over `_.templateSettings` values.
-     *
-     * **Note:** In the development build `_.template` utilizes
-     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
-     * for easier debugging.
-     *
-     * For more information on precompiling templates see
-     * [lodash's custom builds documentation](https://lodash.com/custom-builds).
-     *
-     * For more information on Chrome extension sandboxes see
-     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category String
-     * @param {string} [string=''] The template string.
-     * @param {Object} [options={}] The options object.
-     * @param {RegExp} [options.escape=_.templateSettings.escape]
-     *  The HTML "escape" delimiter.
-     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
-     *  The "evaluate" delimiter.
-     * @param {Object} [options.imports=_.templateSettings.imports]
-     *  An object to import into the template as free variables.
-     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
-     *  The "interpolate" delimiter.
-     * @param {string} [options.sourceURL='lodash.templateSources[n]']
-     *  The sourceURL of the compiled template.
-     * @param {string} [options.variable='obj']
-     *  The data object variable name.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Function} Returns the compiled template function.
-     * @example
-     *
-     * // Use the "interpolate" delimiter to create a compiled template.
-     * var compiled = _.template('hello <%= user %>!');
-     * compiled({ 'user': 'fred' });
-     * // => 'hello fred!'
-     *
-     * // Use the HTML "escape" delimiter to escape data property values.
-     * var compiled = _.template('<b><%- value %></b>');
-     * compiled({ 'value': '<script>' });
-     * // => '<b>&lt;script&gt;</b>'
-     *
-     * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
-     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
-     * compiled({ 'users': ['fred', 'barney'] });
-     * // => '<li>fred</li><li>barney</li>'
-     *
-     * // Use the internal `print` function in "evaluate" delimiters.
-     * var compiled = _.template('<% print("hello " + user); %>!');
-     * compiled({ 'user': 'barney' });
-     * // => 'hello barney!'
-     *
-     * // Use the ES template literal delimiter as an "interpolate" delimiter.
-     * // Disable support by replacing the "interpolate" delimiter.
-     * var compiled = _.template('hello ${ user }!');
-     * compiled({ 'user': 'pebbles' });
-     * // => 'hello pebbles!'
-     *
-     * // Use backslashes to treat delimiters as plain text.
-     * var compiled = _.template('<%= "\\<%- value %\\>" %>');
-     * compiled({ 'value': 'ignored' });
-     * // => '<%- value %>'
-     *
-     * // Use the `imports` option to import `jQuery` as `jq`.
-     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
-     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
-     * compiled({ 'users': ['fred', 'barney'] });
-     * // => '<li>fred</li><li>barney</li>'
-     *
-     * // Use the `sourceURL` option to specify a custom sourceURL for the template.
-     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
-     * compiled(data);
-     * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
-     *
-     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
-     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
-     * compiled.source;
-     * // => function(data) {
-     * //   var __t, __p = '';
-     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
-     * //   return __p;
-     * // }
-     *
-     * // Use custom template delimiters.
-     * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
-     * var compiled = _.template('hello {{ user }}!');
-     * compiled({ 'user': 'mustache' });
-     * // => 'hello mustache!'
-     *
-     * // Use the `source` property to inline compiled templates for meaningful
-     * // line numbers in error messages and stack traces.
-     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
-     *   var JST = {\
-     *     "main": ' + _.template(mainText).source + '\
-     *   };\
-     * ');
-     */
-    function template(string, options, guard) {
-      // Based on John Resig's `tmpl` implementation
-      // (http://ejohn.org/blog/javascript-micro-templating/)
-      // and Laura Doktorova's doT.js (https://github.com/olado/doT).
-      var settings = lodash.templateSettings;
-
-      if (guard && isIterateeCall(string, options, guard)) {
-        options = undefined;
-      }
-      string = toString(string);
-      options = assignInWith({}, options, settings, customDefaultsAssignIn);
-
-      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
-          importsKeys = keys(imports),
-          importsValues = baseValues(imports, importsKeys);
-
-      var isEscaping,
-          isEvaluating,
-          index = 0,
-          interpolate = options.interpolate || reNoMatch,
-          source = "__p += '";
-
-      // Compile the regexp to match each delimiter.
-      var reDelimiters = RegExp(
-        (options.escape || reNoMatch).source + '|' +
-        interpolate.source + '|' +
-        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
-        (options.evaluate || reNoMatch).source + '|$'
-      , 'g');
-
-      // Use a sourceURL for easier debugging.
-      // The sourceURL gets injected into the source that's eval-ed, so be careful
-      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
-      // and escape the comment, thus injecting code that gets evaled.
-      var sourceURL = '//# sourceURL=' +
-        (hasOwnProperty.call(options, 'sourceURL')
-          ? (options.sourceURL + '').replace(/\s/g, ' ')
-          : ('lodash.templateSources[' + (++templateCounter) + ']')
-        ) + '\n';
-
-      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
-        interpolateValue || (interpolateValue = esTemplateValue);
-
-        // Escape characters that can't be included in string literals.
-        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
-
-        // Replace delimiters with snippets.
-        if (escapeValue) {
-          isEscaping = true;
-          source += "' +\n__e(" + escapeValue + ") +\n'";
-        }
-        if (evaluateValue) {
-          isEvaluating = true;
-          source += "';\n" + evaluateValue + ";\n__p += '";
-        }
-        if (interpolateValue) {
-          source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
-        }
-        index = offset + match.length;
-
-        // The JS engine embedded in Adobe products needs `match` returned in
-        // order to produce the correct `offset` value.
-        return match;
-      });
-
-      source += "';\n";
-
-      // If `variable` is not specified wrap a with-statement around the generated
-      // code to add the data object to the top of the scope chain.
-      var variable = hasOwnProperty.call(options, 'variable') && options.variable;
-      if (!variable) {
-        source = 'with (obj) {\n' + source + '\n}\n';
-      }
-      // Throw an error if a forbidden character was found in `variable`, to prevent
-      // potential command injection attacks.
-      else if (reForbiddenIdentifierChars.test(variable)) {
-        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
-      }
-
-      // Cleanup code by stripping empty strings.
-      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
-        .replace(reEmptyStringMiddle, '$1')
-        .replace(reEmptyStringTrailing, '$1;');
-
-      // Frame code as the function body.
-      source = 'function(' + (variable || 'obj') + ') {\n' +
-        (variable
-          ? ''
-          : 'obj || (obj = {});\n'
-        ) +
-        "var __t, __p = ''" +
-        (isEscaping
-           ? ', __e = _.escape'
-           : ''
-        ) +
-        (isEvaluating
-          ? ', __j = Array.prototype.join;\n' +
-            "function print() { __p += __j.call(arguments, '') }\n"
-          : ';\n'
-        ) +
-        source +
-        'return __p\n}';
-
-      var result = attempt(function() {
-        return Function(importsKeys, sourceURL + 'return ' + source)
-          .apply(undefined, importsValues);
-      });
-
-      // Provide the compiled function's source by its `toString` method or
-      // the `source` property as a convenience for inlining compiled templates.
-      result.source = source;
-      if (isError(result)) {
-        throw result;
-      }
-      return result;
-    }
-
-    /**
-     * Converts `string`, as a whole, to lower case just like
-     * [String#toLowerCase](https://mdn.io/toLowerCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the lower cased string.
-     * @example
-     *
-     * _.toLower('--Foo-Bar--');
-     * // => '--foo-bar--'
-     *
-     * _.toLower('fooBar');
-     * // => 'foobar'
-     *
-     * _.toLower('__FOO_BAR__');
-     * // => '__foo_bar__'
-     */
-    function toLower(value) {
-      return toString(value).toLowerCase();
-    }
-
-    /**
-     * Converts `string`, as a whole, to upper case just like
-     * [String#toUpperCase](https://mdn.io/toUpperCase).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the upper cased string.
-     * @example
-     *
-     * _.toUpper('--foo-bar--');
-     * // => '--FOO-BAR--'
-     *
-     * _.toUpper('fooBar');
-     * // => 'FOOBAR'
-     *
-     * _.toUpper('__foo_bar__');
-     * // => '__FOO_BAR__'
-     */
-    function toUpper(value) {
-      return toString(value).toUpperCase();
-    }
-
-    /**
-     * Removes leading and trailing whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trim('  abc  ');
-     * // => 'abc'
-     *
-     * _.trim('-_-abc-_-', '_-');
-     * // => 'abc'
-     *
-     * _.map(['  foo  ', '  bar  '], _.trim);
-     * // => ['foo', 'bar']
-     */
-    function trim(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return baseTrim(string);
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          chrSymbols = stringToArray(chars),
-          start = charsStartIndex(strSymbols, chrSymbols),
-          end = charsEndIndex(strSymbols, chrSymbols) + 1;
-
-      return castSlice(strSymbols, start, end).join('');
-    }
-
-    /**
-     * Removes trailing whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trimEnd('  abc  ');
-     * // => '  abc'
-     *
-     * _.trimEnd('-_-abc-_-', '_-');
-     * // => '-_-abc'
-     */
-    function trimEnd(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return string.slice(0, trimmedEndIndex(string) + 1);
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-
-      return castSlice(strSymbols, 0, end).join('');
-    }
-
-    /**
-     * Removes leading whitespace or specified characters from `string`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to trim.
-     * @param {string} [chars=whitespace] The characters to trim.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {string} Returns the trimmed string.
-     * @example
-     *
-     * _.trimStart('  abc  ');
-     * // => 'abc  '
-     *
-     * _.trimStart('-_-abc-_-', '_-');
-     * // => 'abc-_-'
-     */
-    function trimStart(string, chars, guard) {
-      string = toString(string);
-      if (string && (guard || chars === undefined)) {
-        return string.replace(reTrimStart, '');
-      }
-      if (!string || !(chars = baseToString(chars))) {
-        return string;
-      }
-      var strSymbols = stringToArray(string),
-          start = charsStartIndex(strSymbols, stringToArray(chars));
-
-      return castSlice(strSymbols, start).join('');
-    }
-
-    /**
-     * Truncates `string` if it's longer than the given maximum string length.
-     * The last characters of the truncated string are replaced with the omission
-     * string which defaults to "...".
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to truncate.
-     * @param {Object} [options={}] The options object.
-     * @param {number} [options.length=30] The maximum string length.
-     * @param {string} [options.omission='...'] The string to indicate text is omitted.
-     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
-     * @returns {string} Returns the truncated string.
-     * @example
-     *
-     * _.truncate('hi-diddly-ho there, neighborino');
-     * // => 'hi-diddly-ho there, neighbo...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'length': 24,
-     *   'separator': ' '
-     * });
-     * // => 'hi-diddly-ho there,...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'length': 24,
-     *   'separator': /,? +/
-     * });
-     * // => 'hi-diddly-ho there...'
-     *
-     * _.truncate('hi-diddly-ho there, neighborino', {
-     *   'omission': ' [...]'
-     * });
-     * // => 'hi-diddly-ho there, neig [...]'
-     */
-    function truncate(string, options) {
-      var length = DEFAULT_TRUNC_LENGTH,
-          omission = DEFAULT_TRUNC_OMISSION;
-
-      if (isObject(options)) {
-        var separator = 'separator' in options ? options.separator : separator;
-        length = 'length' in options ? toInteger(options.length) : length;
-        omission = 'omission' in options ? baseToString(options.omission) : omission;
-      }
-      string = toString(string);
-
-      var strLength = string.length;
-      if (hasUnicode(string)) {
-        var strSymbols = stringToArray(string);
-        strLength = strSymbols.length;
-      }
-      if (length >= strLength) {
-        return string;
-      }
-      var end = length - stringSize(omission);
-      if (end < 1) {
-        return omission;
-      }
-      var result = strSymbols
-        ? castSlice(strSymbols, 0, end).join('')
-        : string.slice(0, end);
-
-      if (separator === undefined) {
-        return result + omission;
-      }
-      if (strSymbols) {
-        end += (result.length - end);
-      }
-      if (isRegExp(separator)) {
-        if (string.slice(end).search(separator)) {
-          var match,
-              substring = result;
-
-          if (!separator.global) {
-            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
-          }
-          separator.lastIndex = 0;
-          while ((match = separator.exec(substring))) {
-            var newEnd = match.index;
-          }
-          result = result.slice(0, newEnd === undefined ? end : newEnd);
-        }
-      } else if (string.indexOf(baseToString(separator), end) != end) {
-        var index = result.lastIndexOf(separator);
-        if (index > -1) {
-          result = result.slice(0, index);
-        }
-      }
-      return result + omission;
-    }
-
-    /**
-     * The inverse of `_.escape`; this method converts the HTML entities
-     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
-     * their corresponding characters.
-     *
-     * **Note:** No other HTML entities are unescaped. To unescape additional
-     * HTML entities use a third-party library like [_he_](https://mths.be/he).
-     *
-     * @static
-     * @memberOf _
-     * @since 0.6.0
-     * @category String
-     * @param {string} [string=''] The string to unescape.
-     * @returns {string} Returns the unescaped string.
-     * @example
-     *
-     * _.unescape('fred, barney, &amp; pebbles');
-     * // => 'fred, barney, & pebbles'
-     */
-    function unescape(string) {
-      string = toString(string);
-      return (string && reHasEscapedHtml.test(string))
-        ? string.replace(reEscapedHtml, unescapeHtmlChar)
-        : string;
-    }
-
-    /**
-     * Converts `string`, as space separated words, to upper case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the upper cased string.
-     * @example
-     *
-     * _.upperCase('--foo-bar');
-     * // => 'FOO BAR'
-     *
-     * _.upperCase('fooBar');
-     * // => 'FOO BAR'
-     *
-     * _.upperCase('__foo_bar__');
-     * // => 'FOO BAR'
-     */
-    var upperCase = createCompounder(function(result, word, index) {
-      return result + (index ? ' ' : '') + word.toUpperCase();
-    });
-
-    /**
-     * Converts the first character of `string` to upper case.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category String
-     * @param {string} [string=''] The string to convert.
-     * @returns {string} Returns the converted string.
-     * @example
-     *
-     * _.upperFirst('fred');
-     * // => 'Fred'
-     *
-     * _.upperFirst('FRED');
-     * // => 'FRED'
-     */
-    var upperFirst = createCaseFirst('toUpperCase');
-
-    /**
-     * Splits `string` into an array of its words.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category String
-     * @param {string} [string=''] The string to inspect.
-     * @param {RegExp|string} [pattern] The pattern to match words.
-     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
-     * @returns {Array} Returns the words of `string`.
-     * @example
-     *
-     * _.words('fred, barney, & pebbles');
-     * // => ['fred', 'barney', 'pebbles']
-     *
-     * _.words('fred, barney, & pebbles', /[^, ]+/g);
-     * // => ['fred', 'barney', '&', 'pebbles']
-     */
-    function words(string, pattern, guard) {
-      string = toString(string);
-      pattern = guard ? undefined : pattern;
-
-      if (pattern === undefined) {
-        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
-      }
-      return string.match(pattern) || [];
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Attempts to invoke `func`, returning either the result or the caught error
-     * object. Any additional arguments are provided to `func` when it's invoked.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Function} func The function to attempt.
-     * @param {...*} [args] The arguments to invoke `func` with.
-     * @returns {*} Returns the `func` result or error object.
-     * @example
-     *
-     * // Avoid throwing errors for invalid selectors.
-     * var elements = _.attempt(function(selector) {
-     *   return document.querySelectorAll(selector);
-     * }, '>_>');
-     *
-     * if (_.isError(elements)) {
-     *   elements = [];
-     * }
-     */
-    var attempt = baseRest(function(func, args) {
-      try {
-        return apply(func, undefined, args);
-      } catch (e) {
-        return isError(e) ? e : new Error(e);
-      }
-    });
-
-    /**
-     * Binds methods of an object to the object itself, overwriting the existing
-     * method.
-     *
-     * **Note:** This method doesn't set the "length" property of bound functions.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {Object} object The object to bind and assign the bound methods to.
-     * @param {...(string|string[])} methodNames The object method names to bind.
-     * @returns {Object} Returns `object`.
-     * @example
-     *
-     * var view = {
-     *   'label': 'docs',
-     *   'click': function() {
-     *     console.log('clicked ' + this.label);
-     *   }
-     * };
-     *
-     * _.bindAll(view, ['click']);
-     * jQuery(element).on('click', view.click);
-     * // => Logs 'clicked docs' when clicked.
-     */
-    var bindAll = flatRest(function(object, methodNames) {
-      arrayEach(methodNames, function(key) {
-        key = toKey(key);
-        baseAssignValue(object, key, bind(object[key], object));
-      });
-      return object;
-    });
-
-    /**
-     * Creates a function that iterates over `pairs` and invokes the corresponding
-     * function of the first predicate to return truthy. The predicate-function
-     * pairs are invoked with the `this` binding and arguments of the created
-     * function.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {Array} pairs The predicate-function pairs.
-     * @returns {Function} Returns the new composite function.
-     * @example
-     *
-     * var func = _.cond([
-     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],
-     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],
-     *   [_.stubTrue,                      _.constant('no match')]
-     * ]);
-     *
-     * func({ 'a': 1, 'b': 2 });
-     * // => 'matches A'
-     *
-     * func({ 'a': 0, 'b': 1 });
-     * // => 'matches B'
-     *
-     * func({ 'a': '1', 'b': '2' });
-     * // => 'no match'
-     */
-    function cond(pairs) {
-      var length = pairs == null ? 0 : pairs.length,
-          toIteratee = getIteratee();
-
-      pairs = !length ? [] : arrayMap(pairs, function(pair) {
-        if (typeof pair[1] != 'function') {
-          throw new TypeError(FUNC_ERROR_TEXT);
-        }
-        return [toIteratee(pair[0]), pair[1]];
-      });
-
-      return baseRest(function(args) {
-        var index = -1;
-        while (++index < length) {
-          var pair = pairs[index];
-          if (apply(pair[0], this, args)) {
-            return apply(pair[1], this, args);
-          }
-        }
-      });
-    }
-
-    /**
-     * Creates a function that invokes the predicate properties of `source` with
-     * the corresponding property values of a given object, returning `true` if
-     * all predicates return truthy, else `false`.
-     *
-     * **Note:** The created function is equivalent to `_.conformsTo` with
-     * `source` partially applied.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {Object} source The object of property predicates to conform to.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 2, 'b': 1 },
-     *   { 'a': 1, 'b': 2 }
-     * ];
-     *
-     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
-     * // => [{ 'a': 1, 'b': 2 }]
-     */
-    function conforms(source) {
-      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
-    }
-
-    /**
-     * Creates a function that returns `value`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Util
-     * @param {*} value The value to return from the new function.
-     * @returns {Function} Returns the new constant function.
-     * @example
-     *
-     * var objects = _.times(2, _.constant({ 'a': 1 }));
-     *
-     * console.log(objects);
-     * // => [{ 'a': 1 }, { 'a': 1 }]
-     *
-     * console.log(objects[0] === objects[1]);
-     * // => true
-     */
-    function constant(value) {
-      return function() {
-        return value;
-      };
-    }
-
-    /**
-     * Checks `value` to determine whether a default value should be returned in
-     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
-     * or `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.14.0
-     * @category Util
-     * @param {*} value The value to check.
-     * @param {*} defaultValue The default value.
-     * @returns {*} Returns the resolved value.
-     * @example
-     *
-     * _.defaultTo(1, 10);
-     * // => 1
-     *
-     * _.defaultTo(undefined, 10);
-     * // => 10
-     */
-    function defaultTo(value, defaultValue) {
-      return (value == null || value !== value) ? defaultValue : value;
-    }
-
-    /**
-     * Creates a function that returns the result of invoking the given functions
-     * with the `this` binding of the created function, where each successive
-     * invocation is supplied the return value of the previous.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [funcs] The functions to invoke.
-     * @returns {Function} Returns the new composite function.
-     * @see _.flowRight
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var addSquare = _.flow([_.add, square]);
-     * addSquare(1, 2);
-     * // => 9
-     */
-    var flow = createFlow();
-
-    /**
-     * This method is like `_.flow` except that it creates a function that
-     * invokes the given functions from right to left.
-     *
-     * @static
-     * @since 3.0.0
-     * @memberOf _
-     * @category Util
-     * @param {...(Function|Function[])} [funcs] The functions to invoke.
-     * @returns {Function} Returns the new composite function.
-     * @see _.flow
-     * @example
-     *
-     * function square(n) {
-     *   return n * n;
-     * }
-     *
-     * var addSquare = _.flowRight([square, _.add]);
-     * addSquare(1, 2);
-     * // => 9
-     */
-    var flowRight = createFlow(true);
-
-    /**
-     * This method returns the first argument it receives.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {*} value Any value.
-     * @returns {*} Returns `value`.
-     * @example
-     *
-     * var object = { 'a': 1 };
-     *
-     * console.log(_.identity(object) === object);
-     * // => true
-     */
-    function identity(value) {
-      return value;
-    }
-
-    /**
-     * Creates a function that invokes `func` with the arguments of the created
-     * function. If `func` is a property name, the created function returns the
-     * property value for a given element. If `func` is an array or object, the
-     * created function returns `true` for elements that contain the equivalent
-     * source properties, otherwise it returns `false`.
-     *
-     * @static
-     * @since 4.0.0
-     * @memberOf _
-     * @category Util
-     * @param {*} [func=_.identity] The value to convert to a callback.
-     * @returns {Function} Returns the callback.
-     * @example
-     *
-     * var users = [
-     *   { 'user': 'barney', 'age': 36, 'active': true },
-     *   { 'user': 'fred',   'age': 40, 'active': false }
-     * ];
-     *
-     * // The `_.matches` iteratee shorthand.
-     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));
-     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]
-     *
-     * // The `_.matchesProperty` iteratee shorthand.
-     * _.filter(users, _.iteratee(['user', 'fred']));
-     * // => [{ 'user': 'fred', 'age': 40 }]
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.map(users, _.iteratee('user'));
-     * // => ['barney', 'fred']
-     *
-     * // Create custom iteratee shorthands.
-     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {
-     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {
-     *     return func.test(string);
-     *   };
-     * });
-     *
-     * _.filter(['abc', 'def'], /ef/);
-     * // => ['def']
-     */
-    function iteratee(func) {
-      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));
-    }
-
-    /**
-     * Creates a function that performs a partial deep comparison between a given
-     * object and `source`, returning `true` if the given object has equivalent
-     * property values, else `false`.
-     *
-     * **Note:** The created function is equivalent to `_.isMatch` with `source`
-     * partially applied.
-     *
-     * Partial comparisons will match empty array and empty object `source`
-     * values against any array or object value, respectively. See `_.isEqual`
-     * for a list of supported value comparisons.
-     *
-     * **Note:** Multiple values can be checked by combining several matchers
-     * using `_.overSome`
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Object} source The object of property values to match.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 1, 'b': 2, 'c': 3 },
-     *   { 'a': 4, 'b': 5, 'c': 6 }
-     * ];
-     *
-     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
-     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
-     *
-     * // Checking for several possible values
-     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
-     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
-     */
-    function matches(source) {
-      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
-    }
-
-    /**
-     * Creates a function that performs a partial deep comparison between the
-     * value at `path` of a given object to `srcValue`, returning `true` if the
-     * object value is equivalent, else `false`.
-     *
-     * **Note:** Partial comparisons will match empty array and empty object
-     * `srcValue` values against any array or object value, respectively. See
-     * `_.isEqual` for a list of supported value comparisons.
-     *
-     * **Note:** Multiple values can be checked by combining several matchers
-     * using `_.overSome`
-     *
-     * @static
-     * @memberOf _
-     * @since 3.2.0
-     * @category Util
-     * @param {Array|string} path The path of the property to get.
-     * @param {*} srcValue The value to match.
-     * @returns {Function} Returns the new spec function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': 1, 'b': 2, 'c': 3 },
-     *   { 'a': 4, 'b': 5, 'c': 6 }
-     * ];
-     *
-     * _.find(objects, _.matchesProperty('a', 4));
-     * // => { 'a': 4, 'b': 5, 'c': 6 }
-     *
-     * // Checking for several possible values
-     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
-     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
-     */
-    function matchesProperty(path, srcValue) {
-      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
-    }
-
-    /**
-     * Creates a function that invokes the method at `path` of a given object.
-     * Any additional arguments are provided to the invoked method.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Util
-     * @param {Array|string} path The path of the method to invoke.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {Function} Returns the new invoker function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': { 'b': _.constant(2) } },
-     *   { 'a': { 'b': _.constant(1) } }
-     * ];
-     *
-     * _.map(objects, _.method('a.b'));
-     * // => [2, 1]
-     *
-     * _.map(objects, _.method(['a', 'b']));
-     * // => [2, 1]
-     */
-    var method = baseRest(function(path, args) {
-      return function(object) {
-        return baseInvoke(object, path, args);
-      };
-    });
-
-    /**
-     * The opposite of `_.method`; this method creates a function that invokes
-     * the method at a given path of `object`. Any additional arguments are
-     * provided to the invoked method.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.7.0
-     * @category Util
-     * @param {Object} object The object to query.
-     * @param {...*} [args] The arguments to invoke the method with.
-     * @returns {Function} Returns the new invoker function.
-     * @example
-     *
-     * var array = _.times(3, _.constant),
-     *     object = { 'a': array, 'b': array, 'c': array };
-     *
-     * _.map(['a[2]', 'c[0]'], _.methodOf(object));
-     * // => [2, 0]
-     *
-     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
-     * // => [2, 0]
-     */
-    var methodOf = baseRest(function(object, args) {
-      return function(path) {
-        return baseInvoke(object, path, args);
-      };
-    });
-
-    /**
-     * Adds all own enumerable string keyed function properties of a source
-     * object to the destination object. If `object` is a function, then methods
-     * are added to its prototype as well.
-     *
-     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
-     * avoid conflicts caused by modifying the original.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {Function|Object} [object=lodash] The destination object.
-     * @param {Object} source The object of functions to add.
-     * @param {Object} [options={}] The options object.
-     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
-     * @returns {Function|Object} Returns `object`.
-     * @example
-     *
-     * function vowels(string) {
-     *   return _.filter(string, function(v) {
-     *     return /[aeiou]/i.test(v);
-     *   });
-     * }
-     *
-     * _.mixin({ 'vowels': vowels });
-     * _.vowels('fred');
-     * // => ['e']
-     *
-     * _('fred').vowels().value();
-     * // => ['e']
-     *
-     * _.mixin({ 'vowels': vowels }, { 'chain': false });
-     * _('fred').vowels();
-     * // => ['e']
-     */
-    function mixin(object, source, options) {
-      var props = keys(source),
-          methodNames = baseFunctions(source, props);
-
-      if (options == null &&
-          !(isObject(source) && (methodNames.length || !props.length))) {
-        options = source;
-        source = object;
-        object = this;
-        methodNames = baseFunctions(source, keys(source));
-      }
-      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
-          isFunc = isFunction(object);
-
-      arrayEach(methodNames, function(methodName) {
-        var func = source[methodName];
-        object[methodName] = func;
-        if (isFunc) {
-          object.prototype[methodName] = function() {
-            var chainAll = this.__chain__;
-            if (chain || chainAll) {
-              var result = object(this.__wrapped__),
-                  actions = result.__actions__ = copyArray(this.__actions__);
-
-              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
-              result.__chain__ = chainAll;
-              return result;
-            }
-            return func.apply(object, arrayPush([this.value()], arguments));
-          };
-        }
-      });
-
-      return object;
-    }
-
-    /**
-     * Reverts the `_` variable to its previous value and returns a reference to
-     * the `lodash` function.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @returns {Function} Returns the `lodash` function.
-     * @example
-     *
-     * var lodash = _.noConflict();
-     */
-    function noConflict() {
-      if (root._ === this) {
-        root._ = oldDash;
-      }
-      return this;
-    }
-
-    /**
-     * This method returns `undefined`.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.3.0
-     * @category Util
-     * @example
-     *
-     * _.times(2, _.noop);
-     * // => [undefined, undefined]
-     */
-    function noop() {
-      // No operation performed.
-    }
-
-    /**
-     * Creates a function that gets the argument at index `n`. If `n` is negative,
-     * the nth argument from the end is returned.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {number} [n=0] The index of the argument to return.
-     * @returns {Function} Returns the new pass-thru function.
-     * @example
-     *
-     * var func = _.nthArg(1);
-     * func('a', 'b', 'c', 'd');
-     * // => 'b'
-     *
-     * var func = _.nthArg(-2);
-     * func('a', 'b', 'c', 'd');
-     * // => 'c'
-     */
-    function nthArg(n) {
-      n = toInteger(n);
-      return baseRest(function(args) {
-        return baseNth(args, n);
-      });
-    }
-
-    /**
-     * Creates a function that invokes `iteratees` with the arguments it receives
-     * and returns their results.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [iteratees=[_.identity]]
-     *  The iteratees to invoke.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.over([Math.max, Math.min]);
-     *
-     * func(1, 2, 3, 4);
-     * // => [4, 1]
-     */
-    var over = createOver(arrayMap);
-
-    /**
-     * Creates a function that checks if **all** of the `predicates` return
-     * truthy when invoked with the arguments it receives.
-     *
-     * Following shorthands are possible for providing predicates.
-     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
-     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [predicates=[_.identity]]
-     *  The predicates to check.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.overEvery([Boolean, isFinite]);
-     *
-     * func('1');
-     * // => true
-     *
-     * func(null);
-     * // => false
-     *
-     * func(NaN);
-     * // => false
-     */
-    var overEvery = createOver(arrayEvery);
-
-    /**
-     * Creates a function that checks if **any** of the `predicates` return
-     * truthy when invoked with the arguments it receives.
-     *
-     * Following shorthands are possible for providing predicates.
-     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
-     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {...(Function|Function[])} [predicates=[_.identity]]
-     *  The predicates to check.
-     * @returns {Function} Returns the new function.
-     * @example
-     *
-     * var func = _.overSome([Boolean, isFinite]);
-     *
-     * func('1');
-     * // => true
-     *
-     * func(null);
-     * // => true
-     *
-     * func(NaN);
-     * // => false
-     *
-     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
-     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
-     */
-    var overSome = createOver(arraySome);
-
-    /**
-     * Creates a function that returns the value at `path` of a given object.
-     *
-     * @static
-     * @memberOf _
-     * @since 2.4.0
-     * @category Util
-     * @param {Array|string} path The path of the property to get.
-     * @returns {Function} Returns the new accessor function.
-     * @example
-     *
-     * var objects = [
-     *   { 'a': { 'b': 2 } },
-     *   { 'a': { 'b': 1 } }
-     * ];
-     *
-     * _.map(objects, _.property('a.b'));
-     * // => [2, 1]
-     *
-     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
-     * // => [1, 2]
-     */
-    function property(path) {
-      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
-    }
-
-    /**
-     * The opposite of `_.property`; this method creates a function that returns
-     * the value at a given path of `object`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.0.0
-     * @category Util
-     * @param {Object} object The object to query.
-     * @returns {Function} Returns the new accessor function.
-     * @example
-     *
-     * var array = [0, 1, 2],
-     *     object = { 'a': array, 'b': array, 'c': array };
-     *
-     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
-     * // => [2, 0]
-     *
-     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
-     * // => [2, 0]
-     */
-    function propertyOf(object) {
-      return function(path) {
-        return object == null ? undefined : baseGet(object, path);
-      };
-    }
-
-    /**
-     * Creates an array of numbers (positive and/or negative) progressing from
-     * `start` up to, but not including, `end`. A step of `-1` is used if a negative
-     * `start` is specified without an `end` or `step`. If `end` is not specified,
-     * it's set to `start` with `start` then set to `0`.
-     *
-     * **Note:** JavaScript follows the IEEE-754 standard for resolving
-     * floating-point values which can produce unexpected results.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} [step=1] The value to increment or decrement by.
-     * @returns {Array} Returns the range of numbers.
-     * @see _.inRange, _.rangeRight
-     * @example
-     *
-     * _.range(4);
-     * // => [0, 1, 2, 3]
-     *
-     * _.range(-4);
-     * // => [0, -1, -2, -3]
-     *
-     * _.range(1, 5);
-     * // => [1, 2, 3, 4]
-     *
-     * _.range(0, 20, 5);
-     * // => [0, 5, 10, 15]
-     *
-     * _.range(0, -4, -1);
-     * // => [0, -1, -2, -3]
-     *
-     * _.range(1, 4, 0);
-     * // => [1, 1, 1]
-     *
-     * _.range(0);
-     * // => []
-     */
-    var range = createRange();
-
-    /**
-     * This method is like `_.range` except that it populates values in
-     * descending order.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {number} [start=0] The start of the range.
-     * @param {number} end The end of the range.
-     * @param {number} [step=1] The value to increment or decrement by.
-     * @returns {Array} Returns the range of numbers.
-     * @see _.inRange, _.range
-     * @example
-     *
-     * _.rangeRight(4);
-     * // => [3, 2, 1, 0]
-     *
-     * _.rangeRight(-4);
-     * // => [-3, -2, -1, 0]
-     *
-     * _.rangeRight(1, 5);
-     * // => [4, 3, 2, 1]
-     *
-     * _.rangeRight(0, 20, 5);
-     * // => [15, 10, 5, 0]
-     *
-     * _.rangeRight(0, -4, -1);
-     * // => [-3, -2, -1, 0]
-     *
-     * _.rangeRight(1, 4, 0);
-     * // => [1, 1, 1]
-     *
-     * _.rangeRight(0);
-     * // => []
-     */
-    var rangeRight = createRange(true);
-
-    /**
-     * This method returns a new empty array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {Array} Returns the new empty array.
-     * @example
-     *
-     * var arrays = _.times(2, _.stubArray);
-     *
-     * console.log(arrays);
-     * // => [[], []]
-     *
-     * console.log(arrays[0] === arrays[1]);
-     * // => false
-     */
-    function stubArray() {
-      return [];
-    }
-
-    /**
-     * This method returns `false`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {boolean} Returns `false`.
-     * @example
-     *
-     * _.times(2, _.stubFalse);
-     * // => [false, false]
-     */
-    function stubFalse() {
-      return false;
-    }
-
-    /**
-     * This method returns a new empty object.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {Object} Returns the new empty object.
-     * @example
-     *
-     * var objects = _.times(2, _.stubObject);
-     *
-     * console.log(objects);
-     * // => [{}, {}]
-     *
-     * console.log(objects[0] === objects[1]);
-     * // => false
-     */
-    function stubObject() {
-      return {};
-    }
-
-    /**
-     * This method returns an empty string.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {string} Returns the empty string.
-     * @example
-     *
-     * _.times(2, _.stubString);
-     * // => ['', '']
-     */
-    function stubString() {
-      return '';
-    }
-
-    /**
-     * This method returns `true`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.13.0
-     * @category Util
-     * @returns {boolean} Returns `true`.
-     * @example
-     *
-     * _.times(2, _.stubTrue);
-     * // => [true, true]
-     */
-    function stubTrue() {
-      return true;
-    }
-
-    /**
-     * Invokes the iteratee `n` times, returning an array of the results of
-     * each invocation. The iteratee is invoked with one argument; (index).
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {number} n The number of times to invoke `iteratee`.
-     * @param {Function} [iteratee=_.identity] The function invoked per iteration.
-     * @returns {Array} Returns the array of results.
-     * @example
-     *
-     * _.times(3, String);
-     * // => ['0', '1', '2']
-     *
-     *  _.times(4, _.constant(0));
-     * // => [0, 0, 0, 0]
-     */
-    function times(n, iteratee) {
-      n = toInteger(n);
-      if (n < 1 || n > MAX_SAFE_INTEGER) {
-        return [];
-      }
-      var index = MAX_ARRAY_LENGTH,
-          length = nativeMin(n, MAX_ARRAY_LENGTH);
-
-      iteratee = getIteratee(iteratee);
-      n -= MAX_ARRAY_LENGTH;
-
-      var result = baseTimes(length, iteratee);
-      while (++index < n) {
-        iteratee(index);
-      }
-      return result;
-    }
-
-    /**
-     * Converts `value` to a property path array.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Util
-     * @param {*} value The value to convert.
-     * @returns {Array} Returns the new property path array.
-     * @example
-     *
-     * _.toPath('a.b.c');
-     * // => ['a', 'b', 'c']
-     *
-     * _.toPath('a[0].b.c');
-     * // => ['a', '0', 'b', 'c']
-     */
-    function toPath(value) {
-      if (isArray(value)) {
-        return arrayMap(value, toKey);
-      }
-      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
-    }
-
-    /**
-     * Generates a unique ID. If `prefix` is given, the ID is appended to it.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Util
-     * @param {string} [prefix=''] The value to prefix the ID with.
-     * @returns {string} Returns the unique ID.
-     * @example
-     *
-     * _.uniqueId('contact_');
-     * // => 'contact_104'
-     *
-     * _.uniqueId();
-     * // => '105'
-     */
-    function uniqueId(prefix) {
-      var id = ++idCounter;
-      return toString(prefix) + id;
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * Adds two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.4.0
-     * @category Math
-     * @param {number} augend The first number in an addition.
-     * @param {number} addend The second number in an addition.
-     * @returns {number} Returns the total.
-     * @example
-     *
-     * _.add(6, 4);
-     * // => 10
-     */
-    var add = createMathOperation(function(augend, addend) {
-      return augend + addend;
-    }, 0);
-
-    /**
-     * Computes `number` rounded up to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round up.
-     * @param {number} [precision=0] The precision to round up to.
-     * @returns {number} Returns the rounded up number.
-     * @example
-     *
-     * _.ceil(4.006);
-     * // => 5
-     *
-     * _.ceil(6.004, 2);
-     * // => 6.01
-     *
-     * _.ceil(6040, -2);
-     * // => 6100
-     */
-    var ceil = createRound('ceil');
-
-    /**
-     * Divide two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {number} dividend The first number in a division.
-     * @param {number} divisor The second number in a division.
-     * @returns {number} Returns the quotient.
-     * @example
-     *
-     * _.divide(6, 4);
-     * // => 1.5
-     */
-    var divide = createMathOperation(function(dividend, divisor) {
-      return dividend / divisor;
-    }, 1);
-
-    /**
-     * Computes `number` rounded down to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round down.
-     * @param {number} [precision=0] The precision to round down to.
-     * @returns {number} Returns the rounded down number.
-     * @example
-     *
-     * _.floor(4.006);
-     * // => 4
-     *
-     * _.floor(0.046, 2);
-     * // => 0.04
-     *
-     * _.floor(4060, -2);
-     * // => 4000
-     */
-    var floor = createRound('floor');
-
-    /**
-     * Computes the maximum value of `array`. If `array` is empty or falsey,
-     * `undefined` is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {*} Returns the maximum value.
-     * @example
-     *
-     * _.max([4, 2, 8, 6]);
-     * // => 8
-     *
-     * _.max([]);
-     * // => undefined
-     */
-    function max(array) {
-      return (array && array.length)
-        ? baseExtremum(array, identity, baseGt)
-        : undefined;
-    }
-
-    /**
-     * This method is like `_.max` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * the value is ranked. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {*} Returns the maximum value.
-     * @example
-     *
-     * var objects = [{ 'n': 1 }, { 'n': 2 }];
-     *
-     * _.maxBy(objects, function(o) { return o.n; });
-     * // => { 'n': 2 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.maxBy(objects, 'n');
-     * // => { 'n': 2 }
-     */
-    function maxBy(array, iteratee) {
-      return (array && array.length)
-        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)
-        : undefined;
-    }
-
-    /**
-     * Computes the mean of the values in `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {number} Returns the mean.
-     * @example
-     *
-     * _.mean([4, 2, 8, 6]);
-     * // => 5
-     */
-    function mean(array) {
-      return baseMean(array, identity);
-    }
-
-    /**
-     * This method is like `_.mean` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the value to be averaged.
-     * The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the mean.
-     * @example
-     *
-     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-     *
-     * _.meanBy(objects, function(o) { return o.n; });
-     * // => 5
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.meanBy(objects, 'n');
-     * // => 5
-     */
-    function meanBy(array, iteratee) {
-      return baseMean(array, getIteratee(iteratee, 2));
-    }
-
-    /**
-     * Computes the minimum value of `array`. If `array` is empty or falsey,
-     * `undefined` is returned.
-     *
-     * @static
-     * @since 0.1.0
-     * @memberOf _
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {*} Returns the minimum value.
-     * @example
-     *
-     * _.min([4, 2, 8, 6]);
-     * // => 2
-     *
-     * _.min([]);
-     * // => undefined
-     */
-    function min(array) {
-      return (array && array.length)
-        ? baseExtremum(array, identity, baseLt)
-        : undefined;
-    }
-
-    /**
-     * This method is like `_.min` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the criterion by which
-     * the value is ranked. The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {*} Returns the minimum value.
-     * @example
-     *
-     * var objects = [{ 'n': 1 }, { 'n': 2 }];
-     *
-     * _.minBy(objects, function(o) { return o.n; });
-     * // => { 'n': 1 }
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.minBy(objects, 'n');
-     * // => { 'n': 1 }
-     */
-    function minBy(array, iteratee) {
-      return (array && array.length)
-        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)
-        : undefined;
-    }
-
-    /**
-     * Multiply two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.7.0
-     * @category Math
-     * @param {number} multiplier The first number in a multiplication.
-     * @param {number} multiplicand The second number in a multiplication.
-     * @returns {number} Returns the product.
-     * @example
-     *
-     * _.multiply(6, 4);
-     * // => 24
-     */
-    var multiply = createMathOperation(function(multiplier, multiplicand) {
-      return multiplier * multiplicand;
-    }, 1);
-
-    /**
-     * Computes `number` rounded to `precision`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.10.0
-     * @category Math
-     * @param {number} number The number to round.
-     * @param {number} [precision=0] The precision to round to.
-     * @returns {number} Returns the rounded number.
-     * @example
-     *
-     * _.round(4.006);
-     * // => 4
-     *
-     * _.round(4.006, 2);
-     * // => 4.01
-     *
-     * _.round(4060, -2);
-     * // => 4100
-     */
-    var round = createRound('round');
-
-    /**
-     * Subtract two numbers.
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {number} minuend The first number in a subtraction.
-     * @param {number} subtrahend The second number in a subtraction.
-     * @returns {number} Returns the difference.
-     * @example
-     *
-     * _.subtract(6, 4);
-     * // => 2
-     */
-    var subtract = createMathOperation(function(minuend, subtrahend) {
-      return minuend - subtrahend;
-    }, 0);
-
-    /**
-     * Computes the sum of the values in `array`.
-     *
-     * @static
-     * @memberOf _
-     * @since 3.4.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @returns {number} Returns the sum.
-     * @example
-     *
-     * _.sum([4, 2, 8, 6]);
-     * // => 20
-     */
-    function sum(array) {
-      return (array && array.length)
-        ? baseSum(array, identity)
-        : 0;
-    }
-
-    /**
-     * This method is like `_.sum` except that it accepts `iteratee` which is
-     * invoked for each element in `array` to generate the value to be summed.
-     * The iteratee is invoked with one argument: (value).
-     *
-     * @static
-     * @memberOf _
-     * @since 4.0.0
-     * @category Math
-     * @param {Array} array The array to iterate over.
-     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
-     * @returns {number} Returns the sum.
-     * @example
-     *
-     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
-     *
-     * _.sumBy(objects, function(o) { return o.n; });
-     * // => 20
-     *
-     * // The `_.property` iteratee shorthand.
-     * _.sumBy(objects, 'n');
-     * // => 20
-     */
-    function sumBy(array, iteratee) {
-      return (array && array.length)
-        ? baseSum(array, getIteratee(iteratee, 2))
-        : 0;
-    }
-
-    /*------------------------------------------------------------------------*/
-
-    // Add methods that return wrapped values in chain sequences.
-    lodash.after = after;
-    lodash.ary = ary;
-    lodash.assign = assign;
-    lodash.assignIn = assignIn;
-    lodash.assignInWith = assignInWith;
-    lodash.assignWith = assignWith;
-    lodash.at = at;
-    lodash.before = before;
-    lodash.bind = bind;
-    lodash.bindAll = bindAll;
-    lodash.bindKey = bindKey;
-    lodash.castArray = castArray;
-    lodash.chain = chain;
-    lodash.chunk = chunk;
-    lodash.compact = compact;
-    lodash.concat = concat;
-    lodash.cond = cond;
-    lodash.conforms = conforms;
-    lodash.constant = constant;
-    lodash.countBy = countBy;
-    lodash.create = create;
-    lodash.curry = curry;
-    lodash.curryRight = curryRight;
-    lodash.debounce = debounce;
-    lodash.defaults = defaults;
-    lodash.defaultsDeep = defaultsDeep;
-    lodash.defer = defer;
-    lodash.delay = delay;
-    lodash.difference = difference;
-    lodash.differenceBy = differenceBy;
-    lodash.differenceWith = differenceWith;
-    lodash.drop = drop;
-    lodash.dropRight = dropRight;
-    lodash.dropRightWhile = dropRightWhile;
-    lodash.dropWhile = dropWhile;
-    lodash.fill = fill;
-    lodash.filter = filter;
-    lodash.flatMap = flatMap;
-    lodash.flatMapDeep = flatMapDeep;
-    lodash.flatMapDepth = flatMapDepth;
-    lodash.flatten = flatten;
-    lodash.flattenDeep = flattenDeep;
-    lodash.flattenDepth = flattenDepth;
-    lodash.flip = flip;
-    lodash.flow = flow;
-    lodash.flowRight = flowRight;
-    lodash.fromPairs = fromPairs;
-    lodash.functions = functions;
-    lodash.functionsIn = functionsIn;
-    lodash.groupBy = groupBy;
-    lodash.initial = initial;
-    lodash.intersection = intersection;
-    lodash.intersectionBy = intersectionBy;
-    lodash.intersectionWith = intersectionWith;
-    lodash.invert = invert;
-    lodash.invertBy = invertBy;
-    lodash.invokeMap = invokeMap;
-    lodash.iteratee = iteratee;
-    lodash.keyBy = keyBy;
-    lodash.keys = keys;
-    lodash.keysIn = keysIn;
-    lodash.map = map;
-    lodash.mapKeys = mapKeys;
-    lodash.mapValues = mapValues;
-    lodash.matches = matches;
-    lodash.matchesProperty = matchesProperty;
-    lodash.memoize = memoize;
-    lodash.merge = merge;
-    lodash.mergeWith = mergeWith;
-    lodash.method = method;
-    lodash.methodOf = methodOf;
-    lodash.mixin = mixin;
-    lodash.negate = negate;
-    lodash.nthArg = nthArg;
-    lodash.omit = omit;
-    lodash.omitBy = omitBy;
-    lodash.once = once;
-    lodash.orderBy = orderBy;
-    lodash.over = over;
-    lodash.overArgs = overArgs;
-    lodash.overEvery = overEvery;
-    lodash.overSome = overSome;
-    lodash.partial = partial;
-    lodash.partialRight = partialRight;
-    lodash.partition = partition;
-    lodash.pick = pick;
-    lodash.pickBy = pickBy;
-    lodash.property = property;
-    lodash.propertyOf = propertyOf;
-    lodash.pull = pull;
-    lodash.pullAll = pullAll;
-    lodash.pullAllBy = pullAllBy;
-    lodash.pullAllWith = pullAllWith;
-    lodash.pullAt = pullAt;
-    lodash.range = range;
-    lodash.rangeRight = rangeRight;
-    lodash.rearg = rearg;
-    lodash.reject = reject;
-    lodash.remove = remove;
-    lodash.rest = rest;
-    lodash.reverse = reverse;
-    lodash.sampleSize = sampleSize;
-    lodash.set = set;
-    lodash.setWith = setWith;
-    lodash.shuffle = shuffle;
-    lodash.slice = slice;
-    lodash.sortBy = sortBy;
-    lodash.sortedUniq = sortedUniq;
-    lodash.sortedUniqBy = sortedUniqBy;
-    lodash.split = split;
-    lodash.spread = spread;
-    lodash.tail = tail;
-    lodash.take = take;
-    lodash.takeRight = takeRight;
-    lodash.takeRightWhile = takeRightWhile;
-    lodash.takeWhile = takeWhile;
-    lodash.tap = tap;
-    lodash.throttle = throttle;
-    lodash.thru = thru;
-    lodash.toArray = toArray;
-    lodash.toPairs = toPairs;
-    lodash.toPairsIn = toPairsIn;
-    lodash.toPath = toPath;
-    lodash.toPlainObject = toPlainObject;
-    lodash.transform = transform;
-    lodash.unary = unary;
-    lodash.union = union;
-    lodash.unionBy = unionBy;
-    lodash.unionWith = unionWith;
-    lodash.uniq = uniq;
-    lodash.uniqBy = uniqBy;
-    lodash.uniqWith = uniqWith;
-    lodash.unset = unset;
-    lodash.unzip = unzip;
-    lodash.unzipWith = unzipWith;
-    lodash.update = update;
-    lodash.updateWith = updateWith;
-    lodash.values = values;
-    lodash.valuesIn = valuesIn;
-    lodash.without = without;
-    lodash.words = words;
-    lodash.wrap = wrap;
-    lodash.xor = xor;
-    lodash.xorBy = xorBy;
-    lodash.xorWith = xorWith;
-    lodash.zip = zip;
-    lodash.zipObject = zipObject;
-    lodash.zipObjectDeep = zipObjectDeep;
-    lodash.zipWith = zipWith;
-
-    // Add aliases.
-    lodash.entries = toPairs;
-    lodash.entriesIn = toPairsIn;
-    lodash.extend = assignIn;
-    lodash.extendWith = assignInWith;
-
-    // Add methods to `lodash.prototype`.
-    mixin(lodash, lodash);
-
-    /*------------------------------------------------------------------------*/
-
-    // Add methods that return unwrapped values in chain sequences.
-    lodash.add = add;
-    lodash.attempt = attempt;
-    lodash.camelCase = camelCase;
-    lodash.capitalize = capitalize;
-    lodash.ceil = ceil;
-    lodash.clamp = clamp;
-    lodash.clone = clone;
-    lodash.cloneDeep = cloneDeep;
-    lodash.cloneDeepWith = cloneDeepWith;
-    lodash.cloneWith = cloneWith;
-    lodash.conformsTo = conformsTo;
-    lodash.deburr = deburr;
-    lodash.defaultTo = defaultTo;
-    lodash.divide = divide;
-    lodash.endsWith = endsWith;
-    lodash.eq = eq;
-    lodash.escape = escape;
-    lodash.escapeRegExp = escapeRegExp;
-    lodash.every = every;
-    lodash.find = find;
-    lodash.findIndex = findIndex;
-    lodash.findKey = findKey;
-    lodash.findLast = findLast;
-    lodash.findLastIndex = findLastIndex;
-    lodash.findLastKey = findLastKey;
-    lodash.floor = floor;
-    lodash.forEach = forEach;
-    lodash.forEachRight = forEachRight;
-    lodash.forIn = forIn;
-    lodash.forInRight = forInRight;
-    lodash.forOwn = forOwn;
-    lodash.forOwnRight = forOwnRight;
-    lodash.get = get;
-    lodash.gt = gt;
-    lodash.gte = gte;
-    lodash.has = has;
-    lodash.hasIn = hasIn;
-    lodash.head = head;
-    lodash.identity = identity;
-    lodash.includes = includes;
-    lodash.indexOf = indexOf;
-    lodash.inRange = inRange;
-    lodash.invoke = invoke;
-    lodash.isArguments = isArguments;
-    lodash.isArray = isArray;
-    lodash.isArrayBuffer = isArrayBuffer;
-    lodash.isArrayLike = isArrayLike;
-    lodash.isArrayLikeObject = isArrayLikeObject;
-    lodash.isBoolean = isBoolean;
-    lodash.isBuffer = isBuffer;
-    lodash.isDate = isDate;
-    lodash.isElement = isElement;
-    lodash.isEmpty = isEmpty;
-    lodash.isEqual = isEqual;
-    lodash.isEqualWith = isEqualWith;
-    lodash.isError = isError;
-    lodash.isFinite = isFinite;
-    lodash.isFunction = isFunction;
-    lodash.isInteger = isInteger;
-    lodash.isLength = isLength;
-    lodash.isMap = isMap;
-    lodash.isMatch = isMatch;
-    lodash.isMatchWith = isMatchWith;
-    lodash.isNaN = isNaN;
-    lodash.isNative = isNative;
-    lodash.isNil = isNil;
-    lodash.isNull = isNull;
-    lodash.isNumber = isNumber;
-    lodash.isObject = isObject;
-    lodash.isObjectLike = isObjectLike;
-    lodash.isPlainObject = isPlainObject;
-    lodash.isRegExp = isRegExp;
-    lodash.isSafeInteger = isSafeInteger;
-    lodash.isSet = isSet;
-    lodash.isString = isString;
-    lodash.isSymbol = isSymbol;
-    lodash.isTypedArray = isTypedArray;
-    lodash.isUndefined = isUndefined;
-    lodash.isWeakMap = isWeakMap;
-    lodash.isWeakSet = isWeakSet;
-    lodash.join = join;
-    lodash.kebabCase = kebabCase;
-    lodash.last = last;
-    lodash.lastIndexOf = lastIndexOf;
-    lodash.lowerCase = lowerCase;
-    lodash.lowerFirst = lowerFirst;
-    lodash.lt = lt;
-    lodash.lte = lte;
-    lodash.max = max;
-    lodash.maxBy = maxBy;
-    lodash.mean = mean;
-    lodash.meanBy = meanBy;
-    lodash.min = min;
-    lodash.minBy = minBy;
-    lodash.stubArray = stubArray;
-    lodash.stubFalse = stubFalse;
-    lodash.stubObject = stubObject;
-    lodash.stubString = stubString;
-    lodash.stubTrue = stubTrue;
-    lodash.multiply = multiply;
-    lodash.nth = nth;
-    lodash.noConflict = noConflict;
-    lodash.noop = noop;
-    lodash.now = now;
-    lodash.pad = pad;
-    lodash.padEnd = padEnd;
-    lodash.padStart = padStart;
-    lodash.parseInt = parseInt;
-    lodash.random = random;
-    lodash.reduce = reduce;
-    lodash.reduceRight = reduceRight;
-    lodash.repeat = repeat;
-    lodash.replace = replace;
-    lodash.result = result;
-    lodash.round = round;
-    lodash.runInContext = runInContext;
-    lodash.sample = sample;
-    lodash.size = size;
-    lodash.snakeCase = snakeCase;
-    lodash.some = some;
-    lodash.sortedIndex = sortedIndex;
-    lodash.sortedIndexBy = sortedIndexBy;
-    lodash.sortedIndexOf = sortedIndexOf;
-    lodash.sortedLastIndex = sortedLastIndex;
-    lodash.sortedLastIndexBy = sortedLastIndexBy;
-    lodash.sortedLastIndexOf = sortedLastIndexOf;
-    lodash.startCase = startCase;
-    lodash.startsWith = startsWith;
-    lodash.subtract = subtract;
-    lodash.sum = sum;
-    lodash.sumBy = sumBy;
-    lodash.template = template;
-    lodash.times = times;
-    lodash.toFinite = toFinite;
-    lodash.toInteger = toInteger;
-    lodash.toLength = toLength;
-    lodash.toLower = toLower;
-    lodash.toNumber = toNumber;
-    lodash.toSafeInteger = toSafeInteger;
-    lodash.toString = toString;
-    lodash.toUpper = toUpper;
-    lodash.trim = trim;
-    lodash.trimEnd = trimEnd;
-    lodash.trimStart = trimStart;
-    lodash.truncate = truncate;
-    lodash.unescape = unescape;
-    lodash.uniqueId = uniqueId;
-    lodash.upperCase = upperCase;
-    lodash.upperFirst = upperFirst;
-
-    // Add aliases.
-    lodash.each = forEach;
-    lodash.eachRight = forEachRight;
-    lodash.first = head;
-
-    mixin(lodash, (function() {
-      var source = {};
-      baseForOwn(lodash, function(func, methodName) {
-        if (!hasOwnProperty.call(lodash.prototype, methodName)) {
-          source[methodName] = func;
-        }
-      });
-      return source;
-    }()), { 'chain': false });
-
-    /*------------------------------------------------------------------------*/
-
-    /**
-     * The semantic version number.
-     *
-     * @static
-     * @memberOf _
-     * @type {string}
-     */
-    lodash.VERSION = VERSION;
-
-    // Assign default placeholders.
-    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {
-      lodash[methodName].placeholder = lodash;
-    });
-
-    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.
-    arrayEach(['drop', 'take'], function(methodName, index) {
-      LazyWrapper.prototype[methodName] = function(n) {
-        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);
-
-        var result = (this.__filtered__ && !index)
-          ? new LazyWrapper(this)
-          : this.clone();
-
-        if (result.__filtered__) {
-          result.__takeCount__ = nativeMin(n, result.__takeCount__);
-        } else {
-          result.__views__.push({
-            'size': nativeMin(n, MAX_ARRAY_LENGTH),
-            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')
-          });
-        }
-        return result;
-      };
-
-      LazyWrapper.prototype[methodName + 'Right'] = function(n) {
-        return this.reverse()[methodName](n).reverse();
-      };
-    });
-
-    // Add `LazyWrapper` methods that accept an `iteratee` value.
-    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {
-      var type = index + 1,
-          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;
-
-      LazyWrapper.prototype[methodName] = function(iteratee) {
-        var result = this.clone();
-        result.__iteratees__.push({
-          'iteratee': getIteratee(iteratee, 3),
-          'type': type
-        });
-        result.__filtered__ = result.__filtered__ || isFilter;
-        return result;
-      };
-    });
-
-    // Add `LazyWrapper` methods for `_.head` and `_.last`.
-    arrayEach(['head', 'last'], function(methodName, index) {
-      var takeName = 'take' + (index ? 'Right' : '');
-
-      LazyWrapper.prototype[methodName] = function() {
-        return this[takeName](1).value()[0];
-      };
-    });
-
-    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.
-    arrayEach(['initial', 'tail'], function(methodName, index) {
-      var dropName = 'drop' + (index ? '' : 'Right');
-
-      LazyWrapper.prototype[methodName] = function() {
-        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);
-      };
-    });
-
-    LazyWrapper.prototype.compact = function() {
-      return this.filter(identity);
-    };
-
-    LazyWrapper.prototype.find = function(predicate) {
-      return this.filter(predicate).head();
-    };
-
-    LazyWrapper.prototype.findLast = function(predicate) {
-      return this.reverse().find(predicate);
-    };
-
-    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {
-      if (typeof path == 'function') {
-        return new LazyWrapper(this);
-      }
-      return this.map(function(value) {
-        return baseInvoke(value, path, args);
-      });
-    });
-
-    LazyWrapper.prototype.reject = function(predicate) {
-      return this.filter(negate(getIteratee(predicate)));
-    };
-
-    LazyWrapper.prototype.slice = function(start, end) {
-      start = toInteger(start);
-
-      var result = this;
-      if (result.__filtered__ && (start > 0 || end < 0)) {
-        return new LazyWrapper(result);
-      }
-      if (start < 0) {
-        result = result.takeRight(-start);
-      } else if (start) {
-        result = result.drop(start);
-      }
-      if (end !== undefined) {
-        end = toInteger(end);
-        result = end < 0 ? result.dropRight(-end) : result.take(end - start);
-      }
-      return result;
-    };
-
-    LazyWrapper.prototype.takeRightWhile = function(predicate) {
-      return this.reverse().takeWhile(predicate).reverse();
-    };
-
-    LazyWrapper.prototype.toArray = function() {
-      return this.take(MAX_ARRAY_LENGTH);
-    };
-
-    // Add `LazyWrapper` methods to `lodash.prototype`.
-    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),
-          isTaker = /^(?:head|last)$/.test(methodName),
-          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],
-          retUnwrapped = isTaker || /^find/.test(methodName);
-
-      if (!lodashFunc) {
-        return;
-      }
-      lodash.prototype[methodName] = function() {
-        var value = this.__wrapped__,
-            args = isTaker ? [1] : arguments,
-            isLazy = value instanceof LazyWrapper,
-            iteratee = args[0],
-            useLazy = isLazy || isArray(value);
-
-        var interceptor = function(value) {
-          var result = lodashFunc.apply(lodash, arrayPush([value], args));
-          return (isTaker && chainAll) ? result[0] : result;
-        };
-
-        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {
-          // Avoid lazy use if the iteratee has a "length" value other than `1`.
-          isLazy = useLazy = false;
-        }
-        var chainAll = this.__chain__,
-            isHybrid = !!this.__actions__.length,
-            isUnwrapped = retUnwrapped && !chainAll,
-            onlyLazy = isLazy && !isHybrid;
-
-        if (!retUnwrapped && useLazy) {
-          value = onlyLazy ? value : new LazyWrapper(this);
-          var result = func.apply(value, args);
-          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });
-          return new LodashWrapper(result, chainAll);
-        }
-        if (isUnwrapped && onlyLazy) {
-          return func.apply(this, args);
-        }
-        result = this.thru(interceptor);
-        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;
-      };
-    });
-
-    // Add `Array` methods to `lodash.prototype`.
-    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {
-      var func = arrayProto[methodName],
-          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',
-          retUnwrapped = /^(?:pop|shift)$/.test(methodName);
-
-      lodash.prototype[methodName] = function() {
-        var args = arguments;
-        if (retUnwrapped && !this.__chain__) {
-          var value = this.value();
-          return func.apply(isArray(value) ? value : [], args);
-        }
-        return this[chainName](function(value) {
-          return func.apply(isArray(value) ? value : [], args);
-        });
-      };
-    });
-
-    // Map minified method names to their real names.
-    baseForOwn(LazyWrapper.prototype, function(func, methodName) {
-      var lodashFunc = lodash[methodName];
-      if (lodashFunc) {
-        var key = lodashFunc.name + '';
-        if (!hasOwnProperty.call(realNames, key)) {
-          realNames[key] = [];
-        }
-        realNames[key].push({ 'name': methodName, 'func': lodashFunc });
-      }
-    });
-
-    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{
-      'name': 'wrapper',
-      'func': undefined
-    }];
-
-    // Add methods to `LazyWrapper`.
-    LazyWrapper.prototype.clone = lazyClone;
-    LazyWrapper.prototype.reverse = lazyReverse;
-    LazyWrapper.prototype.value = lazyValue;
-
-    // Add chain sequence methods to the `lodash` wrapper.
-    lodash.prototype.at = wrapperAt;
-    lodash.prototype.chain = wrapperChain;
-    lodash.prototype.commit = wrapperCommit;
-    lodash.prototype.next = wrapperNext;
-    lodash.prototype.plant = wrapperPlant;
-    lodash.prototype.reverse = wrapperReverse;
-    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;
-
-    // Add lazy aliases.
-    lodash.prototype.first = lodash.prototype.head;
-
-    if (symIterator) {
-      lodash.prototype[symIterator] = wrapperToIterator;
-    }
-    return lodash;
-  });
-
-  /*--------------------------------------------------------------------------*/
-
-  // Export lodash.
-  var _ = runInContext();
-
-  // Some AMD build optimizers, like r.js, check for condition patterns like:
-  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
-    // Expose Lodash on the global object to prevent errors when Lodash is
-    // loaded by a script tag in the presence of an AMD loader.
-    // See http://requirejs.org/docs/errors.html#mismatch for more details.
-    // Use `_.noConflict` to remove Lodash from the global object.
-    root._ = _;
-
-    // Define as an anonymous module so, through path mapping, it can be
-    // referenced as the "underscore" module.
-    define(function() {
-      return _;
-    });
-  }
-  // Check for `exports` after `define` in case a build optimizer adds it.
-  else if (freeModule) {
-    // Export for Node.js.
-    (freeModule.exports = _)._ = _;
-    // Export for CommonJS support.
-    freeExports._ = _;
-  }
-  else {
-    // Export to the global object.
-    root._ = _;
-  }
-}.call(this));
Index: ckend/node_modules/lodash/lodash.min.js
===================================================================
--- backend/node_modules/lodash/lodash.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&t(n[r],r,n)!==!1;);return n}function e(n,t){for(var r=null==n?0:n.length;r--&&t(n[r],r,n)!==!1;);return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return!1;
-return!0}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!!(null==n?0:n.length)&&y(n,t,0)>-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return!0;return!1}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);
-return r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return!0;return!1}function p(n){return n.split("")}function _(n){return n.match($t)||[]}function v(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,!1}),e}function g(n,t,r,e){for(var u=n.length,i=r+(e?1:-1);e?i--:++i<u;)if(t(n[i],i,n))return i;return-1}function y(n,t,r){return t===t?Z(n,t,r):g(n,b,r)}function d(n,t,r,e){
-for(var u=r-1,i=n.length;++u<i;)if(e(n[u],t))return u;return-1}function b(n){return n!==n}function w(n,t){var r=null==n?0:n.length;return r?k(n,t)/r:Cn}function m(n){return function(t){return null==t?X:t[n]}}function x(n){return function(t){return null==n?X:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=!1,n):t(r,n,u,i)}),r}function A(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].value;return n}function k(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==X&&(r=r===X?i:r+i);
-}return r}function O(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function I(n,t){return c(t,function(t){return[t,n[t]]})}function R(n){return n?n.slice(0,H(n)+1).replace(Lt,""):n}function z(n){return function(t){return n(t)}}function E(n,t){return c(t,function(t){return n[t]})}function S(n,t){return n.has(t)}function W(n,t){for(var r=-1,e=n.length;++r<e&&y(t,n[r],0)>-1;);return r}function L(n,t){for(var r=n.length;r--&&y(t,n[r],0)>-1;);return r}function C(n,t){for(var r=n.length,e=0;r--;)n[r]===t&&++e;
-return e}function U(n){return"\\"+Yr[n]}function B(n,t){return null==n?X:n[t]}function T(n){return Nr.test(n)}function $(n){return Pr.test(n)}function D(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}function M(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function F(n,t){return function(r){return n(t(r))}}function N(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&o!==cn||(n[r]=cn,i[u++]=r)}return i}function P(n){var t=-1,r=Array(n.size);
-return n.forEach(function(n){r[++t]=n}),r}function q(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function Z(n,t,r){for(var e=r-1,u=n.length;++e<u;)if(n[e]===t)return e;return-1}function K(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}function V(n){return T(n)?J(n):_e(n)}function G(n){return T(n)?Y(n):p(n)}function H(n){for(var t=n.length;t--&&Ct.test(n.charAt(t)););return t}function J(n){for(var t=Mr.lastIndex=0;Mr.test(n);)++t;return t}function Y(n){return n.match(Mr)||[];
-}function Q(n){return n.match(Fr)||[]}var X,nn="4.17.21",tn=200,rn="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",en="Expected a function",un="Invalid `variable` option passed into `_.template`",on="__lodash_hash_undefined__",fn=500,cn="__lodash_placeholder__",an=1,ln=2,sn=4,hn=1,pn=2,_n=1,vn=2,gn=4,yn=8,dn=16,bn=32,wn=64,mn=128,xn=256,jn=512,An=30,kn="...",On=800,In=16,Rn=1,zn=2,En=3,Sn=1/0,Wn=9007199254740991,Ln=1.7976931348623157e308,Cn=NaN,Un=4294967295,Bn=Un-1,Tn=Un>>>1,$n=[["ary",mn],["bind",_n],["bindKey",vn],["curry",yn],["curryRight",dn],["flip",jn],["partial",bn],["partialRight",wn],["rearg",xn]],Dn="[object Arguments]",Mn="[object Array]",Fn="[object AsyncFunction]",Nn="[object Boolean]",Pn="[object Date]",qn="[object DOMException]",Zn="[object Error]",Kn="[object Function]",Vn="[object GeneratorFunction]",Gn="[object Map]",Hn="[object Number]",Jn="[object Null]",Yn="[object Object]",Qn="[object Promise]",Xn="[object Proxy]",nt="[object RegExp]",tt="[object Set]",rt="[object String]",et="[object Symbol]",ut="[object Undefined]",it="[object WeakMap]",ot="[object WeakSet]",ft="[object ArrayBuffer]",ct="[object DataView]",at="[object Float32Array]",lt="[object Float64Array]",st="[object Int8Array]",ht="[object Int16Array]",pt="[object Int32Array]",_t="[object Uint8Array]",vt="[object Uint8ClampedArray]",gt="[object Uint16Array]",yt="[object Uint32Array]",dt=/\b__p \+= '';/g,bt=/\b(__p \+=) '' \+/g,wt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,mt=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,jt=RegExp(mt.source),At=RegExp(xt.source),kt=/<%-([\s\S]+?)%>/g,Ot=/<%([\s\S]+?)%>/g,It=/<%=([\s\S]+?)%>/g,Rt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zt=/^\w*$/,Et=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,St=/[\\^$.*+?()[\]{}|]/g,Wt=RegExp(St.source),Lt=/^\s+/,Ct=/\s/,Ut=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,Tt=/,? & /,$t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Dt=/[()=,{}\[\]\/\s]/,Mt=/\\(\\)?/g,Ft=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Nt=/\w*$/,Pt=/^[-+]0x[0-9a-f]+$/i,qt=/^0b[01]+$/i,Zt=/^\[object .+?Constructor\]$/,Kt=/^0o[0-7]+$/i,Vt=/^(?:0|[1-9]\d*)$/,Gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ht=/($^)/,Jt=/['\n\r\u2028\u2029\\]/g,Yt="\\ud800-\\udfff",Qt="\\u0300-\\u036f",Xt="\\ufe20-\\ufe2f",nr="\\u20d0-\\u20ff",tr=Qt+Xt+nr,rr="\\u2700-\\u27bf",er="a-z\\xdf-\\xf6\\xf8-\\xff",ur="\\xac\\xb1\\xd7\\xf7",ir="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",or="\\u2000-\\u206f",fr=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",cr="A-Z\\xc0-\\xd6\\xd8-\\xde",ar="\\ufe0e\\ufe0f",lr=ur+ir+or+fr,sr="['\u2019]",hr="["+Yt+"]",pr="["+lr+"]",_r="["+tr+"]",vr="\\d+",gr="["+rr+"]",yr="["+er+"]",dr="[^"+Yt+lr+vr+rr+er+cr+"]",br="\\ud83c[\\udffb-\\udfff]",wr="(?:"+_r+"|"+br+")",mr="[^"+Yt+"]",xr="(?:\\ud83c[\\udde6-\\uddff]){2}",jr="[\\ud800-\\udbff][\\udc00-\\udfff]",Ar="["+cr+"]",kr="\\u200d",Or="(?:"+yr+"|"+dr+")",Ir="(?:"+Ar+"|"+dr+")",Rr="(?:"+sr+"(?:d|ll|m|re|s|t|ve))?",zr="(?:"+sr+"(?:D|LL|M|RE|S|T|VE))?",Er=wr+"?",Sr="["+ar+"]?",Wr="(?:"+kr+"(?:"+[mr,xr,jr].join("|")+")"+Sr+Er+")*",Lr="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Cr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",Ur=Sr+Er+Wr,Br="(?:"+[gr,xr,jr].join("|")+")"+Ur,Tr="(?:"+[mr+_r+"?",_r,xr,jr,hr].join("|")+")",$r=RegExp(sr,"g"),Dr=RegExp(_r,"g"),Mr=RegExp(br+"(?="+br+")|"+Tr+Ur,"g"),Fr=RegExp([Ar+"?"+yr+"+"+Rr+"(?="+[pr,Ar,"$"].join("|")+")",Ir+"+"+zr+"(?="+[pr,Ar+Or,"$"].join("|")+")",Ar+"?"+Or+"+"+Rr,Ar+"+"+zr,Cr,Lr,vr,Br].join("|"),"g"),Nr=RegExp("["+kr+Yt+tr+ar+"]"),Pr=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,qr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Zr=-1,Kr={};
-Kr[at]=Kr[lt]=Kr[st]=Kr[ht]=Kr[pt]=Kr[_t]=Kr[vt]=Kr[gt]=Kr[yt]=!0,Kr[Dn]=Kr[Mn]=Kr[ft]=Kr[Nn]=Kr[ct]=Kr[Pn]=Kr[Zn]=Kr[Kn]=Kr[Gn]=Kr[Hn]=Kr[Yn]=Kr[nt]=Kr[tt]=Kr[rt]=Kr[it]=!1;var Vr={};Vr[Dn]=Vr[Mn]=Vr[ft]=Vr[ct]=Vr[Nn]=Vr[Pn]=Vr[at]=Vr[lt]=Vr[st]=Vr[ht]=Vr[pt]=Vr[Gn]=Vr[Hn]=Vr[Yn]=Vr[nt]=Vr[tt]=Vr[rt]=Vr[et]=Vr[_t]=Vr[vt]=Vr[gt]=Vr[yt]=!0,Vr[Zn]=Vr[Kn]=Vr[it]=!1;var Gr={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a",
-"\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae",
-"\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g",
-"\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O",
-"\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w",
-"\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},Hr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Jr={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"},Yr={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Qr=parseFloat,Xr=parseInt,ne="object"==typeof global&&global&&global.Object===Object&&global,te="object"==typeof self&&self&&self.Object===Object&&self,re=ne||te||Function("return this")(),ee="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ee&&"object"==typeof module&&module&&!module.nodeType&&module,ie=ue&&ue.exports===ee,oe=ie&&ne.process,fe=function(){
-try{var n=ue&&ue.require&&ue.require("util").types;return n?n:oe&&oe.binding&&oe.binding("util")}catch(n){}}(),ce=fe&&fe.isArrayBuffer,ae=fe&&fe.isDate,le=fe&&fe.isMap,se=fe&&fe.isRegExp,he=fe&&fe.isSet,pe=fe&&fe.isTypedArray,_e=m("length"),ve=x(Gr),ge=x(Hr),ye=x(Jr),de=function p(x){function Z(n){if(cc(n)&&!bh(n)&&!(n instanceof Ct)){if(n instanceof Y)return n;if(bl.call(n,"__wrapped__"))return eo(n)}return new Y(n)}function J(){}function Y(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,
-this.__index__=0,this.__values__=X}function Ct(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=Un,this.__views__=[]}function $t(){var n=new Ct(this.__wrapped__);return n.__actions__=Tu(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Tu(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Tu(this.__views__),n}function Yt(){if(this.__filtered__){var n=new Ct(this);n.__dir__=-1,
-n.__filtered__=!0}else n=this.clone(),n.__dir__*=-1;return n}function Qt(){var n=this.__wrapped__.value(),t=this.__dir__,r=bh(n),e=t<0,u=r?n.length:0,i=Oi(0,u,this.__views__),o=i.start,f=i.end,c=f-o,a=e?f:o-1,l=this.__iteratees__,s=l.length,h=0,p=Hl(c,this.__takeCount__);if(!r||!e&&u==c&&p==c)return wu(n,this.__actions__);var _=[];n:for(;c--&&h<p;){a+=t;for(var v=-1,g=n[a];++v<s;){var y=l[v],d=y.iteratee,b=y.type,w=d(g);if(b==zn)g=w;else if(!w){if(b==Rn)continue n;break n}}_[h++]=g}return _}function Xt(n){
-var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function nr(){this.__data__=is?is(null):{},this.size=0}function tr(n){var t=this.has(n)&&delete this.__data__[n];return this.size-=t?1:0,t}function rr(n){var t=this.__data__;if(is){var r=t[n];return r===on?X:r}return bl.call(t,n)?t[n]:X}function er(n){var t=this.__data__;return is?t[n]!==X:bl.call(t,n)}function ur(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=is&&t===X?on:t,this}function ir(n){
-var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function or(){this.__data__=[],this.size=0}function fr(n){var t=this.__data__,r=Wr(t,n);return!(r<0)&&(r==t.length-1?t.pop():Ll.call(t,r,1),--this.size,!0)}function cr(n){var t=this.__data__,r=Wr(t,n);return r<0?X:t[r][1]}function ar(n){return Wr(this.__data__,n)>-1}function lr(n,t){var r=this.__data__,e=Wr(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function sr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){
-var e=n[t];this.set(e[0],e[1])}}function hr(){this.size=0,this.__data__={hash:new Xt,map:new(ts||ir),string:new Xt}}function pr(n){var t=xi(this,n).delete(n);return this.size-=t?1:0,t}function _r(n){return xi(this,n).get(n)}function vr(n){return xi(this,n).has(n)}function gr(n,t){var r=xi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this}function yr(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new sr;++t<r;)this.add(n[t])}function dr(n){return this.__data__.set(n,on),this}function br(n){
-return this.__data__.has(n)}function wr(n){this.size=(this.__data__=new ir(n)).size}function mr(){this.__data__=new ir,this.size=0}function xr(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r}function jr(n){return this.__data__.get(n)}function Ar(n){return this.__data__.has(n)}function kr(n,t){var r=this.__data__;if(r instanceof ir){var e=r.__data__;if(!ts||e.length<tn-1)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new sr(e)}return r.set(n,t),this.size=r.size,this}function Or(n,t){
-var r=bh(n),e=!r&&dh(n),u=!r&&!e&&mh(n),i=!r&&!e&&!u&&Oh(n),o=r||e||u||i,f=o?O(n.length,hl):[],c=f.length;for(var a in n)!t&&!bl.call(n,a)||o&&("length"==a||u&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ci(a,c))||f.push(a);return f}function Ir(n){var t=n.length;return t?n[tu(0,t-1)]:X}function Rr(n,t){return Xi(Tu(n),Mr(t,0,n.length))}function zr(n){return Xi(Tu(n))}function Er(n,t,r){(r===X||Gf(n[t],r))&&(r!==X||t in n)||Br(n,t,r)}function Sr(n,t,r){var e=n[t];
-bl.call(n,t)&&Gf(e,r)&&(r!==X||t in n)||Br(n,t,r)}function Wr(n,t){for(var r=n.length;r--;)if(Gf(n[r][0],t))return r;return-1}function Lr(n,t,r,e){return ys(n,function(n,u,i){t(e,n,r(n),i)}),e}function Cr(n,t){return n&&$u(t,Pc(t),n)}function Ur(n,t){return n&&$u(t,qc(t),n)}function Br(n,t,r){"__proto__"==t&&Tl?Tl(n,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):n[t]=r}function Tr(n,t){for(var r=-1,e=t.length,u=il(e),i=null==n;++r<e;)u[r]=i?X:Mc(n,t[r]);return u}function Mr(n,t,r){return n===n&&(r!==X&&(n=n<=r?n:r),
-t!==X&&(n=n>=t?n:t)),n}function Fr(n,t,e,u,i,o){var f,c=t&an,a=t&ln,l=t&sn;if(e&&(f=i?e(n,u,i,o):e(n)),f!==X)return f;if(!fc(n))return n;var s=bh(n);if(s){if(f=zi(n),!c)return Tu(n,f)}else{var h=zs(n),p=h==Kn||h==Vn;if(mh(n))return Iu(n,c);if(h==Yn||h==Dn||p&&!i){if(f=a||p?{}:Ei(n),!c)return a?Mu(n,Ur(f,n)):Du(n,Cr(f,n))}else{if(!Vr[h])return i?n:{};f=Si(n,h,c)}}o||(o=new wr);var _=o.get(n);if(_)return _;o.set(n,f),kh(n)?n.forEach(function(r){f.add(Fr(r,t,e,r,n,o))}):jh(n)&&n.forEach(function(r,u){
-f.set(u,Fr(r,t,e,u,n,o))});var v=l?a?di:yi:a?qc:Pc,g=s?X:v(n);return r(g||n,function(r,u){g&&(u=r,r=n[u]),Sr(f,u,Fr(r,t,e,u,n,o))}),f}function Nr(n){var t=Pc(n);return function(r){return Pr(r,n,t)}}function Pr(n,t,r){var e=r.length;if(null==n)return!e;for(n=ll(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===X&&!(u in n)||!i(o))return!1}return!0}function Gr(n,t,r){if("function"!=typeof n)throw new pl(en);return Ws(function(){n.apply(X,r)},t)}function Hr(n,t,r,e){var u=-1,i=o,a=!0,l=n.length,s=[],h=t.length;
-if(!l)return s;r&&(t=c(t,z(r))),e?(i=f,a=!1):t.length>=tn&&(i=S,a=!1,t=new yr(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p);if(p=e||0!==p?p:0,a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function Jr(n,t){var r=!0;return ys(n,function(n,e,u){return r=!!t(n,e,u)}),r}function Yr(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===X?o===o&&!bc(o):r(o,f)))var f=o,c=i}return c}function ne(n,t,r,e){var u=n.length;for(r=kc(r),r<0&&(r=-r>u?0:u+r),
-e=e===X||e>u?u:kc(e),e<0&&(e+=u),e=r>e?0:Oc(e);r<e;)n[r++]=t;return n}function te(n,t){var r=[];return ys(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function ee(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=Li),u||(u=[]);++i<o;){var f=n[i];t>0&&r(f)?t>1?ee(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function ue(n,t){return n&&bs(n,t,Pc)}function oe(n,t){return n&&ws(n,t,Pc)}function fe(n,t){return i(t,function(t){return uc(n[t])})}function _e(n,t){t=ku(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[no(t[r++])];
-return r&&r==e?n:X}function de(n,t,r){var e=t(n);return bh(n)?e:a(e,r(n))}function we(n){return null==n?n===X?ut:Jn:Bl&&Bl in ll(n)?ki(n):Ki(n)}function me(n,t){return n>t}function xe(n,t){return null!=n&&bl.call(n,t)}function je(n,t){return null!=n&&t in ll(n)}function Ae(n,t,r){return n>=Hl(t,r)&&n<Gl(t,r)}function ke(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=il(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,z(t))),s=Hl(p.length,s),l[a]=!r&&(t||u>=120&&p.length>=120)?new yr(a&&p):X}p=n[0];
-var _=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],y=t?t(g):g;if(g=r||0!==g?g:0,!(v?S(v,y):e(h,y,r))){for(a=i;--a;){var d=l[a];if(!(d?S(d,y):e(n[a],y,r)))continue n}v&&v.push(y),h.push(g)}}return h}function Oe(n,t,r,e){return ue(n,function(n,u,i){t(e,r(n),u,i)}),e}function Ie(t,r,e){r=ku(r,t),t=Gi(t,r);var u=null==t?t:t[no(jo(r))];return null==u?X:n(u,t,e)}function Re(n){return cc(n)&&we(n)==Dn}function ze(n){return cc(n)&&we(n)==ft}function Ee(n){return cc(n)&&we(n)==Pn}function Se(n,t,r,e,u){
-return n===t||(null==n||null==t||!cc(n)&&!cc(t)?n!==n&&t!==t:We(n,t,r,e,Se,u))}function We(n,t,r,e,u,i){var o=bh(n),f=bh(t),c=o?Mn:zs(n),a=f?Mn:zs(t);c=c==Dn?Yn:c,a=a==Dn?Yn:a;var l=c==Yn,s=a==Yn,h=c==a;if(h&&mh(n)){if(!mh(t))return!1;o=!0,l=!1}if(h&&!l)return i||(i=new wr),o||Oh(n)?pi(n,t,r,e,u,i):_i(n,t,c,r,e,u,i);if(!(r&hn)){var p=l&&bl.call(n,"__wrapped__"),_=s&&bl.call(t,"__wrapped__");if(p||_){var v=p?n.value():n,g=_?t.value():t;return i||(i=new wr),u(v,g,r,e,i)}}return!!h&&(i||(i=new wr),vi(n,t,r,e,u,i));
-}function Le(n){return cc(n)&&zs(n)==Gn}function Ce(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=ll(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return!1}for(;++u<i;){f=r[u];var c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===X&&!(c in n))return!1}else{var s=new wr;if(e)var h=e(a,l,c,n,t,s);if(!(h===X?Se(l,a,hn|pn,e,s):h))return!1}}return!0}function Ue(n){return!(!fc(n)||Di(n))&&(uc(n)?kl:Zt).test(to(n))}function Be(n){return cc(n)&&we(n)==nt}function Te(n){return cc(n)&&zs(n)==tt;
-}function $e(n){return cc(n)&&oc(n.length)&&!!Kr[we(n)]}function De(n){return"function"==typeof n?n:null==n?La:"object"==typeof n?bh(n)?Ze(n[0],n[1]):qe(n):Fa(n)}function Me(n){if(!Mi(n))return Vl(n);var t=[];for(var r in ll(n))bl.call(n,r)&&"constructor"!=r&&t.push(r);return t}function Fe(n){if(!fc(n))return Zi(n);var t=Mi(n),r=[];for(var e in n)("constructor"!=e||!t&&bl.call(n,e))&&r.push(e);return r}function Ne(n,t){return n<t}function Pe(n,t){var r=-1,e=Hf(n)?il(n.length):[];return ys(n,function(n,u,i){
-e[++r]=t(n,u,i)}),e}function qe(n){var t=ji(n);return 1==t.length&&t[0][2]?Ni(t[0][0],t[0][1]):function(r){return r===n||Ce(r,n,t)}}function Ze(n,t){return Bi(n)&&Fi(t)?Ni(no(n),t):function(r){var e=Mc(r,n);return e===X&&e===t?Nc(r,n):Se(t,e,hn|pn)}}function Ke(n,t,r,e,u){n!==t&&bs(t,function(i,o){if(u||(u=new wr),fc(i))Ve(n,t,o,r,Ke,e,u);else{var f=e?e(Ji(n,o),i,o+"",n,t,u):X;f===X&&(f=i),Er(n,o,f)}},qc)}function Ve(n,t,r,e,u,i,o){var f=Ji(n,r),c=Ji(t,r),a=o.get(c);if(a)return Er(n,r,a),X;var l=i?i(f,c,r+"",n,t,o):X,s=l===X;
-if(s){var h=bh(c),p=!h&&mh(c),_=!h&&!p&&Oh(c);l=c,h||p||_?bh(f)?l=f:Jf(f)?l=Tu(f):p?(s=!1,l=Iu(c,!0)):_?(s=!1,l=Wu(c,!0)):l=[]:gc(c)||dh(c)?(l=f,dh(f)?l=Rc(f):fc(f)&&!uc(f)||(l=Ei(c))):s=!1}s&&(o.set(c,l),u(l,c,e,i,o),o.delete(c)),Er(n,r,l)}function Ge(n,t){var r=n.length;if(r)return t+=t<0?r:0,Ci(t,r)?n[t]:X}function He(n,t,r){t=t.length?c(t,function(n){return bh(n)?function(t){return _e(t,1===n.length?n[0]:n)}:n}):[La];var e=-1;return t=c(t,z(mi())),A(Pe(n,function(n,r,u){return{criteria:c(t,function(t){
-return t(n)}),index:++e,value:n}}),function(n,t){return Cu(n,t,r)})}function Je(n,t){return Ye(n,t,function(t,r){return Nc(n,r)})}function Ye(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=_e(n,o);r(f,o)&&fu(i,ku(o,n),f)}return i}function Qe(n){return function(t){return _e(t,n)}}function Xe(n,t,r,e){var u=e?d:y,i=-1,o=t.length,f=n;for(n===t&&(t=Tu(t)),r&&(f=c(n,z(r)));++i<o;)for(var a=0,l=t[i],s=r?r(l):l;(a=u(f,s,a,e))>-1;)f!==n&&Ll.call(f,a,1),Ll.call(n,a,1);return n}function nu(n,t){for(var r=n?t.length:0,e=r-1;r--;){
-var u=t[r];if(r==e||u!==i){var i=u;Ci(u)?Ll.call(n,u,1):yu(n,u)}}return n}function tu(n,t){return n+Nl(Ql()*(t-n+1))}function ru(n,t,r,e){for(var u=-1,i=Gl(Fl((t-n)/(r||1)),0),o=il(i);i--;)o[e?i:++u]=n,n+=r;return o}function eu(n,t){var r="";if(!n||t<1||t>Wn)return r;do t%2&&(r+=n),t=Nl(t/2),t&&(n+=n);while(t);return r}function uu(n,t){return Ls(Vi(n,t,La),n+"")}function iu(n){return Ir(ra(n))}function ou(n,t){var r=ra(n);return Xi(r,Mr(t,0,r.length))}function fu(n,t,r,e){if(!fc(n))return n;t=ku(t,n);
-for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=no(t[u]),a=r;if("__proto__"===c||"constructor"===c||"prototype"===c)return n;if(u!=o){var l=f[c];a=e?e(l,c,f):X,a===X&&(a=fc(l)?l:Ci(t[u+1])?[]:{})}Sr(f,c,a),f=f[c]}return n}function cu(n){return Xi(ra(n))}function au(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var i=il(u);++e<u;)i[e]=n[e+t];return i}function lu(n,t){var r;return ys(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function su(n,t,r){
-var e=0,u=null==n?e:n.length;if("number"==typeof t&&t===t&&u<=Tn){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!bc(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return hu(n,t,La,r)}function hu(n,t,r,e){var u=0,i=null==n?0:n.length;if(0===i)return 0;t=r(t);for(var o=t!==t,f=null===t,c=bc(t),a=t===X;u<i;){var l=Nl((u+i)/2),s=r(n[l]),h=s!==X,p=null===s,_=s===s,v=bc(s);if(o)var g=e||_;else g=a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):!p&&!v&&(e?s<=t:s<t);g?u=l+1:i=l}return Hl(i,Bn)}function pu(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){
-var o=n[r],f=t?t(o):o;if(!r||!Gf(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function _u(n){return"number"==typeof n?n:bc(n)?Cn:+n}function vu(n){if("string"==typeof n)return n;if(bh(n))return c(n,vu)+"";if(bc(n))return vs?vs.call(n):"";var t=n+"";return"0"==t&&1/n==-Sn?"-0":t}function gu(n,t,r){var e=-1,u=o,i=n.length,c=!0,a=[],l=a;if(r)c=!1,u=f;else if(i>=tn){var s=t?null:ks(n);if(s)return P(s);c=!1,u=S,l=new yr}else l=t?[]:a;n:for(;++e<i;){var h=n[e],p=t?t(h):h;if(h=r||0!==h?h:0,c&&p===p){for(var _=l.length;_--;)if(l[_]===p)continue n;
-t&&l.push(p),a.push(h)}else u(l,p,r)||(l!==a&&l.push(p),a.push(h))}return a}function yu(n,t){return t=ku(t,n),n=Gi(n,t),null==n||delete n[no(jo(t))]}function du(n,t,r,e){return fu(n,t,r(_e(n,t)),e)}function bu(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?au(n,e?0:i,e?i+1:u):au(n,e?i+1:0,e?u:i)}function wu(n,t){var r=n;return r instanceof Ct&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mu(n,t,r){var e=n.length;if(e<2)return e?gu(n[0]):[];
-for(var u=-1,i=il(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=Hr(i[u]||o,n[f],t,r));return gu(ee(i,1),t,r)}function xu(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;){r(o,n[e],e<i?t[e]:X)}return o}function ju(n){return Jf(n)?n:[]}function Au(n){return"function"==typeof n?n:La}function ku(n,t){return bh(n)?n:Bi(n,t)?[n]:Cs(Ec(n))}function Ou(n,t,r){var e=n.length;return r=r===X?e:r,!t&&r>=e?n:au(n,t,r)}function Iu(n,t){if(t)return n.slice();var r=n.length,e=zl?zl(r):new n.constructor(r);
-return n.copy(e),e}function Ru(n){var t=new n.constructor(n.byteLength);return new Rl(t).set(new Rl(n)),t}function zu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.byteLength)}function Eu(n){var t=new n.constructor(n.source,Nt.exec(n));return t.lastIndex=n.lastIndex,t}function Su(n){return _s?ll(_s.call(n)):{}}function Wu(n,t){return new n.constructor(t?Ru(n.buffer):n.buffer,n.byteOffset,n.length)}function Lu(n,t){if(n!==t){var r=n!==X,e=null===n,u=n===n,i=bc(n),o=t!==X,f=null===t,c=t===t,a=bc(t);
-if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Cu(n,t,r){for(var e=-1,u=n.criteria,i=t.criteria,o=u.length,f=r.length;++e<o;){var c=Lu(u[e],i[e]);if(c){if(e>=f)return c;return c*("desc"==r[e]?-1:1)}}return n.index-t.index}function Uu(n,t,r,e){for(var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Gl(i-o,0),l=il(c+a),s=!e;++f<c;)l[f]=t[f];for(;++u<o;)(s||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];return l;
-}function Bu(n,t,r,e){for(var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Gl(i-f,0),s=il(l+a),h=!e;++u<l;)s[u]=n[u];for(var p=u;++c<a;)s[p+c]=t[c];for(;++o<f;)(h||u<i)&&(s[p+r[o]]=n[u++]);return s}function Tu(n,t){var r=-1,e=n.length;for(t||(t=il(e));++r<e;)t[r]=n[r];return t}function $u(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):X;c===X&&(c=n[f]),u?Br(r,f,c):Sr(r,f,c)}return r}function Du(n,t){return $u(n,Is(n),t)}function Mu(n,t){return $u(n,Rs(n),t);
-}function Fu(n,r){return function(e,u){var i=bh(e)?t:Lr,o=r?r():{};return i(e,n,mi(u,2),o)}}function Nu(n){return uu(function(t,r){var e=-1,u=r.length,i=u>1?r[u-1]:X,o=u>2?r[2]:X;for(i=n.length>3&&"function"==typeof i?(u--,i):X,o&&Ui(r[0],r[1],o)&&(i=u<3?X:i,u=1),t=ll(t);++e<u;){var f=r[e];f&&n(t,f,e,i)}return t})}function Pu(n,t){return function(r,e){if(null==r)return r;if(!Hf(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=ll(r);(t?i--:++i<u)&&e(o[i],i,o)!==!1;);return r}}function qu(n){return function(t,r,e){
-for(var u=-1,i=ll(t),o=e(t),f=o.length;f--;){var c=o[n?f:++u];if(r(i[c],c,i)===!1)break}return t}}function Zu(n,t,r){function e(){return(this&&this!==re&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=t&_n,i=Gu(n);return e}function Ku(n){return function(t){t=Ec(t);var r=T(t)?G(t):X,e=r?r[0]:t.charAt(0),u=r?Ou(r,1).join(""):t.slice(1);return e[n]()+u}}function Vu(n){return function(t){return l(Ra(ca(t).replace($r,"")),n,"")}}function Gu(n){return function(){var t=arguments;switch(t.length){
-case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=gs(n.prototype),e=n.apply(r,t);return fc(e)?e:r}}function Hu(t,r,e){function u(){for(var o=arguments.length,f=il(o),c=o,a=wi(u);c--;)f[c]=arguments[c];var l=o<3&&f[0]!==a&&f[o-1]!==a?[]:N(f,a);
-return o-=l.length,o<e?oi(t,r,Qu,u.placeholder,X,f,l,X,X,e-o):n(this&&this!==re&&this instanceof u?i:t,this,f)}var i=Gu(t);return u}function Ju(n){return function(t,r,e){var u=ll(t);if(!Hf(t)){var i=mi(r,3);t=Pc(t),r=function(n){return i(u[n],n,u)}}var o=n(t,r,e);return o>-1?u[i?t[o]:o]:X}}function Yu(n){return gi(function(t){var r=t.length,e=r,u=Y.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if("function"!=typeof i)throw new pl(en);if(u&&!o&&"wrapper"==bi(i))var o=new Y([],!0)}for(e=o?e:r;++e<r;){
-i=t[e];var f=bi(i),c="wrapper"==f?Os(i):X;o=c&&$i(c[0])&&c[1]==(mn|yn|bn|xn)&&!c[4].length&&1==c[9]?o[bi(c[0])].apply(o,c[3]):1==i.length&&$i(i)?o[f]():o.thru(i)}return function(){var n=arguments,e=n[0];if(o&&1==n.length&&bh(e))return o.plant(e).value();for(var u=0,i=r?t[u].apply(this,n):e;++u<r;)i=t[u].call(this,i);return i}})}function Qu(n,t,r,e,u,i,o,f,c,a){function l(){for(var y=arguments.length,d=il(y),b=y;b--;)d[b]=arguments[b];if(_)var w=wi(l),m=C(d,w);if(e&&(d=Uu(d,e,u,_)),i&&(d=Bu(d,i,o,_)),
-y-=m,_&&y<a){return oi(n,t,Qu,l.placeholder,r,d,N(d,w),f,c,a-y)}var x=h?r:this,j=p?x[n]:n;return y=d.length,f?d=Hi(d,f):v&&y>1&&d.reverse(),s&&c<y&&(d.length=c),this&&this!==re&&this instanceof l&&(j=g||Gu(j)),j.apply(x,d)}var s=t&mn,h=t&_n,p=t&vn,_=t&(yn|dn),v=t&jn,g=p?X:Gu(n);return l}function Xu(n,t){return function(r,e){return Oe(r,n,t(e),{})}}function ni(n,t){return function(r,e){var u;if(r===X&&e===X)return t;if(r!==X&&(u=r),e!==X){if(u===X)return e;"string"==typeof r||"string"==typeof e?(r=vu(r),
-e=vu(e)):(r=_u(r),e=_u(e)),u=n(r,e)}return u}}function ti(t){return gi(function(r){return r=c(r,z(mi())),uu(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ri(n,t){t=t===X?" ":vu(t);var r=t.length;if(r<2)return r?eu(t,n):t;var e=eu(t,Fl(n/V(t)));return T(t)?Ou(G(e),0,n).join(""):e.slice(0,n)}function ei(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=il(l+c),h=this&&this!==re&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];
-return n(h,o?e:this,s)}var o=r&_n,f=Gu(t);return i}function ui(n){return function(t,r,e){return e&&"number"!=typeof e&&Ui(t,r,e)&&(r=e=X),t=Ac(t),r===X?(r=t,t=0):r=Ac(r),e=e===X?t<r?1:-1:Ac(e),ru(t,r,e,n)}}function ii(n){return function(t,r){return"string"==typeof t&&"string"==typeof r||(t=Ic(t),r=Ic(r)),n(t,r)}}function oi(n,t,r,e,u,i,o,f,c,a){var l=t&yn,s=l?o:X,h=l?X:o,p=l?i:X,_=l?X:i;t|=l?bn:wn,t&=~(l?wn:bn),t&gn||(t&=~(_n|vn));var v=[n,t,u,p,s,_,h,f,c,a],g=r.apply(X,v);return $i(n)&&Ss(g,v),g.placeholder=e,
-Yi(g,n,t)}function fi(n){var t=al[n];return function(n,r){if(n=Ic(n),r=null==r?0:Hl(kc(r),292),r&&Zl(n)){var e=(Ec(n)+"e").split("e");return e=(Ec(t(e[0]+"e"+(+e[1]+r)))+"e").split("e"),+(e[0]+"e"+(+e[1]-r))}return t(n)}}function ci(n){return function(t){var r=zs(t);return r==Gn?M(t):r==tt?q(t):I(t,n(t))}}function ai(n,t,r,e,u,i,o,f){var c=t&vn;if(!c&&"function"!=typeof n)throw new pl(en);var a=e?e.length:0;if(a||(t&=~(bn|wn),e=u=X),o=o===X?o:Gl(kc(o),0),f=f===X?f:kc(f),a-=u?u.length:0,t&wn){var l=e,s=u;
-e=u=X}var h=c?X:Os(n),p=[n,t,r,e,u,l,s,i,o,f];if(h&&qi(p,h),n=p[0],t=p[1],r=p[2],e=p[3],u=p[4],f=p[9]=p[9]===X?c?0:n.length:Gl(p[9]-a,0),!f&&t&(yn|dn)&&(t&=~(yn|dn)),t&&t!=_n)_=t==yn||t==dn?Hu(n,t,f):t!=bn&&t!=(_n|bn)||u.length?Qu.apply(X,p):ei(n,t,r,e);else var _=Zu(n,t,r);return Yi((h?ms:Ss)(_,p),n,t)}function li(n,t,r,e){return n===X||Gf(n,gl[r])&&!bl.call(e,r)?t:n}function si(n,t,r,e,u,i){return fc(n)&&fc(t)&&(i.set(t,n),Ke(n,t,X,si,i),i.delete(t)),n}function hi(n){return gc(n)?X:n}function pi(n,t,r,e,u,i){
-var o=r&hn,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return!1;var a=i.get(n),l=i.get(t);if(a&&l)return a==t&&l==n;var s=-1,p=!0,_=r&pn?new yr:X;for(i.set(n,t),i.set(t,n);++s<f;){var v=n[s],g=t[s];if(e)var y=o?e(g,v,s,t,n,i):e(v,g,s,n,t,i);if(y!==X){if(y)continue;p=!1;break}if(_){if(!h(t,function(n,t){if(!S(_,t)&&(v===n||u(v,n,r,e,i)))return _.push(t)})){p=!1;break}}else if(v!==g&&!u(v,g,r,e,i)){p=!1;break}}return i.delete(n),i.delete(t),p}function _i(n,t,r,e,u,i,o){switch(r){case ct:if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)return!1;
-n=n.buffer,t=t.buffer;case ft:return!(n.byteLength!=t.byteLength||!i(new Rl(n),new Rl(t)));case Nn:case Pn:case Hn:return Gf(+n,+t);case Zn:return n.name==t.name&&n.message==t.message;case nt:case rt:return n==t+"";case Gn:var f=M;case tt:var c=e&hn;if(f||(f=P),n.size!=t.size&&!c)return!1;var a=o.get(n);if(a)return a==t;e|=pn,o.set(n,t);var l=pi(f(n),f(t),e,u,i,o);return o.delete(n),l;case et:if(_s)return _s.call(n)==_s.call(t)}return!1}function vi(n,t,r,e,u,i){var o=r&hn,f=yi(n),c=f.length;if(c!=yi(t).length&&!o)return!1;
-for(var a=c;a--;){var l=f[a];if(!(o?l in t:bl.call(t,l)))return!1}var s=i.get(n),h=i.get(t);if(s&&h)return s==t&&h==n;var p=!0;i.set(n,t),i.set(t,n);for(var _=o;++a<c;){l=f[a];var v=n[l],g=t[l];if(e)var y=o?e(g,v,l,t,n,i):e(v,g,l,n,t,i);if(!(y===X?v===g||u(v,g,r,e,i):y)){p=!1;break}_||(_="constructor"==l)}if(p&&!_){var d=n.constructor,b=t.constructor;d!=b&&"constructor"in n&&"constructor"in t&&!("function"==typeof d&&d instanceof d&&"function"==typeof b&&b instanceof b)&&(p=!1)}return i.delete(n),
-i.delete(t),p}function gi(n){return Ls(Vi(n,X,_o),n+"")}function yi(n){return de(n,Pc,Is)}function di(n){return de(n,qc,Rs)}function bi(n){for(var t=n.name+"",r=fs[t],e=bl.call(fs,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function wi(n){return(bl.call(Z,"placeholder")?Z:n).placeholder}function mi(){var n=Z.iteratee||Ca;return n=n===Ca?De:n,arguments.length?n(arguments[0],arguments[1]):n}function xi(n,t){var r=n.__data__;return Ti(t)?r["string"==typeof t?"string":"hash"]:r.map;
-}function ji(n){for(var t=Pc(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,Fi(u)]}return t}function Ai(n,t){var r=B(n,t);return Ue(r)?r:X}function ki(n){var t=bl.call(n,Bl),r=n[Bl];try{n[Bl]=X;var e=!0}catch(n){}var u=xl.call(n);return e&&(t?n[Bl]=r:delete n[Bl]),u}function Oi(n,t,r){for(var e=-1,u=r.length;++e<u;){var i=r[e],o=i.size;switch(i.type){case"drop":n+=o;break;case"dropRight":t-=o;break;case"take":t=Hl(t,n+o);break;case"takeRight":n=Gl(n,t-o)}}return{start:n,end:t}}function Ii(n){var t=n.match(Bt);
-return t?t[1].split(Tt):[]}function Ri(n,t,r){t=ku(t,n);for(var e=-1,u=t.length,i=!1;++e<u;){var o=no(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&oc(u)&&Ci(o,u)&&(bh(n)||dh(n)))}function zi(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&bl.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ei(n){return"function"!=typeof n.constructor||Mi(n)?{}:gs(El(n))}function Si(n,t,r){var e=n.constructor;switch(t){case ft:return Ru(n);
-case Nn:case Pn:return new e(+n);case ct:return zu(n,r);case at:case lt:case st:case ht:case pt:case _t:case vt:case gt:case yt:return Wu(n,r);case Gn:return new e;case Hn:case rt:return new e(n);case nt:return Eu(n);case tt:return new e;case et:return Su(n)}}function Wi(n,t){var r=t.length;if(!r)return n;var e=r-1;return t[e]=(r>1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Ut,"{\n/* [wrapped with "+t+"] */\n")}function Li(n){return bh(n)||dh(n)||!!(Cl&&n&&n[Cl])}function Ci(n,t){var r=typeof n;
-return t=null==t?Wn:t,!!t&&("number"==r||"symbol"!=r&&Vt.test(n))&&n>-1&&n%1==0&&n<t}function Ui(n,t,r){if(!fc(r))return!1;var e=typeof t;return!!("number"==e?Hf(r)&&Ci(t,r.length):"string"==e&&t in r)&&Gf(r[t],n)}function Bi(n,t){if(bh(n))return!1;var r=typeof n;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=n&&!bc(n))||(zt.test(n)||!Rt.test(n)||null!=t&&n in ll(t))}function Ti(n){var t=typeof n;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==n:null===n}function $i(n){
-var t=bi(n),r=Z[t];if("function"!=typeof r||!(t in Ct.prototype))return!1;if(n===r)return!0;var e=Os(r);return!!e&&n===e[0]}function Di(n){return!!ml&&ml in n}function Mi(n){var t=n&&n.constructor;return n===("function"==typeof t&&t.prototype||gl)}function Fi(n){return n===n&&!fc(n)}function Ni(n,t){return function(r){return null!=r&&(r[n]===t&&(t!==X||n in ll(r)))}}function Pi(n){var t=Cf(n,function(n){return r.size===fn&&r.clear(),n}),r=t.cache;return t}function qi(n,t){var r=n[1],e=t[1],u=r|e,i=u<(_n|vn|mn),o=e==mn&&r==yn||e==mn&&r==xn&&n[7].length<=t[8]||e==(mn|xn)&&t[7].length<=t[8]&&r==yn;
-if(!i&&!o)return n;e&_n&&(n[2]=t[2],u|=r&_n?0:gn);var f=t[3];if(f){var c=n[3];n[3]=c?Uu(c,f,t[4]):f,n[4]=c?N(n[3],cn):t[4]}return f=t[5],f&&(c=n[5],n[5]=c?Bu(c,f,t[6]):f,n[6]=c?N(n[5],cn):t[6]),f=t[7],f&&(n[7]=f),e&mn&&(n[8]=null==n[8]?t[8]:Hl(n[8],t[8])),null==n[9]&&(n[9]=t[9]),n[0]=t[0],n[1]=u,n}function Zi(n){var t=[];if(null!=n)for(var r in ll(n))t.push(r);return t}function Ki(n){return xl.call(n)}function Vi(t,r,e){return r=Gl(r===X?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Gl(u.length-r,0),f=il(o);++i<o;)f[i]=u[r+i];
-i=-1;for(var c=il(r+1);++i<r;)c[i]=u[i];return c[r]=e(f),n(t,this,c)}}function Gi(n,t){return t.length<2?n:_e(n,au(t,0,-1))}function Hi(n,t){for(var r=n.length,e=Hl(t.length,r),u=Tu(n);e--;){var i=t[e];n[e]=Ci(i,r)?u[i]:X}return n}function Ji(n,t){if(("constructor"!==t||"function"!=typeof n[t])&&"__proto__"!=t)return n[t]}function Yi(n,t,r){var e=t+"";return Ls(n,Wi(e,ro(Ii(e),r)))}function Qi(n){var t=0,r=0;return function(){var e=Jl(),u=In-(e-r);if(r=e,u>0){if(++t>=On)return arguments[0]}else t=0;
-return n.apply(X,arguments)}}function Xi(n,t){var r=-1,e=n.length,u=e-1;for(t=t===X?e:t;++r<t;){var i=tu(r,u),o=n[i];n[i]=n[r],n[r]=o}return n.length=t,n}function no(n){if("string"==typeof n||bc(n))return n;var t=n+"";return"0"==t&&1/n==-Sn?"-0":t}function to(n){if(null!=n){try{return dl.call(n)}catch(n){}try{return n+""}catch(n){}}return""}function ro(n,t){return r($n,function(r){var e="_."+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function eo(n){if(n instanceof Ct)return n.clone();var t=new Y(n.__wrapped__,n.__chain__);
-return t.__actions__=Tu(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function uo(n,t,r){t=(r?Ui(n,t,r):t===X)?1:Gl(kc(t),0);var e=null==n?0:n.length;if(!e||t<1)return[];for(var u=0,i=0,o=il(Fl(e/t));u<e;)o[i++]=au(n,u,u+=t);return o}function io(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){var i=n[t];i&&(u[e++]=i)}return u}function oo(){var n=arguments.length;if(!n)return[];for(var t=il(n-1),r=arguments[0],e=n;e--;)t[e-1]=arguments[e];return a(bh(r)?Tu(r):[r],ee(t,1));
-}function fo(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),au(n,t<0?0:t,e)):[]}function co(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,0,t<0?0:t)):[]}function ao(n,t){return n&&n.length?bu(n,mi(t,3),!0,!0):[]}function lo(n,t){return n&&n.length?bu(n,mi(t,3),!0):[]}function so(n,t,r,e){var u=null==n?0:n.length;return u?(r&&"number"!=typeof r&&Ui(n,t,r)&&(r=0,e=u),ne(n,t,r,e)):[]}function ho(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);
-return u<0&&(u=Gl(e+u,0)),g(n,mi(t,3),u)}function po(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==X&&(u=kc(r),u=r<0?Gl(e+u,0):Hl(u,e-1)),g(n,mi(t,3),u,!0)}function _o(n){return(null==n?0:n.length)?ee(n,1):[]}function vo(n){return(null==n?0:n.length)?ee(n,Sn):[]}function go(n,t){return(null==n?0:n.length)?(t=t===X?1:kc(t),ee(n,t)):[]}function yo(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e}function bo(n){return n&&n.length?n[0]:X}function wo(n,t,r){
-var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:kc(r);return u<0&&(u=Gl(e+u,0)),y(n,t,u)}function mo(n){return(null==n?0:n.length)?au(n,0,-1):[]}function xo(n,t){return null==n?"":Kl.call(n,t)}function jo(n){var t=null==n?0:n.length;return t?n[t-1]:X}function Ao(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;return r!==X&&(u=kc(r),u=u<0?Gl(e+u,0):Hl(u,e-1)),t===t?K(n,t,u):g(n,b,u,!0)}function ko(n,t){return n&&n.length?Ge(n,kc(t)):X}function Oo(n,t){return n&&n.length&&t&&t.length?Xe(n,t):n;
-}function Io(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,mi(r,2)):n}function Ro(n,t,r){return n&&n.length&&t&&t.length?Xe(n,t,X,r):n}function zo(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=mi(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),u.push(e))}return nu(n,u),r}function Eo(n){return null==n?n:Xl.call(n)}function So(n,t,r){var e=null==n?0:n.length;return e?(r&&"number"!=typeof r&&Ui(n,t,r)?(t=0,r=e):(t=null==t?0:kc(t),r=r===X?e:kc(r)),au(n,t,r)):[]}function Wo(n,t){
-return su(n,t)}function Lo(n,t,r){return hu(n,t,mi(r,2))}function Co(n,t){var r=null==n?0:n.length;if(r){var e=su(n,t);if(e<r&&Gf(n[e],t))return e}return-1}function Uo(n,t){return su(n,t,!0)}function Bo(n,t,r){return hu(n,t,mi(r,2),!0)}function To(n,t){if(null==n?0:n.length){var r=su(n,t,!0)-1;if(Gf(n[r],t))return r}return-1}function $o(n){return n&&n.length?pu(n):[]}function Do(n,t){return n&&n.length?pu(n,mi(t,2)):[]}function Mo(n){var t=null==n?0:n.length;return t?au(n,1,t):[]}function Fo(n,t,r){
-return n&&n.length?(t=r||t===X?1:kc(t),au(n,0,t<0?0:t)):[]}function No(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===X?1:kc(t),t=e-t,au(n,t<0?0:t,e)):[]}function Po(n,t){return n&&n.length?bu(n,mi(t,3),!1,!0):[]}function qo(n,t){return n&&n.length?bu(n,mi(t,3)):[]}function Zo(n){return n&&n.length?gu(n):[]}function Ko(n,t){return n&&n.length?gu(n,mi(t,2)):[]}function Vo(n,t){return t="function"==typeof t?t:X,n&&n.length?gu(n,X,t):[]}function Go(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){
-if(Jf(n))return t=Gl(n.length,t),!0}),O(t,function(t){return c(n,m(t))})}function Ho(t,r){if(!t||!t.length)return[];var e=Go(t);return null==r?e:c(e,function(t){return n(r,X,t)})}function Jo(n,t){return xu(n||[],t||[],Sr)}function Yo(n,t){return xu(n||[],t||[],fu)}function Qo(n){var t=Z(n);return t.__chain__=!0,t}function Xo(n,t){return t(n),n}function nf(n,t){return t(n)}function tf(){return Qo(this)}function rf(){return new Y(this.value(),this.__chain__)}function ef(){this.__values__===X&&(this.__values__=jc(this.value()));
-var n=this.__index__>=this.__values__.length;return{done:n,value:n?X:this.__values__[this.__index__++]}}function uf(){return this}function of(n){for(var t,r=this;r instanceof J;){var e=eo(r);e.__index__=0,e.__values__=X,t?u.__wrapped__=e:t=e;var u=e;r=r.__wrapped__}return u.__wrapped__=n,t}function ff(){var n=this.__wrapped__;if(n instanceof Ct){var t=n;return this.__actions__.length&&(t=new Ct(this)),t=t.reverse(),t.__actions__.push({func:nf,args:[Eo],thisArg:X}),new Y(t,this.__chain__)}return this.thru(Eo);
-}function cf(){return wu(this.__wrapped__,this.__actions__)}function af(n,t,r){var e=bh(n)?u:Jr;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function lf(n,t){return(bh(n)?i:te)(n,mi(t,3))}function sf(n,t){return ee(yf(n,t),1)}function hf(n,t){return ee(yf(n,t),Sn)}function pf(n,t,r){return r=r===X?1:kc(r),ee(yf(n,t),r)}function _f(n,t){return(bh(n)?r:ys)(n,mi(t,3))}function vf(n,t){return(bh(n)?e:ds)(n,mi(t,3))}function gf(n,t,r,e){n=Hf(n)?n:ra(n),r=r&&!e?kc(r):0;var u=n.length;return r<0&&(r=Gl(u+r,0)),
-dc(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&y(n,t,r)>-1}function yf(n,t){return(bh(n)?c:Pe)(n,mi(t,3))}function df(n,t,r,e){return null==n?[]:(bh(t)||(t=null==t?[]:[t]),r=e?X:r,bh(r)||(r=null==r?[]:[r]),He(n,t,r))}function bf(n,t,r){var e=bh(n)?l:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ys)}function wf(n,t,r){var e=bh(n)?s:j,u=arguments.length<3;return e(n,mi(t,4),r,u,ds)}function mf(n,t){return(bh(n)?i:te)(n,Uf(mi(t,3)))}function xf(n){return(bh(n)?Ir:iu)(n)}function jf(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),
-(bh(n)?Rr:ou)(n,t)}function Af(n){return(bh(n)?zr:cu)(n)}function kf(n){if(null==n)return 0;if(Hf(n))return dc(n)?V(n):n.length;var t=zs(n);return t==Gn||t==tt?n.size:Me(n).length}function Of(n,t,r){var e=bh(n)?h:lu;return r&&Ui(n,t,r)&&(t=X),e(n,mi(t,3))}function If(n,t){if("function"!=typeof t)throw new pl(en);return n=kc(n),function(){if(--n<1)return t.apply(this,arguments)}}function Rf(n,t,r){return t=r?X:t,t=n&&null==t?n.length:t,ai(n,mn,X,X,X,X,t)}function zf(n,t){var r;if("function"!=typeof t)throw new pl(en);
-return n=kc(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=X),r}}function Ef(n,t,r){t=r?X:t;var e=ai(n,yn,X,X,X,X,X,t);return e.placeholder=Ef.placeholder,e}function Sf(n,t,r){t=r?X:t;var e=ai(n,dn,X,X,X,X,X,t);return e.placeholder=Sf.placeholder,e}function Wf(n,t,r){function e(t){var r=h,e=p;return h=p=X,d=t,v=n.apply(e,r)}function u(n){return d=n,g=Ws(f,t),b?e(n):v}function i(n){var r=n-y,e=n-d,u=t-r;return w?Hl(u,_-e):u}function o(n){var r=n-y,e=n-d;return y===X||r>=t||r<0||w&&e>=_;
-}function f(){var n=fh();return o(n)?c(n):(g=Ws(f,i(n)),X)}function c(n){return g=X,m&&h?e(n):(h=p=X,v)}function a(){g!==X&&As(g),d=0,h=y=p=g=X}function l(){return g===X?v:c(fh())}function s(){var n=fh(),r=o(n);if(h=arguments,p=this,y=n,r){if(g===X)return u(y);if(w)return As(g),g=Ws(f,t),e(y)}return g===X&&(g=Ws(f,t)),v}var h,p,_,v,g,y,d=0,b=!1,w=!1,m=!0;if("function"!=typeof n)throw new pl(en);return t=Ic(t)||0,fc(r)&&(b=!!r.leading,w="maxWait"in r,_=w?Gl(Ic(r.maxWait)||0,t):_,m="trailing"in r?!!r.trailing:m),
-s.cancel=a,s.flush=l,s}function Lf(n){return ai(n,jn)}function Cf(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new pl(en);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Cf.Cache||sr),r}function Uf(n){if("function"!=typeof n)throw new pl(en);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:
-return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function Bf(n){return zf(2,n)}function Tf(n,t){if("function"!=typeof n)throw new pl(en);return t=t===X?t:kc(t),uu(n,t)}function $f(t,r){if("function"!=typeof t)throw new pl(en);return r=null==r?0:Gl(kc(r),0),uu(function(e){var u=e[r],i=Ou(e,0,r);return u&&a(i,u),n(t,this,i)})}function Df(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new pl(en);return fc(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),
-Wf(n,t,{leading:e,maxWait:t,trailing:u})}function Mf(n){return Rf(n,1)}function Ff(n,t){return ph(Au(t),n)}function Nf(){if(!arguments.length)return[];var n=arguments[0];return bh(n)?n:[n]}function Pf(n){return Fr(n,sn)}function qf(n,t){return t="function"==typeof t?t:X,Fr(n,sn,t)}function Zf(n){return Fr(n,an|sn)}function Kf(n,t){return t="function"==typeof t?t:X,Fr(n,an|sn,t)}function Vf(n,t){return null==t||Pr(n,t,Pc(t))}function Gf(n,t){return n===t||n!==n&&t!==t}function Hf(n){return null!=n&&oc(n.length)&&!uc(n);
-}function Jf(n){return cc(n)&&Hf(n)}function Yf(n){return n===!0||n===!1||cc(n)&&we(n)==Nn}function Qf(n){return cc(n)&&1===n.nodeType&&!gc(n)}function Xf(n){if(null==n)return!0;if(Hf(n)&&(bh(n)||"string"==typeof n||"function"==typeof n.splice||mh(n)||Oh(n)||dh(n)))return!n.length;var t=zs(n);if(t==Gn||t==tt)return!n.size;if(Mi(n))return!Me(n).length;for(var r in n)if(bl.call(n,r))return!1;return!0}function nc(n,t){return Se(n,t)}function tc(n,t,r){r="function"==typeof r?r:X;var e=r?r(n,t):X;return e===X?Se(n,t,X,r):!!e;
-}function rc(n){if(!cc(n))return!1;var t=we(n);return t==Zn||t==qn||"string"==typeof n.message&&"string"==typeof n.name&&!gc(n)}function ec(n){return"number"==typeof n&&Zl(n)}function uc(n){if(!fc(n))return!1;var t=we(n);return t==Kn||t==Vn||t==Fn||t==Xn}function ic(n){return"number"==typeof n&&n==kc(n)}function oc(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=Wn}function fc(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function cc(n){return null!=n&&"object"==typeof n}function ac(n,t){
-return n===t||Ce(n,t,ji(t))}function lc(n,t,r){return r="function"==typeof r?r:X,Ce(n,t,ji(t),r)}function sc(n){return vc(n)&&n!=+n}function hc(n){if(Es(n))throw new fl(rn);return Ue(n)}function pc(n){return null===n}function _c(n){return null==n}function vc(n){return"number"==typeof n||cc(n)&&we(n)==Hn}function gc(n){if(!cc(n)||we(n)!=Yn)return!1;var t=El(n);if(null===t)return!0;var r=bl.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&dl.call(r)==jl}function yc(n){
-return ic(n)&&n>=-Wn&&n<=Wn}function dc(n){return"string"==typeof n||!bh(n)&&cc(n)&&we(n)==rt}function bc(n){return"symbol"==typeof n||cc(n)&&we(n)==et}function wc(n){return n===X}function mc(n){return cc(n)&&zs(n)==it}function xc(n){return cc(n)&&we(n)==ot}function jc(n){if(!n)return[];if(Hf(n))return dc(n)?G(n):Tu(n);if(Ul&&n[Ul])return D(n[Ul]());var t=zs(n);return(t==Gn?M:t==tt?P:ra)(n)}function Ac(n){if(!n)return 0===n?n:0;if(n=Ic(n),n===Sn||n===-Sn){return(n<0?-1:1)*Ln}return n===n?n:0}function kc(n){
-var t=Ac(n),r=t%1;return t===t?r?t-r:t:0}function Oc(n){return n?Mr(kc(n),0,Un):0}function Ic(n){if("number"==typeof n)return n;if(bc(n))return Cn;if(fc(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=fc(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=R(n);var r=qt.test(n);return r||Kt.test(n)?Xr(n.slice(2),r?2:8):Pt.test(n)?Cn:+n}function Rc(n){return $u(n,qc(n))}function zc(n){return n?Mr(kc(n),-Wn,Wn):0===n?n:0}function Ec(n){return null==n?"":vu(n)}function Sc(n,t){var r=gs(n);return null==t?r:Cr(r,t);
-}function Wc(n,t){return v(n,mi(t,3),ue)}function Lc(n,t){return v(n,mi(t,3),oe)}function Cc(n,t){return null==n?n:bs(n,mi(t,3),qc)}function Uc(n,t){return null==n?n:ws(n,mi(t,3),qc)}function Bc(n,t){return n&&ue(n,mi(t,3))}function Tc(n,t){return n&&oe(n,mi(t,3))}function $c(n){return null==n?[]:fe(n,Pc(n))}function Dc(n){return null==n?[]:fe(n,qc(n))}function Mc(n,t,r){var e=null==n?X:_e(n,t);return e===X?r:e}function Fc(n,t){return null!=n&&Ri(n,t,xe)}function Nc(n,t){return null!=n&&Ri(n,t,je);
-}function Pc(n){return Hf(n)?Or(n):Me(n)}function qc(n){return Hf(n)?Or(n,!0):Fe(n)}function Zc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,t(n,e,u),n)}),r}function Kc(n,t){var r={};return t=mi(t,3),ue(n,function(n,e,u){Br(r,e,t(n,e,u))}),r}function Vc(n,t){return Gc(n,Uf(mi(t)))}function Gc(n,t){if(null==n)return{};var r=c(di(n),function(n){return[n]});return t=mi(t),Ye(n,r,function(n,r){return t(n,r[0])})}function Hc(n,t,r){t=ku(t,n);var e=-1,u=t.length;for(u||(u=1,n=X);++e<u;){var i=null==n?X:n[no(t[e])];
-i===X&&(e=u,i=r),n=uc(i)?i.call(n):i}return n}function Jc(n,t,r){return null==n?n:fu(n,t,r)}function Yc(n,t,r,e){return e="function"==typeof e?e:X,null==n?n:fu(n,t,r,e)}function Qc(n,t,e){var u=bh(n),i=u||mh(n)||Oh(n);if(t=mi(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:fc(n)&&uc(o)?gs(El(n)):{}}return(i?r:ue)(n,function(n,r,u){return t(e,n,r,u)}),e}function Xc(n,t){return null==n||yu(n,t)}function na(n,t,r){return null==n?n:du(n,t,Au(r))}function ta(n,t,r,e){return e="function"==typeof e?e:X,
-null==n?n:du(n,t,Au(r),e)}function ra(n){return null==n?[]:E(n,Pc(n))}function ea(n){return null==n?[]:E(n,qc(n))}function ua(n,t,r){return r===X&&(r=t,t=X),r!==X&&(r=Ic(r),r=r===r?r:0),t!==X&&(t=Ic(t),t=t===t?t:0),Mr(Ic(n),t,r)}function ia(n,t,r){return t=Ac(t),r===X?(r=t,t=0):r=Ac(r),n=Ic(n),Ae(n,t,r)}function oa(n,t,r){if(r&&"boolean"!=typeof r&&Ui(n,t,r)&&(t=r=X),r===X&&("boolean"==typeof t?(r=t,t=X):"boolean"==typeof n&&(r=n,n=X)),n===X&&t===X?(n=0,t=1):(n=Ac(n),t===X?(t=n,n=0):t=Ac(t)),n>t){
-var e=n;n=t,t=e}if(r||n%1||t%1){var u=Ql();return Hl(n+u*(t-n+Qr("1e-"+((u+"").length-1))),t)}return tu(n,t)}function fa(n){return Qh(Ec(n).toLowerCase())}function ca(n){return n=Ec(n),n&&n.replace(Gt,ve).replace(Dr,"")}function aa(n,t,r){n=Ec(n),t=vu(t);var e=n.length;r=r===X?e:Mr(kc(r),0,e);var u=r;return r-=t.length,r>=0&&n.slice(r,u)==t}function la(n){return n=Ec(n),n&&At.test(n)?n.replace(xt,ge):n}function sa(n){return n=Ec(n),n&&Wt.test(n)?n.replace(St,"\\$&"):n}function ha(n,t,r){n=Ec(n),t=kc(t);
-var e=t?V(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return ri(Nl(u),r)+n+ri(Fl(u),r)}function pa(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?n+ri(t-e,r):n}function _a(n,t,r){n=Ec(n),t=kc(t);var e=t?V(n):0;return t&&e<t?ri(t-e,r)+n:n}function va(n,t,r){return r||null==t?t=0:t&&(t=+t),Yl(Ec(n).replace(Lt,""),t||0)}function ga(n,t,r){return t=(r?Ui(n,t,r):t===X)?1:kc(t),eu(Ec(n),t)}function ya(){var n=arguments,t=Ec(n[0]);return n.length<3?t:t.replace(n[1],n[2])}function da(n,t,r){return r&&"number"!=typeof r&&Ui(n,t,r)&&(t=r=X),
-(r=r===X?Un:r>>>0)?(n=Ec(n),n&&("string"==typeof t||null!=t&&!Ah(t))&&(t=vu(t),!t&&T(n))?Ou(G(n),0,r):n.split(t,r)):[]}function ba(n,t,r){return n=Ec(n),r=null==r?0:Mr(kc(r),0,n.length),t=vu(t),n.slice(r,r+t.length)==t}function wa(n,t,r){var e=Z.templateSettings;r&&Ui(n,t,r)&&(t=X),n=Ec(n),t=Sh({},t,e,li);var u,i,o=Sh({},t.imports,e.imports,li),f=Pc(o),c=E(o,f),a=0,l=t.interpolate||Ht,s="__p += '",h=sl((t.escape||Ht).source+"|"+l.source+"|"+(l===It?Ft:Ht).source+"|"+(t.evaluate||Ht).source+"|$","g"),p="//# sourceURL="+(bl.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Zr+"]")+"\n";
-n.replace(h,function(t,r,e,o,f,c){return e||(e=o),s+=n.slice(a,c).replace(Jt,U),r&&(u=!0,s+="' +\n__e("+r+") +\n'"),f&&(i=!0,s+="';\n"+f+";\n__p += '"),e&&(s+="' +\n((__t = ("+e+")) == null ? '' : __t) +\n'"),a=c+t.length,t}),s+="';\n";var _=bl.call(t,"variable")&&t.variable;if(_){if(Dt.test(_))throw new fl(un)}else s="with (obj) {\n"+s+"\n}\n";s=(i?s.replace(dt,""):s).replace(bt,"$1").replace(wt,"$1;"),s="function("+(_||"obj")+") {\n"+(_?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(u?", __e = _.escape":"")+(i?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+s+"return __p\n}";
-var v=Xh(function(){return cl(f,p+"return "+s).apply(X,c)});if(v.source=s,rc(v))throw v;return v}function ma(n){return Ec(n).toLowerCase()}function xa(n){return Ec(n).toUpperCase()}function ja(n,t,r){if(n=Ec(n),n&&(r||t===X))return R(n);if(!n||!(t=vu(t)))return n;var e=G(n),u=G(t);return Ou(e,W(e,u),L(e,u)+1).join("")}function Aa(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.slice(0,H(n)+1);if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,0,L(e,G(t))+1).join("")}function ka(n,t,r){if(n=Ec(n),n&&(r||t===X))return n.replace(Lt,"");
-if(!n||!(t=vu(t)))return n;var e=G(n);return Ou(e,W(e,G(t))).join("")}function Oa(n,t){var r=An,e=kn;if(fc(t)){var u="separator"in t?t.separator:u;r="length"in t?kc(t.length):r,e="omission"in t?vu(t.omission):e}n=Ec(n);var i=n.length;if(T(n)){var o=G(n);i=o.length}if(r>=i)return n;var f=r-V(e);if(f<1)return e;var c=o?Ou(o,0,f).join(""):n.slice(0,f);if(u===X)return c+e;if(o&&(f+=c.length-f),Ah(u)){if(n.slice(f).search(u)){var a,l=c;for(u.global||(u=sl(u.source,Ec(Nt.exec(u))+"g")),u.lastIndex=0;a=u.exec(l);)var s=a.index;
-c=c.slice(0,s===X?f:s)}}else if(n.indexOf(vu(u),f)!=f){var h=c.lastIndexOf(u);h>-1&&(c=c.slice(0,h))}return c+e}function Ia(n){return n=Ec(n),n&&jt.test(n)?n.replace(mt,ye):n}function Ra(n,t,r){return n=Ec(n),t=r?X:t,t===X?$(n)?Q(n):_(n):n.match(t)||[]}function za(t){var r=null==t?0:t.length,e=mi();return t=r?c(t,function(n){if("function"!=typeof n[1])throw new pl(en);return[e(n[0]),n[1]]}):[],uu(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})}function Ea(n){
-return Nr(Fr(n,an))}function Sa(n){return function(){return n}}function Wa(n,t){return null==n||n!==n?t:n}function La(n){return n}function Ca(n){return De("function"==typeof n?n:Fr(n,an))}function Ua(n){return qe(Fr(n,an))}function Ba(n,t){return Ze(n,Fr(t,an))}function Ta(n,t,e){var u=Pc(t),i=fe(t,u);null!=e||fc(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=fe(t,Pc(t)));var o=!(fc(e)&&"chain"in e&&!e.chain),f=uc(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;
-if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Tu(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function $a(){return re._===this&&(re._=Al),this}function Da(){}function Ma(n){return n=kc(n),uu(function(t){return Ge(t,n)})}function Fa(n){return Bi(n)?m(no(n)):Qe(n)}function Na(n){return function(t){return null==n?X:_e(n,t)}}function Pa(){return[]}function qa(){return!1}function Za(){return{}}function Ka(){return"";
-}function Va(){return!0}function Ga(n,t){if(n=kc(n),n<1||n>Wn)return[];var r=Un,e=Hl(n,Un);t=mi(t),n-=Un;for(var u=O(e,t);++r<n;)t(r);return u}function Ha(n){return bh(n)?c(n,no):bc(n)?[n]:Tu(Cs(Ec(n)))}function Ja(n){var t=++wl;return Ec(n)+t}function Ya(n){return n&&n.length?Yr(n,La,me):X}function Qa(n,t){return n&&n.length?Yr(n,mi(t,2),me):X}function Xa(n){return w(n,La)}function nl(n,t){return w(n,mi(t,2))}function tl(n){return n&&n.length?Yr(n,La,Ne):X}function rl(n,t){return n&&n.length?Yr(n,mi(t,2),Ne):X;
-}function el(n){return n&&n.length?k(n,La):0}function ul(n,t){return n&&n.length?k(n,mi(t,2)):0}x=null==x?re:be.defaults(re.Object(),x,be.pick(re,qr));var il=x.Array,ol=x.Date,fl=x.Error,cl=x.Function,al=x.Math,ll=x.Object,sl=x.RegExp,hl=x.String,pl=x.TypeError,_l=il.prototype,vl=cl.prototype,gl=ll.prototype,yl=x["__core-js_shared__"],dl=vl.toString,bl=gl.hasOwnProperty,wl=0,ml=function(){var n=/[^.]+$/.exec(yl&&yl.keys&&yl.keys.IE_PROTO||"");return n?"Symbol(src)_1."+n:""}(),xl=gl.toString,jl=dl.call(ll),Al=re._,kl=sl("^"+dl.call(bl).replace(St,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ol=ie?x.Buffer:X,Il=x.Symbol,Rl=x.Uint8Array,zl=Ol?Ol.allocUnsafe:X,El=F(ll.getPrototypeOf,ll),Sl=ll.create,Wl=gl.propertyIsEnumerable,Ll=_l.splice,Cl=Il?Il.isConcatSpreadable:X,Ul=Il?Il.iterator:X,Bl=Il?Il.toStringTag:X,Tl=function(){
-try{var n=Ai(ll,"defineProperty");return n({},"",{}),n}catch(n){}}(),$l=x.clearTimeout!==re.clearTimeout&&x.clearTimeout,Dl=ol&&ol.now!==re.Date.now&&ol.now,Ml=x.setTimeout!==re.setTimeout&&x.setTimeout,Fl=al.ceil,Nl=al.floor,Pl=ll.getOwnPropertySymbols,ql=Ol?Ol.isBuffer:X,Zl=x.isFinite,Kl=_l.join,Vl=F(ll.keys,ll),Gl=al.max,Hl=al.min,Jl=ol.now,Yl=x.parseInt,Ql=al.random,Xl=_l.reverse,ns=Ai(x,"DataView"),ts=Ai(x,"Map"),rs=Ai(x,"Promise"),es=Ai(x,"Set"),us=Ai(x,"WeakMap"),is=Ai(ll,"create"),os=us&&new us,fs={},cs=to(ns),as=to(ts),ls=to(rs),ss=to(es),hs=to(us),ps=Il?Il.prototype:X,_s=ps?ps.valueOf:X,vs=ps?ps.toString:X,gs=function(){
-function n(){}return function(t){if(!fc(t))return{};if(Sl)return Sl(t);n.prototype=t;var r=new n;return n.prototype=X,r}}();Z.templateSettings={escape:kt,evaluate:Ot,interpolate:It,variable:"",imports:{_:Z}},Z.prototype=J.prototype,Z.prototype.constructor=Z,Y.prototype=gs(J.prototype),Y.prototype.constructor=Y,Ct.prototype=gs(J.prototype),Ct.prototype.constructor=Ct,Xt.prototype.clear=nr,Xt.prototype.delete=tr,Xt.prototype.get=rr,Xt.prototype.has=er,Xt.prototype.set=ur,ir.prototype.clear=or,ir.prototype.delete=fr,
-ir.prototype.get=cr,ir.prototype.has=ar,ir.prototype.set=lr,sr.prototype.clear=hr,sr.prototype.delete=pr,sr.prototype.get=_r,sr.prototype.has=vr,sr.prototype.set=gr,yr.prototype.add=yr.prototype.push=dr,yr.prototype.has=br,wr.prototype.clear=mr,wr.prototype.delete=xr,wr.prototype.get=jr,wr.prototype.has=Ar,wr.prototype.set=kr;var ys=Pu(ue),ds=Pu(oe,!0),bs=qu(),ws=qu(!0),ms=os?function(n,t){return os.set(n,t),n}:La,xs=Tl?function(n,t){return Tl(n,"toString",{configurable:!0,enumerable:!1,value:Sa(t),
-writable:!0})}:La,js=uu,As=$l||function(n){return re.clearTimeout(n)},ks=es&&1/P(new es([,-0]))[1]==Sn?function(n){return new es(n)}:Da,Os=os?function(n){return os.get(n)}:Da,Is=Pl?function(n){return null==n?[]:(n=ll(n),i(Pl(n),function(t){return Wl.call(n,t)}))}:Pa,Rs=Pl?function(n){for(var t=[];n;)a(t,Is(n)),n=El(n);return t}:Pa,zs=we;(ns&&zs(new ns(new ArrayBuffer(1)))!=ct||ts&&zs(new ts)!=Gn||rs&&zs(rs.resolve())!=Qn||es&&zs(new es)!=tt||us&&zs(new us)!=it)&&(zs=function(n){var t=we(n),r=t==Yn?n.constructor:X,e=r?to(r):"";
-if(e)switch(e){case cs:return ct;case as:return Gn;case ls:return Qn;case ss:return tt;case hs:return it}return t});var Es=yl?uc:qa,Ss=Qi(ms),Ws=Ml||function(n,t){return re.setTimeout(n,t)},Ls=Qi(xs),Cs=Pi(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(""),n.replace(Et,function(n,r,e,u){t.push(e?u.replace(Mt,"$1"):r||n)}),t}),Us=uu(function(n,t){return Jf(n)?Hr(n,ee(t,1,Jf,!0)):[]}),Bs=uu(function(n,t){var r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,!0),mi(r,2)):[]}),Ts=uu(function(n,t){
-var r=jo(t);return Jf(r)&&(r=X),Jf(n)?Hr(n,ee(t,1,Jf,!0),X,r):[]}),$s=uu(function(n){var t=c(n,ju);return t.length&&t[0]===n[0]?ke(t):[]}),Ds=uu(function(n){var t=jo(n),r=c(n,ju);return t===jo(r)?t=X:r.pop(),r.length&&r[0]===n[0]?ke(r,mi(t,2)):[]}),Ms=uu(function(n){var t=jo(n),r=c(n,ju);return t="function"==typeof t?t:X,t&&r.pop(),r.length&&r[0]===n[0]?ke(r,X,t):[]}),Fs=uu(Oo),Ns=gi(function(n,t){var r=null==n?0:n.length,e=Tr(n,t);return nu(n,c(t,function(n){return Ci(n,r)?+n:n}).sort(Lu)),e}),Ps=uu(function(n){
-return gu(ee(n,1,Jf,!0))}),qs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),gu(ee(n,1,Jf,!0),mi(t,2))}),Zs=uu(function(n){var t=jo(n);return t="function"==typeof t?t:X,gu(ee(n,1,Jf,!0),X,t)}),Ks=uu(function(n,t){return Jf(n)?Hr(n,t):[]}),Vs=uu(function(n){return mu(i(n,Jf))}),Gs=uu(function(n){var t=jo(n);return Jf(t)&&(t=X),mu(i(n,Jf),mi(t,2))}),Hs=uu(function(n){var t=jo(n);return t="function"==typeof t?t:X,mu(i(n,Jf),X,t)}),Js=uu(Go),Ys=uu(function(n){var t=n.length,r=t>1?n[t-1]:X;return r="function"==typeof r?(n.pop(),
-r):X,Ho(n,r)}),Qs=gi(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,u=function(t){return Tr(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Ct&&Ci(r)?(e=e.slice(r,+r+(t?1:0)),e.__actions__.push({func:nf,args:[u],thisArg:X}),new Y(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(X),n})):this.thru(u)}),Xs=Fu(function(n,t,r){bl.call(n,r)?++n[r]:Br(n,r,1)}),nh=Ju(ho),th=Ju(po),rh=Fu(function(n,t,r){bl.call(n,r)?n[r].push(t):Br(n,r,[t])}),eh=uu(function(t,r,e){var u=-1,i="function"==typeof r,o=Hf(t)?il(t.length):[];
-return ys(t,function(t){o[++u]=i?n(r,t,e):Ie(t,r,e)}),o}),uh=Fu(function(n,t,r){Br(n,r,t)}),ih=Fu(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),oh=uu(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Ui(n,t[0],t[1])?t=[]:r>2&&Ui(t[0],t[1],t[2])&&(t=[t[0]]),He(n,ee(t,1),[])}),fh=Dl||function(){return re.Date.now()},ch=uu(function(n,t,r){var e=_n;if(r.length){var u=N(r,wi(ch));e|=bn}return ai(n,e,t,r,u)}),ah=uu(function(n,t,r){var e=_n|vn;if(r.length){var u=N(r,wi(ah));e|=bn;
-}return ai(t,e,n,r,u)}),lh=uu(function(n,t){return Gr(n,1,t)}),sh=uu(function(n,t,r){return Gr(n,Ic(t)||0,r)});Cf.Cache=sr;var hh=js(function(t,r){r=1==r.length&&bh(r[0])?c(r[0],z(mi())):c(ee(r,1),z(mi()));var e=r.length;return uu(function(u){for(var i=-1,o=Hl(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);return n(t,this,u)})}),ph=uu(function(n,t){return ai(n,bn,X,t,N(t,wi(ph)))}),_h=uu(function(n,t){return ai(n,wn,X,t,N(t,wi(_h)))}),vh=gi(function(n,t){return ai(n,xn,X,X,X,t)}),gh=ii(me),yh=ii(function(n,t){
-return n>=t}),dh=Re(function(){return arguments}())?Re:function(n){return cc(n)&&bl.call(n,"callee")&&!Wl.call(n,"callee")},bh=il.isArray,wh=ce?z(ce):ze,mh=ql||qa,xh=ae?z(ae):Ee,jh=le?z(le):Le,Ah=se?z(se):Be,kh=he?z(he):Te,Oh=pe?z(pe):$e,Ih=ii(Ne),Rh=ii(function(n,t){return n<=t}),zh=Nu(function(n,t){if(Mi(t)||Hf(t))return $u(t,Pc(t),n),X;for(var r in t)bl.call(t,r)&&Sr(n,r,t[r])}),Eh=Nu(function(n,t){$u(t,qc(t),n)}),Sh=Nu(function(n,t,r,e){$u(t,qc(t),n,e)}),Wh=Nu(function(n,t,r,e){$u(t,Pc(t),n,e);
-}),Lh=gi(Tr),Ch=uu(function(n,t){n=ll(n);var r=-1,e=t.length,u=e>2?t[2]:X;for(u&&Ui(t[0],t[1],u)&&(e=1);++r<e;)for(var i=t[r],o=qc(i),f=-1,c=o.length;++f<c;){var a=o[f],l=n[a];(l===X||Gf(l,gl[a])&&!bl.call(n,a))&&(n[a]=i[a])}return n}),Uh=uu(function(t){return t.push(X,si),n(Mh,X,t)}),Bh=Xu(function(n,t,r){null!=t&&"function"!=typeof t.toString&&(t=xl.call(t)),n[t]=r},Sa(La)),Th=Xu(function(n,t,r){null!=t&&"function"!=typeof t.toString&&(t=xl.call(t)),bl.call(n,t)?n[t].push(r):n[t]=[r]},mi),$h=uu(Ie),Dh=Nu(function(n,t,r){
-Ke(n,t,r)}),Mh=Nu(function(n,t,r,e){Ke(n,t,r,e)}),Fh=gi(function(n,t){var r={};if(null==n)return r;var e=!1;t=c(t,function(t){return t=ku(t,n),e||(e=t.length>1),t}),$u(n,di(n),r),e&&(r=Fr(r,an|ln|sn,hi));for(var u=t.length;u--;)yu(r,t[u]);return r}),Nh=gi(function(n,t){return null==n?{}:Je(n,t)}),Ph=ci(Pc),qh=ci(qc),Zh=Vu(function(n,t,r){return t=t.toLowerCase(),n+(r?fa(t):t)}),Kh=Vu(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Vh=Vu(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),Gh=Ku("toLowerCase"),Hh=Vu(function(n,t,r){
-return n+(r?"_":"")+t.toLowerCase()}),Jh=Vu(function(n,t,r){return n+(r?" ":"")+Qh(t)}),Yh=Vu(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),Qh=Ku("toUpperCase"),Xh=uu(function(t,r){try{return n(t,X,r)}catch(n){return rc(n)?n:new fl(n)}}),np=gi(function(n,t){return r(t,function(t){t=no(t),Br(n,t,ch(n[t],n))}),n}),tp=Yu(),rp=Yu(!0),ep=uu(function(n,t){return function(r){return Ie(r,n,t)}}),up=uu(function(n,t){return function(r){return Ie(n,r,t)}}),ip=ti(c),op=ti(u),fp=ti(h),cp=ui(),ap=ui(!0),lp=ni(function(n,t){
-return n+t},0),sp=fi("ceil"),hp=ni(function(n,t){return n/t},1),pp=fi("floor"),_p=ni(function(n,t){return n*t},1),vp=fi("round"),gp=ni(function(n,t){return n-t},0);return Z.after=If,Z.ary=Rf,Z.assign=zh,Z.assignIn=Eh,Z.assignInWith=Sh,Z.assignWith=Wh,Z.at=Lh,Z.before=zf,Z.bind=ch,Z.bindAll=np,Z.bindKey=ah,Z.castArray=Nf,Z.chain=Qo,Z.chunk=uo,Z.compact=io,Z.concat=oo,Z.cond=za,Z.conforms=Ea,Z.constant=Sa,Z.countBy=Xs,Z.create=Sc,Z.curry=Ef,Z.curryRight=Sf,Z.debounce=Wf,Z.defaults=Ch,Z.defaultsDeep=Uh,
-Z.defer=lh,Z.delay=sh,Z.difference=Us,Z.differenceBy=Bs,Z.differenceWith=Ts,Z.drop=fo,Z.dropRight=co,Z.dropRightWhile=ao,Z.dropWhile=lo,Z.fill=so,Z.filter=lf,Z.flatMap=sf,Z.flatMapDeep=hf,Z.flatMapDepth=pf,Z.flatten=_o,Z.flattenDeep=vo,Z.flattenDepth=go,Z.flip=Lf,Z.flow=tp,Z.flowRight=rp,Z.fromPairs=yo,Z.functions=$c,Z.functionsIn=Dc,Z.groupBy=rh,Z.initial=mo,Z.intersection=$s,Z.intersectionBy=Ds,Z.intersectionWith=Ms,Z.invert=Bh,Z.invertBy=Th,Z.invokeMap=eh,Z.iteratee=Ca,Z.keyBy=uh,Z.keys=Pc,Z.keysIn=qc,
-Z.map=yf,Z.mapKeys=Zc,Z.mapValues=Kc,Z.matches=Ua,Z.matchesProperty=Ba,Z.memoize=Cf,Z.merge=Dh,Z.mergeWith=Mh,Z.method=ep,Z.methodOf=up,Z.mixin=Ta,Z.negate=Uf,Z.nthArg=Ma,Z.omit=Fh,Z.omitBy=Vc,Z.once=Bf,Z.orderBy=df,Z.over=ip,Z.overArgs=hh,Z.overEvery=op,Z.overSome=fp,Z.partial=ph,Z.partialRight=_h,Z.partition=ih,Z.pick=Nh,Z.pickBy=Gc,Z.property=Fa,Z.propertyOf=Na,Z.pull=Fs,Z.pullAll=Oo,Z.pullAllBy=Io,Z.pullAllWith=Ro,Z.pullAt=Ns,Z.range=cp,Z.rangeRight=ap,Z.rearg=vh,Z.reject=mf,Z.remove=zo,Z.rest=Tf,
-Z.reverse=Eo,Z.sampleSize=jf,Z.set=Jc,Z.setWith=Yc,Z.shuffle=Af,Z.slice=So,Z.sortBy=oh,Z.sortedUniq=$o,Z.sortedUniqBy=Do,Z.split=da,Z.spread=$f,Z.tail=Mo,Z.take=Fo,Z.takeRight=No,Z.takeRightWhile=Po,Z.takeWhile=qo,Z.tap=Xo,Z.throttle=Df,Z.thru=nf,Z.toArray=jc,Z.toPairs=Ph,Z.toPairsIn=qh,Z.toPath=Ha,Z.toPlainObject=Rc,Z.transform=Qc,Z.unary=Mf,Z.union=Ps,Z.unionBy=qs,Z.unionWith=Zs,Z.uniq=Zo,Z.uniqBy=Ko,Z.uniqWith=Vo,Z.unset=Xc,Z.unzip=Go,Z.unzipWith=Ho,Z.update=na,Z.updateWith=ta,Z.values=ra,Z.valuesIn=ea,
-Z.without=Ks,Z.words=Ra,Z.wrap=Ff,Z.xor=Vs,Z.xorBy=Gs,Z.xorWith=Hs,Z.zip=Js,Z.zipObject=Jo,Z.zipObjectDeep=Yo,Z.zipWith=Ys,Z.entries=Ph,Z.entriesIn=qh,Z.extend=Eh,Z.extendWith=Sh,Ta(Z,Z),Z.add=lp,Z.attempt=Xh,Z.camelCase=Zh,Z.capitalize=fa,Z.ceil=sp,Z.clamp=ua,Z.clone=Pf,Z.cloneDeep=Zf,Z.cloneDeepWith=Kf,Z.cloneWith=qf,Z.conformsTo=Vf,Z.deburr=ca,Z.defaultTo=Wa,Z.divide=hp,Z.endsWith=aa,Z.eq=Gf,Z.escape=la,Z.escapeRegExp=sa,Z.every=af,Z.find=nh,Z.findIndex=ho,Z.findKey=Wc,Z.findLast=th,Z.findLastIndex=po,
-Z.findLastKey=Lc,Z.floor=pp,Z.forEach=_f,Z.forEachRight=vf,Z.forIn=Cc,Z.forInRight=Uc,Z.forOwn=Bc,Z.forOwnRight=Tc,Z.get=Mc,Z.gt=gh,Z.gte=yh,Z.has=Fc,Z.hasIn=Nc,Z.head=bo,Z.identity=La,Z.includes=gf,Z.indexOf=wo,Z.inRange=ia,Z.invoke=$h,Z.isArguments=dh,Z.isArray=bh,Z.isArrayBuffer=wh,Z.isArrayLike=Hf,Z.isArrayLikeObject=Jf,Z.isBoolean=Yf,Z.isBuffer=mh,Z.isDate=xh,Z.isElement=Qf,Z.isEmpty=Xf,Z.isEqual=nc,Z.isEqualWith=tc,Z.isError=rc,Z.isFinite=ec,Z.isFunction=uc,Z.isInteger=ic,Z.isLength=oc,Z.isMap=jh,
-Z.isMatch=ac,Z.isMatchWith=lc,Z.isNaN=sc,Z.isNative=hc,Z.isNil=_c,Z.isNull=pc,Z.isNumber=vc,Z.isObject=fc,Z.isObjectLike=cc,Z.isPlainObject=gc,Z.isRegExp=Ah,Z.isSafeInteger=yc,Z.isSet=kh,Z.isString=dc,Z.isSymbol=bc,Z.isTypedArray=Oh,Z.isUndefined=wc,Z.isWeakMap=mc,Z.isWeakSet=xc,Z.join=xo,Z.kebabCase=Kh,Z.last=jo,Z.lastIndexOf=Ao,Z.lowerCase=Vh,Z.lowerFirst=Gh,Z.lt=Ih,Z.lte=Rh,Z.max=Ya,Z.maxBy=Qa,Z.mean=Xa,Z.meanBy=nl,Z.min=tl,Z.minBy=rl,Z.stubArray=Pa,Z.stubFalse=qa,Z.stubObject=Za,Z.stubString=Ka,
-Z.stubTrue=Va,Z.multiply=_p,Z.nth=ko,Z.noConflict=$a,Z.noop=Da,Z.now=fh,Z.pad=ha,Z.padEnd=pa,Z.padStart=_a,Z.parseInt=va,Z.random=oa,Z.reduce=bf,Z.reduceRight=wf,Z.repeat=ga,Z.replace=ya,Z.result=Hc,Z.round=vp,Z.runInContext=p,Z.sample=xf,Z.size=kf,Z.snakeCase=Hh,Z.some=Of,Z.sortedIndex=Wo,Z.sortedIndexBy=Lo,Z.sortedIndexOf=Co,Z.sortedLastIndex=Uo,Z.sortedLastIndexBy=Bo,Z.sortedLastIndexOf=To,Z.startCase=Jh,Z.startsWith=ba,Z.subtract=gp,Z.sum=el,Z.sumBy=ul,Z.template=wa,Z.times=Ga,Z.toFinite=Ac,Z.toInteger=kc,
-Z.toLength=Oc,Z.toLower=ma,Z.toNumber=Ic,Z.toSafeInteger=zc,Z.toString=Ec,Z.toUpper=xa,Z.trim=ja,Z.trimEnd=Aa,Z.trimStart=ka,Z.truncate=Oa,Z.unescape=Ia,Z.uniqueId=Ja,Z.upperCase=Yh,Z.upperFirst=Qh,Z.each=_f,Z.eachRight=vf,Z.first=bo,Ta(Z,function(){var n={};return ue(Z,function(t,r){bl.call(Z.prototype,r)||(n[r]=t)}),n}(),{chain:!1}),Z.VERSION=nn,r(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){Z[n].placeholder=Z}),r(["drop","take"],function(n,t){Ct.prototype[n]=function(r){
-r=r===X?1:Gl(kc(r),0);var e=this.__filtered__&&!t?new Ct(this):this.clone();return e.__filtered__?e.__takeCount__=Hl(r,e.__takeCount__):e.__views__.push({size:Hl(r,Un),type:n+(e.__dir__<0?"Right":"")}),e},Ct.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),r(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==Rn||r==En;Ct.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:mi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r(["head","last"],function(n,t){
-var r="take"+(t?"Right":"");Ct.prototype[n]=function(){return this[r](1).value()[0]}}),r(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");Ct.prototype[n]=function(){return this.__filtered__?new Ct(this):this[r](1)}}),Ct.prototype.compact=function(){return this.filter(La)},Ct.prototype.find=function(n){return this.filter(n).head()},Ct.prototype.findLast=function(n){return this.reverse().find(n)},Ct.prototype.invokeMap=uu(function(n,t){return"function"==typeof n?new Ct(this):this.map(function(r){
-return Ie(r,n,t)})}),Ct.prototype.reject=function(n){return this.filter(Uf(mi(n)))},Ct.prototype.slice=function(n,t){n=kc(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Ct(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==X&&(t=kc(t),r=t<0?r.dropRight(-t):r.take(t-n)),r)},Ct.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ct.prototype.toArray=function(){return this.take(Un)},ue(Ct.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=Z[e?"take"+("last"==t?"Right":""):t],i=e||/^find/.test(t);
-u&&(Z.prototype[t]=function(){var t=this.__wrapped__,o=e?[1]:arguments,f=t instanceof Ct,c=o[0],l=f||bh(t),s=function(n){var t=u.apply(Z,a([n],o));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(f=l=!1);var h=this.__chain__,p=!!this.__actions__.length,_=i&&!h,v=f&&!p;if(!i&&l){t=v?t:new Ct(this);var g=n.apply(t,o);return g.__actions__.push({func:nf,args:[s],thisArg:X}),new Y(g,h)}return _&&v?n.apply(this,o):(g=this.thru(s),_?e?g.value()[0]:g.value():g)})}),r(["pop","push","shift","sort","splice","unshift"],function(n){
-var t=_l[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);Z.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(bh(u)?u:[],n)}return this[r](function(r){return t.apply(bh(r)?r:[],n)})}}),ue(Ct.prototype,function(n,t){var r=Z[t];if(r){var e=r.name+"";bl.call(fs,e)||(fs[e]=[]),fs[e].push({name:t,func:r})}}),fs[Qu(X,vn).name]=[{name:"wrapper",func:X}],Ct.prototype.clone=$t,Ct.prototype.reverse=Yt,Ct.prototype.value=Qt,Z.prototype.at=Qs,
-Z.prototype.chain=tf,Z.prototype.commit=rf,Z.prototype.next=ef,Z.prototype.plant=of,Z.prototype.reverse=ff,Z.prototype.toJSON=Z.prototype.valueOf=Z.prototype.value=cf,Z.prototype.first=Z.prototype.head,Ul&&(Z.prototype[Ul]=uf),Z},be=de();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(re._=be,define(function(){return be})):ue?((ue.exports=be)._=be,ee._=be):re._=be}).call(this);
Index: ckend/node_modules/lodash/lowerCase.js
===================================================================
--- backend/node_modules/lodash/lowerCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string`, as space separated words, to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.lowerCase('--Foo-Bar--');
- * // => 'foo bar'
- *
- * _.lowerCase('fooBar');
- * // => 'foo bar'
- *
- * _.lowerCase('__FOO_BAR__');
- * // => 'foo bar'
- */
-var lowerCase = createCompounder(function(result, word, index) {
-  return result + (index ? ' ' : '') + word.toLowerCase();
-});
-
-module.exports = lowerCase;
Index: ckend/node_modules/lodash/lowerFirst.js
===================================================================
--- backend/node_modules/lodash/lowerFirst.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createCaseFirst = require('./_createCaseFirst');
-
-/**
- * Converts the first character of `string` to lower case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.lowerFirst('Fred');
- * // => 'fred'
- *
- * _.lowerFirst('FRED');
- * // => 'fRED'
- */
-var lowerFirst = createCaseFirst('toLowerCase');
-
-module.exports = lowerFirst;
Index: ckend/node_modules/lodash/lt.js
===================================================================
--- backend/node_modules/lodash/lt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseLt = require('./_baseLt'),
-    createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is less than `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than `other`,
- *  else `false`.
- * @see _.gt
- * @example
- *
- * _.lt(1, 3);
- * // => true
- *
- * _.lt(3, 3);
- * // => false
- *
- * _.lt(3, 1);
- * // => false
- */
-var lt = createRelationalOperation(baseLt);
-
-module.exports = lt;
Index: ckend/node_modules/lodash/lte.js
===================================================================
--- backend/node_modules/lodash/lte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var createRelationalOperation = require('./_createRelationalOperation');
-
-/**
- * Checks if `value` is less than or equal to `other`.
- *
- * @static
- * @memberOf _
- * @since 3.9.0
- * @category Lang
- * @param {*} value The value to compare.
- * @param {*} other The other value to compare.
- * @returns {boolean} Returns `true` if `value` is less than or equal to
- *  `other`, else `false`.
- * @see _.gte
- * @example
- *
- * _.lte(1, 3);
- * // => true
- *
- * _.lte(3, 3);
- * // => true
- *
- * _.lte(3, 1);
- * // => false
- */
-var lte = createRelationalOperation(function(value, other) {
-  return value <= other;
-});
-
-module.exports = lte;
Index: ckend/node_modules/lodash/map.js
===================================================================
--- backend/node_modules/lodash/map.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIteratee = require('./_baseIteratee'),
-    baseMap = require('./_baseMap'),
-    isArray = require('./isArray');
-
-/**
- * Creates an array of values by running each element in `collection` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
- *
- * The guarded methods are:
- * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
- * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
- * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
- * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new mapped array.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * _.map([4, 8], square);
- * // => [16, 64]
- *
- * _.map({ 'a': 4, 'b': 8 }, square);
- * // => [16, 64] (iteration order is not guaranteed)
- *
- * var users = [
- *   { 'user': 'barney' },
- *   { 'user': 'fred' }
- * ];
- *
- * // The `_.property` iteratee shorthand.
- * _.map(users, 'user');
- * // => ['barney', 'fred']
- */
-function map(collection, iteratee) {
-  var func = isArray(collection) ? arrayMap : baseMap;
-  return func(collection, baseIteratee(iteratee, 3));
-}
-
-module.exports = map;
Index: ckend/node_modules/lodash/mapKeys.js
===================================================================
--- backend/node_modules/lodash/mapKeys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    baseForOwn = require('./_baseForOwn'),
-    baseIteratee = require('./_baseIteratee');
-
-/**
- * The opposite of `_.mapValues`; this method creates an object with the
- * same values as `object` and keys generated by running each own enumerable
- * string keyed property of `object` thru `iteratee`. The iteratee is invoked
- * with three arguments: (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapValues
- * @example
- *
- * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {
- *   return key + value;
- * });
- * // => { 'a1': 1, 'b2': 2 }
- */
-function mapKeys(object, iteratee) {
-  var result = {};
-  iteratee = baseIteratee(iteratee, 3);
-
-  baseForOwn(object, function(value, key, object) {
-    baseAssignValue(result, iteratee(value, key, object), value);
-  });
-  return result;
-}
-
-module.exports = mapKeys;
Index: ckend/node_modules/lodash/mapValues.js
===================================================================
--- backend/node_modules/lodash/mapValues.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var baseAssignValue = require('./_baseAssignValue'),
-    baseForOwn = require('./_baseForOwn'),
-    baseIteratee = require('./_baseIteratee');
-
-/**
- * Creates an object with the same keys as `object` and values generated
- * by running each own enumerable string keyed property of `object` thru
- * `iteratee`. The iteratee is invoked with three arguments:
- * (value, key, object).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Object} Returns the new mapped object.
- * @see _.mapKeys
- * @example
- *
- * var users = {
- *   'fred':    { 'user': 'fred',    'age': 40 },
- *   'pebbles': { 'user': 'pebbles', 'age': 1 }
- * };
- *
- * _.mapValues(users, function(o) { return o.age; });
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- *
- * // The `_.property` iteratee shorthand.
- * _.mapValues(users, 'age');
- * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
- */
-function mapValues(object, iteratee) {
-  var result = {};
-  iteratee = baseIteratee(iteratee, 3);
-
-  baseForOwn(object, function(value, key, object) {
-    baseAssignValue(result, key, iteratee(value, key, object));
-  });
-  return result;
-}
-
-module.exports = mapValues;
Index: ckend/node_modules/lodash/matches.js
===================================================================
--- backend/node_modules/lodash/matches.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var baseClone = require('./_baseClone'),
-    baseMatches = require('./_baseMatches');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that performs a partial deep comparison between a given
- * object and `source`, returning `true` if the given object has equivalent
- * property values, else `false`.
- *
- * **Note:** The created function is equivalent to `_.isMatch` with `source`
- * partially applied.
- *
- * Partial comparisons will match empty array and empty object `source`
- * values against any array or object value, respectively. See `_.isEqual`
- * for a list of supported value comparisons.
- *
- * **Note:** Multiple values can be checked by combining several matchers
- * using `_.overSome`
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} source The object of property values to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- *   { 'a': 1, 'b': 2, 'c': 3 },
- *   { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));
- * // => [{ 'a': 4, 'b': 5, 'c': 6 }]
- *
- * // Checking for several possible values
- * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));
- * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
- */
-function matches(source) {
-  return baseMatches(baseClone(source, CLONE_DEEP_FLAG));
-}
-
-module.exports = matches;
Index: ckend/node_modules/lodash/matchesProperty.js
===================================================================
--- backend/node_modules/lodash/matchesProperty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var baseClone = require('./_baseClone'),
-    baseMatchesProperty = require('./_baseMatchesProperty');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1;
-
-/**
- * Creates a function that performs a partial deep comparison between the
- * value at `path` of a given object to `srcValue`, returning `true` if the
- * object value is equivalent, else `false`.
- *
- * **Note:** Partial comparisons will match empty array and empty object
- * `srcValue` values against any array or object value, respectively. See
- * `_.isEqual` for a list of supported value comparisons.
- *
- * **Note:** Multiple values can be checked by combining several matchers
- * using `_.overSome`
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @param {*} srcValue The value to match.
- * @returns {Function} Returns the new spec function.
- * @example
- *
- * var objects = [
- *   { 'a': 1, 'b': 2, 'c': 3 },
- *   { 'a': 4, 'b': 5, 'c': 6 }
- * ];
- *
- * _.find(objects, _.matchesProperty('a', 4));
- * // => { 'a': 4, 'b': 5, 'c': 6 }
- *
- * // Checking for several possible values
- * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));
- * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]
- */
-function matchesProperty(path, srcValue) {
-  return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));
-}
-
-module.exports = matchesProperty;
Index: ckend/node_modules/lodash/math.js
===================================================================
--- backend/node_modules/lodash/math.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-module.exports = {
-  'add': require('./add'),
-  'ceil': require('./ceil'),
-  'divide': require('./divide'),
-  'floor': require('./floor'),
-  'max': require('./max'),
-  'maxBy': require('./maxBy'),
-  'mean': require('./mean'),
-  'meanBy': require('./meanBy'),
-  'min': require('./min'),
-  'minBy': require('./minBy'),
-  'multiply': require('./multiply'),
-  'round': require('./round'),
-  'subtract': require('./subtract'),
-  'sum': require('./sum'),
-  'sumBy': require('./sumBy')
-};
Index: ckend/node_modules/lodash/max.js
===================================================================
--- backend/node_modules/lodash/max.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseExtremum = require('./_baseExtremum'),
-    baseGt = require('./_baseGt'),
-    identity = require('./identity');
-
-/**
- * Computes the maximum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * _.max([4, 2, 8, 6]);
- * // => 8
- *
- * _.max([]);
- * // => undefined
- */
-function max(array) {
-  return (array && array.length)
-    ? baseExtremum(array, identity, baseGt)
-    : undefined;
-}
-
-module.exports = max;
Index: ckend/node_modules/lodash/maxBy.js
===================================================================
--- backend/node_modules/lodash/maxBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseExtremum = require('./_baseExtremum'),
-    baseGt = require('./_baseGt'),
-    baseIteratee = require('./_baseIteratee');
-
-/**
- * This method is like `_.max` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the maximum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.maxBy(objects, function(o) { return o.n; });
- * // => { 'n': 2 }
- *
- * // The `_.property` iteratee shorthand.
- * _.maxBy(objects, 'n');
- * // => { 'n': 2 }
- */
-function maxBy(array, iteratee) {
-  return (array && array.length)
-    ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt)
-    : undefined;
-}
-
-module.exports = maxBy;
Index: ckend/node_modules/lodash/mean.js
===================================================================
--- backend/node_modules/lodash/mean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseMean = require('./_baseMean'),
-    identity = require('./identity');
-
-/**
- * Computes the mean of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the mean.
- * @example
- *
- * _.mean([4, 2, 8, 6]);
- * // => 5
- */
-function mean(array) {
-  return baseMean(array, identity);
-}
-
-module.exports = mean;
Index: ckend/node_modules/lodash/meanBy.js
===================================================================
--- backend/node_modules/lodash/meanBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseMean = require('./_baseMean');
-
-/**
- * This method is like `_.mean` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be averaged.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the mean.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.meanBy(objects, function(o) { return o.n; });
- * // => 5
- *
- * // The `_.property` iteratee shorthand.
- * _.meanBy(objects, 'n');
- * // => 5
- */
-function meanBy(array, iteratee) {
-  return baseMean(array, baseIteratee(iteratee, 2));
-}
-
-module.exports = meanBy;
Index: ckend/node_modules/lodash/memoize.js
===================================================================
--- backend/node_modules/lodash/memoize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,73 +1,0 @@
-var MapCache = require('./_MapCache');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that memoizes the result of `func`. If `resolver` is
- * provided, it determines the cache key for storing the result based on the
- * arguments provided to the memoized function. By default, the first argument
- * provided to the memoized function is used as the map cache key. The `func`
- * is invoked with the `this` binding of the memoized function.
- *
- * **Note:** The cache is exposed as the `cache` property on the memoized
- * function. Its creation may be customized by replacing the `_.memoize.Cache`
- * constructor with one whose instances implement the
- * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
- * method interface of `clear`, `delete`, `get`, `has`, and `set`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to have its output memoized.
- * @param {Function} [resolver] The function to resolve the cache key.
- * @returns {Function} Returns the new memoized function.
- * @example
- *
- * var object = { 'a': 1, 'b': 2 };
- * var other = { 'c': 3, 'd': 4 };
- *
- * var values = _.memoize(_.values);
- * values(object);
- * // => [1, 2]
- *
- * values(other);
- * // => [3, 4]
- *
- * object.a = 2;
- * values(object);
- * // => [1, 2]
- *
- * // Modify the result cache.
- * values.cache.set(object, ['a', 'b']);
- * values(object);
- * // => ['a', 'b']
- *
- * // Replace `_.memoize.Cache`.
- * _.memoize.Cache = WeakMap;
- */
-function memoize(func, resolver) {
-  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  var memoized = function() {
-    var args = arguments,
-        key = resolver ? resolver.apply(this, args) : args[0],
-        cache = memoized.cache;
-
-    if (cache.has(key)) {
-      return cache.get(key);
-    }
-    var result = func.apply(this, args);
-    memoized.cache = cache.set(key, result) || cache;
-    return result;
-  };
-  memoized.cache = new (memoize.Cache || MapCache);
-  return memoized;
-}
-
-// Expose `MapCache`.
-memoize.Cache = MapCache;
-
-module.exports = memoize;
Index: ckend/node_modules/lodash/merge.js
===================================================================
--- backend/node_modules/lodash/merge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseMerge = require('./_baseMerge'),
-    createAssigner = require('./_createAssigner');
-
-/**
- * This method is like `_.assign` except that it recursively merges own and
- * inherited enumerable string keyed properties of source objects into the
- * destination object. Source properties that resolve to `undefined` are
- * skipped if a destination value exists. Array and plain object properties
- * are merged recursively. Other objects and value types are overridden by
- * assignment. Source objects are applied from left to right. Subsequent
- * sources overwrite property assignments of previous sources.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 0.5.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} [sources] The source objects.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {
- *   'a': [{ 'b': 2 }, { 'd': 4 }]
- * };
- *
- * var other = {
- *   'a': [{ 'c': 3 }, { 'e': 5 }]
- * };
- *
- * _.merge(object, other);
- * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }
- */
-var merge = createAssigner(function(object, source, srcIndex) {
-  baseMerge(object, source, srcIndex);
-});
-
-module.exports = merge;
Index: ckend/node_modules/lodash/mergeWith.js
===================================================================
--- backend/node_modules/lodash/mergeWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseMerge = require('./_baseMerge'),
-    createAssigner = require('./_createAssigner');
-
-/**
- * This method is like `_.merge` except that it accepts `customizer` which
- * is invoked to produce the merged values of the destination and source
- * properties. If `customizer` returns `undefined`, merging is handled by the
- * method instead. The `customizer` is invoked with six arguments:
- * (objValue, srcValue, key, object, source, stack).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The destination object.
- * @param {...Object} sources The source objects.
- * @param {Function} customizer The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * function customizer(objValue, srcValue) {
- *   if (_.isArray(objValue)) {
- *     return objValue.concat(srcValue);
- *   }
- * }
- *
- * var object = { 'a': [1], 'b': [2] };
- * var other = { 'a': [3], 'b': [4] };
- *
- * _.mergeWith(object, other, customizer);
- * // => { 'a': [1, 3], 'b': [2, 4] }
- */
-var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {
-  baseMerge(object, source, srcIndex, customizer);
-});
-
-module.exports = mergeWith;
Index: ckend/node_modules/lodash/method.js
===================================================================
--- backend/node_modules/lodash/method.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseInvoke = require('./_baseInvoke'),
-    baseRest = require('./_baseRest');
-
-/**
- * Creates a function that invokes the method at `path` of a given object.
- * Any additional arguments are provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Array|string} path The path of the method to invoke.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var objects = [
- *   { 'a': { 'b': _.constant(2) } },
- *   { 'a': { 'b': _.constant(1) } }
- * ];
- *
- * _.map(objects, _.method('a.b'));
- * // => [2, 1]
- *
- * _.map(objects, _.method(['a', 'b']));
- * // => [2, 1]
- */
-var method = baseRest(function(path, args) {
-  return function(object) {
-    return baseInvoke(object, path, args);
-  };
-});
-
-module.exports = method;
Index: ckend/node_modules/lodash/methodOf.js
===================================================================
--- backend/node_modules/lodash/methodOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseInvoke = require('./_baseInvoke'),
-    baseRest = require('./_baseRest');
-
-/**
- * The opposite of `_.method`; this method creates a function that invokes
- * the method at a given path of `object`. Any additional arguments are
- * provided to the invoked method.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Util
- * @param {Object} object The object to query.
- * @param {...*} [args] The arguments to invoke the method with.
- * @returns {Function} Returns the new invoker function.
- * @example
- *
- * var array = _.times(3, _.constant),
- *     object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.methodOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.methodOf(object));
- * // => [2, 0]
- */
-var methodOf = baseRest(function(object, args) {
-  return function(path) {
-    return baseInvoke(object, path, args);
-  };
-});
-
-module.exports = methodOf;
Index: ckend/node_modules/lodash/min.js
===================================================================
--- backend/node_modules/lodash/min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseExtremum = require('./_baseExtremum'),
-    baseLt = require('./_baseLt'),
-    identity = require('./identity');
-
-/**
- * Computes the minimum value of `array`. If `array` is empty or falsey,
- * `undefined` is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * _.min([4, 2, 8, 6]);
- * // => 2
- *
- * _.min([]);
- * // => undefined
- */
-function min(array) {
-  return (array && array.length)
-    ? baseExtremum(array, identity, baseLt)
-    : undefined;
-}
-
-module.exports = min;
Index: ckend/node_modules/lodash/minBy.js
===================================================================
--- backend/node_modules/lodash/minBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseExtremum = require('./_baseExtremum'),
-    baseIteratee = require('./_baseIteratee'),
-    baseLt = require('./_baseLt');
-
-/**
- * This method is like `_.min` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * the value is ranked. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {*} Returns the minimum value.
- * @example
- *
- * var objects = [{ 'n': 1 }, { 'n': 2 }];
- *
- * _.minBy(objects, function(o) { return o.n; });
- * // => { 'n': 1 }
- *
- * // The `_.property` iteratee shorthand.
- * _.minBy(objects, 'n');
- * // => { 'n': 1 }
- */
-function minBy(array, iteratee) {
-  return (array && array.length)
-    ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)
-    : undefined;
-}
-
-module.exports = minBy;
Index: ckend/node_modules/lodash/mixin.js
===================================================================
--- backend/node_modules/lodash/mixin.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-var arrayEach = require('./_arrayEach'),
-    arrayPush = require('./_arrayPush'),
-    baseFunctions = require('./_baseFunctions'),
-    copyArray = require('./_copyArray'),
-    isFunction = require('./isFunction'),
-    isObject = require('./isObject'),
-    keys = require('./keys');
-
-/**
- * Adds all own enumerable string keyed function properties of a source
- * object to the destination object. If `object` is a function, then methods
- * are added to its prototype as well.
- *
- * **Note:** Use `_.runInContext` to create a pristine `lodash` function to
- * avoid conflicts caused by modifying the original.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {Function|Object} [object=lodash] The destination object.
- * @param {Object} source The object of functions to add.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.chain=true] Specify whether mixins are chainable.
- * @returns {Function|Object} Returns `object`.
- * @example
- *
- * function vowels(string) {
- *   return _.filter(string, function(v) {
- *     return /[aeiou]/i.test(v);
- *   });
- * }
- *
- * _.mixin({ 'vowels': vowels });
- * _.vowels('fred');
- * // => ['e']
- *
- * _('fred').vowels().value();
- * // => ['e']
- *
- * _.mixin({ 'vowels': vowels }, { 'chain': false });
- * _('fred').vowels();
- * // => ['e']
- */
-function mixin(object, source, options) {
-  var props = keys(source),
-      methodNames = baseFunctions(source, props);
-
-  var chain = !(isObject(options) && 'chain' in options) || !!options.chain,
-      isFunc = isFunction(object);
-
-  arrayEach(methodNames, function(methodName) {
-    var func = source[methodName];
-    object[methodName] = func;
-    if (isFunc) {
-      object.prototype[methodName] = function() {
-        var chainAll = this.__chain__;
-        if (chain || chainAll) {
-          var result = object(this.__wrapped__),
-              actions = result.__actions__ = copyArray(this.__actions__);
-
-          actions.push({ 'func': func, 'args': arguments, 'thisArg': object });
-          result.__chain__ = chainAll;
-          return result;
-        }
-        return func.apply(object, arrayPush([this.value()], arguments));
-      };
-    }
-  });
-
-  return object;
-}
-
-module.exports = mixin;
Index: ckend/node_modules/lodash/multiply.js
===================================================================
--- backend/node_modules/lodash/multiply.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Multiply two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.7.0
- * @category Math
- * @param {number} multiplier The first number in a multiplication.
- * @param {number} multiplicand The second number in a multiplication.
- * @returns {number} Returns the product.
- * @example
- *
- * _.multiply(6, 4);
- * // => 24
- */
-var multiply = createMathOperation(function(multiplier, multiplicand) {
-  return multiplier * multiplicand;
-}, 1);
-
-module.exports = multiply;
Index: ckend/node_modules/lodash/negate.js
===================================================================
--- backend/node_modules/lodash/negate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that negates the result of the predicate `func`. The
- * `func` predicate is invoked with the `this` binding and arguments of the
- * created function.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} predicate The predicate to negate.
- * @returns {Function} Returns the new negated function.
- * @example
- *
- * function isEven(n) {
- *   return n % 2 == 0;
- * }
- *
- * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
- * // => [1, 3, 5]
- */
-function negate(predicate) {
-  if (typeof predicate != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  return function() {
-    var args = arguments;
-    switch (args.length) {
-      case 0: return !predicate.call(this);
-      case 1: return !predicate.call(this, args[0]);
-      case 2: return !predicate.call(this, args[0], args[1]);
-      case 3: return !predicate.call(this, args[0], args[1], args[2]);
-    }
-    return !predicate.apply(this, args);
-  };
-}
-
-module.exports = negate;
Index: ckend/node_modules/lodash/next.js
===================================================================
--- backend/node_modules/lodash/next.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var toArray = require('./toArray');
-
-/**
- * Gets the next value on a wrapped object following the
- * [iterator protocol](https://mdn.io/iteration_protocols#iterator).
- *
- * @name next
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the next iterator value.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 1 }
- *
- * wrapped.next();
- * // => { 'done': false, 'value': 2 }
- *
- * wrapped.next();
- * // => { 'done': true, 'value': undefined }
- */
-function wrapperNext() {
-  if (this.__values__ === undefined) {
-    this.__values__ = toArray(this.value());
-  }
-  var done = this.__index__ >= this.__values__.length,
-      value = done ? undefined : this.__values__[this.__index__++];
-
-  return { 'done': done, 'value': value };
-}
-
-module.exports = wrapperNext;
Index: ckend/node_modules/lodash/noop.js
===================================================================
--- backend/node_modules/lodash/noop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-/**
- * This method returns `undefined`.
- *
- * @static
- * @memberOf _
- * @since 2.3.0
- * @category Util
- * @example
- *
- * _.times(2, _.noop);
- * // => [undefined, undefined]
- */
-function noop() {
-  // No operation performed.
-}
-
-module.exports = noop;
Index: ckend/node_modules/lodash/now.js
===================================================================
--- backend/node_modules/lodash/now.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var root = require('./_root');
-
-/**
- * Gets the timestamp of the number of milliseconds that have elapsed since
- * the Unix epoch (1 January 1970 00:00:00 UTC).
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Date
- * @returns {number} Returns the timestamp.
- * @example
- *
- * _.defer(function(stamp) {
- *   console.log(_.now() - stamp);
- * }, _.now());
- * // => Logs the number of milliseconds it took for the deferred invocation.
- */
-var now = function() {
-  return root.Date.now();
-};
-
-module.exports = now;
Index: ckend/node_modules/lodash/nth.js
===================================================================
--- backend/node_modules/lodash/nth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseNth = require('./_baseNth'),
-    toInteger = require('./toInteger');
-
-/**
- * Gets the element at index `n` of `array`. If `n` is negative, the nth
- * element from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.11.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=0] The index of the element to return.
- * @returns {*} Returns the nth element of `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- *
- * _.nth(array, 1);
- * // => 'b'
- *
- * _.nth(array, -2);
- * // => 'c';
- */
-function nth(array, n) {
-  return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;
-}
-
-module.exports = nth;
Index: ckend/node_modules/lodash/nthArg.js
===================================================================
--- backend/node_modules/lodash/nthArg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseNth = require('./_baseNth'),
-    baseRest = require('./_baseRest'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a function that gets the argument at index `n`. If `n` is negative,
- * the nth argument from the end is returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [n=0] The index of the argument to return.
- * @returns {Function} Returns the new pass-thru function.
- * @example
- *
- * var func = _.nthArg(1);
- * func('a', 'b', 'c', 'd');
- * // => 'b'
- *
- * var func = _.nthArg(-2);
- * func('a', 'b', 'c', 'd');
- * // => 'c'
- */
-function nthArg(n) {
-  n = toInteger(n);
-  return baseRest(function(args) {
-    return baseNth(args, n);
-  });
-}
-
-module.exports = nthArg;
Index: ckend/node_modules/lodash/number.js
===================================================================
--- backend/node_modules/lodash/number.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-module.exports = {
-  'clamp': require('./clamp'),
-  'inRange': require('./inRange'),
-  'random': require('./random')
-};
Index: ckend/node_modules/lodash/object.js
===================================================================
--- backend/node_modules/lodash/object.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-module.exports = {
-  'assign': require('./assign'),
-  'assignIn': require('./assignIn'),
-  'assignInWith': require('./assignInWith'),
-  'assignWith': require('./assignWith'),
-  'at': require('./at'),
-  'create': require('./create'),
-  'defaults': require('./defaults'),
-  'defaultsDeep': require('./defaultsDeep'),
-  'entries': require('./entries'),
-  'entriesIn': require('./entriesIn'),
-  'extend': require('./extend'),
-  'extendWith': require('./extendWith'),
-  'findKey': require('./findKey'),
-  'findLastKey': require('./findLastKey'),
-  'forIn': require('./forIn'),
-  'forInRight': require('./forInRight'),
-  'forOwn': require('./forOwn'),
-  'forOwnRight': require('./forOwnRight'),
-  'functions': require('./functions'),
-  'functionsIn': require('./functionsIn'),
-  'get': require('./get'),
-  'has': require('./has'),
-  'hasIn': require('./hasIn'),
-  'invert': require('./invert'),
-  'invertBy': require('./invertBy'),
-  'invoke': require('./invoke'),
-  'keys': require('./keys'),
-  'keysIn': require('./keysIn'),
-  'mapKeys': require('./mapKeys'),
-  'mapValues': require('./mapValues'),
-  'merge': require('./merge'),
-  'mergeWith': require('./mergeWith'),
-  'omit': require('./omit'),
-  'omitBy': require('./omitBy'),
-  'pick': require('./pick'),
-  'pickBy': require('./pickBy'),
-  'result': require('./result'),
-  'set': require('./set'),
-  'setWith': require('./setWith'),
-  'toPairs': require('./toPairs'),
-  'toPairsIn': require('./toPairsIn'),
-  'transform': require('./transform'),
-  'unset': require('./unset'),
-  'update': require('./update'),
-  'updateWith': require('./updateWith'),
-  'values': require('./values'),
-  'valuesIn': require('./valuesIn')
-};
Index: ckend/node_modules/lodash/omit.js
===================================================================
--- backend/node_modules/lodash/omit.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseClone = require('./_baseClone'),
-    baseUnset = require('./_baseUnset'),
-    castPath = require('./_castPath'),
-    copyObject = require('./_copyObject'),
-    customOmitClone = require('./_customOmitClone'),
-    flatRest = require('./_flatRest'),
-    getAllKeysIn = require('./_getAllKeysIn');
-
-/** Used to compose bitmasks for cloning. */
-var CLONE_DEEP_FLAG = 1,
-    CLONE_FLAT_FLAG = 2,
-    CLONE_SYMBOLS_FLAG = 4;
-
-/**
- * The opposite of `_.pick`; this method creates an object composed of the
- * own and inherited enumerable property paths of `object` that are not omitted.
- *
- * **Note:** This method is considerably slower than `_.pick`.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to omit.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omit(object, ['a', 'c']);
- * // => { 'b': '2' }
- */
-var omit = flatRest(function(object, paths) {
-  var result = {};
-  if (object == null) {
-    return result;
-  }
-  var isDeep = false;
-  paths = arrayMap(paths, function(path) {
-    path = castPath(path, object);
-    isDeep || (isDeep = path.length > 1);
-    return path;
-  });
-  copyObject(object, getAllKeysIn(object), result);
-  if (isDeep) {
-    result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
-  }
-  var length = paths.length;
-  while (length--) {
-    baseUnset(result, paths[length]);
-  }
-  return result;
-});
-
-module.exports = omit;
Index: ckend/node_modules/lodash/omitBy.js
===================================================================
--- backend/node_modules/lodash/omitBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    negate = require('./negate'),
-    pickBy = require('./pickBy');
-
-/**
- * The opposite of `_.pickBy`; this method creates an object composed of
- * the own and inherited enumerable string keyed properties of `object` that
- * `predicate` doesn't return truthy for. The predicate is invoked with two
- * arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.omitBy(object, _.isNumber);
- * // => { 'b': '2' }
- */
-function omitBy(object, predicate) {
-  return pickBy(object, negate(baseIteratee(predicate)));
-}
-
-module.exports = omitBy;
Index: ckend/node_modules/lodash/once.js
===================================================================
--- backend/node_modules/lodash/once.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var before = require('./before');
-
-/**
- * Creates a function that is restricted to invoking `func` once. Repeat calls
- * to the function return the value of the first invocation. The `func` is
- * invoked with the `this` binding and arguments of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to restrict.
- * @returns {Function} Returns the new restricted function.
- * @example
- *
- * var initialize = _.once(createApplication);
- * initialize();
- * initialize();
- * // => `createApplication` is invoked once
- */
-function once(func) {
-  return before(2, func);
-}
-
-module.exports = once;
Index: ckend/node_modules/lodash/orderBy.js
===================================================================
--- backend/node_modules/lodash/orderBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-var baseOrderBy = require('./_baseOrderBy'),
-    isArray = require('./isArray');
-
-/**
- * This method is like `_.sortBy` except that it allows specifying the sort
- * orders of the iteratees to sort by. If `orders` is unspecified, all values
- * are sorted in ascending order. Otherwise, specify an order of "desc" for
- * descending or "asc" for ascending sort order of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
- *  The iteratees to sort by.
- * @param {string[]} [orders] The sort orders of `iteratees`.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 34 },
- *   { 'user': 'fred',   'age': 40 },
- *   { 'user': 'barney', 'age': 36 }
- * ];
- *
- * // Sort by `user` in ascending order and by `age` in descending order.
- * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
- */
-function orderBy(collection, iteratees, orders, guard) {
-  if (collection == null) {
-    return [];
-  }
-  if (!isArray(iteratees)) {
-    iteratees = iteratees == null ? [] : [iteratees];
-  }
-  orders = guard ? undefined : orders;
-  if (!isArray(orders)) {
-    orders = orders == null ? [] : [orders];
-  }
-  return baseOrderBy(collection, iteratees, orders);
-}
-
-module.exports = orderBy;
Index: ckend/node_modules/lodash/over.js
===================================================================
--- backend/node_modules/lodash/over.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    createOver = require('./_createOver');
-
-/**
- * Creates a function that invokes `iteratees` with the arguments it receives
- * and returns their results.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- *  The iteratees to invoke.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.over([Math.max, Math.min]);
- *
- * func(1, 2, 3, 4);
- * // => [4, 1]
- */
-var over = createOver(arrayMap);
-
-module.exports = over;
Index: ckend/node_modules/lodash/overArgs.js
===================================================================
--- backend/node_modules/lodash/overArgs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,61 +1,0 @@
-var apply = require('./_apply'),
-    arrayMap = require('./_arrayMap'),
-    baseFlatten = require('./_baseFlatten'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    baseUnary = require('./_baseUnary'),
-    castRest = require('./_castRest'),
-    isArray = require('./isArray');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Creates a function that invokes `func` with its arguments transformed.
- *
- * @static
- * @since 4.0.0
- * @memberOf _
- * @category Function
- * @param {Function} func The function to wrap.
- * @param {...(Function|Function[])} [transforms=[_.identity]]
- *  The argument transforms.
- * @returns {Function} Returns the new function.
- * @example
- *
- * function doubled(n) {
- *   return n * 2;
- * }
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var func = _.overArgs(function(x, y) {
- *   return [x, y];
- * }, [square, doubled]);
- *
- * func(9, 3);
- * // => [81, 6]
- *
- * func(10, 5);
- * // => [100, 10]
- */
-var overArgs = castRest(function(func, transforms) {
-  transforms = (transforms.length == 1 && isArray(transforms[0]))
-    ? arrayMap(transforms[0], baseUnary(baseIteratee))
-    : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee));
-
-  var funcsLength = transforms.length;
-  return baseRest(function(args) {
-    var index = -1,
-        length = nativeMin(args.length, funcsLength);
-
-    while (++index < length) {
-      args[index] = transforms[index].call(this, args[index]);
-    }
-    return apply(func, this, args);
-  });
-});
-
-module.exports = overArgs;
Index: ckend/node_modules/lodash/overEvery.js
===================================================================
--- backend/node_modules/lodash/overEvery.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var arrayEvery = require('./_arrayEvery'),
-    createOver = require('./_createOver');
-
-/**
- * Creates a function that checks if **all** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * Following shorthands are possible for providing predicates.
- * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
- * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- *  The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overEvery([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => false
- *
- * func(NaN);
- * // => false
- */
-var overEvery = createOver(arrayEvery);
-
-module.exports = overEvery;
Index: ckend/node_modules/lodash/overSome.js
===================================================================
--- backend/node_modules/lodash/overSome.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var arraySome = require('./_arraySome'),
-    createOver = require('./_createOver');
-
-/**
- * Creates a function that checks if **any** of the `predicates` return
- * truthy when invoked with the arguments it receives.
- *
- * Following shorthands are possible for providing predicates.
- * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.
- * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {...(Function|Function[])} [predicates=[_.identity]]
- *  The predicates to check.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var func = _.overSome([Boolean, isFinite]);
- *
- * func('1');
- * // => true
- *
- * func(null);
- * // => true
- *
- * func(NaN);
- * // => false
- *
- * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])
- * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])
- */
-var overSome = createOver(arraySome);
-
-module.exports = overSome;
Index: ckend/node_modules/lodash/package.json
===================================================================
--- backend/node_modules/lodash/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-{
-  "name": "lodash",
-  "version": "4.17.21",
-  "description": "Lodash modular utilities.",
-  "keywords": "modules, stdlib, util",
-  "homepage": "https://lodash.com/",
-  "repository": "lodash/lodash",
-  "icon": "https://lodash.com/icon.svg",
-  "license": "MIT",
-  "main": "lodash.js",
-  "author": "John-David Dalton <john.david.dalton@gmail.com>",
-  "contributors": [
-    "John-David Dalton <john.david.dalton@gmail.com>",
-    "Mathias Bynens <mathias@qiwi.be>"
-  ],
-  "scripts": { "test": "echo \"See https://travis-ci.org/lodash-archive/lodash-cli for testing details.\"" }
-}
Index: ckend/node_modules/lodash/pad.js
===================================================================
--- backend/node_modules/lodash/pad.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var createPadding = require('./_createPadding'),
-    stringSize = require('./_stringSize'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeCeil = Math.ceil,
-    nativeFloor = Math.floor;
-
-/**
- * Pads `string` on the left and right sides if it's shorter than `length`.
- * Padding characters are truncated if they can't be evenly divided by `length`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.pad('abc', 8);
- * // => '  abc   '
- *
- * _.pad('abc', 8, '_-');
- * // => '_-abc_-_'
- *
- * _.pad('abc', 3);
- * // => 'abc'
- */
-function pad(string, length, chars) {
-  string = toString(string);
-  length = toInteger(length);
-
-  var strLength = length ? stringSize(string) : 0;
-  if (!length || strLength >= length) {
-    return string;
-  }
-  var mid = (length - strLength) / 2;
-  return (
-    createPadding(nativeFloor(mid), chars) +
-    string +
-    createPadding(nativeCeil(mid), chars)
-  );
-}
-
-module.exports = pad;
Index: ckend/node_modules/lodash/padEnd.js
===================================================================
--- backend/node_modules/lodash/padEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var createPadding = require('./_createPadding'),
-    stringSize = require('./_stringSize'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/**
- * Pads `string` on the right side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padEnd('abc', 6);
- * // => 'abc   '
- *
- * _.padEnd('abc', 6, '_-');
- * // => 'abc_-_'
- *
- * _.padEnd('abc', 3);
- * // => 'abc'
- */
-function padEnd(string, length, chars) {
-  string = toString(string);
-  length = toInteger(length);
-
-  var strLength = length ? stringSize(string) : 0;
-  return (length && strLength < length)
-    ? (string + createPadding(length - strLength, chars))
-    : string;
-}
-
-module.exports = padEnd;
Index: ckend/node_modules/lodash/padStart.js
===================================================================
--- backend/node_modules/lodash/padStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var createPadding = require('./_createPadding'),
-    stringSize = require('./_stringSize'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/**
- * Pads `string` on the left side if it's shorter than `length`. Padding
- * characters are truncated if they exceed `length`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to pad.
- * @param {number} [length=0] The padding length.
- * @param {string} [chars=' '] The string used as padding.
- * @returns {string} Returns the padded string.
- * @example
- *
- * _.padStart('abc', 6);
- * // => '   abc'
- *
- * _.padStart('abc', 6, '_-');
- * // => '_-_abc'
- *
- * _.padStart('abc', 3);
- * // => 'abc'
- */
-function padStart(string, length, chars) {
-  string = toString(string);
-  length = toInteger(length);
-
-  var strLength = length ? stringSize(string) : 0;
-  return (length && strLength < length)
-    ? (createPadding(length - strLength, chars) + string)
-    : string;
-}
-
-module.exports = padStart;
Index: ckend/node_modules/lodash/parseInt.js
===================================================================
--- backend/node_modules/lodash/parseInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var root = require('./_root'),
-    toString = require('./toString');
-
-/** Used to match leading whitespace. */
-var reTrimStart = /^\s+/;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeParseInt = root.parseInt;
-
-/**
- * Converts `string` to an integer of the specified radix. If `radix` is
- * `undefined` or `0`, a `radix` of `10` is used unless `value` is a
- * hexadecimal, in which case a `radix` of `16` is used.
- *
- * **Note:** This method aligns with the
- * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.
- *
- * @static
- * @memberOf _
- * @since 1.1.0
- * @category String
- * @param {string} string The string to convert.
- * @param {number} [radix=10] The radix to interpret `value` by.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.parseInt('08');
- * // => 8
- *
- * _.map(['6', '08', '10'], _.parseInt);
- * // => [6, 8, 10]
- */
-function parseInt(string, radix, guard) {
-  if (guard || radix == null) {
-    radix = 0;
-  } else if (radix) {
-    radix = +radix;
-  }
-  return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);
-}
-
-module.exports = parseInt;
Index: ckend/node_modules/lodash/partial.js
===================================================================
--- backend/node_modules/lodash/partial.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-var baseRest = require('./_baseRest'),
-    createWrap = require('./_createWrap'),
-    getHolder = require('./_getHolder'),
-    replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_PARTIAL_FLAG = 32;
-
-/**
- * Creates a function that invokes `func` with `partials` prepended to the
- * arguments it receives. This method is like `_.bind` except it does **not**
- * alter the `this` binding.
- *
- * The `_.partial.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 0.2.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- *   return greeting + ' ' + name;
- * }
- *
- * var sayHelloTo = _.partial(greet, 'hello');
- * sayHelloTo('fred');
- * // => 'hello fred'
- *
- * // Partially applied with placeholders.
- * var greetFred = _.partial(greet, _, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- */
-var partial = baseRest(function(func, partials) {
-  var holders = replaceHolders(partials, getHolder(partial));
-  return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);
-});
-
-// Assign default placeholders.
-partial.placeholder = {};
-
-module.exports = partial;
Index: ckend/node_modules/lodash/partialRight.js
===================================================================
--- backend/node_modules/lodash/partialRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var baseRest = require('./_baseRest'),
-    createWrap = require('./_createWrap'),
-    getHolder = require('./_getHolder'),
-    replaceHolders = require('./_replaceHolders');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_PARTIAL_RIGHT_FLAG = 64;
-
-/**
- * This method is like `_.partial` except that partially applied arguments
- * are appended to the arguments it receives.
- *
- * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic
- * builds, may be used as a placeholder for partially applied arguments.
- *
- * **Note:** This method doesn't set the "length" property of partially
- * applied functions.
- *
- * @static
- * @memberOf _
- * @since 1.0.0
- * @category Function
- * @param {Function} func The function to partially apply arguments to.
- * @param {...*} [partials] The arguments to be partially applied.
- * @returns {Function} Returns the new partially applied function.
- * @example
- *
- * function greet(greeting, name) {
- *   return greeting + ' ' + name;
- * }
- *
- * var greetFred = _.partialRight(greet, 'fred');
- * greetFred('hi');
- * // => 'hi fred'
- *
- * // Partially applied with placeholders.
- * var sayHelloTo = _.partialRight(greet, 'hello', _);
- * sayHelloTo('fred');
- * // => 'hello fred'
- */
-var partialRight = baseRest(function(func, partials) {
-  var holders = replaceHolders(partials, getHolder(partialRight));
-  return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);
-});
-
-// Assign default placeholders.
-partialRight.placeholder = {};
-
-module.exports = partialRight;
Index: ckend/node_modules/lodash/partition.js
===================================================================
--- backend/node_modules/lodash/partition.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var createAggregator = require('./_createAggregator');
-
-/**
- * Creates an array of elements split into two groups, the first of which
- * contains elements `predicate` returns truthy for, the second of which
- * contains elements `predicate` returns falsey for. The predicate is
- * invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of grouped elements.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'age': 36, 'active': false },
- *   { 'user': 'fred',    'age': 40, 'active': true },
- *   { 'user': 'pebbles', 'age': 1,  'active': false }
- * ];
- *
- * _.partition(users, function(o) { return o.active; });
- * // => objects for [['fred'], ['barney', 'pebbles']]
- *
- * // The `_.matches` iteratee shorthand.
- * _.partition(users, { 'age': 1, 'active': false });
- * // => objects for [['pebbles'], ['barney', 'fred']]
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.partition(users, ['active', false]);
- * // => objects for [['barney', 'pebbles'], ['fred']]
- *
- * // The `_.property` iteratee shorthand.
- * _.partition(users, 'active');
- * // => objects for [['fred'], ['barney', 'pebbles']]
- */
-var partition = createAggregator(function(result, value, key) {
-  result[key ? 0 : 1].push(value);
-}, function() { return [[], []]; });
-
-module.exports = partition;
Index: ckend/node_modules/lodash/pick.js
===================================================================
--- backend/node_modules/lodash/pick.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var basePick = require('./_basePick'),
-    flatRest = require('./_flatRest');
-
-/**
- * Creates an object composed of the picked `object` properties.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The source object.
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pick(object, ['a', 'c']);
- * // => { 'a': 1, 'c': 3 }
- */
-var pick = flatRest(function(object, paths) {
-  return object == null ? {} : basePick(object, paths);
-});
-
-module.exports = pick;
Index: ckend/node_modules/lodash/pickBy.js
===================================================================
--- backend/node_modules/lodash/pickBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseIteratee = require('./_baseIteratee'),
-    basePickBy = require('./_basePickBy'),
-    getAllKeysIn = require('./_getAllKeysIn');
-
-/**
- * Creates an object composed of the `object` properties `predicate` returns
- * truthy for. The predicate is invoked with two arguments: (value, key).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The source object.
- * @param {Function} [predicate=_.identity] The function invoked per property.
- * @returns {Object} Returns the new object.
- * @example
- *
- * var object = { 'a': 1, 'b': '2', 'c': 3 };
- *
- * _.pickBy(object, _.isNumber);
- * // => { 'a': 1, 'c': 3 }
- */
-function pickBy(object, predicate) {
-  if (object == null) {
-    return {};
-  }
-  var props = arrayMap(getAllKeysIn(object), function(prop) {
-    return [prop];
-  });
-  predicate = baseIteratee(predicate);
-  return basePickBy(object, props, function(value, path) {
-    return predicate(value, path[0]);
-  });
-}
-
-module.exports = pickBy;
Index: ckend/node_modules/lodash/plant.js
===================================================================
--- backend/node_modules/lodash/plant.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-var baseLodash = require('./_baseLodash'),
-    wrapperClone = require('./_wrapperClone');
-
-/**
- * Creates a clone of the chain sequence planting `value` as the wrapped value.
- *
- * @name plant
- * @memberOf _
- * @since 3.2.0
- * @category Seq
- * @param {*} value The value to plant.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var wrapped = _([1, 2]).map(square);
- * var other = wrapped.plant([3, 4]);
- *
- * other.value();
- * // => [9, 16]
- *
- * wrapped.value();
- * // => [1, 4]
- */
-function wrapperPlant(value) {
-  var result,
-      parent = this;
-
-  while (parent instanceof baseLodash) {
-    var clone = wrapperClone(parent);
-    clone.__index__ = 0;
-    clone.__values__ = undefined;
-    if (result) {
-      previous.__wrapped__ = clone;
-    } else {
-      result = clone;
-    }
-    var previous = clone;
-    parent = parent.__wrapped__;
-  }
-  previous.__wrapped__ = value;
-  return result;
-}
-
-module.exports = wrapperPlant;
Index: ckend/node_modules/lodash/property.js
===================================================================
--- backend/node_modules/lodash/property.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseProperty = require('./_baseProperty'),
-    basePropertyDeep = require('./_basePropertyDeep'),
-    isKey = require('./_isKey'),
-    toKey = require('./_toKey');
-
-/**
- * Creates a function that returns the value at `path` of a given object.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Util
- * @param {Array|string} path The path of the property to get.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var objects = [
- *   { 'a': { 'b': 2 } },
- *   { 'a': { 'b': 1 } }
- * ];
- *
- * _.map(objects, _.property('a.b'));
- * // => [2, 1]
- *
- * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
- * // => [1, 2]
- */
-function property(path) {
-  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
-}
-
-module.exports = property;
Index: ckend/node_modules/lodash/propertyOf.js
===================================================================
--- backend/node_modules/lodash/propertyOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var baseGet = require('./_baseGet');
-
-/**
- * The opposite of `_.property`; this method creates a function that returns
- * the value at a given path of `object`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Util
- * @param {Object} object The object to query.
- * @returns {Function} Returns the new accessor function.
- * @example
- *
- * var array = [0, 1, 2],
- *     object = { 'a': array, 'b': array, 'c': array };
- *
- * _.map(['a[2]', 'c[0]'], _.propertyOf(object));
- * // => [2, 0]
- *
- * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));
- * // => [2, 0]
- */
-function propertyOf(object) {
-  return function(path) {
-    return object == null ? undefined : baseGet(object, path);
-  };
-}
-
-module.exports = propertyOf;
Index: ckend/node_modules/lodash/pull.js
===================================================================
--- backend/node_modules/lodash/pull.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var baseRest = require('./_baseRest'),
-    pullAll = require('./pullAll');
-
-/**
- * Removes all given values from `array` using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`
- * to remove elements from an array by predicate.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...*} [values] The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pull(array, 'a', 'c');
- * console.log(array);
- * // => ['b', 'b']
- */
-var pull = baseRest(pullAll);
-
-module.exports = pull;
Index: ckend/node_modules/lodash/pullAll.js
===================================================================
--- backend/node_modules/lodash/pullAll.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pull` except that it accepts an array of values to remove.
- *
- * **Note:** Unlike `_.difference`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = ['a', 'b', 'c', 'a', 'b', 'c'];
- *
- * _.pullAll(array, ['a', 'c']);
- * console.log(array);
- * // => ['b', 'b']
- */
-function pullAll(array, values) {
-  return (array && array.length && values && values.length)
-    ? basePullAll(array, values)
-    : array;
-}
-
-module.exports = pullAll;
Index: ckend/node_modules/lodash/pullAllBy.js
===================================================================
--- backend/node_modules/lodash/pullAllBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pullAll` except that it accepts `iteratee` which is
- * invoked for each element of `array` and `values` to generate the criterion
- * by which they're compared. The iteratee is invoked with one argument: (value).
- *
- * **Note:** Unlike `_.differenceBy`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];
- *
- * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');
- * console.log(array);
- * // => [{ 'x': 2 }]
- */
-function pullAllBy(array, values, iteratee) {
-  return (array && array.length && values && values.length)
-    ? basePullAll(array, values, baseIteratee(iteratee, 2))
-    : array;
-}
-
-module.exports = pullAllBy;
Index: ckend/node_modules/lodash/pullAllWith.js
===================================================================
--- backend/node_modules/lodash/pullAllWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var basePullAll = require('./_basePullAll');
-
-/**
- * This method is like `_.pullAll` except that it accepts `comparator` which
- * is invoked to compare elements of `array` to `values`. The comparator is
- * invoked with two arguments: (arrVal, othVal).
- *
- * **Note:** Unlike `_.differenceWith`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Array} values The values to remove.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];
- *
- * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);
- * console.log(array);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]
- */
-function pullAllWith(array, values, comparator) {
-  return (array && array.length && values && values.length)
-    ? basePullAll(array, values, undefined, comparator)
-    : array;
-}
-
-module.exports = pullAllWith;
Index: ckend/node_modules/lodash/pullAt.js
===================================================================
--- backend/node_modules/lodash/pullAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    baseAt = require('./_baseAt'),
-    basePullAt = require('./_basePullAt'),
-    compareAscending = require('./_compareAscending'),
-    flatRest = require('./_flatRest'),
-    isIndex = require('./_isIndex');
-
-/**
- * Removes elements from `array` corresponding to `indexes` and returns an
- * array of removed elements.
- *
- * **Note:** Unlike `_.at`, this method mutates `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {...(number|number[])} [indexes] The indexes of elements to remove.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = ['a', 'b', 'c', 'd'];
- * var pulled = _.pullAt(array, [1, 3]);
- *
- * console.log(array);
- * // => ['a', 'c']
- *
- * console.log(pulled);
- * // => ['b', 'd']
- */
-var pullAt = flatRest(function(array, indexes) {
-  var length = array == null ? 0 : array.length,
-      result = baseAt(array, indexes);
-
-  basePullAt(array, arrayMap(indexes, function(index) {
-    return isIndex(index, length) ? +index : index;
-  }).sort(compareAscending));
-
-  return result;
-});
-
-module.exports = pullAt;
Index: ckend/node_modules/lodash/random.js
===================================================================
--- backend/node_modules/lodash/random.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-var baseRandom = require('./_baseRandom'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toFinite = require('./toFinite');
-
-/** Built-in method references without a dependency on `root`. */
-var freeParseFloat = parseFloat;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min,
-    nativeRandom = Math.random;
-
-/**
- * Produces a random number between the inclusive `lower` and `upper` bounds.
- * If only one argument is provided a number between `0` and the given number
- * is returned. If `floating` is `true`, or either `lower` or `upper` are
- * floats, a floating-point number is returned instead of an integer.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @memberOf _
- * @since 0.7.0
- * @category Number
- * @param {number} [lower=0] The lower bound.
- * @param {number} [upper=1] The upper bound.
- * @param {boolean} [floating] Specify returning a floating-point number.
- * @returns {number} Returns the random number.
- * @example
- *
- * _.random(0, 5);
- * // => an integer between 0 and 5
- *
- * _.random(5);
- * // => also an integer between 0 and 5
- *
- * _.random(5, true);
- * // => a floating-point number between 0 and 5
- *
- * _.random(1.2, 5.2);
- * // => a floating-point number between 1.2 and 5.2
- */
-function random(lower, upper, floating) {
-  if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {
-    upper = floating = undefined;
-  }
-  if (floating === undefined) {
-    if (typeof upper == 'boolean') {
-      floating = upper;
-      upper = undefined;
-    }
-    else if (typeof lower == 'boolean') {
-      floating = lower;
-      lower = undefined;
-    }
-  }
-  if (lower === undefined && upper === undefined) {
-    lower = 0;
-    upper = 1;
-  }
-  else {
-    lower = toFinite(lower);
-    if (upper === undefined) {
-      upper = lower;
-      lower = 0;
-    } else {
-      upper = toFinite(upper);
-    }
-  }
-  if (lower > upper) {
-    var temp = lower;
-    lower = upper;
-    upper = temp;
-  }
-  if (floating || lower % 1 || upper % 1) {
-    var rand = nativeRandom();
-    return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);
-  }
-  return baseRandom(lower, upper);
-}
-
-module.exports = random;
Index: ckend/node_modules/lodash/range.js
===================================================================
--- backend/node_modules/lodash/range.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var createRange = require('./_createRange');
-
-/**
- * Creates an array of numbers (positive and/or negative) progressing from
- * `start` up to, but not including, `end`. A step of `-1` is used if a negative
- * `start` is specified without an `end` or `step`. If `end` is not specified,
- * it's set to `start` with `start` then set to `0`.
- *
- * **Note:** JavaScript follows the IEEE-754 standard for resolving
- * floating-point values which can produce unexpected results.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.rangeRight
- * @example
- *
- * _.range(4);
- * // => [0, 1, 2, 3]
- *
- * _.range(-4);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 5);
- * // => [1, 2, 3, 4]
- *
- * _.range(0, 20, 5);
- * // => [0, 5, 10, 15]
- *
- * _.range(0, -4, -1);
- * // => [0, -1, -2, -3]
- *
- * _.range(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.range(0);
- * // => []
- */
-var range = createRange();
-
-module.exports = range;
Index: ckend/node_modules/lodash/rangeRight.js
===================================================================
--- backend/node_modules/lodash/rangeRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var createRange = require('./_createRange');
-
-/**
- * This method is like `_.range` except that it populates values in
- * descending order.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {number} [start=0] The start of the range.
- * @param {number} end The end of the range.
- * @param {number} [step=1] The value to increment or decrement by.
- * @returns {Array} Returns the range of numbers.
- * @see _.inRange, _.range
- * @example
- *
- * _.rangeRight(4);
- * // => [3, 2, 1, 0]
- *
- * _.rangeRight(-4);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 5);
- * // => [4, 3, 2, 1]
- *
- * _.rangeRight(0, 20, 5);
- * // => [15, 10, 5, 0]
- *
- * _.rangeRight(0, -4, -1);
- * // => [-3, -2, -1, 0]
- *
- * _.rangeRight(1, 4, 0);
- * // => [1, 1, 1]
- *
- * _.rangeRight(0);
- * // => []
- */
-var rangeRight = createRange(true);
-
-module.exports = rangeRight;
Index: ckend/node_modules/lodash/rearg.js
===================================================================
--- backend/node_modules/lodash/rearg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var createWrap = require('./_createWrap'),
-    flatRest = require('./_flatRest');
-
-/** Used to compose bitmasks for function metadata. */
-var WRAP_REARG_FLAG = 256;
-
-/**
- * Creates a function that invokes `func` with arguments arranged according
- * to the specified `indexes` where the argument value at the first index is
- * provided as the first argument, the argument value at the second index is
- * provided as the second argument, and so on.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Function
- * @param {Function} func The function to rearrange arguments for.
- * @param {...(number|number[])} indexes The arranged argument indexes.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var rearged = _.rearg(function(a, b, c) {
- *   return [a, b, c];
- * }, [2, 0, 1]);
- *
- * rearged('b', 'c', 'a')
- * // => ['a', 'b', 'c']
- */
-var rearg = flatRest(function(func, indexes) {
-  return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);
-});
-
-module.exports = rearg;
Index: ckend/node_modules/lodash/reduce.js
===================================================================
--- backend/node_modules/lodash/reduce.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-var arrayReduce = require('./_arrayReduce'),
-    baseEach = require('./_baseEach'),
-    baseIteratee = require('./_baseIteratee'),
-    baseReduce = require('./_baseReduce'),
-    isArray = require('./isArray');
-
-/**
- * Reduces `collection` to a value which is the accumulated result of running
- * each element in `collection` thru `iteratee`, where each successive
- * invocation is supplied the return value of the previous. If `accumulator`
- * is not given, the first element of `collection` is used as the initial
- * value. The iteratee is invoked with four arguments:
- * (accumulator, value, index|key, collection).
- *
- * Many lodash methods are guarded to work as iteratees for methods like
- * `_.reduce`, `_.reduceRight`, and `_.transform`.
- *
- * The guarded methods are:
- * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
- * and `sortBy`
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduceRight
- * @example
- *
- * _.reduce([1, 2], function(sum, n) {
- *   return sum + n;
- * }, 0);
- * // => 3
- *
- * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- *   (result[value] || (result[value] = [])).push(key);
- *   return result;
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
- */
-function reduce(collection, iteratee, accumulator) {
-  var func = isArray(collection) ? arrayReduce : baseReduce,
-      initAccum = arguments.length < 3;
-
-  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
-}
-
-module.exports = reduce;
Index: ckend/node_modules/lodash/reduceRight.js
===================================================================
--- backend/node_modules/lodash/reduceRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var arrayReduceRight = require('./_arrayReduceRight'),
-    baseEachRight = require('./_baseEachRight'),
-    baseIteratee = require('./_baseIteratee'),
-    baseReduce = require('./_baseReduce'),
-    isArray = require('./isArray');
-
-/**
- * This method is like `_.reduce` except that it iterates over elements of
- * `collection` from right to left.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The initial value.
- * @returns {*} Returns the accumulated value.
- * @see _.reduce
- * @example
- *
- * var array = [[0, 1], [2, 3], [4, 5]];
- *
- * _.reduceRight(array, function(flattened, other) {
- *   return flattened.concat(other);
- * }, []);
- * // => [4, 5, 2, 3, 0, 1]
- */
-function reduceRight(collection, iteratee, accumulator) {
-  var func = isArray(collection) ? arrayReduceRight : baseReduce,
-      initAccum = arguments.length < 3;
-
-  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);
-}
-
-module.exports = reduceRight;
Index: ckend/node_modules/lodash/reject.js
===================================================================
--- backend/node_modules/lodash/reject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    baseFilter = require('./_baseFilter'),
-    baseIteratee = require('./_baseIteratee'),
-    isArray = require('./isArray'),
-    negate = require('./negate');
-
-/**
- * The opposite of `_.filter`; this method returns the elements of `collection`
- * that `predicate` does **not** return truthy for.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new filtered array.
- * @see _.filter
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36, 'active': false },
- *   { 'user': 'fred',   'age': 40, 'active': true }
- * ];
- *
- * _.reject(users, function(o) { return !o.active; });
- * // => objects for ['fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.reject(users, { 'age': 40, 'active': true });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.reject(users, ['active', false]);
- * // => objects for ['fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.reject(users, 'active');
- * // => objects for ['barney']
- */
-function reject(collection, predicate) {
-  var func = isArray(collection) ? arrayFilter : baseFilter;
-  return func(collection, negate(baseIteratee(predicate, 3)));
-}
-
-module.exports = reject;
Index: ckend/node_modules/lodash/release.md
===================================================================
--- backend/node_modules/lodash/release.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-npm run build
-npm run doc
-npm i
-git clone --depth=10 --branch=master git@github.com:lodash-archive/lodash-cli.git ./node_modules/lodash-cli
-mkdir -p ./node_modules/lodash-cli/node_modules/lodash; cd $_; cp ../../../../lodash.js ./lodash.js; cp ../../../../package.json ./package.json
-cd ../../; npm i --production; cd ../../
-node ./node_modules/lodash-cli/bin/lodash core exports=node -o ./npm-package/core.js
-node ./node_modules/lodash-cli/bin/lodash modularize exports=node -o ./npm-package
-cp lodash.js npm-package/lodash.js
-cp dist/lodash.min.js npm-package/lodash.min.js
-cp LICENSE npm-package/LICENSE
-
-1. Clone two repos
-Bump lodash version in package.json, readme, package=locak, lodash.js
-npm run build
-npm run doc
-
-2. update mappings in ldoash-cli
-3. copy ldoash into lodash-cli node modules and package json.
-
-node ./node_modules/lodash-cli/bin/lodash core exports=node -o ./npm-package/core.js
-node ./node_modules/lodash-cli/bin/lodash modularize exports=node -o ./npm-package
-
-
-
-1. Clone the two repositories:
-```sh
-$ git clone https://github.com/lodash/lodash.git
-$ git clone https://github.com/bnjmnt4n/lodash-cli.git
-```
-2. Update lodash-cli to accomdate changes in lodash source. This can typically involve adding new function dependency mappings in lib/mappings.js. Sometimes, additional changes might be needed for more involved functions.
-3. In the lodash repository, update references to the lodash version in README.md, lodash.js, package.jsona nd package-lock.json
-4. Run:
-```sh
-npm run build
-npm run doc
-node ../lodash-cli/bin/lodash core -o ./dist/lodash.core.js
-```
-5. Add a commit and tag the release
-mkdir ../lodash-temp
-cp lodash.js dist/lodash.min.js dist/lodash.core.js dist/lodash.core.min.js ../lodash-temp/
-node ../lodash-cli/bin/lodash modularize exports=node -o .
-cp ../lodash-temp/lodash.core.js core.js
-cp ../lodash-temp/lodash.core.min.js core.min.js
-cp ../lodash-temp/lodash.js lodash.js
-cp ../lodash-temp/lodash.min.js lodash.min.js
-
-❯ node ../lodash-cli/bin/lodash modularize exports=es -o .
Index: ckend/node_modules/lodash/remove.js
===================================================================
--- backend/node_modules/lodash/remove.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    basePullAt = require('./_basePullAt');
-
-/**
- * Removes all elements from `array` that `predicate` returns truthy for
- * and returns an array of the removed elements. The predicate is invoked
- * with three arguments: (value, index, array).
- *
- * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`
- * to pull elements from an array by value.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the new array of removed elements.
- * @example
- *
- * var array = [1, 2, 3, 4];
- * var evens = _.remove(array, function(n) {
- *   return n % 2 == 0;
- * });
- *
- * console.log(array);
- * // => [1, 3]
- *
- * console.log(evens);
- * // => [2, 4]
- */
-function remove(array, predicate) {
-  var result = [];
-  if (!(array && array.length)) {
-    return result;
-  }
-  var index = -1,
-      indexes = [],
-      length = array.length;
-
-  predicate = baseIteratee(predicate, 3);
-  while (++index < length) {
-    var value = array[index];
-    if (predicate(value, index, array)) {
-      result.push(value);
-      indexes.push(index);
-    }
-  }
-  basePullAt(array, indexes);
-  return result;
-}
-
-module.exports = remove;
Index: ckend/node_modules/lodash/repeat.js
===================================================================
--- backend/node_modules/lodash/repeat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseRepeat = require('./_baseRepeat'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/**
- * Repeats the given string `n` times.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to repeat.
- * @param {number} [n=1] The number of times to repeat the string.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the repeated string.
- * @example
- *
- * _.repeat('*', 3);
- * // => '***'
- *
- * _.repeat('abc', 2);
- * // => 'abcabc'
- *
- * _.repeat('abc', 0);
- * // => ''
- */
-function repeat(string, n, guard) {
-  if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {
-    n = 1;
-  } else {
-    n = toInteger(n);
-  }
-  return baseRepeat(toString(string), n);
-}
-
-module.exports = repeat;
Index: ckend/node_modules/lodash/replace.js
===================================================================
--- backend/node_modules/lodash/replace.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var toString = require('./toString');
-
-/**
- * Replaces matches for `pattern` in `string` with `replacement`.
- *
- * **Note:** This method is based on
- * [`String#replace`](https://mdn.io/String/replace).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to modify.
- * @param {RegExp|string} pattern The pattern to replace.
- * @param {Function|string} replacement The match replacement.
- * @returns {string} Returns the modified string.
- * @example
- *
- * _.replace('Hi Fred', 'Fred', 'Barney');
- * // => 'Hi Barney'
- */
-function replace() {
-  var args = arguments,
-      string = toString(args[0]);
-
-  return args.length < 3 ? string : string.replace(args[1], args[2]);
-}
-
-module.exports = replace;
Index: ckend/node_modules/lodash/rest.js
===================================================================
--- backend/node_modules/lodash/rest.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-var baseRest = require('./_baseRest'),
-    toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * created function and arguments from `start` and beyond provided as
- * an array.
- *
- * **Note:** This method is based on the
- * [rest parameter](https://mdn.io/rest_parameters).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to apply a rest parameter to.
- * @param {number} [start=func.length-1] The start position of the rest parameter.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.rest(function(what, names) {
- *   return what + ' ' + _.initial(names).join(', ') +
- *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
- * });
- *
- * say('hello', 'fred', 'barney', 'pebbles');
- * // => 'hello fred, barney, & pebbles'
- */
-function rest(func, start) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  start = start === undefined ? start : toInteger(start);
-  return baseRest(func, start);
-}
-
-module.exports = rest;
Index: ckend/node_modules/lodash/result.js
===================================================================
--- backend/node_modules/lodash/result.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var castPath = require('./_castPath'),
-    isFunction = require('./isFunction'),
-    toKey = require('./_toKey');
-
-/**
- * This method is like `_.get` except that if the resolved value is a
- * function it's invoked with the `this` binding of its parent object and
- * its result is returned.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @param {Array|string} path The path of the property to resolve.
- * @param {*} [defaultValue] The value returned for `undefined` resolved values.
- * @returns {*} Returns the resolved value.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };
- *
- * _.result(object, 'a[0].b.c1');
- * // => 3
- *
- * _.result(object, 'a[0].b.c2');
- * // => 4
- *
- * _.result(object, 'a[0].b.c3', 'default');
- * // => 'default'
- *
- * _.result(object, 'a[0].b.c3', _.constant('default'));
- * // => 'default'
- */
-function result(object, path, defaultValue) {
-  path = castPath(path, object);
-
-  var index = -1,
-      length = path.length;
-
-  // Ensure the loop is entered when path is empty.
-  if (!length) {
-    length = 1;
-    object = undefined;
-  }
-  while (++index < length) {
-    var value = object == null ? undefined : object[toKey(path[index])];
-    if (value === undefined) {
-      index = length;
-      value = defaultValue;
-    }
-    object = isFunction(value) ? value.call(object) : value;
-  }
-  return object;
-}
-
-module.exports = result;
Index: ckend/node_modules/lodash/reverse.js
===================================================================
--- backend/node_modules/lodash/reverse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-/** Used for built-in method references. */
-var arrayProto = Array.prototype;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeReverse = arrayProto.reverse;
-
-/**
- * Reverses `array` so that the first element becomes the last, the second
- * element becomes the second to last, and so on.
- *
- * **Note:** This method mutates `array` and is based on
- * [`Array#reverse`](https://mdn.io/Array/reverse).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to modify.
- * @returns {Array} Returns `array`.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _.reverse(array);
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
-function reverse(array) {
-  return array == null ? array : nativeReverse.call(array);
-}
-
-module.exports = reverse;
Index: ckend/node_modules/lodash/round.js
===================================================================
--- backend/node_modules/lodash/round.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var createRound = require('./_createRound');
-
-/**
- * Computes `number` rounded to `precision`.
- *
- * @static
- * @memberOf _
- * @since 3.10.0
- * @category Math
- * @param {number} number The number to round.
- * @param {number} [precision=0] The precision to round to.
- * @returns {number} Returns the rounded number.
- * @example
- *
- * _.round(4.006);
- * // => 4
- *
- * _.round(4.006, 2);
- * // => 4.01
- *
- * _.round(4060, -2);
- * // => 4100
- */
-var round = createRound('round');
-
-module.exports = round;
Index: ckend/node_modules/lodash/sample.js
===================================================================
--- backend/node_modules/lodash/sample.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var arraySample = require('./_arraySample'),
-    baseSample = require('./_baseSample'),
-    isArray = require('./isArray');
-
-/**
- * Gets a random element from `collection`.
- *
- * @static
- * @memberOf _
- * @since 2.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @returns {*} Returns the random element.
- * @example
- *
- * _.sample([1, 2, 3, 4]);
- * // => 2
- */
-function sample(collection) {
-  var func = isArray(collection) ? arraySample : baseSample;
-  return func(collection);
-}
-
-module.exports = sample;
Index: ckend/node_modules/lodash/sampleSize.js
===================================================================
--- backend/node_modules/lodash/sampleSize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var arraySampleSize = require('./_arraySampleSize'),
-    baseSampleSize = require('./_baseSampleSize'),
-    isArray = require('./isArray'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toInteger = require('./toInteger');
-
-/**
- * Gets `n` random elements at unique keys from `collection` up to the
- * size of `collection`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Collection
- * @param {Array|Object} collection The collection to sample.
- * @param {number} [n=1] The number of elements to sample.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the random elements.
- * @example
- *
- * _.sampleSize([1, 2, 3], 2);
- * // => [3, 1]
- *
- * _.sampleSize([1, 2, 3], 4);
- * // => [2, 3, 1]
- */
-function sampleSize(collection, n, guard) {
-  if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {
-    n = 1;
-  } else {
-    n = toInteger(n);
-  }
-  var func = isArray(collection) ? arraySampleSize : baseSampleSize;
-  return func(collection, n);
-}
-
-module.exports = sampleSize;
Index: ckend/node_modules/lodash/seq.js
===================================================================
--- backend/node_modules/lodash/seq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-module.exports = {
-  'at': require('./wrapperAt'),
-  'chain': require('./chain'),
-  'commit': require('./commit'),
-  'lodash': require('./wrapperLodash'),
-  'next': require('./next'),
-  'plant': require('./plant'),
-  'reverse': require('./wrapperReverse'),
-  'tap': require('./tap'),
-  'thru': require('./thru'),
-  'toIterator': require('./toIterator'),
-  'toJSON': require('./toJSON'),
-  'value': require('./wrapperValue'),
-  'valueOf': require('./valueOf'),
-  'wrapperChain': require('./wrapperChain')
-};
Index: ckend/node_modules/lodash/set.js
===================================================================
--- backend/node_modules/lodash/set.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var baseSet = require('./_baseSet');
-
-/**
- * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
- * it's created. Arrays are created for missing index properties while objects
- * are created for all other missing properties. Use `_.setWith` to customize
- * `path` creation.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 3.7.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.set(object, 'a[0].b.c', 4);
- * console.log(object.a[0].b.c);
- * // => 4
- *
- * _.set(object, ['x', '0', 'y', 'z'], 5);
- * console.log(object.x[0].y.z);
- * // => 5
- */
-function set(object, path, value) {
-  return object == null ? object : baseSet(object, path, value);
-}
-
-module.exports = set;
Index: ckend/node_modules/lodash/setWith.js
===================================================================
--- backend/node_modules/lodash/setWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseSet = require('./_baseSet');
-
-/**
- * This method is like `_.set` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {*} value The value to set.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.setWith(object, '[0][1]', 'a', Object);
- * // => { '0': { '1': 'a' } }
- */
-function setWith(object, path, value, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  return object == null ? object : baseSet(object, path, value, customizer);
-}
-
-module.exports = setWith;
Index: ckend/node_modules/lodash/shuffle.js
===================================================================
--- backend/node_modules/lodash/shuffle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var arrayShuffle = require('./_arrayShuffle'),
-    baseShuffle = require('./_baseShuffle'),
-    isArray = require('./isArray');
-
-/**
- * Creates an array of shuffled values, using a version of the
- * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to shuffle.
- * @returns {Array} Returns the new shuffled array.
- * @example
- *
- * _.shuffle([1, 2, 3, 4]);
- * // => [4, 1, 3, 2]
- */
-function shuffle(collection) {
-  var func = isArray(collection) ? arrayShuffle : baseShuffle;
-  return func(collection);
-}
-
-module.exports = shuffle;
Index: ckend/node_modules/lodash/size.js
===================================================================
--- backend/node_modules/lodash/size.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-var baseKeys = require('./_baseKeys'),
-    getTag = require('./_getTag'),
-    isArrayLike = require('./isArrayLike'),
-    isString = require('./isString'),
-    stringSize = require('./_stringSize');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
-
-/**
- * Gets the size of `collection` by returning its length for array-like
- * values or the number of own enumerable string keyed properties for objects.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object|string} collection The collection to inspect.
- * @returns {number} Returns the collection size.
- * @example
- *
- * _.size([1, 2, 3]);
- * // => 3
- *
- * _.size({ 'a': 1, 'b': 2 });
- * // => 2
- *
- * _.size('pebbles');
- * // => 7
- */
-function size(collection) {
-  if (collection == null) {
-    return 0;
-  }
-  if (isArrayLike(collection)) {
-    return isString(collection) ? stringSize(collection) : collection.length;
-  }
-  var tag = getTag(collection);
-  if (tag == mapTag || tag == setTag) {
-    return collection.size;
-  }
-  return baseKeys(collection).length;
-}
-
-module.exports = size;
Index: ckend/node_modules/lodash/slice.js
===================================================================
--- backend/node_modules/lodash/slice.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    isIterateeCall = require('./_isIterateeCall'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` from `start` up to, but not including, `end`.
- *
- * **Note:** This method is used instead of
- * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
- * returned.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to slice.
- * @param {number} [start=0] The start position.
- * @param {number} [end=array.length] The end position.
- * @returns {Array} Returns the slice of `array`.
- */
-function slice(array, start, end) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {
-    start = 0;
-    end = length;
-  }
-  else {
-    start = start == null ? 0 : toInteger(start);
-    end = end === undefined ? length : toInteger(end);
-  }
-  return baseSlice(array, start, end);
-}
-
-module.exports = slice;
Index: ckend/node_modules/lodash/snakeCase.js
===================================================================
--- backend/node_modules/lodash/snakeCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string` to
- * [snake case](https://en.wikipedia.org/wiki/Snake_case).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the snake cased string.
- * @example
- *
- * _.snakeCase('Foo Bar');
- * // => 'foo_bar'
- *
- * _.snakeCase('fooBar');
- * // => 'foo_bar'
- *
- * _.snakeCase('--FOO-BAR--');
- * // => 'foo_bar'
- */
-var snakeCase = createCompounder(function(result, word, index) {
-  return result + (index ? '_' : '') + word.toLowerCase();
-});
-
-module.exports = snakeCase;
Index: ckend/node_modules/lodash/some.js
===================================================================
--- backend/node_modules/lodash/some.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-var arraySome = require('./_arraySome'),
-    baseIteratee = require('./_baseIteratee'),
-    baseSome = require('./_baseSome'),
-    isArray = require('./isArray'),
-    isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Checks if `predicate` returns truthy for **any** element of `collection`.
- * Iteration is stopped once `predicate` returns truthy. The predicate is
- * invoked with three arguments: (value, index|key, collection).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {boolean} Returns `true` if any element passes the predicate check,
- *  else `false`.
- * @example
- *
- * _.some([null, 0, 'yes', false], Boolean);
- * // => true
- *
- * var users = [
- *   { 'user': 'barney', 'active': true },
- *   { 'user': 'fred',   'active': false }
- * ];
- *
- * // The `_.matches` iteratee shorthand.
- * _.some(users, { 'user': 'barney', 'active': false });
- * // => false
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.some(users, ['active', false]);
- * // => true
- *
- * // The `_.property` iteratee shorthand.
- * _.some(users, 'active');
- * // => true
- */
-function some(collection, predicate, guard) {
-  var func = isArray(collection) ? arraySome : baseSome;
-  if (guard && isIterateeCall(collection, predicate, guard)) {
-    predicate = undefined;
-  }
-  return func(collection, baseIteratee(predicate, 3));
-}
-
-module.exports = some;
Index: ckend/node_modules/lodash/sortBy.js
===================================================================
--- backend/node_modules/lodash/sortBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    baseOrderBy = require('./_baseOrderBy'),
-    baseRest = require('./_baseRest'),
-    isIterateeCall = require('./_isIterateeCall');
-
-/**
- * Creates an array of elements, sorted in ascending order by the results of
- * running each element in a collection thru each iteratee. This method
- * performs a stable sort, that is, it preserves the original sort order of
- * equal elements. The iteratees are invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Collection
- * @param {Array|Object} collection The collection to iterate over.
- * @param {...(Function|Function[])} [iteratees=[_.identity]]
- *  The iteratees to sort by.
- * @returns {Array} Returns the new sorted array.
- * @example
- *
- * var users = [
- *   { 'user': 'fred',   'age': 48 },
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 30 },
- *   { 'user': 'barney', 'age': 34 }
- * ];
- *
- * _.sortBy(users, [function(o) { return o.user; }]);
- * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]
- *
- * _.sortBy(users, ['user', 'age']);
- * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]
- */
-var sortBy = baseRest(function(collection, iteratees) {
-  if (collection == null) {
-    return [];
-  }
-  var length = iteratees.length;
-  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {
-    iteratees = [];
-  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {
-    iteratees = [iteratees[0]];
-  }
-  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);
-});
-
-module.exports = sortBy;
Index: ckend/node_modules/lodash/sortedIndex.js
===================================================================
--- backend/node_modules/lodash/sortedIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var baseSortedIndex = require('./_baseSortedIndex');
-
-/**
- * Uses a binary search to determine the lowest index at which `value`
- * should be inserted into `array` in order to maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * _.sortedIndex([30, 50], 40);
- * // => 1
- */
-function sortedIndex(array, value) {
-  return baseSortedIndex(array, value);
-}
-
-module.exports = sortedIndex;
Index: ckend/node_modules/lodash/sortedIndexBy.js
===================================================================
--- backend/node_modules/lodash/sortedIndexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseSortedIndexBy = require('./_baseSortedIndexBy');
-
-/**
- * This method is like `_.sortedIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 0
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedIndexBy(objects, { 'x': 4 }, 'x');
- * // => 0
- */
-function sortedIndexBy(array, value, iteratee) {
-  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2));
-}
-
-module.exports = sortedIndexBy;
Index: ckend/node_modules/lodash/sortedIndexOf.js
===================================================================
--- backend/node_modules/lodash/sortedIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseSortedIndex = require('./_baseSortedIndex'),
-    eq = require('./eq');
-
-/**
- * This method is like `_.indexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedIndexOf([4, 5, 5, 5, 6], 5);
- * // => 1
- */
-function sortedIndexOf(array, value) {
-  var length = array == null ? 0 : array.length;
-  if (length) {
-    var index = baseSortedIndex(array, value);
-    if (index < length && eq(array[index], value)) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = sortedIndexOf;
Index: ckend/node_modules/lodash/sortedLastIndex.js
===================================================================
--- backend/node_modules/lodash/sortedLastIndex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var baseSortedIndex = require('./_baseSortedIndex');
-
-/**
- * This method is like `_.sortedIndex` except that it returns the highest
- * index at which `value` should be inserted into `array` in order to
- * maintain its sort order.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * _.sortedLastIndex([4, 5, 5, 5, 6], 5);
- * // => 4
- */
-function sortedLastIndex(array, value) {
-  return baseSortedIndex(array, value, true);
-}
-
-module.exports = sortedLastIndex;
Index: ckend/node_modules/lodash/sortedLastIndexBy.js
===================================================================
--- backend/node_modules/lodash/sortedLastIndexBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseSortedIndexBy = require('./_baseSortedIndexBy');
-
-/**
- * This method is like `_.sortedLastIndex` except that it accepts `iteratee`
- * which is invoked for `value` and each element of `array` to compute their
- * sort ranking. The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The sorted array to inspect.
- * @param {*} value The value to evaluate.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the index at which `value` should be inserted
- *  into `array`.
- * @example
- *
- * var objects = [{ 'x': 4 }, { 'x': 5 }];
- *
- * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });
- * // => 1
- *
- * // The `_.property` iteratee shorthand.
- * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');
- * // => 1
- */
-function sortedLastIndexBy(array, value, iteratee) {
-  return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true);
-}
-
-module.exports = sortedLastIndexBy;
Index: ckend/node_modules/lodash/sortedLastIndexOf.js
===================================================================
--- backend/node_modules/lodash/sortedLastIndexOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseSortedIndex = require('./_baseSortedIndex'),
-    eq = require('./eq');
-
-/**
- * This method is like `_.lastIndexOf` except that it performs a binary
- * search on a sorted `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {*} value The value to search for.
- * @returns {number} Returns the index of the matched value, else `-1`.
- * @example
- *
- * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);
- * // => 3
- */
-function sortedLastIndexOf(array, value) {
-  var length = array == null ? 0 : array.length;
-  if (length) {
-    var index = baseSortedIndex(array, value, true) - 1;
-    if (eq(array[index], value)) {
-      return index;
-    }
-  }
-  return -1;
-}
-
-module.exports = sortedLastIndexOf;
Index: ckend/node_modules/lodash/sortedUniq.js
===================================================================
--- backend/node_modules/lodash/sortedUniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var baseSortedUniq = require('./_baseSortedUniq');
-
-/**
- * This method is like `_.uniq` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniq([1, 1, 2]);
- * // => [1, 2]
- */
-function sortedUniq(array) {
-  return (array && array.length)
-    ? baseSortedUniq(array)
-    : [];
-}
-
-module.exports = sortedUniq;
Index: ckend/node_modules/lodash/sortedUniqBy.js
===================================================================
--- backend/node_modules/lodash/sortedUniqBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseSortedUniq = require('./_baseSortedUniq');
-
-/**
- * This method is like `_.uniqBy` except that it's designed and optimized
- * for sorted arrays.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);
- * // => [1.1, 2.3]
- */
-function sortedUniqBy(array, iteratee) {
-  return (array && array.length)
-    ? baseSortedUniq(array, baseIteratee(iteratee, 2))
-    : [];
-}
-
-module.exports = sortedUniqBy;
Index: ckend/node_modules/lodash/split.js
===================================================================
--- backend/node_modules/lodash/split.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-var baseToString = require('./_baseToString'),
-    castSlice = require('./_castSlice'),
-    hasUnicode = require('./_hasUnicode'),
-    isIterateeCall = require('./_isIterateeCall'),
-    isRegExp = require('./isRegExp'),
-    stringToArray = require('./_stringToArray'),
-    toString = require('./toString');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Splits `string` by `separator`.
- *
- * **Note:** This method is based on
- * [`String#split`](https://mdn.io/String/split).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to split.
- * @param {RegExp|string} separator The separator pattern to split by.
- * @param {number} [limit] The length to truncate results to.
- * @returns {Array} Returns the string segments.
- * @example
- *
- * _.split('a-b-c', '-', 2);
- * // => ['a', 'b']
- */
-function split(string, separator, limit) {
-  if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {
-    separator = limit = undefined;
-  }
-  limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;
-  if (!limit) {
-    return [];
-  }
-  string = toString(string);
-  if (string && (
-        typeof separator == 'string' ||
-        (separator != null && !isRegExp(separator))
-      )) {
-    separator = baseToString(separator);
-    if (!separator && hasUnicode(string)) {
-      return castSlice(stringToArray(string), 0, limit);
-    }
-  }
-  return string.split(separator, limit);
-}
-
-module.exports = split;
Index: ckend/node_modules/lodash/spread.js
===================================================================
--- backend/node_modules/lodash/spread.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-var apply = require('./_apply'),
-    arrayPush = require('./_arrayPush'),
-    baseRest = require('./_baseRest'),
-    castSlice = require('./_castSlice'),
-    toInteger = require('./toInteger');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * Creates a function that invokes `func` with the `this` binding of the
- * create function and an array of arguments much like
- * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).
- *
- * **Note:** This method is based on the
- * [spread operator](https://mdn.io/spread_operator).
- *
- * @static
- * @memberOf _
- * @since 3.2.0
- * @category Function
- * @param {Function} func The function to spread arguments over.
- * @param {number} [start=0] The start position of the spread.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var say = _.spread(function(who, what) {
- *   return who + ' says ' + what;
- * });
- *
- * say(['fred', 'hello']);
- * // => 'fred says hello'
- *
- * var numbers = Promise.all([
- *   Promise.resolve(40),
- *   Promise.resolve(36)
- * ]);
- *
- * numbers.then(_.spread(function(x, y) {
- *   return x + y;
- * }));
- * // => a Promise of 76
- */
-function spread(func, start) {
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  start = start == null ? 0 : nativeMax(toInteger(start), 0);
-  return baseRest(function(args) {
-    var array = args[start],
-        otherArgs = castSlice(args, 0, start);
-
-    if (array) {
-      arrayPush(otherArgs, array);
-    }
-    return apply(func, this, otherArgs);
-  });
-}
-
-module.exports = spread;
Index: ckend/node_modules/lodash/startCase.js
===================================================================
--- backend/node_modules/lodash/startCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-var createCompounder = require('./_createCompounder'),
-    upperFirst = require('./upperFirst');
-
-/**
- * Converts `string` to
- * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).
- *
- * @static
- * @memberOf _
- * @since 3.1.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the start cased string.
- * @example
- *
- * _.startCase('--foo-bar--');
- * // => 'Foo Bar'
- *
- * _.startCase('fooBar');
- * // => 'Foo Bar'
- *
- * _.startCase('__FOO_BAR__');
- * // => 'FOO BAR'
- */
-var startCase = createCompounder(function(result, word, index) {
-  return result + (index ? ' ' : '') + upperFirst(word);
-});
-
-module.exports = startCase;
Index: ckend/node_modules/lodash/startsWith.js
===================================================================
--- backend/node_modules/lodash/startsWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    baseToString = require('./_baseToString'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/**
- * Checks if `string` starts with the given target string.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {string} [target] The string to search for.
- * @param {number} [position=0] The position to search from.
- * @returns {boolean} Returns `true` if `string` starts with `target`,
- *  else `false`.
- * @example
- *
- * _.startsWith('abc', 'a');
- * // => true
- *
- * _.startsWith('abc', 'b');
- * // => false
- *
- * _.startsWith('abc', 'b', 1);
- * // => true
- */
-function startsWith(string, target, position) {
-  string = toString(string);
-  position = position == null
-    ? 0
-    : baseClamp(toInteger(position), 0, string.length);
-
-  target = baseToString(target);
-  return string.slice(position, position + target.length) == target;
-}
-
-module.exports = startsWith;
Index: ckend/node_modules/lodash/string.js
===================================================================
--- backend/node_modules/lodash/string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-module.exports = {
-  'camelCase': require('./camelCase'),
-  'capitalize': require('./capitalize'),
-  'deburr': require('./deburr'),
-  'endsWith': require('./endsWith'),
-  'escape': require('./escape'),
-  'escapeRegExp': require('./escapeRegExp'),
-  'kebabCase': require('./kebabCase'),
-  'lowerCase': require('./lowerCase'),
-  'lowerFirst': require('./lowerFirst'),
-  'pad': require('./pad'),
-  'padEnd': require('./padEnd'),
-  'padStart': require('./padStart'),
-  'parseInt': require('./parseInt'),
-  'repeat': require('./repeat'),
-  'replace': require('./replace'),
-  'snakeCase': require('./snakeCase'),
-  'split': require('./split'),
-  'startCase': require('./startCase'),
-  'startsWith': require('./startsWith'),
-  'template': require('./template'),
-  'templateSettings': require('./templateSettings'),
-  'toLower': require('./toLower'),
-  'toUpper': require('./toUpper'),
-  'trim': require('./trim'),
-  'trimEnd': require('./trimEnd'),
-  'trimStart': require('./trimStart'),
-  'truncate': require('./truncate'),
-  'unescape': require('./unescape'),
-  'upperCase': require('./upperCase'),
-  'upperFirst': require('./upperFirst'),
-  'words': require('./words')
-};
Index: ckend/node_modules/lodash/stubArray.js
===================================================================
--- backend/node_modules/lodash/stubArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * This method returns a new empty array.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Array} Returns the new empty array.
- * @example
- *
- * var arrays = _.times(2, _.stubArray);
- *
- * console.log(arrays);
- * // => [[], []]
- *
- * console.log(arrays[0] === arrays[1]);
- * // => false
- */
-function stubArray() {
-  return [];
-}
-
-module.exports = stubArray;
Index: ckend/node_modules/lodash/stubFalse.js
===================================================================
--- backend/node_modules/lodash/stubFalse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * This method returns `false`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `false`.
- * @example
- *
- * _.times(2, _.stubFalse);
- * // => [false, false]
- */
-function stubFalse() {
-  return false;
-}
-
-module.exports = stubFalse;
Index: ckend/node_modules/lodash/stubObject.js
===================================================================
--- backend/node_modules/lodash/stubObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * This method returns a new empty object.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {Object} Returns the new empty object.
- * @example
- *
- * var objects = _.times(2, _.stubObject);
- *
- * console.log(objects);
- * // => [{}, {}]
- *
- * console.log(objects[0] === objects[1]);
- * // => false
- */
-function stubObject() {
-  return {};
-}
-
-module.exports = stubObject;
Index: ckend/node_modules/lodash/stubString.js
===================================================================
--- backend/node_modules/lodash/stubString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * This method returns an empty string.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {string} Returns the empty string.
- * @example
- *
- * _.times(2, _.stubString);
- * // => ['', '']
- */
-function stubString() {
-  return '';
-}
-
-module.exports = stubString;
Index: ckend/node_modules/lodash/stubTrue.js
===================================================================
--- backend/node_modules/lodash/stubTrue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-/**
- * This method returns `true`.
- *
- * @static
- * @memberOf _
- * @since 4.13.0
- * @category Util
- * @returns {boolean} Returns `true`.
- * @example
- *
- * _.times(2, _.stubTrue);
- * // => [true, true]
- */
-function stubTrue() {
-  return true;
-}
-
-module.exports = stubTrue;
Index: ckend/node_modules/lodash/subtract.js
===================================================================
--- backend/node_modules/lodash/subtract.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createMathOperation = require('./_createMathOperation');
-
-/**
- * Subtract two numbers.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {number} minuend The first number in a subtraction.
- * @param {number} subtrahend The second number in a subtraction.
- * @returns {number} Returns the difference.
- * @example
- *
- * _.subtract(6, 4);
- * // => 2
- */
-var subtract = createMathOperation(function(minuend, subtrahend) {
-  return minuend - subtrahend;
-}, 0);
-
-module.exports = subtract;
Index: ckend/node_modules/lodash/sum.js
===================================================================
--- backend/node_modules/lodash/sum.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var baseSum = require('./_baseSum'),
-    identity = require('./identity');
-
-/**
- * Computes the sum of the values in `array`.
- *
- * @static
- * @memberOf _
- * @since 3.4.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @returns {number} Returns the sum.
- * @example
- *
- * _.sum([4, 2, 8, 6]);
- * // => 20
- */
-function sum(array) {
-  return (array && array.length)
-    ? baseSum(array, identity)
-    : 0;
-}
-
-module.exports = sum;
Index: ckend/node_modules/lodash/sumBy.js
===================================================================
--- backend/node_modules/lodash/sumBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseSum = require('./_baseSum');
-
-/**
- * This method is like `_.sum` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the value to be summed.
- * The iteratee is invoked with one argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Math
- * @param {Array} array The array to iterate over.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {number} Returns the sum.
- * @example
- *
- * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
- *
- * _.sumBy(objects, function(o) { return o.n; });
- * // => 20
- *
- * // The `_.property` iteratee shorthand.
- * _.sumBy(objects, 'n');
- * // => 20
- */
-function sumBy(array, iteratee) {
-  return (array && array.length)
-    ? baseSum(array, baseIteratee(iteratee, 2))
-    : 0;
-}
-
-module.exports = sumBy;
Index: ckend/node_modules/lodash/tail.js
===================================================================
--- backend/node_modules/lodash/tail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseSlice = require('./_baseSlice');
-
-/**
- * Gets all but the first element of `array`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.tail([1, 2, 3]);
- * // => [2, 3]
- */
-function tail(array) {
-  var length = array == null ? 0 : array.length;
-  return length ? baseSlice(array, 1, length) : [];
-}
-
-module.exports = tail;
Index: ckend/node_modules/lodash/take.js
===================================================================
--- backend/node_modules/lodash/take.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the beginning.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.take([1, 2, 3]);
- * // => [1]
- *
- * _.take([1, 2, 3], 2);
- * // => [1, 2]
- *
- * _.take([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.take([1, 2, 3], 0);
- * // => []
- */
-function take(array, n, guard) {
-  if (!(array && array.length)) {
-    return [];
-  }
-  n = (guard || n === undefined) ? 1 : toInteger(n);
-  return baseSlice(array, 0, n < 0 ? 0 : n);
-}
-
-module.exports = take;
Index: ckend/node_modules/lodash/takeRight.js
===================================================================
--- backend/node_modules/lodash/takeRight.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseSlice = require('./_baseSlice'),
-    toInteger = require('./toInteger');
-
-/**
- * Creates a slice of `array` with `n` elements taken from the end.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {number} [n=1] The number of elements to take.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * _.takeRight([1, 2, 3]);
- * // => [3]
- *
- * _.takeRight([1, 2, 3], 2);
- * // => [2, 3]
- *
- * _.takeRight([1, 2, 3], 5);
- * // => [1, 2, 3]
- *
- * _.takeRight([1, 2, 3], 0);
- * // => []
- */
-function takeRight(array, n, guard) {
-  var length = array == null ? 0 : array.length;
-  if (!length) {
-    return [];
-  }
-  n = (guard || n === undefined) ? 1 : toInteger(n);
-  n = length - n;
-  return baseSlice(array, n < 0 ? 0 : n, length);
-}
-
-module.exports = takeRight;
Index: ckend/node_modules/lodash/takeRightWhile.js
===================================================================
--- backend/node_modules/lodash/takeRightWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the end. Elements are
- * taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': true },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': false }
- * ];
- *
- * _.takeRightWhile(users, function(o) { return !o.active; });
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });
- * // => objects for ['pebbles']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeRightWhile(users, ['active', false]);
- * // => objects for ['fred', 'pebbles']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeRightWhile(users, 'active');
- * // => []
- */
-function takeRightWhile(array, predicate) {
-  return (array && array.length)
-    ? baseWhile(array, baseIteratee(predicate, 3), false, true)
-    : [];
-}
-
-module.exports = takeRightWhile;
Index: ckend/node_modules/lodash/takeWhile.js
===================================================================
--- backend/node_modules/lodash/takeWhile.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseWhile = require('./_baseWhile');
-
-/**
- * Creates a slice of `array` with elements taken from the beginning. Elements
- * are taken until `predicate` returns falsey. The predicate is invoked with
- * three arguments: (value, index, array).
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to query.
- * @param {Function} [predicate=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the slice of `array`.
- * @example
- *
- * var users = [
- *   { 'user': 'barney',  'active': false },
- *   { 'user': 'fred',    'active': false },
- *   { 'user': 'pebbles', 'active': true }
- * ];
- *
- * _.takeWhile(users, function(o) { return !o.active; });
- * // => objects for ['barney', 'fred']
- *
- * // The `_.matches` iteratee shorthand.
- * _.takeWhile(users, { 'user': 'barney', 'active': false });
- * // => objects for ['barney']
- *
- * // The `_.matchesProperty` iteratee shorthand.
- * _.takeWhile(users, ['active', false]);
- * // => objects for ['barney', 'fred']
- *
- * // The `_.property` iteratee shorthand.
- * _.takeWhile(users, 'active');
- * // => []
- */
-function takeWhile(array, predicate) {
-  return (array && array.length)
-    ? baseWhile(array, baseIteratee(predicate, 3))
-    : [];
-}
-
-module.exports = takeWhile;
Index: ckend/node_modules/lodash/tap.js
===================================================================
--- backend/node_modules/lodash/tap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-/**
- * This method invokes `interceptor` and returns `value`. The interceptor
- * is invoked with one argument; (value). The purpose of this method is to
- * "tap into" a method chain sequence in order to modify intermediate results.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns `value`.
- * @example
- *
- * _([1, 2, 3])
- *  .tap(function(array) {
- *    // Mutate input array.
- *    array.pop();
- *  })
- *  .reverse()
- *  .value();
- * // => [2, 1]
- */
-function tap(value, interceptor) {
-  interceptor(value);
-  return value;
-}
-
-module.exports = tap;
Index: ckend/node_modules/lodash/template.js
===================================================================
--- backend/node_modules/lodash/template.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,272 +1,0 @@
-var assignInWith = require('./assignInWith'),
-    attempt = require('./attempt'),
-    baseValues = require('./_baseValues'),
-    customDefaultsAssignIn = require('./_customDefaultsAssignIn'),
-    escapeStringChar = require('./_escapeStringChar'),
-    isError = require('./isError'),
-    isIterateeCall = require('./_isIterateeCall'),
-    keys = require('./keys'),
-    reInterpolate = require('./_reInterpolate'),
-    templateSettings = require('./templateSettings'),
-    toString = require('./toString');
-
-/** Error message constants. */
-var INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
-
-/** Used to match empty string literals in compiled template source. */
-var reEmptyStringLeading = /\b__p \+= '';/g,
-    reEmptyStringMiddle = /\b(__p \+=) '' \+/g,
-    reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g;
-
-/**
- * Used to validate the `validate` option in `_.template` variable.
- *
- * Forbids characters which could potentially change the meaning of the function argument definition:
- * - "()," (modification of function parameters)
- * - "=" (default value)
- * - "[]{}" (destructuring of function parameters)
- * - "/" (beginning of a comment)
- * - whitespace
- */
-var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/;
-
-/**
- * Used to match
- * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).
- */
-var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;
-
-/** Used to ensure capturing order of template delimiters. */
-var reNoMatch = /($^)/;
-
-/** Used to match unescaped characters in compiled string literals. */
-var reUnescapedString = /['\n\r\u2028\u2029\\]/g;
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates a compiled template function that can interpolate data properties
- * in "interpolate" delimiters, HTML-escape interpolated data properties in
- * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
- * properties may be accessed as free variables in the template. If a setting
- * object is given, it takes precedence over `_.templateSettings` values.
- *
- * **Note:** In the development build `_.template` utilizes
- * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)
- * for easier debugging.
- *
- * For more information on precompiling templates see
- * [lodash's custom builds documentation](https://lodash.com/custom-builds).
- *
- * For more information on Chrome extension sandboxes see
- * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category String
- * @param {string} [string=''] The template string.
- * @param {Object} [options={}] The options object.
- * @param {RegExp} [options.escape=_.templateSettings.escape]
- *  The HTML "escape" delimiter.
- * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]
- *  The "evaluate" delimiter.
- * @param {Object} [options.imports=_.templateSettings.imports]
- *  An object to import into the template as free variables.
- * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]
- *  The "interpolate" delimiter.
- * @param {string} [options.sourceURL='templateSources[n]']
- *  The sourceURL of the compiled template.
- * @param {string} [options.variable='obj']
- *  The data object variable name.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Function} Returns the compiled template function.
- * @example
- *
- * // Use the "interpolate" delimiter to create a compiled template.
- * var compiled = _.template('hello <%= user %>!');
- * compiled({ 'user': 'fred' });
- * // => 'hello fred!'
- *
- * // Use the HTML "escape" delimiter to escape data property values.
- * var compiled = _.template('<b><%- value %></b>');
- * compiled({ 'value': '<script>' });
- * // => '<b>&lt;script&gt;</b>'
- *
- * // Use the "evaluate" delimiter to execute JavaScript and generate HTML.
- * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the internal `print` function in "evaluate" delimiters.
- * var compiled = _.template('<% print("hello " + user); %>!');
- * compiled({ 'user': 'barney' });
- * // => 'hello barney!'
- *
- * // Use the ES template literal delimiter as an "interpolate" delimiter.
- * // Disable support by replacing the "interpolate" delimiter.
- * var compiled = _.template('hello ${ user }!');
- * compiled({ 'user': 'pebbles' });
- * // => 'hello pebbles!'
- *
- * // Use backslashes to treat delimiters as plain text.
- * var compiled = _.template('<%= "\\<%- value %\\>" %>');
- * compiled({ 'value': 'ignored' });
- * // => '<%- value %>'
- *
- * // Use the `imports` option to import `jQuery` as `jq`.
- * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';
- * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });
- * compiled({ 'users': ['fred', 'barney'] });
- * // => '<li>fred</li><li>barney</li>'
- *
- * // Use the `sourceURL` option to specify a custom sourceURL for the template.
- * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });
- * compiled(data);
- * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector.
- *
- * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.
- * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });
- * compiled.source;
- * // => function(data) {
- * //   var __t, __p = '';
- * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';
- * //   return __p;
- * // }
- *
- * // Use custom template delimiters.
- * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
- * var compiled = _.template('hello {{ user }}!');
- * compiled({ 'user': 'mustache' });
- * // => 'hello mustache!'
- *
- * // Use the `source` property to inline compiled templates for meaningful
- * // line numbers in error messages and stack traces.
- * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\
- *   var JST = {\
- *     "main": ' + _.template(mainText).source + '\
- *   };\
- * ');
- */
-function template(string, options, guard) {
-  // Based on John Resig's `tmpl` implementation
-  // (http://ejohn.org/blog/javascript-micro-templating/)
-  // and Laura Doktorova's doT.js (https://github.com/olado/doT).
-  var settings = templateSettings.imports._.templateSettings || templateSettings;
-
-  if (guard && isIterateeCall(string, options, guard)) {
-    options = undefined;
-  }
-  string = toString(string);
-  options = assignInWith({}, options, settings, customDefaultsAssignIn);
-
-  var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),
-      importsKeys = keys(imports),
-      importsValues = baseValues(imports, importsKeys);
-
-  var isEscaping,
-      isEvaluating,
-      index = 0,
-      interpolate = options.interpolate || reNoMatch,
-      source = "__p += '";
-
-  // Compile the regexp to match each delimiter.
-  var reDelimiters = RegExp(
-    (options.escape || reNoMatch).source + '|' +
-    interpolate.source + '|' +
-    (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +
-    (options.evaluate || reNoMatch).source + '|$'
-  , 'g');
-
-  // Use a sourceURL for easier debugging.
-  // The sourceURL gets injected into the source that's eval-ed, so be careful
-  // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in
-  // and escape the comment, thus injecting code that gets evaled.
-  var sourceURL = hasOwnProperty.call(options, 'sourceURL')
-    ? ('//# sourceURL=' +
-       (options.sourceURL + '').replace(/\s/g, ' ') +
-       '\n')
-    : '';
-
-  string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {
-    interpolateValue || (interpolateValue = esTemplateValue);
-
-    // Escape characters that can't be included in string literals.
-    source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);
-
-    // Replace delimiters with snippets.
-    if (escapeValue) {
-      isEscaping = true;
-      source += "' +\n__e(" + escapeValue + ") +\n'";
-    }
-    if (evaluateValue) {
-      isEvaluating = true;
-      source += "';\n" + evaluateValue + ";\n__p += '";
-    }
-    if (interpolateValue) {
-      source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'";
-    }
-    index = offset + match.length;
-
-    // The JS engine embedded in Adobe products needs `match` returned in
-    // order to produce the correct `offset` value.
-    return match;
-  });
-
-  source += "';\n";
-
-  // If `variable` is not specified wrap a with-statement around the generated
-  // code to add the data object to the top of the scope chain.
-  var variable = hasOwnProperty.call(options, 'variable') && options.variable;
-  if (!variable) {
-    source = 'with (obj) {\n' + source + '\n}\n';
-  }
-  // Throw an error if a forbidden character was found in `variable`, to prevent
-  // potential command injection attacks.
-  else if (reForbiddenIdentifierChars.test(variable)) {
-    throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);
-  }
-
-  // Cleanup code by stripping empty strings.
-  source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)
-    .replace(reEmptyStringMiddle, '$1')
-    .replace(reEmptyStringTrailing, '$1;');
-
-  // Frame code as the function body.
-  source = 'function(' + (variable || 'obj') + ') {\n' +
-    (variable
-      ? ''
-      : 'obj || (obj = {});\n'
-    ) +
-    "var __t, __p = ''" +
-    (isEscaping
-       ? ', __e = _.escape'
-       : ''
-    ) +
-    (isEvaluating
-      ? ', __j = Array.prototype.join;\n' +
-        "function print() { __p += __j.call(arguments, '') }\n"
-      : ';\n'
-    ) +
-    source +
-    'return __p\n}';
-
-  var result = attempt(function() {
-    return Function(importsKeys, sourceURL + 'return ' + source)
-      .apply(undefined, importsValues);
-  });
-
-  // Provide the compiled function's source by its `toString` method or
-  // the `source` property as a convenience for inlining compiled templates.
-  result.source = source;
-  if (isError(result)) {
-    throw result;
-  }
-  return result;
-}
-
-module.exports = template;
Index: ckend/node_modules/lodash/templateSettings.js
===================================================================
--- backend/node_modules/lodash/templateSettings.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-var escape = require('./escape'),
-    reEscape = require('./_reEscape'),
-    reEvaluate = require('./_reEvaluate'),
-    reInterpolate = require('./_reInterpolate');
-
-/**
- * By default, the template delimiters used by lodash are like those in
- * embedded Ruby (ERB) as well as ES2015 template strings. Change the
- * following template settings to use alternative delimiters.
- *
- * @static
- * @memberOf _
- * @type {Object}
- */
-var templateSettings = {
-
-  /**
-   * Used to detect `data` property values to be HTML-escaped.
-   *
-   * @memberOf _.templateSettings
-   * @type {RegExp}
-   */
-  'escape': reEscape,
-
-  /**
-   * Used to detect code to be evaluated.
-   *
-   * @memberOf _.templateSettings
-   * @type {RegExp}
-   */
-  'evaluate': reEvaluate,
-
-  /**
-   * Used to detect `data` property values to inject.
-   *
-   * @memberOf _.templateSettings
-   * @type {RegExp}
-   */
-  'interpolate': reInterpolate,
-
-  /**
-   * Used to reference the data object in the template text.
-   *
-   * @memberOf _.templateSettings
-   * @type {string}
-   */
-  'variable': '',
-
-  /**
-   * Used to import variables into the compiled template.
-   *
-   * @memberOf _.templateSettings
-   * @type {Object}
-   */
-  'imports': {
-
-    /**
-     * A reference to the `lodash` function.
-     *
-     * @memberOf _.templateSettings.imports
-     * @type {Function}
-     */
-    '_': { 'escape': escape }
-  }
-};
-
-module.exports = templateSettings;
Index: ckend/node_modules/lodash/throttle.js
===================================================================
--- backend/node_modules/lodash/throttle.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-var debounce = require('./debounce'),
-    isObject = require('./isObject');
-
-/** Error message constants. */
-var FUNC_ERROR_TEXT = 'Expected a function';
-
-/**
- * Creates a throttled function that only invokes `func` at most once per
- * every `wait` milliseconds. The throttled function comes with a `cancel`
- * method to cancel delayed `func` invocations and a `flush` method to
- * immediately invoke them. Provide `options` to indicate whether `func`
- * should be invoked on the leading and/or trailing edge of the `wait`
- * timeout. The `func` is invoked with the last arguments provided to the
- * throttled function. Subsequent calls to the throttled function return the
- * result of the last `func` invocation.
- *
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
- * invoked on the trailing edge of the timeout only if the throttled function
- * is invoked more than once during the `wait` timeout.
- *
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
- *
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
- * for details over the differences between `_.throttle` and `_.debounce`.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {Function} func The function to throttle.
- * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
- * @param {Object} [options={}] The options object.
- * @param {boolean} [options.leading=true]
- *  Specify invoking on the leading edge of the timeout.
- * @param {boolean} [options.trailing=true]
- *  Specify invoking on the trailing edge of the timeout.
- * @returns {Function} Returns the new throttled function.
- * @example
- *
- * // Avoid excessively updating the position while scrolling.
- * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
- *
- * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
- * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
- * jQuery(element).on('click', throttled);
- *
- * // Cancel the trailing throttled invocation.
- * jQuery(window).on('popstate', throttled.cancel);
- */
-function throttle(func, wait, options) {
-  var leading = true,
-      trailing = true;
-
-  if (typeof func != 'function') {
-    throw new TypeError(FUNC_ERROR_TEXT);
-  }
-  if (isObject(options)) {
-    leading = 'leading' in options ? !!options.leading : leading;
-    trailing = 'trailing' in options ? !!options.trailing : trailing;
-  }
-  return debounce(func, wait, {
-    'leading': leading,
-    'maxWait': wait,
-    'trailing': trailing
-  });
-}
-
-module.exports = throttle;
Index: ckend/node_modules/lodash/thru.js
===================================================================
--- backend/node_modules/lodash/thru.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-/**
- * This method is like `_.tap` except that it returns the result of `interceptor`.
- * The purpose of this method is to "pass thru" values replacing intermediate
- * results in a method chain sequence.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Seq
- * @param {*} value The value to provide to `interceptor`.
- * @param {Function} interceptor The function to invoke.
- * @returns {*} Returns the result of `interceptor`.
- * @example
- *
- * _('  abc  ')
- *  .chain()
- *  .trim()
- *  .thru(function(value) {
- *    return [value];
- *  })
- *  .value();
- * // => ['abc']
- */
-function thru(value, interceptor) {
-  return interceptor(value);
-}
-
-module.exports = thru;
Index: ckend/node_modules/lodash/times.js
===================================================================
--- backend/node_modules/lodash/times.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-var baseTimes = require('./_baseTimes'),
-    castFunction = require('./_castFunction'),
-    toInteger = require('./toInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMin = Math.min;
-
-/**
- * Invokes the iteratee `n` times, returning an array of the results of
- * each invocation. The iteratee is invoked with one argument; (index).
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {number} n The number of times to invoke `iteratee`.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @returns {Array} Returns the array of results.
- * @example
- *
- * _.times(3, String);
- * // => ['0', '1', '2']
- *
- *  _.times(4, _.constant(0));
- * // => [0, 0, 0, 0]
- */
-function times(n, iteratee) {
-  n = toInteger(n);
-  if (n < 1 || n > MAX_SAFE_INTEGER) {
-    return [];
-  }
-  var index = MAX_ARRAY_LENGTH,
-      length = nativeMin(n, MAX_ARRAY_LENGTH);
-
-  iteratee = castFunction(iteratee);
-  n -= MAX_ARRAY_LENGTH;
-
-  var result = baseTimes(length, iteratee);
-  while (++index < n) {
-    iteratee(index);
-  }
-  return result;
-}
-
-module.exports = times;
Index: ckend/node_modules/lodash/toArray.js
===================================================================
--- backend/node_modules/lodash/toArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-var Symbol = require('./_Symbol'),
-    copyArray = require('./_copyArray'),
-    getTag = require('./_getTag'),
-    isArrayLike = require('./isArrayLike'),
-    isString = require('./isString'),
-    iteratorToArray = require('./_iteratorToArray'),
-    mapToArray = require('./_mapToArray'),
-    setToArray = require('./_setToArray'),
-    stringToArray = require('./_stringToArray'),
-    values = require('./values');
-
-/** `Object#toString` result references. */
-var mapTag = '[object Map]',
-    setTag = '[object Set]';
-
-/** Built-in value references. */
-var symIterator = Symbol ? Symbol.iterator : undefined;
-
-/**
- * Converts `value` to an array.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Array} Returns the converted array.
- * @example
- *
- * _.toArray({ 'a': 1, 'b': 2 });
- * // => [1, 2]
- *
- * _.toArray('abc');
- * // => ['a', 'b', 'c']
- *
- * _.toArray(1);
- * // => []
- *
- * _.toArray(null);
- * // => []
- */
-function toArray(value) {
-  if (!value) {
-    return [];
-  }
-  if (isArrayLike(value)) {
-    return isString(value) ? stringToArray(value) : copyArray(value);
-  }
-  if (symIterator && value[symIterator]) {
-    return iteratorToArray(value[symIterator]());
-  }
-  var tag = getTag(value),
-      func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);
-
-  return func(value);
-}
-
-module.exports = toArray;
Index: ckend/node_modules/lodash/toFinite.js
===================================================================
--- backend/node_modules/lodash/toFinite.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-var toNumber = require('./toNumber');
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
-    MAX_INTEGER = 1.7976931348623157e+308;
-
-/**
- * Converts `value` to a finite number.
- *
- * @static
- * @memberOf _
- * @since 4.12.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted number.
- * @example
- *
- * _.toFinite(3.2);
- * // => 3.2
- *
- * _.toFinite(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toFinite(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toFinite('3.2');
- * // => 3.2
- */
-function toFinite(value) {
-  if (!value) {
-    return value === 0 ? value : 0;
-  }
-  value = toNumber(value);
-  if (value === INFINITY || value === -INFINITY) {
-    var sign = (value < 0 ? -1 : 1);
-    return sign * MAX_INTEGER;
-  }
-  return value === value ? value : 0;
-}
-
-module.exports = toFinite;
Index: ckend/node_modules/lodash/toInteger.js
===================================================================
--- backend/node_modules/lodash/toInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-var toFinite = require('./toFinite');
-
-/**
- * Converts `value` to an integer.
- *
- * **Note:** This method is loosely based on
- * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toInteger(3.2);
- * // => 3
- *
- * _.toInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toInteger(Infinity);
- * // => 1.7976931348623157e+308
- *
- * _.toInteger('3.2');
- * // => 3
- */
-function toInteger(value) {
-  var result = toFinite(value),
-      remainder = result % 1;
-
-  return result === result ? (remainder ? result - remainder : result) : 0;
-}
-
-module.exports = toInteger;
Index: ckend/node_modules/lodash/toIterator.js
===================================================================
--- backend/node_modules/lodash/toIterator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/**
- * Enables the wrapper to be iterable.
- *
- * @name Symbol.iterator
- * @memberOf _
- * @since 4.0.0
- * @category Seq
- * @returns {Object} Returns the wrapper object.
- * @example
- *
- * var wrapped = _([1, 2]);
- *
- * wrapped[Symbol.iterator]() === wrapped;
- * // => true
- *
- * Array.from(wrapped);
- * // => [1, 2]
- */
-function wrapperToIterator() {
-  return this;
-}
-
-module.exports = wrapperToIterator;
Index: ckend/node_modules/lodash/toJSON.js
===================================================================
--- backend/node_modules/lodash/toJSON.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./wrapperValue');
Index: ckend/node_modules/lodash/toLength.js
===================================================================
--- backend/node_modules/lodash/toLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    toInteger = require('./toInteger');
-
-/** Used as references for the maximum length and index of an array. */
-var MAX_ARRAY_LENGTH = 4294967295;
-
-/**
- * Converts `value` to an integer suitable for use as the length of an
- * array-like object.
- *
- * **Note:** This method is based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toLength(3.2);
- * // => 3
- *
- * _.toLength(Number.MIN_VALUE);
- * // => 0
- *
- * _.toLength(Infinity);
- * // => 4294967295
- *
- * _.toLength('3.2');
- * // => 3
- */
-function toLength(value) {
-  return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;
-}
-
-module.exports = toLength;
Index: ckend/node_modules/lodash/toLower.js
===================================================================
--- backend/node_modules/lodash/toLower.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var toString = require('./toString');
-
-/**
- * Converts `string`, as a whole, to lower case just like
- * [String#toLowerCase](https://mdn.io/toLowerCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the lower cased string.
- * @example
- *
- * _.toLower('--Foo-Bar--');
- * // => '--foo-bar--'
- *
- * _.toLower('fooBar');
- * // => 'foobar'
- *
- * _.toLower('__FOO_BAR__');
- * // => '__foo_bar__'
- */
-function toLower(value) {
-  return toString(value).toLowerCase();
-}
-
-module.exports = toLower;
Index: ckend/node_modules/lodash/toNumber.js
===================================================================
--- backend/node_modules/lodash/toNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-var baseTrim = require('./_baseTrim'),
-    isObject = require('./isObject'),
-    isSymbol = require('./isSymbol');
-
-/** Used as references for various `Number` constants. */
-var NAN = 0 / 0;
-
-/** Used to detect bad signed hexadecimal string values. */
-var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
-
-/** Used to detect binary string values. */
-var reIsBinary = /^0b[01]+$/i;
-
-/** Used to detect octal string values. */
-var reIsOctal = /^0o[0-7]+$/i;
-
-/** Built-in method references without a dependency on `root`. */
-var freeParseInt = parseInt;
-
-/**
- * Converts `value` to a number.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to process.
- * @returns {number} Returns the number.
- * @example
- *
- * _.toNumber(3.2);
- * // => 3.2
- *
- * _.toNumber(Number.MIN_VALUE);
- * // => 5e-324
- *
- * _.toNumber(Infinity);
- * // => Infinity
- *
- * _.toNumber('3.2');
- * // => 3.2
- */
-function toNumber(value) {
-  if (typeof value == 'number') {
-    return value;
-  }
-  if (isSymbol(value)) {
-    return NAN;
-  }
-  if (isObject(value)) {
-    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
-    value = isObject(other) ? (other + '') : other;
-  }
-  if (typeof value != 'string') {
-    return value === 0 ? value : +value;
-  }
-  value = baseTrim(value);
-  var isBinary = reIsBinary.test(value);
-  return (isBinary || reIsOctal.test(value))
-    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
-    : (reIsBadHex.test(value) ? NAN : +value);
-}
-
-module.exports = toNumber;
Index: ckend/node_modules/lodash/toPairs.js
===================================================================
--- backend/node_modules/lodash/toPairs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var createToPairs = require('./_createToPairs'),
-    keys = require('./keys');
-
-/**
- * Creates an array of own enumerable string keyed-value pairs for `object`
- * which can be consumed by `_.fromPairs`. If `object` is a map or set, its
- * entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entries
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairs(new Foo);
- * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)
- */
-var toPairs = createToPairs(keys);
-
-module.exports = toPairs;
Index: ckend/node_modules/lodash/toPairsIn.js
===================================================================
--- backend/node_modules/lodash/toPairsIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var createToPairs = require('./_createToPairs'),
-    keysIn = require('./keysIn');
-
-/**
- * Creates an array of own and inherited enumerable string keyed-value pairs
- * for `object` which can be consumed by `_.fromPairs`. If `object` is a map
- * or set, its entries are returned.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @alias entriesIn
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the key-value pairs.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.toPairsIn(new Foo);
- * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)
- */
-var toPairsIn = createToPairs(keysIn);
-
-module.exports = toPairsIn;
Index: ckend/node_modules/lodash/toPath.js
===================================================================
--- backend/node_modules/lodash/toPath.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var arrayMap = require('./_arrayMap'),
-    copyArray = require('./_copyArray'),
-    isArray = require('./isArray'),
-    isSymbol = require('./isSymbol'),
-    stringToPath = require('./_stringToPath'),
-    toKey = require('./_toKey'),
-    toString = require('./toString');
-
-/**
- * Converts `value` to a property path array.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Util
- * @param {*} value The value to convert.
- * @returns {Array} Returns the new property path array.
- * @example
- *
- * _.toPath('a.b.c');
- * // => ['a', 'b', 'c']
- *
- * _.toPath('a[0].b.c');
- * // => ['a', '0', 'b', 'c']
- */
-function toPath(value) {
-  if (isArray(value)) {
-    return arrayMap(value, toKey);
-  }
-  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));
-}
-
-module.exports = toPath;
Index: ckend/node_modules/lodash/toPlainObject.js
===================================================================
--- backend/node_modules/lodash/toPlainObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var copyObject = require('./_copyObject'),
-    keysIn = require('./keysIn');
-
-/**
- * Converts `value` to a plain object flattening inherited enumerable string
- * keyed properties of `value` to own properties of the plain object.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {Object} Returns the converted plain object.
- * @example
- *
- * function Foo() {
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.assign({ 'a': 1 }, new Foo);
- * // => { 'a': 1, 'b': 2 }
- *
- * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));
- * // => { 'a': 1, 'b': 2, 'c': 3 }
- */
-function toPlainObject(value) {
-  return copyObject(value, keysIn(value));
-}
-
-module.exports = toPlainObject;
Index: ckend/node_modules/lodash/toSafeInteger.js
===================================================================
--- backend/node_modules/lodash/toSafeInteger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-var baseClamp = require('./_baseClamp'),
-    toInteger = require('./toInteger');
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Converts `value` to a safe integer. A safe integer can be compared and
- * represented correctly.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {number} Returns the converted integer.
- * @example
- *
- * _.toSafeInteger(3.2);
- * // => 3
- *
- * _.toSafeInteger(Number.MIN_VALUE);
- * // => 0
- *
- * _.toSafeInteger(Infinity);
- * // => 9007199254740991
- *
- * _.toSafeInteger('3.2');
- * // => 3
- */
-function toSafeInteger(value) {
-  return value
-    ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)
-    : (value === 0 ? value : 0);
-}
-
-module.exports = toSafeInteger;
Index: ckend/node_modules/lodash/toString.js
===================================================================
--- backend/node_modules/lodash/toString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseToString = require('./_baseToString');
-
-/**
- * Converts `value` to a string. An empty string is returned for `null`
- * and `undefined` values. The sign of `-0` is preserved.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.toString(null);
- * // => ''
- *
- * _.toString(-0);
- * // => '-0'
- *
- * _.toString([1, 2, 3]);
- * // => '1,2,3'
- */
-function toString(value) {
-  return value == null ? '' : baseToString(value);
-}
-
-module.exports = toString;
Index: ckend/node_modules/lodash/toUpper.js
===================================================================
--- backend/node_modules/lodash/toUpper.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var toString = require('./toString');
-
-/**
- * Converts `string`, as a whole, to upper case just like
- * [String#toUpperCase](https://mdn.io/toUpperCase).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.toUpper('--foo-bar--');
- * // => '--FOO-BAR--'
- *
- * _.toUpper('fooBar');
- * // => 'FOOBAR'
- *
- * _.toUpper('__foo_bar__');
- * // => '__FOO_BAR__'
- */
-function toUpper(value) {
-  return toString(value).toUpperCase();
-}
-
-module.exports = toUpper;
Index: ckend/node_modules/lodash/transform.js
===================================================================
--- backend/node_modules/lodash/transform.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-var arrayEach = require('./_arrayEach'),
-    baseCreate = require('./_baseCreate'),
-    baseForOwn = require('./_baseForOwn'),
-    baseIteratee = require('./_baseIteratee'),
-    getPrototype = require('./_getPrototype'),
-    isArray = require('./isArray'),
-    isBuffer = require('./isBuffer'),
-    isFunction = require('./isFunction'),
-    isObject = require('./isObject'),
-    isTypedArray = require('./isTypedArray');
-
-/**
- * An alternative to `_.reduce`; this method transforms `object` to a new
- * `accumulator` object which is the result of running each of its own
- * enumerable string keyed properties thru `iteratee`, with each invocation
- * potentially mutating the `accumulator` object. If `accumulator` is not
- * provided, a new object with the same `[[Prototype]]` will be used. The
- * iteratee is invoked with four arguments: (accumulator, value, key, object).
- * Iteratee functions may exit iteration early by explicitly returning `false`.
- *
- * @static
- * @memberOf _
- * @since 1.3.0
- * @category Object
- * @param {Object} object The object to iterate over.
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
- * @param {*} [accumulator] The custom accumulator value.
- * @returns {*} Returns the accumulated value.
- * @example
- *
- * _.transform([2, 3, 4], function(result, n) {
- *   result.push(n *= n);
- *   return n % 2 == 0;
- * }, []);
- * // => [4, 9]
- *
- * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
- *   (result[value] || (result[value] = [])).push(key);
- * }, {});
- * // => { '1': ['a', 'c'], '2': ['b'] }
- */
-function transform(object, iteratee, accumulator) {
-  var isArr = isArray(object),
-      isArrLike = isArr || isBuffer(object) || isTypedArray(object);
-
-  iteratee = baseIteratee(iteratee, 4);
-  if (accumulator == null) {
-    var Ctor = object && object.constructor;
-    if (isArrLike) {
-      accumulator = isArr ? new Ctor : [];
-    }
-    else if (isObject(object)) {
-      accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};
-    }
-    else {
-      accumulator = {};
-    }
-  }
-  (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {
-    return iteratee(accumulator, value, index, object);
-  });
-  return accumulator;
-}
-
-module.exports = transform;
Index: ckend/node_modules/lodash/trim.js
===================================================================
--- backend/node_modules/lodash/trim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-var baseToString = require('./_baseToString'),
-    baseTrim = require('./_baseTrim'),
-    castSlice = require('./_castSlice'),
-    charsEndIndex = require('./_charsEndIndex'),
-    charsStartIndex = require('./_charsStartIndex'),
-    stringToArray = require('./_stringToArray'),
-    toString = require('./toString');
-
-/**
- * Removes leading and trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trim('  abc  ');
- * // => 'abc'
- *
- * _.trim('-_-abc-_-', '_-');
- * // => 'abc'
- *
- * _.map(['  foo  ', '  bar  '], _.trim);
- * // => ['foo', 'bar']
- */
-function trim(string, chars, guard) {
-  string = toString(string);
-  if (string && (guard || chars === undefined)) {
-    return baseTrim(string);
-  }
-  if (!string || !(chars = baseToString(chars))) {
-    return string;
-  }
-  var strSymbols = stringToArray(string),
-      chrSymbols = stringToArray(chars),
-      start = charsStartIndex(strSymbols, chrSymbols),
-      end = charsEndIndex(strSymbols, chrSymbols) + 1;
-
-  return castSlice(strSymbols, start, end).join('');
-}
-
-module.exports = trim;
Index: ckend/node_modules/lodash/trimEnd.js
===================================================================
--- backend/node_modules/lodash/trimEnd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-var baseToString = require('./_baseToString'),
-    castSlice = require('./_castSlice'),
-    charsEndIndex = require('./_charsEndIndex'),
-    stringToArray = require('./_stringToArray'),
-    toString = require('./toString'),
-    trimmedEndIndex = require('./_trimmedEndIndex');
-
-/**
- * Removes trailing whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimEnd('  abc  ');
- * // => '  abc'
- *
- * _.trimEnd('-_-abc-_-', '_-');
- * // => '-_-abc'
- */
-function trimEnd(string, chars, guard) {
-  string = toString(string);
-  if (string && (guard || chars === undefined)) {
-    return string.slice(0, trimmedEndIndex(string) + 1);
-  }
-  if (!string || !(chars = baseToString(chars))) {
-    return string;
-  }
-  var strSymbols = stringToArray(string),
-      end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;
-
-  return castSlice(strSymbols, 0, end).join('');
-}
-
-module.exports = trimEnd;
Index: ckend/node_modules/lodash/trimStart.js
===================================================================
--- backend/node_modules/lodash/trimStart.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-var baseToString = require('./_baseToString'),
-    castSlice = require('./_castSlice'),
-    charsStartIndex = require('./_charsStartIndex'),
-    stringToArray = require('./_stringToArray'),
-    toString = require('./toString');
-
-/** Used to match leading whitespace. */
-var reTrimStart = /^\s+/;
-
-/**
- * Removes leading whitespace or specified characters from `string`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to trim.
- * @param {string} [chars=whitespace] The characters to trim.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {string} Returns the trimmed string.
- * @example
- *
- * _.trimStart('  abc  ');
- * // => 'abc  '
- *
- * _.trimStart('-_-abc-_-', '_-');
- * // => 'abc-_-'
- */
-function trimStart(string, chars, guard) {
-  string = toString(string);
-  if (string && (guard || chars === undefined)) {
-    return string.replace(reTrimStart, '');
-  }
-  if (!string || !(chars = baseToString(chars))) {
-    return string;
-  }
-  var strSymbols = stringToArray(string),
-      start = charsStartIndex(strSymbols, stringToArray(chars));
-
-  return castSlice(strSymbols, start).join('');
-}
-
-module.exports = trimStart;
Index: ckend/node_modules/lodash/truncate.js
===================================================================
--- backend/node_modules/lodash/truncate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-var baseToString = require('./_baseToString'),
-    castSlice = require('./_castSlice'),
-    hasUnicode = require('./_hasUnicode'),
-    isObject = require('./isObject'),
-    isRegExp = require('./isRegExp'),
-    stringSize = require('./_stringSize'),
-    stringToArray = require('./_stringToArray'),
-    toInteger = require('./toInteger'),
-    toString = require('./toString');
-
-/** Used as default options for `_.truncate`. */
-var DEFAULT_TRUNC_LENGTH = 30,
-    DEFAULT_TRUNC_OMISSION = '...';
-
-/** Used to match `RegExp` flags from their coerced string values. */
-var reFlags = /\w*$/;
-
-/**
- * Truncates `string` if it's longer than the given maximum string length.
- * The last characters of the truncated string are replaced with the omission
- * string which defaults to "...".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to truncate.
- * @param {Object} [options={}] The options object.
- * @param {number} [options.length=30] The maximum string length.
- * @param {string} [options.omission='...'] The string to indicate text is omitted.
- * @param {RegExp|string} [options.separator] The separator pattern to truncate to.
- * @returns {string} Returns the truncated string.
- * @example
- *
- * _.truncate('hi-diddly-ho there, neighborino');
- * // => 'hi-diddly-ho there, neighbo...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- *   'length': 24,
- *   'separator': ' '
- * });
- * // => 'hi-diddly-ho there,...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- *   'length': 24,
- *   'separator': /,? +/
- * });
- * // => 'hi-diddly-ho there...'
- *
- * _.truncate('hi-diddly-ho there, neighborino', {
- *   'omission': ' [...]'
- * });
- * // => 'hi-diddly-ho there, neig [...]'
- */
-function truncate(string, options) {
-  var length = DEFAULT_TRUNC_LENGTH,
-      omission = DEFAULT_TRUNC_OMISSION;
-
-  if (isObject(options)) {
-    var separator = 'separator' in options ? options.separator : separator;
-    length = 'length' in options ? toInteger(options.length) : length;
-    omission = 'omission' in options ? baseToString(options.omission) : omission;
-  }
-  string = toString(string);
-
-  var strLength = string.length;
-  if (hasUnicode(string)) {
-    var strSymbols = stringToArray(string);
-    strLength = strSymbols.length;
-  }
-  if (length >= strLength) {
-    return string;
-  }
-  var end = length - stringSize(omission);
-  if (end < 1) {
-    return omission;
-  }
-  var result = strSymbols
-    ? castSlice(strSymbols, 0, end).join('')
-    : string.slice(0, end);
-
-  if (separator === undefined) {
-    return result + omission;
-  }
-  if (strSymbols) {
-    end += (result.length - end);
-  }
-  if (isRegExp(separator)) {
-    if (string.slice(end).search(separator)) {
-      var match,
-          substring = result;
-
-      if (!separator.global) {
-        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');
-      }
-      separator.lastIndex = 0;
-      while ((match = separator.exec(substring))) {
-        var newEnd = match.index;
-      }
-      result = result.slice(0, newEnd === undefined ? end : newEnd);
-    }
-  } else if (string.indexOf(baseToString(separator), end) != end) {
-    var index = result.lastIndexOf(separator);
-    if (index > -1) {
-      result = result.slice(0, index);
-    }
-  }
-  return result + omission;
-}
-
-module.exports = truncate;
Index: ckend/node_modules/lodash/unary.js
===================================================================
--- backend/node_modules/lodash/unary.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var ary = require('./ary');
-
-/**
- * Creates a function that accepts up to one argument, ignoring any
- * additional arguments.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Function
- * @param {Function} func The function to cap arguments for.
- * @returns {Function} Returns the new capped function.
- * @example
- *
- * _.map(['6', '8', '10'], _.unary(parseInt));
- * // => [6, 8, 10]
- */
-function unary(func) {
-  return ary(func, 1);
-}
-
-module.exports = unary;
Index: ckend/node_modules/lodash/unescape.js
===================================================================
--- backend/node_modules/lodash/unescape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var toString = require('./toString'),
-    unescapeHtmlChar = require('./_unescapeHtmlChar');
-
-/** Used to match HTML entities and HTML characters. */
-var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,
-    reHasEscapedHtml = RegExp(reEscapedHtml.source);
-
-/**
- * The inverse of `_.escape`; this method converts the HTML entities
- * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to
- * their corresponding characters.
- *
- * **Note:** No other HTML entities are unescaped. To unescape additional
- * HTML entities use a third-party library like [_he_](https://mths.be/he).
- *
- * @static
- * @memberOf _
- * @since 0.6.0
- * @category String
- * @param {string} [string=''] The string to unescape.
- * @returns {string} Returns the unescaped string.
- * @example
- *
- * _.unescape('fred, barney, &amp; pebbles');
- * // => 'fred, barney, & pebbles'
- */
-function unescape(string) {
-  string = toString(string);
-  return (string && reHasEscapedHtml.test(string))
-    ? string.replace(reEscapedHtml, unescapeHtmlChar)
-    : string;
-}
-
-module.exports = unescape;
Index: ckend/node_modules/lodash/union.js
===================================================================
--- backend/node_modules/lodash/union.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    baseRest = require('./_baseRest'),
-    baseUniq = require('./_baseUniq'),
-    isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of unique values, in order, from all given arrays using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.union([2], [1, 2]);
- * // => [2, 1]
- */
-var union = baseRest(function(arrays) {
-  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));
-});
-
-module.exports = union;
Index: ckend/node_modules/lodash/unionBy.js
===================================================================
--- backend/node_modules/lodash/unionBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    baseUniq = require('./_baseUniq'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.union` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which uniqueness is computed. Result values are chosen from the first
- * array in which the value occurs. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * _.unionBy([2.1], [1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-var unionBy = baseRest(function(arrays) {
-  var iteratee = last(arrays);
-  if (isArrayLikeObject(iteratee)) {
-    iteratee = undefined;
-  }
-  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2));
-});
-
-module.exports = unionBy;
Index: ckend/node_modules/lodash/unionWith.js
===================================================================
--- backend/node_modules/lodash/unionWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseFlatten = require('./_baseFlatten'),
-    baseRest = require('./_baseRest'),
-    baseUniq = require('./_baseUniq'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.union` except that it accepts `comparator` which
- * is invoked to compare elements of `arrays`. Result values are chosen from
- * the first array in which the value occurs. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of combined values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.unionWith(objects, others, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
-var unionWith = baseRest(function(arrays) {
-  var comparator = last(arrays);
-  comparator = typeof comparator == 'function' ? comparator : undefined;
-  return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);
-});
-
-module.exports = unionWith;
Index: ckend/node_modules/lodash/uniq.js
===================================================================
--- backend/node_modules/lodash/uniq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-var baseUniq = require('./_baseUniq');
-
-/**
- * Creates a duplicate-free version of an array, using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons, in which only the first occurrence of each element
- * is kept. The order of result values is determined by the order they occur
- * in the array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniq([2, 1, 2]);
- * // => [2, 1]
- */
-function uniq(array) {
-  return (array && array.length) ? baseUniq(array) : [];
-}
-
-module.exports = uniq;
Index: ckend/node_modules/lodash/uniqBy.js
===================================================================
--- backend/node_modules/lodash/uniqBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseIteratee = require('./_baseIteratee'),
-    baseUniq = require('./_baseUniq');
-
-/**
- * This method is like `_.uniq` except that it accepts `iteratee` which is
- * invoked for each element in `array` to generate the criterion by which
- * uniqueness is computed. The order of result values is determined by the
- * order they occur in the array. The iteratee is invoked with one argument:
- * (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
- * // => [2.1, 1.2]
- *
- * // The `_.property` iteratee shorthand.
- * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 1 }, { 'x': 2 }]
- */
-function uniqBy(array, iteratee) {
-  return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : [];
-}
-
-module.exports = uniqBy;
Index: ckend/node_modules/lodash/uniqWith.js
===================================================================
--- backend/node_modules/lodash/uniqWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var baseUniq = require('./_baseUniq');
-
-/**
- * This method is like `_.uniq` except that it accepts `comparator` which
- * is invoked to compare elements of `array`. The order of result values is
- * determined by the order they occur in the array.The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new duplicate free array.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.uniqWith(objects, _.isEqual);
- * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]
- */
-function uniqWith(array, comparator) {
-  comparator = typeof comparator == 'function' ? comparator : undefined;
-  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];
-}
-
-module.exports = uniqWith;
Index: ckend/node_modules/lodash/uniqueId.js
===================================================================
--- backend/node_modules/lodash/uniqueId.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var toString = require('./toString');
-
-/** Used to generate unique IDs. */
-var idCounter = 0;
-
-/**
- * Generates a unique ID. If `prefix` is given, the ID is appended to it.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Util
- * @param {string} [prefix=''] The value to prefix the ID with.
- * @returns {string} Returns the unique ID.
- * @example
- *
- * _.uniqueId('contact_');
- * // => 'contact_104'
- *
- * _.uniqueId();
- * // => '105'
- */
-function uniqueId(prefix) {
-  var id = ++idCounter;
-  return toString(prefix) + id;
-}
-
-module.exports = uniqueId;
Index: ckend/node_modules/lodash/unset.js
===================================================================
--- backend/node_modules/lodash/unset.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseUnset = require('./_baseUnset');
-
-/**
- * Removes the property at `path` of `object`.
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to unset.
- * @returns {boolean} Returns `true` if the property is deleted, else `false`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 7 } }] };
- * _.unset(object, 'a[0].b.c');
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- *
- * _.unset(object, ['a', '0', 'b', 'c']);
- * // => true
- *
- * console.log(object);
- * // => { 'a': [{ 'b': {} }] };
- */
-function unset(object, path) {
-  return object == null ? true : baseUnset(object, path);
-}
-
-module.exports = unset;
Index: ckend/node_modules/lodash/unzip.js
===================================================================
--- backend/node_modules/lodash/unzip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    arrayMap = require('./_arrayMap'),
-    baseProperty = require('./_baseProperty'),
-    baseTimes = require('./_baseTimes'),
-    isArrayLikeObject = require('./isArrayLikeObject');
-
-/* Built-in method references for those with the same name as other `lodash` methods. */
-var nativeMax = Math.max;
-
-/**
- * This method is like `_.zip` except that it accepts an array of grouped
- * elements and creates an array regrouping the elements to their pre-zip
- * configuration.
- *
- * @static
- * @memberOf _
- * @since 1.2.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- *
- * _.unzip(zipped);
- * // => [['a', 'b'], [1, 2], [true, false]]
- */
-function unzip(array) {
-  if (!(array && array.length)) {
-    return [];
-  }
-  var length = 0;
-  array = arrayFilter(array, function(group) {
-    if (isArrayLikeObject(group)) {
-      length = nativeMax(group.length, length);
-      return true;
-    }
-  });
-  return baseTimes(length, function(index) {
-    return arrayMap(array, baseProperty(index));
-  });
-}
-
-module.exports = unzip;
Index: ckend/node_modules/lodash/unzipWith.js
===================================================================
--- backend/node_modules/lodash/unzipWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var apply = require('./_apply'),
-    arrayMap = require('./_arrayMap'),
-    unzip = require('./unzip');
-
-/**
- * This method is like `_.unzip` except that it accepts `iteratee` to specify
- * how regrouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {Array} array The array of grouped elements to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- *  regrouped values.
- * @returns {Array} Returns the new array of regrouped elements.
- * @example
- *
- * var zipped = _.zip([1, 2], [10, 20], [100, 200]);
- * // => [[1, 10, 100], [2, 20, 200]]
- *
- * _.unzipWith(zipped, _.add);
- * // => [3, 30, 300]
- */
-function unzipWith(array, iteratee) {
-  if (!(array && array.length)) {
-    return [];
-  }
-  var result = unzip(array);
-  if (iteratee == null) {
-    return result;
-  }
-  return arrayMap(result, function(group) {
-    return apply(iteratee, undefined, group);
-  });
-}
-
-module.exports = unzipWith;
Index: ckend/node_modules/lodash/update.js
===================================================================
--- backend/node_modules/lodash/update.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var baseUpdate = require('./_baseUpdate'),
-    castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.set` except that accepts `updater` to produce the
- * value to set. Use `_.updateWith` to customize `path` creation. The `updater`
- * is invoked with one argument: (value).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }] };
- *
- * _.update(object, 'a[0].b.c', function(n) { return n * n; });
- * console.log(object.a[0].b.c);
- * // => 9
- *
- * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });
- * console.log(object.x[0].y.z);
- * // => 0
- */
-function update(object, path, updater) {
-  return object == null ? object : baseUpdate(object, path, castFunction(updater));
-}
-
-module.exports = update;
Index: ckend/node_modules/lodash/updateWith.js
===================================================================
--- backend/node_modules/lodash/updateWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-var baseUpdate = require('./_baseUpdate'),
-    castFunction = require('./_castFunction');
-
-/**
- * This method is like `_.update` except that it accepts `customizer` which is
- * invoked to produce the objects of `path`.  If `customizer` returns `undefined`
- * path creation is handled by the method instead. The `customizer` is invoked
- * with three arguments: (nsValue, key, nsObject).
- *
- * **Note:** This method mutates `object`.
- *
- * @static
- * @memberOf _
- * @since 4.6.0
- * @category Object
- * @param {Object} object The object to modify.
- * @param {Array|string} path The path of the property to set.
- * @param {Function} updater The function to produce the updated value.
- * @param {Function} [customizer] The function to customize assigned values.
- * @returns {Object} Returns `object`.
- * @example
- *
- * var object = {};
- *
- * _.updateWith(object, '[0][1]', _.constant('a'), Object);
- * // => { '0': { '1': 'a' } }
- */
-function updateWith(object, path, updater, customizer) {
-  customizer = typeof customizer == 'function' ? customizer : undefined;
-  return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);
-}
-
-module.exports = updateWith;
Index: ckend/node_modules/lodash/upperCase.js
===================================================================
--- backend/node_modules/lodash/upperCase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-var createCompounder = require('./_createCompounder');
-
-/**
- * Converts `string`, as space separated words, to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the upper cased string.
- * @example
- *
- * _.upperCase('--foo-bar');
- * // => 'FOO BAR'
- *
- * _.upperCase('fooBar');
- * // => 'FOO BAR'
- *
- * _.upperCase('__foo_bar__');
- * // => 'FOO BAR'
- */
-var upperCase = createCompounder(function(result, word, index) {
-  return result + (index ? ' ' : '') + word.toUpperCase();
-});
-
-module.exports = upperCase;
Index: ckend/node_modules/lodash/upperFirst.js
===================================================================
--- backend/node_modules/lodash/upperFirst.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var createCaseFirst = require('./_createCaseFirst');
-
-/**
- * Converts the first character of `string` to upper case.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category String
- * @param {string} [string=''] The string to convert.
- * @returns {string} Returns the converted string.
- * @example
- *
- * _.upperFirst('fred');
- * // => 'Fred'
- *
- * _.upperFirst('FRED');
- * // => 'FRED'
- */
-var upperFirst = createCaseFirst('toUpperCase');
-
-module.exports = upperFirst;
Index: ckend/node_modules/lodash/util.js
===================================================================
--- backend/node_modules/lodash/util.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-module.exports = {
-  'attempt': require('./attempt'),
-  'bindAll': require('./bindAll'),
-  'cond': require('./cond'),
-  'conforms': require('./conforms'),
-  'constant': require('./constant'),
-  'defaultTo': require('./defaultTo'),
-  'flow': require('./flow'),
-  'flowRight': require('./flowRight'),
-  'identity': require('./identity'),
-  'iteratee': require('./iteratee'),
-  'matches': require('./matches'),
-  'matchesProperty': require('./matchesProperty'),
-  'method': require('./method'),
-  'methodOf': require('./methodOf'),
-  'mixin': require('./mixin'),
-  'noop': require('./noop'),
-  'nthArg': require('./nthArg'),
-  'over': require('./over'),
-  'overEvery': require('./overEvery'),
-  'overSome': require('./overSome'),
-  'property': require('./property'),
-  'propertyOf': require('./propertyOf'),
-  'range': require('./range'),
-  'rangeRight': require('./rangeRight'),
-  'stubArray': require('./stubArray'),
-  'stubFalse': require('./stubFalse'),
-  'stubObject': require('./stubObject'),
-  'stubString': require('./stubString'),
-  'stubTrue': require('./stubTrue'),
-  'times': require('./times'),
-  'toPath': require('./toPath'),
-  'uniqueId': require('./uniqueId')
-};
Index: ckend/node_modules/lodash/value.js
===================================================================
--- backend/node_modules/lodash/value.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./wrapperValue');
Index: ckend/node_modules/lodash/valueOf.js
===================================================================
--- backend/node_modules/lodash/valueOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require('./wrapperValue');
Index: ckend/node_modules/lodash/values.js
===================================================================
--- backend/node_modules/lodash/values.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var baseValues = require('./_baseValues'),
-    keys = require('./keys');
-
-/**
- * Creates an array of the own enumerable string keyed property values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @since 0.1.0
- * @memberOf _
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.values(new Foo);
- * // => [1, 2] (iteration order is not guaranteed)
- *
- * _.values('hi');
- * // => ['h', 'i']
- */
-function values(object) {
-  return object == null ? [] : baseValues(object, keys(object));
-}
-
-module.exports = values;
Index: ckend/node_modules/lodash/valuesIn.js
===================================================================
--- backend/node_modules/lodash/valuesIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseValues = require('./_baseValues'),
-    keysIn = require('./keysIn');
-
-/**
- * Creates an array of the own and inherited enumerable string keyed property
- * values of `object`.
- *
- * **Note:** Non-object values are coerced to objects.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Object
- * @param {Object} object The object to query.
- * @returns {Array} Returns the array of property values.
- * @example
- *
- * function Foo() {
- *   this.a = 1;
- *   this.b = 2;
- * }
- *
- * Foo.prototype.c = 3;
- *
- * _.valuesIn(new Foo);
- * // => [1, 2, 3] (iteration order is not guaranteed)
- */
-function valuesIn(object) {
-  return object == null ? [] : baseValues(object, keysIn(object));
-}
-
-module.exports = valuesIn;
Index: ckend/node_modules/lodash/without.js
===================================================================
--- backend/node_modules/lodash/without.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-var baseDifference = require('./_baseDifference'),
-    baseRest = require('./_baseRest'),
-    isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array excluding all given values using
- * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
- * for equality comparisons.
- *
- * **Note:** Unlike `_.pull`, this method returns a new array.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {Array} array The array to inspect.
- * @param {...*} [values] The values to exclude.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.xor
- * @example
- *
- * _.without([2, 1, 2, 3], 1, 2);
- * // => [3]
- */
-var without = baseRest(function(array, values) {
-  return isArrayLikeObject(array)
-    ? baseDifference(array, values)
-    : [];
-});
-
-module.exports = without;
Index: ckend/node_modules/lodash/words.js
===================================================================
--- backend/node_modules/lodash/words.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var asciiWords = require('./_asciiWords'),
-    hasUnicodeWord = require('./_hasUnicodeWord'),
-    toString = require('./toString'),
-    unicodeWords = require('./_unicodeWords');
-
-/**
- * Splits `string` into an array of its words.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category String
- * @param {string} [string=''] The string to inspect.
- * @param {RegExp|string} [pattern] The pattern to match words.
- * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.
- * @returns {Array} Returns the words of `string`.
- * @example
- *
- * _.words('fred, barney, & pebbles');
- * // => ['fred', 'barney', 'pebbles']
- *
- * _.words('fred, barney, & pebbles', /[^, ]+/g);
- * // => ['fred', 'barney', '&', 'pebbles']
- */
-function words(string, pattern, guard) {
-  string = toString(string);
-  pattern = guard ? undefined : pattern;
-
-  if (pattern === undefined) {
-    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
-  }
-  return string.match(pattern) || [];
-}
-
-module.exports = words;
Index: ckend/node_modules/lodash/wrap.js
===================================================================
--- backend/node_modules/lodash/wrap.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-var castFunction = require('./_castFunction'),
-    partial = require('./partial');
-
-/**
- * Creates a function that provides `value` to `wrapper` as its first
- * argument. Any additional arguments provided to the function are appended
- * to those provided to the `wrapper`. The wrapper is invoked with the `this`
- * binding of the created function.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Function
- * @param {*} value The value to wrap.
- * @param {Function} [wrapper=identity] The wrapper function.
- * @returns {Function} Returns the new function.
- * @example
- *
- * var p = _.wrap(_.escape, function(func, text) {
- *   return '<p>' + func(text) + '</p>';
- * });
- *
- * p('fred, barney, & pebbles');
- * // => '<p>fred, barney, &amp; pebbles</p>'
- */
-function wrap(value, wrapper) {
-  return partial(castFunction(wrapper), value);
-}
-
-module.exports = wrap;
Index: ckend/node_modules/lodash/wrapperAt.js
===================================================================
--- backend/node_modules/lodash/wrapperAt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    LodashWrapper = require('./_LodashWrapper'),
-    baseAt = require('./_baseAt'),
-    flatRest = require('./_flatRest'),
-    isIndex = require('./_isIndex'),
-    thru = require('./thru');
-
-/**
- * This method is the wrapper version of `_.at`.
- *
- * @name at
- * @memberOf _
- * @since 1.0.0
- * @category Seq
- * @param {...(string|string[])} [paths] The property paths to pick.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
- *
- * _(object).at(['a[0].b.c', 'a[1]']).value();
- * // => [3, 4]
- */
-var wrapperAt = flatRest(function(paths) {
-  var length = paths.length,
-      start = length ? paths[0] : 0,
-      value = this.__wrapped__,
-      interceptor = function(object) { return baseAt(object, paths); };
-
-  if (length > 1 || this.__actions__.length ||
-      !(value instanceof LazyWrapper) || !isIndex(start)) {
-    return this.thru(interceptor);
-  }
-  value = value.slice(start, +start + (length ? 1 : 0));
-  value.__actions__.push({
-    'func': thru,
-    'args': [interceptor],
-    'thisArg': undefined
-  });
-  return new LodashWrapper(value, this.__chain__).thru(function(array) {
-    if (length && !array.length) {
-      array.push(undefined);
-    }
-    return array;
-  });
-});
-
-module.exports = wrapperAt;
Index: ckend/node_modules/lodash/wrapperChain.js
===================================================================
--- backend/node_modules/lodash/wrapperChain.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var chain = require('./chain');
-
-/**
- * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.
- *
- * @name chain
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var users = [
- *   { 'user': 'barney', 'age': 36 },
- *   { 'user': 'fred',   'age': 40 }
- * ];
- *
- * // A sequence without explicit chaining.
- * _(users).head();
- * // => { 'user': 'barney', 'age': 36 }
- *
- * // A sequence with explicit chaining.
- * _(users)
- *   .chain()
- *   .head()
- *   .pick('user')
- *   .value();
- * // => { 'user': 'barney' }
- */
-function wrapperChain() {
-  return chain(this);
-}
-
-module.exports = wrapperChain;
Index: ckend/node_modules/lodash/wrapperLodash.js
===================================================================
--- backend/node_modules/lodash/wrapperLodash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,147 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    LodashWrapper = require('./_LodashWrapper'),
-    baseLodash = require('./_baseLodash'),
-    isArray = require('./isArray'),
-    isObjectLike = require('./isObjectLike'),
-    wrapperClone = require('./_wrapperClone');
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Creates a `lodash` object which wraps `value` to enable implicit method
- * chain sequences. Methods that operate on and return arrays, collections,
- * and functions can be chained together. Methods that retrieve a single value
- * or may return a primitive value will automatically end the chain sequence
- * and return the unwrapped value. Otherwise, the value must be unwrapped
- * with `_#value`.
- *
- * Explicit chain sequences, which must be unwrapped with `_#value`, may be
- * enabled using `_.chain`.
- *
- * The execution of chained methods is lazy, that is, it's deferred until
- * `_#value` is implicitly or explicitly called.
- *
- * Lazy evaluation allows several methods to support shortcut fusion.
- * Shortcut fusion is an optimization to merge iteratee calls; this avoids
- * the creation of intermediate arrays and can greatly reduce the number of
- * iteratee executions. Sections of a chain sequence qualify for shortcut
- * fusion if the section is applied to an array and iteratees accept only
- * one argument. The heuristic for whether a section qualifies for shortcut
- * fusion is subject to change.
- *
- * Chaining is supported in custom builds as long as the `_#value` method is
- * directly or indirectly included in the build.
- *
- * In addition to lodash methods, wrappers have `Array` and `String` methods.
- *
- * The wrapper `Array` methods are:
- * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
- *
- * The wrapper `String` methods are:
- * `replace` and `split`
- *
- * The wrapper methods that support shortcut fusion are:
- * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
- * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
- * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
- *
- * The chainable wrapper methods are:
- * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
- * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
- * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
- * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
- * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
- * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
- * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
- * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
- * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
- * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
- * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
- * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
- * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
- * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
- * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
- * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
- * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
- * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
- * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
- * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
- * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
- * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
- * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
- * `zipObject`, `zipObjectDeep`, and `zipWith`
- *
- * The wrapper methods that are **not** chainable by default are:
- * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
- * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
- * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
- * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
- * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
- * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
- * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
- * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
- * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
- * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
- * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
- * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
- * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
- * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
- * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
- * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
- * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
- * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
- * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
- * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
- * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
- * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
- * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
- * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
- * `upperFirst`, `value`, and `words`
- *
- * @name _
- * @constructor
- * @category Seq
- * @param {*} value The value to wrap in a `lodash` instance.
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * function square(n) {
- *   return n * n;
- * }
- *
- * var wrapped = _([1, 2, 3]);
- *
- * // Returns an unwrapped value.
- * wrapped.reduce(_.add);
- * // => 6
- *
- * // Returns a wrapped value.
- * var squares = wrapped.map(square);
- *
- * _.isArray(squares);
- * // => false
- *
- * _.isArray(squares.value());
- * // => true
- */
-function lodash(value) {
-  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
-    if (value instanceof LodashWrapper) {
-      return value;
-    }
-    if (hasOwnProperty.call(value, '__wrapped__')) {
-      return wrapperClone(value);
-    }
-  }
-  return new LodashWrapper(value);
-}
-
-// Ensure wrappers are instances of `baseLodash`.
-lodash.prototype = baseLodash.prototype;
-lodash.prototype.constructor = lodash;
-
-module.exports = lodash;
Index: ckend/node_modules/lodash/wrapperReverse.js
===================================================================
--- backend/node_modules/lodash/wrapperReverse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var LazyWrapper = require('./_LazyWrapper'),
-    LodashWrapper = require('./_LodashWrapper'),
-    reverse = require('./reverse'),
-    thru = require('./thru');
-
-/**
- * This method is the wrapper version of `_.reverse`.
- *
- * **Note:** This method mutates the wrapped array.
- *
- * @name reverse
- * @memberOf _
- * @since 0.1.0
- * @category Seq
- * @returns {Object} Returns the new `lodash` wrapper instance.
- * @example
- *
- * var array = [1, 2, 3];
- *
- * _(array).reverse().value()
- * // => [3, 2, 1]
- *
- * console.log(array);
- * // => [3, 2, 1]
- */
-function wrapperReverse() {
-  var value = this.__wrapped__;
-  if (value instanceof LazyWrapper) {
-    var wrapped = value;
-    if (this.__actions__.length) {
-      wrapped = new LazyWrapper(this);
-    }
-    wrapped = wrapped.reverse();
-    wrapped.__actions__.push({
-      'func': thru,
-      'args': [reverse],
-      'thisArg': undefined
-    });
-    return new LodashWrapper(wrapped, this.__chain__);
-  }
-  return this.thru(reverse);
-}
-
-module.exports = wrapperReverse;
Index: ckend/node_modules/lodash/wrapperValue.js
===================================================================
--- backend/node_modules/lodash/wrapperValue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var baseWrapperValue = require('./_baseWrapperValue');
-
-/**
- * Executes the chain sequence to resolve the unwrapped value.
- *
- * @name value
- * @memberOf _
- * @since 0.1.0
- * @alias toJSON, valueOf
- * @category Seq
- * @returns {*} Returns the resolved unwrapped value.
- * @example
- *
- * _([1, 2, 3]).value();
- * // => [1, 2, 3]
- */
-function wrapperValue() {
-  return baseWrapperValue(this.__wrapped__, this.__actions__);
-}
-
-module.exports = wrapperValue;
Index: ckend/node_modules/lodash/xor.js
===================================================================
--- backend/node_modules/lodash/xor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    baseRest = require('./_baseRest'),
-    baseXor = require('./_baseXor'),
-    isArrayLikeObject = require('./isArrayLikeObject');
-
-/**
- * Creates an array of unique values that is the
- * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)
- * of the given arrays. The order of result values is determined by the order
- * they occur in the arrays.
- *
- * @static
- * @memberOf _
- * @since 2.4.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @returns {Array} Returns the new array of filtered values.
- * @see _.difference, _.without
- * @example
- *
- * _.xor([2, 1], [2, 3]);
- * // => [1, 3]
- */
-var xor = baseRest(function(arrays) {
-  return baseXor(arrayFilter(arrays, isArrayLikeObject));
-});
-
-module.exports = xor;
Index: ckend/node_modules/lodash/xorBy.js
===================================================================
--- backend/node_modules/lodash/xorBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    baseIteratee = require('./_baseIteratee'),
-    baseRest = require('./_baseRest'),
-    baseXor = require('./_baseXor'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.xor` except that it accepts `iteratee` which is
- * invoked for each element of each `arrays` to generate the criterion by
- * which by which they're compared. The order of result values is determined
- * by the order they occur in the arrays. The iteratee is invoked with one
- * argument: (value).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [iteratee=_.identity] The iteratee invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);
- * // => [1.2, 3.4]
- *
- * // The `_.property` iteratee shorthand.
- * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');
- * // => [{ 'x': 2 }]
- */
-var xorBy = baseRest(function(arrays) {
-  var iteratee = last(arrays);
-  if (isArrayLikeObject(iteratee)) {
-    iteratee = undefined;
-  }
-  return baseXor(arrayFilter(arrays, isArrayLikeObject), baseIteratee(iteratee, 2));
-});
-
-module.exports = xorBy;
Index: ckend/node_modules/lodash/xorWith.js
===================================================================
--- backend/node_modules/lodash/xorWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-var arrayFilter = require('./_arrayFilter'),
-    baseRest = require('./_baseRest'),
-    baseXor = require('./_baseXor'),
-    isArrayLikeObject = require('./isArrayLikeObject'),
-    last = require('./last');
-
-/**
- * This method is like `_.xor` except that it accepts `comparator` which is
- * invoked to compare elements of `arrays`. The order of result values is
- * determined by the order they occur in the arrays. The comparator is invoked
- * with two arguments: (arrVal, othVal).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Array
- * @param {...Array} [arrays] The arrays to inspect.
- * @param {Function} [comparator] The comparator invoked per element.
- * @returns {Array} Returns the new array of filtered values.
- * @example
- *
- * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
- * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
- *
- * _.xorWith(objects, others, _.isEqual);
- * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]
- */
-var xorWith = baseRest(function(arrays) {
-  var comparator = last(arrays);
-  comparator = typeof comparator == 'function' ? comparator : undefined;
-  return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);
-});
-
-module.exports = xorWith;
Index: ckend/node_modules/lodash/zip.js
===================================================================
--- backend/node_modules/lodash/zip.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-var baseRest = require('./_baseRest'),
-    unzip = require('./unzip');
-
-/**
- * Creates an array of grouped elements, the first of which contains the
- * first elements of the given arrays, the second of which contains the
- * second elements of the given arrays, and so on.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zip(['a', 'b'], [1, 2], [true, false]);
- * // => [['a', 1, true], ['b', 2, false]]
- */
-var zip = baseRest(unzip);
-
-module.exports = zip;
Index: ckend/node_modules/lodash/zipObject.js
===================================================================
--- backend/node_modules/lodash/zipObject.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-var assignValue = require('./_assignValue'),
-    baseZipObject = require('./_baseZipObject');
-
-/**
- * This method is like `_.fromPairs` except that it accepts two arrays,
- * one of property identifiers and one of corresponding values.
- *
- * @static
- * @memberOf _
- * @since 0.4.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObject(['a', 'b'], [1, 2]);
- * // => { 'a': 1, 'b': 2 }
- */
-function zipObject(props, values) {
-  return baseZipObject(props || [], values || [], assignValue);
-}
-
-module.exports = zipObject;
Index: ckend/node_modules/lodash/zipObjectDeep.js
===================================================================
--- backend/node_modules/lodash/zipObjectDeep.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-var baseSet = require('./_baseSet'),
-    baseZipObject = require('./_baseZipObject');
-
-/**
- * This method is like `_.zipObject` except that it supports property paths.
- *
- * @static
- * @memberOf _
- * @since 4.1.0
- * @category Array
- * @param {Array} [props=[]] The property identifiers.
- * @param {Array} [values=[]] The property values.
- * @returns {Object} Returns the new object.
- * @example
- *
- * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);
- * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }
- */
-function zipObjectDeep(props, values) {
-  return baseZipObject(props || [], values || [], baseSet);
-}
-
-module.exports = zipObjectDeep;
Index: ckend/node_modules/lodash/zipWith.js
===================================================================
--- backend/node_modules/lodash/zipWith.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-var baseRest = require('./_baseRest'),
-    unzipWith = require('./unzipWith');
-
-/**
- * This method is like `_.zip` except that it accepts `iteratee` to specify
- * how grouped values should be combined. The iteratee is invoked with the
- * elements of each group: (...group).
- *
- * @static
- * @memberOf _
- * @since 3.8.0
- * @category Array
- * @param {...Array} [arrays] The arrays to process.
- * @param {Function} [iteratee=_.identity] The function to combine
- *  grouped values.
- * @returns {Array} Returns the new array of grouped elements.
- * @example
- *
- * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {
- *   return a + b + c;
- * });
- * // => [111, 222]
- */
-var zipWith = baseRest(function(arrays) {
-  var length = arrays.length,
-      iteratee = length > 1 ? arrays[length - 1] : undefined;
-
-  iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;
-  return unzipWith(arrays, iteratee);
-});
-
-module.exports = zipWith;
Index: ckend/node_modules/moment-timezone/.editorconfig
===================================================================
--- backend/node_modules/moment-timezone/.editorconfig	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-root = true
-
-[*]
-indent_style = tab
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.min.js]
-insert_final_newline = false
-
-# It's not ideal to have 2 different styles, but this is just codifying what
-# already existed in the project.
-[*.{md,ts}]
-indent_style = space
-
-# Standard style for GitHub workflow files
-[*.yml]
-indent_style = space
-indent_size = 2
Index: ckend/node_modules/moment-timezone/LICENSE
===================================================================
--- backend/node_modules/moment-timezone/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/moment-timezone/README.md
===================================================================
--- backend/node_modules/moment-timezone/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-# [Moment Timezone](http://momentjs.com/timezone/)
-
-[![NPM version][npm-version-image]][npm-url]
-[![NPM downloads][npm-downloads-image]][npm-download-url]
-[![MIT License][license-image]][license-url]
-[![Build Status][ci-image]][ci-url]
-[![FOSSA Status][fossa-badge-image]][fossa-badge-url]
-
-IANA Time zone support for Moment.js
-
-## Project Status
-
-Moment-Timezone is an add-on for Moment.js.  Both are considered legacy projects, now in maintenance mode.  In most cases, you should choose a different library.
-
-For more details and recommendations, please see [Project Status](https://momentjs.com/docs/#/-project-status/) in the Moment docs.
-
-*Thank you.*
-
-## Resources
-
-- [Documentation](https://momentjs.com/timezone/docs/)
-- [Changelog](changelog.md)
-- [Stack Overflow](https://stackoverflow.com/questions/tagged/moment-timezone)
-
-## Examples
-
-```js
-var june = moment("2014-06-01T12:00:00Z");
-june.tz('America/Los_Angeles').format('ha z'); // 5am PDT
-june.tz('America/New_York').format('ha z');    // 8am EDT
-june.tz('Asia/Tokyo').format('ha z');          // 9pm JST
-june.tz('Australia/Sydney').format('ha z');    // 10pm EST
-
-var dec = moment("2014-12-01T12:00:00Z");
-dec.tz('America/Los_Angeles').format('ha z');  // 4am PST
-dec.tz('America/New_York').format('ha z');     // 7am EST
-dec.tz('Asia/Tokyo').format('ha z');           // 9pm JST
-dec.tz('Australia/Sydney').format('ha z');     // 11pm EST
-```
-
-## License
-
-Moment-timezone is freely distributable under the terms of the [MIT license][license-url].
-
-[![FOSSA Status][fossa-large-image]][fossa-large-url]
-
-
-[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat
-[license-url]: LICENSE
-
-[npm-url]: https://npmjs.org/package/moment-timezone
-[npm-version-image]: https://img.shields.io/npm/v/moment-timezone.svg?style=flat
-
-[npm-downloads-image]: https://img.shields.io/npm/dm/moment-timezone.svg?style=flat
-[npm-download-url]: https://npmcharts.com/compare/moment-timezone?minimal=true
-
-[ci-url]: https://github.com/moment/moment-timezone/actions/workflows/tests.yml?query=branch%253Adevelop
-[ci-image]: https://github.com/moment/moment-timezone/actions/workflows/tests.yml/badge.svg?query=branch%253Adevelop
-
-[fossa-badge-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment-timezone.svg?type=shield
-[fossa-badge-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment-timezone?ref=badge_shield
-
-[fossa-large-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment-timezone.svg?type=large
-[fossa-large-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment-timezone?ref=badge_large
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1582 +1,0 @@
-//! moment-timezone.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('moment')); // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	// Resolves es6 module loading issue
-	if (moment.version === undefined && moment.default) {
-		moment = moment.default;
-	}
-
-	// Do not load moment-timezone a second time.
-	// if (moment.tz !== undefined) {
-	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
-	// 	return moment;
-	// }
-
-	var VERSION = "0.5.48",
-		zones = {},
-		links = {},
-		countries = {},
-		names = {},
-		guesses = {},
-		cachedGuess;
-
-	if (!moment || typeof moment.version !== 'string') {
-		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
-	}
-
-	var momentVersion = moment.version.split('.'),
-		major = +momentVersion[0],
-		minor = +momentVersion[1];
-
-	// Moment.js version check
-	if (major < 2 || (major === 2 && minor < 6)) {
-		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
-	}
-
-	/************************************
-		Unpacking
-	************************************/
-
-	function charCodeToInt(charCode) {
-		if (charCode > 96) {
-			return charCode - 87;
-		} else if (charCode > 64) {
-			return charCode - 29;
-		}
-		return charCode - 48;
-	}
-
-	function unpackBase60(string) {
-		var i = 0,
-			parts = string.split('.'),
-			whole = parts[0],
-			fractional = parts[1] || '',
-			multiplier = 1,
-			num,
-			out = 0,
-			sign = 1;
-
-		// handle negative numbers
-		if (string.charCodeAt(0) === 45) {
-			i = 1;
-			sign = -1;
-		}
-
-		// handle digits before the decimal
-		for (i; i < whole.length; i++) {
-			num = charCodeToInt(whole.charCodeAt(i));
-			out = 60 * out + num;
-		}
-
-		// handle digits after the decimal
-		for (i = 0; i < fractional.length; i++) {
-			multiplier = multiplier / 60;
-			num = charCodeToInt(fractional.charCodeAt(i));
-			out += num * multiplier;
-		}
-
-		return out * sign;
-	}
-
-	function arrayToInt (array) {
-		for (var i = 0; i < array.length; i++) {
-			array[i] = unpackBase60(array[i]);
-		}
-	}
-
-	function intToUntil (array, length) {
-		for (var i = 0; i < length; i++) {
-			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
-		}
-
-		array[length - 1] = Infinity;
-	}
-
-	function mapIndices (source, indices) {
-		var out = [], i;
-
-		for (i = 0; i < indices.length; i++) {
-			out[i] = source[indices[i]];
-		}
-
-		return out;
-	}
-
-	function unpack (string) {
-		var data = string.split('|'),
-			offsets = data[2].split(' '),
-			indices = data[3].split(''),
-			untils  = data[4].split(' ');
-
-		arrayToInt(offsets);
-		arrayToInt(indices);
-		arrayToInt(untils);
-
-		intToUntil(untils, indices.length);
-
-		return {
-			name       : data[0],
-			abbrs      : mapIndices(data[1].split(' '), indices),
-			offsets    : mapIndices(offsets, indices),
-			untils     : untils,
-			population : data[5] | 0
-		};
-	}
-
-	/************************************
-		Zone object
-	************************************/
-
-	function Zone (packedString) {
-		if (packedString) {
-			this._set(unpack(packedString));
-		}
-	}
-
-	function closest (num, arr) {
-		var len = arr.length;
-		if (num < arr[0]) {
-			return 0;
-		} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {
-			return len - 1;
-		} else if (num >= arr[len - 1]) {
-			return -1;
-		}
-
-		var mid;
-		var lo = 0;
-		var hi = len - 1;
-		while (hi - lo > 1) {
-			mid = Math.floor((lo + hi) / 2);
-			if (arr[mid] <= num) {
-				lo = mid;
-			} else {
-				hi = mid;
-			}
-		}
-		return hi;
-	}
-
-	Zone.prototype = {
-		_set : function (unpacked) {
-			this.name       = unpacked.name;
-			this.abbrs      = unpacked.abbrs;
-			this.untils     = unpacked.untils;
-			this.offsets    = unpacked.offsets;
-			this.population = unpacked.population;
-		},
-
-		_index : function (timestamp) {
-			var target = +timestamp,
-				untils = this.untils,
-				i;
-
-			i = closest(target, untils);
-			if (i >= 0) {
-				return i;
-			}
-		},
-
-		countries : function () {
-			var zone_name = this.name;
-			return Object.keys(countries).filter(function (country_code) {
-				return countries[country_code].zones.indexOf(zone_name) !== -1;
-			});
-		},
-
-		parse : function (timestamp) {
-			var target  = +timestamp,
-				offsets = this.offsets,
-				untils  = this.untils,
-				max     = untils.length - 1,
-				offset, offsetNext, offsetPrev, i;
-
-			for (i = 0; i < max; i++) {
-				offset     = offsets[i];
-				offsetNext = offsets[i + 1];
-				offsetPrev = offsets[i ? i - 1 : i];
-
-				if (offset < offsetNext && tz.moveAmbiguousForward) {
-					offset = offsetNext;
-				} else if (offset > offsetPrev && tz.moveInvalidForward) {
-					offset = offsetPrev;
-				}
-
-				if (target < untils[i] - (offset * 60000)) {
-					return offsets[i];
-				}
-			}
-
-			return offsets[max];
-		},
-
-		abbr : function (mom) {
-			return this.abbrs[this._index(mom)];
-		},
-
-		offset : function (mom) {
-			logError("zone.offset has been deprecated in favor of zone.utcOffset");
-			return this.offsets[this._index(mom)];
-		},
-
-		utcOffset : function (mom) {
-			return this.offsets[this._index(mom)];
-		}
-	};
-
-	/************************************
-		Country object
-	************************************/
-
-	function Country (country_name, zone_names) {
-		this.name = country_name;
-		this.zones = zone_names;
-	}
-
-	/************************************
-		Current Timezone
-	************************************/
-
-	function OffsetAt(at) {
-		var timeString = at.toTimeString();
-		var abbr = timeString.match(/\([a-z ]+\)/i);
-		if (abbr && abbr[0]) {
-			// 17:56:31 GMT-0600 (CST)
-			// 17:56:31 GMT-0600 (Central Standard Time)
-			abbr = abbr[0].match(/[A-Z]/g);
-			abbr = abbr ? abbr.join('') : undefined;
-		} else {
-			// 17:56:31 CST
-			// 17:56:31 GMT+0800 (台北標準時間)
-			abbr = timeString.match(/[A-Z]{3,5}/g);
-			abbr = abbr ? abbr[0] : undefined;
-		}
-
-		if (abbr === 'GMT') {
-			abbr = undefined;
-		}
-
-		this.at = +at;
-		this.abbr = abbr;
-		this.offset = at.getTimezoneOffset();
-	}
-
-	function ZoneScore(zone) {
-		this.zone = zone;
-		this.offsetScore = 0;
-		this.abbrScore = 0;
-	}
-
-	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
-		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
-		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
-			this.abbrScore++;
-		}
-	};
-
-	function findChange(low, high) {
-		var mid, diff;
-
-		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
-			mid = new OffsetAt(new Date(low.at + diff));
-			if (mid.offset === low.offset) {
-				low = mid;
-			} else {
-				high = mid;
-			}
-		}
-
-		return low;
-	}
-
-	function userOffsets() {
-		var startYear = new Date().getFullYear() - 2,
-			last = new OffsetAt(new Date(startYear, 0, 1)),
-			lastOffset = last.offset,
-			offsets = [last],
-			change, next, nextOffset, i;
-
-		for (i = 1; i < 48; i++) {
-			nextOffset = new Date(startYear, i, 1).getTimezoneOffset();
-			if (nextOffset !== lastOffset) {
-				// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets
-				next = new OffsetAt(new Date(startYear, i, 1));
-				change = findChange(last, next);
-				offsets.push(change);
-				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
-				last = next;
-				lastOffset = nextOffset;
-			}
-		}
-
-		for (i = 0; i < 4; i++) {
-			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
-			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
-		}
-
-		return offsets;
-	}
-
-	function sortZoneScores (a, b) {
-		if (a.offsetScore !== b.offsetScore) {
-			return a.offsetScore - b.offsetScore;
-		}
-		if (a.abbrScore !== b.abbrScore) {
-			return a.abbrScore - b.abbrScore;
-		}
-		if (a.zone.population !== b.zone.population) {
-			return b.zone.population - a.zone.population;
-		}
-		return b.zone.name.localeCompare(a.zone.name);
-	}
-
-	function addToGuesses (name, offsets) {
-		var i, offset;
-		arrayToInt(offsets);
-		for (i = 0; i < offsets.length; i++) {
-			offset = offsets[i];
-			guesses[offset] = guesses[offset] || {};
-			guesses[offset][name] = true;
-		}
-	}
-
-	function guessesForUserOffsets (offsets) {
-		var offsetsLength = offsets.length,
-			filteredGuesses = {},
-			out = [],
-			checkedOffsets = {},
-			i, j, offset, guessesOffset;
-
-		for (i = 0; i < offsetsLength; i++) {
-			offset = offsets[i].offset;
-			if (checkedOffsets.hasOwnProperty(offset)) {
-				continue;
-			}
-			guessesOffset = guesses[offset] || {};
-			for (j in guessesOffset) {
-				if (guessesOffset.hasOwnProperty(j)) {
-					filteredGuesses[j] = true;
-				}
-			}
-			checkedOffsets[offset] = true;
-		}
-
-		for (i in filteredGuesses) {
-			if (filteredGuesses.hasOwnProperty(i)) {
-				out.push(names[i]);
-			}
-		}
-
-		return out;
-	}
-
-	function rebuildGuess () {
-
-		// use Intl API when available and returning valid time zone
-		try {
-			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
-			if (intlName && intlName.length > 3) {
-				var name = names[normalizeName(intlName)];
-				if (name) {
-					return name;
-				}
-				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
-			}
-		} catch (e) {
-			// Intl unavailable, fall back to manual guessing.
-		}
-
-		var offsets = userOffsets(),
-			offsetsLength = offsets.length,
-			guesses = guessesForUserOffsets(offsets),
-			zoneScores = [],
-			zoneScore, i, j;
-
-		for (i = 0; i < guesses.length; i++) {
-			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
-			for (j = 0; j < offsetsLength; j++) {
-				zoneScore.scoreOffsetAt(offsets[j]);
-			}
-			zoneScores.push(zoneScore);
-		}
-
-		zoneScores.sort(sortZoneScores);
-
-		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
-	}
-
-	function guess (ignoreCache) {
-		if (!cachedGuess || ignoreCache) {
-			cachedGuess = rebuildGuess();
-		}
-		return cachedGuess;
-	}
-
-	/************************************
-		Global Methods
-	************************************/
-
-	function normalizeName (name) {
-		return (name || '').toLowerCase().replace(/\//g, '_');
-	}
-
-	function addZone (packed) {
-		var i, name, split, normalized;
-
-		if (typeof packed === "string") {
-			packed = [packed];
-		}
-
-		for (i = 0; i < packed.length; i++) {
-			split = packed[i].split('|');
-			name = split[0];
-			normalized = normalizeName(name);
-			zones[normalized] = packed[i];
-			names[normalized] = name;
-			addToGuesses(normalized, split[2].split(' '));
-		}
-	}
-
-	function getZone (name, caller) {
-
-		name = normalizeName(name);
-
-		var zone = zones[name];
-		var link;
-
-		if (zone instanceof Zone) {
-			return zone;
-		}
-
-		if (typeof zone === 'string') {
-			zone = new Zone(zone);
-			zones[name] = zone;
-			return zone;
-		}
-
-		// Pass getZone to prevent recursion more than 1 level deep
-		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
-			zone = zones[name] = new Zone();
-			zone._set(link);
-			zone.name = names[name];
-			return zone;
-		}
-
-		return null;
-	}
-
-	function getNames () {
-		var i, out = [];
-
-		for (i in names) {
-			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
-				out.push(names[i]);
-			}
-		}
-
-		return out.sort();
-	}
-
-	function getCountryNames () {
-		return Object.keys(countries);
-	}
-
-	function addLink (aliases) {
-		var i, alias, normal0, normal1;
-
-		if (typeof aliases === "string") {
-			aliases = [aliases];
-		}
-
-		for (i = 0; i < aliases.length; i++) {
-			alias = aliases[i].split('|');
-
-			normal0 = normalizeName(alias[0]);
-			normal1 = normalizeName(alias[1]);
-
-			links[normal0] = normal1;
-			names[normal0] = alias[0];
-
-			links[normal1] = normal0;
-			names[normal1] = alias[1];
-		}
-	}
-
-	function addCountries (data) {
-		var i, country_code, country_zones, split;
-		if (!data || !data.length) return;
-		for (i = 0; i < data.length; i++) {
-			split = data[i].split('|');
-			country_code = split[0].toUpperCase();
-			country_zones = split[1].split(' ');
-			countries[country_code] = new Country(
-				country_code,
-				country_zones
-			);
-		}
-	}
-
-	function getCountry (name) {
-		name = name.toUpperCase();
-		return countries[name] || null;
-	}
-
-	function zonesForCountry(country, with_offset) {
-		country = getCountry(country);
-
-		if (!country) return null;
-
-		var zones = country.zones.sort();
-
-		if (with_offset) {
-			return zones.map(function (zone_name) {
-				var zone = getZone(zone_name);
-				return {
-					name: zone_name,
-					offset: zone.utcOffset(new Date())
-				};
-			});
-		}
-
-		return zones;
-	}
-
-	function loadData (data) {
-		addZone(data.zones);
-		addLink(data.links);
-		addCountries(data.countries);
-		tz.dataVersion = data.version;
-	}
-
-	function zoneExists (name) {
-		if (!zoneExists.didShowError) {
-			zoneExists.didShowError = true;
-				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
-		}
-		return !!getZone(name);
-	}
-
-	function needsOffset (m) {
-		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
-		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
-	}
-
-	function logError (message) {
-		if (typeof console !== 'undefined' && typeof console.error === 'function') {
-			console.error(message);
-		}
-	}
-
-	/************************************
-		moment.tz namespace
-	************************************/
-
-	function tz (input) {
-		var args = Array.prototype.slice.call(arguments, 0, -1),
-			name = arguments[arguments.length - 1],
-			out  = moment.utc.apply(null, args),
-			zone;
-
-		if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {
-			out.add(zone.parse(out), 'minutes');
-		}
-
-		out.tz(name);
-
-		return out;
-	}
-
-	tz.version      = VERSION;
-	tz.dataVersion  = '';
-	tz._zones       = zones;
-	tz._links       = links;
-	tz._names       = names;
-	tz._countries	= countries;
-	tz.add          = addZone;
-	tz.link         = addLink;
-	tz.load         = loadData;
-	tz.zone         = getZone;
-	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
-	tz.guess        = guess;
-	tz.names        = getNames;
-	tz.Zone         = Zone;
-	tz.unpack       = unpack;
-	tz.unpackBase60 = unpackBase60;
-	tz.needsOffset  = needsOffset;
-	tz.moveInvalidForward   = true;
-	tz.moveAmbiguousForward = false;
-	tz.countries    = getCountryNames;
-	tz.zonesForCountry = zonesForCountry;
-
-	/************************************
-		Interface with Moment.js
-	************************************/
-
-	var fn = moment.fn;
-
-	moment.tz = tz;
-
-	moment.defaultZone = null;
-
-	moment.updateOffset = function (mom, keepTime) {
-		var zone = moment.defaultZone,
-			offset;
-
-		if (mom._z === undefined) {
-			if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {
-				mom._d = moment.utc(mom._a)._d;
-				mom.utc().add(zone.parse(mom), 'minutes');
-			}
-			mom._z = zone;
-		}
-		if (mom._z) {
-			offset = mom._z.utcOffset(mom);
-			if (Math.abs(offset) < 16) {
-				offset = offset / 60;
-			}
-			if (mom.utcOffset !== undefined) {
-				var z = mom._z;
-				mom.utcOffset(-offset, keepTime);
-				mom._z = z;
-			} else {
-				mom.zone(offset, keepTime);
-			}
-		}
-	};
-
-	fn.tz = function (name, keepTime) {
-		if (name) {
-			if (typeof name !== 'string') {
-				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
-			}
-			this._z = getZone(name);
-			if (this._z) {
-				moment.updateOffset(this, keepTime);
-			} else {
-				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
-			}
-			return this;
-		}
-		if (this._z) { return this._z.name; }
-	};
-
-	function abbrWrap (old) {
-		return function () {
-			if (this._z) { return this._z.abbr(this); }
-			return old.call(this);
-		};
-	}
-
-	function resetZoneWrap (old) {
-		return function () {
-			this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	function resetZoneWrap2 (old) {
-		return function () {
-			if (arguments.length > 0) this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	fn.zoneName  = abbrWrap(fn.zoneName);
-	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
-	fn.utc       = resetZoneWrap(fn.utc);
-	fn.local     = resetZoneWrap(fn.local);
-	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
-
-	moment.tz.setDefault = function(name) {
-		if (major < 2 || (major === 2 && minor < 9)) {
-			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
-		}
-		moment.defaultZone = name ? getZone(name) : null;
-		return moment;
-	};
-
-	// Cloning a moment should include the _z property.
-	var momentProperties = moment.momentProperties;
-	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
-		// moment 2.8.1+
-		momentProperties.push('_z');
-		momentProperties.push('_a');
-	} else if (momentProperties) {
-		// moment 2.7.0
-		momentProperties._z = null;
-	}
-
-	loadData({
-		"version": "2025b",
-		"zones": [
-			"Africa/Abidjan|GMT|0|0||48e5",
-			"Africa/Nairobi|EAT|-30|0||47e5",
-			"Africa/Algiers|CET|-10|0||26e5",
-			"Africa/Lagos|WAT|-10|0||17e6",
-			"Africa/Khartoum|CAT|-20|0||51e5",
-			"Africa/Cairo|EET EEST|-20 -30|01010101010101010|29NW0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0|15e6",
-			"Africa/Casablanca|+01 +00|-10 0|010101010101010101010101|22sq0 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|32e5",
-			"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6",
-			"Africa/Johannesburg|SAST|-20|0||84e5",
-			"Africa/Juba|EAT CAT|-30 -20|01|24nx0|",
-			"Africa/Tripoli|EET|-20|0||11e5",
-			"America/Adak|HST HDT|a0 90|01010101010101010101010|22bM0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
-			"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|22bL0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
-			"America/Santo_Domingo|AST|40|0||29e5",
-			"America/Sao_Paulo|-03|30|0||20e6",
-			"America/Asuncion|-03 -04|30 40|01010101010|22hf0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5",
-			"America/Panama|EST|50|0||15e5",
-			"America/Mexico_City|CST CDT|60 50|0101010|22mU0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
-			"America/Managua|CST|60|0||22e5",
-			"America/Caracas|-04|40|0||29e5",
-			"America/Lima|-05|50|0||11e6",
-			"America/Denver|MST MDT|70 60|01010101010101010101010|22bJ0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
-			"America/Chicago|CST CDT|60 50|01010101010101010101010|22bI0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
-			"America/Chihuahua|MST MDT CST|70 60 60|0101012|22mV0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
-			"America/Ciudad_Juarez|MST MDT CST|70 60 60|010101201010101010101010|22bJ0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Coyhaique|-03 -04|30 40|01010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|",
-			"America/Phoenix|MST|70|0||42e5",
-			"America/Whitehorse|PST PDT MST|80 70 70|012|22bK0 1z90|23e3",
-			"America/New_York|EST EDT|50 40|01010101010101010101010|22bH0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
-			"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|22bK0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
-			"America/Halifax|AST ADT|40 30|01010101010101010101010|22bG0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
-			"America/Godthab|-03 -02 -01|30 20 10|0101010121212121212121|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3",
-			"America/Havana|CST CDT|50 40|01010101010101010101010|22bF0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
-			"America/Mazatlan|MST MDT|70 60|0101010|22mV0 1lb0 14p0 1nX0 11B0 1nX0|44e4",
-			"America/Miquelon|-03 -02|30 20|01010101010101010101010|22bF0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
-			"America/Noronha|-02|20|0||30e2",
-			"America/Ojinaga|MST MDT CST CDT|70 60 60 50|01010123232323232323232|22bJ0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
-			"America/Santiago|-03 -04|30 40|01010101010101010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5",
-			"America/Scoresbysund|-01 +00 -02|10 0 20|0101010102020202020202|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452",
-			"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|22bFu 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
-			"Antarctica/Casey|+11 +08|-b0 -80|01010101|22bs0 1o01 14kX 1lf1 14kX 1lf1 13bX|10",
-			"Asia/Bangkok|+07|-70|0||15e6",
-			"Asia/Vladivostok|+10|-a0|0||60e4",
-			"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|22mE0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|40e5",
-			"Asia/Tashkent|+05|-50|0||23e5",
-			"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|22mC0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|14e5",
-			"Europe/Istanbul|+03|-30|0||13e6",
-			"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40",
-			"Antarctica/Vostok|+07 +05|-70 -50|01|2bnv0|25",
-			"Asia/Almaty|+06 +05|-60 -50|01|2bR60|15e5",
-			"Asia/Amman|EET EEST +03|-20 -30 -30|0101012|22ja0 1qM0 WM0 1qM0 LA0 1C00|25e5",
-			"Asia/Kamchatka|+12|-c0|0||18e4",
-			"Asia/Dubai|+04|-40|0||39e5",
-			"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|22jW0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5",
-			"Asia/Dhaka|+06|-60|0||16e6",
-			"Asia/Kuala_Lumpur|+08|-80|0||71e5",
-			"Asia/Kolkata|IST|-5u|0||15e6",
-			"Asia/Chita|+09|-90|0||33e4",
-			"Asia/Shanghai|CST|-80|0||23e6",
-			"Asia/Colombo|+0530|-5u|0||22e5",
-			"Asia/Damascus|EET EEST +03|-20 -30 -30|0101012|22ja0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
-			"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5",
-			"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|22jy0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|18e5",
-			"Asia/Hong_Kong|HKT|-80|0||73e5",
-			"Asia/Jakarta|WIB|-70|0||31e6",
-			"Asia/Jayapura|WIT|-90|0||26e4",
-			"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|22jc0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4",
-			"Asia/Kabul|+0430|-4u|0||46e5",
-			"Asia/Karachi|PKT|-50|0||24e6",
-			"Asia/Kathmandu|+0545|-5J|0||12e5",
-			"Asia/Sakhalin|+11|-b0|0||58e4",
-			"Asia/Makassar|WITA|-80|0||15e5",
-			"Asia/Manila|PST|-80|0||24e6",
-			"Asia/Seoul|KST|-90|0||23e6",
-			"Asia/Rangoon|+0630|-6u|0||48e5",
-			"Asia/Tehran|+0330 +0430|-3u -4u|0101010|22gIu 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
-			"Asia/Tokyo|JST|-90|0||38e6",
-			"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4",
-			"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5",
-			"Atlantic/Cape_Verde|-01|10|0||50e4",
-			"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|22mEu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|11e5",
-			"Australia/Brisbane|AEST|-a0|0||20e5",
-			"Australia/Darwin|ACST|-9u|0||12e4",
-			"Australia/Eucla|+0845|-8J|0||368",
-			"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|22mD0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu|347",
-			"Australia/Perth|AWST|-80|0||18e5",
-			"Pacific/Easter|-05 -06|50 60|01010101010101010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2",
-			"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
-			"Etc/GMT-1|+01|-10|0||",
-			"Pacific/Tongatapu|+13|-d0|0||75e3",
-			"Pacific/Kiritimati|+14|-e0|0||51e2",
-			"Etc/GMT-2|+02|-20|0||",
-			"Pacific/Tahiti|-10|a0|0||18e4",
-			"Pacific/Niue|-11|b0|0||12e2",
-			"Etc/GMT+12|-12|c0|0||",
-			"Pacific/Galapagos|-06|60|0||25e3",
-			"Etc/GMT+7|-07|70|0||",
-			"Pacific/Pitcairn|-08|80|0||56",
-			"Pacific/Gambier|-09|90|0||125",
-			"Etc/UTC|UTC|0|0||",
-			"Europe/London|GMT BST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6",
-			"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|22k00 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4",
-			"Europe/Moscow|MSK|-30|0||16e6",
-			"Europe/Volgograd|+04 MSK|-40 -30|01|249a0|10e5",
-			"Pacific/Honolulu|HST|a0|0||37e4",
-			"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|22mC0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|600",
-			"Pacific/Apia|+14 +13|-e0 -d0|0101|22mC0 1a00 1fA0|37e3",
-			"Pacific/Fiji|+13 +12|-d0 -c0|0101|21N20 2hc0 bc0|88e4",
-			"Pacific/Guam|ChST|-a0|0||17e4",
-			"Pacific/Marquesas|-0930|9u|0||86e2",
-			"Pacific/Pago_Pago|SST|b0|0||37e2",
-			"Pacific/Norfolk|+12 +11|-c0 -b0|01010101010101010101010|22mD0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|25e4"
-		],
-		"links": [
-			"Africa/Abidjan|Africa/Accra",
-			"Africa/Abidjan|Africa/Bamako",
-			"Africa/Abidjan|Africa/Banjul",
-			"Africa/Abidjan|Africa/Bissau",
-			"Africa/Abidjan|Africa/Conakry",
-			"Africa/Abidjan|Africa/Dakar",
-			"Africa/Abidjan|Africa/Freetown",
-			"Africa/Abidjan|Africa/Lome",
-			"Africa/Abidjan|Africa/Monrovia",
-			"Africa/Abidjan|Africa/Nouakchott",
-			"Africa/Abidjan|Africa/Ouagadougou",
-			"Africa/Abidjan|Africa/Sao_Tome",
-			"Africa/Abidjan|Africa/Timbuktu",
-			"Africa/Abidjan|America/Danmarkshavn",
-			"Africa/Abidjan|Atlantic/Reykjavik",
-			"Africa/Abidjan|Atlantic/St_Helena",
-			"Africa/Abidjan|Etc/GMT",
-			"Africa/Abidjan|Etc/GMT+0",
-			"Africa/Abidjan|Etc/GMT-0",
-			"Africa/Abidjan|Etc/GMT0",
-			"Africa/Abidjan|Etc/Greenwich",
-			"Africa/Abidjan|GMT",
-			"Africa/Abidjan|GMT+0",
-			"Africa/Abidjan|GMT-0",
-			"Africa/Abidjan|GMT0",
-			"Africa/Abidjan|Greenwich",
-			"Africa/Abidjan|Iceland",
-			"Africa/Algiers|Africa/Tunis",
-			"Africa/Cairo|Egypt",
-			"Africa/Casablanca|Africa/El_Aaiun",
-			"Africa/Johannesburg|Africa/Maseru",
-			"Africa/Johannesburg|Africa/Mbabane",
-			"Africa/Khartoum|Africa/Blantyre",
-			"Africa/Khartoum|Africa/Bujumbura",
-			"Africa/Khartoum|Africa/Gaborone",
-			"Africa/Khartoum|Africa/Harare",
-			"Africa/Khartoum|Africa/Kigali",
-			"Africa/Khartoum|Africa/Lubumbashi",
-			"Africa/Khartoum|Africa/Lusaka",
-			"Africa/Khartoum|Africa/Maputo",
-			"Africa/Khartoum|Africa/Windhoek",
-			"Africa/Lagos|Africa/Bangui",
-			"Africa/Lagos|Africa/Brazzaville",
-			"Africa/Lagos|Africa/Douala",
-			"Africa/Lagos|Africa/Kinshasa",
-			"Africa/Lagos|Africa/Libreville",
-			"Africa/Lagos|Africa/Luanda",
-			"Africa/Lagos|Africa/Malabo",
-			"Africa/Lagos|Africa/Ndjamena",
-			"Africa/Lagos|Africa/Niamey",
-			"Africa/Lagos|Africa/Porto-Novo",
-			"Africa/Nairobi|Africa/Addis_Ababa",
-			"Africa/Nairobi|Africa/Asmara",
-			"Africa/Nairobi|Africa/Asmera",
-			"Africa/Nairobi|Africa/Dar_es_Salaam",
-			"Africa/Nairobi|Africa/Djibouti",
-			"Africa/Nairobi|Africa/Kampala",
-			"Africa/Nairobi|Africa/Mogadishu",
-			"Africa/Nairobi|Indian/Antananarivo",
-			"Africa/Nairobi|Indian/Comoro",
-			"Africa/Nairobi|Indian/Mayotte",
-			"Africa/Tripoli|Europe/Kaliningrad",
-			"Africa/Tripoli|Libya",
-			"America/Adak|America/Atka",
-			"America/Adak|US/Aleutian",
-			"America/Anchorage|America/Juneau",
-			"America/Anchorage|America/Metlakatla",
-			"America/Anchorage|America/Nome",
-			"America/Anchorage|America/Sitka",
-			"America/Anchorage|America/Yakutat",
-			"America/Anchorage|US/Alaska",
-			"America/Caracas|America/Boa_Vista",
-			"America/Caracas|America/Campo_Grande",
-			"America/Caracas|America/Cuiaba",
-			"America/Caracas|America/Guyana",
-			"America/Caracas|America/La_Paz",
-			"America/Caracas|America/Manaus",
-			"America/Caracas|America/Porto_Velho",
-			"America/Caracas|Brazil/West",
-			"America/Caracas|Etc/GMT+4",
-			"America/Chicago|America/Indiana/Knox",
-			"America/Chicago|America/Indiana/Tell_City",
-			"America/Chicago|America/Knox_IN",
-			"America/Chicago|America/Matamoros",
-			"America/Chicago|America/Menominee",
-			"America/Chicago|America/North_Dakota/Beulah",
-			"America/Chicago|America/North_Dakota/Center",
-			"America/Chicago|America/North_Dakota/New_Salem",
-			"America/Chicago|America/Rainy_River",
-			"America/Chicago|America/Rankin_Inlet",
-			"America/Chicago|America/Resolute",
-			"America/Chicago|America/Winnipeg",
-			"America/Chicago|CST6CDT",
-			"America/Chicago|Canada/Central",
-			"America/Chicago|US/Central",
-			"America/Chicago|US/Indiana-Starke",
-			"America/Denver|America/Boise",
-			"America/Denver|America/Cambridge_Bay",
-			"America/Denver|America/Edmonton",
-			"America/Denver|America/Inuvik",
-			"America/Denver|America/Shiprock",
-			"America/Denver|America/Yellowknife",
-			"America/Denver|Canada/Mountain",
-			"America/Denver|MST7MDT",
-			"America/Denver|Navajo",
-			"America/Denver|US/Mountain",
-			"America/Godthab|America/Nuuk",
-			"America/Halifax|America/Glace_Bay",
-			"America/Halifax|America/Goose_Bay",
-			"America/Halifax|America/Moncton",
-			"America/Halifax|America/Thule",
-			"America/Halifax|Atlantic/Bermuda",
-			"America/Halifax|Canada/Atlantic",
-			"America/Havana|Cuba",
-			"America/Lima|America/Bogota",
-			"America/Lima|America/Eirunepe",
-			"America/Lima|America/Guayaquil",
-			"America/Lima|America/Porto_Acre",
-			"America/Lima|America/Rio_Branco",
-			"America/Lima|Brazil/Acre",
-			"America/Lima|Etc/GMT+5",
-			"America/Los_Angeles|America/Ensenada",
-			"America/Los_Angeles|America/Santa_Isabel",
-			"America/Los_Angeles|America/Tijuana",
-			"America/Los_Angeles|America/Vancouver",
-			"America/Los_Angeles|Canada/Pacific",
-			"America/Los_Angeles|Mexico/BajaNorte",
-			"America/Los_Angeles|PST8PDT",
-			"America/Los_Angeles|US/Pacific",
-			"America/Managua|America/Belize",
-			"America/Managua|America/Costa_Rica",
-			"America/Managua|America/El_Salvador",
-			"America/Managua|America/Guatemala",
-			"America/Managua|America/Regina",
-			"America/Managua|America/Swift_Current",
-			"America/Managua|America/Tegucigalpa",
-			"America/Managua|Canada/Saskatchewan",
-			"America/Mazatlan|Mexico/BajaSur",
-			"America/Mexico_City|America/Bahia_Banderas",
-			"America/Mexico_City|America/Merida",
-			"America/Mexico_City|America/Monterrey",
-			"America/Mexico_City|Mexico/General",
-			"America/New_York|America/Detroit",
-			"America/New_York|America/Fort_Wayne",
-			"America/New_York|America/Grand_Turk",
-			"America/New_York|America/Indiana/Indianapolis",
-			"America/New_York|America/Indiana/Marengo",
-			"America/New_York|America/Indiana/Petersburg",
-			"America/New_York|America/Indiana/Vevay",
-			"America/New_York|America/Indiana/Vincennes",
-			"America/New_York|America/Indiana/Winamac",
-			"America/New_York|America/Indianapolis",
-			"America/New_York|America/Iqaluit",
-			"America/New_York|America/Kentucky/Louisville",
-			"America/New_York|America/Kentucky/Monticello",
-			"America/New_York|America/Louisville",
-			"America/New_York|America/Montreal",
-			"America/New_York|America/Nassau",
-			"America/New_York|America/Nipigon",
-			"America/New_York|America/Pangnirtung",
-			"America/New_York|America/Port-au-Prince",
-			"America/New_York|America/Thunder_Bay",
-			"America/New_York|America/Toronto",
-			"America/New_York|Canada/Eastern",
-			"America/New_York|EST5EDT",
-			"America/New_York|US/East-Indiana",
-			"America/New_York|US/Eastern",
-			"America/New_York|US/Michigan",
-			"America/Noronha|Atlantic/South_Georgia",
-			"America/Noronha|Brazil/DeNoronha",
-			"America/Noronha|Etc/GMT+2",
-			"America/Panama|America/Atikokan",
-			"America/Panama|America/Cancun",
-			"America/Panama|America/Cayman",
-			"America/Panama|America/Coral_Harbour",
-			"America/Panama|America/Jamaica",
-			"America/Panama|EST",
-			"America/Panama|Jamaica",
-			"America/Phoenix|America/Creston",
-			"America/Phoenix|America/Dawson_Creek",
-			"America/Phoenix|America/Fort_Nelson",
-			"America/Phoenix|America/Hermosillo",
-			"America/Phoenix|MST",
-			"America/Phoenix|US/Arizona",
-			"America/Santiago|Chile/Continental",
-			"America/Santo_Domingo|America/Anguilla",
-			"America/Santo_Domingo|America/Antigua",
-			"America/Santo_Domingo|America/Aruba",
-			"America/Santo_Domingo|America/Barbados",
-			"America/Santo_Domingo|America/Blanc-Sablon",
-			"America/Santo_Domingo|America/Curacao",
-			"America/Santo_Domingo|America/Dominica",
-			"America/Santo_Domingo|America/Grenada",
-			"America/Santo_Domingo|America/Guadeloupe",
-			"America/Santo_Domingo|America/Kralendijk",
-			"America/Santo_Domingo|America/Lower_Princes",
-			"America/Santo_Domingo|America/Marigot",
-			"America/Santo_Domingo|America/Martinique",
-			"America/Santo_Domingo|America/Montserrat",
-			"America/Santo_Domingo|America/Port_of_Spain",
-			"America/Santo_Domingo|America/Puerto_Rico",
-			"America/Santo_Domingo|America/St_Barthelemy",
-			"America/Santo_Domingo|America/St_Kitts",
-			"America/Santo_Domingo|America/St_Lucia",
-			"America/Santo_Domingo|America/St_Thomas",
-			"America/Santo_Domingo|America/St_Vincent",
-			"America/Santo_Domingo|America/Tortola",
-			"America/Santo_Domingo|America/Virgin",
-			"America/Sao_Paulo|America/Araguaina",
-			"America/Sao_Paulo|America/Argentina/Buenos_Aires",
-			"America/Sao_Paulo|America/Argentina/Catamarca",
-			"America/Sao_Paulo|America/Argentina/ComodRivadavia",
-			"America/Sao_Paulo|America/Argentina/Cordoba",
-			"America/Sao_Paulo|America/Argentina/Jujuy",
-			"America/Sao_Paulo|America/Argentina/La_Rioja",
-			"America/Sao_Paulo|America/Argentina/Mendoza",
-			"America/Sao_Paulo|America/Argentina/Rio_Gallegos",
-			"America/Sao_Paulo|America/Argentina/Salta",
-			"America/Sao_Paulo|America/Argentina/San_Juan",
-			"America/Sao_Paulo|America/Argentina/San_Luis",
-			"America/Sao_Paulo|America/Argentina/Tucuman",
-			"America/Sao_Paulo|America/Argentina/Ushuaia",
-			"America/Sao_Paulo|America/Bahia",
-			"America/Sao_Paulo|America/Belem",
-			"America/Sao_Paulo|America/Buenos_Aires",
-			"America/Sao_Paulo|America/Catamarca",
-			"America/Sao_Paulo|America/Cayenne",
-			"America/Sao_Paulo|America/Cordoba",
-			"America/Sao_Paulo|America/Fortaleza",
-			"America/Sao_Paulo|America/Jujuy",
-			"America/Sao_Paulo|America/Maceio",
-			"America/Sao_Paulo|America/Mendoza",
-			"America/Sao_Paulo|America/Montevideo",
-			"America/Sao_Paulo|America/Paramaribo",
-			"America/Sao_Paulo|America/Punta_Arenas",
-			"America/Sao_Paulo|America/Recife",
-			"America/Sao_Paulo|America/Rosario",
-			"America/Sao_Paulo|America/Santarem",
-			"America/Sao_Paulo|Antarctica/Palmer",
-			"America/Sao_Paulo|Antarctica/Rothera",
-			"America/Sao_Paulo|Atlantic/Stanley",
-			"America/Sao_Paulo|Brazil/East",
-			"America/Sao_Paulo|Etc/GMT+3",
-			"America/St_Johns|Canada/Newfoundland",
-			"America/Whitehorse|America/Dawson",
-			"America/Whitehorse|Canada/Yukon",
-			"Asia/Almaty|Asia/Qostanay",
-			"Asia/Bangkok|Antarctica/Davis",
-			"Asia/Bangkok|Asia/Barnaul",
-			"Asia/Bangkok|Asia/Ho_Chi_Minh",
-			"Asia/Bangkok|Asia/Hovd",
-			"Asia/Bangkok|Asia/Krasnoyarsk",
-			"Asia/Bangkok|Asia/Novokuznetsk",
-			"Asia/Bangkok|Asia/Novosibirsk",
-			"Asia/Bangkok|Asia/Phnom_Penh",
-			"Asia/Bangkok|Asia/Saigon",
-			"Asia/Bangkok|Asia/Tomsk",
-			"Asia/Bangkok|Asia/Vientiane",
-			"Asia/Bangkok|Etc/GMT-7",
-			"Asia/Bangkok|Indian/Christmas",
-			"Asia/Chita|Asia/Dili",
-			"Asia/Chita|Asia/Khandyga",
-			"Asia/Chita|Asia/Yakutsk",
-			"Asia/Chita|Etc/GMT-9",
-			"Asia/Chita|Pacific/Palau",
-			"Asia/Dhaka|Asia/Bishkek",
-			"Asia/Dhaka|Asia/Dacca",
-			"Asia/Dhaka|Asia/Kashgar",
-			"Asia/Dhaka|Asia/Omsk",
-			"Asia/Dhaka|Asia/Thimbu",
-			"Asia/Dhaka|Asia/Thimphu",
-			"Asia/Dhaka|Asia/Urumqi",
-			"Asia/Dhaka|Etc/GMT-6",
-			"Asia/Dhaka|Indian/Chagos",
-			"Asia/Dubai|Asia/Baku",
-			"Asia/Dubai|Asia/Muscat",
-			"Asia/Dubai|Asia/Tbilisi",
-			"Asia/Dubai|Asia/Yerevan",
-			"Asia/Dubai|Etc/GMT-4",
-			"Asia/Dubai|Europe/Astrakhan",
-			"Asia/Dubai|Europe/Samara",
-			"Asia/Dubai|Europe/Saratov",
-			"Asia/Dubai|Europe/Ulyanovsk",
-			"Asia/Dubai|Indian/Mahe",
-			"Asia/Dubai|Indian/Mauritius",
-			"Asia/Dubai|Indian/Reunion",
-			"Asia/Gaza|Asia/Hebron",
-			"Asia/Hong_Kong|Hongkong",
-			"Asia/Jakarta|Asia/Pontianak",
-			"Asia/Jerusalem|Asia/Tel_Aviv",
-			"Asia/Jerusalem|Israel",
-			"Asia/Kamchatka|Asia/Anadyr",
-			"Asia/Kamchatka|Etc/GMT-12",
-			"Asia/Kamchatka|Kwajalein",
-			"Asia/Kamchatka|Pacific/Funafuti",
-			"Asia/Kamchatka|Pacific/Kwajalein",
-			"Asia/Kamchatka|Pacific/Majuro",
-			"Asia/Kamchatka|Pacific/Nauru",
-			"Asia/Kamchatka|Pacific/Tarawa",
-			"Asia/Kamchatka|Pacific/Wake",
-			"Asia/Kamchatka|Pacific/Wallis",
-			"Asia/Kathmandu|Asia/Katmandu",
-			"Asia/Kolkata|Asia/Calcutta",
-			"Asia/Kuala_Lumpur|Asia/Brunei",
-			"Asia/Kuala_Lumpur|Asia/Choibalsan",
-			"Asia/Kuala_Lumpur|Asia/Irkutsk",
-			"Asia/Kuala_Lumpur|Asia/Kuching",
-			"Asia/Kuala_Lumpur|Asia/Singapore",
-			"Asia/Kuala_Lumpur|Asia/Ulaanbaatar",
-			"Asia/Kuala_Lumpur|Asia/Ulan_Bator",
-			"Asia/Kuala_Lumpur|Etc/GMT-8",
-			"Asia/Kuala_Lumpur|Singapore",
-			"Asia/Makassar|Asia/Ujung_Pandang",
-			"Asia/Rangoon|Asia/Yangon",
-			"Asia/Rangoon|Indian/Cocos",
-			"Asia/Sakhalin|Asia/Magadan",
-			"Asia/Sakhalin|Asia/Srednekolymsk",
-			"Asia/Sakhalin|Etc/GMT-11",
-			"Asia/Sakhalin|Pacific/Bougainville",
-			"Asia/Sakhalin|Pacific/Efate",
-			"Asia/Sakhalin|Pacific/Guadalcanal",
-			"Asia/Sakhalin|Pacific/Kosrae",
-			"Asia/Sakhalin|Pacific/Noumea",
-			"Asia/Sakhalin|Pacific/Pohnpei",
-			"Asia/Sakhalin|Pacific/Ponape",
-			"Asia/Seoul|Asia/Pyongyang",
-			"Asia/Seoul|ROK",
-			"Asia/Shanghai|Asia/Chongqing",
-			"Asia/Shanghai|Asia/Chungking",
-			"Asia/Shanghai|Asia/Harbin",
-			"Asia/Shanghai|Asia/Macao",
-			"Asia/Shanghai|Asia/Macau",
-			"Asia/Shanghai|Asia/Taipei",
-			"Asia/Shanghai|PRC",
-			"Asia/Shanghai|ROC",
-			"Asia/Tashkent|Antarctica/Mawson",
-			"Asia/Tashkent|Asia/Aqtau",
-			"Asia/Tashkent|Asia/Aqtobe",
-			"Asia/Tashkent|Asia/Ashgabat",
-			"Asia/Tashkent|Asia/Ashkhabad",
-			"Asia/Tashkent|Asia/Atyrau",
-			"Asia/Tashkent|Asia/Dushanbe",
-			"Asia/Tashkent|Asia/Oral",
-			"Asia/Tashkent|Asia/Qyzylorda",
-			"Asia/Tashkent|Asia/Samarkand",
-			"Asia/Tashkent|Asia/Yekaterinburg",
-			"Asia/Tashkent|Etc/GMT-5",
-			"Asia/Tashkent|Indian/Kerguelen",
-			"Asia/Tashkent|Indian/Maldives",
-			"Asia/Tehran|Iran",
-			"Asia/Tokyo|Japan",
-			"Asia/Vladivostok|Antarctica/DumontDUrville",
-			"Asia/Vladivostok|Asia/Ust-Nera",
-			"Asia/Vladivostok|Etc/GMT-10",
-			"Asia/Vladivostok|Pacific/Chuuk",
-			"Asia/Vladivostok|Pacific/Port_Moresby",
-			"Asia/Vladivostok|Pacific/Truk",
-			"Asia/Vladivostok|Pacific/Yap",
-			"Atlantic/Cape_Verde|Etc/GMT+1",
-			"Australia/Adelaide|Australia/Broken_Hill",
-			"Australia/Adelaide|Australia/South",
-			"Australia/Adelaide|Australia/Yancowinna",
-			"Australia/Brisbane|Australia/Lindeman",
-			"Australia/Brisbane|Australia/Queensland",
-			"Australia/Darwin|Australia/North",
-			"Australia/Lord_Howe|Australia/LHI",
-			"Australia/Perth|Australia/West",
-			"Australia/Sydney|Antarctica/Macquarie",
-			"Australia/Sydney|Australia/ACT",
-			"Australia/Sydney|Australia/Canberra",
-			"Australia/Sydney|Australia/Currie",
-			"Australia/Sydney|Australia/Hobart",
-			"Australia/Sydney|Australia/Melbourne",
-			"Australia/Sydney|Australia/NSW",
-			"Australia/Sydney|Australia/Tasmania",
-			"Australia/Sydney|Australia/Victoria",
-			"Etc/UTC|Etc/UCT",
-			"Etc/UTC|Etc/Universal",
-			"Etc/UTC|Etc/Zulu",
-			"Etc/UTC|UCT",
-			"Etc/UTC|UTC",
-			"Etc/UTC|Universal",
-			"Etc/UTC|Zulu",
-			"Europe/Athens|Asia/Famagusta",
-			"Europe/Athens|Asia/Nicosia",
-			"Europe/Athens|EET",
-			"Europe/Athens|Europe/Bucharest",
-			"Europe/Athens|Europe/Helsinki",
-			"Europe/Athens|Europe/Kiev",
-			"Europe/Athens|Europe/Kyiv",
-			"Europe/Athens|Europe/Mariehamn",
-			"Europe/Athens|Europe/Nicosia",
-			"Europe/Athens|Europe/Riga",
-			"Europe/Athens|Europe/Sofia",
-			"Europe/Athens|Europe/Tallinn",
-			"Europe/Athens|Europe/Uzhgorod",
-			"Europe/Athens|Europe/Vilnius",
-			"Europe/Athens|Europe/Zaporozhye",
-			"Europe/Chisinau|Europe/Tiraspol",
-			"Europe/Dublin|Eire",
-			"Europe/Istanbul|Antarctica/Syowa",
-			"Europe/Istanbul|Asia/Aden",
-			"Europe/Istanbul|Asia/Baghdad",
-			"Europe/Istanbul|Asia/Bahrain",
-			"Europe/Istanbul|Asia/Istanbul",
-			"Europe/Istanbul|Asia/Kuwait",
-			"Europe/Istanbul|Asia/Qatar",
-			"Europe/Istanbul|Asia/Riyadh",
-			"Europe/Istanbul|Etc/GMT-3",
-			"Europe/Istanbul|Europe/Minsk",
-			"Europe/Istanbul|Turkey",
-			"Europe/Lisbon|Atlantic/Canary",
-			"Europe/Lisbon|Atlantic/Faeroe",
-			"Europe/Lisbon|Atlantic/Faroe",
-			"Europe/Lisbon|Atlantic/Madeira",
-			"Europe/Lisbon|Portugal",
-			"Europe/Lisbon|WET",
-			"Europe/London|Europe/Belfast",
-			"Europe/London|Europe/Guernsey",
-			"Europe/London|Europe/Isle_of_Man",
-			"Europe/London|Europe/Jersey",
-			"Europe/London|GB",
-			"Europe/London|GB-Eire",
-			"Europe/Moscow|Europe/Kirov",
-			"Europe/Moscow|Europe/Simferopol",
-			"Europe/Moscow|W-SU",
-			"Europe/Paris|Africa/Ceuta",
-			"Europe/Paris|Arctic/Longyearbyen",
-			"Europe/Paris|Atlantic/Jan_Mayen",
-			"Europe/Paris|CET",
-			"Europe/Paris|Europe/Amsterdam",
-			"Europe/Paris|Europe/Andorra",
-			"Europe/Paris|Europe/Belgrade",
-			"Europe/Paris|Europe/Berlin",
-			"Europe/Paris|Europe/Bratislava",
-			"Europe/Paris|Europe/Brussels",
-			"Europe/Paris|Europe/Budapest",
-			"Europe/Paris|Europe/Busingen",
-			"Europe/Paris|Europe/Copenhagen",
-			"Europe/Paris|Europe/Gibraltar",
-			"Europe/Paris|Europe/Ljubljana",
-			"Europe/Paris|Europe/Luxembourg",
-			"Europe/Paris|Europe/Madrid",
-			"Europe/Paris|Europe/Malta",
-			"Europe/Paris|Europe/Monaco",
-			"Europe/Paris|Europe/Oslo",
-			"Europe/Paris|Europe/Podgorica",
-			"Europe/Paris|Europe/Prague",
-			"Europe/Paris|Europe/Rome",
-			"Europe/Paris|Europe/San_Marino",
-			"Europe/Paris|Europe/Sarajevo",
-			"Europe/Paris|Europe/Skopje",
-			"Europe/Paris|Europe/Stockholm",
-			"Europe/Paris|Europe/Tirane",
-			"Europe/Paris|Europe/Vaduz",
-			"Europe/Paris|Europe/Vatican",
-			"Europe/Paris|Europe/Vienna",
-			"Europe/Paris|Europe/Warsaw",
-			"Europe/Paris|Europe/Zagreb",
-			"Europe/Paris|Europe/Zurich",
-			"Europe/Paris|MET",
-			"Europe/Paris|Poland",
-			"Pacific/Auckland|Antarctica/McMurdo",
-			"Pacific/Auckland|Antarctica/South_Pole",
-			"Pacific/Auckland|NZ",
-			"Pacific/Chatham|NZ-CHAT",
-			"Pacific/Easter|Chile/EasterIsland",
-			"Pacific/Galapagos|Etc/GMT+6",
-			"Pacific/Gambier|Etc/GMT+9",
-			"Pacific/Guam|Pacific/Saipan",
-			"Pacific/Honolulu|HST",
-			"Pacific/Honolulu|Pacific/Johnston",
-			"Pacific/Honolulu|US/Hawaii",
-			"Pacific/Kiritimati|Etc/GMT-14",
-			"Pacific/Niue|Etc/GMT+11",
-			"Pacific/Pago_Pago|Pacific/Midway",
-			"Pacific/Pago_Pago|Pacific/Samoa",
-			"Pacific/Pago_Pago|US/Samoa",
-			"Pacific/Pitcairn|Etc/GMT+8",
-			"Pacific/Tahiti|Etc/GMT+10",
-			"Pacific/Tahiti|Pacific/Rarotonga",
-			"Pacific/Tongatapu|Etc/GMT-13",
-			"Pacific/Tongatapu|Pacific/Enderbury",
-			"Pacific/Tongatapu|Pacific/Fakaofo",
-			"Pacific/Tongatapu|Pacific/Kanton"
-		],
-		"countries": [
-			"AD|Europe/Andorra",
-			"AE|Asia/Dubai",
-			"AF|Asia/Kabul",
-			"AG|America/Puerto_Rico America/Antigua",
-			"AI|America/Puerto_Rico America/Anguilla",
-			"AL|Europe/Tirane",
-			"AM|Asia/Yerevan",
-			"AO|Africa/Lagos Africa/Luanda",
-			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa",
-			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
-			"AS|Pacific/Pago_Pago",
-			"AT|Europe/Vienna",
-			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo",
-			"AW|America/Puerto_Rico America/Aruba",
-			"AX|Europe/Helsinki Europe/Mariehamn",
-			"AZ|Asia/Baku",
-			"BA|Europe/Belgrade Europe/Sarajevo",
-			"BB|America/Barbados",
-			"BD|Asia/Dhaka",
-			"BE|Europe/Brussels",
-			"BF|Africa/Abidjan Africa/Ouagadougou",
-			"BG|Europe/Sofia",
-			"BH|Asia/Qatar Asia/Bahrain",
-			"BI|Africa/Maputo Africa/Bujumbura",
-			"BJ|Africa/Lagos Africa/Porto-Novo",
-			"BL|America/Puerto_Rico America/St_Barthelemy",
-			"BM|Atlantic/Bermuda",
-			"BN|Asia/Kuching Asia/Brunei",
-			"BO|America/La_Paz",
-			"BQ|America/Puerto_Rico America/Kralendijk",
-			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
-			"BS|America/Toronto America/Nassau",
-			"BT|Asia/Thimphu",
-			"BW|Africa/Maputo Africa/Gaborone",
-			"BY|Europe/Minsk",
-			"BZ|America/Belize",
-			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
-			"CC|Asia/Yangon Indian/Cocos",
-			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
-			"CF|Africa/Lagos Africa/Bangui",
-			"CG|Africa/Lagos Africa/Brazzaville",
-			"CH|Europe/Zurich",
-			"CI|Africa/Abidjan",
-			"CK|Pacific/Rarotonga",
-			"CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter",
-			"CM|Africa/Lagos Africa/Douala",
-			"CN|Asia/Shanghai Asia/Urumqi",
-			"CO|America/Bogota",
-			"CR|America/Costa_Rica",
-			"CU|America/Havana",
-			"CV|Atlantic/Cape_Verde",
-			"CW|America/Puerto_Rico America/Curacao",
-			"CX|Asia/Bangkok Indian/Christmas",
-			"CY|Asia/Nicosia Asia/Famagusta",
-			"CZ|Europe/Prague",
-			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
-			"DJ|Africa/Nairobi Africa/Djibouti",
-			"DK|Europe/Berlin Europe/Copenhagen",
-			"DM|America/Puerto_Rico America/Dominica",
-			"DO|America/Santo_Domingo",
-			"DZ|Africa/Algiers",
-			"EC|America/Guayaquil Pacific/Galapagos",
-			"EE|Europe/Tallinn",
-			"EG|Africa/Cairo",
-			"EH|Africa/El_Aaiun",
-			"ER|Africa/Nairobi Africa/Asmara",
-			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
-			"ET|Africa/Nairobi Africa/Addis_Ababa",
-			"FI|Europe/Helsinki",
-			"FJ|Pacific/Fiji",
-			"FK|Atlantic/Stanley",
-			"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
-			"FO|Atlantic/Faroe",
-			"FR|Europe/Paris",
-			"GA|Africa/Lagos Africa/Libreville",
-			"GB|Europe/London",
-			"GD|America/Puerto_Rico America/Grenada",
-			"GE|Asia/Tbilisi",
-			"GF|America/Cayenne",
-			"GG|Europe/London Europe/Guernsey",
-			"GH|Africa/Abidjan Africa/Accra",
-			"GI|Europe/Gibraltar",
-			"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
-			"GM|Africa/Abidjan Africa/Banjul",
-			"GN|Africa/Abidjan Africa/Conakry",
-			"GP|America/Puerto_Rico America/Guadeloupe",
-			"GQ|Africa/Lagos Africa/Malabo",
-			"GR|Europe/Athens",
-			"GS|Atlantic/South_Georgia",
-			"GT|America/Guatemala",
-			"GU|Pacific/Guam",
-			"GW|Africa/Bissau",
-			"GY|America/Guyana",
-			"HK|Asia/Hong_Kong",
-			"HN|America/Tegucigalpa",
-			"HR|Europe/Belgrade Europe/Zagreb",
-			"HT|America/Port-au-Prince",
-			"HU|Europe/Budapest",
-			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
-			"IE|Europe/Dublin",
-			"IL|Asia/Jerusalem",
-			"IM|Europe/London Europe/Isle_of_Man",
-			"IN|Asia/Kolkata",
-			"IO|Indian/Chagos",
-			"IQ|Asia/Baghdad",
-			"IR|Asia/Tehran",
-			"IS|Africa/Abidjan Atlantic/Reykjavik",
-			"IT|Europe/Rome",
-			"JE|Europe/London Europe/Jersey",
-			"JM|America/Jamaica",
-			"JO|Asia/Amman",
-			"JP|Asia/Tokyo",
-			"KE|Africa/Nairobi",
-			"KG|Asia/Bishkek",
-			"KH|Asia/Bangkok Asia/Phnom_Penh",
-			"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
-			"KM|Africa/Nairobi Indian/Comoro",
-			"KN|America/Puerto_Rico America/St_Kitts",
-			"KP|Asia/Pyongyang",
-			"KR|Asia/Seoul",
-			"KW|Asia/Riyadh Asia/Kuwait",
-			"KY|America/Panama America/Cayman",
-			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
-			"LA|Asia/Bangkok Asia/Vientiane",
-			"LB|Asia/Beirut",
-			"LC|America/Puerto_Rico America/St_Lucia",
-			"LI|Europe/Zurich Europe/Vaduz",
-			"LK|Asia/Colombo",
-			"LR|Africa/Monrovia",
-			"LS|Africa/Johannesburg Africa/Maseru",
-			"LT|Europe/Vilnius",
-			"LU|Europe/Brussels Europe/Luxembourg",
-			"LV|Europe/Riga",
-			"LY|Africa/Tripoli",
-			"MA|Africa/Casablanca",
-			"MC|Europe/Paris Europe/Monaco",
-			"MD|Europe/Chisinau",
-			"ME|Europe/Belgrade Europe/Podgorica",
-			"MF|America/Puerto_Rico America/Marigot",
-			"MG|Africa/Nairobi Indian/Antananarivo",
-			"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
-			"MK|Europe/Belgrade Europe/Skopje",
-			"ML|Africa/Abidjan Africa/Bamako",
-			"MM|Asia/Yangon",
-			"MN|Asia/Ulaanbaatar Asia/Hovd",
-			"MO|Asia/Macau",
-			"MP|Pacific/Guam Pacific/Saipan",
-			"MQ|America/Martinique",
-			"MR|Africa/Abidjan Africa/Nouakchott",
-			"MS|America/Puerto_Rico America/Montserrat",
-			"MT|Europe/Malta",
-			"MU|Indian/Mauritius",
-			"MV|Indian/Maldives",
-			"MW|Africa/Maputo Africa/Blantyre",
-			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana",
-			"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
-			"MZ|Africa/Maputo",
-			"NA|Africa/Windhoek",
-			"NC|Pacific/Noumea",
-			"NE|Africa/Lagos Africa/Niamey",
-			"NF|Pacific/Norfolk",
-			"NG|Africa/Lagos",
-			"NI|America/Managua",
-			"NL|Europe/Brussels Europe/Amsterdam",
-			"NO|Europe/Berlin Europe/Oslo",
-			"NP|Asia/Kathmandu",
-			"NR|Pacific/Nauru",
-			"NU|Pacific/Niue",
-			"NZ|Pacific/Auckland Pacific/Chatham",
-			"OM|Asia/Dubai Asia/Muscat",
-			"PA|America/Panama",
-			"PE|America/Lima",
-			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
-			"PG|Pacific/Port_Moresby Pacific/Bougainville",
-			"PH|Asia/Manila",
-			"PK|Asia/Karachi",
-			"PL|Europe/Warsaw",
-			"PM|America/Miquelon",
-			"PN|Pacific/Pitcairn",
-			"PR|America/Puerto_Rico",
-			"PS|Asia/Gaza Asia/Hebron",
-			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
-			"PW|Pacific/Palau",
-			"PY|America/Asuncion",
-			"QA|Asia/Qatar",
-			"RE|Asia/Dubai Indian/Reunion",
-			"RO|Europe/Bucharest",
-			"RS|Europe/Belgrade",
-			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
-			"RW|Africa/Maputo Africa/Kigali",
-			"SA|Asia/Riyadh",
-			"SB|Pacific/Guadalcanal",
-			"SC|Asia/Dubai Indian/Mahe",
-			"SD|Africa/Khartoum",
-			"SE|Europe/Berlin Europe/Stockholm",
-			"SG|Asia/Singapore",
-			"SH|Africa/Abidjan Atlantic/St_Helena",
-			"SI|Europe/Belgrade Europe/Ljubljana",
-			"SJ|Europe/Berlin Arctic/Longyearbyen",
-			"SK|Europe/Prague Europe/Bratislava",
-			"SL|Africa/Abidjan Africa/Freetown",
-			"SM|Europe/Rome Europe/San_Marino",
-			"SN|Africa/Abidjan Africa/Dakar",
-			"SO|Africa/Nairobi Africa/Mogadishu",
-			"SR|America/Paramaribo",
-			"SS|Africa/Juba",
-			"ST|Africa/Sao_Tome",
-			"SV|America/El_Salvador",
-			"SX|America/Puerto_Rico America/Lower_Princes",
-			"SY|Asia/Damascus",
-			"SZ|Africa/Johannesburg Africa/Mbabane",
-			"TC|America/Grand_Turk",
-			"TD|Africa/Ndjamena",
-			"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
-			"TG|Africa/Abidjan Africa/Lome",
-			"TH|Asia/Bangkok",
-			"TJ|Asia/Dushanbe",
-			"TK|Pacific/Fakaofo",
-			"TL|Asia/Dili",
-			"TM|Asia/Ashgabat",
-			"TN|Africa/Tunis",
-			"TO|Pacific/Tongatapu",
-			"TR|Europe/Istanbul",
-			"TT|America/Puerto_Rico America/Port_of_Spain",
-			"TV|Pacific/Tarawa Pacific/Funafuti",
-			"TW|Asia/Taipei",
-			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
-			"UA|Europe/Simferopol Europe/Kyiv",
-			"UG|Africa/Nairobi Africa/Kampala",
-			"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake",
-			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
-			"UY|America/Montevideo",
-			"UZ|Asia/Samarkand Asia/Tashkent",
-			"VA|Europe/Rome Europe/Vatican",
-			"VC|America/Puerto_Rico America/St_Vincent",
-			"VE|America/Caracas",
-			"VG|America/Puerto_Rico America/Tortola",
-			"VI|America/Puerto_Rico America/St_Thomas",
-			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
-			"VU|Pacific/Efate",
-			"WF|Pacific/Tarawa Pacific/Wallis",
-			"WS|Pacific/Apia",
-			"YE|Asia/Riyadh Asia/Aden",
-			"YT|Africa/Nairobi Indian/Mayotte",
-			"ZA|Africa/Johannesburg",
-			"ZM|Africa/Maputo Africa/Lusaka",
-			"ZW|Africa/Maputo Africa/Harare"
-		]
-	});
-
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(a,i){"use strict";"object"==typeof module&&module.exports?module.exports=i(require("moment")):"function"==typeof define&&define.amd?define(["moment"],i):i(a.moment)}(this,function(o){"use strict";void 0===o.version&&o.default&&(o=o.default);var i,s={},c={},A={},u={},m={},a=(o&&"string"==typeof o.version||y("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"),o.version.split(".")),r=+a[0],e=+a[1];function n(a){return 96<a?a-87:64<a?a-29:a-48}function t(a){var i=0,r=a.split("."),e=r[0],o=r[1]||"",c=1,A=0,r=1;for(45===a.charCodeAt(0)&&(r=-(i=1));i<e.length;i++)A=60*A+n(e.charCodeAt(i));for(i=0;i<o.length;i++)c/=60,A+=n(o.charCodeAt(i))*c;return A*r}function l(a){for(var i=0;i<a.length;i++)a[i]=t(a[i])}function f(a,i){for(var r=[],e=0;e<i.length;e++)r[e]=a[i[e]];return r}function p(a){for(var a=a.split("|"),i=a[2].split(" "),r=a[3].split(""),e=a[4].split(" "),o=(l(i),l(r),l(e),e),c=r.length,A=0;A<c;A++)o[A]=Math.round((o[A-1]||0)+6e4*o[A]);return o[c-1]=1/0,{name:a[0],abbrs:f(a[1].split(" "),r),offsets:f(i,r),untils:e,population:0|a[5]}}function M(a){a&&this._set(p(a))}function b(a,i){this.name=a,this.zones=i}function h(a){var i=a.toTimeString(),r=i.match(/\([a-z ]+\)/i);"GMT"===(r=r&&r[0]?(r=r[0].match(/[A-Z]/g))?r.join(""):void 0:(r=i.match(/[A-Z]{3,5}/g))?r[0]:void 0)&&(r=void 0),this.at=+a,this.abbr=r,this.offset=a.getTimezoneOffset()}function d(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function E(){for(var a,i,r,e=(new Date).getFullYear()-2,o=new h(new Date(e,0,1)),c=o.offset,A=[o],n=1;n<48;n++)(r=new Date(e,n,1).getTimezoneOffset())!==c&&(a=function(a,i){for(var r;r=6e4*((i.at-a.at)/12e4|0);)(r=new h(new Date(a.at+r))).offset===a.offset?a=r:i=r;return a}(o,i=new h(new Date(e,n,1))),A.push(a),A.push(new h(new Date(a.at+6e4))),o=i,c=r);for(n=0;n<4;n++)A.push(new h(new Date(e+n,0,1))),A.push(new h(new Date(e+n,6,1)));return A}function g(a,i){return a.offsetScore!==i.offsetScore?a.offsetScore-i.offsetScore:a.abbrScore!==i.abbrScore?a.abbrScore-i.abbrScore:a.zone.population!==i.zone.population?i.zone.population-a.zone.population:i.zone.name.localeCompare(a.zone.name)}function P(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a&&3<a.length){var i=u[S(a)];if(i)return i;y("Moment Timezone found "+a+" from the Intl api, but did not have that data loaded.")}}catch(a){}for(var r,e,o=E(),c=o.length,A=function(a){for(var i,r,e,o=a.length,c={},A=[],n={},t=0;t<o;t++)if(r=a[t].offset,!n.hasOwnProperty(r)){for(i in e=m[r]||{})e.hasOwnProperty(i)&&(c[i]=!0);n[r]=!0}for(t in c)c.hasOwnProperty(t)&&A.push(u[t]);return A}(o),n=[],t=0;t<A.length;t++){for(r=new d(k(A[t])),e=0;e<c;e++)r.scoreOffsetAt(o[e]);n.push(r)}return n.sort(g),0<n.length?n[0].zone.name:void 0}function S(a){return(a||"").toLowerCase().replace(/\//g,"_")}function _(a){var i,r,e,o;for("string"==typeof a&&(a=[a]),i=0;i<a.length;i++){o=S(r=(e=a[i].split("|"))[0]),s[o]=a[i],u[o]=r,A=c=t=n=void 0;var c,A,n=o,t=e[2].split(" ");for(l(t),c=0;c<t.length;c++)A=t[c],m[A]=m[A]||{},m[A][n]=!0}}function k(a,i){a=S(a);var r=s[a];return r instanceof M?r:"string"==typeof r?(r=new M(r),s[a]=r):c[a]&&i!==k&&(i=k(c[a],k))?((r=s[a]=new M)._set(i),r.name=u[a],r):null}function T(a){var i,r,e,o;for("string"==typeof a&&(a=[a]),i=0;i<a.length;i++)e=S((r=a[i].split("|"))[0]),o=S(r[1]),c[e]=o,u[e]=r[0],c[o]=e,u[o]=r[1]}function z(a){_(a.zones),T(a.links);var i,r,e,o=a.countries;if(o&&o.length)for(i=0;i<o.length;i++)r=(e=o[i].split("|"))[0].toUpperCase(),e=e[1].split(" "),A[r]=new b(r,e);L.dataVersion=a.version}function C(a){return C.didShowError||(C.didShowError=!0,y("moment.tz.zoneExists('"+a+"') has been deprecated in favor of !moment.tz.zone('"+a+"')")),!!k(a)}function B(a){var i="X"===a._f||"x"===a._f;return!(!a._a||void 0!==a._tzm||i)}function y(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}function L(a){var i=Array.prototype.slice.call(arguments,0,-1),r=arguments[arguments.length-1],i=o.utc.apply(null,i);return!o.isMoment(a)&&B(i)&&(a=k(r))&&i.add(a.parse(i),"minutes"),i.tz(r),i}(r<2||2==r&&e<6)&&y("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+o.version+". See momentjs.com"),M.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){a=function(a,i){var r,e=i.length;if(a<i[0])return 0;if(1<e&&i[e-1]===1/0&&a>=i[e-2])return e-1;if(a>=i[e-1])return-1;for(var o=0,c=e-1;1<c-o;)i[r=Math.floor((o+c)/2)]<=a?o=r:c=r;return c}(+a,this.untils);if(0<=a)return a},countries:function(){var i=this.name;return Object.keys(A).filter(function(a){return-1!==A[a].zones.indexOf(i)})},parse:function(a){for(var i,r,e,o=+a,c=this.offsets,A=this.untils,n=A.length-1,t=0;t<n;t++)if(i=c[t],r=c[t+1],e=c[t&&t-1],i<r&&L.moveAmbiguousForward?i=r:e<i&&L.moveInvalidForward&&(i=e),o<A[t]-6e4*i)return c[t];return c[n]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return y("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(a)]},utcOffset:function(a){return this.offsets[this._index(a)]}},d.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.utcOffset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,"")!==a.abbr&&this.abbrScore++},L.version="0.5.48",L.dataVersion="",L._zones=s,L._links=c,L._names=u,L._countries=A,L.add=_,L.link=T,L.load=z,L.zone=k,L.zoneExists=C,L.guess=function(a){return i=i&&!a?i:P()},L.names=function(){var a,i=[];for(a in u)u.hasOwnProperty(a)&&(s[a]||s[c[a]])&&u[a]&&i.push(u[a]);return i.sort()},L.Zone=M,L.unpack=p,L.unpackBase60=t,L.needsOffset=B,L.moveInvalidForward=!0,L.moveAmbiguousForward=!1,L.countries=function(){return Object.keys(A)},L.zonesForCountry=function(a,i){var r;return r=(r=a).toUpperCase(),(a=A[r]||null)?(r=a.zones.sort(),i?r.map(function(a){return{name:a,offset:k(a).utcOffset(new Date)}}):r):null};var D,a=o.fn;function N(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function v(a){return function(){return this._z=null,a.apply(this,arguments)}}o.tz=L,o.defaultZone=null,o.updateOffset=function(a,i){var r,e=o.defaultZone;void 0===a._z&&(e&&B(a)&&!a._isUTC&&a.isValid()&&(a._d=o.utc(a._a)._d,a.utc().add(e.parse(a),"minutes")),a._z=e),a._z&&(e=a._z.utcOffset(a),Math.abs(e)<16&&(e/=60),void 0!==a.utcOffset?(r=a._z,a.utcOffset(-e,i),a._z=r):a.zone(e,i))},a.tz=function(a,i){if(a){if("string"!=typeof a)throw new Error("Time zone name must be a string, got "+a+" ["+typeof a+"]");return this._z=k(a),this._z?o.updateOffset(this,i):y("Moment Timezone has no data for "+a+". See http://momentjs.com/timezone/docs/#/data-loading/."),this}if(this._z)return this._z.name},a.zoneName=N(a.zoneName),a.zoneAbbr=N(a.zoneAbbr),a.utc=v(a.utc),a.local=v(a.local),a.utcOffset=(D=a.utcOffset,function(){return 0<arguments.length&&(this._z=null),D.apply(this,arguments)}),o.tz.setDefault=function(a){return(r<2||2==r&&e<9)&&y("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+o.version+"."),o.defaultZone=a?k(a):null,o};a=o.momentProperties;return"[object Array]"===Object.prototype.toString.call(a)?(a.push("_z"),a.push("_a")):a&&(a._z=null),z({version:"2025b",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Nairobi|EAT|-30|0||47e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Khartoum|CAT|-20|0||51e5","Africa/Cairo|EET EEST|-20 -30|01010101010101010|29NW0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0|15e6","Africa/Casablanca|+01 +00|-10 0|010101010101010101010101|22sq0 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Juba|EAT CAT|-30 -20|01|24nx0|","Africa/Tripoli|EET|-20|0||11e5","America/Adak|HST HDT|a0 90|01010101010101010101010|22bM0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|22bL0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Sao_Paulo|-03|30|0||20e6","America/Asuncion|-03 -04|30 40|01010101010|22hf0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5","America/Panama|EST|50|0||15e5","America/Mexico_City|CST CDT|60 50|0101010|22mU0 1lb0 14p0 1nX0 11B0 1nX0|20e6","America/Managua|CST|60|0||22e5","America/Caracas|-04|40|0||29e5","America/Lima|-05|50|0||11e6","America/Denver|MST MDT|70 60|01010101010101010101010|22bJ0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Chicago|CST CDT|60 50|01010101010101010101010|22bI0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT CST|70 60 60|0101012|22mV0 1lb0 14p0 1nX0 11B0 1nX0|81e4","America/Ciudad_Juarez|MST MDT CST|70 60 60|010101201010101010101010|22bJ0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Coyhaique|-03 -04|30 40|01010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|","America/Phoenix|MST|70|0||42e5","America/Whitehorse|PST PDT MST|80 70 70|012|22bK0 1z90|23e3","America/New_York|EST EDT|50 40|01010101010101010101010|22bH0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|22bK0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Halifax|AST ADT|40 30|01010101010101010101010|22bG0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Godthab|-03 -02 -01|30 20 10|0101010121212121212121|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3","America/Havana|CST CDT|50 40|01010101010101010101010|22bF0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Mazatlan|MST MDT|70 60|0101010|22mV0 1lb0 14p0 1nX0 11B0 1nX0|44e4","America/Miquelon|-03 -02|30 20|01010101010101010101010|22bF0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Noronha|-02|20|0||30e2","America/Ojinaga|MST MDT CST CDT|70 60 60 50|01010123232323232323232|22bJ0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Santiago|-03 -04|30 40|01010101010101010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5","America/Scoresbysund|-01 +00 -02|10 0 20|0101010102020202020202|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|22bFu 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+11 +08|-b0 -80|01010101|22bs0 1o01 14kX 1lf1 14kX 1lf1 13bX|10","Asia/Bangkok|+07|-70|0||15e6","Asia/Vladivostok|+10|-a0|0||60e4","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|22mE0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|40e5","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|22mC0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|14e5","Europe/Istanbul|+03|-30|0||13e6","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40","Antarctica/Vostok|+07 +05|-70 -50|01|2bnv0|25","Asia/Almaty|+06 +05|-60 -50|01|2bR60|15e5","Asia/Amman|EET EEST +03|-20 -30 -30|0101012|22ja0 1qM0 WM0 1qM0 LA0 1C00|25e5","Asia/Kamchatka|+12|-c0|0||18e4","Asia/Dubai|+04|-40|0||39e5","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|22jW0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5","Asia/Dhaka|+06|-60|0||16e6","Asia/Kuala_Lumpur|+08|-80|0||71e5","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+09|-90|0||33e4","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Damascus|EET EEST +03|-20 -30 -30|0101012|22ja0 1qL0 WN0 1qL0 WN0 1qL0|26e5","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|22jy0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|18e5","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|22jc0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4","Asia/Kabul|+0430|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Kathmandu|+0545|-5J|0||12e5","Asia/Sakhalin|+11|-b0|0||58e4","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PST|-80|0||24e6","Asia/Seoul|KST|-90|0||23e6","Asia/Rangoon|+0630|-6u|0||48e5","Asia/Tehran|+0330 +0430|-3u -4u|0101010|22gIu 1dz0 1cN0 1dz0 1cp0 1dz0|14e6","Asia/Tokyo|JST|-90|0||38e6","Atlantic/Azores|-01 +00|10 0|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5","Atlantic/Cape_Verde|-01|10|0||50e4","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|22mEu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|+0845|-8J|0||368","Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|22mD0 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|-05 -06|50 60|01010101010101010101010|22mP0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5","Etc/GMT-1|+01|-10|0||","Pacific/Tongatapu|+13|-d0|0||75e3","Pacific/Kiritimati|+14|-e0|0||51e2","Etc/GMT-2|+02|-20|0||","Pacific/Tahiti|-10|a0|0||18e4","Pacific/Niue|-11|b0|0||12e2","Etc/GMT+12|-12|c0|0||","Pacific/Galapagos|-06|60|0||25e3","Etc/GMT+7|-07|70|0||","Pacific/Pitcairn|-08|80|0||56","Pacific/Gambier|-09|90|0||125","Etc/UTC|UTC|0|0||","Europe/London|GMT BST|0 -10|01010101010101010101010|22k10 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|22k00 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4","Europe/Moscow|MSK|-30|0||16e6","Europe/Volgograd|+04 MSK|-40 -30|01|249a0|10e5","Pacific/Honolulu|HST|a0|0||37e4","Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|22mC0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|600","Pacific/Apia|+14 +13|-e0 -d0|0101|22mC0 1a00 1fA0|37e3","Pacific/Fiji|+13 +12|-d0 -c0|0101|21N20 2hc0 bc0|88e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Marquesas|-0930|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Norfolk|+12 +11|-c0 -b0|01010101010101010101010|22mD0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|25e4"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Algiers|Africa/Tunis","Africa/Cairo|Egypt","Africa/Casablanca|Africa/El_Aaiun","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Khartoum|Africa/Blantyre","Africa/Khartoum|Africa/Bujumbura","Africa/Khartoum|Africa/Gaborone","Africa/Khartoum|Africa/Harare","Africa/Khartoum|Africa/Kigali","Africa/Khartoum|Africa/Lubumbashi","Africa/Khartoum|Africa/Lusaka","Africa/Khartoum|Africa/Maputo","Africa/Khartoum|Africa/Windhoek","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Ndjamena","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Europe/Kaliningrad","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Metlakatla","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Caracas|America/Boa_Vista","America/Caracas|America/Campo_Grande","America/Caracas|America/Cuiaba","America/Caracas|America/Guyana","America/Caracas|America/La_Paz","America/Caracas|America/Manaus","America/Caracas|America/Porto_Velho","America/Caracas|Brazil/West","America/Caracas|Etc/GMT+4","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Beulah","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Denver|America/Boise","America/Denver|America/Cambridge_Bay","America/Denver|America/Edmonton","America/Denver|America/Inuvik","America/Denver|America/Shiprock","America/Denver|America/Yellowknife","America/Denver|Canada/Mountain","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Godthab|America/Nuuk","America/Halifax|America/Glace_Bay","America/Halifax|America/Goose_Bay","America/Halifax|America/Moncton","America/Halifax|America/Thule","America/Halifax|Atlantic/Bermuda","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Lima|America/Bogota","America/Lima|America/Eirunepe","America/Lima|America/Guayaquil","America/Lima|America/Porto_Acre","America/Lima|America/Rio_Branco","America/Lima|Brazil/Acre","America/Lima|Etc/GMT+5","America/Los_Angeles|America/Ensenada","America/Los_Angeles|America/Santa_Isabel","America/Los_Angeles|America/Tijuana","America/Los_Angeles|America/Vancouver","America/Los_Angeles|Canada/Pacific","America/Los_Angeles|Mexico/BajaNorte","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Managua|America/Belize","America/Managua|America/Costa_Rica","America/Managua|America/El_Salvador","America/Managua|America/Guatemala","America/Managua|America/Regina","America/Managua|America/Swift_Current","America/Managua|America/Tegucigalpa","America/Managua|Canada/Saskatchewan","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|America/Bahia_Banderas","America/Mexico_City|America/Merida","America/Mexico_City|America/Monterrey","America/Mexico_City|Mexico/General","America/New_York|America/Detroit","America/New_York|America/Fort_Wayne","America/New_York|America/Grand_Turk","America/New_York|America/Indiana/Indianapolis","America/New_York|America/Indiana/Marengo","America/New_York|America/Indiana/Petersburg","America/New_York|America/Indiana/Vevay","America/New_York|America/Indiana/Vincennes","America/New_York|America/Indiana/Winamac","America/New_York|America/Indianapolis","America/New_York|America/Iqaluit","America/New_York|America/Kentucky/Louisville","America/New_York|America/Kentucky/Monticello","America/New_York|America/Louisville","America/New_York|America/Montreal","America/New_York|America/Nassau","America/New_York|America/Nipigon","America/New_York|America/Pangnirtung","America/New_York|America/Port-au-Prince","America/New_York|America/Thunder_Bay","America/New_York|America/Toronto","America/New_York|Canada/Eastern","America/New_York|EST5EDT","America/New_York|US/East-Indiana","America/New_York|US/Eastern","America/New_York|US/Michigan","America/Noronha|Atlantic/South_Georgia","America/Noronha|Brazil/DeNoronha","America/Noronha|Etc/GMT+2","America/Panama|America/Atikokan","America/Panama|America/Cancun","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|America/Jamaica","America/Panama|EST","America/Panama|Jamaica","America/Phoenix|America/Creston","America/Phoenix|America/Dawson_Creek","America/Phoenix|America/Fort_Nelson","America/Phoenix|America/Hermosillo","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Santiago|Chile/Continental","America/Santo_Domingo|America/Anguilla","America/Santo_Domingo|America/Antigua","America/Santo_Domingo|America/Aruba","America/Santo_Domingo|America/Barbados","America/Santo_Domingo|America/Blanc-Sablon","America/Santo_Domingo|America/Curacao","America/Santo_Domingo|America/Dominica","America/Santo_Domingo|America/Grenada","America/Santo_Domingo|America/Guadeloupe","America/Santo_Domingo|America/Kralendijk","America/Santo_Domingo|America/Lower_Princes","America/Santo_Domingo|America/Marigot","America/Santo_Domingo|America/Martinique","America/Santo_Domingo|America/Montserrat","America/Santo_Domingo|America/Port_of_Spain","America/Santo_Domingo|America/Puerto_Rico","America/Santo_Domingo|America/St_Barthelemy","America/Santo_Domingo|America/St_Kitts","America/Santo_Domingo|America/St_Lucia","America/Santo_Domingo|America/St_Thomas","America/Santo_Domingo|America/St_Vincent","America/Santo_Domingo|America/Tortola","America/Santo_Domingo|America/Virgin","America/Sao_Paulo|America/Araguaina","America/Sao_Paulo|America/Argentina/Buenos_Aires","America/Sao_Paulo|America/Argentina/Catamarca","America/Sao_Paulo|America/Argentina/ComodRivadavia","America/Sao_Paulo|America/Argentina/Cordoba","America/Sao_Paulo|America/Argentina/Jujuy","America/Sao_Paulo|America/Argentina/La_Rioja","America/Sao_Paulo|America/Argentina/Mendoza","America/Sao_Paulo|America/Argentina/Rio_Gallegos","America/Sao_Paulo|America/Argentina/Salta","America/Sao_Paulo|America/Argentina/San_Juan","America/Sao_Paulo|America/Argentina/San_Luis","America/Sao_Paulo|America/Argentina/Tucuman","America/Sao_Paulo|America/Argentina/Ushuaia","America/Sao_Paulo|America/Bahia","America/Sao_Paulo|America/Belem","America/Sao_Paulo|America/Buenos_Aires","America/Sao_Paulo|America/Catamarca","America/Sao_Paulo|America/Cayenne","America/Sao_Paulo|America/Cordoba","America/Sao_Paulo|America/Fortaleza","America/Sao_Paulo|America/Jujuy","America/Sao_Paulo|America/Maceio","America/Sao_Paulo|America/Mendoza","America/Sao_Paulo|America/Montevideo","America/Sao_Paulo|America/Paramaribo","America/Sao_Paulo|America/Punta_Arenas","America/Sao_Paulo|America/Recife","America/Sao_Paulo|America/Rosario","America/Sao_Paulo|America/Santarem","America/Sao_Paulo|Antarctica/Palmer","America/Sao_Paulo|Antarctica/Rothera","America/Sao_Paulo|Atlantic/Stanley","America/Sao_Paulo|Brazil/East","America/Sao_Paulo|Etc/GMT+3","America/St_Johns|Canada/Newfoundland","America/Whitehorse|America/Dawson","America/Whitehorse|Canada/Yukon","Asia/Almaty|Asia/Qostanay","Asia/Bangkok|Antarctica/Davis","Asia/Bangkok|Asia/Barnaul","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Hovd","Asia/Bangkok|Asia/Krasnoyarsk","Asia/Bangkok|Asia/Novokuznetsk","Asia/Bangkok|Asia/Novosibirsk","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Tomsk","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Etc/GMT-7","Asia/Bangkok|Indian/Christmas","Asia/Chita|Asia/Dili","Asia/Chita|Asia/Khandyga","Asia/Chita|Asia/Yakutsk","Asia/Chita|Etc/GMT-9","Asia/Chita|Pacific/Palau","Asia/Dhaka|Asia/Bishkek","Asia/Dhaka|Asia/Dacca","Asia/Dhaka|Asia/Kashgar","Asia/Dhaka|Asia/Omsk","Asia/Dhaka|Asia/Thimbu","Asia/Dhaka|Asia/Thimphu","Asia/Dhaka|Asia/Urumqi","Asia/Dhaka|Etc/GMT-6","Asia/Dhaka|Indian/Chagos","Asia/Dubai|Asia/Baku","Asia/Dubai|Asia/Muscat","Asia/Dubai|Asia/Tbilisi","Asia/Dubai|Asia/Yerevan","Asia/Dubai|Etc/GMT-4","Asia/Dubai|Europe/Astrakhan","Asia/Dubai|Europe/Samara","Asia/Dubai|Europe/Saratov","Asia/Dubai|Europe/Ulyanovsk","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Mauritius","Asia/Dubai|Indian/Reunion","Asia/Gaza|Asia/Hebron","Asia/Hong_Kong|Hongkong","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kamchatka|Asia/Anadyr","Asia/Kamchatka|Etc/GMT-12","Asia/Kamchatka|Kwajalein","Asia/Kamchatka|Pacific/Funafuti","Asia/Kamchatka|Pacific/Kwajalein","Asia/Kamchatka|Pacific/Majuro","Asia/Kamchatka|Pacific/Nauru","Asia/Kamchatka|Pacific/Tarawa","Asia/Kamchatka|Pacific/Wake","Asia/Kamchatka|Pacific/Wallis","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Brunei","Asia/Kuala_Lumpur|Asia/Choibalsan","Asia/Kuala_Lumpur|Asia/Irkutsk","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Asia/Ulaanbaatar","Asia/Kuala_Lumpur|Asia/Ulan_Bator","Asia/Kuala_Lumpur|Etc/GMT-8","Asia/Kuala_Lumpur|Singapore","Asia/Makassar|Asia/Ujung_Pandang","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Sakhalin|Asia/Magadan","Asia/Sakhalin|Asia/Srednekolymsk","Asia/Sakhalin|Etc/GMT-11","Asia/Sakhalin|Pacific/Bougainville","Asia/Sakhalin|Pacific/Efate","Asia/Sakhalin|Pacific/Guadalcanal","Asia/Sakhalin|Pacific/Kosrae","Asia/Sakhalin|Pacific/Noumea","Asia/Sakhalin|Pacific/Pohnpei","Asia/Sakhalin|Pacific/Ponape","Asia/Seoul|Asia/Pyongyang","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|Asia/Macao","Asia/Shanghai|Asia/Macau","Asia/Shanghai|Asia/Taipei","Asia/Shanghai|PRC","Asia/Shanghai|ROC","Asia/Tashkent|Antarctica/Mawson","Asia/Tashkent|Asia/Aqtau","Asia/Tashkent|Asia/Aqtobe","Asia/Tashkent|Asia/Ashgabat","Asia/Tashkent|Asia/Ashkhabad","Asia/Tashkent|Asia/Atyrau","Asia/Tashkent|Asia/Dushanbe","Asia/Tashkent|Asia/Oral","Asia/Tashkent|Asia/Qyzylorda","Asia/Tashkent|Asia/Samarkand","Asia/Tashkent|Asia/Yekaterinburg","Asia/Tashkent|Etc/GMT-5","Asia/Tashkent|Indian/Kerguelen","Asia/Tashkent|Indian/Maldives","Asia/Tehran|Iran","Asia/Tokyo|Japan","Asia/Vladivostok|Antarctica/DumontDUrville","Asia/Vladivostok|Asia/Ust-Nera","Asia/Vladivostok|Etc/GMT-10","Asia/Vladivostok|Pacific/Chuuk","Asia/Vladivostok|Pacific/Port_Moresby","Asia/Vladivostok|Pacific/Truk","Asia/Vladivostok|Pacific/Yap","Atlantic/Cape_Verde|Etc/GMT+1","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/Lord_Howe|Australia/LHI","Australia/Perth|Australia/West","Australia/Sydney|Antarctica/Macquarie","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/Currie","Australia/Sydney|Australia/Hobart","Australia/Sydney|Australia/Melbourne","Australia/Sydney|Australia/NSW","Australia/Sydney|Australia/Tasmania","Australia/Sydney|Australia/Victoria","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|Asia/Famagusta","Europe/Athens|Asia/Nicosia","Europe/Athens|EET","Europe/Athens|Europe/Bucharest","Europe/Athens|Europe/Helsinki","Europe/Athens|Europe/Kiev","Europe/Athens|Europe/Kyiv","Europe/Athens|Europe/Mariehamn","Europe/Athens|Europe/Nicosia","Europe/Athens|Europe/Riga","Europe/Athens|Europe/Sofia","Europe/Athens|Europe/Tallinn","Europe/Athens|Europe/Uzhgorod","Europe/Athens|Europe/Vilnius","Europe/Athens|Europe/Zaporozhye","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Istanbul|Antarctica/Syowa","Europe/Istanbul|Asia/Aden","Europe/Istanbul|Asia/Baghdad","Europe/Istanbul|Asia/Bahrain","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Asia/Kuwait","Europe/Istanbul|Asia/Qatar","Europe/Istanbul|Asia/Riyadh","Europe/Istanbul|Etc/GMT-3","Europe/Istanbul|Europe/Minsk","Europe/Istanbul|Turkey","Europe/Lisbon|Atlantic/Canary","Europe/Lisbon|Atlantic/Faeroe","Europe/Lisbon|Atlantic/Faroe","Europe/Lisbon|Atlantic/Madeira","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|Europe/Kirov","Europe/Moscow|Europe/Simferopol","Europe/Moscow|W-SU","Europe/Paris|Africa/Ceuta","Europe/Paris|Arctic/Longyearbyen","Europe/Paris|Atlantic/Jan_Mayen","Europe/Paris|CET","Europe/Paris|Europe/Amsterdam","Europe/Paris|Europe/Andorra","Europe/Paris|Europe/Belgrade","Europe/Paris|Europe/Berlin","Europe/Paris|Europe/Bratislava","Europe/Paris|Europe/Brussels","Europe/Paris|Europe/Budapest","Europe/Paris|Europe/Busingen","Europe/Paris|Europe/Copenhagen","Europe/Paris|Europe/Gibraltar","Europe/Paris|Europe/Ljubljana","Europe/Paris|Europe/Luxembourg","Europe/Paris|Europe/Madrid","Europe/Paris|Europe/Malta","Europe/Paris|Europe/Monaco","Europe/Paris|Europe/Oslo","Europe/Paris|Europe/Podgorica","Europe/Paris|Europe/Prague","Europe/Paris|Europe/Rome","Europe/Paris|Europe/San_Marino","Europe/Paris|Europe/Sarajevo","Europe/Paris|Europe/Skopje","Europe/Paris|Europe/Stockholm","Europe/Paris|Europe/Tirane","Europe/Paris|Europe/Vaduz","Europe/Paris|Europe/Vatican","Europe/Paris|Europe/Vienna","Europe/Paris|Europe/Warsaw","Europe/Paris|Europe/Zagreb","Europe/Paris|Europe/Zurich","Europe/Paris|MET","Europe/Paris|Poland","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Galapagos|Etc/GMT+6","Pacific/Gambier|Etc/GMT+9","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kiritimati|Etc/GMT-14","Pacific/Niue|Etc/GMT+11","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pitcairn|Etc/GMT+8","Pacific/Tahiti|Etc/GMT+10","Pacific/Tahiti|Pacific/Rarotonga","Pacific/Tongatapu|Etc/GMT-13","Pacific/Tongatapu|Pacific/Enderbury","Pacific/Tongatapu|Pacific/Fakaofo","Pacific/Tongatapu|Pacific/Kanton"],countries:["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Puerto_Rico America/Antigua","AI|America/Puerto_Rico America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo","AW|America/Puerto_Rico America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Puerto_Rico America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Kuching Asia/Brunei","BO|America/La_Paz","BQ|America/Puerto_Rico America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Toronto America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston","CC|Asia/Yangon Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Puerto_Rico America/Curacao","CX|Asia/Bangkok Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Berlin Europe/Copenhagen","DM|America/Puerto_Rico America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Puerto_Rico America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London Europe/Guernsey","GH|Africa/Abidjan Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Puerto_Rico America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Africa/Abidjan Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Puerto_Rico America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Puerto_Rico America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Brussels Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Paris Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Puerto_Rico America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Puerto_Rico America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana","MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Brussels Europe/Amsterdam","NO|Europe/Berlin Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Asia/Dubai Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Asia/Dubai Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Berlin Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Berlin Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Puerto_Rico America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Asia/Dubai Indian/Maldives Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Puerto_Rico America/Port_of_Spain","TV|Pacific/Tarawa Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kyiv","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake","US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Puerto_Rico America/St_Vincent","VE|America/Caracas","VG|America/Puerto_Rico America/Tortola","VI|America/Puerto_Rico America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Tarawa Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}),o});
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1582 +1,0 @@
-//! moment-timezone.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('moment')); // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	// Resolves es6 module loading issue
-	if (moment.version === undefined && moment.default) {
-		moment = moment.default;
-	}
-
-	// Do not load moment-timezone a second time.
-	// if (moment.tz !== undefined) {
-	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
-	// 	return moment;
-	// }
-
-	var VERSION = "0.5.48",
-		zones = {},
-		links = {},
-		countries = {},
-		names = {},
-		guesses = {},
-		cachedGuess;
-
-	if (!moment || typeof moment.version !== 'string') {
-		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
-	}
-
-	var momentVersion = moment.version.split('.'),
-		major = +momentVersion[0],
-		minor = +momentVersion[1];
-
-	// Moment.js version check
-	if (major < 2 || (major === 2 && minor < 6)) {
-		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
-	}
-
-	/************************************
-		Unpacking
-	************************************/
-
-	function charCodeToInt(charCode) {
-		if (charCode > 96) {
-			return charCode - 87;
-		} else if (charCode > 64) {
-			return charCode - 29;
-		}
-		return charCode - 48;
-	}
-
-	function unpackBase60(string) {
-		var i = 0,
-			parts = string.split('.'),
-			whole = parts[0],
-			fractional = parts[1] || '',
-			multiplier = 1,
-			num,
-			out = 0,
-			sign = 1;
-
-		// handle negative numbers
-		if (string.charCodeAt(0) === 45) {
-			i = 1;
-			sign = -1;
-		}
-
-		// handle digits before the decimal
-		for (i; i < whole.length; i++) {
-			num = charCodeToInt(whole.charCodeAt(i));
-			out = 60 * out + num;
-		}
-
-		// handle digits after the decimal
-		for (i = 0; i < fractional.length; i++) {
-			multiplier = multiplier / 60;
-			num = charCodeToInt(fractional.charCodeAt(i));
-			out += num * multiplier;
-		}
-
-		return out * sign;
-	}
-
-	function arrayToInt (array) {
-		for (var i = 0; i < array.length; i++) {
-			array[i] = unpackBase60(array[i]);
-		}
-	}
-
-	function intToUntil (array, length) {
-		for (var i = 0; i < length; i++) {
-			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
-		}
-
-		array[length - 1] = Infinity;
-	}
-
-	function mapIndices (source, indices) {
-		var out = [], i;
-
-		for (i = 0; i < indices.length; i++) {
-			out[i] = source[indices[i]];
-		}
-
-		return out;
-	}
-
-	function unpack (string) {
-		var data = string.split('|'),
-			offsets = data[2].split(' '),
-			indices = data[3].split(''),
-			untils  = data[4].split(' ');
-
-		arrayToInt(offsets);
-		arrayToInt(indices);
-		arrayToInt(untils);
-
-		intToUntil(untils, indices.length);
-
-		return {
-			name       : data[0],
-			abbrs      : mapIndices(data[1].split(' '), indices),
-			offsets    : mapIndices(offsets, indices),
-			untils     : untils,
-			population : data[5] | 0
-		};
-	}
-
-	/************************************
-		Zone object
-	************************************/
-
-	function Zone (packedString) {
-		if (packedString) {
-			this._set(unpack(packedString));
-		}
-	}
-
-	function closest (num, arr) {
-		var len = arr.length;
-		if (num < arr[0]) {
-			return 0;
-		} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {
-			return len - 1;
-		} else if (num >= arr[len - 1]) {
-			return -1;
-		}
-
-		var mid;
-		var lo = 0;
-		var hi = len - 1;
-		while (hi - lo > 1) {
-			mid = Math.floor((lo + hi) / 2);
-			if (arr[mid] <= num) {
-				lo = mid;
-			} else {
-				hi = mid;
-			}
-		}
-		return hi;
-	}
-
-	Zone.prototype = {
-		_set : function (unpacked) {
-			this.name       = unpacked.name;
-			this.abbrs      = unpacked.abbrs;
-			this.untils     = unpacked.untils;
-			this.offsets    = unpacked.offsets;
-			this.population = unpacked.population;
-		},
-
-		_index : function (timestamp) {
-			var target = +timestamp,
-				untils = this.untils,
-				i;
-
-			i = closest(target, untils);
-			if (i >= 0) {
-				return i;
-			}
-		},
-
-		countries : function () {
-			var zone_name = this.name;
-			return Object.keys(countries).filter(function (country_code) {
-				return countries[country_code].zones.indexOf(zone_name) !== -1;
-			});
-		},
-
-		parse : function (timestamp) {
-			var target  = +timestamp,
-				offsets = this.offsets,
-				untils  = this.untils,
-				max     = untils.length - 1,
-				offset, offsetNext, offsetPrev, i;
-
-			for (i = 0; i < max; i++) {
-				offset     = offsets[i];
-				offsetNext = offsets[i + 1];
-				offsetPrev = offsets[i ? i - 1 : i];
-
-				if (offset < offsetNext && tz.moveAmbiguousForward) {
-					offset = offsetNext;
-				} else if (offset > offsetPrev && tz.moveInvalidForward) {
-					offset = offsetPrev;
-				}
-
-				if (target < untils[i] - (offset * 60000)) {
-					return offsets[i];
-				}
-			}
-
-			return offsets[max];
-		},
-
-		abbr : function (mom) {
-			return this.abbrs[this._index(mom)];
-		},
-
-		offset : function (mom) {
-			logError("zone.offset has been deprecated in favor of zone.utcOffset");
-			return this.offsets[this._index(mom)];
-		},
-
-		utcOffset : function (mom) {
-			return this.offsets[this._index(mom)];
-		}
-	};
-
-	/************************************
-		Country object
-	************************************/
-
-	function Country (country_name, zone_names) {
-		this.name = country_name;
-		this.zones = zone_names;
-	}
-
-	/************************************
-		Current Timezone
-	************************************/
-
-	function OffsetAt(at) {
-		var timeString = at.toTimeString();
-		var abbr = timeString.match(/\([a-z ]+\)/i);
-		if (abbr && abbr[0]) {
-			// 17:56:31 GMT-0600 (CST)
-			// 17:56:31 GMT-0600 (Central Standard Time)
-			abbr = abbr[0].match(/[A-Z]/g);
-			abbr = abbr ? abbr.join('') : undefined;
-		} else {
-			// 17:56:31 CST
-			// 17:56:31 GMT+0800 (台北標準時間)
-			abbr = timeString.match(/[A-Z]{3,5}/g);
-			abbr = abbr ? abbr[0] : undefined;
-		}
-
-		if (abbr === 'GMT') {
-			abbr = undefined;
-		}
-
-		this.at = +at;
-		this.abbr = abbr;
-		this.offset = at.getTimezoneOffset();
-	}
-
-	function ZoneScore(zone) {
-		this.zone = zone;
-		this.offsetScore = 0;
-		this.abbrScore = 0;
-	}
-
-	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
-		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
-		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
-			this.abbrScore++;
-		}
-	};
-
-	function findChange(low, high) {
-		var mid, diff;
-
-		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
-			mid = new OffsetAt(new Date(low.at + diff));
-			if (mid.offset === low.offset) {
-				low = mid;
-			} else {
-				high = mid;
-			}
-		}
-
-		return low;
-	}
-
-	function userOffsets() {
-		var startYear = new Date().getFullYear() - 2,
-			last = new OffsetAt(new Date(startYear, 0, 1)),
-			lastOffset = last.offset,
-			offsets = [last],
-			change, next, nextOffset, i;
-
-		for (i = 1; i < 48; i++) {
-			nextOffset = new Date(startYear, i, 1).getTimezoneOffset();
-			if (nextOffset !== lastOffset) {
-				// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets
-				next = new OffsetAt(new Date(startYear, i, 1));
-				change = findChange(last, next);
-				offsets.push(change);
-				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
-				last = next;
-				lastOffset = nextOffset;
-			}
-		}
-
-		for (i = 0; i < 4; i++) {
-			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
-			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
-		}
-
-		return offsets;
-	}
-
-	function sortZoneScores (a, b) {
-		if (a.offsetScore !== b.offsetScore) {
-			return a.offsetScore - b.offsetScore;
-		}
-		if (a.abbrScore !== b.abbrScore) {
-			return a.abbrScore - b.abbrScore;
-		}
-		if (a.zone.population !== b.zone.population) {
-			return b.zone.population - a.zone.population;
-		}
-		return b.zone.name.localeCompare(a.zone.name);
-	}
-
-	function addToGuesses (name, offsets) {
-		var i, offset;
-		arrayToInt(offsets);
-		for (i = 0; i < offsets.length; i++) {
-			offset = offsets[i];
-			guesses[offset] = guesses[offset] || {};
-			guesses[offset][name] = true;
-		}
-	}
-
-	function guessesForUserOffsets (offsets) {
-		var offsetsLength = offsets.length,
-			filteredGuesses = {},
-			out = [],
-			checkedOffsets = {},
-			i, j, offset, guessesOffset;
-
-		for (i = 0; i < offsetsLength; i++) {
-			offset = offsets[i].offset;
-			if (checkedOffsets.hasOwnProperty(offset)) {
-				continue;
-			}
-			guessesOffset = guesses[offset] || {};
-			for (j in guessesOffset) {
-				if (guessesOffset.hasOwnProperty(j)) {
-					filteredGuesses[j] = true;
-				}
-			}
-			checkedOffsets[offset] = true;
-		}
-
-		for (i in filteredGuesses) {
-			if (filteredGuesses.hasOwnProperty(i)) {
-				out.push(names[i]);
-			}
-		}
-
-		return out;
-	}
-
-	function rebuildGuess () {
-
-		// use Intl API when available and returning valid time zone
-		try {
-			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
-			if (intlName && intlName.length > 3) {
-				var name = names[normalizeName(intlName)];
-				if (name) {
-					return name;
-				}
-				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
-			}
-		} catch (e) {
-			// Intl unavailable, fall back to manual guessing.
-		}
-
-		var offsets = userOffsets(),
-			offsetsLength = offsets.length,
-			guesses = guessesForUserOffsets(offsets),
-			zoneScores = [],
-			zoneScore, i, j;
-
-		for (i = 0; i < guesses.length; i++) {
-			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
-			for (j = 0; j < offsetsLength; j++) {
-				zoneScore.scoreOffsetAt(offsets[j]);
-			}
-			zoneScores.push(zoneScore);
-		}
-
-		zoneScores.sort(sortZoneScores);
-
-		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
-	}
-
-	function guess (ignoreCache) {
-		if (!cachedGuess || ignoreCache) {
-			cachedGuess = rebuildGuess();
-		}
-		return cachedGuess;
-	}
-
-	/************************************
-		Global Methods
-	************************************/
-
-	function normalizeName (name) {
-		return (name || '').toLowerCase().replace(/\//g, '_');
-	}
-
-	function addZone (packed) {
-		var i, name, split, normalized;
-
-		if (typeof packed === "string") {
-			packed = [packed];
-		}
-
-		for (i = 0; i < packed.length; i++) {
-			split = packed[i].split('|');
-			name = split[0];
-			normalized = normalizeName(name);
-			zones[normalized] = packed[i];
-			names[normalized] = name;
-			addToGuesses(normalized, split[2].split(' '));
-		}
-	}
-
-	function getZone (name, caller) {
-
-		name = normalizeName(name);
-
-		var zone = zones[name];
-		var link;
-
-		if (zone instanceof Zone) {
-			return zone;
-		}
-
-		if (typeof zone === 'string') {
-			zone = new Zone(zone);
-			zones[name] = zone;
-			return zone;
-		}
-
-		// Pass getZone to prevent recursion more than 1 level deep
-		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
-			zone = zones[name] = new Zone();
-			zone._set(link);
-			zone.name = names[name];
-			return zone;
-		}
-
-		return null;
-	}
-
-	function getNames () {
-		var i, out = [];
-
-		for (i in names) {
-			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
-				out.push(names[i]);
-			}
-		}
-
-		return out.sort();
-	}
-
-	function getCountryNames () {
-		return Object.keys(countries);
-	}
-
-	function addLink (aliases) {
-		var i, alias, normal0, normal1;
-
-		if (typeof aliases === "string") {
-			aliases = [aliases];
-		}
-
-		for (i = 0; i < aliases.length; i++) {
-			alias = aliases[i].split('|');
-
-			normal0 = normalizeName(alias[0]);
-			normal1 = normalizeName(alias[1]);
-
-			links[normal0] = normal1;
-			names[normal0] = alias[0];
-
-			links[normal1] = normal0;
-			names[normal1] = alias[1];
-		}
-	}
-
-	function addCountries (data) {
-		var i, country_code, country_zones, split;
-		if (!data || !data.length) return;
-		for (i = 0; i < data.length; i++) {
-			split = data[i].split('|');
-			country_code = split[0].toUpperCase();
-			country_zones = split[1].split(' ');
-			countries[country_code] = new Country(
-				country_code,
-				country_zones
-			);
-		}
-	}
-
-	function getCountry (name) {
-		name = name.toUpperCase();
-		return countries[name] || null;
-	}
-
-	function zonesForCountry(country, with_offset) {
-		country = getCountry(country);
-
-		if (!country) return null;
-
-		var zones = country.zones.sort();
-
-		if (with_offset) {
-			return zones.map(function (zone_name) {
-				var zone = getZone(zone_name);
-				return {
-					name: zone_name,
-					offset: zone.utcOffset(new Date())
-				};
-			});
-		}
-
-		return zones;
-	}
-
-	function loadData (data) {
-		addZone(data.zones);
-		addLink(data.links);
-		addCountries(data.countries);
-		tz.dataVersion = data.version;
-	}
-
-	function zoneExists (name) {
-		if (!zoneExists.didShowError) {
-			zoneExists.didShowError = true;
-				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
-		}
-		return !!getZone(name);
-	}
-
-	function needsOffset (m) {
-		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
-		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
-	}
-
-	function logError (message) {
-		if (typeof console !== 'undefined' && typeof console.error === 'function') {
-			console.error(message);
-		}
-	}
-
-	/************************************
-		moment.tz namespace
-	************************************/
-
-	function tz (input) {
-		var args = Array.prototype.slice.call(arguments, 0, -1),
-			name = arguments[arguments.length - 1],
-			out  = moment.utc.apply(null, args),
-			zone;
-
-		if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {
-			out.add(zone.parse(out), 'minutes');
-		}
-
-		out.tz(name);
-
-		return out;
-	}
-
-	tz.version      = VERSION;
-	tz.dataVersion  = '';
-	tz._zones       = zones;
-	tz._links       = links;
-	tz._names       = names;
-	tz._countries	= countries;
-	tz.add          = addZone;
-	tz.link         = addLink;
-	tz.load         = loadData;
-	tz.zone         = getZone;
-	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
-	tz.guess        = guess;
-	tz.names        = getNames;
-	tz.Zone         = Zone;
-	tz.unpack       = unpack;
-	tz.unpackBase60 = unpackBase60;
-	tz.needsOffset  = needsOffset;
-	tz.moveInvalidForward   = true;
-	tz.moveAmbiguousForward = false;
-	tz.countries    = getCountryNames;
-	tz.zonesForCountry = zonesForCountry;
-
-	/************************************
-		Interface with Moment.js
-	************************************/
-
-	var fn = moment.fn;
-
-	moment.tz = tz;
-
-	moment.defaultZone = null;
-
-	moment.updateOffset = function (mom, keepTime) {
-		var zone = moment.defaultZone,
-			offset;
-
-		if (mom._z === undefined) {
-			if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {
-				mom._d = moment.utc(mom._a)._d;
-				mom.utc().add(zone.parse(mom), 'minutes');
-			}
-			mom._z = zone;
-		}
-		if (mom._z) {
-			offset = mom._z.utcOffset(mom);
-			if (Math.abs(offset) < 16) {
-				offset = offset / 60;
-			}
-			if (mom.utcOffset !== undefined) {
-				var z = mom._z;
-				mom.utcOffset(-offset, keepTime);
-				mom._z = z;
-			} else {
-				mom.zone(offset, keepTime);
-			}
-		}
-	};
-
-	fn.tz = function (name, keepTime) {
-		if (name) {
-			if (typeof name !== 'string') {
-				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
-			}
-			this._z = getZone(name);
-			if (this._z) {
-				moment.updateOffset(this, keepTime);
-			} else {
-				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
-			}
-			return this;
-		}
-		if (this._z) { return this._z.name; }
-	};
-
-	function abbrWrap (old) {
-		return function () {
-			if (this._z) { return this._z.abbr(this); }
-			return old.call(this);
-		};
-	}
-
-	function resetZoneWrap (old) {
-		return function () {
-			this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	function resetZoneWrap2 (old) {
-		return function () {
-			if (arguments.length > 0) this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	fn.zoneName  = abbrWrap(fn.zoneName);
-	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
-	fn.utc       = resetZoneWrap(fn.utc);
-	fn.local     = resetZoneWrap(fn.local);
-	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
-
-	moment.tz.setDefault = function(name) {
-		if (major < 2 || (major === 2 && minor < 9)) {
-			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
-		}
-		moment.defaultZone = name ? getZone(name) : null;
-		return moment;
-	};
-
-	// Cloning a moment should include the _z property.
-	var momentProperties = moment.momentProperties;
-	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
-		// moment 2.8.1+
-		momentProperties.push('_z');
-		momentProperties.push('_a');
-	} else if (momentProperties) {
-		// moment 2.7.0
-		momentProperties._z = null;
-	}
-
-	loadData({
-		"version": "2025b",
-		"zones": [
-			"Africa/Abidjan|GMT|0|0||48e5",
-			"Africa/Nairobi|EAT|-30|0||47e5",
-			"Africa/Algiers|WET WEST CET CEST|0 -10 -10 -20|01012320102|3bX0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
-			"Africa/Lagos|WAT|-10|0||17e6",
-			"Africa/Bissau|-01 GMT|10 0|01|cap0|39e4",
-			"Africa/Maputo|CAT|-20|0||26e5",
-			"Africa/Cairo|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|LX0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0|15e6",
-			"Africa/Casablanca|+00 +01|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|32e5",
-			"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|0101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|85e3",
-			"Africa/El_Aaiun|-01 +00 +01|10 0 -10|01212121212121212121212121212121212121212121212121212121212121212121|fi10 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|20e4",
-			"Africa/Johannesburg|SAST|-20|0||84e5",
-			"Africa/Juba|CAT CAST EAT|-20 -30 -30|01010101010101010101010101010101020|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|",
-			"Africa/Khartoum|CAT CAST EAT|-20 -30 -30|01010101010101010101010101010101020|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5",
-			"Africa/Monrovia|MMT GMT|I.u 0|01|4SoI.u|11e5",
-			"Africa/Ndjamena|WAT WAST|-10 -20|010|nNb0 Wn0|13e5",
-			"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|",
-			"Africa/Tripoli|EET CET CEST|-20 -10 -20|0121212121212121210120120|tda0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5",
-			"Africa/Tunis|CET CEST|-10 -20|0101010101010101010|hOn0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5",
-			"Africa/Windhoek|SAST CAT WAT|-20 -20 -10|01212121212121212121212121212121212121212121212121|Ndy0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
-			"America/Adak|BST BDT AHST HST HDT|b0 a0 a0 a0 90|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
-			"America/Anchorage|AHST AHDT YST AKST AKDT|a0 90 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kc0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
-			"America/Puerto_Rico|AST|40|0||24e5",
-			"America/Araguaina|-03 -02|30 20|01010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4",
-			"America/Argentina/Buenos_Aires|-03 -02|30 20|01010101010101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-			"America/Argentina/Catamarca|-03 -02 -04|30 20 40|01010101210102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Cordoba|-03 -02 -04|30 20 40|01010101210101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-			"America/Argentina/Jujuy|-03 -02 -04|30 20 40|010101202101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|",
-			"America/Argentina/La_Rioja|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Mendoza|-03 -02 -04|30 20 40|01010120202102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|",
-			"America/Argentina/Rio_Gallegos|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Salta|-03 -02 -04|30 20 40|010101012101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|",
-			"America/Argentina/San_Juan|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|",
-			"America/Argentina/San_Luis|-03 -02 -04|30 20 40|010101202020102020|9Rf0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|",
-			"America/Argentina/Tucuman|-03 -02 -04|30 20 40|0101010121010201010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|",
-			"America/Argentina/Ushuaia|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|",
-			"America/Asuncion|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|6FE0 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5",
-			"America/Panama|EST|50|0||15e5",
-			"America/Bahia_Banderas|MST MDT CDT CST|70 60 50 60|0101010101010101010101010101023232323232323232323232323|13Vl0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3",
-			"America/Bahia|-03 -02|30 20|010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5",
-			"America/Barbados|AST ADT|40 30|010101010|i7G0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4",
-			"America/Belem|-03 -02|30 20|0101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0|20e5",
-			"America/Belize|CST CDT|60 50|01010|9xG0 qn0 lxB0 mn0|57e3",
-			"America/Boa_Vista|-04 -03|40 30|01010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2",
-			"America/Bogota|-05 -04|50 40|010|Snh0 1PX0|90e5",
-			"America/Boise|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4",
-			"America/Cambridge_Bay|MST MDT CST CDT EST|70 60 60 50 50|010101010101010101010101010101010101010101010101010101012342101010101010101010101010101010101010101010101010101010101010|5E90 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2",
-			"America/Campo_Grande|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
-			"America/Cancun|CST EST CDT EDT|60 50 50 40|0102021320202020202020202020202020202020201|taU0 2tx0 wgP0 1lb0 14p0 1lb0 14o0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
-			"America/Caracas|-04 -0430|40 4u|010|1wmv0 kqo0|29e5",
-			"America/Cayenne|-03|30|0||58e3",
-			"America/Chicago|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
-			"America/Chihuahua|CST CDT MDT MST|60 50 60 70|0101023232323232323232323232323232323232323232323232320|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
-			"America/Ciudad_Juarez|CST CDT MDT MST|60 50 60 70|010102323232323232323232323232323232323232323232323232032323232323232323|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Costa_Rica|CST CDT|60 50|010101010|mgS0 Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5",
-			"America/Coyhaique|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|",
-			"America/Phoenix|MST|70|0||42e5",
-			"America/Cuiaba|-04 -03|40 30|0101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4",
-			"America/Danmarkshavn|-03 -02 GMT|30 20 0|0101010101010101010101010101010102|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8",
-			"America/Dawson_Creek|PST PDT MST|80 70 70|0101012|Ka0 1cL0 1cN0 1fz0 1cN0 ML0|12e3",
-			"America/Dawson|YST PST PDT MST|90 80 70 70|012121212121212121212121212121212121212121212121212121212121212121212121212121212123|9ix0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2",
-			"America/Denver|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
-			"America/Detroit|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|85H0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5",
-			"America/Edmonton|MST MDT|70 60|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E90 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5",
-			"America/Eirunepe|-05 -04|50 40|01010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3",
-			"America/El_Salvador|CST CDT|60 50|01010|Gcu0 WL0 1qN0 WL0|11e5",
-			"America/Tijuana|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fmy0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5",
-			"America/Fort_Nelson|PST PDT MST|80 70 70|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
-			"America/Fort_Wayne|EST EDT|50 40|01010101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Fortaleza|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5",
-			"America/Glace_Bay|AST ADT|40 30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E60 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
-			"America/Godthab|-03 -02 -01|30 20 10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010121212121212121|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3",
-			"America/Goose_Bay|AST ADT ADDT|40 30 20|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2",
-			"America/Grand_Turk|EST EDT AST|50 40 40|0101010101010101010101010101010101010101010101010101010101010101010101010210101010101010101010101010|mG70 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
-			"America/Guatemala|CST CDT|60 50|010101010|9tG0 An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5",
-			"America/Guayaquil|-05 -04|50 40|010|TKR0 rz0|27e5",
-			"America/Guyana|-0345 -03 -04|3J 30 40|012|dzfJ Ey0f|80e4",
-			"America/Halifax|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
-			"America/Havana|CST CDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K50 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
-			"America/Hermosillo|MST MDT|70 60|0101010|13Vl0 1lb0 14p0 1lb0 14p0 1lb0|64e4",
-			"America/Indiana/Knox|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101210101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Marengo|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Petersburg|CST CDT EST EDT|60 50 50 40|0101010101010101210123232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Tell_City|EST EDT CDT CST|50 40 50 60|01023232323232323232323232323232323232323232323232323|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Vevay|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Vincennes|EST EDT CDT CST|50 40 50 60|01023201010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Winamac|EST EDT CDT CST|50 40 50 60|01023101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Inuvik|PST PDT MDT MST|80 70 60 70|01010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|5Ea0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2",
-			"America/Iqaluit|EST EDT CST CDT|50 40 60 50|01010101010101010101010101010101010101010101010101010101230101010101010101010101010101010101010101010101010101010101010|5E70 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2",
-			"America/Jamaica|EST EDT|50 40|010101010101010101010|9Kv0 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4",
-			"America/Juneau|PST PDT YDT YST AKST AKDT|80 70 80 90 90 80|0101010101010101010102010101345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3",
-			"America/Kentucky/Louisville|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Kentucky/Monticello|CST CDT EST EDT|60 50 50 40|010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/La_Paz|-04|40|0||19e5",
-			"America/Lima|-05 -04|50 40|010101010|CVF0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6",
-			"America/Los_Angeles|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
-			"America/Maceio|-03 -02|30 20|0101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4",
-			"America/Managua|CST EST CDT|60 50 50|010202010102020|86u0 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5",
-			"America/Manaus|-04 -03|40 30|010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5",
-			"America/Martinique|AST ADT|40 30|010|oXg0 19X0|39e4",
-			"America/Matamoros|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4",
-			"America/Mazatlan|MST MDT|70 60|0101010101010101010101010101010101010101010101010101010|13Vl0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4",
-			"America/Menominee|EST CDT CST|50 50 60|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|85H0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2",
-			"America/Merida|CST EST CDT|60 50 50|010202020202020202020202020202020202020202020202020202020|taU0 24n0 wG10 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5",
-			"America/Metlakatla|PST PDT AKST AKDT|80 70 90 80|0101010101010101010101010101023232302323232323232323232323232|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
-			"America/Mexico_City|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010|13Vk0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
-			"America/Miquelon|AST -03 -02|40 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|p9g0 gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
-			"America/Moncton|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3",
-			"America/Monterrey|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5",
-			"America/Montevideo|-03 -02 -0130 -0230|30 20 1u 2u|0101023010101010101010101010101010101010101010101010|JD0 jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
-			"America/Toronto|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5",
-			"America/New_York|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
-			"America/Nome|BST BDT YST AKST AKDT|b0 a0 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2",
-			"America/Noronha|-02 -01|20 10|01010101010101010|CxC0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2",
-			"America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010123232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/North_Dakota/Center|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/North_Dakota/New_Salem|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Ojinaga|CST CDT MDT MST|60 50 60 70|01010232323232323232323232323232323232323232323232323201010101010101010|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
-			"America/Paramaribo|-0330 -03|3u 30|01|zSPu|24e4",
-			"America/Port-au-Prince|EST EDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010|wu50 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-			"America/Rio_Branco|-05 -04|50 40|010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
-			"America/Porto_Velho|-04 -03|40 30|0101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
-			"America/Punta_Arenas|-03 -04|30 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|",
-			"America/Winnipeg|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4",
-			"America/Rankin_Inlet|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101010101010101012101010101010101010101010101010101010101010101010101010101010|5E80 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2",
-			"America/Recife|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5",
-			"America/Regina|CST|60|0||19e4",
-			"America/Resolute|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101010101010101012101010101012101010101010101010101010101010101010101010101010|5E80 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
-			"America/Santarem|-04 -03|40 30|01010101|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
-			"America/Santiago|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5",
-			"America/Santo_Domingo|-0430 EST AST|4u 50 40|0101010101212|ksu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
-			"America/Sao_Paulo|-03 -02|30 20|010101010101010101010101010101010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
-			"America/Scoresbysund|-02 -01 +00|20 10 0|010212121212121212121212121212121212121212121212121212121212121212121212121212121212121210101010101010|oXg0 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452",
-			"America/Sitka|PST PDT YST AKST AKDT|80 70 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2",
-			"America/St_Johns|NST NDT NDDT|3u 2u 1u|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K5u 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
-			"America/Swift_Current|MST CST|70 60|01|5E90|16e3",
-			"America/Tegucigalpa|CST CDT|60 50|0101010|Gcu0 WL0 1qN0 WL0 GRd0 AL0|11e5",
-			"America/Thule|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010|PHG0 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656",
-			"America/Vancouver|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-			"America/Whitehorse|PST PDT MST|80 70 70|01010101010101010101010101010101010101010101010101010101010101010101010101010101012|p7K0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
-			"America/Yakutat|YST YDT AKST AKDT|90 80 90 80|0101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|Kb0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642",
-			"Antarctica/Casey|+08 +11|-80 -b0|01010101010101010|1ARS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10",
-			"Antarctica/Davis|+07 +05|-70 -50|01010|1ART0 VB0 3Wn0 KN0|70",
-			"Pacific/Port_Moresby|+10|-a0|0||25e4",
-			"Antarctica/Macquarie|AEDT AEST|-b0 -a0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|1",
-			"Antarctica/Mawson|+06 +05|-60 -50|01|1ARU0|60",
-			"Pacific/Auckland|NZST NZDT|-c0 -d0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|14e5",
-			"Antarctica/Palmer|-03 -02 -04|30 20 40|01020202020202020202020202020202020202020202020202020202020202020202020|9Rf0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
-			"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130",
-			"Asia/Riyadh|+03|-30|0||57e5",
-			"Antarctica/Troll|-00 +00 +02|0 0 -20|012121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40",
-			"Antarctica/Vostok|+07 -00 +05|-70 0 -50|0102|WCF0 1Nj0 1aTv0|25",
-			"Europe/Berlin|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXd0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e5",
-			"Asia/Almaty|+06 +07 +05|-60 -70 -50|01010101010101010101020101010101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5",
-			"Asia/Amman|EET EEST +03|-20 -30 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101012|8kK0 KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5",
-			"Asia/Anadyr|+13 +14 +12 +11|-d0 -e0 -c0 -b0|010202020202020202023202020202020202020202020202020202020232|rmX0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3",
-			"Asia/Aqtau|+05 +06 +04|-50 -60 -40|0101010101010101010201010120202020202020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4",
-			"Asia/Aqtobe|+05 +06 +04|-50 -60 -40|01010101010101010102010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4",
-			"Asia/Ashgabat|+05 +06 +04|-50 -60 -40|01010101010101010101020|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4",
-			"Asia/Atyrau|+05 +06 +04|-50 -60 -40|010101010101010101020101010101010102020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
-			"Asia/Baghdad|+03 +04|-30 -40|01010101010101010101010101010101010101010101010101010|u190 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5",
-			"Asia/Qatar|+04 +03|-40 -30|01|5QI0|96e4",
-			"Asia/Baku|+04 +05 +03|-40 -50 -30|010101010101010101010201010101010101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-			"Asia/Bangkok|+07|-70|0||15e6",
-			"Asia/Barnaul|+07 +08 +06|-70 -80 -60|01010101010101010101020101010102020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|",
-			"Asia/Beirut|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|61a0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5",
-			"Asia/Bishkek|+06 +07 +05|-60 -70 -50|0101010101010101010102020202020202020202020202020|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4",
-			"Asia/Brunei|+08|-80|0||42e4",
-			"Asia/Kolkata|IST|-5u|0||15e6",
-			"Asia/Chita|+09 +10 +08|-90 -a0 -80|0101010101010101010102010101010101010101010101010101010101010120|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4",
-			"Asia/Ulaanbaatar|+07 +08 +09|-70 -80 -90|01212121212121212121212121212121212121212121212121|jsF0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5",
-			"Asia/Shanghai|CST CDT|-80 -90|0101010101010|DKG0 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6",
-			"Asia/Colombo|+0530 +0630 +06|-5u -6u -60|0120|14giu 11zu n3cu|22e5",
-			"Asia/Dhaka|+06 +07|-60 -70|010|1A5R0 1i00|16e6",
-			"Asia/Damascus|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101012|M00 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
-			"Asia/Dili|+09 +08|-90 -80|010|fpr0 Xld0|19e4",
-			"Asia/Dubai|+04|-40|0||39e5",
-			"Asia/Dushanbe|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
-			"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101012010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|",
-			"Asia/Gaza|IST IDT EET EEST|-20 -30 -20 -30|010101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|18e5",
-			"Asia/Hebron|IST IDT EET EEST|-20 -30 -20 -30|01010101010101010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|25e4",
-			"Asia/Ho_Chi_Minh|+08 +07|-80 -70|01|dfs0|90e5",
-			"Asia/Hong_Kong|HKT HKST|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
-			"Asia/Hovd|+06 +07 +08|-60 -70 -80|01212121212121212121212121212121212121212121212121|jsG0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
-			"Asia/Irkutsk|+08 +09 +07|-80 -90 -70|010101010101010101010201010101010101010101010101010101010101010|rn40 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-			"Europe/Istanbul|EET EEST +03 +04|-20 -30 -30 -40|01010101010123201010101010101010101010101010101010101010101010101010101010101012|8jz0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
-			"Asia/Jakarta|WIB|-70|0||31e6",
-			"Asia/Jayapura|WIT|-90|0||26e4",
-			"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4",
-			"Asia/Kabul|+0430|-4u|0||46e5",
-			"Asia/Kamchatka|+12 +13 +11|-c0 -d0 -b0|0101010101010101010102010101010101010101010101010101010101020|rn00 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4",
-			"Asia/Karachi|+05 PKT PKST|-50 -50 -60|01212121|2Xv0 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6",
-			"Asia/Urumqi|+06|-60|0||32e5",
-			"Asia/Kathmandu|+0530 +0545|-5u -5J|01|CVuu|12e5",
-			"Asia/Khandyga|+09 +10 +08 +11|-90 -a0 -80 -b0|01010101010101010101020101010101010101010101010131313131313131310|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2",
-			"Asia/Krasnoyarsk|+07 +08 +06|-70 -80 -60|010101010101010101010201010101010101010101010101010101010101010|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5",
-			"Asia/Kuala_Lumpur|+0730 +08|-7u -80|01|td40|71e5",
-			"Asia/Macau|CST CDT|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4",
-			"Asia/Magadan|+11 +12 +10|-b0 -c0 -a0|0101010101010101010102010101010101010101010101010101010101010120|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3",
-			"Asia/Makassar|WITA|-80|0||15e5",
-			"Asia/Manila|PST PDT|-80 -90|01010|hB40 1bb0 uNB0 rz0|24e6",
-			"Asia/Nicosia|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|32e4",
-			"Asia/Novokuznetsk|+07 +08 +06|-70 -80 -60|0101010101010101010102010101010101010101010101010101010101020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4",
-			"Asia/Novosibirsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101020202020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5",
-			"Asia/Omsk|+06 +07 +05|-60 -70 -50|010101010101010101010201010101010101010101010101010101010101010|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5",
-			"Asia/Oral|+05 +06 +04|-50 -60 -40|010101010101010202020202020202020202020202020|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4",
-			"Asia/Pontianak|WITA WIB|-80 -70|01|HNs0|23e4",
-			"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5",
-			"Asia/Qostanay|+05 +06 +04|-50 -60 -40|01010101010101010102010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|",
-			"Asia/Qyzylorda|+05 +06|-50 -60|010101010101010101010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4",
-			"Asia/Rangoon|+0630|-6u|0||48e5",
-			"Asia/Sakhalin|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010202020202020202020202020202020|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4",
-			"Asia/Samarkand|+05 +06|-50 -60|010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4",
-			"Asia/Seoul|KST KDT|-90 -a0|01010|Gf50 11A0 1o00 11A0|23e6",
-			"Asia/Srednekolymsk|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010101010101010101010101010101010|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2",
-			"Asia/Taipei|CST CDT|-80 -90|0101010|akg0 1db0 1cN0 1db0 97B0 AL0|74e5",
-			"Asia/Tashkent|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
-			"Asia/Tbilisi|+04 +05 +03|-40 -50 -30|01010101010101010101020202010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
-			"Asia/Tehran|+0330 +0430 +04 +05|-3u -4u -40 -50|0123201010101010101010101010101010101010101010101010101010101010101010|hyHu 1pc0 120u Rc0 Dc0 1iMu JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
-			"Asia/Thimphu|+0530 +06|-5u -60|01|HcGu|79e3",
-			"Asia/Tokyo|JST|-90|0||38e6",
-			"Asia/Tomsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101010101010101010101020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
-			"Asia/Ust-Nera|+09 +12 +11 +10|-90 -c0 -b0 -a0|0121212121212121212123212121212121212121212121212121212121212123|rn30 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2",
-			"Asia/Vladivostok|+10 +11 +09|-a0 -b0 -90|010101010101010101010201010101010101010101010101010101010101010|rn20 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-			"Asia/Yakutsk|+09 +10 +08|-90 -a0 -80|010101010101010101010201010101010101010101010101010101010101010|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4",
-			"Asia/Yekaterinburg|+05 +06 +04|-50 -60 -40|010101010101010101010201010101010101010101010101010101010101010|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5",
-			"Asia/Yerevan|+04 +05 +03|-40 -50 -30|01010101010101010101020202020101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5",
-			"Atlantic/Azores|-01 +00 WET WEST|10 0 0 -10|01010101010101010101010231010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 Ap0 An0 wo0 Eo0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4",
-			"Atlantic/Bermuda|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|avi0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3",
-			"Atlantic/Canary|WET WEST|0 -10|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXc0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4",
-			"Atlantic/Cape_Verde|-02 -01|20 10|01|elE0|50e4",
-			"Atlantic/Faroe|WET WEST|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|49e3",
-			"Atlantic/Madeira|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tOo0 1a00 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e4",
-			"Atlantic/South_Georgia|-02|20|0||30",
-			"Atlantic/Stanley|-04 -03 -02|40 30 20|01212101010101010101010101010101010101010101010101010101|wrg0 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2",
-			"Australia/Sydney|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|40e5",
-			"Australia/Adelaide|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|11e5",
-			"Australia/Brisbane|AEST AEDT|-a0 -b0|010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5",
-			"Australia/Broken_Hill|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|18e3",
-			"Australia/Hobart|AEDT AEST|-b0 -a0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|21e4",
-			"Australia/Darwin|ACST|-9u|0||12e4",
-			"Australia/Eucla|+0845 +0945|-8J -9J|0101010101010|bHRf Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368",
-			"Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|01212121213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu|347",
-			"Australia/Lindeman|AEST AEDT|-a0 -b0|0101010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10",
-			"Australia/Melbourne|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|39e5",
-			"Australia/Perth|AWST AWDT|-80 -90|0101010101010|bHS0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
-			"Europe/Brussels|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|21e5",
-			"Pacific/Easter|-06 -07 -05|60 70 50|010101010101010101010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2",
-			"Europe/Athens|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cOK0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5",
-			"Europe/Dublin|IST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
-			"Etc/GMT-1|+01|-10|0||",
-			"Pacific/Guadalcanal|+11|-b0|0||11e4",
-			"Pacific/Tarawa|+12|-c0|0||29e3",
-			"Etc/GMT-13|+13|-d0|0||",
-			"Etc/GMT-14|+14|-e0|0||",
-			"Etc/GMT-2|+02|-20|0||",
-			"Indian/Maldives|+05|-50|0||35e4",
-			"Pacific/Palau|+09|-90|0||21e3",
-			"Etc/GMT+1|-01|10|0||",
-			"Pacific/Tahiti|-10|a0|0||18e4",
-			"Pacific/Niue|-11|b0|0||12e2",
-			"Etc/GMT+12|-12|c0|0||",
-			"Etc/GMT+5|-05|50|0||",
-			"Etc/GMT+6|-06|60|0||",
-			"Etc/GMT+7|-07|70|0||",
-			"Etc/GMT+8|-08|80|0||",
-			"Pacific/Gambier|-09|90|0||125",
-			"Etc/UTC|UTC|0|0||",
-			"Europe/Andorra|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|B7d0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|79e3",
-			"Europe/Astrakhan|+04 +05 +03|-40 -50 -30|0101010101010101020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5",
-			"Europe/London|BST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6",
-			"Europe/Belgrade|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|wdd0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
-			"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muN0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|13e5",
-			"Europe/Bucharest|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|mRa0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|19e5",
-			"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5",
-			"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|38e4",
-			"Europe/Chisinau|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010101012323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4",
-			"Europe/Gibraltar|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|30e3",
-			"Europe/Helsinki|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm00 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
-			"Europe/Kaliningrad|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010102323232323232323232323232323232323232323232343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
-			"Europe/Kiev|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|34e5",
-			"Europe/Kirov|+04 +05 MSD MSK MSK|-40 -50 -40 -30 -40|01010101010101010232302323232323232323232323232323232323232343|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
-			"Europe/Lisbon|CET WET WEST CEST|-10 0 -10 -20|01212121212121212121212121212121203030302121212121212121212121212121212121212121212121212121212121212121212121|go00 1cM0 1cM0 1fB0 1cM0 1cM0 1cM0 1fA0 1a00 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5",
-			"Europe/Madrid|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|apy0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|62e5",
-			"Europe/Malta|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4",
-			"Europe/Minsk|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010101023232323232323232323232323232323232323234|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5",
-			"Europe/Paris|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fbc0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6",
-			"Europe/Moscow|MSK MSD EEST EET MSK|-30 -40 -30 -20 -40|0101010101010101010102301010101010101010101010101010101010101040|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6",
-			"Europe/Riga|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|64e4",
-			"Europe/Rome|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|39e5",
-			"Europe/Samara|+04 +05 +03|-40 -50 -30|01010101010101010202010101010101010101010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
-			"Europe/Saratov|+04 +05 +03|-40 -50 -30|0101010101010102020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
-			"Europe/Simferopol|MSK MSD EET EEST MSK|-30 -40 -20 -30 -40|0101010101010101010232323101010323232323232323232323232323232323240|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
-			"Europe/Sofia|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muJ0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5",
-			"Europe/Tallinn|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e4",
-			"Europe/Tirane|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|axz0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4",
-			"Europe/Ulyanovsk|+04 +05 +03 +02|-40 -50 -30 -20|010101010101010102023202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
-			"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|18e5",
-			"Europe/Vilnius|MSK MSD EEST EET CEST CET|-30 -40 -30 -20 -20 -10|01010101010101010232323232323232323454323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4",
-			"Europe/Volgograd|+04 +05 MSD MSK MSK|-40 -50 -40 -30 -40|0101010101010102323230232323232323232323232323232323232323234303|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5",
-			"Europe/Warsaw|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5",
-			"Pacific/Honolulu|HST|a0|0||37e4",
-			"Indian/Chagos|+05 +06|-50 -60|01|13ij0|30e2",
-			"Indian/Mauritius|+04 +05|-40 -50|01010|v5U0 14L0 12kr0 11z0|15e4",
-			"Pacific/Kwajalein|-12 +12|c0 -c0|01|Vxo0|14e3",
-			"Pacific/Chatham|+1245 +1345|-cJ -dJ|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|600",
-			"Pacific/Apia|-11 -10 +14 +13|b0 a0 -e0 -d0|010123232323232323232323|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
-			"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4",
-			"Pacific/Efate|+11 +12|-b0 -c0|01010101010101010101010|9EA0 Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3",
-			"Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1",
-			"Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483",
-			"Pacific/Fiji|+12 +13|-c0 -d0|01010101010101010101010101010|1ace0 LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4",
-			"Pacific/Galapagos|-05 -06|50 60|0101|CVF0 gNd0 rz0|25e3",
-			"Pacific/Guam|GST GDT ChST|-a0 -b0 -a0|010101010102|JQ0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4",
-			"Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2",
-			"Pacific/Kosrae|+12 +11|-c0 -b0|01|1aAA0|66e2",
-			"Pacific/Marquesas|-0930|9u|0||86e2",
-			"Pacific/Pago_Pago|SST|b0|0||37e2",
-			"Pacific/Nauru|+1130 +12|-bu -c0|01|maCu|10e3",
-			"Pacific/Norfolk|+1130 +1230 +11 +12|-bu -cu -b0 -c0|010232323232323232323232323|bHOu Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|25e4",
-			"Pacific/Noumea|+11 +12|-b0 -c0|0101010|jhp0 xX0 1PB0 yn0 HeP0 Ao0|98e3",
-			"Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56",
-			"Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
-			"Pacific/Tongatapu|+13 +14|-d0 -e0|010101010|1csd0 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"
-		],
-		"links": [
-			"Africa/Abidjan|Africa/Accra",
-			"Africa/Abidjan|Africa/Bamako",
-			"Africa/Abidjan|Africa/Banjul",
-			"Africa/Abidjan|Africa/Conakry",
-			"Africa/Abidjan|Africa/Dakar",
-			"Africa/Abidjan|Africa/Freetown",
-			"Africa/Abidjan|Africa/Lome",
-			"Africa/Abidjan|Africa/Nouakchott",
-			"Africa/Abidjan|Africa/Ouagadougou",
-			"Africa/Abidjan|Africa/Timbuktu",
-			"Africa/Abidjan|Atlantic/Reykjavik",
-			"Africa/Abidjan|Atlantic/St_Helena",
-			"Africa/Abidjan|Etc/GMT",
-			"Africa/Abidjan|Etc/GMT+0",
-			"Africa/Abidjan|Etc/GMT-0",
-			"Africa/Abidjan|Etc/GMT0",
-			"Africa/Abidjan|Etc/Greenwich",
-			"Africa/Abidjan|GMT",
-			"Africa/Abidjan|GMT+0",
-			"Africa/Abidjan|GMT-0",
-			"Africa/Abidjan|GMT0",
-			"Africa/Abidjan|Greenwich",
-			"Africa/Abidjan|Iceland",
-			"Africa/Cairo|Egypt",
-			"Africa/Johannesburg|Africa/Maseru",
-			"Africa/Johannesburg|Africa/Mbabane",
-			"Africa/Lagos|Africa/Bangui",
-			"Africa/Lagos|Africa/Brazzaville",
-			"Africa/Lagos|Africa/Douala",
-			"Africa/Lagos|Africa/Kinshasa",
-			"Africa/Lagos|Africa/Libreville",
-			"Africa/Lagos|Africa/Luanda",
-			"Africa/Lagos|Africa/Malabo",
-			"Africa/Lagos|Africa/Niamey",
-			"Africa/Lagos|Africa/Porto-Novo",
-			"Africa/Maputo|Africa/Blantyre",
-			"Africa/Maputo|Africa/Bujumbura",
-			"Africa/Maputo|Africa/Gaborone",
-			"Africa/Maputo|Africa/Harare",
-			"Africa/Maputo|Africa/Kigali",
-			"Africa/Maputo|Africa/Lubumbashi",
-			"Africa/Maputo|Africa/Lusaka",
-			"Africa/Nairobi|Africa/Addis_Ababa",
-			"Africa/Nairobi|Africa/Asmara",
-			"Africa/Nairobi|Africa/Asmera",
-			"Africa/Nairobi|Africa/Dar_es_Salaam",
-			"Africa/Nairobi|Africa/Djibouti",
-			"Africa/Nairobi|Africa/Kampala",
-			"Africa/Nairobi|Africa/Mogadishu",
-			"Africa/Nairobi|Indian/Antananarivo",
-			"Africa/Nairobi|Indian/Comoro",
-			"Africa/Nairobi|Indian/Mayotte",
-			"Africa/Tripoli|Libya",
-			"America/Adak|America/Atka",
-			"America/Adak|US/Aleutian",
-			"America/Anchorage|US/Alaska",
-			"America/Argentina/Buenos_Aires|America/Buenos_Aires",
-			"America/Argentina/Catamarca|America/Argentina/ComodRivadavia",
-			"America/Argentina/Catamarca|America/Catamarca",
-			"America/Argentina/Cordoba|America/Cordoba",
-			"America/Argentina/Cordoba|America/Rosario",
-			"America/Argentina/Jujuy|America/Jujuy",
-			"America/Argentina/Mendoza|America/Mendoza",
-			"America/Cayenne|Etc/GMT+3",
-			"America/Chicago|CST6CDT",
-			"America/Chicago|US/Central",
-			"America/Denver|America/Shiprock",
-			"America/Denver|MST7MDT",
-			"America/Denver|Navajo",
-			"America/Denver|US/Mountain",
-			"America/Detroit|US/Michigan",
-			"America/Edmonton|America/Yellowknife",
-			"America/Edmonton|Canada/Mountain",
-			"America/Fort_Wayne|America/Indiana/Indianapolis",
-			"America/Fort_Wayne|America/Indianapolis",
-			"America/Fort_Wayne|US/East-Indiana",
-			"America/Godthab|America/Nuuk",
-			"America/Halifax|Canada/Atlantic",
-			"America/Havana|Cuba",
-			"America/Indiana/Knox|America/Knox_IN",
-			"America/Indiana/Knox|US/Indiana-Starke",
-			"America/Iqaluit|America/Pangnirtung",
-			"America/Jamaica|Jamaica",
-			"America/Kentucky/Louisville|America/Louisville",
-			"America/La_Paz|Etc/GMT+4",
-			"America/Los_Angeles|PST8PDT",
-			"America/Los_Angeles|US/Pacific",
-			"America/Manaus|Brazil/West",
-			"America/Mazatlan|Mexico/BajaSur",
-			"America/Mexico_City|Mexico/General",
-			"America/New_York|EST5EDT",
-			"America/New_York|US/Eastern",
-			"America/Noronha|Brazil/DeNoronha",
-			"America/Panama|America/Atikokan",
-			"America/Panama|America/Cayman",
-			"America/Panama|America/Coral_Harbour",
-			"America/Panama|EST",
-			"America/Phoenix|America/Creston",
-			"America/Phoenix|MST",
-			"America/Phoenix|US/Arizona",
-			"America/Puerto_Rico|America/Anguilla",
-			"America/Puerto_Rico|America/Antigua",
-			"America/Puerto_Rico|America/Aruba",
-			"America/Puerto_Rico|America/Blanc-Sablon",
-			"America/Puerto_Rico|America/Curacao",
-			"America/Puerto_Rico|America/Dominica",
-			"America/Puerto_Rico|America/Grenada",
-			"America/Puerto_Rico|America/Guadeloupe",
-			"America/Puerto_Rico|America/Kralendijk",
-			"America/Puerto_Rico|America/Lower_Princes",
-			"America/Puerto_Rico|America/Marigot",
-			"America/Puerto_Rico|America/Montserrat",
-			"America/Puerto_Rico|America/Port_of_Spain",
-			"America/Puerto_Rico|America/St_Barthelemy",
-			"America/Puerto_Rico|America/St_Kitts",
-			"America/Puerto_Rico|America/St_Lucia",
-			"America/Puerto_Rico|America/St_Thomas",
-			"America/Puerto_Rico|America/St_Vincent",
-			"America/Puerto_Rico|America/Tortola",
-			"America/Puerto_Rico|America/Virgin",
-			"America/Regina|Canada/Saskatchewan",
-			"America/Rio_Branco|America/Porto_Acre",
-			"America/Rio_Branco|Brazil/Acre",
-			"America/Santiago|Chile/Continental",
-			"America/Sao_Paulo|Brazil/East",
-			"America/St_Johns|Canada/Newfoundland",
-			"America/Tijuana|America/Ensenada",
-			"America/Tijuana|America/Santa_Isabel",
-			"America/Tijuana|Mexico/BajaNorte",
-			"America/Toronto|America/Montreal",
-			"America/Toronto|America/Nassau",
-			"America/Toronto|America/Nipigon",
-			"America/Toronto|America/Thunder_Bay",
-			"America/Toronto|Canada/Eastern",
-			"America/Vancouver|Canada/Pacific",
-			"America/Whitehorse|Canada/Yukon",
-			"America/Winnipeg|America/Rainy_River",
-			"America/Winnipeg|Canada/Central",
-			"Asia/Ashgabat|Asia/Ashkhabad",
-			"Asia/Bangkok|Asia/Phnom_Penh",
-			"Asia/Bangkok|Asia/Vientiane",
-			"Asia/Bangkok|Etc/GMT-7",
-			"Asia/Bangkok|Indian/Christmas",
-			"Asia/Brunei|Asia/Kuching",
-			"Asia/Brunei|Etc/GMT-8",
-			"Asia/Dhaka|Asia/Dacca",
-			"Asia/Dubai|Asia/Muscat",
-			"Asia/Dubai|Etc/GMT-4",
-			"Asia/Dubai|Indian/Mahe",
-			"Asia/Dubai|Indian/Reunion",
-			"Asia/Ho_Chi_Minh|Asia/Saigon",
-			"Asia/Hong_Kong|Hongkong",
-			"Asia/Jerusalem|Asia/Tel_Aviv",
-			"Asia/Jerusalem|Israel",
-			"Asia/Kathmandu|Asia/Katmandu",
-			"Asia/Kolkata|Asia/Calcutta",
-			"Asia/Kuala_Lumpur|Asia/Singapore",
-			"Asia/Kuala_Lumpur|Singapore",
-			"Asia/Macau|Asia/Macao",
-			"Asia/Makassar|Asia/Ujung_Pandang",
-			"Asia/Nicosia|Europe/Nicosia",
-			"Asia/Qatar|Asia/Bahrain",
-			"Asia/Rangoon|Asia/Yangon",
-			"Asia/Rangoon|Indian/Cocos",
-			"Asia/Riyadh|Antarctica/Syowa",
-			"Asia/Riyadh|Asia/Aden",
-			"Asia/Riyadh|Asia/Kuwait",
-			"Asia/Riyadh|Etc/GMT-3",
-			"Asia/Seoul|ROK",
-			"Asia/Shanghai|Asia/Chongqing",
-			"Asia/Shanghai|Asia/Chungking",
-			"Asia/Shanghai|Asia/Harbin",
-			"Asia/Shanghai|PRC",
-			"Asia/Taipei|ROC",
-			"Asia/Tehran|Iran",
-			"Asia/Thimphu|Asia/Thimbu",
-			"Asia/Tokyo|Japan",
-			"Asia/Ulaanbaatar|Asia/Choibalsan",
-			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
-			"Asia/Urumqi|Asia/Kashgar",
-			"Asia/Urumqi|Etc/GMT-6",
-			"Atlantic/Faroe|Atlantic/Faeroe",
-			"Atlantic/South_Georgia|Etc/GMT+2",
-			"Australia/Adelaide|Australia/South",
-			"Australia/Brisbane|Australia/Queensland",
-			"Australia/Broken_Hill|Australia/Yancowinna",
-			"Australia/Darwin|Australia/North",
-			"Australia/Hobart|Australia/Currie",
-			"Australia/Hobart|Australia/Tasmania",
-			"Australia/Lord_Howe|Australia/LHI",
-			"Australia/Melbourne|Australia/Victoria",
-			"Australia/Perth|Australia/West",
-			"Australia/Sydney|Australia/ACT",
-			"Australia/Sydney|Australia/Canberra",
-			"Australia/Sydney|Australia/NSW",
-			"Etc/UTC|Etc/UCT",
-			"Etc/UTC|Etc/Universal",
-			"Etc/UTC|Etc/Zulu",
-			"Etc/UTC|UCT",
-			"Etc/UTC|UTC",
-			"Etc/UTC|Universal",
-			"Etc/UTC|Zulu",
-			"Europe/Athens|EET",
-			"Europe/Belgrade|Europe/Ljubljana",
-			"Europe/Belgrade|Europe/Podgorica",
-			"Europe/Belgrade|Europe/Sarajevo",
-			"Europe/Belgrade|Europe/Skopje",
-			"Europe/Belgrade|Europe/Zagreb",
-			"Europe/Berlin|Arctic/Longyearbyen",
-			"Europe/Berlin|Atlantic/Jan_Mayen",
-			"Europe/Berlin|Europe/Copenhagen",
-			"Europe/Berlin|Europe/Oslo",
-			"Europe/Berlin|Europe/Stockholm",
-			"Europe/Brussels|CET",
-			"Europe/Brussels|Europe/Amsterdam",
-			"Europe/Brussels|Europe/Luxembourg",
-			"Europe/Brussels|MET",
-			"Europe/Chisinau|Europe/Tiraspol",
-			"Europe/Dublin|Eire",
-			"Europe/Helsinki|Europe/Mariehamn",
-			"Europe/Istanbul|Asia/Istanbul",
-			"Europe/Istanbul|Turkey",
-			"Europe/Kiev|Europe/Kyiv",
-			"Europe/Kiev|Europe/Uzhgorod",
-			"Europe/Kiev|Europe/Zaporozhye",
-			"Europe/Lisbon|Portugal",
-			"Europe/Lisbon|WET",
-			"Europe/London|Europe/Belfast",
-			"Europe/London|Europe/Guernsey",
-			"Europe/London|Europe/Isle_of_Man",
-			"Europe/London|Europe/Jersey",
-			"Europe/London|GB",
-			"Europe/London|GB-Eire",
-			"Europe/Moscow|W-SU",
-			"Europe/Paris|Europe/Monaco",
-			"Europe/Prague|Europe/Bratislava",
-			"Europe/Rome|Europe/San_Marino",
-			"Europe/Rome|Europe/Vatican",
-			"Europe/Warsaw|Poland",
-			"Europe/Zurich|Europe/Busingen",
-			"Europe/Zurich|Europe/Vaduz",
-			"Indian/Maldives|Etc/GMT-5",
-			"Indian/Maldives|Indian/Kerguelen",
-			"Pacific/Auckland|Antarctica/McMurdo",
-			"Pacific/Auckland|Antarctica/South_Pole",
-			"Pacific/Auckland|NZ",
-			"Pacific/Chatham|NZ-CHAT",
-			"Pacific/Easter|Chile/EasterIsland",
-			"Pacific/Enderbury|Pacific/Kanton",
-			"Pacific/Gambier|Etc/GMT+9",
-			"Pacific/Guadalcanal|Etc/GMT-11",
-			"Pacific/Guadalcanal|Pacific/Pohnpei",
-			"Pacific/Guadalcanal|Pacific/Ponape",
-			"Pacific/Guam|Pacific/Saipan",
-			"Pacific/Honolulu|HST",
-			"Pacific/Honolulu|Pacific/Johnston",
-			"Pacific/Honolulu|US/Hawaii",
-			"Pacific/Kwajalein|Kwajalein",
-			"Pacific/Niue|Etc/GMT+11",
-			"Pacific/Pago_Pago|Pacific/Midway",
-			"Pacific/Pago_Pago|Pacific/Samoa",
-			"Pacific/Pago_Pago|US/Samoa",
-			"Pacific/Palau|Etc/GMT-9",
-			"Pacific/Port_Moresby|Antarctica/DumontDUrville",
-			"Pacific/Port_Moresby|Etc/GMT-10",
-			"Pacific/Port_Moresby|Pacific/Chuuk",
-			"Pacific/Port_Moresby|Pacific/Truk",
-			"Pacific/Port_Moresby|Pacific/Yap",
-			"Pacific/Tahiti|Etc/GMT+10",
-			"Pacific/Tarawa|Etc/GMT-12",
-			"Pacific/Tarawa|Pacific/Funafuti",
-			"Pacific/Tarawa|Pacific/Majuro",
-			"Pacific/Tarawa|Pacific/Wake",
-			"Pacific/Tarawa|Pacific/Wallis"
-		],
-		"countries": [
-			"AD|Europe/Andorra",
-			"AE|Asia/Dubai",
-			"AF|Asia/Kabul",
-			"AG|America/Puerto_Rico America/Antigua",
-			"AI|America/Puerto_Rico America/Anguilla",
-			"AL|Europe/Tirane",
-			"AM|Asia/Yerevan",
-			"AO|Africa/Lagos Africa/Luanda",
-			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa",
-			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
-			"AS|Pacific/Pago_Pago",
-			"AT|Europe/Vienna",
-			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo",
-			"AW|America/Puerto_Rico America/Aruba",
-			"AX|Europe/Helsinki Europe/Mariehamn",
-			"AZ|Asia/Baku",
-			"BA|Europe/Belgrade Europe/Sarajevo",
-			"BB|America/Barbados",
-			"BD|Asia/Dhaka",
-			"BE|Europe/Brussels",
-			"BF|Africa/Abidjan Africa/Ouagadougou",
-			"BG|Europe/Sofia",
-			"BH|Asia/Qatar Asia/Bahrain",
-			"BI|Africa/Maputo Africa/Bujumbura",
-			"BJ|Africa/Lagos Africa/Porto-Novo",
-			"BL|America/Puerto_Rico America/St_Barthelemy",
-			"BM|Atlantic/Bermuda",
-			"BN|Asia/Kuching Asia/Brunei",
-			"BO|America/La_Paz",
-			"BQ|America/Puerto_Rico America/Kralendijk",
-			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
-			"BS|America/Toronto America/Nassau",
-			"BT|Asia/Thimphu",
-			"BW|Africa/Maputo Africa/Gaborone",
-			"BY|Europe/Minsk",
-			"BZ|America/Belize",
-			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
-			"CC|Asia/Yangon Indian/Cocos",
-			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
-			"CF|Africa/Lagos Africa/Bangui",
-			"CG|Africa/Lagos Africa/Brazzaville",
-			"CH|Europe/Zurich",
-			"CI|Africa/Abidjan",
-			"CK|Pacific/Rarotonga",
-			"CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter",
-			"CM|Africa/Lagos Africa/Douala",
-			"CN|Asia/Shanghai Asia/Urumqi",
-			"CO|America/Bogota",
-			"CR|America/Costa_Rica",
-			"CU|America/Havana",
-			"CV|Atlantic/Cape_Verde",
-			"CW|America/Puerto_Rico America/Curacao",
-			"CX|Asia/Bangkok Indian/Christmas",
-			"CY|Asia/Nicosia Asia/Famagusta",
-			"CZ|Europe/Prague",
-			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
-			"DJ|Africa/Nairobi Africa/Djibouti",
-			"DK|Europe/Berlin Europe/Copenhagen",
-			"DM|America/Puerto_Rico America/Dominica",
-			"DO|America/Santo_Domingo",
-			"DZ|Africa/Algiers",
-			"EC|America/Guayaquil Pacific/Galapagos",
-			"EE|Europe/Tallinn",
-			"EG|Africa/Cairo",
-			"EH|Africa/El_Aaiun",
-			"ER|Africa/Nairobi Africa/Asmara",
-			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
-			"ET|Africa/Nairobi Africa/Addis_Ababa",
-			"FI|Europe/Helsinki",
-			"FJ|Pacific/Fiji",
-			"FK|Atlantic/Stanley",
-			"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
-			"FO|Atlantic/Faroe",
-			"FR|Europe/Paris",
-			"GA|Africa/Lagos Africa/Libreville",
-			"GB|Europe/London",
-			"GD|America/Puerto_Rico America/Grenada",
-			"GE|Asia/Tbilisi",
-			"GF|America/Cayenne",
-			"GG|Europe/London Europe/Guernsey",
-			"GH|Africa/Abidjan Africa/Accra",
-			"GI|Europe/Gibraltar",
-			"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
-			"GM|Africa/Abidjan Africa/Banjul",
-			"GN|Africa/Abidjan Africa/Conakry",
-			"GP|America/Puerto_Rico America/Guadeloupe",
-			"GQ|Africa/Lagos Africa/Malabo",
-			"GR|Europe/Athens",
-			"GS|Atlantic/South_Georgia",
-			"GT|America/Guatemala",
-			"GU|Pacific/Guam",
-			"GW|Africa/Bissau",
-			"GY|America/Guyana",
-			"HK|Asia/Hong_Kong",
-			"HN|America/Tegucigalpa",
-			"HR|Europe/Belgrade Europe/Zagreb",
-			"HT|America/Port-au-Prince",
-			"HU|Europe/Budapest",
-			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
-			"IE|Europe/Dublin",
-			"IL|Asia/Jerusalem",
-			"IM|Europe/London Europe/Isle_of_Man",
-			"IN|Asia/Kolkata",
-			"IO|Indian/Chagos",
-			"IQ|Asia/Baghdad",
-			"IR|Asia/Tehran",
-			"IS|Africa/Abidjan Atlantic/Reykjavik",
-			"IT|Europe/Rome",
-			"JE|Europe/London Europe/Jersey",
-			"JM|America/Jamaica",
-			"JO|Asia/Amman",
-			"JP|Asia/Tokyo",
-			"KE|Africa/Nairobi",
-			"KG|Asia/Bishkek",
-			"KH|Asia/Bangkok Asia/Phnom_Penh",
-			"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
-			"KM|Africa/Nairobi Indian/Comoro",
-			"KN|America/Puerto_Rico America/St_Kitts",
-			"KP|Asia/Pyongyang",
-			"KR|Asia/Seoul",
-			"KW|Asia/Riyadh Asia/Kuwait",
-			"KY|America/Panama America/Cayman",
-			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
-			"LA|Asia/Bangkok Asia/Vientiane",
-			"LB|Asia/Beirut",
-			"LC|America/Puerto_Rico America/St_Lucia",
-			"LI|Europe/Zurich Europe/Vaduz",
-			"LK|Asia/Colombo",
-			"LR|Africa/Monrovia",
-			"LS|Africa/Johannesburg Africa/Maseru",
-			"LT|Europe/Vilnius",
-			"LU|Europe/Brussels Europe/Luxembourg",
-			"LV|Europe/Riga",
-			"LY|Africa/Tripoli",
-			"MA|Africa/Casablanca",
-			"MC|Europe/Paris Europe/Monaco",
-			"MD|Europe/Chisinau",
-			"ME|Europe/Belgrade Europe/Podgorica",
-			"MF|America/Puerto_Rico America/Marigot",
-			"MG|Africa/Nairobi Indian/Antananarivo",
-			"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
-			"MK|Europe/Belgrade Europe/Skopje",
-			"ML|Africa/Abidjan Africa/Bamako",
-			"MM|Asia/Yangon",
-			"MN|Asia/Ulaanbaatar Asia/Hovd",
-			"MO|Asia/Macau",
-			"MP|Pacific/Guam Pacific/Saipan",
-			"MQ|America/Martinique",
-			"MR|Africa/Abidjan Africa/Nouakchott",
-			"MS|America/Puerto_Rico America/Montserrat",
-			"MT|Europe/Malta",
-			"MU|Indian/Mauritius",
-			"MV|Indian/Maldives",
-			"MW|Africa/Maputo Africa/Blantyre",
-			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana",
-			"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
-			"MZ|Africa/Maputo",
-			"NA|Africa/Windhoek",
-			"NC|Pacific/Noumea",
-			"NE|Africa/Lagos Africa/Niamey",
-			"NF|Pacific/Norfolk",
-			"NG|Africa/Lagos",
-			"NI|America/Managua",
-			"NL|Europe/Brussels Europe/Amsterdam",
-			"NO|Europe/Berlin Europe/Oslo",
-			"NP|Asia/Kathmandu",
-			"NR|Pacific/Nauru",
-			"NU|Pacific/Niue",
-			"NZ|Pacific/Auckland Pacific/Chatham",
-			"OM|Asia/Dubai Asia/Muscat",
-			"PA|America/Panama",
-			"PE|America/Lima",
-			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
-			"PG|Pacific/Port_Moresby Pacific/Bougainville",
-			"PH|Asia/Manila",
-			"PK|Asia/Karachi",
-			"PL|Europe/Warsaw",
-			"PM|America/Miquelon",
-			"PN|Pacific/Pitcairn",
-			"PR|America/Puerto_Rico",
-			"PS|Asia/Gaza Asia/Hebron",
-			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
-			"PW|Pacific/Palau",
-			"PY|America/Asuncion",
-			"QA|Asia/Qatar",
-			"RE|Asia/Dubai Indian/Reunion",
-			"RO|Europe/Bucharest",
-			"RS|Europe/Belgrade",
-			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
-			"RW|Africa/Maputo Africa/Kigali",
-			"SA|Asia/Riyadh",
-			"SB|Pacific/Guadalcanal",
-			"SC|Asia/Dubai Indian/Mahe",
-			"SD|Africa/Khartoum",
-			"SE|Europe/Berlin Europe/Stockholm",
-			"SG|Asia/Singapore",
-			"SH|Africa/Abidjan Atlantic/St_Helena",
-			"SI|Europe/Belgrade Europe/Ljubljana",
-			"SJ|Europe/Berlin Arctic/Longyearbyen",
-			"SK|Europe/Prague Europe/Bratislava",
-			"SL|Africa/Abidjan Africa/Freetown",
-			"SM|Europe/Rome Europe/San_Marino",
-			"SN|Africa/Abidjan Africa/Dakar",
-			"SO|Africa/Nairobi Africa/Mogadishu",
-			"SR|America/Paramaribo",
-			"SS|Africa/Juba",
-			"ST|Africa/Sao_Tome",
-			"SV|America/El_Salvador",
-			"SX|America/Puerto_Rico America/Lower_Princes",
-			"SY|Asia/Damascus",
-			"SZ|Africa/Johannesburg Africa/Mbabane",
-			"TC|America/Grand_Turk",
-			"TD|Africa/Ndjamena",
-			"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
-			"TG|Africa/Abidjan Africa/Lome",
-			"TH|Asia/Bangkok",
-			"TJ|Asia/Dushanbe",
-			"TK|Pacific/Fakaofo",
-			"TL|Asia/Dili",
-			"TM|Asia/Ashgabat",
-			"TN|Africa/Tunis",
-			"TO|Pacific/Tongatapu",
-			"TR|Europe/Istanbul",
-			"TT|America/Puerto_Rico America/Port_of_Spain",
-			"TV|Pacific/Tarawa Pacific/Funafuti",
-			"TW|Asia/Taipei",
-			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
-			"UA|Europe/Simferopol Europe/Kyiv",
-			"UG|Africa/Nairobi Africa/Kampala",
-			"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake",
-			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
-			"UY|America/Montevideo",
-			"UZ|Asia/Samarkand Asia/Tashkent",
-			"VA|Europe/Rome Europe/Vatican",
-			"VC|America/Puerto_Rico America/St_Vincent",
-			"VE|America/Caracas",
-			"VG|America/Puerto_Rico America/Tortola",
-			"VI|America/Puerto_Rico America/St_Thomas",
-			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
-			"VU|Pacific/Efate",
-			"WF|Pacific/Tarawa Pacific/Wallis",
-			"WS|Pacific/Apia",
-			"YE|Asia/Riyadh Asia/Aden",
-			"YT|Africa/Nairobi Indian/Mayotte",
-			"ZA|Africa/Johannesburg",
-			"ZM|Africa/Maputo Africa/Lusaka",
-			"ZW|Africa/Maputo Africa/Harare"
-		]
-	});
-
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.min.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-1970-2030.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(c,M){"use strict";"object"==typeof module&&module.exports?module.exports=M(require("moment")):"function"==typeof define&&define.amd?define(["moment"],M):M(c.moment)}(this,function(o){"use strict";void 0===o.version&&o.default&&(o=o.default);var M,z={},i={},b={},e={},r={},c=(o&&"string"==typeof o.version||S("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"),o.version.split(".")),a=+c[0],A=+c[1];function n(c){return 96<c?c-87:64<c?c-29:c-48}function p(c){var M=0,a=c.split("."),A=a[0],o=a[1]||"",i=1,b=0,a=1;for(45===c.charCodeAt(0)&&(a=-(M=1));M<A.length;M++)b=60*b+n(A.charCodeAt(M));for(M=0;M<o.length;M++)i/=60,b+=n(o.charCodeAt(M))*i;return b*a}function q(c){for(var M=0;M<c.length;M++)c[M]=p(c[M])}function O(c,M){for(var a=[],A=0;A<M.length;A++)a[A]=c[M[A]];return a}function d(c){for(var c=c.split("|"),M=c[2].split(" "),a=c[3].split(""),A=c[4].split(" "),o=(q(M),q(a),q(A),A),i=a.length,b=0;b<i;b++)o[b]=Math.round((o[b-1]||0)+6e4*o[b]);return o[i-1]=1/0,{name:c[0],abbrs:O(c[1].split(" "),a),offsets:O(M,a),untils:A,population:0|c[5]}}function f(c){c&&this._set(d(c))}function t(c,M){this.name=c,this.zones=M}function N(c){var M=c.toTimeString(),a=M.match(/\([a-z ]+\)/i);"GMT"===(a=a&&a[0]?(a=a[0].match(/[A-Z]/g))?a.join(""):void 0:(a=M.match(/[A-Z]{3,5}/g))?a[0]:void 0)&&(a=void 0),this.at=+c,this.abbr=a,this.offset=c.getTimezoneOffset()}function u(c){this.zone=c,this.offsetScore=0,this.abbrScore=0}function L(){for(var c,M,a,A=(new Date).getFullYear()-2,o=new N(new Date(A,0,1)),i=o.offset,b=[o],n=1;n<48;n++)(a=new Date(A,n,1).getTimezoneOffset())!==i&&(c=function(c,M){for(var a;a=6e4*((M.at-c.at)/12e4|0);)(a=new N(new Date(c.at+a))).offset===c.offset?c=a:M=a;return c}(o,M=new N(new Date(A,n,1))),b.push(c),b.push(new N(new Date(c.at+6e4))),o=M,i=a);for(n=0;n<4;n++)b.push(new N(new Date(A+n,0,1))),b.push(new N(new Date(A+n,6,1)));return b}function l(c,M){return c.offsetScore!==M.offsetScore?c.offsetScore-M.offsetScore:c.abbrScore!==M.abbrScore?c.abbrScore-M.abbrScore:c.zone.population!==M.zone.population?M.zone.population-c.zone.population:M.zone.name.localeCompare(c.zone.name)}function W(){try{var c=Intl.DateTimeFormat().resolvedOptions().timeZone;if(c&&3<c.length){var M=e[B(c)];if(M)return M;S("Moment Timezone found "+c+" from the Intl api, but did not have that data loaded.")}}catch(c){}for(var a,A,o=L(),i=o.length,b=function(c){for(var M,a,A,o=c.length,i={},b=[],n={},p=0;p<o;p++)if(a=c[p].offset,!n.hasOwnProperty(a)){for(M in A=r[a]||{})A.hasOwnProperty(M)&&(i[M]=!0);n[a]=!0}for(p in i)i.hasOwnProperty(p)&&b.push(e[p]);return b}(o),n=[],p=0;p<b.length;p++){for(a=new u(X(b[p])),A=0;A<i;A++)a.scoreOffsetAt(o[A]);n.push(a)}return n.sort(l),0<n.length?n[0].zone.name:void 0}function B(c){return(c||"").toLowerCase().replace(/\//g,"_")}function s(c){var M,a,A,o;for("string"==typeof c&&(c=[c]),M=0;M<c.length;M++){o=B(a=(A=c[M].split("|"))[0]),z[o]=c[M],e[o]=a,b=i=p=n=void 0;var i,b,n=o,p=A[2].split(" ");for(q(p),i=0;i<p.length;i++)b=p[i],r[b]=r[b]||{},r[b][n]=!0}}function X(c,M){c=B(c);var a=z[c];return a instanceof f?a:"string"==typeof a?(a=new f(a),z[c]=a):i[c]&&M!==X&&(M=X(i[c],X))?((a=z[c]=new f)._set(M),a.name=e[c],a):null}function m(c){var M,a,A,o;for("string"==typeof c&&(c=[c]),M=0;M<c.length;M++)A=B((a=c[M].split("|"))[0]),o=B(a[1]),i[A]=o,e[A]=a[0],i[o]=A,e[o]=a[1]}function T(c){s(c.zones),m(c.links);var M,a,A,o=c.countries;if(o&&o.length)for(M=0;M<o.length;M++)a=(A=o[M].split("|"))[0].toUpperCase(),A=A[1].split(" "),b[a]=new t(a,A);C.dataVersion=c.version}function E(c){return E.didShowError||(E.didShowError=!0,S("moment.tz.zoneExists('"+c+"') has been deprecated in favor of !moment.tz.zone('"+c+"')")),!!X(c)}function R(c){var M="X"===c._f||"x"===c._f;return!(!c._a||void 0!==c._tzm||M)}function S(c){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(c)}function C(c){var M=Array.prototype.slice.call(arguments,0,-1),a=arguments[arguments.length-1],M=o.utc.apply(null,M);return!o.isMoment(c)&&R(M)&&(c=X(a))&&M.add(c.parse(M),"minutes"),M.tz(a),M}(a<2||2==a&&A<6)&&S("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+o.version+". See momentjs.com"),f.prototype={_set:function(c){this.name=c.name,this.abbrs=c.abbrs,this.untils=c.untils,this.offsets=c.offsets,this.population=c.population},_index:function(c){c=function(c,M){var a,A=M.length;if(c<M[0])return 0;if(1<A&&M[A-1]===1/0&&c>=M[A-2])return A-1;if(c>=M[A-1])return-1;for(var o=0,i=A-1;1<i-o;)M[a=Math.floor((o+i)/2)]<=c?o=a:i=a;return i}(+c,this.untils);if(0<=c)return c},countries:function(){var M=this.name;return Object.keys(b).filter(function(c){return-1!==b[c].zones.indexOf(M)})},parse:function(c){for(var M,a,A,o=+c,i=this.offsets,b=this.untils,n=b.length-1,p=0;p<n;p++)if(M=i[p],a=i[p+1],A=i[p&&p-1],M<a&&C.moveAmbiguousForward?M=a:A<M&&C.moveInvalidForward&&(M=A),o<b[p]-6e4*M)return i[p];return i[n]},abbr:function(c){return this.abbrs[this._index(c)]},offset:function(c){return S("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(c)]},utcOffset:function(c){return this.offsets[this._index(c)]}},u.prototype.scoreOffsetAt=function(c){this.offsetScore+=Math.abs(this.zone.utcOffset(c.at)-c.offset),this.zone.abbr(c.at).replace(/[^A-Z]/g,"")!==c.abbr&&this.abbrScore++},C.version="0.5.48",C.dataVersion="",C._zones=z,C._links=i,C._names=e,C._countries=b,C.add=s,C.link=m,C.load=T,C.zone=X,C.zoneExists=E,C.guess=function(c){return M=M&&!c?M:W()},C.names=function(){var c,M=[];for(c in e)e.hasOwnProperty(c)&&(z[c]||z[i[c]])&&e[c]&&M.push(e[c]);return M.sort()},C.Zone=f,C.unpack=d,C.unpackBase60=p,C.needsOffset=R,C.moveInvalidForward=!0,C.moveAmbiguousForward=!1,C.countries=function(){return Object.keys(b)},C.zonesForCountry=function(c,M){var a;return a=(a=c).toUpperCase(),(c=b[a]||null)?(a=c.zones.sort(),M?a.map(function(c){return{name:c,offset:X(c).utcOffset(new Date)}}):a):null};var h,c=o.fn;function g(c){return function(){return this._z?this._z.abbr(this):c.call(this)}}function P(c){return function(){return this._z=null,c.apply(this,arguments)}}o.tz=C,o.defaultZone=null,o.updateOffset=function(c,M){var a,A=o.defaultZone;void 0===c._z&&(A&&R(c)&&!c._isUTC&&c.isValid()&&(c._d=o.utc(c._a)._d,c.utc().add(A.parse(c),"minutes")),c._z=A),c._z&&(A=c._z.utcOffset(c),Math.abs(A)<16&&(A/=60),void 0!==c.utcOffset?(a=c._z,c.utcOffset(-A,M),c._z=a):c.zone(A,M))},c.tz=function(c,M){if(c){if("string"!=typeof c)throw new Error("Time zone name must be a string, got "+c+" ["+typeof c+"]");return this._z=X(c),this._z?o.updateOffset(this,M):S("Moment Timezone has no data for "+c+". See http://momentjs.com/timezone/docs/#/data-loading/."),this}if(this._z)return this._z.name},c.zoneName=g(c.zoneName),c.zoneAbbr=g(c.zoneAbbr),c.utc=P(c.utc),c.local=P(c.local),c.utcOffset=(h=c.utcOffset,function(){return 0<arguments.length&&(this._z=null),h.apply(this,arguments)}),o.tz.setDefault=function(c){return(a<2||2==a&&A<9)&&S("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+o.version+"."),o.defaultZone=c?X(c):null,o};c=o.momentProperties;return"[object Array]"===Object.prototype.toString.call(c)?(c.push("_z"),c.push("_a")):c&&(c._z=null),T({version:"2025b",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Nairobi|EAT|-30|0||47e5","Africa/Algiers|WET WEST CET CEST|0 -10 -10 -20|01012320102|3bX0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Bissau|-01 GMT|10 0|01|cap0|39e4","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|LX0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0|15e6","Africa/Casablanca|+00 +01|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|0101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|aS00 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|85e3","Africa/El_Aaiun|-01 +00 +01|10 0 -10|01212121212121212121212121212121212121212121212121212121212121212121|fi10 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600|20e4","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Juba|CAT CAST EAT|-20 -30 -30|01010101010101010101010101010101020|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|","Africa/Khartoum|CAT CAST EAT|-20 -30 -30|01010101010101010101010101010101020|LW0 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT GMT|I.u 0|01|4SoI.u|11e5","Africa/Ndjamena|WAT WAST|-10 -20|010|nNb0 Wn0|13e5","Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|","Africa/Tripoli|EET CET CEST|-20 -10 -20|0121212121212121210120120|tda0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|CET CEST|-10 -20|0101010101010101010|hOn0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|SAST CAT WAT|-20 -20 -10|01212121212121212121212121212121212121212121212121|Ndy0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|BST BDT AHST HST HDT|b0 a0 a0 a0 90|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AHST AHDT YST AKST AKDT|a0 90 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kc0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Puerto_Rico|AST|40|0||24e5","America/Araguaina|-03 -02|30 20|01010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|-03 -02|30 20|01010101010101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Catamarca|-03 -02 -04|30 20 40|01010101210102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Cordoba|-03 -02 -04|30 20 40|01010101210101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Jujuy|-03 -02 -04|30 20 40|010101202101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|","America/Argentina/La_Rioja|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Mendoza|-03 -02 -04|30 20 40|01010120202102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|","America/Argentina/Rio_Gallegos|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Salta|-03 -02 -04|30 20 40|010101012101010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|","America/Argentina/San_Juan|-03 -02 -04|30 20 40|010101012010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|","America/Argentina/San_Luis|-03 -02 -04|30 20 40|010101202020102020|9Rf0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|","America/Argentina/Tucuman|-03 -02 -04|30 20 40|0101010121010201010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|","America/Argentina/Ushuaia|-03 -02 -04|30 20 40|01010101010102010|9Rf0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|","America/Asuncion|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|6FE0 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5","America/Panama|EST|50|0||15e5","America/Bahia_Banderas|MST MDT CDT CST|70 60 50 60|0101010101010101010101010101023232323232323232323232323|13Vl0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3","America/Bahia|-03 -02|30 20|010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|AST ADT|40 30|010101010|i7G0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|-03 -02|30 20|0101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|CST CDT|60 50|01010|9xG0 qn0 lxB0 mn0|57e3","America/Boa_Vista|-04 -03|40 30|01010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|-05 -04|50 40|010|Snh0 1PX0|90e5","America/Boise|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|MST MDT CST CDT EST|70 60 60 50 50|010101010101010101010101010101010101010101010101010101012342101010101010101010101010101010101010101010101010101010101010|5E90 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|-04 -03|40 30|010101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|CST EST CDT EDT|60 50 50 40|0102021320202020202020202020202020202020201|taU0 2tx0 wgP0 1lb0 14p0 1lb0 14o0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|-04 -0430|40 4u|010|1wmv0 kqo0|29e5","America/Cayenne|-03|30|0||58e3","America/Chicago|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|CST CDT MDT MST|60 50 60 70|0101023232323232323232323232323232323232323232323232320|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4","America/Ciudad_Juarez|CST CDT MDT MST|60 50 60 70|010102323232323232323232323232323232323232323232323232032323232323232323|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Costa_Rica|CST CDT|60 50|010101010|mgS0 Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Coyhaique|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|","America/Phoenix|MST|70|0||42e5","America/Cuiaba|-04 -03|40 30|0101010101010101010101010101010101010101010101010101010101010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4","America/Danmarkshavn|-03 -02 GMT|30 20 0|0101010101010101010101010101010102|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT MST|80 70 70|0101012|Ka0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST PST PDT MST|90 80 70 70|012121212121212121212121212121212121212121212121212121212121212121212121212121212123|9ix0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2","America/Denver|MST MDT|70 60|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|85H0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|MST MDT|70 60|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E90 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|-05 -04|50 40|01010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|CST CDT|60 50|01010|Gcu0 WL0 1qN0 WL0|11e5","America/Tijuana|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fmy0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT MST|80 70 70|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|EST EDT|50 40|01010101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Fortaleza|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|AST ADT|40 30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|5E60 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|-03 -02 -01|30 20 10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010121212121212121|oXh0 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e3","America/Goose_Bay|AST ADT ADDT|40 30 20|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|EST EDT AST|50 40 40|0101010101010101010101010101010101010101010101010101010101010101010101010210101010101010101010101010|mG70 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|CST CDT|60 50|010101010|9tG0 An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|-05 -04|50 40|010|TKR0 rz0|27e5","America/Guyana|-0345 -03 -04|3J 30 40|012|dzfJ Ey0f|80e4","America/Halifax|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|CST CDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K50 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|MST MDT|70 60|0101010|13Vl0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101210101010101010101010101010101010101010101010101010|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Marengo|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Petersburg|CST CDT EST EDT|60 50 50 40|0101010101010101210123232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Tell_City|EST EDT CDT CST|50 40 50 60|01023232323232323232323232323232323232323232323232323|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vevay|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vincennes|EST EDT CDT CST|50 40 50 60|01023201010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Winamac|EST EDT CDT CST|50 40 50 60|01023101010101010101010101010101010101010101010101010|K70 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Inuvik|PST PDT MDT MST|80 70 60 70|01010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|5Ea0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|EST EDT CST CDT|50 40 60 50|01010101010101010101010101010101010101010101010101010101230101010101010101010101010101010101010101010101010101010101010|5E70 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|EST EDT|50 40|010101010101010101010|9Kv0 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PDT YDT YST AKST AKDT|80 70 80 90 90 80|0101010101010101010102010101345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|EST EDT CDT|50 40 50|010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Kentucky/Monticello|CST CDT EST EDT|60 50 50 40|010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232323232|K80 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/La_Paz|-04|40|0||19e5","America/Lima|-05 -04|50 40|010101010|CVF0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|-03 -02|30 20|0101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|CST EST CDT|60 50 50|010202010102020|86u0 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|-04 -03|40 30|010101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|AST ADT|40 30|010|oXg0 19X0|39e4","America/Matamoros|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|MST MDT|70 60|0101010101010101010101010101010101010101010101010101010|13Vl0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4","America/Menominee|EST CDT CST|50 50 60|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|85H0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|CST EST CDT|60 50 50|010202020202020202020202020202020202020202020202020202020|taU0 24n0 wG10 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5","America/Metlakatla|PST PDT AKST AKDT|80 70 90 80|0101010101010101010101010101023232302323232323232323232323232|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|CST CDT|60 50|0101010101010101010101010101010101010101010101010101010|13Vk0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6","America/Miquelon|AST -03 -02|40 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|p9g0 gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K60 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010|IqU0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5","America/Montevideo|-03 -02 -0130 -0230|30 20 1u 2u|0101023010101010101010101010101010101010101010101010|JD0 jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/New_York|EST EDT|50 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K70 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nome|BST BDT YST AKST AKDT|b0 a0 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Kd0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|-02 -01|20 10|01010101010101010|CxC0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010123232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/Center|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/New_Salem|MST MDT CST CDT|70 60 60 50|010101010101010101010101010101010101010101010101010101010101010101012323232323232323232323232323232323232323232323232323232|K90 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Ojinaga|CST CDT MDT MST|60 50 60 70|01010232323232323232323232323232323232323232323232323201010101010101010|13Vk0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Paramaribo|-0330 -03|3u 30|01|zSPu|24e4","America/Port-au-Prince|EST EDT|50 40|01010101010101010101010101010101010101010101010101010101010101010101010|wu50 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|-05 -04|50 40|010101010|CxF0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|-04 -03|40 30|0101010|CxE0 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Punta_Arenas|-03 -04|30 40|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|","America/Winnipeg|CST CDT|60 50|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K80 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Rankin_Inlet|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101010101010101012101010101010101010101010101010101010101010101010101010101010|5E80 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|-03 -02|30 20|01010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|CST|60|0||19e4","America/Resolute|CST CDT EST|60 50 50|01010101010101010101010101010101010101010101010101010101012101010101012101010101010101010101010101010101010101010101010|5E80 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|-04 -03|40 30|01010101|CxE0 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|-03 -04|30 40|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|62e5","America/Santo_Domingo|-0430 EST AST|4u 50 40|0101010101212|ksu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|-03 -02|30 20|010101010101010101010101010101010101010101010101010101010101010101010|CxD0 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","America/Scoresbysund|-02 -01 +00|20 10 0|010212121212121212121212121212121212121212121212121212121212121212121212121212121212121210101010101010|oXg0 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|452","America/Sitka|PST PDT YST AKST AKDT|80 70 90 90 80|0101010101010101010101010101234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NDDT|3u 2u 1u|010101010101010101010101010101010101020101010101010101010101010101010101010101010101010101010101010101010101010101010101010|K5u 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|MST CST|70 60|01|5E90|16e3","America/Tegucigalpa|CST CDT|60 50|0101010|Gcu0 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|AST ADT|40 30|010101010101010101010101010101010101010101010101010101010101010101010101010101010|PHG0 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Vancouver|PST PDT|80 70|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|Ka0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|PST PDT MST|80 70 70|01010101010101010101010101010101010101010101010101010101010101010101010101010101012|p7K0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3","America/Yakutat|YST YDT AKST AKDT|90 80 90 80|0101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|Kb0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","Antarctica/Casey|+08 +11|-80 -b0|01010101010101010|1ARS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10","Antarctica/Davis|+07 +05|-70 -50|01010|1ART0 VB0 3Wn0 KN0|70","Pacific/Port_Moresby|+10|-a0|0||25e4","Antarctica/Macquarie|AEDT AEST|-b0 -a0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|1","Antarctica/Mawson|+06 +05|-60 -50|01|1ARU0|60","Pacific/Auckland|NZST NZDT|-c0 -d0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|14e5","Antarctica/Palmer|-03 -02 -04|30 20 40|01020202020202020202020202020202020202020202020202020202020202020202020|9Rf0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Asia/Riyadh|+03|-30|0||57e5","Antarctica/Troll|-00 +00 +02|0 0 -20|012121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|40","Antarctica/Vostok|+07 -00 +05|-70 0 -50|0102|WCF0 1Nj0 1aTv0|25","Europe/Berlin|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXd0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e5","Asia/Almaty|+06 +07 +05|-60 -70 -50|01010101010101010101020101010101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5","Asia/Amman|EET EEST +03|-20 -30 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101012|8kK0 KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5","Asia/Anadyr|+13 +14 +12 +11|-d0 -e0 -c0 -b0|010202020202020202023202020202020202020202020202020202020232|rmX0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|+05 +06 +04|-50 -60 -40|0101010101010101010201010120202020202020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|+05 +06 +04|-50 -60 -40|01010101010101010102010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|+05 +06 +04|-50 -60 -40|01010101010101010101020|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|+05 +06 +04|-50 -60 -40|010101010101010101020101010101010102020202020|sAj0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Baghdad|+03 +04|-30 -40|01010101010101010101010101010101010101010101010101010|u190 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|+04 +03|-40 -30|01|5QI0|96e4","Asia/Baku|+04 +05 +03|-40 -50 -30|010101010101010101010201010101010101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|+07|-70|0||15e6","Asia/Barnaul|+07 +08 +06|-70 -80 -60|01010101010101010101020101010102020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|","Asia/Beirut|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|61a0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|22e5","Asia/Bishkek|+06 +07 +05|-60 -70 -50|0101010101010101010102020202020202020202020202020|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|+08|-80|0||42e4","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+09 +10 +08|-90 -a0 -80|0101010101010101010102010101010101010101010101010101010101010120|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Ulaanbaatar|+07 +08 +09|-70 -80 -90|01212121212121212121212121212121212121212121212121|jsF0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Shanghai|CST CDT|-80 -90|0101010101010|DKG0 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|+0530 +0630 +06|-5u -6u -60|0120|14giu 11zu n3cu|22e5","Asia/Dhaka|+06 +07|-60 -70|010|1A5R0 1i00|16e6","Asia/Damascus|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101012|M00 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5","Asia/Dili|+09 +08|-90 -80|010|fpr0 Xld0|19e4","Asia/Dubai|+04|-40|0||39e5","Asia/Dushanbe|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101012010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|","Asia/Gaza|IST IDT EET EEST|-20 -30 -20 -30|010101010101010101010101010101023232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|18e5","Asia/Hebron|IST IDT EET EEST|-20 -30 -20 -30|01010101010101010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0|25e4","Asia/Ho_Chi_Minh|+08 +07|-80 -70|01|dfs0|90e5","Asia/Hong_Kong|HKT HKST|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|+06 +07 +08|-60 -70 -80|01212121212121212121212121212121212121212121212121|jsG0 cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|+08 +09 +07|-80 -90 -70|010101010101010101010201010101010101010101010101010101010101010|rn40 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|EET EEST +03 +04|-20 -30 -30 -40|01010101010123201010101010101010101010101010101010101010101010101010101010101012|8jz0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|aXa0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0|81e4","Asia/Kabul|+0430|-4u|0||46e5","Asia/Kamchatka|+12 +13 +11|-c0 -d0 -b0|0101010101010101010102010101010101010101010101010101010101020|rn00 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|+05 PKT PKST|-50 -50 -60|01212121|2Xv0 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|+06|-60|0||32e5","Asia/Kathmandu|+0530 +0545|-5u -5J|01|CVuu|12e5","Asia/Khandyga|+09 +10 +08 +11|-90 -a0 -80 -b0|01010101010101010101020101010101010101010101010131313131313131310|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|+07 +08 +06|-70 -80 -60|010101010101010101010201010101010101010101010101010101010101010|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|+0730 +08|-7u -80|01|td40|71e5","Asia/Macau|CST CDT|-80 -90|01010101010101010|H7u 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4","Asia/Magadan|+11 +12 +10|-b0 -c0 -a0|0101010101010101010102010101010101010101010101010101010101010120|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PST PDT|-80 -90|01010|hB40 1bb0 uNB0 rz0|24e6","Asia/Nicosia|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cPa0 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|32e4","Asia/Novokuznetsk|+07 +08 +06|-70 -80 -60|0101010101010101010102010101010101010101010101010101010101020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101020202020202020202020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|+06 +07 +05|-60 -70 -50|010101010101010101010201010101010101010101010101010101010101010|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|+05 +06 +04|-50 -60 -40|010101010101010202020202020202020202020202020|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|WITA WIB|-80 -70|01|HNs0|23e4","Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5","Asia/Qostanay|+05 +06 +04|-50 -60 -40|01010101010101010102010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|","Asia/Qyzylorda|+05 +06|-50 -60|010101010101010101010101010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4","Asia/Rangoon|+0630|-6u|0||48e5","Asia/Sakhalin|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010202020202020202020202020202020|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|+05 +06|-50 -60|010101010101010101010|rn70 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|KST KDT|-90 -a0|01010|Gf50 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|+11 +12 +10|-b0 -c0 -a0|010101010101010101010201010101010101010101010101010101010101010|rn10 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST CDT|-80 -90|0101010|akg0 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|+06 +07 +05|-60 -70 -50|0101010101010101010102|rn60 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|+04 +05 +03|-40 -50 -30|01010101010101010101020202010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|+0330 +0430 +04 +05|-3u -4u -40 -50|0123201010101010101010101010101010101010101010101010101010101010101010|hyHu 1pc0 120u Rc0 Dc0 1iMu JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|+0530 +06|-5u -60|01|HcGu|79e3","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+07 +08 +06|-70 -80 -60|01010101010101010101020101010101010101010101020202020202020202020|rn50 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ust-Nera|+09 +12 +11 +10|-90 -c0 -b0 -a0|0121212121212121212123212121212121212121212121212121212121212123|rn30 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|+10 +11 +09|-a0 -b0 -90|010101010101010101010201010101010101010101010101010101010101010|rn20 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|+09 +10 +08|-90 -a0 -80|010101010101010101010201010101010101010101010101010101010101010|rn30 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|+05 +06 +04|-50 -60 -40|010101010101010101010201010101010101010101010101010101010101010|rn70 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|+04 +05 +03|-40 -50 -30|01010101010101010101020202020101010101010101010101010101010|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|-01 +00 WET WEST|10 0 0 -10|01010101010101010101010231010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 Ap0 An0 wo0 Eo0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|25e4","Atlantic/Bermuda|AST ADT|40 30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|avi0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|WET WEST|0 -10|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXc0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4","Atlantic/Cape_Verde|-02 -01|20 10|01|elE0|50e4","Atlantic/Faroe|WET WEST|0 -10|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|49e3","Atlantic/Madeira|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tOo0 1a00 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|-04 -03 -02|40 30 20|01212101010101010101010101010101010101010101010101010101|wrg0 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r4u LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|18e3","Australia/Hobart|AEDT AEST|-b0 -a0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|qg0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|21e4","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010|bHRf Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|01212121213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|0101010101010|4r40 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4r40 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010|bHS0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","Europe/Brussels|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|21e5","Pacific/Easter|-06 -07 -05|60 70 50|010101010101010101010101020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202|yP0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0|30e2","Europe/Athens|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|cOK0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|35e5","Europe/Dublin|IST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5","Etc/GMT-1|+01|-10|0||","Pacific/Guadalcanal|+11|-b0|0||11e4","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0||","Etc/GMT-14|+14|-e0|0||","Etc/GMT-2|+02|-20|0||","Indian/Maldives|+05|-50|0||35e4","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0||","Pacific/Tahiti|-10|a0|0||18e4","Pacific/Niue|-11|b0|0||12e2","Etc/GMT+12|-12|c0|0||","Etc/GMT+5|-05|50|0||","Etc/GMT+6|-06|60|0||","Etc/GMT+7|-07|70|0||","Etc/GMT+8|-08|80|0||","Pacific/Gambier|-09|90|0||125","Etc/UTC|UTC|0|0||","Europe/Andorra|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|B7d0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|79e3","Europe/Astrakhan|+04 +05 +03|-40 -50 -30|0101010101010101020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5","Europe/London|BST GMT|-10 0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|4re0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|wdd0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5","Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muN0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|13e5","Europe/Bucharest|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|mRa0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|38e4","Europe/Chisinau|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010101012323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|67e4","Europe/Gibraltar|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|tLB0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|30e3","Europe/Helsinki|EET EEST|-20 -30|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|rm00 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5","Europe/Kaliningrad|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010102323232323232323232323232323232323232323232343|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101010123232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|34e5","Europe/Kirov|+04 +05 MSD MSK MSK|-40 -50 -40 -30 -40|01010101010101010232302323232323232323232323232323232323232343|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|CET WET WEST CEST|-10 0 -10 -20|01212121212121212121212121212121203030302121212121212121212121212121212121212121212121212121212121212121212121|go00 1cM0 1cM0 1fB0 1cM0 1cM0 1cM0 1fA0 1a00 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|27e5","Europe/Madrid|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|apy0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4","Europe/Minsk|MSK MSD EEST EET +03|-30 -40 -30 -20 -30|010101010101010101023232323232323232323232323232323232323234|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Paris|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|fbc0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|11e6","Europe/Moscow|MSK MSD EEST EET MSK|-30 -40 -30 -20 -40|0101010101010101010102301010101010101010101010101010101010101040|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Riga|MSK MSD EEST EET|-30 -40 -30 -20|010101010101010102323232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|XX0 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|39e5","Europe/Samara|+04 +05 +03|-40 -50 -30|01010101010101010202010101010101010101010101010101010101020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|+04 +05 +03|-40 -50 -30|0101010101010102020202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|","Europe/Simferopol|MSK MSD EET EEST MSK|-30 -40 -20 -30 -40|0101010101010101010232323101010323232323232323232323232323232323240|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|muJ0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|12e5","Europe/Tallinn|MSK MSD EEST EET|-30 -40 -30 -20|0101010101010101023232323232323232323232323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|41e4","Europe/Tirane|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|axz0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|42e4","Europe/Ulyanovsk|+04 +05 +03 +02|-40 -50 -30 -20|010101010101010102023202020202020202020202020202020202020202020|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|oXb0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|18e5","Europe/Vilnius|MSK MSD EEST EET CEST CET|-30 -40 -30 -20 -20 -10|01010101010101010232323232323232323454323232323232323232323232323232323232323232323232323232323|rn90 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|54e4","Europe/Volgograd|+04 +05 MSD MSK MSK|-40 -50 -40 -30 -40|0101010101010102323230232323232323232323232323232323232323234303|rn80 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5","Europe/Warsaw|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00|17e5","Pacific/Honolulu|HST|a0|0||37e4","Indian/Chagos|+05 +06|-50 -60|01|13ij0|30e2","Indian/Mauritius|+04 +05|-40 -50|01010|v5U0 14L0 12kr0 11z0|15e4","Pacific/Kwajalein|-12 +12|c0 -c0|01|Vxo0|14e3","Pacific/Chatham|+1245 +1345|-cJ -dJ|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|bKC0 IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00|600","Pacific/Apia|-11 -10 +14 +13|b0 a0 -e0 -d0|010123232323232323232323|1Dbn0 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3","Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4","Pacific/Efate|+11 +12|-b0 -c0|01010101010101010101010|9EA0 Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|+12 +13|-c0 -d0|01010101010101010101010101010|1ace0 LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4","Pacific/Galapagos|-05 -06|50 60|0101|CVF0 gNd0 rz0|25e3","Pacific/Guam|GST GDT ChST|-a0 -b0 -a0|010101010102|JQ0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+12 +11|-c0 -b0|01|1aAA0|66e2","Pacific/Marquesas|-0930|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Nauru|+1130 +12|-bu -c0|01|maCu|10e3","Pacific/Norfolk|+1130 +1230 +11 +12|-bu -cu -b0 -c0|010232323232323232323232323|bHOu Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|25e4","Pacific/Noumea|+11 +12|-b0 -c0|0101010|jhp0 xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tongatapu|+13 +14|-d0 -e0|010101010|1csd0 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Cayenne|Etc/GMT+3","America/Chicago|CST6CDT","America/Chicago|US/Central","America/Denver|America/Shiprock","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|America/Yellowknife","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Godthab|America/Nuuk","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Iqaluit|America/Pangnirtung","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/La_Paz|Etc/GMT+4","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|EST5EDT","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|EST","America/Phoenix|America/Creston","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Puerto_Rico|America/Anguilla","America/Puerto_Rico|America/Antigua","America/Puerto_Rico|America/Aruba","America/Puerto_Rico|America/Blanc-Sablon","America/Puerto_Rico|America/Curacao","America/Puerto_Rico|America/Dominica","America/Puerto_Rico|America/Grenada","America/Puerto_Rico|America/Guadeloupe","America/Puerto_Rico|America/Kralendijk","America/Puerto_Rico|America/Lower_Princes","America/Puerto_Rico|America/Marigot","America/Puerto_Rico|America/Montserrat","America/Puerto_Rico|America/Port_of_Spain","America/Puerto_Rico|America/St_Barthelemy","America/Puerto_Rico|America/St_Kitts","America/Puerto_Rico|America/St_Lucia","America/Puerto_Rico|America/St_Thomas","America/Puerto_Rico|America/St_Vincent","America/Puerto_Rico|America/Tortola","America/Puerto_Rico|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|America/Nassau","America/Toronto|America/Nipigon","America/Toronto|America/Thunder_Bay","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|America/Rainy_River","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Etc/GMT-7","Asia/Bangkok|Indian/Christmas","Asia/Brunei|Asia/Kuching","Asia/Brunei|Etc/GMT-8","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Dubai|Etc/GMT-4","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Reunion","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Riyadh|Antarctica/Syowa","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Riyadh|Etc/GMT-3","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Choibalsan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Asia/Urumqi|Etc/GMT-6","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Currie","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|EET","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Berlin|Arctic/Longyearbyen","Europe/Berlin|Atlantic/Jan_Mayen","Europe/Berlin|Europe/Copenhagen","Europe/Berlin|Europe/Oslo","Europe/Berlin|Europe/Stockholm","Europe/Brussels|CET","Europe/Brussels|Europe/Amsterdam","Europe/Brussels|Europe/Luxembourg","Europe/Brussels|MET","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Kiev|Europe/Kyiv","Europe/Kiev|Europe/Uzhgorod","Europe/Kiev|Europe/Zaporozhye","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Paris|Europe/Monaco","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Maldives|Etc/GMT-5","Indian/Maldives|Indian/Kerguelen","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Enderbury|Pacific/Kanton","Pacific/Gambier|Etc/GMT+9","Pacific/Guadalcanal|Etc/GMT-11","Pacific/Guadalcanal|Pacific/Pohnpei","Pacific/Guadalcanal|Pacific/Ponape","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Niue|Etc/GMT+11","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Port_Moresby|Antarctica/DumontDUrville","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tahiti|Etc/GMT+10","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Majuro","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"],countries:["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Puerto_Rico America/Antigua","AI|America/Puerto_Rico America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo","AW|America/Puerto_Rico America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Puerto_Rico America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Kuching Asia/Brunei","BO|America/La_Paz","BQ|America/Puerto_Rico America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Toronto America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston","CC|Asia/Yangon Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Puerto_Rico America/Curacao","CX|Asia/Bangkok Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Berlin Europe/Copenhagen","DM|America/Puerto_Rico America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Puerto_Rico America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London Europe/Guernsey","GH|Africa/Abidjan Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Puerto_Rico America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Africa/Abidjan Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Puerto_Rico America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Puerto_Rico America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Brussels Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Paris Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Puerto_Rico America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Puerto_Rico America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana","MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Brussels Europe/Amsterdam","NO|Europe/Berlin Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Asia/Dubai Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Asia/Dubai Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Berlin Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Berlin Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Puerto_Rico America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Asia/Dubai Indian/Maldives Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Puerto_Rico America/Port_of_Spain","TV|Pacific/Tarawa Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kyiv","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake","US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Puerto_Rico America/St_Vincent","VE|America/Caracas","VG|America/Puerto_Rico America/Tortola","VI|America/Puerto_Rico America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Tarawa Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}),o});
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1594 +1,0 @@
-//! moment-timezone.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('moment')); // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	// Resolves es6 module loading issue
-	if (moment.version === undefined && moment.default) {
-		moment = moment.default;
-	}
-
-	// Do not load moment-timezone a second time.
-	// if (moment.tz !== undefined) {
-	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
-	// 	return moment;
-	// }
-
-	var VERSION = "0.5.48",
-		zones = {},
-		links = {},
-		countries = {},
-		names = {},
-		guesses = {},
-		cachedGuess;
-
-	if (!moment || typeof moment.version !== 'string') {
-		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
-	}
-
-	var momentVersion = moment.version.split('.'),
-		major = +momentVersion[0],
-		minor = +momentVersion[1];
-
-	// Moment.js version check
-	if (major < 2 || (major === 2 && minor < 6)) {
-		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
-	}
-
-	/************************************
-		Unpacking
-	************************************/
-
-	function charCodeToInt(charCode) {
-		if (charCode > 96) {
-			return charCode - 87;
-		} else if (charCode > 64) {
-			return charCode - 29;
-		}
-		return charCode - 48;
-	}
-
-	function unpackBase60(string) {
-		var i = 0,
-			parts = string.split('.'),
-			whole = parts[0],
-			fractional = parts[1] || '',
-			multiplier = 1,
-			num,
-			out = 0,
-			sign = 1;
-
-		// handle negative numbers
-		if (string.charCodeAt(0) === 45) {
-			i = 1;
-			sign = -1;
-		}
-
-		// handle digits before the decimal
-		for (i; i < whole.length; i++) {
-			num = charCodeToInt(whole.charCodeAt(i));
-			out = 60 * out + num;
-		}
-
-		// handle digits after the decimal
-		for (i = 0; i < fractional.length; i++) {
-			multiplier = multiplier / 60;
-			num = charCodeToInt(fractional.charCodeAt(i));
-			out += num * multiplier;
-		}
-
-		return out * sign;
-	}
-
-	function arrayToInt (array) {
-		for (var i = 0; i < array.length; i++) {
-			array[i] = unpackBase60(array[i]);
-		}
-	}
-
-	function intToUntil (array, length) {
-		for (var i = 0; i < length; i++) {
-			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
-		}
-
-		array[length - 1] = Infinity;
-	}
-
-	function mapIndices (source, indices) {
-		var out = [], i;
-
-		for (i = 0; i < indices.length; i++) {
-			out[i] = source[indices[i]];
-		}
-
-		return out;
-	}
-
-	function unpack (string) {
-		var data = string.split('|'),
-			offsets = data[2].split(' '),
-			indices = data[3].split(''),
-			untils  = data[4].split(' ');
-
-		arrayToInt(offsets);
-		arrayToInt(indices);
-		arrayToInt(untils);
-
-		intToUntil(untils, indices.length);
-
-		return {
-			name       : data[0],
-			abbrs      : mapIndices(data[1].split(' '), indices),
-			offsets    : mapIndices(offsets, indices),
-			untils     : untils,
-			population : data[5] | 0
-		};
-	}
-
-	/************************************
-		Zone object
-	************************************/
-
-	function Zone (packedString) {
-		if (packedString) {
-			this._set(unpack(packedString));
-		}
-	}
-
-	function closest (num, arr) {
-		var len = arr.length;
-		if (num < arr[0]) {
-			return 0;
-		} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {
-			return len - 1;
-		} else if (num >= arr[len - 1]) {
-			return -1;
-		}
-
-		var mid;
-		var lo = 0;
-		var hi = len - 1;
-		while (hi - lo > 1) {
-			mid = Math.floor((lo + hi) / 2);
-			if (arr[mid] <= num) {
-				lo = mid;
-			} else {
-				hi = mid;
-			}
-		}
-		return hi;
-	}
-
-	Zone.prototype = {
-		_set : function (unpacked) {
-			this.name       = unpacked.name;
-			this.abbrs      = unpacked.abbrs;
-			this.untils     = unpacked.untils;
-			this.offsets    = unpacked.offsets;
-			this.population = unpacked.population;
-		},
-
-		_index : function (timestamp) {
-			var target = +timestamp,
-				untils = this.untils,
-				i;
-
-			i = closest(target, untils);
-			if (i >= 0) {
-				return i;
-			}
-		},
-
-		countries : function () {
-			var zone_name = this.name;
-			return Object.keys(countries).filter(function (country_code) {
-				return countries[country_code].zones.indexOf(zone_name) !== -1;
-			});
-		},
-
-		parse : function (timestamp) {
-			var target  = +timestamp,
-				offsets = this.offsets,
-				untils  = this.untils,
-				max     = untils.length - 1,
-				offset, offsetNext, offsetPrev, i;
-
-			for (i = 0; i < max; i++) {
-				offset     = offsets[i];
-				offsetNext = offsets[i + 1];
-				offsetPrev = offsets[i ? i - 1 : i];
-
-				if (offset < offsetNext && tz.moveAmbiguousForward) {
-					offset = offsetNext;
-				} else if (offset > offsetPrev && tz.moveInvalidForward) {
-					offset = offsetPrev;
-				}
-
-				if (target < untils[i] - (offset * 60000)) {
-					return offsets[i];
-				}
-			}
-
-			return offsets[max];
-		},
-
-		abbr : function (mom) {
-			return this.abbrs[this._index(mom)];
-		},
-
-		offset : function (mom) {
-			logError("zone.offset has been deprecated in favor of zone.utcOffset");
-			return this.offsets[this._index(mom)];
-		},
-
-		utcOffset : function (mom) {
-			return this.offsets[this._index(mom)];
-		}
-	};
-
-	/************************************
-		Country object
-	************************************/
-
-	function Country (country_name, zone_names) {
-		this.name = country_name;
-		this.zones = zone_names;
-	}
-
-	/************************************
-		Current Timezone
-	************************************/
-
-	function OffsetAt(at) {
-		var timeString = at.toTimeString();
-		var abbr = timeString.match(/\([a-z ]+\)/i);
-		if (abbr && abbr[0]) {
-			// 17:56:31 GMT-0600 (CST)
-			// 17:56:31 GMT-0600 (Central Standard Time)
-			abbr = abbr[0].match(/[A-Z]/g);
-			abbr = abbr ? abbr.join('') : undefined;
-		} else {
-			// 17:56:31 CST
-			// 17:56:31 GMT+0800 (台北標準時間)
-			abbr = timeString.match(/[A-Z]{3,5}/g);
-			abbr = abbr ? abbr[0] : undefined;
-		}
-
-		if (abbr === 'GMT') {
-			abbr = undefined;
-		}
-
-		this.at = +at;
-		this.abbr = abbr;
-		this.offset = at.getTimezoneOffset();
-	}
-
-	function ZoneScore(zone) {
-		this.zone = zone;
-		this.offsetScore = 0;
-		this.abbrScore = 0;
-	}
-
-	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
-		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
-		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
-			this.abbrScore++;
-		}
-	};
-
-	function findChange(low, high) {
-		var mid, diff;
-
-		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
-			mid = new OffsetAt(new Date(low.at + diff));
-			if (mid.offset === low.offset) {
-				low = mid;
-			} else {
-				high = mid;
-			}
-		}
-
-		return low;
-	}
-
-	function userOffsets() {
-		var startYear = new Date().getFullYear() - 2,
-			last = new OffsetAt(new Date(startYear, 0, 1)),
-			lastOffset = last.offset,
-			offsets = [last],
-			change, next, nextOffset, i;
-
-		for (i = 1; i < 48; i++) {
-			nextOffset = new Date(startYear, i, 1).getTimezoneOffset();
-			if (nextOffset !== lastOffset) {
-				// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets
-				next = new OffsetAt(new Date(startYear, i, 1));
-				change = findChange(last, next);
-				offsets.push(change);
-				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
-				last = next;
-				lastOffset = nextOffset;
-			}
-		}
-
-		for (i = 0; i < 4; i++) {
-			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
-			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
-		}
-
-		return offsets;
-	}
-
-	function sortZoneScores (a, b) {
-		if (a.offsetScore !== b.offsetScore) {
-			return a.offsetScore - b.offsetScore;
-		}
-		if (a.abbrScore !== b.abbrScore) {
-			return a.abbrScore - b.abbrScore;
-		}
-		if (a.zone.population !== b.zone.population) {
-			return b.zone.population - a.zone.population;
-		}
-		return b.zone.name.localeCompare(a.zone.name);
-	}
-
-	function addToGuesses (name, offsets) {
-		var i, offset;
-		arrayToInt(offsets);
-		for (i = 0; i < offsets.length; i++) {
-			offset = offsets[i];
-			guesses[offset] = guesses[offset] || {};
-			guesses[offset][name] = true;
-		}
-	}
-
-	function guessesForUserOffsets (offsets) {
-		var offsetsLength = offsets.length,
-			filteredGuesses = {},
-			out = [],
-			checkedOffsets = {},
-			i, j, offset, guessesOffset;
-
-		for (i = 0; i < offsetsLength; i++) {
-			offset = offsets[i].offset;
-			if (checkedOffsets.hasOwnProperty(offset)) {
-				continue;
-			}
-			guessesOffset = guesses[offset] || {};
-			for (j in guessesOffset) {
-				if (guessesOffset.hasOwnProperty(j)) {
-					filteredGuesses[j] = true;
-				}
-			}
-			checkedOffsets[offset] = true;
-		}
-
-		for (i in filteredGuesses) {
-			if (filteredGuesses.hasOwnProperty(i)) {
-				out.push(names[i]);
-			}
-		}
-
-		return out;
-	}
-
-	function rebuildGuess () {
-
-		// use Intl API when available and returning valid time zone
-		try {
-			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
-			if (intlName && intlName.length > 3) {
-				var name = names[normalizeName(intlName)];
-				if (name) {
-					return name;
-				}
-				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
-			}
-		} catch (e) {
-			// Intl unavailable, fall back to manual guessing.
-		}
-
-		var offsets = userOffsets(),
-			offsetsLength = offsets.length,
-			guesses = guessesForUserOffsets(offsets),
-			zoneScores = [],
-			zoneScore, i, j;
-
-		for (i = 0; i < guesses.length; i++) {
-			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
-			for (j = 0; j < offsetsLength; j++) {
-				zoneScore.scoreOffsetAt(offsets[j]);
-			}
-			zoneScores.push(zoneScore);
-		}
-
-		zoneScores.sort(sortZoneScores);
-
-		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
-	}
-
-	function guess (ignoreCache) {
-		if (!cachedGuess || ignoreCache) {
-			cachedGuess = rebuildGuess();
-		}
-		return cachedGuess;
-	}
-
-	/************************************
-		Global Methods
-	************************************/
-
-	function normalizeName (name) {
-		return (name || '').toLowerCase().replace(/\//g, '_');
-	}
-
-	function addZone (packed) {
-		var i, name, split, normalized;
-
-		if (typeof packed === "string") {
-			packed = [packed];
-		}
-
-		for (i = 0; i < packed.length; i++) {
-			split = packed[i].split('|');
-			name = split[0];
-			normalized = normalizeName(name);
-			zones[normalized] = packed[i];
-			names[normalized] = name;
-			addToGuesses(normalized, split[2].split(' '));
-		}
-	}
-
-	function getZone (name, caller) {
-
-		name = normalizeName(name);
-
-		var zone = zones[name];
-		var link;
-
-		if (zone instanceof Zone) {
-			return zone;
-		}
-
-		if (typeof zone === 'string') {
-			zone = new Zone(zone);
-			zones[name] = zone;
-			return zone;
-		}
-
-		// Pass getZone to prevent recursion more than 1 level deep
-		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
-			zone = zones[name] = new Zone();
-			zone._set(link);
-			zone.name = names[name];
-			return zone;
-		}
-
-		return null;
-	}
-
-	function getNames () {
-		var i, out = [];
-
-		for (i in names) {
-			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
-				out.push(names[i]);
-			}
-		}
-
-		return out.sort();
-	}
-
-	function getCountryNames () {
-		return Object.keys(countries);
-	}
-
-	function addLink (aliases) {
-		var i, alias, normal0, normal1;
-
-		if (typeof aliases === "string") {
-			aliases = [aliases];
-		}
-
-		for (i = 0; i < aliases.length; i++) {
-			alias = aliases[i].split('|');
-
-			normal0 = normalizeName(alias[0]);
-			normal1 = normalizeName(alias[1]);
-
-			links[normal0] = normal1;
-			names[normal0] = alias[0];
-
-			links[normal1] = normal0;
-			names[normal1] = alias[1];
-		}
-	}
-
-	function addCountries (data) {
-		var i, country_code, country_zones, split;
-		if (!data || !data.length) return;
-		for (i = 0; i < data.length; i++) {
-			split = data[i].split('|');
-			country_code = split[0].toUpperCase();
-			country_zones = split[1].split(' ');
-			countries[country_code] = new Country(
-				country_code,
-				country_zones
-			);
-		}
-	}
-
-	function getCountry (name) {
-		name = name.toUpperCase();
-		return countries[name] || null;
-	}
-
-	function zonesForCountry(country, with_offset) {
-		country = getCountry(country);
-
-		if (!country) return null;
-
-		var zones = country.zones.sort();
-
-		if (with_offset) {
-			return zones.map(function (zone_name) {
-				var zone = getZone(zone_name);
-				return {
-					name: zone_name,
-					offset: zone.utcOffset(new Date())
-				};
-			});
-		}
-
-		return zones;
-	}
-
-	function loadData (data) {
-		addZone(data.zones);
-		addLink(data.links);
-		addCountries(data.countries);
-		tz.dataVersion = data.version;
-	}
-
-	function zoneExists (name) {
-		if (!zoneExists.didShowError) {
-			zoneExists.didShowError = true;
-				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
-		}
-		return !!getZone(name);
-	}
-
-	function needsOffset (m) {
-		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
-		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
-	}
-
-	function logError (message) {
-		if (typeof console !== 'undefined' && typeof console.error === 'function') {
-			console.error(message);
-		}
-	}
-
-	/************************************
-		moment.tz namespace
-	************************************/
-
-	function tz (input) {
-		var args = Array.prototype.slice.call(arguments, 0, -1),
-			name = arguments[arguments.length - 1],
-			out  = moment.utc.apply(null, args),
-			zone;
-
-		if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {
-			out.add(zone.parse(out), 'minutes');
-		}
-
-		out.tz(name);
-
-		return out;
-	}
-
-	tz.version      = VERSION;
-	tz.dataVersion  = '';
-	tz._zones       = zones;
-	tz._links       = links;
-	tz._names       = names;
-	tz._countries	= countries;
-	tz.add          = addZone;
-	tz.link         = addLink;
-	tz.load         = loadData;
-	tz.zone         = getZone;
-	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
-	tz.guess        = guess;
-	tz.names        = getNames;
-	tz.Zone         = Zone;
-	tz.unpack       = unpack;
-	tz.unpackBase60 = unpackBase60;
-	tz.needsOffset  = needsOffset;
-	tz.moveInvalidForward   = true;
-	tz.moveAmbiguousForward = false;
-	tz.countries    = getCountryNames;
-	tz.zonesForCountry = zonesForCountry;
-
-	/************************************
-		Interface with Moment.js
-	************************************/
-
-	var fn = moment.fn;
-
-	moment.tz = tz;
-
-	moment.defaultZone = null;
-
-	moment.updateOffset = function (mom, keepTime) {
-		var zone = moment.defaultZone,
-			offset;
-
-		if (mom._z === undefined) {
-			if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {
-				mom._d = moment.utc(mom._a)._d;
-				mom.utc().add(zone.parse(mom), 'minutes');
-			}
-			mom._z = zone;
-		}
-		if (mom._z) {
-			offset = mom._z.utcOffset(mom);
-			if (Math.abs(offset) < 16) {
-				offset = offset / 60;
-			}
-			if (mom.utcOffset !== undefined) {
-				var z = mom._z;
-				mom.utcOffset(-offset, keepTime);
-				mom._z = z;
-			} else {
-				mom.zone(offset, keepTime);
-			}
-		}
-	};
-
-	fn.tz = function (name, keepTime) {
-		if (name) {
-			if (typeof name !== 'string') {
-				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
-			}
-			this._z = getZone(name);
-			if (this._z) {
-				moment.updateOffset(this, keepTime);
-			} else {
-				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
-			}
-			return this;
-		}
-		if (this._z) { return this._z.name; }
-	};
-
-	function abbrWrap (old) {
-		return function () {
-			if (this._z) { return this._z.abbr(this); }
-			return old.call(this);
-		};
-	}
-
-	function resetZoneWrap (old) {
-		return function () {
-			this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	function resetZoneWrap2 (old) {
-		return function () {
-			if (arguments.length > 0) this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	fn.zoneName  = abbrWrap(fn.zoneName);
-	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
-	fn.utc       = resetZoneWrap(fn.utc);
-	fn.local     = resetZoneWrap(fn.local);
-	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
-
-	moment.tz.setDefault = function(name) {
-		if (major < 2 || (major === 2 && minor < 9)) {
-			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
-		}
-		moment.defaultZone = name ? getZone(name) : null;
-		return moment;
-	};
-
-	// Cloning a moment should include the _z property.
-	var momentProperties = moment.momentProperties;
-	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
-		// moment 2.8.1+
-		momentProperties.push('_z');
-		momentProperties.push('_a');
-	} else if (momentProperties) {
-		// moment 2.7.0
-		momentProperties._z = null;
-	}
-
-	loadData({
-		"version": "2025b",
-		"zones": [
-			"Africa/Abidjan|GMT|0|0||48e5",
-			"Africa/Nairobi|EAT|-30|0||47e5",
-			"Africa/Algiers|CET|-10|0||26e5",
-			"Africa/Lagos|WAT|-10|0||17e6",
-			"Africa/Maputo|CAT|-20|0||26e5",
-			"Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6",
-			"Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101010101|1H3C0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0|32e5",
-			"Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6",
-			"Africa/Johannesburg|SAST|-20|0||84e5",
-			"Africa/Juba|EAT CAT|-30 -20|01|24nx0|",
-			"Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5",
-			"Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|",
-			"Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5",
-			"Africa/Windhoek|CAT WAT|-20 -10|0101010101010|1GQo0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
-			"America/Adak|HST HDT|a0 90|01010101010101010101010|1GIc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326",
-			"America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1GIb0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4",
-			"America/Santo_Domingo|AST|40|0||29e5",
-			"America/Araguaina|-03 -02|30 20|010|1IdD0 Lz0|14e4",
-			"America/Fortaleza|-03|30|0||34e5",
-			"America/Asuncion|-03 -04|30 40|01010101010101010101010|1GTf0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5",
-			"America/Panama|EST|50|0||15e5",
-			"America/Mexico_City|CST CDT|60 50|01010101010101010101010|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
-			"America/Bahia|-02 -03|20 30|01|1GCq0|27e5",
-			"America/Managua|CST|60|0||22e5",
-			"America/La_Paz|-04|40|0||19e5",
-			"America/Lima|-05|50|0||11e6",
-			"America/Denver|MST MDT|70 60|01010101010101010101010|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5",
-			"America/Campo_Grande|-03 -04|30 40|0101010101010101|1GCr0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
-			"America/Cancun|CST CDT EST|60 50 50|01010102|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
-			"America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5",
-			"America/Chicago|CST CDT|60 50|01010101010101010101010|1GI80 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5",
-			"America/Chihuahua|MST MDT CST|70 60 60|01010101010101010101012|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
-			"America/Ciudad_Juarez|MST MDT CST|70 60 60|010101010101010101010120|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0|",
-			"America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|62e5",
-			"America/Phoenix|MST|70|0||42e5",
-			"America/Whitehorse|PST PDT MST|80 70 70|0101010101010101012|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
-			"America/New_York|EST EDT|50 40|01010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6",
-			"America/Rio_Branco|-04 -05|40 50|01|1KLE0|31e4",
-			"America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6",
-			"America/Fort_Nelson|PST PDT MST|80 70 70|01010102|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
-			"America/Halifax|AST ADT|40 30|01010101010101010101010|1GI60 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4",
-			"America/Godthab|-03 -02|30 20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3",
-			"America/Grand_Turk|EST EDT AST|50 40 40|010101021010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2",
-			"America/Havana|CST CDT|50 40|01010101010101010101010|1GQt0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5",
-			"America/Mazatlan|MST MDT|70 60|01010101010101010101010|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4",
-			"America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2",
-			"America/Miquelon|-03 -02|30 20|01010101010101010101010|1GI50 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2",
-			"America/Montevideo|-02 -03|20 30|01010101|1GI40 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
-			"America/Noronha|-02|20|0||30e2",
-			"America/Ojinaga|MST MDT CST|70 60 60|01010101010101010101012|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0|23e3",
-			"America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5",
-			"Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
-			"America/Sao_Paulo|-02 -03|20 30|0101010101010101|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
-			"Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4",
-			"America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4",
-			"Antarctica/Casey|+11 +08|-b0 -80|0101010101010|1GAF0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1|10",
-			"Antarctica/Davis|+05 +07|-50 -70|01|1GAI0|70",
-			"Pacific/Port_Moresby|+10|-a0|0||25e4",
-			"Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
-			"Asia/Tashkent|+05|-50|0||23e5",
-			"Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
-			"Asia/Baghdad|+03|-30|0||66e5",
-			"Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40",
-			"Asia/Bangkok|+07|-70|0||15e6",
-			"Asia/Dhaka|+06|-60|0||16e6",
-			"Asia/Amman|EET EEST +03|-20 -30 -30|010101010101010101012|1GPy0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5",
-			"Asia/Kamchatka|+12|-c0|0||18e4",
-			"Asia/Baku|+04 +05|-40 -50|010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-			"Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0|",
-			"Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1GNy0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5",
-			"Asia/Kuala_Lumpur|+08|-80|0||71e5",
-			"Asia/Kolkata|IST|-5u|0||15e6",
-			"Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4",
-			"Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5",
-			"Asia/Shanghai|CST|-80|0||23e6",
-			"Asia/Colombo|+0530|-5u|0||22e5",
-			"Asia/Damascus|EET EEST +03|-20 -30 -30|01010101010101010101012|1GPy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
-			"Asia/Dili|+09|-90|0||19e4",
-			"Asia/Dubai|+04|-40|0||39e5",
-			"Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|",
-			"Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0|18e5",
-			"Asia/Hong_Kong|HKT|-80|0||73e5",
-			"Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3",
-			"Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4",
-			"Europe/Istanbul|EET EEST +03|-20 -30 -30|01010101012|1GNB0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
-			"Asia/Jakarta|WIB|-70|0||31e6",
-			"Asia/Jayapura|WIT|-90|0||26e4",
-			"Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1GPA0 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4",
-			"Asia/Kabul|+0430|-4u|0||46e5",
-			"Asia/Karachi|PKT|-50|0||24e6",
-			"Asia/Kathmandu|+0545|-5J|0||12e5",
-			"Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4",
-			"Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5",
-			"Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3",
-			"Asia/Makassar|WITA|-80|0||15e5",
-			"Asia/Manila|PST|-80|0||24e6",
-			"Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5",
-			"Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5",
-			"Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5",
-			"Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5",
-			"Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4",
-			"Asia/Rangoon|+0630|-6u|0||48e5",
-			"Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4",
-			"Asia/Seoul|KST|-90|0||23e6",
-			"Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2",
-			"Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1GLUu 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
-			"Asia/Tokyo|JST|-90|0||38e6",
-			"Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5",
-			"Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4",
-			"Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5",
-			"Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5",
-			"Atlantic/Cape_Verde|-01|10|0||50e4",
-			"Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1GQgu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
-			"Australia/Brisbane|AEST|-a0|0||20e5",
-			"Australia/Darwin|ACST|-9u|0||12e4",
-			"Australia/Eucla|+0845|-8J|0||368",
-			"Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
-			"Australia/Perth|AWST|-80|0||18e5",
-			"Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|30e2",
-			"Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5",
-			"Etc/GMT-1|+01|-10|0||",
-			"Pacific/Guadalcanal|+11|-b0|0||11e4",
-			"Pacific/Fakaofo|+13|-d0|0||483",
-			"Pacific/Kiritimati|+14|-e0|0||51e2",
-			"Etc/GMT-2|+02|-20|0||",
-			"Pacific/Tahiti|-10|a0|0||18e4",
-			"Pacific/Niue|-11|b0|0||12e2",
-			"Etc/GMT+12|-12|c0|0||",
-			"Pacific/Galapagos|-06|60|0||25e3",
-			"Etc/GMT+7|-07|70|0||",
-			"Pacific/Pitcairn|-08|80|0||56",
-			"Pacific/Gambier|-09|90|0||125",
-			"Etc/UTC|UTC|0|0||",
-			"Europe/Ulyanovsk|+04 +03|-40 -30|010|1N7y0 3rd0|13e5",
-			"Europe/London|GMT BST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6",
-			"Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4",
-			"Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4",
-			"Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6",
-			"Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810|",
-			"Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|0101023|1GNB0 1qM0 11A0 1o00 11z0 1nW0|33e4",
-			"Europe/Volgograd|MSK MSK +04|-40 -30 -40|0121|1N7y0 9Jd0 5gn0|10e5",
-			"Pacific/Honolulu|HST|a0|0||37e4",
-			"Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600",
-			"Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
-			"Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4",
-			"Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101|1Goe0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4",
-			"Pacific/Guam|ChST|-a0|0||17e4",
-			"Pacific/Marquesas|-0930|9u|0||86e2",
-			"Pacific/Pago_Pago|SST|b0|0||37e2",
-			"Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4",
-			"Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"
-		],
-		"links": [
-			"Africa/Abidjan|Africa/Accra",
-			"Africa/Abidjan|Africa/Bamako",
-			"Africa/Abidjan|Africa/Banjul",
-			"Africa/Abidjan|Africa/Bissau",
-			"Africa/Abidjan|Africa/Conakry",
-			"Africa/Abidjan|Africa/Dakar",
-			"Africa/Abidjan|Africa/Freetown",
-			"Africa/Abidjan|Africa/Lome",
-			"Africa/Abidjan|Africa/Monrovia",
-			"Africa/Abidjan|Africa/Nouakchott",
-			"Africa/Abidjan|Africa/Ouagadougou",
-			"Africa/Abidjan|Africa/Timbuktu",
-			"Africa/Abidjan|America/Danmarkshavn",
-			"Africa/Abidjan|Atlantic/Reykjavik",
-			"Africa/Abidjan|Atlantic/St_Helena",
-			"Africa/Abidjan|Etc/GMT",
-			"Africa/Abidjan|Etc/GMT+0",
-			"Africa/Abidjan|Etc/GMT-0",
-			"Africa/Abidjan|Etc/GMT0",
-			"Africa/Abidjan|Etc/Greenwich",
-			"Africa/Abidjan|GMT",
-			"Africa/Abidjan|GMT+0",
-			"Africa/Abidjan|GMT-0",
-			"Africa/Abidjan|GMT0",
-			"Africa/Abidjan|Greenwich",
-			"Africa/Abidjan|Iceland",
-			"Africa/Algiers|Africa/Tunis",
-			"Africa/Cairo|Egypt",
-			"Africa/Casablanca|Africa/El_Aaiun",
-			"Africa/Johannesburg|Africa/Maseru",
-			"Africa/Johannesburg|Africa/Mbabane",
-			"Africa/Lagos|Africa/Bangui",
-			"Africa/Lagos|Africa/Brazzaville",
-			"Africa/Lagos|Africa/Douala",
-			"Africa/Lagos|Africa/Kinshasa",
-			"Africa/Lagos|Africa/Libreville",
-			"Africa/Lagos|Africa/Luanda",
-			"Africa/Lagos|Africa/Malabo",
-			"Africa/Lagos|Africa/Ndjamena",
-			"Africa/Lagos|Africa/Niamey",
-			"Africa/Lagos|Africa/Porto-Novo",
-			"Africa/Maputo|Africa/Blantyre",
-			"Africa/Maputo|Africa/Bujumbura",
-			"Africa/Maputo|Africa/Gaborone",
-			"Africa/Maputo|Africa/Harare",
-			"Africa/Maputo|Africa/Kigali",
-			"Africa/Maputo|Africa/Lubumbashi",
-			"Africa/Maputo|Africa/Lusaka",
-			"Africa/Nairobi|Africa/Addis_Ababa",
-			"Africa/Nairobi|Africa/Asmara",
-			"Africa/Nairobi|Africa/Asmera",
-			"Africa/Nairobi|Africa/Dar_es_Salaam",
-			"Africa/Nairobi|Africa/Djibouti",
-			"Africa/Nairobi|Africa/Kampala",
-			"Africa/Nairobi|Africa/Mogadishu",
-			"Africa/Nairobi|Indian/Antananarivo",
-			"Africa/Nairobi|Indian/Comoro",
-			"Africa/Nairobi|Indian/Mayotte",
-			"Africa/Tripoli|Libya",
-			"America/Adak|America/Atka",
-			"America/Adak|US/Aleutian",
-			"America/Anchorage|America/Juneau",
-			"America/Anchorage|America/Nome",
-			"America/Anchorage|America/Sitka",
-			"America/Anchorage|America/Yakutat",
-			"America/Anchorage|US/Alaska",
-			"America/Campo_Grande|America/Cuiaba",
-			"America/Chicago|America/Indiana/Knox",
-			"America/Chicago|America/Indiana/Tell_City",
-			"America/Chicago|America/Knox_IN",
-			"America/Chicago|America/Matamoros",
-			"America/Chicago|America/Menominee",
-			"America/Chicago|America/North_Dakota/Beulah",
-			"America/Chicago|America/North_Dakota/Center",
-			"America/Chicago|America/North_Dakota/New_Salem",
-			"America/Chicago|America/Rainy_River",
-			"America/Chicago|America/Rankin_Inlet",
-			"America/Chicago|America/Resolute",
-			"America/Chicago|America/Winnipeg",
-			"America/Chicago|CST6CDT",
-			"America/Chicago|Canada/Central",
-			"America/Chicago|US/Central",
-			"America/Chicago|US/Indiana-Starke",
-			"America/Denver|America/Boise",
-			"America/Denver|America/Cambridge_Bay",
-			"America/Denver|America/Edmonton",
-			"America/Denver|America/Inuvik",
-			"America/Denver|America/Shiprock",
-			"America/Denver|America/Yellowknife",
-			"America/Denver|Canada/Mountain",
-			"America/Denver|MST7MDT",
-			"America/Denver|Navajo",
-			"America/Denver|US/Mountain",
-			"America/Fortaleza|America/Argentina/Buenos_Aires",
-			"America/Fortaleza|America/Argentina/Catamarca",
-			"America/Fortaleza|America/Argentina/ComodRivadavia",
-			"America/Fortaleza|America/Argentina/Cordoba",
-			"America/Fortaleza|America/Argentina/Jujuy",
-			"America/Fortaleza|America/Argentina/La_Rioja",
-			"America/Fortaleza|America/Argentina/Mendoza",
-			"America/Fortaleza|America/Argentina/Rio_Gallegos",
-			"America/Fortaleza|America/Argentina/Salta",
-			"America/Fortaleza|America/Argentina/San_Juan",
-			"America/Fortaleza|America/Argentina/San_Luis",
-			"America/Fortaleza|America/Argentina/Tucuman",
-			"America/Fortaleza|America/Argentina/Ushuaia",
-			"America/Fortaleza|America/Belem",
-			"America/Fortaleza|America/Buenos_Aires",
-			"America/Fortaleza|America/Catamarca",
-			"America/Fortaleza|America/Cayenne",
-			"America/Fortaleza|America/Cordoba",
-			"America/Fortaleza|America/Jujuy",
-			"America/Fortaleza|America/Maceio",
-			"America/Fortaleza|America/Mendoza",
-			"America/Fortaleza|America/Paramaribo",
-			"America/Fortaleza|America/Recife",
-			"America/Fortaleza|America/Rosario",
-			"America/Fortaleza|America/Santarem",
-			"America/Fortaleza|Antarctica/Rothera",
-			"America/Fortaleza|Atlantic/Stanley",
-			"America/Fortaleza|Etc/GMT+3",
-			"America/Godthab|America/Nuuk",
-			"America/Halifax|America/Glace_Bay",
-			"America/Halifax|America/Goose_Bay",
-			"America/Halifax|America/Moncton",
-			"America/Halifax|America/Thule",
-			"America/Halifax|Atlantic/Bermuda",
-			"America/Halifax|Canada/Atlantic",
-			"America/Havana|Cuba",
-			"America/La_Paz|America/Boa_Vista",
-			"America/La_Paz|America/Guyana",
-			"America/La_Paz|America/Manaus",
-			"America/La_Paz|America/Porto_Velho",
-			"America/La_Paz|Brazil/West",
-			"America/La_Paz|Etc/GMT+4",
-			"America/Lima|America/Bogota",
-			"America/Lima|America/Guayaquil",
-			"America/Lima|Etc/GMT+5",
-			"America/Los_Angeles|America/Ensenada",
-			"America/Los_Angeles|America/Santa_Isabel",
-			"America/Los_Angeles|America/Tijuana",
-			"America/Los_Angeles|America/Vancouver",
-			"America/Los_Angeles|Canada/Pacific",
-			"America/Los_Angeles|Mexico/BajaNorte",
-			"America/Los_Angeles|PST8PDT",
-			"America/Los_Angeles|US/Pacific",
-			"America/Managua|America/Belize",
-			"America/Managua|America/Costa_Rica",
-			"America/Managua|America/El_Salvador",
-			"America/Managua|America/Guatemala",
-			"America/Managua|America/Regina",
-			"America/Managua|America/Swift_Current",
-			"America/Managua|America/Tegucigalpa",
-			"America/Managua|Canada/Saskatchewan",
-			"America/Mazatlan|Mexico/BajaSur",
-			"America/Mexico_City|America/Bahia_Banderas",
-			"America/Mexico_City|America/Merida",
-			"America/Mexico_City|America/Monterrey",
-			"America/Mexico_City|Mexico/General",
-			"America/New_York|America/Detroit",
-			"America/New_York|America/Fort_Wayne",
-			"America/New_York|America/Indiana/Indianapolis",
-			"America/New_York|America/Indiana/Marengo",
-			"America/New_York|America/Indiana/Petersburg",
-			"America/New_York|America/Indiana/Vevay",
-			"America/New_York|America/Indiana/Vincennes",
-			"America/New_York|America/Indiana/Winamac",
-			"America/New_York|America/Indianapolis",
-			"America/New_York|America/Iqaluit",
-			"America/New_York|America/Kentucky/Louisville",
-			"America/New_York|America/Kentucky/Monticello",
-			"America/New_York|America/Louisville",
-			"America/New_York|America/Montreal",
-			"America/New_York|America/Nassau",
-			"America/New_York|America/Nipigon",
-			"America/New_York|America/Pangnirtung",
-			"America/New_York|America/Thunder_Bay",
-			"America/New_York|America/Toronto",
-			"America/New_York|Canada/Eastern",
-			"America/New_York|EST5EDT",
-			"America/New_York|US/East-Indiana",
-			"America/New_York|US/Eastern",
-			"America/New_York|US/Michigan",
-			"America/Noronha|Atlantic/South_Georgia",
-			"America/Noronha|Brazil/DeNoronha",
-			"America/Noronha|Etc/GMT+2",
-			"America/Panama|America/Atikokan",
-			"America/Panama|America/Cayman",
-			"America/Panama|America/Coral_Harbour",
-			"America/Panama|America/Jamaica",
-			"America/Panama|EST",
-			"America/Panama|Jamaica",
-			"America/Phoenix|America/Creston",
-			"America/Phoenix|America/Dawson_Creek",
-			"America/Phoenix|America/Hermosillo",
-			"America/Phoenix|MST",
-			"America/Phoenix|US/Arizona",
-			"America/Rio_Branco|America/Eirunepe",
-			"America/Rio_Branco|America/Porto_Acre",
-			"America/Rio_Branco|Brazil/Acre",
-			"America/Santiago|America/Coyhaique",
-			"America/Santiago|Chile/Continental",
-			"America/Santo_Domingo|America/Anguilla",
-			"America/Santo_Domingo|America/Antigua",
-			"America/Santo_Domingo|America/Aruba",
-			"America/Santo_Domingo|America/Barbados",
-			"America/Santo_Domingo|America/Blanc-Sablon",
-			"America/Santo_Domingo|America/Curacao",
-			"America/Santo_Domingo|America/Dominica",
-			"America/Santo_Domingo|America/Grenada",
-			"America/Santo_Domingo|America/Guadeloupe",
-			"America/Santo_Domingo|America/Kralendijk",
-			"America/Santo_Domingo|America/Lower_Princes",
-			"America/Santo_Domingo|America/Marigot",
-			"America/Santo_Domingo|America/Martinique",
-			"America/Santo_Domingo|America/Montserrat",
-			"America/Santo_Domingo|America/Port_of_Spain",
-			"America/Santo_Domingo|America/Puerto_Rico",
-			"America/Santo_Domingo|America/St_Barthelemy",
-			"America/Santo_Domingo|America/St_Kitts",
-			"America/Santo_Domingo|America/St_Lucia",
-			"America/Santo_Domingo|America/St_Thomas",
-			"America/Santo_Domingo|America/St_Vincent",
-			"America/Santo_Domingo|America/Tortola",
-			"America/Santo_Domingo|America/Virgin",
-			"America/Sao_Paulo|Brazil/East",
-			"America/St_Johns|Canada/Newfoundland",
-			"America/Whitehorse|America/Dawson",
-			"America/Whitehorse|Canada/Yukon",
-			"Antarctica/Palmer|America/Punta_Arenas",
-			"Asia/Baghdad|Antarctica/Syowa",
-			"Asia/Baghdad|Asia/Aden",
-			"Asia/Baghdad|Asia/Bahrain",
-			"Asia/Baghdad|Asia/Kuwait",
-			"Asia/Baghdad|Asia/Qatar",
-			"Asia/Baghdad|Asia/Riyadh",
-			"Asia/Baghdad|Etc/GMT-3",
-			"Asia/Baghdad|Europe/Minsk",
-			"Asia/Bangkok|Antarctica/Vostok",
-			"Asia/Bangkok|Asia/Ho_Chi_Minh",
-			"Asia/Bangkok|Asia/Novokuznetsk",
-			"Asia/Bangkok|Asia/Phnom_Penh",
-			"Asia/Bangkok|Asia/Saigon",
-			"Asia/Bangkok|Asia/Vientiane",
-			"Asia/Bangkok|Etc/GMT-7",
-			"Asia/Bangkok|Indian/Christmas",
-			"Asia/Dhaka|Asia/Almaty",
-			"Asia/Dhaka|Asia/Bishkek",
-			"Asia/Dhaka|Asia/Dacca",
-			"Asia/Dhaka|Asia/Kashgar",
-			"Asia/Dhaka|Asia/Qostanay",
-			"Asia/Dhaka|Asia/Thimbu",
-			"Asia/Dhaka|Asia/Thimphu",
-			"Asia/Dhaka|Asia/Urumqi",
-			"Asia/Dhaka|Etc/GMT-6",
-			"Asia/Dhaka|Indian/Chagos",
-			"Asia/Dili|Etc/GMT-9",
-			"Asia/Dili|Pacific/Palau",
-			"Asia/Dubai|Asia/Muscat",
-			"Asia/Dubai|Asia/Tbilisi",
-			"Asia/Dubai|Asia/Yerevan",
-			"Asia/Dubai|Etc/GMT-4",
-			"Asia/Dubai|Europe/Samara",
-			"Asia/Dubai|Indian/Mahe",
-			"Asia/Dubai|Indian/Mauritius",
-			"Asia/Dubai|Indian/Reunion",
-			"Asia/Gaza|Asia/Hebron",
-			"Asia/Hong_Kong|Hongkong",
-			"Asia/Jakarta|Asia/Pontianak",
-			"Asia/Jerusalem|Asia/Tel_Aviv",
-			"Asia/Jerusalem|Israel",
-			"Asia/Kamchatka|Asia/Anadyr",
-			"Asia/Kamchatka|Etc/GMT-12",
-			"Asia/Kamchatka|Kwajalein",
-			"Asia/Kamchatka|Pacific/Funafuti",
-			"Asia/Kamchatka|Pacific/Kwajalein",
-			"Asia/Kamchatka|Pacific/Majuro",
-			"Asia/Kamchatka|Pacific/Nauru",
-			"Asia/Kamchatka|Pacific/Tarawa",
-			"Asia/Kamchatka|Pacific/Wake",
-			"Asia/Kamchatka|Pacific/Wallis",
-			"Asia/Kathmandu|Asia/Katmandu",
-			"Asia/Kolkata|Asia/Calcutta",
-			"Asia/Kuala_Lumpur|Asia/Brunei",
-			"Asia/Kuala_Lumpur|Asia/Kuching",
-			"Asia/Kuala_Lumpur|Asia/Singapore",
-			"Asia/Kuala_Lumpur|Etc/GMT-8",
-			"Asia/Kuala_Lumpur|Singapore",
-			"Asia/Makassar|Asia/Ujung_Pandang",
-			"Asia/Rangoon|Asia/Yangon",
-			"Asia/Rangoon|Indian/Cocos",
-			"Asia/Seoul|ROK",
-			"Asia/Shanghai|Asia/Chongqing",
-			"Asia/Shanghai|Asia/Chungking",
-			"Asia/Shanghai|Asia/Harbin",
-			"Asia/Shanghai|Asia/Macao",
-			"Asia/Shanghai|Asia/Macau",
-			"Asia/Shanghai|Asia/Taipei",
-			"Asia/Shanghai|PRC",
-			"Asia/Shanghai|ROC",
-			"Asia/Tashkent|Antarctica/Mawson",
-			"Asia/Tashkent|Asia/Aqtau",
-			"Asia/Tashkent|Asia/Aqtobe",
-			"Asia/Tashkent|Asia/Ashgabat",
-			"Asia/Tashkent|Asia/Ashkhabad",
-			"Asia/Tashkent|Asia/Atyrau",
-			"Asia/Tashkent|Asia/Dushanbe",
-			"Asia/Tashkent|Asia/Oral",
-			"Asia/Tashkent|Asia/Samarkand",
-			"Asia/Tashkent|Etc/GMT-5",
-			"Asia/Tashkent|Indian/Kerguelen",
-			"Asia/Tashkent|Indian/Maldives",
-			"Asia/Tehran|Iran",
-			"Asia/Tokyo|Japan",
-			"Asia/Ulaanbaatar|Asia/Choibalsan",
-			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
-			"Asia/Vladivostok|Asia/Ust-Nera",
-			"Asia/Yakutsk|Asia/Khandyga",
-			"Atlantic/Azores|America/Scoresbysund",
-			"Atlantic/Cape_Verde|Etc/GMT+1",
-			"Australia/Adelaide|Australia/Broken_Hill",
-			"Australia/Adelaide|Australia/South",
-			"Australia/Adelaide|Australia/Yancowinna",
-			"Australia/Brisbane|Australia/Lindeman",
-			"Australia/Brisbane|Australia/Queensland",
-			"Australia/Darwin|Australia/North",
-			"Australia/Lord_Howe|Australia/LHI",
-			"Australia/Perth|Australia/West",
-			"Australia/Sydney|Antarctica/Macquarie",
-			"Australia/Sydney|Australia/ACT",
-			"Australia/Sydney|Australia/Canberra",
-			"Australia/Sydney|Australia/Currie",
-			"Australia/Sydney|Australia/Hobart",
-			"Australia/Sydney|Australia/Melbourne",
-			"Australia/Sydney|Australia/NSW",
-			"Australia/Sydney|Australia/Tasmania",
-			"Australia/Sydney|Australia/Victoria",
-			"Etc/UTC|Etc/UCT",
-			"Etc/UTC|Etc/Universal",
-			"Etc/UTC|Etc/Zulu",
-			"Etc/UTC|UCT",
-			"Etc/UTC|UTC",
-			"Etc/UTC|Universal",
-			"Etc/UTC|Zulu",
-			"Europe/Athens|Asia/Nicosia",
-			"Europe/Athens|EET",
-			"Europe/Athens|Europe/Bucharest",
-			"Europe/Athens|Europe/Helsinki",
-			"Europe/Athens|Europe/Kiev",
-			"Europe/Athens|Europe/Kyiv",
-			"Europe/Athens|Europe/Mariehamn",
-			"Europe/Athens|Europe/Nicosia",
-			"Europe/Athens|Europe/Riga",
-			"Europe/Athens|Europe/Sofia",
-			"Europe/Athens|Europe/Tallinn",
-			"Europe/Athens|Europe/Uzhgorod",
-			"Europe/Athens|Europe/Vilnius",
-			"Europe/Athens|Europe/Zaporozhye",
-			"Europe/Chisinau|Europe/Tiraspol",
-			"Europe/Dublin|Eire",
-			"Europe/Istanbul|Asia/Istanbul",
-			"Europe/Istanbul|Turkey",
-			"Europe/Lisbon|Atlantic/Canary",
-			"Europe/Lisbon|Atlantic/Faeroe",
-			"Europe/Lisbon|Atlantic/Faroe",
-			"Europe/Lisbon|Atlantic/Madeira",
-			"Europe/Lisbon|Portugal",
-			"Europe/Lisbon|WET",
-			"Europe/London|Europe/Belfast",
-			"Europe/London|Europe/Guernsey",
-			"Europe/London|Europe/Isle_of_Man",
-			"Europe/London|Europe/Jersey",
-			"Europe/London|GB",
-			"Europe/London|GB-Eire",
-			"Europe/Moscow|Europe/Kirov",
-			"Europe/Moscow|W-SU",
-			"Europe/Paris|Africa/Ceuta",
-			"Europe/Paris|Arctic/Longyearbyen",
-			"Europe/Paris|Atlantic/Jan_Mayen",
-			"Europe/Paris|CET",
-			"Europe/Paris|Europe/Amsterdam",
-			"Europe/Paris|Europe/Andorra",
-			"Europe/Paris|Europe/Belgrade",
-			"Europe/Paris|Europe/Berlin",
-			"Europe/Paris|Europe/Bratislava",
-			"Europe/Paris|Europe/Brussels",
-			"Europe/Paris|Europe/Budapest",
-			"Europe/Paris|Europe/Busingen",
-			"Europe/Paris|Europe/Copenhagen",
-			"Europe/Paris|Europe/Gibraltar",
-			"Europe/Paris|Europe/Ljubljana",
-			"Europe/Paris|Europe/Luxembourg",
-			"Europe/Paris|Europe/Madrid",
-			"Europe/Paris|Europe/Malta",
-			"Europe/Paris|Europe/Monaco",
-			"Europe/Paris|Europe/Oslo",
-			"Europe/Paris|Europe/Podgorica",
-			"Europe/Paris|Europe/Prague",
-			"Europe/Paris|Europe/Rome",
-			"Europe/Paris|Europe/San_Marino",
-			"Europe/Paris|Europe/Sarajevo",
-			"Europe/Paris|Europe/Skopje",
-			"Europe/Paris|Europe/Stockholm",
-			"Europe/Paris|Europe/Tirane",
-			"Europe/Paris|Europe/Vaduz",
-			"Europe/Paris|Europe/Vatican",
-			"Europe/Paris|Europe/Vienna",
-			"Europe/Paris|Europe/Warsaw",
-			"Europe/Paris|Europe/Zagreb",
-			"Europe/Paris|Europe/Zurich",
-			"Europe/Paris|MET",
-			"Europe/Paris|Poland",
-			"Europe/Ulyanovsk|Europe/Astrakhan",
-			"Pacific/Auckland|Antarctica/McMurdo",
-			"Pacific/Auckland|Antarctica/South_Pole",
-			"Pacific/Auckland|NZ",
-			"Pacific/Chatham|NZ-CHAT",
-			"Pacific/Easter|Chile/EasterIsland",
-			"Pacific/Fakaofo|Etc/GMT-13",
-			"Pacific/Fakaofo|Pacific/Enderbury",
-			"Pacific/Fakaofo|Pacific/Kanton",
-			"Pacific/Galapagos|Etc/GMT+6",
-			"Pacific/Gambier|Etc/GMT+9",
-			"Pacific/Guadalcanal|Etc/GMT-11",
-			"Pacific/Guadalcanal|Pacific/Efate",
-			"Pacific/Guadalcanal|Pacific/Kosrae",
-			"Pacific/Guadalcanal|Pacific/Noumea",
-			"Pacific/Guadalcanal|Pacific/Pohnpei",
-			"Pacific/Guadalcanal|Pacific/Ponape",
-			"Pacific/Guam|Pacific/Saipan",
-			"Pacific/Honolulu|HST",
-			"Pacific/Honolulu|Pacific/Johnston",
-			"Pacific/Honolulu|US/Hawaii",
-			"Pacific/Kiritimati|Etc/GMT-14",
-			"Pacific/Niue|Etc/GMT+11",
-			"Pacific/Pago_Pago|Pacific/Midway",
-			"Pacific/Pago_Pago|Pacific/Samoa",
-			"Pacific/Pago_Pago|US/Samoa",
-			"Pacific/Pitcairn|Etc/GMT+8",
-			"Pacific/Port_Moresby|Antarctica/DumontDUrville",
-			"Pacific/Port_Moresby|Etc/GMT-10",
-			"Pacific/Port_Moresby|Pacific/Chuuk",
-			"Pacific/Port_Moresby|Pacific/Truk",
-			"Pacific/Port_Moresby|Pacific/Yap",
-			"Pacific/Tahiti|Etc/GMT+10",
-			"Pacific/Tahiti|Pacific/Rarotonga"
-		],
-		"countries": [
-			"AD|Europe/Andorra",
-			"AE|Asia/Dubai",
-			"AF|Asia/Kabul",
-			"AG|America/Puerto_Rico America/Antigua",
-			"AI|America/Puerto_Rico America/Anguilla",
-			"AL|Europe/Tirane",
-			"AM|Asia/Yerevan",
-			"AO|Africa/Lagos Africa/Luanda",
-			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa",
-			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
-			"AS|Pacific/Pago_Pago",
-			"AT|Europe/Vienna",
-			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo",
-			"AW|America/Puerto_Rico America/Aruba",
-			"AX|Europe/Helsinki Europe/Mariehamn",
-			"AZ|Asia/Baku",
-			"BA|Europe/Belgrade Europe/Sarajevo",
-			"BB|America/Barbados",
-			"BD|Asia/Dhaka",
-			"BE|Europe/Brussels",
-			"BF|Africa/Abidjan Africa/Ouagadougou",
-			"BG|Europe/Sofia",
-			"BH|Asia/Qatar Asia/Bahrain",
-			"BI|Africa/Maputo Africa/Bujumbura",
-			"BJ|Africa/Lagos Africa/Porto-Novo",
-			"BL|America/Puerto_Rico America/St_Barthelemy",
-			"BM|Atlantic/Bermuda",
-			"BN|Asia/Kuching Asia/Brunei",
-			"BO|America/La_Paz",
-			"BQ|America/Puerto_Rico America/Kralendijk",
-			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
-			"BS|America/Toronto America/Nassau",
-			"BT|Asia/Thimphu",
-			"BW|Africa/Maputo Africa/Gaborone",
-			"BY|Europe/Minsk",
-			"BZ|America/Belize",
-			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
-			"CC|Asia/Yangon Indian/Cocos",
-			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
-			"CF|Africa/Lagos Africa/Bangui",
-			"CG|Africa/Lagos Africa/Brazzaville",
-			"CH|Europe/Zurich",
-			"CI|Africa/Abidjan",
-			"CK|Pacific/Rarotonga",
-			"CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter",
-			"CM|Africa/Lagos Africa/Douala",
-			"CN|Asia/Shanghai Asia/Urumqi",
-			"CO|America/Bogota",
-			"CR|America/Costa_Rica",
-			"CU|America/Havana",
-			"CV|Atlantic/Cape_Verde",
-			"CW|America/Puerto_Rico America/Curacao",
-			"CX|Asia/Bangkok Indian/Christmas",
-			"CY|Asia/Nicosia Asia/Famagusta",
-			"CZ|Europe/Prague",
-			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
-			"DJ|Africa/Nairobi Africa/Djibouti",
-			"DK|Europe/Berlin Europe/Copenhagen",
-			"DM|America/Puerto_Rico America/Dominica",
-			"DO|America/Santo_Domingo",
-			"DZ|Africa/Algiers",
-			"EC|America/Guayaquil Pacific/Galapagos",
-			"EE|Europe/Tallinn",
-			"EG|Africa/Cairo",
-			"EH|Africa/El_Aaiun",
-			"ER|Africa/Nairobi Africa/Asmara",
-			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
-			"ET|Africa/Nairobi Africa/Addis_Ababa",
-			"FI|Europe/Helsinki",
-			"FJ|Pacific/Fiji",
-			"FK|Atlantic/Stanley",
-			"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
-			"FO|Atlantic/Faroe",
-			"FR|Europe/Paris",
-			"GA|Africa/Lagos Africa/Libreville",
-			"GB|Europe/London",
-			"GD|America/Puerto_Rico America/Grenada",
-			"GE|Asia/Tbilisi",
-			"GF|America/Cayenne",
-			"GG|Europe/London Europe/Guernsey",
-			"GH|Africa/Abidjan Africa/Accra",
-			"GI|Europe/Gibraltar",
-			"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
-			"GM|Africa/Abidjan Africa/Banjul",
-			"GN|Africa/Abidjan Africa/Conakry",
-			"GP|America/Puerto_Rico America/Guadeloupe",
-			"GQ|Africa/Lagos Africa/Malabo",
-			"GR|Europe/Athens",
-			"GS|Atlantic/South_Georgia",
-			"GT|America/Guatemala",
-			"GU|Pacific/Guam",
-			"GW|Africa/Bissau",
-			"GY|America/Guyana",
-			"HK|Asia/Hong_Kong",
-			"HN|America/Tegucigalpa",
-			"HR|Europe/Belgrade Europe/Zagreb",
-			"HT|America/Port-au-Prince",
-			"HU|Europe/Budapest",
-			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
-			"IE|Europe/Dublin",
-			"IL|Asia/Jerusalem",
-			"IM|Europe/London Europe/Isle_of_Man",
-			"IN|Asia/Kolkata",
-			"IO|Indian/Chagos",
-			"IQ|Asia/Baghdad",
-			"IR|Asia/Tehran",
-			"IS|Africa/Abidjan Atlantic/Reykjavik",
-			"IT|Europe/Rome",
-			"JE|Europe/London Europe/Jersey",
-			"JM|America/Jamaica",
-			"JO|Asia/Amman",
-			"JP|Asia/Tokyo",
-			"KE|Africa/Nairobi",
-			"KG|Asia/Bishkek",
-			"KH|Asia/Bangkok Asia/Phnom_Penh",
-			"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
-			"KM|Africa/Nairobi Indian/Comoro",
-			"KN|America/Puerto_Rico America/St_Kitts",
-			"KP|Asia/Pyongyang",
-			"KR|Asia/Seoul",
-			"KW|Asia/Riyadh Asia/Kuwait",
-			"KY|America/Panama America/Cayman",
-			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
-			"LA|Asia/Bangkok Asia/Vientiane",
-			"LB|Asia/Beirut",
-			"LC|America/Puerto_Rico America/St_Lucia",
-			"LI|Europe/Zurich Europe/Vaduz",
-			"LK|Asia/Colombo",
-			"LR|Africa/Monrovia",
-			"LS|Africa/Johannesburg Africa/Maseru",
-			"LT|Europe/Vilnius",
-			"LU|Europe/Brussels Europe/Luxembourg",
-			"LV|Europe/Riga",
-			"LY|Africa/Tripoli",
-			"MA|Africa/Casablanca",
-			"MC|Europe/Paris Europe/Monaco",
-			"MD|Europe/Chisinau",
-			"ME|Europe/Belgrade Europe/Podgorica",
-			"MF|America/Puerto_Rico America/Marigot",
-			"MG|Africa/Nairobi Indian/Antananarivo",
-			"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
-			"MK|Europe/Belgrade Europe/Skopje",
-			"ML|Africa/Abidjan Africa/Bamako",
-			"MM|Asia/Yangon",
-			"MN|Asia/Ulaanbaatar Asia/Hovd",
-			"MO|Asia/Macau",
-			"MP|Pacific/Guam Pacific/Saipan",
-			"MQ|America/Martinique",
-			"MR|Africa/Abidjan Africa/Nouakchott",
-			"MS|America/Puerto_Rico America/Montserrat",
-			"MT|Europe/Malta",
-			"MU|Indian/Mauritius",
-			"MV|Indian/Maldives",
-			"MW|Africa/Maputo Africa/Blantyre",
-			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana",
-			"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
-			"MZ|Africa/Maputo",
-			"NA|Africa/Windhoek",
-			"NC|Pacific/Noumea",
-			"NE|Africa/Lagos Africa/Niamey",
-			"NF|Pacific/Norfolk",
-			"NG|Africa/Lagos",
-			"NI|America/Managua",
-			"NL|Europe/Brussels Europe/Amsterdam",
-			"NO|Europe/Berlin Europe/Oslo",
-			"NP|Asia/Kathmandu",
-			"NR|Pacific/Nauru",
-			"NU|Pacific/Niue",
-			"NZ|Pacific/Auckland Pacific/Chatham",
-			"OM|Asia/Dubai Asia/Muscat",
-			"PA|America/Panama",
-			"PE|America/Lima",
-			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
-			"PG|Pacific/Port_Moresby Pacific/Bougainville",
-			"PH|Asia/Manila",
-			"PK|Asia/Karachi",
-			"PL|Europe/Warsaw",
-			"PM|America/Miquelon",
-			"PN|Pacific/Pitcairn",
-			"PR|America/Puerto_Rico",
-			"PS|Asia/Gaza Asia/Hebron",
-			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
-			"PW|Pacific/Palau",
-			"PY|America/Asuncion",
-			"QA|Asia/Qatar",
-			"RE|Asia/Dubai Indian/Reunion",
-			"RO|Europe/Bucharest",
-			"RS|Europe/Belgrade",
-			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
-			"RW|Africa/Maputo Africa/Kigali",
-			"SA|Asia/Riyadh",
-			"SB|Pacific/Guadalcanal",
-			"SC|Asia/Dubai Indian/Mahe",
-			"SD|Africa/Khartoum",
-			"SE|Europe/Berlin Europe/Stockholm",
-			"SG|Asia/Singapore",
-			"SH|Africa/Abidjan Atlantic/St_Helena",
-			"SI|Europe/Belgrade Europe/Ljubljana",
-			"SJ|Europe/Berlin Arctic/Longyearbyen",
-			"SK|Europe/Prague Europe/Bratislava",
-			"SL|Africa/Abidjan Africa/Freetown",
-			"SM|Europe/Rome Europe/San_Marino",
-			"SN|Africa/Abidjan Africa/Dakar",
-			"SO|Africa/Nairobi Africa/Mogadishu",
-			"SR|America/Paramaribo",
-			"SS|Africa/Juba",
-			"ST|Africa/Sao_Tome",
-			"SV|America/El_Salvador",
-			"SX|America/Puerto_Rico America/Lower_Princes",
-			"SY|Asia/Damascus",
-			"SZ|Africa/Johannesburg Africa/Mbabane",
-			"TC|America/Grand_Turk",
-			"TD|Africa/Ndjamena",
-			"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
-			"TG|Africa/Abidjan Africa/Lome",
-			"TH|Asia/Bangkok",
-			"TJ|Asia/Dushanbe",
-			"TK|Pacific/Fakaofo",
-			"TL|Asia/Dili",
-			"TM|Asia/Ashgabat",
-			"TN|Africa/Tunis",
-			"TO|Pacific/Tongatapu",
-			"TR|Europe/Istanbul",
-			"TT|America/Puerto_Rico America/Port_of_Spain",
-			"TV|Pacific/Tarawa Pacific/Funafuti",
-			"TW|Asia/Taipei",
-			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
-			"UA|Europe/Simferopol Europe/Kyiv",
-			"UG|Africa/Nairobi Africa/Kampala",
-			"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake",
-			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
-			"UY|America/Montevideo",
-			"UZ|Asia/Samarkand Asia/Tashkent",
-			"VA|Europe/Rome Europe/Vatican",
-			"VC|America/Puerto_Rico America/St_Vincent",
-			"VE|America/Caracas",
-			"VG|America/Puerto_Rico America/Tortola",
-			"VI|America/Puerto_Rico America/St_Thomas",
-			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
-			"VU|Pacific/Efate",
-			"WF|Pacific/Tarawa Pacific/Wallis",
-			"WS|Pacific/Apia",
-			"YE|Asia/Riyadh Asia/Aden",
-			"YT|Africa/Nairobi Indian/Mayotte",
-			"ZA|Africa/Johannesburg",
-			"ZM|Africa/Maputo Africa/Lusaka",
-			"ZW|Africa/Maputo Africa/Harare"
-		]
-	});
-
-	function staleDataWarning() {
-		if (moment.suppressDeprecationWarnings === false &&
-				(typeof console !==  'undefined') && console.warn) {
-			console.warn(
-				'Deprecation warning: ' +
-				'Moment Timezone has been loaded from a file containing data from 2012 to 2022 only. ' +
-				'This file is out of date and may be removed in a future release. ' +
-				'Dates and times for the current year might be incorrect.'
-			);
-		}
-	}
-	staleDataWarning();
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.min.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(a,i){"use strict";"object"==typeof module&&module.exports?module.exports=i(require("moment")):"function"==typeof define&&define.amd?define(["moment"],i):i(a.moment)}(this,function(o){"use strict";void 0===o.version&&o.default&&(o=o.default);var i,s={},c={},A={},u={},m={},a=(o&&"string"==typeof o.version||N("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"),o.version.split(".")),e=+a[0],r=+a[1];function n(a){return 96<a?a-87:64<a?a-29:a-48}function t(a){var i=0,e=a.split("."),r=e[0],o=e[1]||"",c=1,A=0,e=1;for(45===a.charCodeAt(0)&&(e=-(i=1));i<r.length;i++)A=60*A+n(r.charCodeAt(i));for(i=0;i<o.length;i++)c/=60,A+=n(o.charCodeAt(i))*c;return A*e}function l(a){for(var i=0;i<a.length;i++)a[i]=t(a[i])}function f(a,i){for(var e=[],r=0;r<i.length;r++)e[r]=a[i[r]];return e}function p(a){for(var a=a.split("|"),i=a[2].split(" "),e=a[3].split(""),r=a[4].split(" "),o=(l(i),l(e),l(r),r),c=e.length,A=0;A<c;A++)o[A]=Math.round((o[A-1]||0)+6e4*o[A]);return o[c-1]=1/0,{name:a[0],abbrs:f(a[1].split(" "),e),offsets:f(i,e),untils:r,population:0|a[5]}}function b(a){a&&this._set(p(a))}function d(a,i){this.name=a,this.zones=i}function M(a){var i=a.toTimeString(),e=i.match(/\([a-z ]+\)/i);"GMT"===(e=e&&e[0]?(e=e[0].match(/[A-Z]/g))?e.join(""):void 0:(e=i.match(/[A-Z]{3,5}/g))?e[0]:void 0)&&(e=void 0),this.at=+a,this.abbr=e,this.offset=a.getTimezoneOffset()}function h(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function E(){for(var a,i,e,r=(new Date).getFullYear()-2,o=new M(new Date(r,0,1)),c=o.offset,A=[o],n=1;n<48;n++)(e=new Date(r,n,1).getTimezoneOffset())!==c&&(a=function(a,i){for(var e;e=6e4*((i.at-a.at)/12e4|0);)(e=new M(new Date(a.at+e))).offset===a.offset?a=e:i=e;return a}(o,i=new M(new Date(r,n,1))),A.push(a),A.push(new M(new Date(a.at+6e4))),o=i,c=e);for(n=0;n<4;n++)A.push(new M(new Date(r+n,0,1))),A.push(new M(new Date(r+n,6,1)));return A}function g(a,i){return a.offsetScore!==i.offsetScore?a.offsetScore-i.offsetScore:a.abbrScore!==i.abbrScore?a.abbrScore-i.abbrScore:a.zone.population!==i.zone.population?i.zone.population-a.zone.population:i.zone.name.localeCompare(a.zone.name)}function z(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a&&3<a.length){var i=u[P(a)];if(i)return i;N("Moment Timezone found "+a+" from the Intl api, but did not have that data loaded.")}}catch(a){}for(var e,r,o=E(),c=o.length,A=function(a){for(var i,e,r,o=a.length,c={},A=[],n={},t=0;t<o;t++)if(e=a[t].offset,!n.hasOwnProperty(e)){for(i in r=m[e]||{})r.hasOwnProperty(i)&&(c[i]=!0);n[e]=!0}for(t in c)c.hasOwnProperty(t)&&A.push(u[t]);return A}(o),n=[],t=0;t<A.length;t++){for(e=new h(S(A[t])),r=0;r<c;r++)e.scoreOffsetAt(o[r]);n.push(e)}return n.sort(g),0<n.length?n[0].zone.name:void 0}function P(a){return(a||"").toLowerCase().replace(/\//g,"_")}function T(a){var i,e,r,o;for("string"==typeof a&&(a=[a]),i=0;i<a.length;i++){o=P(e=(r=a[i].split("|"))[0]),s[o]=a[i],u[o]=e,A=c=t=n=void 0;var c,A,n=o,t=r[2].split(" ");for(l(t),c=0;c<t.length;c++)A=t[c],m[A]=m[A]||{},m[A][n]=!0}}function S(a,i){a=P(a);var e=s[a];return e instanceof b?e:"string"==typeof e?(e=new b(e),s[a]=e):c[a]&&i!==S&&(i=S(c[a],S))?((e=s[a]=new b)._set(i),e.name=u[a],e):null}function _(a){var i,e,r,o;for("string"==typeof a&&(a=[a]),i=0;i<a.length;i++)r=P((e=a[i].split("|"))[0]),o=P(e[1]),c[r]=o,u[r]=e[0],c[o]=r,u[o]=e[1]}function k(a){T(a.zones),_(a.links);var i,e,r,o=a.countries;if(o&&o.length)for(i=0;i<o.length;i++)e=(r=o[i].split("|"))[0].toUpperCase(),r=r[1].split(" "),A[e]=new d(e,r);O.dataVersion=a.version}function C(a){return C.didShowError||(C.didShowError=!0,N("moment.tz.zoneExists('"+a+"') has been deprecated in favor of !moment.tz.zone('"+a+"')")),!!S(a)}function B(a){var i="X"===a._f||"x"===a._f;return!(!a._a||void 0!==a._tzm||i)}function N(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}function O(a){var i=Array.prototype.slice.call(arguments,0,-1),e=arguments[arguments.length-1],i=o.utc.apply(null,i);return!o.isMoment(a)&&B(i)&&(a=S(e))&&i.add(a.parse(i),"minutes"),i.tz(e),i}(e<2||2==e&&r<6)&&N("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+o.version+". See momentjs.com"),b.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){a=function(a,i){var e,r=i.length;if(a<i[0])return 0;if(1<r&&i[r-1]===1/0&&a>=i[r-2])return r-1;if(a>=i[r-1])return-1;for(var o=0,c=r-1;1<c-o;)i[e=Math.floor((o+c)/2)]<=a?o=e:c=e;return c}(+a,this.untils);if(0<=a)return a},countries:function(){var i=this.name;return Object.keys(A).filter(function(a){return-1!==A[a].zones.indexOf(i)})},parse:function(a){for(var i,e,r,o=+a,c=this.offsets,A=this.untils,n=A.length-1,t=0;t<n;t++)if(i=c[t],e=c[t+1],r=c[t&&t-1],i<e&&O.moveAmbiguousForward?i=e:r<i&&O.moveInvalidForward&&(i=r),o<A[t]-6e4*i)return c[t];return c[n]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return N("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(a)]},utcOffset:function(a){return this.offsets[this._index(a)]}},h.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.utcOffset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,"")!==a.abbr&&this.abbrScore++},O.version="0.5.48",O.dataVersion="",O._zones=s,O._links=c,O._names=u,O._countries=A,O.add=T,O.link=_,O.load=k,O.zone=S,O.zoneExists=C,O.guess=function(a){return i=i&&!a?i:z()},O.names=function(){var a,i=[];for(a in u)u.hasOwnProperty(a)&&(s[a]||s[c[a]])&&u[a]&&i.push(u[a]);return i.sort()},O.Zone=b,O.unpack=p,O.unpackBase60=t,O.needsOffset=B,O.moveInvalidForward=!0,O.moveAmbiguousForward=!1,O.countries=function(){return Object.keys(A)},O.zonesForCountry=function(a,i){var e;return e=(e=a).toUpperCase(),(a=A[e]||null)?(e=a.zones.sort(),i?e.map(function(a){return{name:a,offset:S(a).utcOffset(new Date)}}):e):null};var y,a=o.fn;function G(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function D(a){return function(){return this._z=null,a.apply(this,arguments)}}o.tz=O,o.defaultZone=null,o.updateOffset=function(a,i){var e,r=o.defaultZone;void 0===a._z&&(r&&B(a)&&!a._isUTC&&a.isValid()&&(a._d=o.utc(a._a)._d,a.utc().add(r.parse(a),"minutes")),a._z=r),a._z&&(r=a._z.utcOffset(a),Math.abs(r)<16&&(r/=60),void 0!==a.utcOffset?(e=a._z,a.utcOffset(-r,i),a._z=e):a.zone(r,i))},a.tz=function(a,i){if(a){if("string"!=typeof a)throw new Error("Time zone name must be a string, got "+a+" ["+typeof a+"]");return this._z=S(a),this._z?o.updateOffset(this,i):N("Moment Timezone has no data for "+a+". See http://momentjs.com/timezone/docs/#/data-loading/."),this}if(this._z)return this._z.name},a.zoneName=G(a.zoneName),a.zoneAbbr=G(a.zoneAbbr),a.utc=D(a.utc),a.local=D(a.local),a.utcOffset=(y=a.utcOffset,function(){return 0<arguments.length&&(this._z=null),y.apply(this,arguments)}),o.tz.setDefault=function(a){return(e<2||2==e&&r<9)&&N("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+o.version+"."),o.defaultZone=a?S(a):null,o};a=o.momentProperties;return"[object Array]"===Object.prototype.toString.call(a)?(a.push("_z"),a.push("_a")):a&&(a._z=null),k({version:"2025b",zones:["Africa/Abidjan|GMT|0|0||48e5","Africa/Nairobi|EAT|-30|0||47e5","Africa/Algiers|CET|-10|0||26e5","Africa/Lagos|WAT|-10|0||17e6","Africa/Maputo|CAT|-20|0||26e5","Africa/Cairo|EET EEST|-20 -30|01010|1M2m0 gL0 e10 mn0|15e6","Africa/Casablanca|+00 +01|0 -10|010101010101010101010101010101010101|1H3C0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0|32e5","Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6","Africa/Johannesburg|SAST|-20|0||84e5","Africa/Juba|EAT CAT|-30 -20|01|24nx0|","Africa/Khartoum|EAT CAT|-30 -20|01|1Usl0|51e5","Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|","Africa/Tripoli|EET CET CEST|-20 -10 -20|0120|1IlA0 TA0 1o00|11e5","Africa/Windhoek|CAT WAT|-20 -10|0101010101010|1GQo0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|HST HDT|a0 90|01010101010101010101010|1GIc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326","America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1GIb0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4","America/Santo_Domingo|AST|40|0||29e5","America/Araguaina|-03 -02|30 20|010|1IdD0 Lz0|14e4","America/Fortaleza|-03|30|0||34e5","America/Asuncion|-03 -04|30 40|01010101010101010101010|1GTf0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5","America/Panama|EST|50|0||15e5","America/Mexico_City|CST CDT|60 50|01010101010101010101010|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6","America/Bahia|-02 -03|20 30|01|1GCq0|27e5","America/Managua|CST|60|0||22e5","America/La_Paz|-04|40|0||19e5","America/Lima|-05|50|0||11e6","America/Denver|MST MDT|70 60|01010101010101010101010|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5","America/Campo_Grande|-03 -04|30 40|0101010101010101|1GCr0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|CST CDT EST|60 50 50|01010102|1GQw0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|-0430 -04|4u 40|01|1QMT0|29e5","America/Chicago|CST CDT|60 50|01010101010101010101010|1GI80 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5","America/Chihuahua|MST MDT CST|70 60 60|01010101010101010101012|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4","America/Ciudad_Juarez|MST MDT CST|70 60 60|010101010101010101010120|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0|","America/Santiago|-03 -04|30 40|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|62e5","America/Phoenix|MST|70|0||42e5","America/Whitehorse|PST PDT MST|80 70 70|0101010101010101012|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3","America/New_York|EST EDT|50 40|01010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6","America/Rio_Branco|-04 -05|40 50|01|1KLE0|31e4","America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6","America/Fort_Nelson|PST PDT MST|80 70 70|01010102|1GIa0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Halifax|AST ADT|40 30|01010101010101010101010|1GI60 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4","America/Godthab|-03 -02|30 20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3","America/Grand_Turk|EST EDT AST|50 40 40|010101021010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2","America/Havana|CST CDT|50 40|01010101010101010101010|1GQt0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5","America/Mazatlan|MST MDT|70 60|01010101010101010101010|1GQx0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4","America/Metlakatla|PST AKST AKDT|80 90 80|01212120121212121|1PAa0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2","America/Miquelon|-03 -02|30 20|01010101010101010101010|1GI50 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2","America/Montevideo|-02 -03|20 30|01010101|1GI40 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Noronha|-02|20|0||30e2","America/Ojinaga|MST MDT CST|70 60 60|01010101010101010101012|1GI90 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0|23e3","America/Port-au-Prince|EST EDT|50 40|010101010101010101010|1GI70 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e5","Antarctica/Palmer|-03 -04|30 40|010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","America/Sao_Paulo|-02 -03|20 30|0101010101010101|1GCq0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4","America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1GI5u 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4","Antarctica/Casey|+11 +08|-b0 -80|0101010101010|1GAF0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1|10","Antarctica/Davis|+05 +07|-50 -70|01|1GAI0|70","Pacific/Port_Moresby|+10|-a0|0||25e4","Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1GQg0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5","Asia/Tashkent|+05|-50|0||23e5","Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5","Asia/Baghdad|+03|-30|0||66e5","Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40","Asia/Bangkok|+07|-70|0||15e6","Asia/Dhaka|+06|-60|0||16e6","Asia/Amman|EET EEST +03|-20 -30 -30|010101010101010101012|1GPy0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5","Asia/Kamchatka|+12|-c0|0||18e4","Asia/Baku|+04 +05|-40 -50|010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Barnaul|+07 +06|-70 -60|010|1N7v0 3rd0|","Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1GNy0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5","Asia/Kuala_Lumpur|+08|-80|0||71e5","Asia/Kolkata|IST|-5u|0||15e6","Asia/Chita|+10 +08 +09|-a0 -80 -90|012|1N7s0 3re0|33e4","Asia/Ulaanbaatar|+08 +09|-80 -90|01010|1O8G0 1cJ0 1cP0 1cJ0|12e5","Asia/Shanghai|CST|-80|0||23e6","Asia/Colombo|+0530|-5u|0||22e5","Asia/Damascus|EET EEST +03|-20 -30 -30|01010101010101010101012|1GPy0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5","Asia/Dili|+09|-90|0||19e4","Asia/Dubai|+04|-40|0||39e5","Asia/Famagusta|EET EEST +03|-20 -30 -30|0101010101201010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|","Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1GPy0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0|18e5","Asia/Hong_Kong|HKT|-80|0||73e5","Asia/Hovd|+07 +08|-70 -80|01010|1O8H0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|+09 +08|-90 -80|01|1N7t0|60e4","Europe/Istanbul|EET EEST +03|-20 -30 -30|01010101012|1GNB0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|WIB|-70|0||31e6","Asia/Jayapura|WIT|-90|0||26e4","Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1GPA0 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4","Asia/Kabul|+0430|-4u|0||46e5","Asia/Karachi|PKT|-50|0||24e6","Asia/Kathmandu|+0545|-5J|0||12e5","Asia/Yakutsk|+10 +09|-a0 -90|01|1N7s0|28e4","Asia/Krasnoyarsk|+08 +07|-80 -70|01|1N7u0|10e5","Asia/Magadan|+12 +10 +11|-c0 -a0 -b0|012|1N7q0 3Cq0|95e3","Asia/Makassar|WITA|-80|0||15e5","Asia/Manila|PST|-80|0||24e6","Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5","Asia/Novosibirsk|+07 +06|-70 -60|010|1N7v0 4eN0|15e5","Asia/Omsk|+07 +06|-70 -60|01|1N7v0|12e5","Asia/Pyongyang|KST KST|-90 -8u|010|1P4D0 6BA0|29e5","Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4","Asia/Rangoon|+0630|-6u|0||48e5","Asia/Sakhalin|+11 +10|-b0 -a0|010|1N7r0 3rd0|58e4","Asia/Seoul|KST|-90|0||23e6","Asia/Srednekolymsk|+12 +11|-c0 -b0|01|1N7q0|35e2","Asia/Tehran|+0330 +0430|-3u -4u|01010101010101010101010|1GLUu 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6","Asia/Tokyo|JST|-90|0||38e6","Asia/Tomsk|+07 +06|-70 -60|010|1N7v0 3Qp0|10e5","Asia/Vladivostok|+11 +10|-b0 -a0|01|1N7r0|60e4","Asia/Yekaterinburg|+06 +05|-60 -50|01|1N7w0|14e5","Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5","Atlantic/Cape_Verde|-01|10|0||50e4","Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1GQgu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST|-a0|0||20e5","Australia/Darwin|ACST|-9u|0||12e4","Australia/Eucla|+0845|-8J|0||368","Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1GQf0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347","Australia/Perth|AWST|-80|0||18e5","Pacific/Easter|-05 -06|50 60|010101010101010101010|1H3D0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0|30e2","Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5","Etc/GMT-1|+01|-10|0||","Pacific/Guadalcanal|+11|-b0|0||11e4","Pacific/Fakaofo|+13|-d0|0||483","Pacific/Kiritimati|+14|-e0|0||51e2","Etc/GMT-2|+02|-20|0||","Pacific/Tahiti|-10|a0|0||18e4","Pacific/Niue|-11|b0|0||12e2","Etc/GMT+12|-12|c0|0||","Pacific/Galapagos|-06|60|0||25e3","Etc/GMT+7|-07|70|0||","Pacific/Pitcairn|-08|80|0||56","Pacific/Gambier|-09|90|0||125","Etc/UTC|UTC|0|0||","Europe/Ulyanovsk|+04 +03|-40 -30|010|1N7y0 3rd0|13e5","Europe/London|GMT BST|0 -10|01010101010101010101010|1GNB0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6","Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1GNA0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4","Europe/Kaliningrad|+03 EET|-30 -20|01|1N7z0|44e4","Europe/Moscow|MSK MSK|-40 -30|01|1N7y0|16e6","Europe/Saratov|+04 +03|-40 -30|010|1N7y0 5810|","Europe/Simferopol|EET EEST MSK MSK|-20 -30 -40 -30|0101023|1GNB0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Volgograd|MSK MSK +04|-40 -30 -40|0121|1N7y0 9Jd0 5gn0|10e5","Pacific/Honolulu|HST|a0|0||37e4","Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|+14 +13|-e0 -d0|01010101010101010101|1GQe0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3","Pacific/Bougainville|+10 +11|-a0 -b0|01|1NwE0|18e4","Pacific/Fiji|+13 +12|-d0 -c0|01010101010101010101|1Goe0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4","Pacific/Guam|ChST|-a0|0||17e4","Pacific/Marquesas|-0930|9u|0||86e2","Pacific/Pago_Pago|SST|b0|0||37e2","Pacific/Norfolk|+1130 +11 +12|-bu -b0 -c0|012121212|1PoCu 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4","Pacific/Tongatapu|+13 +14|-d0 -e0|010|1S4d0 s00|75e3"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Bissau","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Monrovia","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|America/Danmarkshavn","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Etc/GMT","Africa/Abidjan|Etc/GMT+0","Africa/Abidjan|Etc/GMT-0","Africa/Abidjan|Etc/GMT0","Africa/Abidjan|Etc/Greenwich","Africa/Abidjan|GMT","Africa/Abidjan|GMT+0","Africa/Abidjan|GMT-0","Africa/Abidjan|GMT0","Africa/Abidjan|Greenwich","Africa/Abidjan|Iceland","Africa/Algiers|Africa/Tunis","Africa/Cairo|Egypt","Africa/Casablanca|Africa/El_Aaiun","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Ndjamena","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|America/Juneau","America/Anchorage|America/Nome","America/Anchorage|America/Sitka","America/Anchorage|America/Yakutat","America/Anchorage|US/Alaska","America/Campo_Grande|America/Cuiaba","America/Chicago|America/Indiana/Knox","America/Chicago|America/Indiana/Tell_City","America/Chicago|America/Knox_IN","America/Chicago|America/Matamoros","America/Chicago|America/Menominee","America/Chicago|America/North_Dakota/Beulah","America/Chicago|America/North_Dakota/Center","America/Chicago|America/North_Dakota/New_Salem","America/Chicago|America/Rainy_River","America/Chicago|America/Rankin_Inlet","America/Chicago|America/Resolute","America/Chicago|America/Winnipeg","America/Chicago|CST6CDT","America/Chicago|Canada/Central","America/Chicago|US/Central","America/Chicago|US/Indiana-Starke","America/Denver|America/Boise","America/Denver|America/Cambridge_Bay","America/Denver|America/Edmonton","America/Denver|America/Inuvik","America/Denver|America/Shiprock","America/Denver|America/Yellowknife","America/Denver|Canada/Mountain","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Fortaleza|America/Argentina/Buenos_Aires","America/Fortaleza|America/Argentina/Catamarca","America/Fortaleza|America/Argentina/ComodRivadavia","America/Fortaleza|America/Argentina/Cordoba","America/Fortaleza|America/Argentina/Jujuy","America/Fortaleza|America/Argentina/La_Rioja","America/Fortaleza|America/Argentina/Mendoza","America/Fortaleza|America/Argentina/Rio_Gallegos","America/Fortaleza|America/Argentina/Salta","America/Fortaleza|America/Argentina/San_Juan","America/Fortaleza|America/Argentina/San_Luis","America/Fortaleza|America/Argentina/Tucuman","America/Fortaleza|America/Argentina/Ushuaia","America/Fortaleza|America/Belem","America/Fortaleza|America/Buenos_Aires","America/Fortaleza|America/Catamarca","America/Fortaleza|America/Cayenne","America/Fortaleza|America/Cordoba","America/Fortaleza|America/Jujuy","America/Fortaleza|America/Maceio","America/Fortaleza|America/Mendoza","America/Fortaleza|America/Paramaribo","America/Fortaleza|America/Recife","America/Fortaleza|America/Rosario","America/Fortaleza|America/Santarem","America/Fortaleza|Antarctica/Rothera","America/Fortaleza|Atlantic/Stanley","America/Fortaleza|Etc/GMT+3","America/Godthab|America/Nuuk","America/Halifax|America/Glace_Bay","America/Halifax|America/Goose_Bay","America/Halifax|America/Moncton","America/Halifax|America/Thule","America/Halifax|Atlantic/Bermuda","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/La_Paz|America/Boa_Vista","America/La_Paz|America/Guyana","America/La_Paz|America/Manaus","America/La_Paz|America/Porto_Velho","America/La_Paz|Brazil/West","America/La_Paz|Etc/GMT+4","America/Lima|America/Bogota","America/Lima|America/Guayaquil","America/Lima|Etc/GMT+5","America/Los_Angeles|America/Ensenada","America/Los_Angeles|America/Santa_Isabel","America/Los_Angeles|America/Tijuana","America/Los_Angeles|America/Vancouver","America/Los_Angeles|Canada/Pacific","America/Los_Angeles|Mexico/BajaNorte","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Managua|America/Belize","America/Managua|America/Costa_Rica","America/Managua|America/El_Salvador","America/Managua|America/Guatemala","America/Managua|America/Regina","America/Managua|America/Swift_Current","America/Managua|America/Tegucigalpa","America/Managua|Canada/Saskatchewan","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|America/Bahia_Banderas","America/Mexico_City|America/Merida","America/Mexico_City|America/Monterrey","America/Mexico_City|Mexico/General","America/New_York|America/Detroit","America/New_York|America/Fort_Wayne","America/New_York|America/Indiana/Indianapolis","America/New_York|America/Indiana/Marengo","America/New_York|America/Indiana/Petersburg","America/New_York|America/Indiana/Vevay","America/New_York|America/Indiana/Vincennes","America/New_York|America/Indiana/Winamac","America/New_York|America/Indianapolis","America/New_York|America/Iqaluit","America/New_York|America/Kentucky/Louisville","America/New_York|America/Kentucky/Monticello","America/New_York|America/Louisville","America/New_York|America/Montreal","America/New_York|America/Nassau","America/New_York|America/Nipigon","America/New_York|America/Pangnirtung","America/New_York|America/Thunder_Bay","America/New_York|America/Toronto","America/New_York|Canada/Eastern","America/New_York|EST5EDT","America/New_York|US/East-Indiana","America/New_York|US/Eastern","America/New_York|US/Michigan","America/Noronha|Atlantic/South_Georgia","America/Noronha|Brazil/DeNoronha","America/Noronha|Etc/GMT+2","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|America/Jamaica","America/Panama|EST","America/Panama|Jamaica","America/Phoenix|America/Creston","America/Phoenix|America/Dawson_Creek","America/Phoenix|America/Hermosillo","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Rio_Branco|America/Eirunepe","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|America/Coyhaique","America/Santiago|Chile/Continental","America/Santo_Domingo|America/Anguilla","America/Santo_Domingo|America/Antigua","America/Santo_Domingo|America/Aruba","America/Santo_Domingo|America/Barbados","America/Santo_Domingo|America/Blanc-Sablon","America/Santo_Domingo|America/Curacao","America/Santo_Domingo|America/Dominica","America/Santo_Domingo|America/Grenada","America/Santo_Domingo|America/Guadeloupe","America/Santo_Domingo|America/Kralendijk","America/Santo_Domingo|America/Lower_Princes","America/Santo_Domingo|America/Marigot","America/Santo_Domingo|America/Martinique","America/Santo_Domingo|America/Montserrat","America/Santo_Domingo|America/Port_of_Spain","America/Santo_Domingo|America/Puerto_Rico","America/Santo_Domingo|America/St_Barthelemy","America/Santo_Domingo|America/St_Kitts","America/Santo_Domingo|America/St_Lucia","America/Santo_Domingo|America/St_Thomas","America/Santo_Domingo|America/St_Vincent","America/Santo_Domingo|America/Tortola","America/Santo_Domingo|America/Virgin","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Whitehorse|America/Dawson","America/Whitehorse|Canada/Yukon","Antarctica/Palmer|America/Punta_Arenas","Asia/Baghdad|Antarctica/Syowa","Asia/Baghdad|Asia/Aden","Asia/Baghdad|Asia/Bahrain","Asia/Baghdad|Asia/Kuwait","Asia/Baghdad|Asia/Qatar","Asia/Baghdad|Asia/Riyadh","Asia/Baghdad|Etc/GMT-3","Asia/Baghdad|Europe/Minsk","Asia/Bangkok|Antarctica/Vostok","Asia/Bangkok|Asia/Ho_Chi_Minh","Asia/Bangkok|Asia/Novokuznetsk","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Saigon","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Etc/GMT-7","Asia/Bangkok|Indian/Christmas","Asia/Dhaka|Asia/Almaty","Asia/Dhaka|Asia/Bishkek","Asia/Dhaka|Asia/Dacca","Asia/Dhaka|Asia/Kashgar","Asia/Dhaka|Asia/Qostanay","Asia/Dhaka|Asia/Thimbu","Asia/Dhaka|Asia/Thimphu","Asia/Dhaka|Asia/Urumqi","Asia/Dhaka|Etc/GMT-6","Asia/Dhaka|Indian/Chagos","Asia/Dili|Etc/GMT-9","Asia/Dili|Pacific/Palau","Asia/Dubai|Asia/Muscat","Asia/Dubai|Asia/Tbilisi","Asia/Dubai|Asia/Yerevan","Asia/Dubai|Etc/GMT-4","Asia/Dubai|Europe/Samara","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Mauritius","Asia/Dubai|Indian/Reunion","Asia/Gaza|Asia/Hebron","Asia/Hong_Kong|Hongkong","Asia/Jakarta|Asia/Pontianak","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kamchatka|Asia/Anadyr","Asia/Kamchatka|Etc/GMT-12","Asia/Kamchatka|Kwajalein","Asia/Kamchatka|Pacific/Funafuti","Asia/Kamchatka|Pacific/Kwajalein","Asia/Kamchatka|Pacific/Majuro","Asia/Kamchatka|Pacific/Nauru","Asia/Kamchatka|Pacific/Tarawa","Asia/Kamchatka|Pacific/Wake","Asia/Kamchatka|Pacific/Wallis","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Brunei","Asia/Kuala_Lumpur|Asia/Kuching","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Etc/GMT-8","Asia/Kuala_Lumpur|Singapore","Asia/Makassar|Asia/Ujung_Pandang","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|Asia/Macao","Asia/Shanghai|Asia/Macau","Asia/Shanghai|Asia/Taipei","Asia/Shanghai|PRC","Asia/Shanghai|ROC","Asia/Tashkent|Antarctica/Mawson","Asia/Tashkent|Asia/Aqtau","Asia/Tashkent|Asia/Aqtobe","Asia/Tashkent|Asia/Ashgabat","Asia/Tashkent|Asia/Ashkhabad","Asia/Tashkent|Asia/Atyrau","Asia/Tashkent|Asia/Dushanbe","Asia/Tashkent|Asia/Oral","Asia/Tashkent|Asia/Samarkand","Asia/Tashkent|Etc/GMT-5","Asia/Tashkent|Indian/Kerguelen","Asia/Tashkent|Indian/Maldives","Asia/Tehran|Iran","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Choibalsan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Vladivostok|Asia/Ust-Nera","Asia/Yakutsk|Asia/Khandyga","Atlantic/Azores|America/Scoresbysund","Atlantic/Cape_Verde|Etc/GMT+1","Australia/Adelaide|Australia/Broken_Hill","Australia/Adelaide|Australia/South","Australia/Adelaide|Australia/Yancowinna","Australia/Brisbane|Australia/Lindeman","Australia/Brisbane|Australia/Queensland","Australia/Darwin|Australia/North","Australia/Lord_Howe|Australia/LHI","Australia/Perth|Australia/West","Australia/Sydney|Antarctica/Macquarie","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/Currie","Australia/Sydney|Australia/Hobart","Australia/Sydney|Australia/Melbourne","Australia/Sydney|Australia/NSW","Australia/Sydney|Australia/Tasmania","Australia/Sydney|Australia/Victoria","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|Asia/Nicosia","Europe/Athens|EET","Europe/Athens|Europe/Bucharest","Europe/Athens|Europe/Helsinki","Europe/Athens|Europe/Kiev","Europe/Athens|Europe/Kyiv","Europe/Athens|Europe/Mariehamn","Europe/Athens|Europe/Nicosia","Europe/Athens|Europe/Riga","Europe/Athens|Europe/Sofia","Europe/Athens|Europe/Tallinn","Europe/Athens|Europe/Uzhgorod","Europe/Athens|Europe/Vilnius","Europe/Athens|Europe/Zaporozhye","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Atlantic/Canary","Europe/Lisbon|Atlantic/Faeroe","Europe/Lisbon|Atlantic/Faroe","Europe/Lisbon|Atlantic/Madeira","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|Europe/Kirov","Europe/Moscow|W-SU","Europe/Paris|Africa/Ceuta","Europe/Paris|Arctic/Longyearbyen","Europe/Paris|Atlantic/Jan_Mayen","Europe/Paris|CET","Europe/Paris|Europe/Amsterdam","Europe/Paris|Europe/Andorra","Europe/Paris|Europe/Belgrade","Europe/Paris|Europe/Berlin","Europe/Paris|Europe/Bratislava","Europe/Paris|Europe/Brussels","Europe/Paris|Europe/Budapest","Europe/Paris|Europe/Busingen","Europe/Paris|Europe/Copenhagen","Europe/Paris|Europe/Gibraltar","Europe/Paris|Europe/Ljubljana","Europe/Paris|Europe/Luxembourg","Europe/Paris|Europe/Madrid","Europe/Paris|Europe/Malta","Europe/Paris|Europe/Monaco","Europe/Paris|Europe/Oslo","Europe/Paris|Europe/Podgorica","Europe/Paris|Europe/Prague","Europe/Paris|Europe/Rome","Europe/Paris|Europe/San_Marino","Europe/Paris|Europe/Sarajevo","Europe/Paris|Europe/Skopje","Europe/Paris|Europe/Stockholm","Europe/Paris|Europe/Tirane","Europe/Paris|Europe/Vaduz","Europe/Paris|Europe/Vatican","Europe/Paris|Europe/Vienna","Europe/Paris|Europe/Warsaw","Europe/Paris|Europe/Zagreb","Europe/Paris|Europe/Zurich","Europe/Paris|MET","Europe/Paris|Poland","Europe/Ulyanovsk|Europe/Astrakhan","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Fakaofo|Etc/GMT-13","Pacific/Fakaofo|Pacific/Enderbury","Pacific/Fakaofo|Pacific/Kanton","Pacific/Galapagos|Etc/GMT+6","Pacific/Gambier|Etc/GMT+9","Pacific/Guadalcanal|Etc/GMT-11","Pacific/Guadalcanal|Pacific/Efate","Pacific/Guadalcanal|Pacific/Kosrae","Pacific/Guadalcanal|Pacific/Noumea","Pacific/Guadalcanal|Pacific/Pohnpei","Pacific/Guadalcanal|Pacific/Ponape","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kiritimati|Etc/GMT-14","Pacific/Niue|Etc/GMT+11","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pitcairn|Etc/GMT+8","Pacific/Port_Moresby|Antarctica/DumontDUrville","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tahiti|Etc/GMT+10","Pacific/Tahiti|Pacific/Rarotonga"],countries:["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Puerto_Rico America/Antigua","AI|America/Puerto_Rico America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo","AW|America/Puerto_Rico America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Puerto_Rico America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Kuching Asia/Brunei","BO|America/La_Paz","BQ|America/Puerto_Rico America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Toronto America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston","CC|Asia/Yangon Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Puerto_Rico America/Curacao","CX|Asia/Bangkok Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Berlin Europe/Copenhagen","DM|America/Puerto_Rico America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Puerto_Rico America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London Europe/Guernsey","GH|Africa/Abidjan Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Puerto_Rico America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Africa/Abidjan Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Puerto_Rico America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Puerto_Rico America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Brussels Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Paris Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Puerto_Rico America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Puerto_Rico America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana","MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Brussels Europe/Amsterdam","NO|Europe/Berlin Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Asia/Dubai Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Asia/Dubai Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Berlin Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Berlin Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Puerto_Rico America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Asia/Dubai Indian/Maldives Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Puerto_Rico America/Port_of_Spain","TV|Pacific/Tarawa Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kyiv","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake","US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Puerto_Rico America/St_Vincent","VE|America/Caracas","VG|America/Puerto_Rico America/Tortola","VI|America/Puerto_Rico America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Tarawa Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}),!1===o.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: Moment Timezone has been loaded from a file containing data from 2012 to 2022 only. This file is out of date and may be removed in a future release. Dates and times for the current year might be incorrect."),o});
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1582 +1,0 @@
-//! moment-timezone.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('moment')); // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	// Resolves es6 module loading issue
-	if (moment.version === undefined && moment.default) {
-		moment = moment.default;
-	}
-
-	// Do not load moment-timezone a second time.
-	// if (moment.tz !== undefined) {
-	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
-	// 	return moment;
-	// }
-
-	var VERSION = "0.5.48",
-		zones = {},
-		links = {},
-		countries = {},
-		names = {},
-		guesses = {},
-		cachedGuess;
-
-	if (!moment || typeof moment.version !== 'string') {
-		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
-	}
-
-	var momentVersion = moment.version.split('.'),
-		major = +momentVersion[0],
-		minor = +momentVersion[1];
-
-	// Moment.js version check
-	if (major < 2 || (major === 2 && minor < 6)) {
-		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
-	}
-
-	/************************************
-		Unpacking
-	************************************/
-
-	function charCodeToInt(charCode) {
-		if (charCode > 96) {
-			return charCode - 87;
-		} else if (charCode > 64) {
-			return charCode - 29;
-		}
-		return charCode - 48;
-	}
-
-	function unpackBase60(string) {
-		var i = 0,
-			parts = string.split('.'),
-			whole = parts[0],
-			fractional = parts[1] || '',
-			multiplier = 1,
-			num,
-			out = 0,
-			sign = 1;
-
-		// handle negative numbers
-		if (string.charCodeAt(0) === 45) {
-			i = 1;
-			sign = -1;
-		}
-
-		// handle digits before the decimal
-		for (i; i < whole.length; i++) {
-			num = charCodeToInt(whole.charCodeAt(i));
-			out = 60 * out + num;
-		}
-
-		// handle digits after the decimal
-		for (i = 0; i < fractional.length; i++) {
-			multiplier = multiplier / 60;
-			num = charCodeToInt(fractional.charCodeAt(i));
-			out += num * multiplier;
-		}
-
-		return out * sign;
-	}
-
-	function arrayToInt (array) {
-		for (var i = 0; i < array.length; i++) {
-			array[i] = unpackBase60(array[i]);
-		}
-	}
-
-	function intToUntil (array, length) {
-		for (var i = 0; i < length; i++) {
-			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
-		}
-
-		array[length - 1] = Infinity;
-	}
-
-	function mapIndices (source, indices) {
-		var out = [], i;
-
-		for (i = 0; i < indices.length; i++) {
-			out[i] = source[indices[i]];
-		}
-
-		return out;
-	}
-
-	function unpack (string) {
-		var data = string.split('|'),
-			offsets = data[2].split(' '),
-			indices = data[3].split(''),
-			untils  = data[4].split(' ');
-
-		arrayToInt(offsets);
-		arrayToInt(indices);
-		arrayToInt(untils);
-
-		intToUntil(untils, indices.length);
-
-		return {
-			name       : data[0],
-			abbrs      : mapIndices(data[1].split(' '), indices),
-			offsets    : mapIndices(offsets, indices),
-			untils     : untils,
-			population : data[5] | 0
-		};
-	}
-
-	/************************************
-		Zone object
-	************************************/
-
-	function Zone (packedString) {
-		if (packedString) {
-			this._set(unpack(packedString));
-		}
-	}
-
-	function closest (num, arr) {
-		var len = arr.length;
-		if (num < arr[0]) {
-			return 0;
-		} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {
-			return len - 1;
-		} else if (num >= arr[len - 1]) {
-			return -1;
-		}
-
-		var mid;
-		var lo = 0;
-		var hi = len - 1;
-		while (hi - lo > 1) {
-			mid = Math.floor((lo + hi) / 2);
-			if (arr[mid] <= num) {
-				lo = mid;
-			} else {
-				hi = mid;
-			}
-		}
-		return hi;
-	}
-
-	Zone.prototype = {
-		_set : function (unpacked) {
-			this.name       = unpacked.name;
-			this.abbrs      = unpacked.abbrs;
-			this.untils     = unpacked.untils;
-			this.offsets    = unpacked.offsets;
-			this.population = unpacked.population;
-		},
-
-		_index : function (timestamp) {
-			var target = +timestamp,
-				untils = this.untils,
-				i;
-
-			i = closest(target, untils);
-			if (i >= 0) {
-				return i;
-			}
-		},
-
-		countries : function () {
-			var zone_name = this.name;
-			return Object.keys(countries).filter(function (country_code) {
-				return countries[country_code].zones.indexOf(zone_name) !== -1;
-			});
-		},
-
-		parse : function (timestamp) {
-			var target  = +timestamp,
-				offsets = this.offsets,
-				untils  = this.untils,
-				max     = untils.length - 1,
-				offset, offsetNext, offsetPrev, i;
-
-			for (i = 0; i < max; i++) {
-				offset     = offsets[i];
-				offsetNext = offsets[i + 1];
-				offsetPrev = offsets[i ? i - 1 : i];
-
-				if (offset < offsetNext && tz.moveAmbiguousForward) {
-					offset = offsetNext;
-				} else if (offset > offsetPrev && tz.moveInvalidForward) {
-					offset = offsetPrev;
-				}
-
-				if (target < untils[i] - (offset * 60000)) {
-					return offsets[i];
-				}
-			}
-
-			return offsets[max];
-		},
-
-		abbr : function (mom) {
-			return this.abbrs[this._index(mom)];
-		},
-
-		offset : function (mom) {
-			logError("zone.offset has been deprecated in favor of zone.utcOffset");
-			return this.offsets[this._index(mom)];
-		},
-
-		utcOffset : function (mom) {
-			return this.offsets[this._index(mom)];
-		}
-	};
-
-	/************************************
-		Country object
-	************************************/
-
-	function Country (country_name, zone_names) {
-		this.name = country_name;
-		this.zones = zone_names;
-	}
-
-	/************************************
-		Current Timezone
-	************************************/
-
-	function OffsetAt(at) {
-		var timeString = at.toTimeString();
-		var abbr = timeString.match(/\([a-z ]+\)/i);
-		if (abbr && abbr[0]) {
-			// 17:56:31 GMT-0600 (CST)
-			// 17:56:31 GMT-0600 (Central Standard Time)
-			abbr = abbr[0].match(/[A-Z]/g);
-			abbr = abbr ? abbr.join('') : undefined;
-		} else {
-			// 17:56:31 CST
-			// 17:56:31 GMT+0800 (台北標準時間)
-			abbr = timeString.match(/[A-Z]{3,5}/g);
-			abbr = abbr ? abbr[0] : undefined;
-		}
-
-		if (abbr === 'GMT') {
-			abbr = undefined;
-		}
-
-		this.at = +at;
-		this.abbr = abbr;
-		this.offset = at.getTimezoneOffset();
-	}
-
-	function ZoneScore(zone) {
-		this.zone = zone;
-		this.offsetScore = 0;
-		this.abbrScore = 0;
-	}
-
-	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
-		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
-		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
-			this.abbrScore++;
-		}
-	};
-
-	function findChange(low, high) {
-		var mid, diff;
-
-		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
-			mid = new OffsetAt(new Date(low.at + diff));
-			if (mid.offset === low.offset) {
-				low = mid;
-			} else {
-				high = mid;
-			}
-		}
-
-		return low;
-	}
-
-	function userOffsets() {
-		var startYear = new Date().getFullYear() - 2,
-			last = new OffsetAt(new Date(startYear, 0, 1)),
-			lastOffset = last.offset,
-			offsets = [last],
-			change, next, nextOffset, i;
-
-		for (i = 1; i < 48; i++) {
-			nextOffset = new Date(startYear, i, 1).getTimezoneOffset();
-			if (nextOffset !== lastOffset) {
-				// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets
-				next = new OffsetAt(new Date(startYear, i, 1));
-				change = findChange(last, next);
-				offsets.push(change);
-				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
-				last = next;
-				lastOffset = nextOffset;
-			}
-		}
-
-		for (i = 0; i < 4; i++) {
-			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
-			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
-		}
-
-		return offsets;
-	}
-
-	function sortZoneScores (a, b) {
-		if (a.offsetScore !== b.offsetScore) {
-			return a.offsetScore - b.offsetScore;
-		}
-		if (a.abbrScore !== b.abbrScore) {
-			return a.abbrScore - b.abbrScore;
-		}
-		if (a.zone.population !== b.zone.population) {
-			return b.zone.population - a.zone.population;
-		}
-		return b.zone.name.localeCompare(a.zone.name);
-	}
-
-	function addToGuesses (name, offsets) {
-		var i, offset;
-		arrayToInt(offsets);
-		for (i = 0; i < offsets.length; i++) {
-			offset = offsets[i];
-			guesses[offset] = guesses[offset] || {};
-			guesses[offset][name] = true;
-		}
-	}
-
-	function guessesForUserOffsets (offsets) {
-		var offsetsLength = offsets.length,
-			filteredGuesses = {},
-			out = [],
-			checkedOffsets = {},
-			i, j, offset, guessesOffset;
-
-		for (i = 0; i < offsetsLength; i++) {
-			offset = offsets[i].offset;
-			if (checkedOffsets.hasOwnProperty(offset)) {
-				continue;
-			}
-			guessesOffset = guesses[offset] || {};
-			for (j in guessesOffset) {
-				if (guessesOffset.hasOwnProperty(j)) {
-					filteredGuesses[j] = true;
-				}
-			}
-			checkedOffsets[offset] = true;
-		}
-
-		for (i in filteredGuesses) {
-			if (filteredGuesses.hasOwnProperty(i)) {
-				out.push(names[i]);
-			}
-		}
-
-		return out;
-	}
-
-	function rebuildGuess () {
-
-		// use Intl API when available and returning valid time zone
-		try {
-			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
-			if (intlName && intlName.length > 3) {
-				var name = names[normalizeName(intlName)];
-				if (name) {
-					return name;
-				}
-				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
-			}
-		} catch (e) {
-			// Intl unavailable, fall back to manual guessing.
-		}
-
-		var offsets = userOffsets(),
-			offsetsLength = offsets.length,
-			guesses = guessesForUserOffsets(offsets),
-			zoneScores = [],
-			zoneScore, i, j;
-
-		for (i = 0; i < guesses.length; i++) {
-			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
-			for (j = 0; j < offsetsLength; j++) {
-				zoneScore.scoreOffsetAt(offsets[j]);
-			}
-			zoneScores.push(zoneScore);
-		}
-
-		zoneScores.sort(sortZoneScores);
-
-		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
-	}
-
-	function guess (ignoreCache) {
-		if (!cachedGuess || ignoreCache) {
-			cachedGuess = rebuildGuess();
-		}
-		return cachedGuess;
-	}
-
-	/************************************
-		Global Methods
-	************************************/
-
-	function normalizeName (name) {
-		return (name || '').toLowerCase().replace(/\//g, '_');
-	}
-
-	function addZone (packed) {
-		var i, name, split, normalized;
-
-		if (typeof packed === "string") {
-			packed = [packed];
-		}
-
-		for (i = 0; i < packed.length; i++) {
-			split = packed[i].split('|');
-			name = split[0];
-			normalized = normalizeName(name);
-			zones[normalized] = packed[i];
-			names[normalized] = name;
-			addToGuesses(normalized, split[2].split(' '));
-		}
-	}
-
-	function getZone (name, caller) {
-
-		name = normalizeName(name);
-
-		var zone = zones[name];
-		var link;
-
-		if (zone instanceof Zone) {
-			return zone;
-		}
-
-		if (typeof zone === 'string') {
-			zone = new Zone(zone);
-			zones[name] = zone;
-			return zone;
-		}
-
-		// Pass getZone to prevent recursion more than 1 level deep
-		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
-			zone = zones[name] = new Zone();
-			zone._set(link);
-			zone.name = names[name];
-			return zone;
-		}
-
-		return null;
-	}
-
-	function getNames () {
-		var i, out = [];
-
-		for (i in names) {
-			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
-				out.push(names[i]);
-			}
-		}
-
-		return out.sort();
-	}
-
-	function getCountryNames () {
-		return Object.keys(countries);
-	}
-
-	function addLink (aliases) {
-		var i, alias, normal0, normal1;
-
-		if (typeof aliases === "string") {
-			aliases = [aliases];
-		}
-
-		for (i = 0; i < aliases.length; i++) {
-			alias = aliases[i].split('|');
-
-			normal0 = normalizeName(alias[0]);
-			normal1 = normalizeName(alias[1]);
-
-			links[normal0] = normal1;
-			names[normal0] = alias[0];
-
-			links[normal1] = normal0;
-			names[normal1] = alias[1];
-		}
-	}
-
-	function addCountries (data) {
-		var i, country_code, country_zones, split;
-		if (!data || !data.length) return;
-		for (i = 0; i < data.length; i++) {
-			split = data[i].split('|');
-			country_code = split[0].toUpperCase();
-			country_zones = split[1].split(' ');
-			countries[country_code] = new Country(
-				country_code,
-				country_zones
-			);
-		}
-	}
-
-	function getCountry (name) {
-		name = name.toUpperCase();
-		return countries[name] || null;
-	}
-
-	function zonesForCountry(country, with_offset) {
-		country = getCountry(country);
-
-		if (!country) return null;
-
-		var zones = country.zones.sort();
-
-		if (with_offset) {
-			return zones.map(function (zone_name) {
-				var zone = getZone(zone_name);
-				return {
-					name: zone_name,
-					offset: zone.utcOffset(new Date())
-				};
-			});
-		}
-
-		return zones;
-	}
-
-	function loadData (data) {
-		addZone(data.zones);
-		addLink(data.links);
-		addCountries(data.countries);
-		tz.dataVersion = data.version;
-	}
-
-	function zoneExists (name) {
-		if (!zoneExists.didShowError) {
-			zoneExists.didShowError = true;
-				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
-		}
-		return !!getZone(name);
-	}
-
-	function needsOffset (m) {
-		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
-		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
-	}
-
-	function logError (message) {
-		if (typeof console !== 'undefined' && typeof console.error === 'function') {
-			console.error(message);
-		}
-	}
-
-	/************************************
-		moment.tz namespace
-	************************************/
-
-	function tz (input) {
-		var args = Array.prototype.slice.call(arguments, 0, -1),
-			name = arguments[arguments.length - 1],
-			out  = moment.utc.apply(null, args),
-			zone;
-
-		if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {
-			out.add(zone.parse(out), 'minutes');
-		}
-
-		out.tz(name);
-
-		return out;
-	}
-
-	tz.version      = VERSION;
-	tz.dataVersion  = '';
-	tz._zones       = zones;
-	tz._links       = links;
-	tz._names       = names;
-	tz._countries	= countries;
-	tz.add          = addZone;
-	tz.link         = addLink;
-	tz.load         = loadData;
-	tz.zone         = getZone;
-	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
-	tz.guess        = guess;
-	tz.names        = getNames;
-	tz.Zone         = Zone;
-	tz.unpack       = unpack;
-	tz.unpackBase60 = unpackBase60;
-	tz.needsOffset  = needsOffset;
-	tz.moveInvalidForward   = true;
-	tz.moveAmbiguousForward = false;
-	tz.countries    = getCountryNames;
-	tz.zonesForCountry = zonesForCountry;
-
-	/************************************
-		Interface with Moment.js
-	************************************/
-
-	var fn = moment.fn;
-
-	moment.tz = tz;
-
-	moment.defaultZone = null;
-
-	moment.updateOffset = function (mom, keepTime) {
-		var zone = moment.defaultZone,
-			offset;
-
-		if (mom._z === undefined) {
-			if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {
-				mom._d = moment.utc(mom._a)._d;
-				mom.utc().add(zone.parse(mom), 'minutes');
-			}
-			mom._z = zone;
-		}
-		if (mom._z) {
-			offset = mom._z.utcOffset(mom);
-			if (Math.abs(offset) < 16) {
-				offset = offset / 60;
-			}
-			if (mom.utcOffset !== undefined) {
-				var z = mom._z;
-				mom.utcOffset(-offset, keepTime);
-				mom._z = z;
-			} else {
-				mom.zone(offset, keepTime);
-			}
-		}
-	};
-
-	fn.tz = function (name, keepTime) {
-		if (name) {
-			if (typeof name !== 'string') {
-				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
-			}
-			this._z = getZone(name);
-			if (this._z) {
-				moment.updateOffset(this, keepTime);
-			} else {
-				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
-			}
-			return this;
-		}
-		if (this._z) { return this._z.name; }
-	};
-
-	function abbrWrap (old) {
-		return function () {
-			if (this._z) { return this._z.abbr(this); }
-			return old.call(this);
-		};
-	}
-
-	function resetZoneWrap (old) {
-		return function () {
-			this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	function resetZoneWrap2 (old) {
-		return function () {
-			if (arguments.length > 0) this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	fn.zoneName  = abbrWrap(fn.zoneName);
-	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
-	fn.utc       = resetZoneWrap(fn.utc);
-	fn.local     = resetZoneWrap(fn.local);
-	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
-
-	moment.tz.setDefault = function(name) {
-		if (major < 2 || (major === 2 && minor < 9)) {
-			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
-		}
-		moment.defaultZone = name ? getZone(name) : null;
-		return moment;
-	};
-
-	// Cloning a moment should include the _z property.
-	var momentProperties = moment.momentProperties;
-	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
-		// moment 2.8.1+
-		momentProperties.push('_z');
-		momentProperties.push('_a');
-	} else if (momentProperties) {
-		// moment 2.7.0
-		momentProperties._z = null;
-	}
-
-	loadData({
-		"version": "2025b",
-		"zones": [
-			"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
-			"Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5",
-			"Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
-			"Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6",
-			"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4",
-			"Africa/Maputo|LMT CAT|-2a.i -20|01|-2sw2a.i|26e5",
-			"Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6",
-			"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5",
-			"Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3",
-			"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4",
-			"Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5",
-			"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|",
-			"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5",
-			"Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5",
-			"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5",
-			"Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|",
-			"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5",
-			"Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5",
-			"Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
-			"America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
-			"America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
-			"America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5",
-			"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4",
-			"America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-			"America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-			"America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|",
-			"America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|",
-			"America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-			"America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|",
-			"America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|",
-			"America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|",
-			"America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|",
-			"America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|",
-			"America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5",
-			"America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5",
-			"America/Bahia_Banderas|LMT MST CST MDT CDT|71 70 60 60 50|01213121313131313131313131313131313142424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3",
-			"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5",
-			"America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4",
-			"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5",
-			"America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3",
-			"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2",
-			"America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5",
-			"America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4",
-			"America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2",
-			"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
-			"America/Cancun|LMT CST EST CDT EDT|5L.4 60 50 50 40|01213132431313131313131313131313131313131312|-1UQG0 2q3C0 2tx0 wgP0 1lb0 14p0 1lb0 14o0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
-			"America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5",
-			"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3",
-			"America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
-			"America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
-			"America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5",
-			"America/Coyhaique|LMT SMT -05 -04 -03|4M.g 4G.J 50 40 30|012131323232323232323434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvb.I MJbS.t fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|",
-			"America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5",
-			"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4",
-			"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8",
-			"America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3",
-			"America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2",
-			"America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
-			"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5",
-			"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5",
-			"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3",
-			"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5",
-			"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mp0 8lz0 SN0 1cL0 pHB0 83r0 AU0 5MN0 1Rz0 38N0 Wn0 1qP0 11z0 1o10 11z0 3NA0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5",
-			"America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
-			"America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5",
-			"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
-			"America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3",
-			"America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2",
-			"America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
-			"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5",
-			"America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5",
-			"America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4",
-			"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
-			"America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
-			"America/Hermosillo|LMT MST CST MDT|7n.Q 70 60 60|01213121313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0|64e4",
-			"America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2",
-			"America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2",
-			"America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4",
-			"America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3",
-			"America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5",
-			"America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6",
-			"America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
-			"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4",
-			"America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5",
-			"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5",
-			"America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4",
-			"America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4",
-			"America/Mazatlan|LMT MST CST MDT|75.E 70 60 60|01213121313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4",
-			"America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2",
-			"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q3C0 24n0 wG10 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5",
-			"America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
-			"America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
-			"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
-			"America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3",
-			"America/Monterrey|LMT MST CST MDT CDT|6F.g 70 60 60 50|012131242424242424242424242424242424242424242424242424242424242|-1UQG0 dep0 8lz0 16p0 11z0 1dd0 2gmp0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5",
-			"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
-			"America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5",
-			"America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
-			"America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2",
-			"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2",
-			"America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-			"America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
-			"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4",
-			"America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-			"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
-			"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
-			"America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|",
-			"America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4",
-			"America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2",
-			"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5",
-			"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4",
-			"America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
-			"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
-			"America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5",
-			"America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
-			"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
-			"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452",
-			"America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2",
-			"America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
-			"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3",
-			"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5",
-			"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656",
-			"America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-			"America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
-			"America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642",
-			"Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10",
-			"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70",
-			"Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4",
-			"Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1",
-			"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60",
-			"Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
-			"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
-			"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130",
-			"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5",
-			"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40",
-			"Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25",
-			"Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5",
-			"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5",
-			"Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5",
-			"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3",
-			"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4",
-			"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4",
-			"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4",
-			"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
-			"Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5",
-			"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4",
-			"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-			"Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6",
-			"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|",
-			"Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5",
-			"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4",
-			"Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4",
-			"Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6",
-			"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4",
-			"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5",
-			"Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6",
-			"Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5",
-			"Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6",
-			"Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
-			"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le80 1dnX0 1nfA0 Xld0|19e4",
-			"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5",
-			"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
-			"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
-			"Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5",
-			"Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4",
-			"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5",
-			"Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
-			"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
-			"Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-			"Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
-			"Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6",
-			"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4",
-			"Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4",
-			"Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5",
-			"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4",
-			"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6",
-			"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5",
-			"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5",
-			"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2",
-			"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5",
-			"Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5",
-			"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4",
-			"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3",
-			"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5",
-			"Asia/Manila|LMT LMT PST PDT JST|fU.8 -83.Q -80 -90 -90|012323432323232|-54m83.Q 2d8A3.Q 1urM0 un0 bW10 nb0 7qo0 1MM0 klB0 lz0 TwN0 1bb0 uNB0 rz0|24e6",
-			"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4",
-			"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4",
-			"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5",
-			"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5",
-			"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4",
-			"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4",
-			"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5",
-			"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|",
-			"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4",
-			"Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5",
-			"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4",
-			"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4",
-			"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6",
-			"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2",
-			"Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5",
-			"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
-			"Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
-			"Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 Dc0 1iMu JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
-			"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3",
-			"Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6",
-			"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
-			"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2",
-			"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-			"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4",
-			"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5",
-			"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5",
-			"Atlantic/Azores|LMT HMT -02 -01 +00 WET WEST|1G.E 1S.w 20 10 0 0 -10|012323232323232323232323232323232323232323232343234323432343232323232323232323232323232323232323232323434343434343434343434356434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 CT90 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 Ap0 An0 wo0 Eo0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4",
-			"Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3",
-			"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4",
-			"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4",
-			"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3",
-			"Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 BJ90 1a00 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4",
-			"Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30",
-			"Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2",
-			"Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
-			"Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
-			"Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5",
-			"Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3",
-			"Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4",
-			"Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4",
-			"Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368",
-			"Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
-			"Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10",
-			"Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5",
-			"Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
-			"Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5",
-			"Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2",
-			"Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5",
-			"Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-			"Etc/GMT-0|GMT|0|0||",
-			"Etc/GMT-1|+01|-10|0||",
-			"Etc/GMT-10|+10|-a0|0||",
-			"Etc/GMT-11|+11|-b0|0||",
-			"Etc/GMT-12|+12|-c0|0||",
-			"Etc/GMT-13|+13|-d0|0||",
-			"Etc/GMT-14|+14|-e0|0||",
-			"Etc/GMT-2|+02|-20|0||",
-			"Etc/GMT-3|+03|-30|0||",
-			"Etc/GMT-4|+04|-40|0||",
-			"Etc/GMT-5|+05|-50|0||",
-			"Etc/GMT-6|+06|-60|0||",
-			"Etc/GMT-7|+07|-70|0||",
-			"Etc/GMT-8|+08|-80|0||",
-			"Etc/GMT-9|+09|-90|0||",
-			"Etc/GMT+1|-01|10|0||",
-			"Etc/GMT+10|-10|a0|0||",
-			"Etc/GMT+11|-11|b0|0||",
-			"Etc/GMT+12|-12|c0|0||",
-			"Etc/GMT+2|-02|20|0||",
-			"Etc/GMT+3|-03|30|0||",
-			"Etc/GMT+4|-04|40|0||",
-			"Etc/GMT+5|-05|50|0||",
-			"Etc/GMT+6|-06|60|0||",
-			"Etc/GMT+7|-07|70|0||",
-			"Etc/GMT+8|-08|80|0||",
-			"Etc/GMT+9|-09|90|0||",
-			"Etc/UTC|UTC|0|0||",
-			"Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3",
-			"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5",
-			"Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6",
-			"Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-			"Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5",
-			"Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5",
-			"Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5",
-			"Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4",
-			"Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4",
-			"Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3",
-			"Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-			"Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
-			"Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5",
-			"Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
-			"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212124121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 oiK0 1cM0 1cM0 1fB0 1cM0 1cM0 1cM0 1fA0 1a00 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-			"Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5",
-			"Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4",
-			"Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5",
-			"Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6",
-			"Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6",
-			"Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4",
-			"Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5",
-			"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
-			"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
-			"Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
-			"Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-			"Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4",
-			"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4",
-			"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
-			"Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5",
-			"Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4",
-			"Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5",
-			"Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5",
-			"Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4",
-			"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2",
-			"Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4",
-			"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4",
-			"Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3",
-			"Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600",
-			"Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
-			"Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4",
-			"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3",
-			"Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1",
-			"Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483",
-			"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4",
-			"Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3",
-			"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3",
-			"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125",
-			"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4",
-			"Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4",
-			"Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2",
-			"Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2",
-			"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2",
-			"Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2",
-			"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3",
-			"Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2",
-			"Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4",
-			"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3",
-			"Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3",
-			"Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56",
-			"Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
-			"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4",
-			"Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"
-		],
-		"links": [
-			"Africa/Abidjan|Africa/Accra",
-			"Africa/Abidjan|Africa/Bamako",
-			"Africa/Abidjan|Africa/Banjul",
-			"Africa/Abidjan|Africa/Conakry",
-			"Africa/Abidjan|Africa/Dakar",
-			"Africa/Abidjan|Africa/Freetown",
-			"Africa/Abidjan|Africa/Lome",
-			"Africa/Abidjan|Africa/Nouakchott",
-			"Africa/Abidjan|Africa/Ouagadougou",
-			"Africa/Abidjan|Africa/Timbuktu",
-			"Africa/Abidjan|Atlantic/Reykjavik",
-			"Africa/Abidjan|Atlantic/St_Helena",
-			"Africa/Abidjan|Iceland",
-			"Africa/Cairo|Egypt",
-			"Africa/Johannesburg|Africa/Maseru",
-			"Africa/Johannesburg|Africa/Mbabane",
-			"Africa/Lagos|Africa/Bangui",
-			"Africa/Lagos|Africa/Brazzaville",
-			"Africa/Lagos|Africa/Douala",
-			"Africa/Lagos|Africa/Kinshasa",
-			"Africa/Lagos|Africa/Libreville",
-			"Africa/Lagos|Africa/Luanda",
-			"Africa/Lagos|Africa/Malabo",
-			"Africa/Lagos|Africa/Niamey",
-			"Africa/Lagos|Africa/Porto-Novo",
-			"Africa/Maputo|Africa/Blantyre",
-			"Africa/Maputo|Africa/Bujumbura",
-			"Africa/Maputo|Africa/Gaborone",
-			"Africa/Maputo|Africa/Harare",
-			"Africa/Maputo|Africa/Kigali",
-			"Africa/Maputo|Africa/Lubumbashi",
-			"Africa/Maputo|Africa/Lusaka",
-			"Africa/Nairobi|Africa/Addis_Ababa",
-			"Africa/Nairobi|Africa/Asmara",
-			"Africa/Nairobi|Africa/Asmera",
-			"Africa/Nairobi|Africa/Dar_es_Salaam",
-			"Africa/Nairobi|Africa/Djibouti",
-			"Africa/Nairobi|Africa/Kampala",
-			"Africa/Nairobi|Africa/Mogadishu",
-			"Africa/Nairobi|Indian/Antananarivo",
-			"Africa/Nairobi|Indian/Comoro",
-			"Africa/Nairobi|Indian/Mayotte",
-			"Africa/Tripoli|Libya",
-			"America/Adak|America/Atka",
-			"America/Adak|US/Aleutian",
-			"America/Anchorage|US/Alaska",
-			"America/Argentina/Buenos_Aires|America/Buenos_Aires",
-			"America/Argentina/Catamarca|America/Argentina/ComodRivadavia",
-			"America/Argentina/Catamarca|America/Catamarca",
-			"America/Argentina/Cordoba|America/Cordoba",
-			"America/Argentina/Cordoba|America/Rosario",
-			"America/Argentina/Jujuy|America/Jujuy",
-			"America/Argentina/Mendoza|America/Mendoza",
-			"America/Chicago|CST6CDT",
-			"America/Chicago|US/Central",
-			"America/Denver|America/Shiprock",
-			"America/Denver|MST7MDT",
-			"America/Denver|Navajo",
-			"America/Denver|US/Mountain",
-			"America/Detroit|US/Michigan",
-			"America/Edmonton|America/Yellowknife",
-			"America/Edmonton|Canada/Mountain",
-			"America/Fort_Wayne|America/Indiana/Indianapolis",
-			"America/Fort_Wayne|America/Indianapolis",
-			"America/Fort_Wayne|US/East-Indiana",
-			"America/Godthab|America/Nuuk",
-			"America/Halifax|Canada/Atlantic",
-			"America/Havana|Cuba",
-			"America/Indiana/Knox|America/Knox_IN",
-			"America/Indiana/Knox|US/Indiana-Starke",
-			"America/Iqaluit|America/Pangnirtung",
-			"America/Jamaica|Jamaica",
-			"America/Kentucky/Louisville|America/Louisville",
-			"America/Los_Angeles|PST8PDT",
-			"America/Los_Angeles|US/Pacific",
-			"America/Manaus|Brazil/West",
-			"America/Mazatlan|Mexico/BajaSur",
-			"America/Mexico_City|Mexico/General",
-			"America/New_York|EST5EDT",
-			"America/New_York|US/Eastern",
-			"America/Noronha|Brazil/DeNoronha",
-			"America/Panama|America/Atikokan",
-			"America/Panama|America/Cayman",
-			"America/Panama|America/Coral_Harbour",
-			"America/Panama|EST",
-			"America/Phoenix|America/Creston",
-			"America/Phoenix|MST",
-			"America/Phoenix|US/Arizona",
-			"America/Puerto_Rico|America/Anguilla",
-			"America/Puerto_Rico|America/Antigua",
-			"America/Puerto_Rico|America/Aruba",
-			"America/Puerto_Rico|America/Blanc-Sablon",
-			"America/Puerto_Rico|America/Curacao",
-			"America/Puerto_Rico|America/Dominica",
-			"America/Puerto_Rico|America/Grenada",
-			"America/Puerto_Rico|America/Guadeloupe",
-			"America/Puerto_Rico|America/Kralendijk",
-			"America/Puerto_Rico|America/Lower_Princes",
-			"America/Puerto_Rico|America/Marigot",
-			"America/Puerto_Rico|America/Montserrat",
-			"America/Puerto_Rico|America/Port_of_Spain",
-			"America/Puerto_Rico|America/St_Barthelemy",
-			"America/Puerto_Rico|America/St_Kitts",
-			"America/Puerto_Rico|America/St_Lucia",
-			"America/Puerto_Rico|America/St_Thomas",
-			"America/Puerto_Rico|America/St_Vincent",
-			"America/Puerto_Rico|America/Tortola",
-			"America/Puerto_Rico|America/Virgin",
-			"America/Regina|Canada/Saskatchewan",
-			"America/Rio_Branco|America/Porto_Acre",
-			"America/Rio_Branco|Brazil/Acre",
-			"America/Santiago|Chile/Continental",
-			"America/Sao_Paulo|Brazil/East",
-			"America/St_Johns|Canada/Newfoundland",
-			"America/Tijuana|America/Ensenada",
-			"America/Tijuana|America/Santa_Isabel",
-			"America/Tijuana|Mexico/BajaNorte",
-			"America/Toronto|America/Montreal",
-			"America/Toronto|America/Nassau",
-			"America/Toronto|America/Nipigon",
-			"America/Toronto|America/Thunder_Bay",
-			"America/Toronto|Canada/Eastern",
-			"America/Vancouver|Canada/Pacific",
-			"America/Whitehorse|Canada/Yukon",
-			"America/Winnipeg|America/Rainy_River",
-			"America/Winnipeg|Canada/Central",
-			"Asia/Ashgabat|Asia/Ashkhabad",
-			"Asia/Bangkok|Asia/Phnom_Penh",
-			"Asia/Bangkok|Asia/Vientiane",
-			"Asia/Bangkok|Indian/Christmas",
-			"Asia/Brunei|Asia/Kuching",
-			"Asia/Dhaka|Asia/Dacca",
-			"Asia/Dubai|Asia/Muscat",
-			"Asia/Dubai|Indian/Mahe",
-			"Asia/Dubai|Indian/Reunion",
-			"Asia/Ho_Chi_Minh|Asia/Saigon",
-			"Asia/Hong_Kong|Hongkong",
-			"Asia/Jerusalem|Asia/Tel_Aviv",
-			"Asia/Jerusalem|Israel",
-			"Asia/Kathmandu|Asia/Katmandu",
-			"Asia/Kolkata|Asia/Calcutta",
-			"Asia/Kuala_Lumpur|Asia/Singapore",
-			"Asia/Kuala_Lumpur|Singapore",
-			"Asia/Macau|Asia/Macao",
-			"Asia/Makassar|Asia/Ujung_Pandang",
-			"Asia/Nicosia|Europe/Nicosia",
-			"Asia/Qatar|Asia/Bahrain",
-			"Asia/Rangoon|Asia/Yangon",
-			"Asia/Rangoon|Indian/Cocos",
-			"Asia/Riyadh|Antarctica/Syowa",
-			"Asia/Riyadh|Asia/Aden",
-			"Asia/Riyadh|Asia/Kuwait",
-			"Asia/Seoul|ROK",
-			"Asia/Shanghai|Asia/Chongqing",
-			"Asia/Shanghai|Asia/Chungking",
-			"Asia/Shanghai|Asia/Harbin",
-			"Asia/Shanghai|PRC",
-			"Asia/Taipei|ROC",
-			"Asia/Tehran|Iran",
-			"Asia/Thimphu|Asia/Thimbu",
-			"Asia/Tokyo|Japan",
-			"Asia/Ulaanbaatar|Asia/Choibalsan",
-			"Asia/Ulaanbaatar|Asia/Ulan_Bator",
-			"Asia/Urumqi|Asia/Kashgar",
-			"Atlantic/Faroe|Atlantic/Faeroe",
-			"Australia/Adelaide|Australia/South",
-			"Australia/Brisbane|Australia/Queensland",
-			"Australia/Broken_Hill|Australia/Yancowinna",
-			"Australia/Darwin|Australia/North",
-			"Australia/Hobart|Australia/Currie",
-			"Australia/Hobart|Australia/Tasmania",
-			"Australia/Lord_Howe|Australia/LHI",
-			"Australia/Melbourne|Australia/Victoria",
-			"Australia/Perth|Australia/West",
-			"Australia/Sydney|Australia/ACT",
-			"Australia/Sydney|Australia/Canberra",
-			"Australia/Sydney|Australia/NSW",
-			"Etc/GMT-0|Etc/GMT",
-			"Etc/GMT-0|Etc/GMT+0",
-			"Etc/GMT-0|Etc/GMT0",
-			"Etc/GMT-0|Etc/Greenwich",
-			"Etc/GMT-0|GMT",
-			"Etc/GMT-0|GMT+0",
-			"Etc/GMT-0|GMT-0",
-			"Etc/GMT-0|GMT0",
-			"Etc/GMT-0|Greenwich",
-			"Etc/UTC|Etc/UCT",
-			"Etc/UTC|Etc/Universal",
-			"Etc/UTC|Etc/Zulu",
-			"Etc/UTC|UCT",
-			"Etc/UTC|UTC",
-			"Etc/UTC|Universal",
-			"Etc/UTC|Zulu",
-			"Europe/Athens|EET",
-			"Europe/Belgrade|Europe/Ljubljana",
-			"Europe/Belgrade|Europe/Podgorica",
-			"Europe/Belgrade|Europe/Sarajevo",
-			"Europe/Belgrade|Europe/Skopje",
-			"Europe/Belgrade|Europe/Zagreb",
-			"Europe/Berlin|Arctic/Longyearbyen",
-			"Europe/Berlin|Atlantic/Jan_Mayen",
-			"Europe/Berlin|Europe/Copenhagen",
-			"Europe/Berlin|Europe/Oslo",
-			"Europe/Berlin|Europe/Stockholm",
-			"Europe/Brussels|CET",
-			"Europe/Brussels|Europe/Amsterdam",
-			"Europe/Brussels|Europe/Luxembourg",
-			"Europe/Brussels|MET",
-			"Europe/Chisinau|Europe/Tiraspol",
-			"Europe/Dublin|Eire",
-			"Europe/Helsinki|Europe/Mariehamn",
-			"Europe/Istanbul|Asia/Istanbul",
-			"Europe/Istanbul|Turkey",
-			"Europe/Kiev|Europe/Kyiv",
-			"Europe/Kiev|Europe/Uzhgorod",
-			"Europe/Kiev|Europe/Zaporozhye",
-			"Europe/Lisbon|Portugal",
-			"Europe/Lisbon|WET",
-			"Europe/London|Europe/Belfast",
-			"Europe/London|Europe/Guernsey",
-			"Europe/London|Europe/Isle_of_Man",
-			"Europe/London|Europe/Jersey",
-			"Europe/London|GB",
-			"Europe/London|GB-Eire",
-			"Europe/Moscow|W-SU",
-			"Europe/Paris|Europe/Monaco",
-			"Europe/Prague|Europe/Bratislava",
-			"Europe/Rome|Europe/San_Marino",
-			"Europe/Rome|Europe/Vatican",
-			"Europe/Warsaw|Poland",
-			"Europe/Zurich|Europe/Busingen",
-			"Europe/Zurich|Europe/Vaduz",
-			"Indian/Maldives|Indian/Kerguelen",
-			"Pacific/Auckland|Antarctica/McMurdo",
-			"Pacific/Auckland|Antarctica/South_Pole",
-			"Pacific/Auckland|NZ",
-			"Pacific/Chatham|NZ-CHAT",
-			"Pacific/Easter|Chile/EasterIsland",
-			"Pacific/Enderbury|Pacific/Kanton",
-			"Pacific/Guadalcanal|Pacific/Pohnpei",
-			"Pacific/Guadalcanal|Pacific/Ponape",
-			"Pacific/Guam|Pacific/Saipan",
-			"Pacific/Honolulu|HST",
-			"Pacific/Honolulu|Pacific/Johnston",
-			"Pacific/Honolulu|US/Hawaii",
-			"Pacific/Kwajalein|Kwajalein",
-			"Pacific/Pago_Pago|Pacific/Midway",
-			"Pacific/Pago_Pago|Pacific/Samoa",
-			"Pacific/Pago_Pago|US/Samoa",
-			"Pacific/Port_Moresby|Antarctica/DumontDUrville",
-			"Pacific/Port_Moresby|Pacific/Chuuk",
-			"Pacific/Port_Moresby|Pacific/Truk",
-			"Pacific/Port_Moresby|Pacific/Yap",
-			"Pacific/Tarawa|Pacific/Funafuti",
-			"Pacific/Tarawa|Pacific/Majuro",
-			"Pacific/Tarawa|Pacific/Wake",
-			"Pacific/Tarawa|Pacific/Wallis"
-		],
-		"countries": [
-			"AD|Europe/Andorra",
-			"AE|Asia/Dubai",
-			"AF|Asia/Kabul",
-			"AG|America/Puerto_Rico America/Antigua",
-			"AI|America/Puerto_Rico America/Anguilla",
-			"AL|Europe/Tirane",
-			"AM|Asia/Yerevan",
-			"AO|Africa/Lagos Africa/Luanda",
-			"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa",
-			"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
-			"AS|Pacific/Pago_Pago",
-			"AT|Europe/Vienna",
-			"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo",
-			"AW|America/Puerto_Rico America/Aruba",
-			"AX|Europe/Helsinki Europe/Mariehamn",
-			"AZ|Asia/Baku",
-			"BA|Europe/Belgrade Europe/Sarajevo",
-			"BB|America/Barbados",
-			"BD|Asia/Dhaka",
-			"BE|Europe/Brussels",
-			"BF|Africa/Abidjan Africa/Ouagadougou",
-			"BG|Europe/Sofia",
-			"BH|Asia/Qatar Asia/Bahrain",
-			"BI|Africa/Maputo Africa/Bujumbura",
-			"BJ|Africa/Lagos Africa/Porto-Novo",
-			"BL|America/Puerto_Rico America/St_Barthelemy",
-			"BM|Atlantic/Bermuda",
-			"BN|Asia/Kuching Asia/Brunei",
-			"BO|America/La_Paz",
-			"BQ|America/Puerto_Rico America/Kralendijk",
-			"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
-			"BS|America/Toronto America/Nassau",
-			"BT|Asia/Thimphu",
-			"BW|Africa/Maputo Africa/Gaborone",
-			"BY|Europe/Minsk",
-			"BZ|America/Belize",
-			"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
-			"CC|Asia/Yangon Indian/Cocos",
-			"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
-			"CF|Africa/Lagos Africa/Bangui",
-			"CG|Africa/Lagos Africa/Brazzaville",
-			"CH|Europe/Zurich",
-			"CI|Africa/Abidjan",
-			"CK|Pacific/Rarotonga",
-			"CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter",
-			"CM|Africa/Lagos Africa/Douala",
-			"CN|Asia/Shanghai Asia/Urumqi",
-			"CO|America/Bogota",
-			"CR|America/Costa_Rica",
-			"CU|America/Havana",
-			"CV|Atlantic/Cape_Verde",
-			"CW|America/Puerto_Rico America/Curacao",
-			"CX|Asia/Bangkok Indian/Christmas",
-			"CY|Asia/Nicosia Asia/Famagusta",
-			"CZ|Europe/Prague",
-			"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
-			"DJ|Africa/Nairobi Africa/Djibouti",
-			"DK|Europe/Berlin Europe/Copenhagen",
-			"DM|America/Puerto_Rico America/Dominica",
-			"DO|America/Santo_Domingo",
-			"DZ|Africa/Algiers",
-			"EC|America/Guayaquil Pacific/Galapagos",
-			"EE|Europe/Tallinn",
-			"EG|Africa/Cairo",
-			"EH|Africa/El_Aaiun",
-			"ER|Africa/Nairobi Africa/Asmara",
-			"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
-			"ET|Africa/Nairobi Africa/Addis_Ababa",
-			"FI|Europe/Helsinki",
-			"FJ|Pacific/Fiji",
-			"FK|Atlantic/Stanley",
-			"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
-			"FO|Atlantic/Faroe",
-			"FR|Europe/Paris",
-			"GA|Africa/Lagos Africa/Libreville",
-			"GB|Europe/London",
-			"GD|America/Puerto_Rico America/Grenada",
-			"GE|Asia/Tbilisi",
-			"GF|America/Cayenne",
-			"GG|Europe/London Europe/Guernsey",
-			"GH|Africa/Abidjan Africa/Accra",
-			"GI|Europe/Gibraltar",
-			"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
-			"GM|Africa/Abidjan Africa/Banjul",
-			"GN|Africa/Abidjan Africa/Conakry",
-			"GP|America/Puerto_Rico America/Guadeloupe",
-			"GQ|Africa/Lagos Africa/Malabo",
-			"GR|Europe/Athens",
-			"GS|Atlantic/South_Georgia",
-			"GT|America/Guatemala",
-			"GU|Pacific/Guam",
-			"GW|Africa/Bissau",
-			"GY|America/Guyana",
-			"HK|Asia/Hong_Kong",
-			"HN|America/Tegucigalpa",
-			"HR|Europe/Belgrade Europe/Zagreb",
-			"HT|America/Port-au-Prince",
-			"HU|Europe/Budapest",
-			"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
-			"IE|Europe/Dublin",
-			"IL|Asia/Jerusalem",
-			"IM|Europe/London Europe/Isle_of_Man",
-			"IN|Asia/Kolkata",
-			"IO|Indian/Chagos",
-			"IQ|Asia/Baghdad",
-			"IR|Asia/Tehran",
-			"IS|Africa/Abidjan Atlantic/Reykjavik",
-			"IT|Europe/Rome",
-			"JE|Europe/London Europe/Jersey",
-			"JM|America/Jamaica",
-			"JO|Asia/Amman",
-			"JP|Asia/Tokyo",
-			"KE|Africa/Nairobi",
-			"KG|Asia/Bishkek",
-			"KH|Asia/Bangkok Asia/Phnom_Penh",
-			"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
-			"KM|Africa/Nairobi Indian/Comoro",
-			"KN|America/Puerto_Rico America/St_Kitts",
-			"KP|Asia/Pyongyang",
-			"KR|Asia/Seoul",
-			"KW|Asia/Riyadh Asia/Kuwait",
-			"KY|America/Panama America/Cayman",
-			"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
-			"LA|Asia/Bangkok Asia/Vientiane",
-			"LB|Asia/Beirut",
-			"LC|America/Puerto_Rico America/St_Lucia",
-			"LI|Europe/Zurich Europe/Vaduz",
-			"LK|Asia/Colombo",
-			"LR|Africa/Monrovia",
-			"LS|Africa/Johannesburg Africa/Maseru",
-			"LT|Europe/Vilnius",
-			"LU|Europe/Brussels Europe/Luxembourg",
-			"LV|Europe/Riga",
-			"LY|Africa/Tripoli",
-			"MA|Africa/Casablanca",
-			"MC|Europe/Paris Europe/Monaco",
-			"MD|Europe/Chisinau",
-			"ME|Europe/Belgrade Europe/Podgorica",
-			"MF|America/Puerto_Rico America/Marigot",
-			"MG|Africa/Nairobi Indian/Antananarivo",
-			"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
-			"MK|Europe/Belgrade Europe/Skopje",
-			"ML|Africa/Abidjan Africa/Bamako",
-			"MM|Asia/Yangon",
-			"MN|Asia/Ulaanbaatar Asia/Hovd",
-			"MO|Asia/Macau",
-			"MP|Pacific/Guam Pacific/Saipan",
-			"MQ|America/Martinique",
-			"MR|Africa/Abidjan Africa/Nouakchott",
-			"MS|America/Puerto_Rico America/Montserrat",
-			"MT|Europe/Malta",
-			"MU|Indian/Mauritius",
-			"MV|Indian/Maldives",
-			"MW|Africa/Maputo Africa/Blantyre",
-			"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana",
-			"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
-			"MZ|Africa/Maputo",
-			"NA|Africa/Windhoek",
-			"NC|Pacific/Noumea",
-			"NE|Africa/Lagos Africa/Niamey",
-			"NF|Pacific/Norfolk",
-			"NG|Africa/Lagos",
-			"NI|America/Managua",
-			"NL|Europe/Brussels Europe/Amsterdam",
-			"NO|Europe/Berlin Europe/Oslo",
-			"NP|Asia/Kathmandu",
-			"NR|Pacific/Nauru",
-			"NU|Pacific/Niue",
-			"NZ|Pacific/Auckland Pacific/Chatham",
-			"OM|Asia/Dubai Asia/Muscat",
-			"PA|America/Panama",
-			"PE|America/Lima",
-			"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
-			"PG|Pacific/Port_Moresby Pacific/Bougainville",
-			"PH|Asia/Manila",
-			"PK|Asia/Karachi",
-			"PL|Europe/Warsaw",
-			"PM|America/Miquelon",
-			"PN|Pacific/Pitcairn",
-			"PR|America/Puerto_Rico",
-			"PS|Asia/Gaza Asia/Hebron",
-			"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
-			"PW|Pacific/Palau",
-			"PY|America/Asuncion",
-			"QA|Asia/Qatar",
-			"RE|Asia/Dubai Indian/Reunion",
-			"RO|Europe/Bucharest",
-			"RS|Europe/Belgrade",
-			"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
-			"RW|Africa/Maputo Africa/Kigali",
-			"SA|Asia/Riyadh",
-			"SB|Pacific/Guadalcanal",
-			"SC|Asia/Dubai Indian/Mahe",
-			"SD|Africa/Khartoum",
-			"SE|Europe/Berlin Europe/Stockholm",
-			"SG|Asia/Singapore",
-			"SH|Africa/Abidjan Atlantic/St_Helena",
-			"SI|Europe/Belgrade Europe/Ljubljana",
-			"SJ|Europe/Berlin Arctic/Longyearbyen",
-			"SK|Europe/Prague Europe/Bratislava",
-			"SL|Africa/Abidjan Africa/Freetown",
-			"SM|Europe/Rome Europe/San_Marino",
-			"SN|Africa/Abidjan Africa/Dakar",
-			"SO|Africa/Nairobi Africa/Mogadishu",
-			"SR|America/Paramaribo",
-			"SS|Africa/Juba",
-			"ST|Africa/Sao_Tome",
-			"SV|America/El_Salvador",
-			"SX|America/Puerto_Rico America/Lower_Princes",
-			"SY|Asia/Damascus",
-			"SZ|Africa/Johannesburg Africa/Mbabane",
-			"TC|America/Grand_Turk",
-			"TD|Africa/Ndjamena",
-			"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
-			"TG|Africa/Abidjan Africa/Lome",
-			"TH|Asia/Bangkok",
-			"TJ|Asia/Dushanbe",
-			"TK|Pacific/Fakaofo",
-			"TL|Asia/Dili",
-			"TM|Asia/Ashgabat",
-			"TN|Africa/Tunis",
-			"TO|Pacific/Tongatapu",
-			"TR|Europe/Istanbul",
-			"TT|America/Puerto_Rico America/Port_of_Spain",
-			"TV|Pacific/Tarawa Pacific/Funafuti",
-			"TW|Asia/Taipei",
-			"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
-			"UA|Europe/Simferopol Europe/Kyiv",
-			"UG|Africa/Nairobi Africa/Kampala",
-			"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake",
-			"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
-			"UY|America/Montevideo",
-			"UZ|Asia/Samarkand Asia/Tashkent",
-			"VA|Europe/Rome Europe/Vatican",
-			"VC|America/Puerto_Rico America/St_Vincent",
-			"VE|America/Caracas",
-			"VG|America/Puerto_Rico America/Tortola",
-			"VI|America/Puerto_Rico America/St_Thomas",
-			"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
-			"VU|Pacific/Efate",
-			"WF|Pacific/Tarawa Pacific/Wallis",
-			"WS|Pacific/Apia",
-			"YE|Asia/Riyadh Asia/Aden",
-			"YT|Africa/Nairobi Indian/Mayotte",
-			"ZA|Africa/Johannesburg",
-			"ZM|Africa/Maputo Africa/Lusaka",
-			"ZW|Africa/Maputo Africa/Harare"
-		]
-	});
-
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/builds/moment-timezone-with-data.min.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone-with-data.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(M,z){"use strict";"object"==typeof module&&module.exports?module.exports=z(require("moment")):"function"==typeof define&&define.amd?define(["moment"],z):z(M.moment)}(this,function(O){"use strict";void 0===O.version&&O.default&&(O=O.default);var z,W={},A={},c={},d={},R={},M=(O&&"string"==typeof O.version||C("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"),O.version.split(".")),b=+M[0],p=+M[1];function q(M){return 96<M?M-87:64<M?M-29:M-48}function o(M){var z=0,b=M.split("."),p=b[0],O=b[1]||"",A=1,c=0,b=1;for(45===M.charCodeAt(0)&&(b=-(z=1));z<p.length;z++)c=60*c+q(p.charCodeAt(z));for(z=0;z<O.length;z++)A/=60,c+=q(O.charCodeAt(z))*A;return c*b}function a(M){for(var z=0;z<M.length;z++)M[z]=o(M[z])}function L(M,z){for(var b=[],p=0;p<z.length;p++)b[p]=M[z[p]];return b}function n(M){for(var M=M.split("|"),z=M[2].split(" "),b=M[3].split(""),p=M[4].split(" "),O=(a(z),a(b),a(p),p),A=b.length,c=0;c<A;c++)O[c]=Math.round((O[c-1]||0)+6e4*O[c]);return O[A-1]=1/0,{name:M[0],abbrs:L(M[1].split(" "),b),offsets:L(z,b),untils:p,population:0|M[5]}}function f(M){M&&this._set(n(M))}function N(M,z){this.name=M,this.zones=z}function B(M){var z=M.toTimeString(),b=z.match(/\([a-z ]+\)/i);"GMT"===(b=b&&b[0]?(b=b[0].match(/[A-Z]/g))?b.join(""):void 0:(b=z.match(/[A-Z]{3,5}/g))?b[0]:void 0)&&(b=void 0),this.at=+M,this.abbr=b,this.offset=M.getTimezoneOffset()}function i(M){this.zone=M,this.offsetScore=0,this.abbrScore=0}function X(){for(var M,z,b,p=(new Date).getFullYear()-2,O=new B(new Date(p,0,1)),A=O.offset,c=[O],q=1;q<48;q++)(b=new Date(p,q,1).getTimezoneOffset())!==A&&(M=function(M,z){for(var b;b=6e4*((z.at-M.at)/12e4|0);)(b=new B(new Date(M.at+b))).offset===M.offset?M=b:z=b;return M}(O,z=new B(new Date(p,q,1))),c.push(M),c.push(new B(new Date(M.at+6e4))),O=z,A=b);for(q=0;q<4;q++)c.push(new B(new Date(p+q,0,1))),c.push(new B(new Date(p+q,6,1)));return c}function u(M,z){return M.offsetScore!==z.offsetScore?M.offsetScore-z.offsetScore:M.abbrScore!==z.abbrScore?M.abbrScore-z.abbrScore:M.zone.population!==z.zone.population?z.zone.population-M.zone.population:z.zone.name.localeCompare(M.zone.name)}function e(){try{var M=Intl.DateTimeFormat().resolvedOptions().timeZone;if(M&&3<M.length){var z=d[r(M)];if(z)return z;C("Moment Timezone found "+M+" from the Intl api, but did not have that data loaded.")}}catch(M){}for(var b,p,O=X(),A=O.length,c=function(M){for(var z,b,p,O=M.length,A={},c=[],q={},o=0;o<O;o++)if(b=M[o].offset,!q.hasOwnProperty(b)){for(z in p=R[b]||{})p.hasOwnProperty(z)&&(A[z]=!0);q[b]=!0}for(o in A)A.hasOwnProperty(o)&&c.push(d[o]);return c}(O),q=[],o=0;o<c.length;o++){for(b=new i(t(c[o])),p=0;p<A;p++)b.scoreOffsetAt(O[p]);q.push(b)}return q.sort(u),0<q.length?q[0].zone.name:void 0}function r(M){return(M||"").toLowerCase().replace(/\//g,"_")}function T(M){var z,b,p,O;for("string"==typeof M&&(M=[M]),z=0;z<M.length;z++){O=r(b=(p=M[z].split("|"))[0]),W[O]=M[z],d[O]=b,c=A=o=q=void 0;var A,c,q=O,o=p[2].split(" ");for(a(o),A=0;A<o.length;A++)c=o[A],R[c]=R[c]||{},R[c][q]=!0}}function t(M,z){M=r(M);var b=W[M];return b instanceof f?b:"string"==typeof b?(b=new f(b),W[M]=b):A[M]&&z!==t&&(z=t(A[M],t))?((b=W[M]=new f)._set(z),b.name=d[M],b):null}function l(M){var z,b,p,O;for("string"==typeof M&&(M=[M]),z=0;z<M.length;z++)p=r((b=M[z].split("|"))[0]),O=r(b[1]),A[p]=O,d[p]=b[0],A[O]=p,d[O]=b[1]}function s(M){T(M.zones),l(M.links);var z,b,p,O=M.countries;if(O&&O.length)for(z=0;z<O.length;z++)b=(p=O[z].split("|"))[0].toUpperCase(),p=p[1].split(" "),c[b]=new N(b,p);S.dataVersion=M.version}function m(M){return m.didShowError||(m.didShowError=!0,C("moment.tz.zoneExists('"+M+"') has been deprecated in favor of !moment.tz.zone('"+M+"')")),!!t(M)}function E(M){var z="X"===M._f||"x"===M._f;return!(!M._a||void 0!==M._tzm||z)}function C(M){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(M)}function S(M){var z=Array.prototype.slice.call(arguments,0,-1),b=arguments[arguments.length-1],z=O.utc.apply(null,z);return!O.isMoment(M)&&E(z)&&(M=t(b))&&z.add(M.parse(z),"minutes"),z.tz(b),z}(b<2||2==b&&p<6)&&C("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+O.version+". See momentjs.com"),f.prototype={_set:function(M){this.name=M.name,this.abbrs=M.abbrs,this.untils=M.untils,this.offsets=M.offsets,this.population=M.population},_index:function(M){M=function(M,z){var b,p=z.length;if(M<z[0])return 0;if(1<p&&z[p-1]===1/0&&M>=z[p-2])return p-1;if(M>=z[p-1])return-1;for(var O=0,A=p-1;1<A-O;)z[b=Math.floor((O+A)/2)]<=M?O=b:A=b;return A}(+M,this.untils);if(0<=M)return M},countries:function(){var z=this.name;return Object.keys(c).filter(function(M){return-1!==c[M].zones.indexOf(z)})},parse:function(M){for(var z,b,p,O=+M,A=this.offsets,c=this.untils,q=c.length-1,o=0;o<q;o++)if(z=A[o],b=A[o+1],p=A[o&&o-1],z<b&&S.moveAmbiguousForward?z=b:p<z&&S.moveInvalidForward&&(z=p),O<c[o]-6e4*z)return A[o];return A[q]},abbr:function(M){return this.abbrs[this._index(M)]},offset:function(M){return C("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(M)]},utcOffset:function(M){return this.offsets[this._index(M)]}},i.prototype.scoreOffsetAt=function(M){this.offsetScore+=Math.abs(this.zone.utcOffset(M.at)-M.offset),this.zone.abbr(M.at).replace(/[^A-Z]/g,"")!==M.abbr&&this.abbrScore++},S.version="0.5.48",S.dataVersion="",S._zones=W,S._links=A,S._names=d,S._countries=c,S.add=T,S.link=l,S.load=s,S.zone=t,S.zoneExists=m,S.guess=function(M){return z=z&&!M?z:e()},S.names=function(){var M,z=[];for(M in d)d.hasOwnProperty(M)&&(W[M]||W[A[M]])&&d[M]&&z.push(d[M]);return z.sort()},S.Zone=f,S.unpack=n,S.unpackBase60=o,S.needsOffset=E,S.moveInvalidForward=!0,S.moveAmbiguousForward=!1,S.countries=function(){return Object.keys(c)},S.zonesForCountry=function(M,z){var b;return b=(b=M).toUpperCase(),(M=c[b]||null)?(b=M.zones.sort(),z?b.map(function(M){return{name:M,offset:t(M).utcOffset(new Date)}}):b):null};var g,M=O.fn;function P(M){return function(){return this._z?this._z.abbr(this):M.call(this)}}function D(M){return function(){return this._z=null,M.apply(this,arguments)}}O.tz=S,O.defaultZone=null,O.updateOffset=function(M,z){var b,p=O.defaultZone;void 0===M._z&&(p&&E(M)&&!M._isUTC&&M.isValid()&&(M._d=O.utc(M._a)._d,M.utc().add(p.parse(M),"minutes")),M._z=p),M._z&&(p=M._z.utcOffset(M),Math.abs(p)<16&&(p/=60),void 0!==M.utcOffset?(b=M._z,M.utcOffset(-p,z),M._z=b):M.zone(p,z))},M.tz=function(M,z){if(M){if("string"!=typeof M)throw new Error("Time zone name must be a string, got "+M+" ["+typeof M+"]");return this._z=t(M),this._z?O.updateOffset(this,z):C("Moment Timezone has no data for "+M+". See http://momentjs.com/timezone/docs/#/data-loading/."),this}if(this._z)return this._z.name},M.zoneName=P(M.zoneName),M.zoneAbbr=P(M.zoneAbbr),M.utc=D(M.utc),M.local=D(M.local),M.utcOffset=(g=M.utcOffset,function(){return 0<arguments.length&&(this._z=null),g.apply(this,arguments)}),O.tz.setDefault=function(M){return(b<2||2==b&&p<9)&&C("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+O.version+"."),O.defaultZone=M?t(M):null,O};M=O.momentProperties;return"[object Array]"===Object.prototype.toString.call(M)?(M.push("_z"),M.push("_a")):M&&(M._z=null),s({version:"2025b",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5","Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.i -20|01|-2sw2a.i|26e5","Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6","Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5","Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4","Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|","America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|","America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|","America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|","America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|","America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|","America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|","America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|","America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|","America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5","America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5","America/Bahia_Banderas|LMT MST CST MDT CDT|71 70 60 60 50|01213121313131313131313131313131313142424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5","America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4","America/Cancun|LMT CST EST CDT EDT|5L.4 60 50 50 40|01213132431313131313131313131313131313131312|-1UQG0 2q3C0 2tx0 wgP0 1lb0 14p0 1lb0 14o0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4","America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Coyhaique|LMT SMT -05 -04 -03|4M.g 4G.J 50 40 30|012131323232323232323434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvb.I MJbS.t fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|","America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2","America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mp0 8lz0 SN0 1cL0 pHB0 83r0 AU0 5MN0 1Rz0 38N0 Wn0 1qP0 11z0 1o10 11z0 3NA0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5","America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST MDT|7n.Q 70 60 60|01213121313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5","America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST MDT|75.E 70 60 60|01213121313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4","America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q3C0 24n0 wG10 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5","America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT MST CST MDT CDT|6F.g 70 60 60 50|012131242424242424242424242424242424242424242424242424242424242|-1UQG0 dep0 8lz0 16p0 11z0 1dd0 2gmp0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|","America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|","America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5","America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452","America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3","America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4","Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25","Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5","Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|","Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|","Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4","Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le80 1dnX0 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|","Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5","Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5","Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|LMT LMT PST PDT JST|fU.8 -83.Q -80 -90 -90|012323432323232|-54m83.Q 2d8A3.Q 1urM0 un0 bW10 nb0 7qo0 1MM0 klB0 lz0 TwN0 1bb0 uNB0 rz0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5","Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4","Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 Dc0 1iMu JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|LMT HMT -02 -01 +00 WET WEST|1G.E 1S.w 20 10 0 0 -10|012323232323232323232323232323232323232323232343234323432343232323232323232323232323232323232323232323434343434343434343434356434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 CT90 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 Ap0 An0 wo0 Eo0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 BJ90 1a00 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4","Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30","Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4","Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5","Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2","Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5","Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5","Etc/GMT-0|GMT|0|0||","Etc/GMT-1|+01|-10|0||","Etc/GMT-10|+10|-a0|0||","Etc/GMT-11|+11|-b0|0||","Etc/GMT-12|+12|-c0|0||","Etc/GMT-13|+13|-d0|0||","Etc/GMT-14|+14|-e0|0||","Etc/GMT-2|+02|-20|0||","Etc/GMT-3|+03|-30|0||","Etc/GMT-4|+04|-40|0||","Etc/GMT-5|+05|-50|0||","Etc/GMT-6|+06|-60|0||","Etc/GMT-7|+07|-70|0||","Etc/GMT-8|+08|-80|0||","Etc/GMT-9|+09|-90|0||","Etc/GMT+1|-01|10|0||","Etc/GMT+10|-10|a0|0||","Etc/GMT+11|-11|b0|0||","Etc/GMT+12|-12|c0|0||","Etc/GMT+2|-02|20|0||","Etc/GMT+3|-03|30|0||","Etc/GMT+4|-04|40|0||","Etc/GMT+5|-05|50|0||","Etc/GMT+6|-06|60|0||","Etc/GMT+7|-07|70|0||","Etc/GMT+8|-08|80|0||","Etc/GMT+9|-09|90|0||","Etc/UTC|UTC|0|0||","Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5","Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5","Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5","Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4","Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212124121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 oiK0 1cM0 1cM0 1fB0 1cM0 1cM0 1cM0 1fA0 1a00 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5","Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6","Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4","Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|","Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5","Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5","Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5","Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5","Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3","Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3","Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1","Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4","Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4","Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2","Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3","Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2","Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3","Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56","Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"],links:["Africa/Abidjan|Africa/Accra","Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/Reykjavik","Africa/Abidjan|Atlantic/St_Helena","Africa/Abidjan|Iceland","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Chicago|CST6CDT","America/Chicago|US/Central","America/Denver|America/Shiprock","America/Denver|MST7MDT","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|America/Yellowknife","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Godthab|America/Nuuk","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Iqaluit|America/Pangnirtung","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|PST8PDT","America/Los_Angeles|US/Pacific","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|EST5EDT","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Atikokan","America/Panama|America/Cayman","America/Panama|America/Coral_Harbour","America/Panama|EST","America/Phoenix|America/Creston","America/Phoenix|MST","America/Phoenix|US/Arizona","America/Puerto_Rico|America/Anguilla","America/Puerto_Rico|America/Antigua","America/Puerto_Rico|America/Aruba","America/Puerto_Rico|America/Blanc-Sablon","America/Puerto_Rico|America/Curacao","America/Puerto_Rico|America/Dominica","America/Puerto_Rico|America/Grenada","America/Puerto_Rico|America/Guadeloupe","America/Puerto_Rico|America/Kralendijk","America/Puerto_Rico|America/Lower_Princes","America/Puerto_Rico|America/Marigot","America/Puerto_Rico|America/Montserrat","America/Puerto_Rico|America/Port_of_Spain","America/Puerto_Rico|America/St_Barthelemy","America/Puerto_Rico|America/St_Kitts","America/Puerto_Rico|America/St_Lucia","America/Puerto_Rico|America/St_Thomas","America/Puerto_Rico|America/St_Vincent","America/Puerto_Rico|America/Tortola","America/Puerto_Rico|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|America/Nassau","America/Toronto|America/Nipigon","America/Toronto|America/Thunder_Bay","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|America/Rainy_River","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Bangkok|Indian/Christmas","Asia/Brunei|Asia/Kuching","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Dubai|Indian/Mahe","Asia/Dubai|Indian/Reunion","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Rangoon|Indian/Cocos","Asia/Riyadh|Antarctica/Syowa","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Choibalsan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Currie","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UTC|Etc/UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UCT","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Athens|EET","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Berlin|Arctic/Longyearbyen","Europe/Berlin|Atlantic/Jan_Mayen","Europe/Berlin|Europe/Copenhagen","Europe/Berlin|Europe/Oslo","Europe/Berlin|Europe/Stockholm","Europe/Brussels|CET","Europe/Brussels|Europe/Amsterdam","Europe/Brussels|Europe/Luxembourg","Europe/Brussels|MET","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Kiev|Europe/Kyiv","Europe/Kiev|Europe/Uzhgorod","Europe/Kiev|Europe/Zaporozhye","Europe/Lisbon|Portugal","Europe/Lisbon|WET","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Paris|Europe/Monaco","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Maldives|Indian/Kerguelen","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Enderbury|Pacific/Kanton","Pacific/Guadalcanal|Pacific/Pohnpei","Pacific/Guadalcanal|Pacific/Ponape","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|HST","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Port_Moresby|Antarctica/DumontDUrville","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Majuro","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"],countries:["AD|Europe/Andorra","AE|Asia/Dubai","AF|Asia/Kabul","AG|America/Puerto_Rico America/Antigua","AI|America/Puerto_Rico America/Anguilla","AL|Europe/Tirane","AM|Asia/Yerevan","AO|Africa/Lagos Africa/Luanda","AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa","AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia","AS|Pacific/Pago_Pago","AT|Europe/Vienna","AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo","AW|America/Puerto_Rico America/Aruba","AX|Europe/Helsinki Europe/Mariehamn","AZ|Asia/Baku","BA|Europe/Belgrade Europe/Sarajevo","BB|America/Barbados","BD|Asia/Dhaka","BE|Europe/Brussels","BF|Africa/Abidjan Africa/Ouagadougou","BG|Europe/Sofia","BH|Asia/Qatar Asia/Bahrain","BI|Africa/Maputo Africa/Bujumbura","BJ|Africa/Lagos Africa/Porto-Novo","BL|America/Puerto_Rico America/St_Barthelemy","BM|Atlantic/Bermuda","BN|Asia/Kuching Asia/Brunei","BO|America/La_Paz","BQ|America/Puerto_Rico America/Kralendijk","BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco","BS|America/Toronto America/Nassau","BT|Asia/Thimphu","BW|Africa/Maputo Africa/Gaborone","BY|Europe/Minsk","BZ|America/Belize","CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston","CC|Asia/Yangon Indian/Cocos","CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi","CF|Africa/Lagos Africa/Bangui","CG|Africa/Lagos Africa/Brazzaville","CH|Europe/Zurich","CI|Africa/Abidjan","CK|Pacific/Rarotonga","CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter","CM|Africa/Lagos Africa/Douala","CN|Asia/Shanghai Asia/Urumqi","CO|America/Bogota","CR|America/Costa_Rica","CU|America/Havana","CV|Atlantic/Cape_Verde","CW|America/Puerto_Rico America/Curacao","CX|Asia/Bangkok Indian/Christmas","CY|Asia/Nicosia Asia/Famagusta","CZ|Europe/Prague","DE|Europe/Zurich Europe/Berlin Europe/Busingen","DJ|Africa/Nairobi Africa/Djibouti","DK|Europe/Berlin Europe/Copenhagen","DM|America/Puerto_Rico America/Dominica","DO|America/Santo_Domingo","DZ|Africa/Algiers","EC|America/Guayaquil Pacific/Galapagos","EE|Europe/Tallinn","EG|Africa/Cairo","EH|Africa/El_Aaiun","ER|Africa/Nairobi Africa/Asmara","ES|Europe/Madrid Africa/Ceuta Atlantic/Canary","ET|Africa/Nairobi Africa/Addis_Ababa","FI|Europe/Helsinki","FJ|Pacific/Fiji","FK|Atlantic/Stanley","FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei","FO|Atlantic/Faroe","FR|Europe/Paris","GA|Africa/Lagos Africa/Libreville","GB|Europe/London","GD|America/Puerto_Rico America/Grenada","GE|Asia/Tbilisi","GF|America/Cayenne","GG|Europe/London Europe/Guernsey","GH|Africa/Abidjan Africa/Accra","GI|Europe/Gibraltar","GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule","GM|Africa/Abidjan Africa/Banjul","GN|Africa/Abidjan Africa/Conakry","GP|America/Puerto_Rico America/Guadeloupe","GQ|Africa/Lagos Africa/Malabo","GR|Europe/Athens","GS|Atlantic/South_Georgia","GT|America/Guatemala","GU|Pacific/Guam","GW|Africa/Bissau","GY|America/Guyana","HK|Asia/Hong_Kong","HN|America/Tegucigalpa","HR|Europe/Belgrade Europe/Zagreb","HT|America/Port-au-Prince","HU|Europe/Budapest","ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura","IE|Europe/Dublin","IL|Asia/Jerusalem","IM|Europe/London Europe/Isle_of_Man","IN|Asia/Kolkata","IO|Indian/Chagos","IQ|Asia/Baghdad","IR|Asia/Tehran","IS|Africa/Abidjan Atlantic/Reykjavik","IT|Europe/Rome","JE|Europe/London Europe/Jersey","JM|America/Jamaica","JO|Asia/Amman","JP|Asia/Tokyo","KE|Africa/Nairobi","KG|Asia/Bishkek","KH|Asia/Bangkok Asia/Phnom_Penh","KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati","KM|Africa/Nairobi Indian/Comoro","KN|America/Puerto_Rico America/St_Kitts","KP|Asia/Pyongyang","KR|Asia/Seoul","KW|Asia/Riyadh Asia/Kuwait","KY|America/Panama America/Cayman","KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral","LA|Asia/Bangkok Asia/Vientiane","LB|Asia/Beirut","LC|America/Puerto_Rico America/St_Lucia","LI|Europe/Zurich Europe/Vaduz","LK|Asia/Colombo","LR|Africa/Monrovia","LS|Africa/Johannesburg Africa/Maseru","LT|Europe/Vilnius","LU|Europe/Brussels Europe/Luxembourg","LV|Europe/Riga","LY|Africa/Tripoli","MA|Africa/Casablanca","MC|Europe/Paris Europe/Monaco","MD|Europe/Chisinau","ME|Europe/Belgrade Europe/Podgorica","MF|America/Puerto_Rico America/Marigot","MG|Africa/Nairobi Indian/Antananarivo","MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro","MK|Europe/Belgrade Europe/Skopje","ML|Africa/Abidjan Africa/Bamako","MM|Asia/Yangon","MN|Asia/Ulaanbaatar Asia/Hovd","MO|Asia/Macau","MP|Pacific/Guam Pacific/Saipan","MQ|America/Martinique","MR|Africa/Abidjan Africa/Nouakchott","MS|America/Puerto_Rico America/Montserrat","MT|Europe/Malta","MU|Indian/Mauritius","MV|Indian/Maldives","MW|Africa/Maputo Africa/Blantyre","MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana","MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur","MZ|Africa/Maputo","NA|Africa/Windhoek","NC|Pacific/Noumea","NE|Africa/Lagos Africa/Niamey","NF|Pacific/Norfolk","NG|Africa/Lagos","NI|America/Managua","NL|Europe/Brussels Europe/Amsterdam","NO|Europe/Berlin Europe/Oslo","NP|Asia/Kathmandu","NR|Pacific/Nauru","NU|Pacific/Niue","NZ|Pacific/Auckland Pacific/Chatham","OM|Asia/Dubai Asia/Muscat","PA|America/Panama","PE|America/Lima","PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier","PG|Pacific/Port_Moresby Pacific/Bougainville","PH|Asia/Manila","PK|Asia/Karachi","PL|Europe/Warsaw","PM|America/Miquelon","PN|Pacific/Pitcairn","PR|America/Puerto_Rico","PS|Asia/Gaza Asia/Hebron","PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores","PW|Pacific/Palau","PY|America/Asuncion","QA|Asia/Qatar","RE|Asia/Dubai Indian/Reunion","RO|Europe/Bucharest","RS|Europe/Belgrade","RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr","RW|Africa/Maputo Africa/Kigali","SA|Asia/Riyadh","SB|Pacific/Guadalcanal","SC|Asia/Dubai Indian/Mahe","SD|Africa/Khartoum","SE|Europe/Berlin Europe/Stockholm","SG|Asia/Singapore","SH|Africa/Abidjan Atlantic/St_Helena","SI|Europe/Belgrade Europe/Ljubljana","SJ|Europe/Berlin Arctic/Longyearbyen","SK|Europe/Prague Europe/Bratislava","SL|Africa/Abidjan Africa/Freetown","SM|Europe/Rome Europe/San_Marino","SN|Africa/Abidjan Africa/Dakar","SO|Africa/Nairobi Africa/Mogadishu","SR|America/Paramaribo","SS|Africa/Juba","ST|Africa/Sao_Tome","SV|America/El_Salvador","SX|America/Puerto_Rico America/Lower_Princes","SY|Asia/Damascus","SZ|Africa/Johannesburg Africa/Mbabane","TC|America/Grand_Turk","TD|Africa/Ndjamena","TF|Asia/Dubai Indian/Maldives Indian/Kerguelen","TG|Africa/Abidjan Africa/Lome","TH|Asia/Bangkok","TJ|Asia/Dushanbe","TK|Pacific/Fakaofo","TL|Asia/Dili","TM|Asia/Ashgabat","TN|Africa/Tunis","TO|Pacific/Tongatapu","TR|Europe/Istanbul","TT|America/Puerto_Rico America/Port_of_Spain","TV|Pacific/Tarawa Pacific/Funafuti","TW|Asia/Taipei","TZ|Africa/Nairobi Africa/Dar_es_Salaam","UA|Europe/Simferopol Europe/Kyiv","UG|Africa/Nairobi Africa/Kampala","UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake","US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu","UY|America/Montevideo","UZ|Asia/Samarkand Asia/Tashkent","VA|Europe/Rome Europe/Vatican","VC|America/Puerto_Rico America/St_Vincent","VE|America/Caracas","VG|America/Puerto_Rico America/Tortola","VI|America/Puerto_Rico America/St_Thomas","VN|Asia/Bangkok Asia/Ho_Chi_Minh","VU|Pacific/Efate","WF|Pacific/Tarawa Pacific/Wallis","WS|Pacific/Apia","YE|Asia/Riyadh Asia/Aden","YT|Africa/Nairobi Indian/Mayotte","ZA|Africa/Johannesburg","ZM|Africa/Maputo Africa/Lusaka","ZW|Africa/Maputo Africa/Harare"]}),O});
Index: ckend/node_modules/moment-timezone/builds/moment-timezone.min.js
===================================================================
--- backend/node_modules/moment-timezone/builds/moment-timezone.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(t,e){"use strict";"object"==typeof module&&module.exports?module.exports=e(require("moment")):"function"==typeof define&&define.amd?define(["moment"],e):e(t.moment)}(this,function(r){"use strict";void 0===r.version&&r.default&&(r=r.default);var e,a={},i={},s={},c={},l={},t=(r&&"string"==typeof r.version||D("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"),r.version.split(".")),n=+t[0],o=+t[1];function f(t){return 96<t?t-87:64<t?t-29:t-48}function u(t){var e=0,n=t.split("."),o=n[0],r=n[1]||"",i=1,s=0,n=1;for(45===t.charCodeAt(0)&&(n=-(e=1));e<o.length;e++)s=60*s+f(o.charCodeAt(e));for(e=0;e<r.length;e++)i/=60,s+=f(r.charCodeAt(e))*i;return s*n}function h(t){for(var e=0;e<t.length;e++)t[e]=u(t[e])}function p(t,e){for(var n=[],o=0;o<e.length;o++)n[o]=t[e[o]];return n}function m(t){for(var t=t.split("|"),e=t[2].split(" "),n=t[3].split(""),o=t[4].split(" "),r=(h(e),h(n),h(o),o),i=n.length,s=0;s<i;s++)r[s]=Math.round((r[s-1]||0)+6e4*r[s]);return r[i-1]=1/0,{name:t[0],abbrs:p(t[1].split(" "),n),offsets:p(e,n),untils:o,population:0|t[5]}}function d(t){t&&this._set(m(t))}function z(t,e){this.name=t,this.zones=e}function v(t){var e=t.toTimeString(),n=e.match(/\([a-z ]+\)/i);"GMT"===(n=n&&n[0]?(n=n[0].match(/[A-Z]/g))?n.join(""):void 0:(n=e.match(/[A-Z]{3,5}/g))?n[0]:void 0)&&(n=void 0),this.at=+t,this.abbr=n,this.offset=t.getTimezoneOffset()}function b(t){this.zone=t,this.offsetScore=0,this.abbrScore=0}function g(){for(var t,e,n,o=(new Date).getFullYear()-2,r=new v(new Date(o,0,1)),i=r.offset,s=[r],f=1;f<48;f++)(n=new Date(o,f,1).getTimezoneOffset())!==i&&(t=function(t,e){for(var n;n=6e4*((e.at-t.at)/12e4|0);)(n=new v(new Date(t.at+n))).offset===t.offset?t=n:e=n;return t}(r,e=new v(new Date(o,f,1))),s.push(t),s.push(new v(new Date(t.at+6e4))),r=e,i=n);for(f=0;f<4;f++)s.push(new v(new Date(o+f,0,1))),s.push(new v(new Date(o+f,6,1)));return s}function _(t,e){return t.offsetScore!==e.offsetScore?t.offsetScore-e.offsetScore:t.abbrScore!==e.abbrScore?t.abbrScore-e.abbrScore:t.zone.population!==e.zone.population?e.zone.population-t.zone.population:e.zone.name.localeCompare(t.zone.name)}function w(){try{var t=Intl.DateTimeFormat().resolvedOptions().timeZone;if(t&&3<t.length){var e=c[y(t)];if(e)return e;D("Moment Timezone found "+t+" from the Intl api, but did not have that data loaded.")}}catch(t){}for(var n,o,r=g(),i=r.length,s=function(t){for(var e,n,o,r=t.length,i={},s=[],f={},u=0;u<r;u++)if(n=t[u].offset,!f.hasOwnProperty(n)){for(e in o=l[n]||{})o.hasOwnProperty(e)&&(i[e]=!0);f[n]=!0}for(u in i)i.hasOwnProperty(u)&&s.push(c[u]);return s}(r),f=[],u=0;u<s.length;u++){for(n=new b(S(s[u])),o=0;o<i;o++)n.scoreOffsetAt(r[o]);f.push(n)}return f.sort(_),0<f.length?f[0].zone.name:void 0}function y(t){return(t||"").toLowerCase().replace(/\//g,"_")}function O(t){var e,n,o,r;for("string"==typeof t&&(t=[t]),e=0;e<t.length;e++){r=y(n=(o=t[e].split("|"))[0]),a[r]=t[e],c[r]=n,s=i=u=f=void 0;var i,s,f=r,u=o[2].split(" ");for(h(u),i=0;i<u.length;i++)s=u[i],l[s]=l[s]||{},l[s][f]=!0}}function S(t,e){t=y(t);var n=a[t];return n instanceof d?n:"string"==typeof n?(n=new d(n),a[t]=n):i[t]&&e!==S&&(e=S(i[t],S))?((n=a[t]=new d)._set(e),n.name=c[t],n):null}function M(t){var e,n,o,r;for("string"==typeof t&&(t=[t]),e=0;e<t.length;e++)o=y((n=t[e].split("|"))[0]),r=y(n[1]),i[o]=r,c[o]=n[0],i[r]=o,c[r]=n[1]}function j(t){return j.didShowError||(j.didShowError=!0,D("moment.tz.zoneExists('"+t+"') has been deprecated in favor of !moment.tz.zone('"+t+"')")),!!S(t)}function A(t){var e="X"===t._f||"x"===t._f;return!(!t._a||void 0!==t._tzm||e)}function D(t){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(t)}function T(t){var e=Array.prototype.slice.call(arguments,0,-1),n=arguments[arguments.length-1],e=r.utc.apply(null,e);return!r.isMoment(t)&&A(e)&&(t=S(n))&&e.add(t.parse(e),"minutes"),e.tz(n),e}(n<2||2==n&&o<6)&&D("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+r.version+". See momentjs.com"),d.prototype={_set:function(t){this.name=t.name,this.abbrs=t.abbrs,this.untils=t.untils,this.offsets=t.offsets,this.population=t.population},_index:function(t){t=function(t,e){var n,o=e.length;if(t<e[0])return 0;if(1<o&&e[o-1]===1/0&&t>=e[o-2])return o-1;if(t>=e[o-1])return-1;for(var r=0,i=o-1;1<i-r;)e[n=Math.floor((r+i)/2)]<=t?r=n:i=n;return i}(+t,this.untils);if(0<=t)return t},countries:function(){var e=this.name;return Object.keys(s).filter(function(t){return-1!==s[t].zones.indexOf(e)})},parse:function(t){for(var e,n,o,r=+t,i=this.offsets,s=this.untils,f=s.length-1,u=0;u<f;u++)if(e=i[u],n=i[u+1],o=i[u&&u-1],e<n&&T.moveAmbiguousForward?e=n:o<e&&T.moveInvalidForward&&(e=o),r<s[u]-6e4*e)return i[u];return i[f]},abbr:function(t){return this.abbrs[this._index(t)]},offset:function(t){return D("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(t)]},utcOffset:function(t){return this.offsets[this._index(t)]}},b.prototype.scoreOffsetAt=function(t){this.offsetScore+=Math.abs(this.zone.utcOffset(t.at)-t.offset),this.zone.abbr(t.at).replace(/[^A-Z]/g,"")!==t.abbr&&this.abbrScore++},T.version="0.5.48",T.dataVersion="",T._zones=a,T._links=i,T._names=c,T._countries=s,T.add=O,T.link=M,T.load=function(t){O(t.zones),M(t.links);var e,n,o,r=t.countries;if(r&&r.length)for(e=0;e<r.length;e++)n=(o=r[e].split("|"))[0].toUpperCase(),o=o[1].split(" "),s[n]=new z(n,o);T.dataVersion=t.version},T.zone=S,T.zoneExists=j,T.guess=function(t){return e=e&&!t?e:w()},T.names=function(){var t,e=[];for(t in c)c.hasOwnProperty(t)&&(a[t]||a[i[t]])&&c[t]&&e.push(c[t]);return e.sort()},T.Zone=d,T.unpack=m,T.unpackBase60=u,T.needsOffset=A,T.moveInvalidForward=!0,T.moveAmbiguousForward=!1,T.countries=function(){return Object.keys(s)},T.zonesForCountry=function(t,e){var n;return n=(n=t).toUpperCase(),(t=s[n]||null)?(n=t.zones.sort(),e?n.map(function(t){return{name:t,offset:S(t).utcOffset(new Date)}}):n):null};var x,t=r.fn;function C(t){return function(){return this._z?this._z.abbr(this):t.call(this)}}function Z(t){return function(){return this._z=null,t.apply(this,arguments)}}r.tz=T,r.defaultZone=null,r.updateOffset=function(t,e){var n,o=r.defaultZone;void 0===t._z&&(o&&A(t)&&!t._isUTC&&t.isValid()&&(t._d=r.utc(t._a)._d,t.utc().add(o.parse(t),"minutes")),t._z=o),t._z&&(o=t._z.utcOffset(t),Math.abs(o)<16&&(o/=60),void 0!==t.utcOffset?(n=t._z,t.utcOffset(-o,e),t._z=n):t.zone(o,e))},t.tz=function(t,e){if(t){if("string"!=typeof t)throw new Error("Time zone name must be a string, got "+t+" ["+typeof t+"]");return this._z=S(t),this._z?r.updateOffset(this,e):D("Moment Timezone has no data for "+t+". See http://momentjs.com/timezone/docs/#/data-loading/."),this}if(this._z)return this._z.name},t.zoneName=C(t.zoneName),t.zoneAbbr=C(t.zoneAbbr),t.utc=Z(t.utc),t.local=Z(t.local),t.utcOffset=(x=t.utcOffset,function(){return 0<arguments.length&&(this._z=null),x.apply(this,arguments)}),r.tz.setDefault=function(t){return(n<2||2==n&&o<9)&&D("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+r.version+"."),r.defaultZone=t?S(t):null,r};t=r.momentProperties;return"[object Array]"===Object.prototype.toString.call(t)?(t.push("_z"),t.push("_a")):t&&(t._z=null),r});
Index: ckend/node_modules/moment-timezone/changelog.md
===================================================================
--- backend/node_modules/moment-timezone/changelog.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,283 +1,0 @@
-### `0.5.48` _2025-03-23_
-* Updated data to IANA TZDB `2025b`.
-
-### `0.5.47` _2025-01-28_
-* Updated data to IANA TZDB `2025a`.
-
-### `0.5.46` _2024-10-06_
-* Updated data to IANA TZDB `2024b`. This only affects historical timestamps; no future timestamps have changed.
-
-### `0.5.45` _2024-02-04_
-* Updated data to IANA TZDB `2024a`.
-
-### `0.5.44` _2023-12-29_
-* Updated data to IANA TZDB `2023d`.
-* Fixed `.valueOf()` to return `NaN` for invalid zoned objects (matching default `moment`) [#1082](https://github.com/moment/moment-timezone/pull/1082).
-* Performance improvements:
-  * Use binary search when looking up zone information [#720](https://github.com/moment/moment-timezone/pull/720).
-  * Avoid redundant checks in `tz.guess()`.
-  * Avoid redundant `getZone()` calls in `.tz()`.
-
-### `0.5.43` _2023-03-31_
-* Updated data to IANA TZDB `2023c`
-
-### `0.5.42` _2023-03-24_
-* Updated data to IANA TZDB `2023b`
-
-### `0.5.41` _2023-02-25_
-* Updated `moment` npm dependency to `2.29.4` to remove automated warnings about insecure dependencies.
-  Moment Timezone still works with core Moment `2.9.0` and higher.
-* Updated all dev dependencies including UglifyJS, which produces the minified builds.
-* Added deprecation warning to the pre-built `moment-timezone-with-data-2012-2022` bundles [#1035](https://github.com/moment/moment-timezone/issues/1035).
-  Use the rolling `moment-timezone-with-data-10-year-range` files instead.
-
-### `0.5.40` _2022-12-11_
-* Updated data to IANA TZDB `2022g`
-
-### `0.5.39` _2022-11-13_
-* Updated data to IANA TZDB `2022f`
-
-### `0.5.38` _2022-10-15_
-* Updated data to IANA TZDB `2022e`
-* Added `moment.tz.dataVersion` property to TypeScript definitions [#930](https://github.com/moment/moment-timezone/issues/930)
-* Removed temporary `.tar.gz` files from npm releases [#1000](https://github.com/moment/moment-timezone/pull/1000)
-
-### `0.5.37` _2022-08-25_
-* Re-publish npm package, because of extra folder present in 0.5.36, check
-  https://github.com/moment/moment-timezone/issues/999
-
-### `0.5.36` _2022-08-25_
-* IANA TZDB 2022c
-* improvements/fixes to data pipeline
-
-### `0.5.35` _2022-08-23_
-* Fix command injection in data pipeline https://github.com/moment/moment-timezone/security/advisories/GHSA-56x4-j7p9-fcf9
-* Fix cleartext transmission of sensitive information https://github.com/moment/moment-timezone/security/advisories/GHSA-v78c-4p63-2j6c
-
-Thanks to the OpenSSF Alpha-Omega project for reporting these!
-
-### `0.5.34` _2021-11-10_
-* Updated data to IANA TZDB `2021e`
-
-### `0.5.33` _2021-02-06_
-* Updated data to IANA TZDB `2021a`
-
-### `0.5.32` _2020-11-14_
-* Updated data to IANA TZDB `2020d`
-
-### `0.5.31` _2020-05-16_
-* Fixed Travis builds for Node.js 4 and 6
-
-### `0.5.30` _2020-05-16_
-* Updated data to IANA TZDB `2020a`
-* Fixed typescript definitions
-
-NOTE: You might need to un-install @types/moment-timezone. Check
-https://github.com/moment/moment-timezone/issues/858 for more info
-
-### `0.5.29` _2020-05-16_
-* Merged fix of es6 module loading issue https://github.com/moment/moment-timezone/commit/1fd42349189b24e15c60f162dc8c40b42db79dfe
-* Merged PR with typescript declarations https://github.com/moment/moment-timezone/commit/ed529ea6fbcc70315c0c3f6d7c7cb70eadf56b03
-* Merged fixes to changelog https://github.com/moment/moment-timezone/commit/adb7d7b43c7328d814311ac1355bfeef88eab6e8
-
-### `0.5.28` _2020-02-21_
-Merged pull request #410 from @adgrace:
-* Added a method `moment.tz.zonesForCountry(country_code)` which returns all timezones for the country
-* Added a method `moment.tz(timezone_id).countries()` to get countries for some time zone
-* Added a method `moment.tz.countries()` to get all country codes
-* And as you know `moment.tz.zones()` already exists
-
-### `0.5.27` _2019-10-14_
-* Updated data to IANA TZDB `2019c`
-
-### `0.5.26` _2019-06-06_
-* Updated data to IANA TZDB `2019b`
-* Fix: stabilize Array.sort [#762](https://github.com/moment/moment-timezone/pull/762)
-
-### `0.5.25` _2019-04-17_
-* Fix `moment.tz.dataVersion` to return `2019a` [#742](https://github.com/moment/moment-timezone/issues/742)
-* Update path in bower.json
-
-### `0.5.24` _2019-04-17_
-* Updated data to IANA TZDB `2019a` [#737](https://github.com/moment/moment-timezone/issues/737)
-* Start shipping both a 1970-1930 file and a rolling 10-year file [#614](https://github.com/moment/moment-timezone/issues/614) [#697](https://github.com/moment/moment-timezone/issues/697)
-* Fixed bug where `_z` time zone name was not cleared with `.local()` or `.utcOffset(offset)` [#738](https://github.com/moment/moment-timezone/issues/738)
-
-### `0.5.23` _2018-10-28_
-* Fix minor issue with tz guessing in Russia [#691](https://github.com/moment/moment-timezone/pull/691)
-
-### `0.5.22` _2018-10-28_
-* Updated data to IANA TZDB `2018g` [#689](https://github.com/moment/moment-timezone/pull/689)
-* Fix issue with missing LMT entries for some zones, and fix data builds on Linux and Windows [#308](https://github.com/moment/moment-timezone/issues/308)
-
-### `0.5.21` _2018-06-23_
-* Bugfix: revert breaking change introduced in 0.5.18
-
-### `0.5.20` _2018-06-18_
-* Bugfix: accidentally commented code
-
-### `0.5.19` _2018-06-18_
-* Revert: moved moment to peerDependencies
-
-### `0.5.18` _2018-06-18_
-* Return error when timezone name is not a string.
-* Moved moment to peerDependencies [#628](https://github.com/moment/moment-timezone/pull/628)
-* Prefer nodejs to amd declaration [#573](https://github.com/moment/moment-timezone/pull/573)
-
-### `0.5.17` _2018-05-12_
-* Updated data to IANA TZDB `2018d`. [#616](https://github.com/moment/moment-timezone/pull/616)
-
-### `0.5.16` _2018-04-18_
-* Fixed Etc/UTC timezone recognition, updated tests. [#599](https://github.com/moment/moment-timezone/pull/599)
-* Updated minified files to contain IANA TZDB `2018d` data
-
-### `0.5.15` _2018-04-17_
-* Updated data to IANA TZDB `2018d`. [#596](https://github.com/moment/moment-timezone/pull/596)
-
-### `0.5.14` _2017-10-30_
-* Ensure Intl response is valid when guessing time zone. [#553](https://github.com/moment/moment-timezone/pull/553)
-* Updated data to IANA TZDB `2017c`. [#552](https://github.com/moment/moment-timezone/pull/552)
-* Convert to tz keeping wall time [#505](https://github.com/moment/moment-timezone/pull/505)
-* Make all time zones available for guessing. [#483](https://github.com/moment/moment-timezone/pull/483)
-* zone.offset has been deprecated in favor of zone.utcOffset [#398](https://github.com/moment/moment-timezone/pull/398)
-* Check for timestamp formats when parsing [#348](https://github.com/moment/moment-timezone/pull/348)
-
-### `0.5.13` _2017-04-04_
-* Bumped version to address Bower cache issues with last release.  [#474](https://github.com/moment/moment-timezone/issues/474)
-* (No actual changes otherwise)
-
-### `0.5.12` _2017-04-02_
-* Updated data to IANA TZDB `2017b`. [#422](https://github.com/moment/moment-timezone/pull/460)
-* Build the truncated data file as 2012-2022 (+/- 5 years).
-
-### `0.5.11` _2016-12-23_
-* Remove log statement when data is loaded twice. [#352](https://github.com/moment/moment-timezone/pull/352)
-
-### `0.5.10` _2016-11-27_
-* Updated data to IANA TZDB `2016j`. [#422](https://github.com/moment/moment-timezone/pull/422)
-
-### `0.5.9` _2016-11-03_
-* Fixed the output of `moment.tz.version`. [#413](https://github.com/moment/moment-timezone/issues/413)
-
-### `0.5.8` _2016-11-03_
-* Updated data to IANA TZDB `2016i`. [#411](https://github.com/moment/moment-timezone/pull/411)
-
-### `0.5.7` _2016-10-21_
-* Updated data to IANA TZDB `2016h`. [#403](https://github.com/moment/moment-timezone/pull/403)
-
-### `0.5.6` _2016-10-08_
-* Updated data to IANA TZDB `2016g`. [#394](https://github.com/moment/moment-timezone/pull/394)
-
-### `0.5.5` _2016-07-24_
-* Updated data to IANA TZDB `2016f`. [#360](https://github.com/moment/moment-timezone/pull/360)
-
-### `0.5.4` _2016-05-03_
-* Updated data to IANA TZDB `2016d`. [#336](https://github.com/moment/moment-timezone/pull/336)
-* Ignore the results from `Intl.DateTimeFormat().resolvedOptions().timeZone` if it is undefined. [#322](https://github.com/moment/moment-timezone/pull/322)
-
-### `0.5.3` _2016-03-24_
-* Updated data to IANA TZDB `2016c`. [#321](https://github.com/moment/moment-timezone/pull/321)
-
-### `0.5.2` _2016-03-15_
-* Updated data to IANA TZDB `2016b`. [#315](https://github.com/moment/moment-timezone/pull/315)
-
-### `0.5.1` _2016-03-01_
-* Updated data to IANA TZDB `2016a`. [#299](https://github.com/moment/moment-timezone/pull/299)
-* Fixed bug when `Date#toTimeString` did not return a known format. [#302](https://github.com/moment/moment-timezone/pull/302)  [#303](https://github.com/moment/moment-timezone/pull/303)
-* Added lookup on `Intl.DateTimeFormat().resolvedOptions().timeZone` to `moment.tz.guess()`. [#304](https://github.com/moment/moment-timezone/pull/304) [#291](https://github.com/moment/moment-timezone/pull/291)
-
-### `0.5.0` _2015-12-28_
-* Added support for guessing the user's timezone via `moment.tz.guess()`. [#285](https://github.com/moment/moment-timezone/pull/285)
-* Fixed UMD export issue when there was an html element with `id=exports`. [#275](https://github.com/moment/moment-timezone/pull/275)
-* Removed jspm specific dependencies from `package.json`. [#284](https://github.com/moment/moment-timezone/pull/284)
-
-### `0.4.1` _2015-10-07_
-* Updated data to IANA TZDB `2015e`. [#253](https://github.com/moment/moment-timezone/pull/253)
-* Updated data to IANA TZDB `2015f`. [#253](https://github.com/moment/moment-timezone/pull/253)
-* Updated data to IANA TZDB `2015g`. [#255](https://github.com/moment/moment-timezone/pull/255)
-* Added jspm dependencies for moment. [#234](https://github.com/moment/moment-timezone/pull/234)
-* Included builds directory in npm. [#237](https://github.com/moment/moment-timezone/pull/237)
-* Removed version field from bower.json. [#230](https://github.com/moment/moment-timezone/pull/230)
-
-### `0.4.0` _2015-05-30_
-* Updated data to IANA TZDB `2015b`. [#201](https://github.com/moment/moment-timezone/pull/201)
-* Updated data to IANA TZDB `2015c`. [#214](https://github.com/moment/moment-timezone/pull/214)
-* Updated data to IANA TZDB `2015d`. [#214](https://github.com/moment/moment-timezone/pull/214)
-* Updated zone getter to allow lazy unpacking to improve initial page load times. [#216](https://github.com/moment/moment-timezone/pull/216)
-* Added a `package.json` `jspm:main` entry point. [#194](https://github.com/moment/moment-timezone/pull/194)
-* Added `composer.json`. [#222](https://github.com/moment/moment-timezone/pull/222)
-* Added an error message when trying to load moment-timezone twice. [#212](https://github.com/moment/moment-timezone/pull/212)
-
-### `0.3.1` _2015-03-16_
-* Updated data to IANA TZDB `2015a`. [#183](https://github.com/moment/moment-timezone/pull/183)
-
-### `0.3.0` _2015-01-13_
-
-* *Breaking:* Added country data to the `meta/*.json` files. Restructured the data to support multiple countries per zone. [#162](https://github.com/moment/moment-timezone/pull/162)
-* Added the ability to set a default timezone for all new moments. [#152](https://github.com/moment/moment-timezone/pull/152)
-* Fixed a bug when passing a moment with an offset to `moment.tz`. [#169](https://github.com/moment/moment-timezone/pull/169)
-* Fixed a deprecation in moment core, changing `moment#zone` to `moment#utcOffset`. [#168](https://github.com/moment/moment-timezone/pull/168)
-
-### `0.2.5` _2014-11-12_
-* Updated data to IANA TZDB `2014j`. [#151](https://github.com/moment/moment-timezone/pull/151)
-
-### `0.2.4` _2014-10-20_
-* Updated data to IANA TZDB `2014i`. [#142](https://github.com/moment/moment-timezone/pull/142)
-
-### `0.2.3` _2014-10-20_
-* Updated data to IANA TZDB `2014h`. [#141](https://github.com/moment/moment-timezone/pull/141)
-
-### `0.2.2` _2014-09-04_
-* Updated data to IANA TZDB `2014g`. [#126](https://github.com/moment/moment-timezone/pull/126)
-* Added a warning when using `moment-timezone` with `moment<2.6.0`.
-
-### `0.2.1` _2014-08-02_
-* Fixed support for `moment@2.8.1+`.
-
-### `0.2.0` _2014-07-21_
-* Added the ability to configure whether ambiguous or invalid input is rolled forward or backward. [#101](https://github.com/moment/moment-timezone/pull/101)
-* Added `moment>=2.6.0` as a dependency in `bower.json`. [#107](https://github.com/moment/moment-timezone/issues/107)
-* Fixed getting the name of a zone that was added as a linked zone. [#104](https://github.com/moment/moment-timezone/pull/104)
-* Added an error message when a zone was not loaded. [#106](https://github.com/moment/moment-timezone/issues/106)
-
-### `0.1.0` _2014-06-23_
-* *Breaking:* Changed data format from Zones+Rules to just Zones. [#82](https://github.com/moment/moment-timezone/pull/82)
-* *Breaking:* Removed `moment.tz.{addRule,addZone,zoneExists,zones}` as they are no longer relevant with the new data format.
-* Made library 20x faster. [JSPerf results](http://jsperf.com/moment-timezone-0-1-0/2)
-* Completely rewrote internals to support new data format.
-* Updated the data collection process to get data directly from http://www.iana.org/time-zones.
-* Updated data to IANA TZDB `2014e`.
-* Updated `bower.json` to use a browser specific `main:` entry point.
-* Added built files with included data.
-* Added support for accurately parsing input around DST changes. [#93](https://github.com/moment/moment-timezone/pull/93)
-* Added comprehensive documentation at [momentjs.com/timezone/docs/](http://momentjs.com/timezone/docs/).
-* Added `moment.tz.link` for linking two identical zones.
-* Added `moment.tz.zone` for getting a loaded zone.
-* Added `moment.tz.load` for loading a bundled version of data from the IANA TZDB.
-* Added `moment.tz.names` for getting the names of all the loaded timezones.
-* Added `moment.tz.unpack` and `moment.tz.unpackBase60` for unpacking data.
-* Added `moment-timezone-utils.js` for working with the packed and unpacked data.
-* Fixed major memory leak. [#79](https://github.com/moment/moment-timezone/issues/79)
-* Fixed global export to allow use in web workers. [#78](https://github.com/moment/moment-timezone/pull/78)
-* Fixed global export in browser environments that define `window.module`. [#76](https://github.com/moment/moment-timezone/pull/76)
-
-### `0.0.6` _2014-04-20_
-* Fixed issue with preventing loading moment-timezone more than once. [#75](https://github.com/moment/moment-timezone/pull/75)
-
-### `0.0.5` _2014-04-17_
-* Improved performance with memoization. [#39](https://github.com/moment/moment-timezone/issues/39)
-* Published only necessary files to npm. [#46](https://github.com/moment/moment-timezone/issues/46)
-* Added better handling of timezones around DST. [#53](https://github.com/moment/moment-timezone/issues/53) [#61](https://github.com/moment/moment-timezone/issues/61) [#70](https://github.com/moment/moment-timezone/issues/70)
-* Added Browserify support. [#41](https://github.com/moment/moment-timezone/issues/41)
-* Added `moment.tz.zoneExists` [#73](https://github.com/moment/moment-timezone/issues/73)
-* Fixed cloning moments with a timezone. [#71](https://github.com/moment/moment-timezone/issues/71)
-* Prevent loading moment-timezone more than once. [#74](https://github.com/moment/moment-timezone/issues/74)
-
-### `0.0.3` _2013-10-10_
-* Added Bower support.
-* Added support for newer versions of moment.
-* Added support for constructing a moment with a string and zone.
-* Added more links and timezone names in moment-timezone.json
-
-### `0.0.1` _2013-07-17_
-* Initial version.
Index: ckend/node_modules/moment-timezone/composer.json
===================================================================
--- backend/node_modules/moment-timezone/composer.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-{
-  "name": "moment/moment-timezone",
-  "description": "Parse and display dates in any timezone",
-  "version": "0.5.48",
-  "keywords": [
-    "moment",
-    "date",
-    "time",
-    "timezone",
-    "olson",
-    "iana",
-    "zone",
-    "tz"
-  ],
-  "homepage": "http://momentjs.com/timezone/",
-  "license": "MIT",
-  "support": {
-    "issues": "https://github.com/moment/moment-timezone/issues",
-    "source": "https://github.com/moment/moment-timezone"
-  },
-  "authors": [
-    {
-      "name": "Tim Wood",
-      "email": "washwithcare@gmail.com",
-      "homepage": "http://timwoodcreates.com/"
-    }
-  ],
-  "type": "component",
-  "require": {
-    "robloach/component-installer": "*",
-    "moment/moment": ">=2.9.0"
-  },
-  "extra": {
-    "component": {
-      "scripts": [
-        "moment-timezone.js"
-      ],
-      "files": [
-        "builds/*.js"
-      ]
-    }
-  }
-}
Index: ckend/node_modules/moment-timezone/data/meta/latest.json
===================================================================
--- backend/node_modules/moment-timezone/data/meta/latest.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5891 +1,0 @@
-{
-	"version": "2025b",
-	"countries": {
-		"AD": {
-			"name": "Andorra",
-			"abbr": "AD",
-			"zones": [
-				"Europe/Andorra"
-			]
-		},
-		"AE": {
-			"name": "United Arab Emirates",
-			"abbr": "AE",
-			"zones": [
-				"Asia/Dubai"
-			]
-		},
-		"AF": {
-			"name": "Afghanistan",
-			"abbr": "AF",
-			"zones": [
-				"Asia/Kabul"
-			]
-		},
-		"AG": {
-			"name": "Antigua & Barbuda",
-			"abbr": "AG",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Antigua"
-			]
-		},
-		"AI": {
-			"name": "Anguilla",
-			"abbr": "AI",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Anguilla"
-			]
-		},
-		"AL": {
-			"name": "Albania",
-			"abbr": "AL",
-			"zones": [
-				"Europe/Tirane"
-			]
-		},
-		"AM": {
-			"name": "Armenia",
-			"abbr": "AM",
-			"zones": [
-				"Asia/Yerevan"
-			]
-		},
-		"AO": {
-			"name": "Angola",
-			"abbr": "AO",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Luanda"
-			]
-		},
-		"AQ": {
-			"name": "Antarctica",
-			"abbr": "AQ",
-			"zones": [
-				"Antarctica/Casey",
-				"Antarctica/Davis",
-				"Antarctica/Mawson",
-				"Antarctica/Palmer",
-				"Antarctica/Rothera",
-				"Antarctica/Troll",
-				"Antarctica/Vostok",
-				"Pacific/Auckland",
-				"Pacific/Port_Moresby",
-				"Asia/Riyadh",
-				"Asia/Singapore",
-				"Antarctica/McMurdo",
-				"Antarctica/DumontDUrville",
-				"Antarctica/Syowa"
-			]
-		},
-		"AR": {
-			"name": "Argentina",
-			"abbr": "AR",
-			"zones": [
-				"America/Argentina/Buenos_Aires",
-				"America/Argentina/Cordoba",
-				"America/Argentina/Salta",
-				"America/Argentina/Jujuy",
-				"America/Argentina/Tucuman",
-				"America/Argentina/Catamarca",
-				"America/Argentina/La_Rioja",
-				"America/Argentina/San_Juan",
-				"America/Argentina/Mendoza",
-				"America/Argentina/San_Luis",
-				"America/Argentina/Rio_Gallegos",
-				"America/Argentina/Ushuaia"
-			]
-		},
-		"AS": {
-			"name": "Samoa (American)",
-			"abbr": "AS",
-			"zones": [
-				"Pacific/Pago_Pago"
-			]
-		},
-		"AT": {
-			"name": "Austria",
-			"abbr": "AT",
-			"zones": [
-				"Europe/Vienna"
-			]
-		},
-		"AU": {
-			"name": "Australia",
-			"abbr": "AU",
-			"zones": [
-				"Australia/Lord_Howe",
-				"Antarctica/Macquarie",
-				"Australia/Hobart",
-				"Australia/Melbourne",
-				"Australia/Sydney",
-				"Australia/Broken_Hill",
-				"Australia/Brisbane",
-				"Australia/Lindeman",
-				"Australia/Adelaide",
-				"Australia/Darwin",
-				"Australia/Perth",
-				"Australia/Eucla",
-				"Asia/Tokyo"
-			]
-		},
-		"AW": {
-			"name": "Aruba",
-			"abbr": "AW",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Aruba"
-			]
-		},
-		"AX": {
-			"name": "Åland Islands",
-			"abbr": "AX",
-			"zones": [
-				"Europe/Helsinki",
-				"Europe/Mariehamn"
-			]
-		},
-		"AZ": {
-			"name": "Azerbaijan",
-			"abbr": "AZ",
-			"zones": [
-				"Asia/Baku"
-			]
-		},
-		"BA": {
-			"name": "Bosnia & Herzegovina",
-			"abbr": "BA",
-			"zones": [
-				"Europe/Belgrade",
-				"Europe/Sarajevo"
-			]
-		},
-		"BB": {
-			"name": "Barbados",
-			"abbr": "BB",
-			"zones": [
-				"America/Barbados"
-			]
-		},
-		"BD": {
-			"name": "Bangladesh",
-			"abbr": "BD",
-			"zones": [
-				"Asia/Dhaka"
-			]
-		},
-		"BE": {
-			"name": "Belgium",
-			"abbr": "BE",
-			"zones": [
-				"Europe/Brussels"
-			]
-		},
-		"BF": {
-			"name": "Burkina Faso",
-			"abbr": "BF",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Ouagadougou"
-			]
-		},
-		"BG": {
-			"name": "Bulgaria",
-			"abbr": "BG",
-			"zones": [
-				"Europe/Sofia"
-			]
-		},
-		"BH": {
-			"name": "Bahrain",
-			"abbr": "BH",
-			"zones": [
-				"Asia/Qatar",
-				"Asia/Bahrain"
-			]
-		},
-		"BI": {
-			"name": "Burundi",
-			"abbr": "BI",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Bujumbura"
-			]
-		},
-		"BJ": {
-			"name": "Benin",
-			"abbr": "BJ",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Porto-Novo"
-			]
-		},
-		"BL": {
-			"name": "St Barthelemy",
-			"abbr": "BL",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/St_Barthelemy"
-			]
-		},
-		"BM": {
-			"name": "Bermuda",
-			"abbr": "BM",
-			"zones": [
-				"Atlantic/Bermuda"
-			]
-		},
-		"BN": {
-			"name": "Brunei",
-			"abbr": "BN",
-			"zones": [
-				"Asia/Kuching",
-				"Asia/Brunei"
-			]
-		},
-		"BO": {
-			"name": "Bolivia",
-			"abbr": "BO",
-			"zones": [
-				"America/La_Paz"
-			]
-		},
-		"BQ": {
-			"name": "Caribbean NL",
-			"abbr": "BQ",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Kralendijk"
-			]
-		},
-		"BR": {
-			"name": "Brazil",
-			"abbr": "BR",
-			"zones": [
-				"America/Noronha",
-				"America/Belem",
-				"America/Fortaleza",
-				"America/Recife",
-				"America/Araguaina",
-				"America/Maceio",
-				"America/Bahia",
-				"America/Sao_Paulo",
-				"America/Campo_Grande",
-				"America/Cuiaba",
-				"America/Santarem",
-				"America/Porto_Velho",
-				"America/Boa_Vista",
-				"America/Manaus",
-				"America/Eirunepe",
-				"America/Rio_Branco"
-			]
-		},
-		"BS": {
-			"name": "Bahamas",
-			"abbr": "BS",
-			"zones": [
-				"America/Toronto",
-				"America/Nassau"
-			]
-		},
-		"BT": {
-			"name": "Bhutan",
-			"abbr": "BT",
-			"zones": [
-				"Asia/Thimphu"
-			]
-		},
-		"BW": {
-			"name": "Botswana",
-			"abbr": "BW",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Gaborone"
-			]
-		},
-		"BY": {
-			"name": "Belarus",
-			"abbr": "BY",
-			"zones": [
-				"Europe/Minsk"
-			]
-		},
-		"BZ": {
-			"name": "Belize",
-			"abbr": "BZ",
-			"zones": [
-				"America/Belize"
-			]
-		},
-		"CA": {
-			"name": "Canada",
-			"abbr": "CA",
-			"zones": [
-				"America/St_Johns",
-				"America/Halifax",
-				"America/Glace_Bay",
-				"America/Moncton",
-				"America/Goose_Bay",
-				"America/Toronto",
-				"America/Iqaluit",
-				"America/Winnipeg",
-				"America/Resolute",
-				"America/Rankin_Inlet",
-				"America/Regina",
-				"America/Swift_Current",
-				"America/Edmonton",
-				"America/Cambridge_Bay",
-				"America/Inuvik",
-				"America/Dawson_Creek",
-				"America/Fort_Nelson",
-				"America/Whitehorse",
-				"America/Dawson",
-				"America/Vancouver",
-				"America/Panama",
-				"America/Puerto_Rico",
-				"America/Phoenix",
-				"America/Blanc-Sablon",
-				"America/Atikokan",
-				"America/Creston"
-			]
-		},
-		"CC": {
-			"name": "Cocos (Keeling) Islands",
-			"abbr": "CC",
-			"zones": [
-				"Asia/Yangon",
-				"Indian/Cocos"
-			]
-		},
-		"CD": {
-			"name": "Congo (Dem. Rep.)",
-			"abbr": "CD",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Lagos",
-				"Africa/Kinshasa",
-				"Africa/Lubumbashi"
-			]
-		},
-		"CF": {
-			"name": "Central African Rep.",
-			"abbr": "CF",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Bangui"
-			]
-		},
-		"CG": {
-			"name": "Congo (Rep.)",
-			"abbr": "CG",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Brazzaville"
-			]
-		},
-		"CH": {
-			"name": "Switzerland",
-			"abbr": "CH",
-			"zones": [
-				"Europe/Zurich"
-			]
-		},
-		"CI": {
-			"name": "Côte d'Ivoire",
-			"abbr": "CI",
-			"zones": [
-				"Africa/Abidjan"
-			]
-		},
-		"CK": {
-			"name": "Cook Islands",
-			"abbr": "CK",
-			"zones": [
-				"Pacific/Rarotonga"
-			]
-		},
-		"CL": {
-			"name": "Chile",
-			"abbr": "CL",
-			"zones": [
-				"America/Santiago",
-				"America/Coyhaique",
-				"America/Punta_Arenas",
-				"Pacific/Easter"
-			]
-		},
-		"CM": {
-			"name": "Cameroon",
-			"abbr": "CM",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Douala"
-			]
-		},
-		"CN": {
-			"name": "China",
-			"abbr": "CN",
-			"zones": [
-				"Asia/Shanghai",
-				"Asia/Urumqi"
-			]
-		},
-		"CO": {
-			"name": "Colombia",
-			"abbr": "CO",
-			"zones": [
-				"America/Bogota"
-			]
-		},
-		"CR": {
-			"name": "Costa Rica",
-			"abbr": "CR",
-			"zones": [
-				"America/Costa_Rica"
-			]
-		},
-		"CU": {
-			"name": "Cuba",
-			"abbr": "CU",
-			"zones": [
-				"America/Havana"
-			]
-		},
-		"CV": {
-			"name": "Cape Verde",
-			"abbr": "CV",
-			"zones": [
-				"Atlantic/Cape_Verde"
-			]
-		},
-		"CW": {
-			"name": "Curaçao",
-			"abbr": "CW",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Curacao"
-			]
-		},
-		"CX": {
-			"name": "Christmas Island",
-			"abbr": "CX",
-			"zones": [
-				"Asia/Bangkok",
-				"Indian/Christmas"
-			]
-		},
-		"CY": {
-			"name": "Cyprus",
-			"abbr": "CY",
-			"zones": [
-				"Asia/Nicosia",
-				"Asia/Famagusta"
-			]
-		},
-		"CZ": {
-			"name": "Czech Republic",
-			"abbr": "CZ",
-			"zones": [
-				"Europe/Prague"
-			]
-		},
-		"DE": {
-			"name": "Germany",
-			"abbr": "DE",
-			"zones": [
-				"Europe/Zurich",
-				"Europe/Berlin",
-				"Europe/Busingen"
-			]
-		},
-		"DJ": {
-			"name": "Djibouti",
-			"abbr": "DJ",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Djibouti"
-			]
-		},
-		"DK": {
-			"name": "Denmark",
-			"abbr": "DK",
-			"zones": [
-				"Europe/Berlin",
-				"Europe/Copenhagen"
-			]
-		},
-		"DM": {
-			"name": "Dominica",
-			"abbr": "DM",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Dominica"
-			]
-		},
-		"DO": {
-			"name": "Dominican Republic",
-			"abbr": "DO",
-			"zones": [
-				"America/Santo_Domingo"
-			]
-		},
-		"DZ": {
-			"name": "Algeria",
-			"abbr": "DZ",
-			"zones": [
-				"Africa/Algiers"
-			]
-		},
-		"EC": {
-			"name": "Ecuador",
-			"abbr": "EC",
-			"zones": [
-				"America/Guayaquil",
-				"Pacific/Galapagos"
-			]
-		},
-		"EE": {
-			"name": "Estonia",
-			"abbr": "EE",
-			"zones": [
-				"Europe/Tallinn"
-			]
-		},
-		"EG": {
-			"name": "Egypt",
-			"abbr": "EG",
-			"zones": [
-				"Africa/Cairo"
-			]
-		},
-		"EH": {
-			"name": "Western Sahara",
-			"abbr": "EH",
-			"zones": [
-				"Africa/El_Aaiun"
-			]
-		},
-		"ER": {
-			"name": "Eritrea",
-			"abbr": "ER",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Asmara"
-			]
-		},
-		"ES": {
-			"name": "Spain",
-			"abbr": "ES",
-			"zones": [
-				"Europe/Madrid",
-				"Africa/Ceuta",
-				"Atlantic/Canary"
-			]
-		},
-		"ET": {
-			"name": "Ethiopia",
-			"abbr": "ET",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Addis_Ababa"
-			]
-		},
-		"FI": {
-			"name": "Finland",
-			"abbr": "FI",
-			"zones": [
-				"Europe/Helsinki"
-			]
-		},
-		"FJ": {
-			"name": "Fiji",
-			"abbr": "FJ",
-			"zones": [
-				"Pacific/Fiji"
-			]
-		},
-		"FK": {
-			"name": "Falkland Islands",
-			"abbr": "FK",
-			"zones": [
-				"Atlantic/Stanley"
-			]
-		},
-		"FM": {
-			"name": "Micronesia",
-			"abbr": "FM",
-			"zones": [
-				"Pacific/Kosrae",
-				"Pacific/Port_Moresby",
-				"Pacific/Guadalcanal",
-				"Pacific/Chuuk",
-				"Pacific/Pohnpei"
-			]
-		},
-		"FO": {
-			"name": "Faroe Islands",
-			"abbr": "FO",
-			"zones": [
-				"Atlantic/Faroe"
-			]
-		},
-		"FR": {
-			"name": "France",
-			"abbr": "FR",
-			"zones": [
-				"Europe/Paris"
-			]
-		},
-		"GA": {
-			"name": "Gabon",
-			"abbr": "GA",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Libreville"
-			]
-		},
-		"GB": {
-			"name": "Britain (UK)",
-			"abbr": "GB",
-			"zones": [
-				"Europe/London"
-			]
-		},
-		"GD": {
-			"name": "Grenada",
-			"abbr": "GD",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Grenada"
-			]
-		},
-		"GE": {
-			"name": "Georgia",
-			"abbr": "GE",
-			"zones": [
-				"Asia/Tbilisi"
-			]
-		},
-		"GF": {
-			"name": "French Guiana",
-			"abbr": "GF",
-			"zones": [
-				"America/Cayenne"
-			]
-		},
-		"GG": {
-			"name": "Guernsey",
-			"abbr": "GG",
-			"zones": [
-				"Europe/London",
-				"Europe/Guernsey"
-			]
-		},
-		"GH": {
-			"name": "Ghana",
-			"abbr": "GH",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Accra"
-			]
-		},
-		"GI": {
-			"name": "Gibraltar",
-			"abbr": "GI",
-			"zones": [
-				"Europe/Gibraltar"
-			]
-		},
-		"GL": {
-			"name": "Greenland",
-			"abbr": "GL",
-			"zones": [
-				"America/Nuuk",
-				"America/Danmarkshavn",
-				"America/Scoresbysund",
-				"America/Thule"
-			]
-		},
-		"GM": {
-			"name": "Gambia",
-			"abbr": "GM",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Banjul"
-			]
-		},
-		"GN": {
-			"name": "Guinea",
-			"abbr": "GN",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Conakry"
-			]
-		},
-		"GP": {
-			"name": "Guadeloupe",
-			"abbr": "GP",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Guadeloupe"
-			]
-		},
-		"GQ": {
-			"name": "Equatorial Guinea",
-			"abbr": "GQ",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Malabo"
-			]
-		},
-		"GR": {
-			"name": "Greece",
-			"abbr": "GR",
-			"zones": [
-				"Europe/Athens"
-			]
-		},
-		"GS": {
-			"name": "South Georgia & the South Sandwich Islands",
-			"abbr": "GS",
-			"zones": [
-				"Atlantic/South_Georgia"
-			]
-		},
-		"GT": {
-			"name": "Guatemala",
-			"abbr": "GT",
-			"zones": [
-				"America/Guatemala"
-			]
-		},
-		"GU": {
-			"name": "Guam",
-			"abbr": "GU",
-			"zones": [
-				"Pacific/Guam"
-			]
-		},
-		"GW": {
-			"name": "Guinea-Bissau",
-			"abbr": "GW",
-			"zones": [
-				"Africa/Bissau"
-			]
-		},
-		"GY": {
-			"name": "Guyana",
-			"abbr": "GY",
-			"zones": [
-				"America/Guyana"
-			]
-		},
-		"HK": {
-			"name": "Hong Kong",
-			"abbr": "HK",
-			"zones": [
-				"Asia/Hong_Kong"
-			]
-		},
-		"HN": {
-			"name": "Honduras",
-			"abbr": "HN",
-			"zones": [
-				"America/Tegucigalpa"
-			]
-		},
-		"HR": {
-			"name": "Croatia",
-			"abbr": "HR",
-			"zones": [
-				"Europe/Belgrade",
-				"Europe/Zagreb"
-			]
-		},
-		"HT": {
-			"name": "Haiti",
-			"abbr": "HT",
-			"zones": [
-				"America/Port-au-Prince"
-			]
-		},
-		"HU": {
-			"name": "Hungary",
-			"abbr": "HU",
-			"zones": [
-				"Europe/Budapest"
-			]
-		},
-		"ID": {
-			"name": "Indonesia",
-			"abbr": "ID",
-			"zones": [
-				"Asia/Jakarta",
-				"Asia/Pontianak",
-				"Asia/Makassar",
-				"Asia/Jayapura"
-			]
-		},
-		"IE": {
-			"name": "Ireland",
-			"abbr": "IE",
-			"zones": [
-				"Europe/Dublin"
-			]
-		},
-		"IL": {
-			"name": "Israel",
-			"abbr": "IL",
-			"zones": [
-				"Asia/Jerusalem"
-			]
-		},
-		"IM": {
-			"name": "Isle of Man",
-			"abbr": "IM",
-			"zones": [
-				"Europe/London",
-				"Europe/Isle_of_Man"
-			]
-		},
-		"IN": {
-			"name": "India",
-			"abbr": "IN",
-			"zones": [
-				"Asia/Kolkata"
-			]
-		},
-		"IO": {
-			"name": "British Indian Ocean Territory",
-			"abbr": "IO",
-			"zones": [
-				"Indian/Chagos"
-			]
-		},
-		"IQ": {
-			"name": "Iraq",
-			"abbr": "IQ",
-			"zones": [
-				"Asia/Baghdad"
-			]
-		},
-		"IR": {
-			"name": "Iran",
-			"abbr": "IR",
-			"zones": [
-				"Asia/Tehran"
-			]
-		},
-		"IS": {
-			"name": "Iceland",
-			"abbr": "IS",
-			"zones": [
-				"Africa/Abidjan",
-				"Atlantic/Reykjavik"
-			]
-		},
-		"IT": {
-			"name": "Italy",
-			"abbr": "IT",
-			"zones": [
-				"Europe/Rome"
-			]
-		},
-		"JE": {
-			"name": "Jersey",
-			"abbr": "JE",
-			"zones": [
-				"Europe/London",
-				"Europe/Jersey"
-			]
-		},
-		"JM": {
-			"name": "Jamaica",
-			"abbr": "JM",
-			"zones": [
-				"America/Jamaica"
-			]
-		},
-		"JO": {
-			"name": "Jordan",
-			"abbr": "JO",
-			"zones": [
-				"Asia/Amman"
-			]
-		},
-		"JP": {
-			"name": "Japan",
-			"abbr": "JP",
-			"zones": [
-				"Asia/Tokyo"
-			]
-		},
-		"KE": {
-			"name": "Kenya",
-			"abbr": "KE",
-			"zones": [
-				"Africa/Nairobi"
-			]
-		},
-		"KG": {
-			"name": "Kyrgyzstan",
-			"abbr": "KG",
-			"zones": [
-				"Asia/Bishkek"
-			]
-		},
-		"KH": {
-			"name": "Cambodia",
-			"abbr": "KH",
-			"zones": [
-				"Asia/Bangkok",
-				"Asia/Phnom_Penh"
-			]
-		},
-		"KI": {
-			"name": "Kiribati",
-			"abbr": "KI",
-			"zones": [
-				"Pacific/Tarawa",
-				"Pacific/Kanton",
-				"Pacific/Kiritimati"
-			]
-		},
-		"KM": {
-			"name": "Comoros",
-			"abbr": "KM",
-			"zones": [
-				"Africa/Nairobi",
-				"Indian/Comoro"
-			]
-		},
-		"KN": {
-			"name": "St Kitts & Nevis",
-			"abbr": "KN",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/St_Kitts"
-			]
-		},
-		"KP": {
-			"name": "Korea (North)",
-			"abbr": "KP",
-			"zones": [
-				"Asia/Pyongyang"
-			]
-		},
-		"KR": {
-			"name": "Korea (South)",
-			"abbr": "KR",
-			"zones": [
-				"Asia/Seoul"
-			]
-		},
-		"KW": {
-			"name": "Kuwait",
-			"abbr": "KW",
-			"zones": [
-				"Asia/Riyadh",
-				"Asia/Kuwait"
-			]
-		},
-		"KY": {
-			"name": "Cayman Islands",
-			"abbr": "KY",
-			"zones": [
-				"America/Panama",
-				"America/Cayman"
-			]
-		},
-		"KZ": {
-			"name": "Kazakhstan",
-			"abbr": "KZ",
-			"zones": [
-				"Asia/Almaty",
-				"Asia/Qyzylorda",
-				"Asia/Qostanay",
-				"Asia/Aqtobe",
-				"Asia/Aqtau",
-				"Asia/Atyrau",
-				"Asia/Oral"
-			]
-		},
-		"LA": {
-			"name": "Laos",
-			"abbr": "LA",
-			"zones": [
-				"Asia/Bangkok",
-				"Asia/Vientiane"
-			]
-		},
-		"LB": {
-			"name": "Lebanon",
-			"abbr": "LB",
-			"zones": [
-				"Asia/Beirut"
-			]
-		},
-		"LC": {
-			"name": "St Lucia",
-			"abbr": "LC",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/St_Lucia"
-			]
-		},
-		"LI": {
-			"name": "Liechtenstein",
-			"abbr": "LI",
-			"zones": [
-				"Europe/Zurich",
-				"Europe/Vaduz"
-			]
-		},
-		"LK": {
-			"name": "Sri Lanka",
-			"abbr": "LK",
-			"zones": [
-				"Asia/Colombo"
-			]
-		},
-		"LR": {
-			"name": "Liberia",
-			"abbr": "LR",
-			"zones": [
-				"Africa/Monrovia"
-			]
-		},
-		"LS": {
-			"name": "Lesotho",
-			"abbr": "LS",
-			"zones": [
-				"Africa/Johannesburg",
-				"Africa/Maseru"
-			]
-		},
-		"LT": {
-			"name": "Lithuania",
-			"abbr": "LT",
-			"zones": [
-				"Europe/Vilnius"
-			]
-		},
-		"LU": {
-			"name": "Luxembourg",
-			"abbr": "LU",
-			"zones": [
-				"Europe/Brussels",
-				"Europe/Luxembourg"
-			]
-		},
-		"LV": {
-			"name": "Latvia",
-			"abbr": "LV",
-			"zones": [
-				"Europe/Riga"
-			]
-		},
-		"LY": {
-			"name": "Libya",
-			"abbr": "LY",
-			"zones": [
-				"Africa/Tripoli"
-			]
-		},
-		"MA": {
-			"name": "Morocco",
-			"abbr": "MA",
-			"zones": [
-				"Africa/Casablanca"
-			]
-		},
-		"MC": {
-			"name": "Monaco",
-			"abbr": "MC",
-			"zones": [
-				"Europe/Paris",
-				"Europe/Monaco"
-			]
-		},
-		"MD": {
-			"name": "Moldova",
-			"abbr": "MD",
-			"zones": [
-				"Europe/Chisinau"
-			]
-		},
-		"ME": {
-			"name": "Montenegro",
-			"abbr": "ME",
-			"zones": [
-				"Europe/Belgrade",
-				"Europe/Podgorica"
-			]
-		},
-		"MF": {
-			"name": "St Martin (French)",
-			"abbr": "MF",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Marigot"
-			]
-		},
-		"MG": {
-			"name": "Madagascar",
-			"abbr": "MG",
-			"zones": [
-				"Africa/Nairobi",
-				"Indian/Antananarivo"
-			]
-		},
-		"MH": {
-			"name": "Marshall Islands",
-			"abbr": "MH",
-			"zones": [
-				"Pacific/Tarawa",
-				"Pacific/Kwajalein",
-				"Pacific/Majuro"
-			]
-		},
-		"MK": {
-			"name": "North Macedonia",
-			"abbr": "MK",
-			"zones": [
-				"Europe/Belgrade",
-				"Europe/Skopje"
-			]
-		},
-		"ML": {
-			"name": "Mali",
-			"abbr": "ML",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Bamako"
-			]
-		},
-		"MM": {
-			"name": "Myanmar (Burma)",
-			"abbr": "MM",
-			"zones": [
-				"Asia/Yangon"
-			]
-		},
-		"MN": {
-			"name": "Mongolia",
-			"abbr": "MN",
-			"zones": [
-				"Asia/Ulaanbaatar",
-				"Asia/Hovd"
-			]
-		},
-		"MO": {
-			"name": "Macau",
-			"abbr": "MO",
-			"zones": [
-				"Asia/Macau"
-			]
-		},
-		"MP": {
-			"name": "Northern Mariana Islands",
-			"abbr": "MP",
-			"zones": [
-				"Pacific/Guam",
-				"Pacific/Saipan"
-			]
-		},
-		"MQ": {
-			"name": "Martinique",
-			"abbr": "MQ",
-			"zones": [
-				"America/Martinique"
-			]
-		},
-		"MR": {
-			"name": "Mauritania",
-			"abbr": "MR",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Nouakchott"
-			]
-		},
-		"MS": {
-			"name": "Montserrat",
-			"abbr": "MS",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Montserrat"
-			]
-		},
-		"MT": {
-			"name": "Malta",
-			"abbr": "MT",
-			"zones": [
-				"Europe/Malta"
-			]
-		},
-		"MU": {
-			"name": "Mauritius",
-			"abbr": "MU",
-			"zones": [
-				"Indian/Mauritius"
-			]
-		},
-		"MV": {
-			"name": "Maldives",
-			"abbr": "MV",
-			"zones": [
-				"Indian/Maldives"
-			]
-		},
-		"MW": {
-			"name": "Malawi",
-			"abbr": "MW",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Blantyre"
-			]
-		},
-		"MX": {
-			"name": "Mexico",
-			"abbr": "MX",
-			"zones": [
-				"America/Mexico_City",
-				"America/Cancun",
-				"America/Merida",
-				"America/Monterrey",
-				"America/Matamoros",
-				"America/Chihuahua",
-				"America/Ciudad_Juarez",
-				"America/Ojinaga",
-				"America/Mazatlan",
-				"America/Bahia_Banderas",
-				"America/Hermosillo",
-				"America/Tijuana"
-			]
-		},
-		"MY": {
-			"name": "Malaysia",
-			"abbr": "MY",
-			"zones": [
-				"Asia/Kuching",
-				"Asia/Singapore",
-				"Asia/Kuala_Lumpur"
-			]
-		},
-		"MZ": {
-			"name": "Mozambique",
-			"abbr": "MZ",
-			"zones": [
-				"Africa/Maputo"
-			]
-		},
-		"NA": {
-			"name": "Namibia",
-			"abbr": "NA",
-			"zones": [
-				"Africa/Windhoek"
-			]
-		},
-		"NC": {
-			"name": "New Caledonia",
-			"abbr": "NC",
-			"zones": [
-				"Pacific/Noumea"
-			]
-		},
-		"NE": {
-			"name": "Niger",
-			"abbr": "NE",
-			"zones": [
-				"Africa/Lagos",
-				"Africa/Niamey"
-			]
-		},
-		"NF": {
-			"name": "Norfolk Island",
-			"abbr": "NF",
-			"zones": [
-				"Pacific/Norfolk"
-			]
-		},
-		"NG": {
-			"name": "Nigeria",
-			"abbr": "NG",
-			"zones": [
-				"Africa/Lagos"
-			]
-		},
-		"NI": {
-			"name": "Nicaragua",
-			"abbr": "NI",
-			"zones": [
-				"America/Managua"
-			]
-		},
-		"NL": {
-			"name": "Netherlands",
-			"abbr": "NL",
-			"zones": [
-				"Europe/Brussels",
-				"Europe/Amsterdam"
-			]
-		},
-		"NO": {
-			"name": "Norway",
-			"abbr": "NO",
-			"zones": [
-				"Europe/Berlin",
-				"Europe/Oslo"
-			]
-		},
-		"NP": {
-			"name": "Nepal",
-			"abbr": "NP",
-			"zones": [
-				"Asia/Kathmandu"
-			]
-		},
-		"NR": {
-			"name": "Nauru",
-			"abbr": "NR",
-			"zones": [
-				"Pacific/Nauru"
-			]
-		},
-		"NU": {
-			"name": "Niue",
-			"abbr": "NU",
-			"zones": [
-				"Pacific/Niue"
-			]
-		},
-		"NZ": {
-			"name": "New Zealand",
-			"abbr": "NZ",
-			"zones": [
-				"Pacific/Auckland",
-				"Pacific/Chatham"
-			]
-		},
-		"OM": {
-			"name": "Oman",
-			"abbr": "OM",
-			"zones": [
-				"Asia/Dubai",
-				"Asia/Muscat"
-			]
-		},
-		"PA": {
-			"name": "Panama",
-			"abbr": "PA",
-			"zones": [
-				"America/Panama"
-			]
-		},
-		"PE": {
-			"name": "Peru",
-			"abbr": "PE",
-			"zones": [
-				"America/Lima"
-			]
-		},
-		"PF": {
-			"name": "French Polynesia",
-			"abbr": "PF",
-			"zones": [
-				"Pacific/Tahiti",
-				"Pacific/Marquesas",
-				"Pacific/Gambier"
-			]
-		},
-		"PG": {
-			"name": "Papua New Guinea",
-			"abbr": "PG",
-			"zones": [
-				"Pacific/Port_Moresby",
-				"Pacific/Bougainville"
-			]
-		},
-		"PH": {
-			"name": "Philippines",
-			"abbr": "PH",
-			"zones": [
-				"Asia/Manila"
-			]
-		},
-		"PK": {
-			"name": "Pakistan",
-			"abbr": "PK",
-			"zones": [
-				"Asia/Karachi"
-			]
-		},
-		"PL": {
-			"name": "Poland",
-			"abbr": "PL",
-			"zones": [
-				"Europe/Warsaw"
-			]
-		},
-		"PM": {
-			"name": "St Pierre & Miquelon",
-			"abbr": "PM",
-			"zones": [
-				"America/Miquelon"
-			]
-		},
-		"PN": {
-			"name": "Pitcairn",
-			"abbr": "PN",
-			"zones": [
-				"Pacific/Pitcairn"
-			]
-		},
-		"PR": {
-			"name": "Puerto Rico",
-			"abbr": "PR",
-			"zones": [
-				"America/Puerto_Rico"
-			]
-		},
-		"PS": {
-			"name": "Palestine",
-			"abbr": "PS",
-			"zones": [
-				"Asia/Gaza",
-				"Asia/Hebron"
-			]
-		},
-		"PT": {
-			"name": "Portugal",
-			"abbr": "PT",
-			"zones": [
-				"Europe/Lisbon",
-				"Atlantic/Madeira",
-				"Atlantic/Azores"
-			]
-		},
-		"PW": {
-			"name": "Palau",
-			"abbr": "PW",
-			"zones": [
-				"Pacific/Palau"
-			]
-		},
-		"PY": {
-			"name": "Paraguay",
-			"abbr": "PY",
-			"zones": [
-				"America/Asuncion"
-			]
-		},
-		"QA": {
-			"name": "Qatar",
-			"abbr": "QA",
-			"zones": [
-				"Asia/Qatar"
-			]
-		},
-		"RE": {
-			"name": "Réunion",
-			"abbr": "RE",
-			"zones": [
-				"Asia/Dubai",
-				"Indian/Reunion"
-			]
-		},
-		"RO": {
-			"name": "Romania",
-			"abbr": "RO",
-			"zones": [
-				"Europe/Bucharest"
-			]
-		},
-		"RS": {
-			"name": "Serbia",
-			"abbr": "RS",
-			"zones": [
-				"Europe/Belgrade"
-			]
-		},
-		"RU": {
-			"name": "Russia",
-			"abbr": "RU",
-			"zones": [
-				"Europe/Kaliningrad",
-				"Europe/Moscow",
-				"Europe/Simferopol",
-				"Europe/Kirov",
-				"Europe/Volgograd",
-				"Europe/Astrakhan",
-				"Europe/Saratov",
-				"Europe/Ulyanovsk",
-				"Europe/Samara",
-				"Asia/Yekaterinburg",
-				"Asia/Omsk",
-				"Asia/Novosibirsk",
-				"Asia/Barnaul",
-				"Asia/Tomsk",
-				"Asia/Novokuznetsk",
-				"Asia/Krasnoyarsk",
-				"Asia/Irkutsk",
-				"Asia/Chita",
-				"Asia/Yakutsk",
-				"Asia/Khandyga",
-				"Asia/Vladivostok",
-				"Asia/Ust-Nera",
-				"Asia/Magadan",
-				"Asia/Sakhalin",
-				"Asia/Srednekolymsk",
-				"Asia/Kamchatka",
-				"Asia/Anadyr"
-			]
-		},
-		"RW": {
-			"name": "Rwanda",
-			"abbr": "RW",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Kigali"
-			]
-		},
-		"SA": {
-			"name": "Saudi Arabia",
-			"abbr": "SA",
-			"zones": [
-				"Asia/Riyadh"
-			]
-		},
-		"SB": {
-			"name": "Solomon Islands",
-			"abbr": "SB",
-			"zones": [
-				"Pacific/Guadalcanal"
-			]
-		},
-		"SC": {
-			"name": "Seychelles",
-			"abbr": "SC",
-			"zones": [
-				"Asia/Dubai",
-				"Indian/Mahe"
-			]
-		},
-		"SD": {
-			"name": "Sudan",
-			"abbr": "SD",
-			"zones": [
-				"Africa/Khartoum"
-			]
-		},
-		"SE": {
-			"name": "Sweden",
-			"abbr": "SE",
-			"zones": [
-				"Europe/Berlin",
-				"Europe/Stockholm"
-			]
-		},
-		"SG": {
-			"name": "Singapore",
-			"abbr": "SG",
-			"zones": [
-				"Asia/Singapore"
-			]
-		},
-		"SH": {
-			"name": "St Helena",
-			"abbr": "SH",
-			"zones": [
-				"Africa/Abidjan",
-				"Atlantic/St_Helena"
-			]
-		},
-		"SI": {
-			"name": "Slovenia",
-			"abbr": "SI",
-			"zones": [
-				"Europe/Belgrade",
-				"Europe/Ljubljana"
-			]
-		},
-		"SJ": {
-			"name": "Svalbard & Jan Mayen",
-			"abbr": "SJ",
-			"zones": [
-				"Europe/Berlin",
-				"Arctic/Longyearbyen"
-			]
-		},
-		"SK": {
-			"name": "Slovakia",
-			"abbr": "SK",
-			"zones": [
-				"Europe/Prague",
-				"Europe/Bratislava"
-			]
-		},
-		"SL": {
-			"name": "Sierra Leone",
-			"abbr": "SL",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Freetown"
-			]
-		},
-		"SM": {
-			"name": "San Marino",
-			"abbr": "SM",
-			"zones": [
-				"Europe/Rome",
-				"Europe/San_Marino"
-			]
-		},
-		"SN": {
-			"name": "Senegal",
-			"abbr": "SN",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Dakar"
-			]
-		},
-		"SO": {
-			"name": "Somalia",
-			"abbr": "SO",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Mogadishu"
-			]
-		},
-		"SR": {
-			"name": "Suriname",
-			"abbr": "SR",
-			"zones": [
-				"America/Paramaribo"
-			]
-		},
-		"SS": {
-			"name": "South Sudan",
-			"abbr": "SS",
-			"zones": [
-				"Africa/Juba"
-			]
-		},
-		"ST": {
-			"name": "Sao Tome & Principe",
-			"abbr": "ST",
-			"zones": [
-				"Africa/Sao_Tome"
-			]
-		},
-		"SV": {
-			"name": "El Salvador",
-			"abbr": "SV",
-			"zones": [
-				"America/El_Salvador"
-			]
-		},
-		"SX": {
-			"name": "St Maarten (Dutch)",
-			"abbr": "SX",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Lower_Princes"
-			]
-		},
-		"SY": {
-			"name": "Syria",
-			"abbr": "SY",
-			"zones": [
-				"Asia/Damascus"
-			]
-		},
-		"SZ": {
-			"name": "Eswatini (Swaziland)",
-			"abbr": "SZ",
-			"zones": [
-				"Africa/Johannesburg",
-				"Africa/Mbabane"
-			]
-		},
-		"TC": {
-			"name": "Turks & Caicos Is",
-			"abbr": "TC",
-			"zones": [
-				"America/Grand_Turk"
-			]
-		},
-		"TD": {
-			"name": "Chad",
-			"abbr": "TD",
-			"zones": [
-				"Africa/Ndjamena"
-			]
-		},
-		"TF": {
-			"name": "French S. Terr.",
-			"abbr": "TF",
-			"zones": [
-				"Asia/Dubai",
-				"Indian/Maldives",
-				"Indian/Kerguelen"
-			]
-		},
-		"TG": {
-			"name": "Togo",
-			"abbr": "TG",
-			"zones": [
-				"Africa/Abidjan",
-				"Africa/Lome"
-			]
-		},
-		"TH": {
-			"name": "Thailand",
-			"abbr": "TH",
-			"zones": [
-				"Asia/Bangkok"
-			]
-		},
-		"TJ": {
-			"name": "Tajikistan",
-			"abbr": "TJ",
-			"zones": [
-				"Asia/Dushanbe"
-			]
-		},
-		"TK": {
-			"name": "Tokelau",
-			"abbr": "TK",
-			"zones": [
-				"Pacific/Fakaofo"
-			]
-		},
-		"TL": {
-			"name": "East Timor",
-			"abbr": "TL",
-			"zones": [
-				"Asia/Dili"
-			]
-		},
-		"TM": {
-			"name": "Turkmenistan",
-			"abbr": "TM",
-			"zones": [
-				"Asia/Ashgabat"
-			]
-		},
-		"TN": {
-			"name": "Tunisia",
-			"abbr": "TN",
-			"zones": [
-				"Africa/Tunis"
-			]
-		},
-		"TO": {
-			"name": "Tonga",
-			"abbr": "TO",
-			"zones": [
-				"Pacific/Tongatapu"
-			]
-		},
-		"TR": {
-			"name": "Turkey",
-			"abbr": "TR",
-			"zones": [
-				"Europe/Istanbul"
-			]
-		},
-		"TT": {
-			"name": "Trinidad & Tobago",
-			"abbr": "TT",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Port_of_Spain"
-			]
-		},
-		"TV": {
-			"name": "Tuvalu",
-			"abbr": "TV",
-			"zones": [
-				"Pacific/Tarawa",
-				"Pacific/Funafuti"
-			]
-		},
-		"TW": {
-			"name": "Taiwan",
-			"abbr": "TW",
-			"zones": [
-				"Asia/Taipei"
-			]
-		},
-		"TZ": {
-			"name": "Tanzania",
-			"abbr": "TZ",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Dar_es_Salaam"
-			]
-		},
-		"UA": {
-			"name": "Ukraine",
-			"abbr": "UA",
-			"zones": [
-				"Europe/Simferopol",
-				"Europe/Kyiv"
-			]
-		},
-		"UG": {
-			"name": "Uganda",
-			"abbr": "UG",
-			"zones": [
-				"Africa/Nairobi",
-				"Africa/Kampala"
-			]
-		},
-		"UM": {
-			"name": "US minor outlying islands",
-			"abbr": "UM",
-			"zones": [
-				"Pacific/Pago_Pago",
-				"Pacific/Tarawa",
-				"Pacific/Midway",
-				"Pacific/Wake"
-			]
-		},
-		"US": {
-			"name": "United States",
-			"abbr": "US",
-			"zones": [
-				"America/New_York",
-				"America/Detroit",
-				"America/Kentucky/Louisville",
-				"America/Kentucky/Monticello",
-				"America/Indiana/Indianapolis",
-				"America/Indiana/Vincennes",
-				"America/Indiana/Winamac",
-				"America/Indiana/Marengo",
-				"America/Indiana/Petersburg",
-				"America/Indiana/Vevay",
-				"America/Chicago",
-				"America/Indiana/Tell_City",
-				"America/Indiana/Knox",
-				"America/Menominee",
-				"America/North_Dakota/Center",
-				"America/North_Dakota/New_Salem",
-				"America/North_Dakota/Beulah",
-				"America/Denver",
-				"America/Boise",
-				"America/Phoenix",
-				"America/Los_Angeles",
-				"America/Anchorage",
-				"America/Juneau",
-				"America/Sitka",
-				"America/Metlakatla",
-				"America/Yakutat",
-				"America/Nome",
-				"America/Adak",
-				"Pacific/Honolulu"
-			]
-		},
-		"UY": {
-			"name": "Uruguay",
-			"abbr": "UY",
-			"zones": [
-				"America/Montevideo"
-			]
-		},
-		"UZ": {
-			"name": "Uzbekistan",
-			"abbr": "UZ",
-			"zones": [
-				"Asia/Samarkand",
-				"Asia/Tashkent"
-			]
-		},
-		"VA": {
-			"name": "Vatican City",
-			"abbr": "VA",
-			"zones": [
-				"Europe/Rome",
-				"Europe/Vatican"
-			]
-		},
-		"VC": {
-			"name": "St Vincent",
-			"abbr": "VC",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/St_Vincent"
-			]
-		},
-		"VE": {
-			"name": "Venezuela",
-			"abbr": "VE",
-			"zones": [
-				"America/Caracas"
-			]
-		},
-		"VG": {
-			"name": "Virgin Islands (UK)",
-			"abbr": "VG",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/Tortola"
-			]
-		},
-		"VI": {
-			"name": "Virgin Islands (US)",
-			"abbr": "VI",
-			"zones": [
-				"America/Puerto_Rico",
-				"America/St_Thomas"
-			]
-		},
-		"VN": {
-			"name": "Vietnam",
-			"abbr": "VN",
-			"zones": [
-				"Asia/Bangkok",
-				"Asia/Ho_Chi_Minh"
-			]
-		},
-		"VU": {
-			"name": "Vanuatu",
-			"abbr": "VU",
-			"zones": [
-				"Pacific/Efate"
-			]
-		},
-		"WF": {
-			"name": "Wallis & Futuna",
-			"abbr": "WF",
-			"zones": [
-				"Pacific/Tarawa",
-				"Pacific/Wallis"
-			]
-		},
-		"WS": {
-			"name": "Samoa (western)",
-			"abbr": "WS",
-			"zones": [
-				"Pacific/Apia"
-			]
-		},
-		"YE": {
-			"name": "Yemen",
-			"abbr": "YE",
-			"zones": [
-				"Asia/Riyadh",
-				"Asia/Aden"
-			]
-		},
-		"YT": {
-			"name": "Mayotte",
-			"abbr": "YT",
-			"zones": [
-				"Africa/Nairobi",
-				"Indian/Mayotte"
-			]
-		},
-		"ZA": {
-			"name": "South Africa",
-			"abbr": "ZA",
-			"zones": [
-				"Africa/Johannesburg"
-			]
-		},
-		"ZM": {
-			"name": "Zambia",
-			"abbr": "ZM",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Lusaka"
-			]
-		},
-		"ZW": {
-			"name": "Zimbabwe",
-			"abbr": "ZW",
-			"zones": [
-				"Africa/Maputo",
-				"Africa/Harare"
-			]
-		}
-	},
-	"zones": {
-		"Europe/Andorra": {
-			"name": "Europe/Andorra",
-			"lat": 42.5,
-			"long": 1.5167,
-			"countries": [
-				"AD"
-			],
-			"comments": ""
-		},
-		"Asia/Dubai": {
-			"name": "Asia/Dubai",
-			"lat": 25.3,
-			"long": 55.3,
-			"countries": [
-				"AE",
-				"OM",
-				"RE",
-				"SC",
-				"TF"
-			],
-			"comments": "Crozet"
-		},
-		"Asia/Kabul": {
-			"name": "Asia/Kabul",
-			"lat": 34.5167,
-			"long": 69.2,
-			"countries": [
-				"AF"
-			],
-			"comments": ""
-		},
-		"Europe/Tirane": {
-			"name": "Europe/Tirane",
-			"lat": 41.3333,
-			"long": 19.8333,
-			"countries": [
-				"AL"
-			],
-			"comments": ""
-		},
-		"Asia/Yerevan": {
-			"name": "Asia/Yerevan",
-			"lat": 40.1833,
-			"long": 44.5,
-			"countries": [
-				"AM"
-			],
-			"comments": ""
-		},
-		"Antarctica/Casey": {
-			"name": "Antarctica/Casey",
-			"lat": -65.7167,
-			"long": 110.5167,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Casey"
-		},
-		"Antarctica/Davis": {
-			"name": "Antarctica/Davis",
-			"lat": -67.4167,
-			"long": 77.9667,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Davis"
-		},
-		"Antarctica/Mawson": {
-			"name": "Antarctica/Mawson",
-			"lat": -66.4,
-			"long": 62.8833,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Mawson"
-		},
-		"Antarctica/Palmer": {
-			"name": "Antarctica/Palmer",
-			"lat": -63.2,
-			"long": -63.9,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Palmer"
-		},
-		"Antarctica/Rothera": {
-			"name": "Antarctica/Rothera",
-			"lat": -66.4333,
-			"long": -67.8667,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Rothera"
-		},
-		"Antarctica/Troll": {
-			"name": "Antarctica/Troll",
-			"lat": -71.9886,
-			"long": 2.535,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Troll"
-		},
-		"Antarctica/Vostok": {
-			"name": "Antarctica/Vostok",
-			"lat": -77.6,
-			"long": 106.9,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Vostok"
-		},
-		"America/Argentina/Buenos_Aires": {
-			"name": "America/Argentina/Buenos_Aires",
-			"lat": -33.4,
-			"long": -57.55,
-			"countries": [
-				"AR"
-			],
-			"comments": "Buenos Aires (BA, CF)"
-		},
-		"America/Argentina/Cordoba": {
-			"name": "America/Argentina/Cordoba",
-			"lat": -30.6,
-			"long": -63.8167,
-			"countries": [
-				"AR"
-			],
-			"comments": "most areas: CB, CC, CN, ER, FM, MN, SE, SF"
-		},
-		"America/Argentina/Salta": {
-			"name": "America/Argentina/Salta",
-			"lat": -23.2167,
-			"long": -64.5833,
-			"countries": [
-				"AR"
-			],
-			"comments": "Salta (SA, LP, NQ, RN)"
-		},
-		"America/Argentina/Jujuy": {
-			"name": "America/Argentina/Jujuy",
-			"lat": -23.8167,
-			"long": -64.7,
-			"countries": [
-				"AR"
-			],
-			"comments": "Jujuy (JY)"
-		},
-		"America/Argentina/Tucuman": {
-			"name": "America/Argentina/Tucuman",
-			"lat": -25.1833,
-			"long": -64.7833,
-			"countries": [
-				"AR"
-			],
-			"comments": "Tucumán (TM)"
-		},
-		"America/Argentina/Catamarca": {
-			"name": "America/Argentina/Catamarca",
-			"lat": -27.5333,
-			"long": -64.2167,
-			"countries": [
-				"AR"
-			],
-			"comments": "Catamarca (CT), Chubut (CH)"
-		},
-		"America/Argentina/La_Rioja": {
-			"name": "America/Argentina/La_Rioja",
-			"lat": -28.5667,
-			"long": -65.15,
-			"countries": [
-				"AR"
-			],
-			"comments": "La Rioja (LR)"
-		},
-		"America/Argentina/San_Juan": {
-			"name": "America/Argentina/San_Juan",
-			"lat": -30.4667,
-			"long": -67.4833,
-			"countries": [
-				"AR"
-			],
-			"comments": "San Juan (SJ)"
-		},
-		"America/Argentina/Mendoza": {
-			"name": "America/Argentina/Mendoza",
-			"lat": -31.1167,
-			"long": -67.1833,
-			"countries": [
-				"AR"
-			],
-			"comments": "Mendoza (MZ)"
-		},
-		"America/Argentina/San_Luis": {
-			"name": "America/Argentina/San_Luis",
-			"lat": -32.6833,
-			"long": -65.65,
-			"countries": [
-				"AR"
-			],
-			"comments": "San Luis (SL)"
-		},
-		"America/Argentina/Rio_Gallegos": {
-			"name": "America/Argentina/Rio_Gallegos",
-			"lat": -50.3667,
-			"long": -68.7833,
-			"countries": [
-				"AR"
-			],
-			"comments": "Santa Cruz (SC)"
-		},
-		"America/Argentina/Ushuaia": {
-			"name": "America/Argentina/Ushuaia",
-			"lat": -53.2,
-			"long": -67.7,
-			"countries": [
-				"AR"
-			],
-			"comments": "Tierra del Fuego (TF)"
-		},
-		"Pacific/Pago_Pago": {
-			"name": "Pacific/Pago_Pago",
-			"lat": -13.7333,
-			"long": -169.3,
-			"countries": [
-				"AS",
-				"UM"
-			],
-			"comments": "Midway"
-		},
-		"Europe/Vienna": {
-			"name": "Europe/Vienna",
-			"lat": 48.2167,
-			"long": 16.3333,
-			"countries": [
-				"AT"
-			],
-			"comments": ""
-		},
-		"Australia/Lord_Howe": {
-			"name": "Australia/Lord_Howe",
-			"lat": -30.45,
-			"long": 159.0833,
-			"countries": [
-				"AU"
-			],
-			"comments": "Lord Howe Island"
-		},
-		"Antarctica/Macquarie": {
-			"name": "Antarctica/Macquarie",
-			"lat": -53.5,
-			"long": 158.95,
-			"countries": [
-				"AU"
-			],
-			"comments": "Macquarie Island"
-		},
-		"Australia/Hobart": {
-			"name": "Australia/Hobart",
-			"lat": -41.1167,
-			"long": 147.3167,
-			"countries": [
-				"AU"
-			],
-			"comments": "Tasmania"
-		},
-		"Australia/Melbourne": {
-			"name": "Australia/Melbourne",
-			"lat": -36.1833,
-			"long": 144.9667,
-			"countries": [
-				"AU"
-			],
-			"comments": "Victoria"
-		},
-		"Australia/Sydney": {
-			"name": "Australia/Sydney",
-			"lat": -32.1333,
-			"long": 151.2167,
-			"countries": [
-				"AU"
-			],
-			"comments": "New South Wales (most areas)"
-		},
-		"Australia/Broken_Hill": {
-			"name": "Australia/Broken_Hill",
-			"lat": -30.05,
-			"long": 141.45,
-			"countries": [
-				"AU"
-			],
-			"comments": "New South Wales (Yancowinna)"
-		},
-		"Australia/Brisbane": {
-			"name": "Australia/Brisbane",
-			"lat": -26.5333,
-			"long": 153.0333,
-			"countries": [
-				"AU"
-			],
-			"comments": "Queensland (most areas)"
-		},
-		"Australia/Lindeman": {
-			"name": "Australia/Lindeman",
-			"lat": -19.7333,
-			"long": 149,
-			"countries": [
-				"AU"
-			],
-			"comments": "Queensland (Whitsunday Islands)"
-		},
-		"Australia/Adelaide": {
-			"name": "Australia/Adelaide",
-			"lat": -33.0833,
-			"long": 138.5833,
-			"countries": [
-				"AU"
-			],
-			"comments": "South Australia"
-		},
-		"Australia/Darwin": {
-			"name": "Australia/Darwin",
-			"lat": -11.5333,
-			"long": 130.8333,
-			"countries": [
-				"AU"
-			],
-			"comments": "Northern Territory"
-		},
-		"Australia/Perth": {
-			"name": "Australia/Perth",
-			"lat": -30.05,
-			"long": 115.85,
-			"countries": [
-				"AU"
-			],
-			"comments": "Western Australia (most areas)"
-		},
-		"Australia/Eucla": {
-			"name": "Australia/Eucla",
-			"lat": -30.2833,
-			"long": 128.8667,
-			"countries": [
-				"AU"
-			],
-			"comments": "Western Australia (Eucla)"
-		},
-		"Asia/Baku": {
-			"name": "Asia/Baku",
-			"lat": 40.3833,
-			"long": 49.85,
-			"countries": [
-				"AZ"
-			],
-			"comments": ""
-		},
-		"America/Barbados": {
-			"name": "America/Barbados",
-			"lat": 13.1,
-			"long": -58.3833,
-			"countries": [
-				"BB"
-			],
-			"comments": ""
-		},
-		"Asia/Dhaka": {
-			"name": "Asia/Dhaka",
-			"lat": 23.7167,
-			"long": 90.4167,
-			"countries": [
-				"BD"
-			],
-			"comments": ""
-		},
-		"Europe/Brussels": {
-			"name": "Europe/Brussels",
-			"lat": 50.8333,
-			"long": 4.3333,
-			"countries": [
-				"BE",
-				"LU",
-				"NL"
-			],
-			"comments": ""
-		},
-		"Europe/Sofia": {
-			"name": "Europe/Sofia",
-			"lat": 42.6833,
-			"long": 23.3167,
-			"countries": [
-				"BG"
-			],
-			"comments": ""
-		},
-		"Atlantic/Bermuda": {
-			"name": "Atlantic/Bermuda",
-			"lat": 32.2833,
-			"long": -63.2333,
-			"countries": [
-				"BM"
-			],
-			"comments": ""
-		},
-		"America/La_Paz": {
-			"name": "America/La_Paz",
-			"lat": -15.5,
-			"long": -67.85,
-			"countries": [
-				"BO"
-			],
-			"comments": ""
-		},
-		"America/Noronha": {
-			"name": "America/Noronha",
-			"lat": -2.15,
-			"long": -31.5833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Atlantic islands"
-		},
-		"America/Belem": {
-			"name": "America/Belem",
-			"lat": -0.55,
-			"long": -47.5167,
-			"countries": [
-				"BR"
-			],
-			"comments": "Pará (east), Amapá"
-		},
-		"America/Fortaleza": {
-			"name": "America/Fortaleza",
-			"lat": -2.2833,
-			"long": -37.5,
-			"countries": [
-				"BR"
-			],
-			"comments": "Brazil (northeast: MA, PI, CE, RN, PB)"
-		},
-		"America/Recife": {
-			"name": "America/Recife",
-			"lat": -7.95,
-			"long": -33.1,
-			"countries": [
-				"BR"
-			],
-			"comments": "Pernambuco"
-		},
-		"America/Araguaina": {
-			"name": "America/Araguaina",
-			"lat": -6.8,
-			"long": -47.8,
-			"countries": [
-				"BR"
-			],
-			"comments": "Tocantins"
-		},
-		"America/Maceio": {
-			"name": "America/Maceio",
-			"lat": -8.3333,
-			"long": -34.2833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Alagoas, Sergipe"
-		},
-		"America/Bahia": {
-			"name": "America/Bahia",
-			"lat": -11.0167,
-			"long": -37.4833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Bahia"
-		},
-		"America/Sao_Paulo": {
-			"name": "America/Sao_Paulo",
-			"lat": -22.4667,
-			"long": -45.3833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Brazil (southeast: GO, DF, MG, ES, RJ, SP, PR, SC, RS)"
-		},
-		"America/Campo_Grande": {
-			"name": "America/Campo_Grande",
-			"lat": -19.55,
-			"long": -53.3833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Mato Grosso do Sul"
-		},
-		"America/Cuiaba": {
-			"name": "America/Cuiaba",
-			"lat": -14.4167,
-			"long": -55.9167,
-			"countries": [
-				"BR"
-			],
-			"comments": "Mato Grosso"
-		},
-		"America/Santarem": {
-			"name": "America/Santarem",
-			"lat": -1.5667,
-			"long": -53.1333,
-			"countries": [
-				"BR"
-			],
-			"comments": "Pará (west)"
-		},
-		"America/Porto_Velho": {
-			"name": "America/Porto_Velho",
-			"lat": -7.2333,
-			"long": -62.1,
-			"countries": [
-				"BR"
-			],
-			"comments": "Rondônia"
-		},
-		"America/Boa_Vista": {
-			"name": "America/Boa_Vista",
-			"lat": 2.8167,
-			"long": -59.3333,
-			"countries": [
-				"BR"
-			],
-			"comments": "Roraima"
-		},
-		"America/Manaus": {
-			"name": "America/Manaus",
-			"lat": -2.8667,
-			"long": -59.9833,
-			"countries": [
-				"BR"
-			],
-			"comments": "Amazonas (east)"
-		},
-		"America/Eirunepe": {
-			"name": "America/Eirunepe",
-			"lat": -5.3333,
-			"long": -68.1333,
-			"countries": [
-				"BR"
-			],
-			"comments": "Amazonas (west)"
-		},
-		"America/Rio_Branco": {
-			"name": "America/Rio_Branco",
-			"lat": -8.0333,
-			"long": -66.2,
-			"countries": [
-				"BR"
-			],
-			"comments": "Acre"
-		},
-		"Asia/Thimphu": {
-			"name": "Asia/Thimphu",
-			"lat": 27.4667,
-			"long": 89.65,
-			"countries": [
-				"BT"
-			],
-			"comments": ""
-		},
-		"Europe/Minsk": {
-			"name": "Europe/Minsk",
-			"lat": 53.9,
-			"long": 27.5667,
-			"countries": [
-				"BY"
-			],
-			"comments": ""
-		},
-		"America/Belize": {
-			"name": "America/Belize",
-			"lat": 17.5,
-			"long": -87.8,
-			"countries": [
-				"BZ"
-			],
-			"comments": ""
-		},
-		"America/St_Johns": {
-			"name": "America/St_Johns",
-			"lat": 47.5667,
-			"long": -51.2833,
-			"countries": [
-				"CA"
-			],
-			"comments": "Newfoundland, Labrador (SE)"
-		},
-		"America/Halifax": {
-			"name": "America/Halifax",
-			"lat": 44.65,
-			"long": -62.4,
-			"countries": [
-				"CA"
-			],
-			"comments": "Atlantic - NS (most areas), PE"
-		},
-		"America/Glace_Bay": {
-			"name": "America/Glace_Bay",
-			"lat": 46.2,
-			"long": -58.05,
-			"countries": [
-				"CA"
-			],
-			"comments": "Atlantic - NS (Cape Breton)"
-		},
-		"America/Moncton": {
-			"name": "America/Moncton",
-			"lat": 46.1,
-			"long": -63.2167,
-			"countries": [
-				"CA"
-			],
-			"comments": "Atlantic - New Brunswick"
-		},
-		"America/Goose_Bay": {
-			"name": "America/Goose_Bay",
-			"lat": 53.3333,
-			"long": -59.5833,
-			"countries": [
-				"CA"
-			],
-			"comments": "Atlantic - Labrador (most areas)"
-		},
-		"America/Toronto": {
-			"name": "America/Toronto",
-			"lat": 43.65,
-			"long": -78.6167,
-			"countries": [
-				"CA",
-				"BS"
-			],
-			"comments": "Eastern - ON & QC (most areas)"
-		},
-		"America/Iqaluit": {
-			"name": "America/Iqaluit",
-			"lat": 63.7333,
-			"long": -67.5333,
-			"countries": [
-				"CA"
-			],
-			"comments": "Eastern - NU (most areas)"
-		},
-		"America/Winnipeg": {
-			"name": "America/Winnipeg",
-			"lat": 49.8833,
-			"long": -96.85,
-			"countries": [
-				"CA"
-			],
-			"comments": "Central - ON (west), Manitoba"
-		},
-		"America/Resolute": {
-			"name": "America/Resolute",
-			"lat": 74.6956,
-			"long": -93.1708,
-			"countries": [
-				"CA"
-			],
-			"comments": "Central - NU (Resolute)"
-		},
-		"America/Rankin_Inlet": {
-			"name": "America/Rankin_Inlet",
-			"lat": 62.8167,
-			"long": -91.9169,
-			"countries": [
-				"CA"
-			],
-			"comments": "Central - NU (central)"
-		},
-		"America/Regina": {
-			"name": "America/Regina",
-			"lat": 50.4,
-			"long": -103.35,
-			"countries": [
-				"CA"
-			],
-			"comments": "CST - SK (most areas)"
-		},
-		"America/Swift_Current": {
-			"name": "America/Swift_Current",
-			"lat": 50.2833,
-			"long": -106.1667,
-			"countries": [
-				"CA"
-			],
-			"comments": "CST - SK (midwest)"
-		},
-		"America/Edmonton": {
-			"name": "America/Edmonton",
-			"lat": 53.55,
-			"long": -112.5333,
-			"countries": [
-				"CA"
-			],
-			"comments": "Mountain - AB, BC(E), NT(E), SK(W)"
-		},
-		"America/Cambridge_Bay": {
-			"name": "America/Cambridge_Bay",
-			"lat": 69.1139,
-			"long": -104.9472,
-			"countries": [
-				"CA"
-			],
-			"comments": "Mountain - NU (west)"
-		},
-		"America/Inuvik": {
-			"name": "America/Inuvik",
-			"lat": 68.3497,
-			"long": -132.2833,
-			"countries": [
-				"CA"
-			],
-			"comments": "Mountain - NT (west)"
-		},
-		"America/Dawson_Creek": {
-			"name": "America/Dawson_Creek",
-			"lat": 55.7667,
-			"long": -119.7667,
-			"countries": [
-				"CA"
-			],
-			"comments": "MST - BC (Dawson Cr, Ft St John)"
-		},
-		"America/Fort_Nelson": {
-			"name": "America/Fort_Nelson",
-			"lat": 58.8,
-			"long": -121.3,
-			"countries": [
-				"CA"
-			],
-			"comments": "MST - BC (Ft Nelson)"
-		},
-		"America/Whitehorse": {
-			"name": "America/Whitehorse",
-			"lat": 60.7167,
-			"long": -134.95,
-			"countries": [
-				"CA"
-			],
-			"comments": "MST - Yukon (east)"
-		},
-		"America/Dawson": {
-			"name": "America/Dawson",
-			"lat": 64.0667,
-			"long": -138.5833,
-			"countries": [
-				"CA"
-			],
-			"comments": "MST - Yukon (west)"
-		},
-		"America/Vancouver": {
-			"name": "America/Vancouver",
-			"lat": 49.2667,
-			"long": -122.8833,
-			"countries": [
-				"CA"
-			],
-			"comments": "Pacific - BC (most areas)"
-		},
-		"Europe/Zurich": {
-			"name": "Europe/Zurich",
-			"lat": 47.3833,
-			"long": 8.5333,
-			"countries": [
-				"CH",
-				"DE",
-				"LI"
-			],
-			"comments": "Büsingen"
-		},
-		"Africa/Abidjan": {
-			"name": "Africa/Abidjan",
-			"lat": 5.3167,
-			"long": -3.9667,
-			"countries": [
-				"CI",
-				"BF",
-				"GH",
-				"GM",
-				"GN",
-				"IS",
-				"ML",
-				"MR",
-				"SH",
-				"SL",
-				"SN",
-				"TG"
-			],
-			"comments": ""
-		},
-		"Pacific/Rarotonga": {
-			"name": "Pacific/Rarotonga",
-			"lat": -20.7667,
-			"long": -158.2333,
-			"countries": [
-				"CK"
-			],
-			"comments": ""
-		},
-		"America/Santiago": {
-			"name": "America/Santiago",
-			"lat": -32.55,
-			"long": -69.3333,
-			"countries": [
-				"CL"
-			],
-			"comments": "most of Chile"
-		},
-		"America/Coyhaique": {
-			"name": "America/Coyhaique",
-			"lat": -44.4333,
-			"long": -71.9333,
-			"countries": [
-				"CL"
-			],
-			"comments": "Aysén Region"
-		},
-		"America/Punta_Arenas": {
-			"name": "America/Punta_Arenas",
-			"lat": -52.85,
-			"long": -69.0833,
-			"countries": [
-				"CL"
-			],
-			"comments": "Magallanes Region"
-		},
-		"Pacific/Easter": {
-			"name": "Pacific/Easter",
-			"lat": -26.85,
-			"long": -108.5667,
-			"countries": [
-				"CL"
-			],
-			"comments": "Easter Island"
-		},
-		"Asia/Shanghai": {
-			"name": "Asia/Shanghai",
-			"lat": 31.2333,
-			"long": 121.4667,
-			"countries": [
-				"CN"
-			],
-			"comments": "Beijing Time"
-		},
-		"Asia/Urumqi": {
-			"name": "Asia/Urumqi",
-			"lat": 43.8,
-			"long": 87.5833,
-			"countries": [
-				"CN"
-			],
-			"comments": "Xinjiang Time"
-		},
-		"America/Bogota": {
-			"name": "America/Bogota",
-			"lat": 4.6,
-			"long": -73.9167,
-			"countries": [
-				"CO"
-			],
-			"comments": ""
-		},
-		"America/Costa_Rica": {
-			"name": "America/Costa_Rica",
-			"lat": 9.9333,
-			"long": -83.9167,
-			"countries": [
-				"CR"
-			],
-			"comments": ""
-		},
-		"America/Havana": {
-			"name": "America/Havana",
-			"lat": 23.1333,
-			"long": -81.6333,
-			"countries": [
-				"CU"
-			],
-			"comments": ""
-		},
-		"Atlantic/Cape_Verde": {
-			"name": "Atlantic/Cape_Verde",
-			"lat": 14.9167,
-			"long": -22.4833,
-			"countries": [
-				"CV"
-			],
-			"comments": ""
-		},
-		"Asia/Nicosia": {
-			"name": "Asia/Nicosia",
-			"lat": 35.1667,
-			"long": 33.3667,
-			"countries": [
-				"CY"
-			],
-			"comments": "most of Cyprus"
-		},
-		"Asia/Famagusta": {
-			"name": "Asia/Famagusta",
-			"lat": 35.1167,
-			"long": 33.95,
-			"countries": [
-				"CY"
-			],
-			"comments": "Northern Cyprus"
-		},
-		"Europe/Prague": {
-			"name": "Europe/Prague",
-			"lat": 50.0833,
-			"long": 14.4333,
-			"countries": [
-				"CZ",
-				"SK"
-			],
-			"comments": ""
-		},
-		"Europe/Berlin": {
-			"name": "Europe/Berlin",
-			"lat": 52.5,
-			"long": 13.3667,
-			"countries": [
-				"DE",
-				"DK",
-				"NO",
-				"SE",
-				"SJ"
-			],
-			"comments": "most of Germany"
-		},
-		"America/Santo_Domingo": {
-			"name": "America/Santo_Domingo",
-			"lat": 18.4667,
-			"long": -68.1,
-			"countries": [
-				"DO"
-			],
-			"comments": ""
-		},
-		"Africa/Algiers": {
-			"name": "Africa/Algiers",
-			"lat": 36.7833,
-			"long": 3.05,
-			"countries": [
-				"DZ"
-			],
-			"comments": ""
-		},
-		"America/Guayaquil": {
-			"name": "America/Guayaquil",
-			"lat": -1.8333,
-			"long": -78.1667,
-			"countries": [
-				"EC"
-			],
-			"comments": "Ecuador (mainland)"
-		},
-		"Pacific/Galapagos": {
-			"name": "Pacific/Galapagos",
-			"lat": 0.9,
-			"long": -88.4,
-			"countries": [
-				"EC"
-			],
-			"comments": "Galápagos Islands"
-		},
-		"Europe/Tallinn": {
-			"name": "Europe/Tallinn",
-			"lat": 59.4167,
-			"long": 24.75,
-			"countries": [
-				"EE"
-			],
-			"comments": ""
-		},
-		"Africa/Cairo": {
-			"name": "Africa/Cairo",
-			"lat": 30.05,
-			"long": 31.25,
-			"countries": [
-				"EG"
-			],
-			"comments": ""
-		},
-		"Africa/El_Aaiun": {
-			"name": "Africa/El_Aaiun",
-			"lat": 27.15,
-			"long": -12.8,
-			"countries": [
-				"EH"
-			],
-			"comments": ""
-		},
-		"Europe/Madrid": {
-			"name": "Europe/Madrid",
-			"lat": 40.4,
-			"long": -2.3167,
-			"countries": [
-				"ES"
-			],
-			"comments": "Spain (mainland)"
-		},
-		"Africa/Ceuta": {
-			"name": "Africa/Ceuta",
-			"lat": 35.8833,
-			"long": -4.6833,
-			"countries": [
-				"ES"
-			],
-			"comments": "Ceuta, Melilla"
-		},
-		"Atlantic/Canary": {
-			"name": "Atlantic/Canary",
-			"lat": 28.1,
-			"long": -14.6,
-			"countries": [
-				"ES"
-			],
-			"comments": "Canary Islands"
-		},
-		"Europe/Helsinki": {
-			"name": "Europe/Helsinki",
-			"lat": 60.1667,
-			"long": 24.9667,
-			"countries": [
-				"FI",
-				"AX"
-			],
-			"comments": ""
-		},
-		"Pacific/Fiji": {
-			"name": "Pacific/Fiji",
-			"lat": -17.8667,
-			"long": 178.4167,
-			"countries": [
-				"FJ"
-			],
-			"comments": ""
-		},
-		"Atlantic/Stanley": {
-			"name": "Atlantic/Stanley",
-			"lat": -50.3,
-			"long": -56.15,
-			"countries": [
-				"FK"
-			],
-			"comments": ""
-		},
-		"Pacific/Kosrae": {
-			"name": "Pacific/Kosrae",
-			"lat": 5.3167,
-			"long": 162.9833,
-			"countries": [
-				"FM"
-			],
-			"comments": "Kosrae"
-		},
-		"Atlantic/Faroe": {
-			"name": "Atlantic/Faroe",
-			"lat": 62.0167,
-			"long": -5.2333,
-			"countries": [
-				"FO"
-			],
-			"comments": ""
-		},
-		"Europe/Paris": {
-			"name": "Europe/Paris",
-			"lat": 48.8667,
-			"long": 2.3333,
-			"countries": [
-				"FR",
-				"MC"
-			],
-			"comments": ""
-		},
-		"Europe/London": {
-			"name": "Europe/London",
-			"lat": 51.5083,
-			"long": 0.1253,
-			"countries": [
-				"GB",
-				"GG",
-				"IM",
-				"JE"
-			],
-			"comments": ""
-		},
-		"Asia/Tbilisi": {
-			"name": "Asia/Tbilisi",
-			"lat": 41.7167,
-			"long": 44.8167,
-			"countries": [
-				"GE"
-			],
-			"comments": ""
-		},
-		"America/Cayenne": {
-			"name": "America/Cayenne",
-			"lat": 4.9333,
-			"long": -51.6667,
-			"countries": [
-				"GF"
-			],
-			"comments": ""
-		},
-		"Europe/Gibraltar": {
-			"name": "Europe/Gibraltar",
-			"lat": 36.1333,
-			"long": -4.65,
-			"countries": [
-				"GI"
-			],
-			"comments": ""
-		},
-		"America/Nuuk": {
-			"name": "America/Nuuk",
-			"lat": 64.1833,
-			"long": -50.2667,
-			"countries": [
-				"GL"
-			],
-			"comments": "most of Greenland"
-		},
-		"America/Danmarkshavn": {
-			"name": "America/Danmarkshavn",
-			"lat": 76.7667,
-			"long": -17.3333,
-			"countries": [
-				"GL"
-			],
-			"comments": "National Park (east coast)"
-		},
-		"America/Scoresbysund": {
-			"name": "America/Scoresbysund",
-			"lat": 70.4833,
-			"long": -20.0333,
-			"countries": [
-				"GL"
-			],
-			"comments": "Scoresbysund/Ittoqqortoormiit"
-		},
-		"America/Thule": {
-			"name": "America/Thule",
-			"lat": 76.5667,
-			"long": -67.2167,
-			"countries": [
-				"GL"
-			],
-			"comments": "Thule/Pituffik"
-		},
-		"Europe/Athens": {
-			"name": "Europe/Athens",
-			"lat": 37.9667,
-			"long": 23.7167,
-			"countries": [
-				"GR"
-			],
-			"comments": ""
-		},
-		"Atlantic/South_Georgia": {
-			"name": "Atlantic/South_Georgia",
-			"lat": -53.7333,
-			"long": -35.4667,
-			"countries": [
-				"GS"
-			],
-			"comments": ""
-		},
-		"America/Guatemala": {
-			"name": "America/Guatemala",
-			"lat": 14.6333,
-			"long": -89.4833,
-			"countries": [
-				"GT"
-			],
-			"comments": ""
-		},
-		"Pacific/Guam": {
-			"name": "Pacific/Guam",
-			"lat": 13.4667,
-			"long": 144.75,
-			"countries": [
-				"GU",
-				"MP"
-			],
-			"comments": ""
-		},
-		"Africa/Bissau": {
-			"name": "Africa/Bissau",
-			"lat": 11.85,
-			"long": -14.4167,
-			"countries": [
-				"GW"
-			],
-			"comments": ""
-		},
-		"America/Guyana": {
-			"name": "America/Guyana",
-			"lat": 6.8,
-			"long": -57.8333,
-			"countries": [
-				"GY"
-			],
-			"comments": ""
-		},
-		"Asia/Hong_Kong": {
-			"name": "Asia/Hong_Kong",
-			"lat": 22.2833,
-			"long": 114.15,
-			"countries": [
-				"HK"
-			],
-			"comments": ""
-		},
-		"America/Tegucigalpa": {
-			"name": "America/Tegucigalpa",
-			"lat": 14.1,
-			"long": -86.7833,
-			"countries": [
-				"HN"
-			],
-			"comments": ""
-		},
-		"America/Port-au-Prince": {
-			"name": "America/Port-au-Prince",
-			"lat": 18.5333,
-			"long": -71.6667,
-			"countries": [
-				"HT"
-			],
-			"comments": ""
-		},
-		"Europe/Budapest": {
-			"name": "Europe/Budapest",
-			"lat": 47.5,
-			"long": 19.0833,
-			"countries": [
-				"HU"
-			],
-			"comments": ""
-		},
-		"Asia/Jakarta": {
-			"name": "Asia/Jakarta",
-			"lat": -5.8333,
-			"long": 106.8,
-			"countries": [
-				"ID"
-			],
-			"comments": "Java, Sumatra"
-		},
-		"Asia/Pontianak": {
-			"name": "Asia/Pontianak",
-			"lat": 0.0333,
-			"long": 109.3333,
-			"countries": [
-				"ID"
-			],
-			"comments": "Borneo (west, central)"
-		},
-		"Asia/Makassar": {
-			"name": "Asia/Makassar",
-			"lat": -4.8833,
-			"long": 119.4,
-			"countries": [
-				"ID"
-			],
-			"comments": "Borneo (east, south), Sulawesi/Celebes, Bali, Nusa Tengarra, Timor (west)"
-		},
-		"Asia/Jayapura": {
-			"name": "Asia/Jayapura",
-			"lat": -1.4667,
-			"long": 140.7,
-			"countries": [
-				"ID"
-			],
-			"comments": "New Guinea (West Papua / Irian Jaya), Malukus/Moluccas"
-		},
-		"Europe/Dublin": {
-			"name": "Europe/Dublin",
-			"lat": 53.3333,
-			"long": -5.75,
-			"countries": [
-				"IE"
-			],
-			"comments": ""
-		},
-		"Asia/Jerusalem": {
-			"name": "Asia/Jerusalem",
-			"lat": 31.7806,
-			"long": 35.2239,
-			"countries": [
-				"IL"
-			],
-			"comments": ""
-		},
-		"Asia/Kolkata": {
-			"name": "Asia/Kolkata",
-			"lat": 22.5333,
-			"long": 88.3667,
-			"countries": [
-				"IN"
-			],
-			"comments": ""
-		},
-		"Indian/Chagos": {
-			"name": "Indian/Chagos",
-			"lat": -6.6667,
-			"long": 72.4167,
-			"countries": [
-				"IO"
-			],
-			"comments": ""
-		},
-		"Asia/Baghdad": {
-			"name": "Asia/Baghdad",
-			"lat": 33.35,
-			"long": 44.4167,
-			"countries": [
-				"IQ"
-			],
-			"comments": ""
-		},
-		"Asia/Tehran": {
-			"name": "Asia/Tehran",
-			"lat": 35.6667,
-			"long": 51.4333,
-			"countries": [
-				"IR"
-			],
-			"comments": ""
-		},
-		"Europe/Rome": {
-			"name": "Europe/Rome",
-			"lat": 41.9,
-			"long": 12.4833,
-			"countries": [
-				"IT",
-				"SM",
-				"VA"
-			],
-			"comments": ""
-		},
-		"America/Jamaica": {
-			"name": "America/Jamaica",
-			"lat": 17.9681,
-			"long": -75.2067,
-			"countries": [
-				"JM"
-			],
-			"comments": ""
-		},
-		"Asia/Amman": {
-			"name": "Asia/Amman",
-			"lat": 31.95,
-			"long": 35.9333,
-			"countries": [
-				"JO"
-			],
-			"comments": ""
-		},
-		"Asia/Tokyo": {
-			"name": "Asia/Tokyo",
-			"lat": 35.6544,
-			"long": 139.7447,
-			"countries": [
-				"JP",
-				"AU"
-			],
-			"comments": "Eyre Bird Observatory"
-		},
-		"Africa/Nairobi": {
-			"name": "Africa/Nairobi",
-			"lat": -0.7167,
-			"long": 36.8167,
-			"countries": [
-				"KE",
-				"DJ",
-				"ER",
-				"ET",
-				"KM",
-				"MG",
-				"SO",
-				"TZ",
-				"UG",
-				"YT"
-			],
-			"comments": ""
-		},
-		"Asia/Bishkek": {
-			"name": "Asia/Bishkek",
-			"lat": 42.9,
-			"long": 74.6,
-			"countries": [
-				"KG"
-			],
-			"comments": ""
-		},
-		"Pacific/Tarawa": {
-			"name": "Pacific/Tarawa",
-			"lat": 1.4167,
-			"long": 173,
-			"countries": [
-				"KI",
-				"MH",
-				"TV",
-				"UM",
-				"WF"
-			],
-			"comments": "Gilberts, Marshalls, Wake"
-		},
-		"Pacific/Kanton": {
-			"name": "Pacific/Kanton",
-			"lat": -1.2167,
-			"long": -170.2833,
-			"countries": [
-				"KI"
-			],
-			"comments": "Phoenix Islands"
-		},
-		"Pacific/Kiritimati": {
-			"name": "Pacific/Kiritimati",
-			"lat": 1.8667,
-			"long": -156.6667,
-			"countries": [
-				"KI"
-			],
-			"comments": "Line Islands"
-		},
-		"Asia/Pyongyang": {
-			"name": "Asia/Pyongyang",
-			"lat": 39.0167,
-			"long": 125.75,
-			"countries": [
-				"KP"
-			],
-			"comments": ""
-		},
-		"Asia/Seoul": {
-			"name": "Asia/Seoul",
-			"lat": 37.55,
-			"long": 126.9667,
-			"countries": [
-				"KR"
-			],
-			"comments": ""
-		},
-		"Asia/Almaty": {
-			"name": "Asia/Almaty",
-			"lat": 43.25,
-			"long": 76.95,
-			"countries": [
-				"KZ"
-			],
-			"comments": "most of Kazakhstan"
-		},
-		"Asia/Qyzylorda": {
-			"name": "Asia/Qyzylorda",
-			"lat": 44.8,
-			"long": 65.4667,
-			"countries": [
-				"KZ"
-			],
-			"comments": "Qyzylorda/Kyzylorda/Kzyl-Orda"
-		},
-		"Asia/Qostanay": {
-			"name": "Asia/Qostanay",
-			"lat": 53.2,
-			"long": 63.6167,
-			"countries": [
-				"KZ"
-			],
-			"comments": "Qostanay/Kostanay/Kustanay"
-		},
-		"Asia/Aqtobe": {
-			"name": "Asia/Aqtobe",
-			"lat": 50.2833,
-			"long": 57.1667,
-			"countries": [
-				"KZ"
-			],
-			"comments": "Aqtöbe/Aktobe"
-		},
-		"Asia/Aqtau": {
-			"name": "Asia/Aqtau",
-			"lat": 44.5167,
-			"long": 50.2667,
-			"countries": [
-				"KZ"
-			],
-			"comments": "Mangghystaū/Mankistau"
-		},
-		"Asia/Atyrau": {
-			"name": "Asia/Atyrau",
-			"lat": 47.1167,
-			"long": 51.9333,
-			"countries": [
-				"KZ"
-			],
-			"comments": "Atyraū/Atirau/Gur'yev"
-		},
-		"Asia/Oral": {
-			"name": "Asia/Oral",
-			"lat": 51.2167,
-			"long": 51.35,
-			"countries": [
-				"KZ"
-			],
-			"comments": "West Kazakhstan"
-		},
-		"Asia/Beirut": {
-			"name": "Asia/Beirut",
-			"lat": 33.8833,
-			"long": 35.5,
-			"countries": [
-				"LB"
-			],
-			"comments": ""
-		},
-		"Asia/Colombo": {
-			"name": "Asia/Colombo",
-			"lat": 6.9333,
-			"long": 79.85,
-			"countries": [
-				"LK"
-			],
-			"comments": ""
-		},
-		"Africa/Monrovia": {
-			"name": "Africa/Monrovia",
-			"lat": 6.3,
-			"long": -9.2167,
-			"countries": [
-				"LR"
-			],
-			"comments": ""
-		},
-		"Europe/Vilnius": {
-			"name": "Europe/Vilnius",
-			"lat": 54.6833,
-			"long": 25.3167,
-			"countries": [
-				"LT"
-			],
-			"comments": ""
-		},
-		"Europe/Riga": {
-			"name": "Europe/Riga",
-			"lat": 56.95,
-			"long": 24.1,
-			"countries": [
-				"LV"
-			],
-			"comments": ""
-		},
-		"Africa/Tripoli": {
-			"name": "Africa/Tripoli",
-			"lat": 32.9,
-			"long": 13.1833,
-			"countries": [
-				"LY"
-			],
-			"comments": ""
-		},
-		"Africa/Casablanca": {
-			"name": "Africa/Casablanca",
-			"lat": 33.65,
-			"long": -6.4167,
-			"countries": [
-				"MA"
-			],
-			"comments": ""
-		},
-		"Europe/Chisinau": {
-			"name": "Europe/Chisinau",
-			"lat": 47,
-			"long": 28.8333,
-			"countries": [
-				"MD"
-			],
-			"comments": ""
-		},
-		"Pacific/Kwajalein": {
-			"name": "Pacific/Kwajalein",
-			"lat": 9.0833,
-			"long": 167.3333,
-			"countries": [
-				"MH"
-			],
-			"comments": "Kwajalein"
-		},
-		"Asia/Yangon": {
-			"name": "Asia/Yangon",
-			"lat": 16.7833,
-			"long": 96.1667,
-			"countries": [
-				"MM",
-				"CC"
-			],
-			"comments": ""
-		},
-		"Asia/Ulaanbaatar": {
-			"name": "Asia/Ulaanbaatar",
-			"lat": 47.9167,
-			"long": 106.8833,
-			"countries": [
-				"MN"
-			],
-			"comments": "most of Mongolia"
-		},
-		"Asia/Hovd": {
-			"name": "Asia/Hovd",
-			"lat": 48.0167,
-			"long": 91.65,
-			"countries": [
-				"MN"
-			],
-			"comments": "Bayan-Ölgii, Hovd, Uvs"
-		},
-		"Asia/Macau": {
-			"name": "Asia/Macau",
-			"lat": 22.1972,
-			"long": 113.5417,
-			"countries": [
-				"MO"
-			],
-			"comments": ""
-		},
-		"America/Martinique": {
-			"name": "America/Martinique",
-			"lat": 14.6,
-			"long": -60.9167,
-			"countries": [
-				"MQ"
-			],
-			"comments": ""
-		},
-		"Europe/Malta": {
-			"name": "Europe/Malta",
-			"lat": 35.9,
-			"long": 14.5167,
-			"countries": [
-				"MT"
-			],
-			"comments": ""
-		},
-		"Indian/Mauritius": {
-			"name": "Indian/Mauritius",
-			"lat": -19.8333,
-			"long": 57.5,
-			"countries": [
-				"MU"
-			],
-			"comments": ""
-		},
-		"Indian/Maldives": {
-			"name": "Indian/Maldives",
-			"lat": 4.1667,
-			"long": 73.5,
-			"countries": [
-				"MV",
-				"TF"
-			],
-			"comments": "Kerguelen, St Paul I, Amsterdam I"
-		},
-		"America/Mexico_City": {
-			"name": "America/Mexico_City",
-			"lat": 19.4,
-			"long": -98.85,
-			"countries": [
-				"MX"
-			],
-			"comments": "Central Mexico"
-		},
-		"America/Cancun": {
-			"name": "America/Cancun",
-			"lat": 21.0833,
-			"long": -85.2333,
-			"countries": [
-				"MX"
-			],
-			"comments": "Quintana Roo"
-		},
-		"America/Merida": {
-			"name": "America/Merida",
-			"lat": 20.9667,
-			"long": -88.3833,
-			"countries": [
-				"MX"
-			],
-			"comments": "Campeche, Yucatán"
-		},
-		"America/Monterrey": {
-			"name": "America/Monterrey",
-			"lat": 25.6667,
-			"long": -99.6833,
-			"countries": [
-				"MX"
-			],
-			"comments": "Durango; Coahuila, Nuevo León, Tamaulipas (most areas)"
-		},
-		"America/Matamoros": {
-			"name": "America/Matamoros",
-			"lat": 25.8333,
-			"long": -96.5,
-			"countries": [
-				"MX"
-			],
-			"comments": "Coahuila, Nuevo León, Tamaulipas (US border)"
-		},
-		"America/Chihuahua": {
-			"name": "America/Chihuahua",
-			"lat": 28.6333,
-			"long": -105.9167,
-			"countries": [
-				"MX"
-			],
-			"comments": "Chihuahua (most areas)"
-		},
-		"America/Ciudad_Juarez": {
-			"name": "America/Ciudad_Juarez",
-			"lat": 31.7333,
-			"long": -105.5167,
-			"countries": [
-				"MX"
-			],
-			"comments": "Chihuahua (US border - west)"
-		},
-		"America/Ojinaga": {
-			"name": "America/Ojinaga",
-			"lat": 29.5667,
-			"long": -103.5833,
-			"countries": [
-				"MX"
-			],
-			"comments": "Chihuahua (US border - east)"
-		},
-		"America/Mazatlan": {
-			"name": "America/Mazatlan",
-			"lat": 23.2167,
-			"long": -105.5833,
-			"countries": [
-				"MX"
-			],
-			"comments": "Baja California Sur, Nayarit (most areas), Sinaloa"
-		},
-		"America/Bahia_Banderas": {
-			"name": "America/Bahia_Banderas",
-			"lat": 20.8,
-			"long": -104.75,
-			"countries": [
-				"MX"
-			],
-			"comments": "Bahía de Banderas"
-		},
-		"America/Hermosillo": {
-			"name": "America/Hermosillo",
-			"lat": 29.0667,
-			"long": -109.0333,
-			"countries": [
-				"MX"
-			],
-			"comments": "Sonora"
-		},
-		"America/Tijuana": {
-			"name": "America/Tijuana",
-			"lat": 32.5333,
-			"long": -116.9833,
-			"countries": [
-				"MX"
-			],
-			"comments": "Baja California"
-		},
-		"Asia/Kuching": {
-			"name": "Asia/Kuching",
-			"lat": 1.55,
-			"long": 110.3333,
-			"countries": [
-				"MY",
-				"BN"
-			],
-			"comments": "Sabah, Sarawak"
-		},
-		"Africa/Maputo": {
-			"name": "Africa/Maputo",
-			"lat": -24.0333,
-			"long": 32.5833,
-			"countries": [
-				"MZ",
-				"BI",
-				"BW",
-				"CD",
-				"MW",
-				"RW",
-				"ZM",
-				"ZW"
-			],
-			"comments": "Central Africa Time"
-		},
-		"Africa/Windhoek": {
-			"name": "Africa/Windhoek",
-			"lat": -21.4333,
-			"long": 17.1,
-			"countries": [
-				"NA"
-			],
-			"comments": ""
-		},
-		"Pacific/Noumea": {
-			"name": "Pacific/Noumea",
-			"lat": -21.7333,
-			"long": 166.45,
-			"countries": [
-				"NC"
-			],
-			"comments": ""
-		},
-		"Pacific/Norfolk": {
-			"name": "Pacific/Norfolk",
-			"lat": -28.95,
-			"long": 167.9667,
-			"countries": [
-				"NF"
-			],
-			"comments": ""
-		},
-		"Africa/Lagos": {
-			"name": "Africa/Lagos",
-			"lat": 6.45,
-			"long": 3.4,
-			"countries": [
-				"NG",
-				"AO",
-				"BJ",
-				"CD",
-				"CF",
-				"CG",
-				"CM",
-				"GA",
-				"GQ",
-				"NE"
-			],
-			"comments": "West Africa Time"
-		},
-		"America/Managua": {
-			"name": "America/Managua",
-			"lat": 12.15,
-			"long": -85.7167,
-			"countries": [
-				"NI"
-			],
-			"comments": ""
-		},
-		"Asia/Kathmandu": {
-			"name": "Asia/Kathmandu",
-			"lat": 27.7167,
-			"long": 85.3167,
-			"countries": [
-				"NP"
-			],
-			"comments": ""
-		},
-		"Pacific/Nauru": {
-			"name": "Pacific/Nauru",
-			"lat": 0.5167,
-			"long": 166.9167,
-			"countries": [
-				"NR"
-			],
-			"comments": ""
-		},
-		"Pacific/Niue": {
-			"name": "Pacific/Niue",
-			"lat": -18.9833,
-			"long": -168.0833,
-			"countries": [
-				"NU"
-			],
-			"comments": ""
-		},
-		"Pacific/Auckland": {
-			"name": "Pacific/Auckland",
-			"lat": -35.1333,
-			"long": 174.7667,
-			"countries": [
-				"NZ",
-				"AQ"
-			],
-			"comments": "New Zealand time"
-		},
-		"Pacific/Chatham": {
-			"name": "Pacific/Chatham",
-			"lat": -42.05,
-			"long": -175.45,
-			"countries": [
-				"NZ"
-			],
-			"comments": "Chatham Islands"
-		},
-		"America/Panama": {
-			"name": "America/Panama",
-			"lat": 8.9667,
-			"long": -78.4667,
-			"countries": [
-				"PA",
-				"CA",
-				"KY"
-			],
-			"comments": "EST - ON (Atikokan), NU (Coral H)"
-		},
-		"America/Lima": {
-			"name": "America/Lima",
-			"lat": -11.95,
-			"long": -76.95,
-			"countries": [
-				"PE"
-			],
-			"comments": ""
-		},
-		"Pacific/Tahiti": {
-			"name": "Pacific/Tahiti",
-			"lat": -16.4667,
-			"long": -148.4333,
-			"countries": [
-				"PF"
-			],
-			"comments": "Society Islands"
-		},
-		"Pacific/Marquesas": {
-			"name": "Pacific/Marquesas",
-			"lat": -9,
-			"long": -138.5,
-			"countries": [
-				"PF"
-			],
-			"comments": "Marquesas Islands"
-		},
-		"Pacific/Gambier": {
-			"name": "Pacific/Gambier",
-			"lat": -22.8667,
-			"long": -133.05,
-			"countries": [
-				"PF"
-			],
-			"comments": "Gambier Islands"
-		},
-		"Pacific/Port_Moresby": {
-			"name": "Pacific/Port_Moresby",
-			"lat": -8.5,
-			"long": 147.1667,
-			"countries": [
-				"PG",
-				"AQ",
-				"FM"
-			],
-			"comments": "Papua New Guinea (most areas), Chuuk, Yap, Dumont d'Urville"
-		},
-		"Pacific/Bougainville": {
-			"name": "Pacific/Bougainville",
-			"lat": -5.7833,
-			"long": 155.5667,
-			"countries": [
-				"PG"
-			],
-			"comments": "Bougainville"
-		},
-		"Asia/Manila": {
-			"name": "Asia/Manila",
-			"lat": 14.5867,
-			"long": 120.9678,
-			"countries": [
-				"PH"
-			],
-			"comments": ""
-		},
-		"Asia/Karachi": {
-			"name": "Asia/Karachi",
-			"lat": 24.8667,
-			"long": 67.05,
-			"countries": [
-				"PK"
-			],
-			"comments": ""
-		},
-		"Europe/Warsaw": {
-			"name": "Europe/Warsaw",
-			"lat": 52.25,
-			"long": 21,
-			"countries": [
-				"PL"
-			],
-			"comments": ""
-		},
-		"America/Miquelon": {
-			"name": "America/Miquelon",
-			"lat": 47.05,
-			"long": -55.6667,
-			"countries": [
-				"PM"
-			],
-			"comments": ""
-		},
-		"Pacific/Pitcairn": {
-			"name": "Pacific/Pitcairn",
-			"lat": -24.9333,
-			"long": -129.9167,
-			"countries": [
-				"PN"
-			],
-			"comments": ""
-		},
-		"America/Puerto_Rico": {
-			"name": "America/Puerto_Rico",
-			"lat": 18.4683,
-			"long": -65.8939,
-			"countries": [
-				"PR",
-				"AG",
-				"CA",
-				"AI",
-				"AW",
-				"BL",
-				"BQ",
-				"CW",
-				"DM",
-				"GD",
-				"GP",
-				"KN",
-				"LC",
-				"MF",
-				"MS",
-				"SX",
-				"TT",
-				"VC",
-				"VG",
-				"VI"
-			],
-			"comments": "AST - QC (Lower North Shore)"
-		},
-		"Asia/Gaza": {
-			"name": "Asia/Gaza",
-			"lat": 31.5,
-			"long": 34.4667,
-			"countries": [
-				"PS"
-			],
-			"comments": "Gaza Strip"
-		},
-		"Asia/Hebron": {
-			"name": "Asia/Hebron",
-			"lat": 31.5333,
-			"long": 35.095,
-			"countries": [
-				"PS"
-			],
-			"comments": "West Bank"
-		},
-		"Europe/Lisbon": {
-			"name": "Europe/Lisbon",
-			"lat": 38.7167,
-			"long": -8.8667,
-			"countries": [
-				"PT"
-			],
-			"comments": "Portugal (mainland)"
-		},
-		"Atlantic/Madeira": {
-			"name": "Atlantic/Madeira",
-			"lat": 32.6333,
-			"long": -15.1,
-			"countries": [
-				"PT"
-			],
-			"comments": "Madeira Islands"
-		},
-		"Atlantic/Azores": {
-			"name": "Atlantic/Azores",
-			"lat": 37.7333,
-			"long": -24.3333,
-			"countries": [
-				"PT"
-			],
-			"comments": "Azores"
-		},
-		"Pacific/Palau": {
-			"name": "Pacific/Palau",
-			"lat": 7.3333,
-			"long": 134.4833,
-			"countries": [
-				"PW"
-			],
-			"comments": ""
-		},
-		"America/Asuncion": {
-			"name": "America/Asuncion",
-			"lat": -24.7333,
-			"long": -56.3333,
-			"countries": [
-				"PY"
-			],
-			"comments": ""
-		},
-		"Asia/Qatar": {
-			"name": "Asia/Qatar",
-			"lat": 25.2833,
-			"long": 51.5333,
-			"countries": [
-				"QA",
-				"BH"
-			],
-			"comments": ""
-		},
-		"Europe/Bucharest": {
-			"name": "Europe/Bucharest",
-			"lat": 44.4333,
-			"long": 26.1,
-			"countries": [
-				"RO"
-			],
-			"comments": ""
-		},
-		"Europe/Belgrade": {
-			"name": "Europe/Belgrade",
-			"lat": 44.8333,
-			"long": 20.5,
-			"countries": [
-				"RS",
-				"BA",
-				"HR",
-				"ME",
-				"MK",
-				"SI"
-			],
-			"comments": ""
-		},
-		"Europe/Kaliningrad": {
-			"name": "Europe/Kaliningrad",
-			"lat": 54.7167,
-			"long": 20.5,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK-01 - Kaliningrad"
-		},
-		"Europe/Moscow": {
-			"name": "Europe/Moscow",
-			"lat": 55.7558,
-			"long": 37.6178,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+00 - Moscow area"
-		},
-		"Europe/Simferopol": {
-			"name": "Europe/Simferopol",
-			"lat": 44.95,
-			"long": 34.1,
-			"countries": [
-				"RU",
-				"UA"
-			],
-			"comments": "Crimea"
-		},
-		"Europe/Kirov": {
-			"name": "Europe/Kirov",
-			"lat": 58.6,
-			"long": 49.65,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+00 - Kirov"
-		},
-		"Europe/Volgograd": {
-			"name": "Europe/Volgograd",
-			"lat": 48.7333,
-			"long": 44.4167,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+00 - Volgograd"
-		},
-		"Europe/Astrakhan": {
-			"name": "Europe/Astrakhan",
-			"lat": 46.35,
-			"long": 48.05,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+01 - Astrakhan"
-		},
-		"Europe/Saratov": {
-			"name": "Europe/Saratov",
-			"lat": 51.5667,
-			"long": 46.0333,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+01 - Saratov"
-		},
-		"Europe/Ulyanovsk": {
-			"name": "Europe/Ulyanovsk",
-			"lat": 54.3333,
-			"long": 48.4,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+01 - Ulyanovsk"
-		},
-		"Europe/Samara": {
-			"name": "Europe/Samara",
-			"lat": 53.2,
-			"long": 50.15,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+01 - Samara, Udmurtia"
-		},
-		"Asia/Yekaterinburg": {
-			"name": "Asia/Yekaterinburg",
-			"lat": 56.85,
-			"long": 60.6,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+02 - Urals"
-		},
-		"Asia/Omsk": {
-			"name": "Asia/Omsk",
-			"lat": 55,
-			"long": 73.4,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+03 - Omsk"
-		},
-		"Asia/Novosibirsk": {
-			"name": "Asia/Novosibirsk",
-			"lat": 55.0333,
-			"long": 82.9167,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+04 - Novosibirsk"
-		},
-		"Asia/Barnaul": {
-			"name": "Asia/Barnaul",
-			"lat": 53.3667,
-			"long": 83.75,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+04 - Altai"
-		},
-		"Asia/Tomsk": {
-			"name": "Asia/Tomsk",
-			"lat": 56.5,
-			"long": 84.9667,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+04 - Tomsk"
-		},
-		"Asia/Novokuznetsk": {
-			"name": "Asia/Novokuznetsk",
-			"lat": 53.75,
-			"long": 87.1167,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+04 - Kemerovo"
-		},
-		"Asia/Krasnoyarsk": {
-			"name": "Asia/Krasnoyarsk",
-			"lat": 56.0167,
-			"long": 92.8333,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+04 - Krasnoyarsk area"
-		},
-		"Asia/Irkutsk": {
-			"name": "Asia/Irkutsk",
-			"lat": 52.2667,
-			"long": 104.3333,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+05 - Irkutsk, Buryatia"
-		},
-		"Asia/Chita": {
-			"name": "Asia/Chita",
-			"lat": 52.05,
-			"long": 113.4667,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+06 - Zabaykalsky"
-		},
-		"Asia/Yakutsk": {
-			"name": "Asia/Yakutsk",
-			"lat": 62,
-			"long": 129.6667,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+06 - Lena River"
-		},
-		"Asia/Khandyga": {
-			"name": "Asia/Khandyga",
-			"lat": 62.6564,
-			"long": 135.5539,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+06 - Tomponsky, Ust-Maysky"
-		},
-		"Asia/Vladivostok": {
-			"name": "Asia/Vladivostok",
-			"lat": 43.1667,
-			"long": 131.9333,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+07 - Amur River"
-		},
-		"Asia/Ust-Nera": {
-			"name": "Asia/Ust-Nera",
-			"lat": 64.5603,
-			"long": 143.2267,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+07 - Oymyakonsky"
-		},
-		"Asia/Magadan": {
-			"name": "Asia/Magadan",
-			"lat": 59.5667,
-			"long": 150.8,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+08 - Magadan"
-		},
-		"Asia/Sakhalin": {
-			"name": "Asia/Sakhalin",
-			"lat": 46.9667,
-			"long": 142.7,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+08 - Sakhalin Island"
-		},
-		"Asia/Srednekolymsk": {
-			"name": "Asia/Srednekolymsk",
-			"lat": 67.4667,
-			"long": 153.7167,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+08 - Sakha (E), N Kuril Is"
-		},
-		"Asia/Kamchatka": {
-			"name": "Asia/Kamchatka",
-			"lat": 53.0167,
-			"long": 158.65,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+09 - Kamchatka"
-		},
-		"Asia/Anadyr": {
-			"name": "Asia/Anadyr",
-			"lat": 64.75,
-			"long": 177.4833,
-			"countries": [
-				"RU"
-			],
-			"comments": "MSK+09 - Bering Sea"
-		},
-		"Asia/Riyadh": {
-			"name": "Asia/Riyadh",
-			"lat": 24.6333,
-			"long": 46.7167,
-			"countries": [
-				"SA",
-				"AQ",
-				"KW",
-				"YE"
-			],
-			"comments": "Syowa"
-		},
-		"Pacific/Guadalcanal": {
-			"name": "Pacific/Guadalcanal",
-			"lat": -8.4667,
-			"long": 160.2,
-			"countries": [
-				"SB",
-				"FM"
-			],
-			"comments": "Pohnpei"
-		},
-		"Africa/Khartoum": {
-			"name": "Africa/Khartoum",
-			"lat": 15.6,
-			"long": 32.5333,
-			"countries": [
-				"SD"
-			],
-			"comments": ""
-		},
-		"Asia/Singapore": {
-			"name": "Asia/Singapore",
-			"lat": 1.2833,
-			"long": 103.85,
-			"countries": [
-				"SG",
-				"AQ",
-				"MY"
-			],
-			"comments": "peninsular Malaysia, Concordia"
-		},
-		"America/Paramaribo": {
-			"name": "America/Paramaribo",
-			"lat": 5.8333,
-			"long": -54.8333,
-			"countries": [
-				"SR"
-			],
-			"comments": ""
-		},
-		"Africa/Juba": {
-			"name": "Africa/Juba",
-			"lat": 4.85,
-			"long": 31.6167,
-			"countries": [
-				"SS"
-			],
-			"comments": ""
-		},
-		"Africa/Sao_Tome": {
-			"name": "Africa/Sao_Tome",
-			"lat": 0.3333,
-			"long": 6.7333,
-			"countries": [
-				"ST"
-			],
-			"comments": ""
-		},
-		"America/El_Salvador": {
-			"name": "America/El_Salvador",
-			"lat": 13.7,
-			"long": -88.8,
-			"countries": [
-				"SV"
-			],
-			"comments": ""
-		},
-		"Asia/Damascus": {
-			"name": "Asia/Damascus",
-			"lat": 33.5,
-			"long": 36.3,
-			"countries": [
-				"SY"
-			],
-			"comments": ""
-		},
-		"America/Grand_Turk": {
-			"name": "America/Grand_Turk",
-			"lat": 21.4667,
-			"long": -70.8667,
-			"countries": [
-				"TC"
-			],
-			"comments": ""
-		},
-		"Africa/Ndjamena": {
-			"name": "Africa/Ndjamena",
-			"lat": 12.1167,
-			"long": 15.05,
-			"countries": [
-				"TD"
-			],
-			"comments": ""
-		},
-		"Asia/Bangkok": {
-			"name": "Asia/Bangkok",
-			"lat": 13.75,
-			"long": 100.5167,
-			"countries": [
-				"TH",
-				"CX",
-				"KH",
-				"LA",
-				"VN"
-			],
-			"comments": "north Vietnam"
-		},
-		"Asia/Dushanbe": {
-			"name": "Asia/Dushanbe",
-			"lat": 38.5833,
-			"long": 68.8,
-			"countries": [
-				"TJ"
-			],
-			"comments": ""
-		},
-		"Pacific/Fakaofo": {
-			"name": "Pacific/Fakaofo",
-			"lat": -8.6333,
-			"long": -170.7667,
-			"countries": [
-				"TK"
-			],
-			"comments": ""
-		},
-		"Asia/Dili": {
-			"name": "Asia/Dili",
-			"lat": -7.45,
-			"long": 125.5833,
-			"countries": [
-				"TL"
-			],
-			"comments": ""
-		},
-		"Asia/Ashgabat": {
-			"name": "Asia/Ashgabat",
-			"lat": 37.95,
-			"long": 58.3833,
-			"countries": [
-				"TM"
-			],
-			"comments": ""
-		},
-		"Africa/Tunis": {
-			"name": "Africa/Tunis",
-			"lat": 36.8,
-			"long": 10.1833,
-			"countries": [
-				"TN"
-			],
-			"comments": ""
-		},
-		"Pacific/Tongatapu": {
-			"name": "Pacific/Tongatapu",
-			"lat": -20.8667,
-			"long": -174.8,
-			"countries": [
-				"TO"
-			],
-			"comments": ""
-		},
-		"Europe/Istanbul": {
-			"name": "Europe/Istanbul",
-			"lat": 41.0167,
-			"long": 28.9667,
-			"countries": [
-				"TR"
-			],
-			"comments": ""
-		},
-		"Asia/Taipei": {
-			"name": "Asia/Taipei",
-			"lat": 25.05,
-			"long": 121.5,
-			"countries": [
-				"TW"
-			],
-			"comments": ""
-		},
-		"Europe/Kyiv": {
-			"name": "Europe/Kyiv",
-			"lat": 50.4333,
-			"long": 30.5167,
-			"countries": [
-				"UA"
-			],
-			"comments": "most of Ukraine"
-		},
-		"America/New_York": {
-			"name": "America/New_York",
-			"lat": 40.7142,
-			"long": -73.9936,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern (most areas)"
-		},
-		"America/Detroit": {
-			"name": "America/Detroit",
-			"lat": 42.3314,
-			"long": -82.9542,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - MI (most areas)"
-		},
-		"America/Kentucky/Louisville": {
-			"name": "America/Kentucky/Louisville",
-			"lat": 38.2542,
-			"long": -84.2406,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - KY (Louisville area)"
-		},
-		"America/Kentucky/Monticello": {
-			"name": "America/Kentucky/Monticello",
-			"lat": 36.8297,
-			"long": -83.1508,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - KY (Wayne)"
-		},
-		"America/Indiana/Indianapolis": {
-			"name": "America/Indiana/Indianapolis",
-			"lat": 39.7683,
-			"long": -85.8419,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (most areas)"
-		},
-		"America/Indiana/Vincennes": {
-			"name": "America/Indiana/Vincennes",
-			"lat": 38.6772,
-			"long": -86.4714,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (Da, Du, K, Mn)"
-		},
-		"America/Indiana/Winamac": {
-			"name": "America/Indiana/Winamac",
-			"lat": 41.0514,
-			"long": -85.3969,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (Pulaski)"
-		},
-		"America/Indiana/Marengo": {
-			"name": "America/Indiana/Marengo",
-			"lat": 38.3756,
-			"long": -85.6553,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (Crawford)"
-		},
-		"America/Indiana/Petersburg": {
-			"name": "America/Indiana/Petersburg",
-			"lat": 38.4919,
-			"long": -86.7214,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (Pike)"
-		},
-		"America/Indiana/Vevay": {
-			"name": "America/Indiana/Vevay",
-			"lat": 38.7478,
-			"long": -84.9328,
-			"countries": [
-				"US"
-			],
-			"comments": "Eastern - IN (Switzerland)"
-		},
-		"America/Chicago": {
-			"name": "America/Chicago",
-			"lat": 41.85,
-			"long": -86.35,
-			"countries": [
-				"US"
-			],
-			"comments": "Central (most areas)"
-		},
-		"America/Indiana/Tell_City": {
-			"name": "America/Indiana/Tell_City",
-			"lat": 37.9531,
-			"long": -85.2386,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - IN (Perry)"
-		},
-		"America/Indiana/Knox": {
-			"name": "America/Indiana/Knox",
-			"lat": 41.2958,
-			"long": -85.375,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - IN (Starke)"
-		},
-		"America/Menominee": {
-			"name": "America/Menominee",
-			"lat": 45.1078,
-			"long": -86.3858,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - MI (Wisconsin border)"
-		},
-		"America/North_Dakota/Center": {
-			"name": "America/North_Dakota/Center",
-			"lat": 47.1164,
-			"long": -100.7008,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - ND (Oliver)"
-		},
-		"America/North_Dakota/New_Salem": {
-			"name": "America/North_Dakota/New_Salem",
-			"lat": 46.845,
-			"long": -100.5892,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - ND (Morton rural)"
-		},
-		"America/North_Dakota/Beulah": {
-			"name": "America/North_Dakota/Beulah",
-			"lat": 47.2642,
-			"long": -100.2222,
-			"countries": [
-				"US"
-			],
-			"comments": "Central - ND (Mercer)"
-		},
-		"America/Denver": {
-			"name": "America/Denver",
-			"lat": 39.7392,
-			"long": -103.0158,
-			"countries": [
-				"US"
-			],
-			"comments": "Mountain (most areas)"
-		},
-		"America/Boise": {
-			"name": "America/Boise",
-			"lat": 43.6136,
-			"long": -115.7975,
-			"countries": [
-				"US"
-			],
-			"comments": "Mountain - ID (south), OR (east)"
-		},
-		"America/Phoenix": {
-			"name": "America/Phoenix",
-			"lat": 33.4483,
-			"long": -111.9267,
-			"countries": [
-				"US",
-				"CA"
-			],
-			"comments": "MST - AZ (most areas), Creston BC"
-		},
-		"America/Los_Angeles": {
-			"name": "America/Los_Angeles",
-			"lat": 34.0522,
-			"long": -117.7572,
-			"countries": [
-				"US"
-			],
-			"comments": "Pacific"
-		},
-		"America/Anchorage": {
-			"name": "America/Anchorage",
-			"lat": 61.2181,
-			"long": -148.0997,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska (most areas)"
-		},
-		"America/Juneau": {
-			"name": "America/Juneau",
-			"lat": 58.3019,
-			"long": -133.5803,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska - Juneau area"
-		},
-		"America/Sitka": {
-			"name": "America/Sitka",
-			"lat": 57.1764,
-			"long": -134.6981,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska - Sitka area"
-		},
-		"America/Metlakatla": {
-			"name": "America/Metlakatla",
-			"lat": 55.1269,
-			"long": -130.4236,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska - Annette Island"
-		},
-		"America/Yakutat": {
-			"name": "America/Yakutat",
-			"lat": 59.5469,
-			"long": -138.2728,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska - Yakutat"
-		},
-		"America/Nome": {
-			"name": "America/Nome",
-			"lat": 64.5011,
-			"long": -164.5936,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska (west)"
-		},
-		"America/Adak": {
-			"name": "America/Adak",
-			"lat": 51.88,
-			"long": -175.3419,
-			"countries": [
-				"US"
-			],
-			"comments": "Alaska - western Aleutians"
-		},
-		"Pacific/Honolulu": {
-			"name": "Pacific/Honolulu",
-			"lat": 21.3069,
-			"long": -156.1417,
-			"countries": [
-				"US"
-			],
-			"comments": "Hawaii"
-		},
-		"America/Montevideo": {
-			"name": "America/Montevideo",
-			"lat": -33.0908,
-			"long": -55.7875,
-			"countries": [
-				"UY"
-			],
-			"comments": ""
-		},
-		"Asia/Samarkand": {
-			"name": "Asia/Samarkand",
-			"lat": 39.6667,
-			"long": 66.8,
-			"countries": [
-				"UZ"
-			],
-			"comments": "Uzbekistan (west)"
-		},
-		"Asia/Tashkent": {
-			"name": "Asia/Tashkent",
-			"lat": 41.3333,
-			"long": 69.3,
-			"countries": [
-				"UZ"
-			],
-			"comments": "Uzbekistan (east)"
-		},
-		"America/Caracas": {
-			"name": "America/Caracas",
-			"lat": 10.5,
-			"long": -65.0667,
-			"countries": [
-				"VE"
-			],
-			"comments": ""
-		},
-		"Asia/Ho_Chi_Minh": {
-			"name": "Asia/Ho_Chi_Minh",
-			"lat": 10.75,
-			"long": 106.6667,
-			"countries": [
-				"VN"
-			],
-			"comments": "south Vietnam"
-		},
-		"Pacific/Efate": {
-			"name": "Pacific/Efate",
-			"lat": -16.3333,
-			"long": 168.4167,
-			"countries": [
-				"VU"
-			],
-			"comments": ""
-		},
-		"Pacific/Apia": {
-			"name": "Pacific/Apia",
-			"lat": -12.1667,
-			"long": -170.2667,
-			"countries": [
-				"WS"
-			],
-			"comments": ""
-		},
-		"Africa/Johannesburg": {
-			"name": "Africa/Johannesburg",
-			"lat": -25.75,
-			"long": 28,
-			"countries": [
-				"ZA",
-				"LS",
-				"SZ"
-			],
-			"comments": ""
-		},
-		"America/Antigua": {
-			"name": "America/Antigua",
-			"lat": 17.05,
-			"long": -60.2,
-			"countries": [
-				"AG"
-			],
-			"comments": ""
-		},
-		"America/Anguilla": {
-			"name": "America/Anguilla",
-			"lat": 18.2,
-			"long": -62.9333,
-			"countries": [
-				"AI"
-			],
-			"comments": ""
-		},
-		"Africa/Luanda": {
-			"name": "Africa/Luanda",
-			"lat": -7.2,
-			"long": 13.2333,
-			"countries": [
-				"AO"
-			],
-			"comments": ""
-		},
-		"Antarctica/McMurdo": {
-			"name": "Antarctica/McMurdo",
-			"lat": -76.1667,
-			"long": 166.6,
-			"countries": [
-				"AQ"
-			],
-			"comments": "New Zealand time - McMurdo, South Pole"
-		},
-		"Antarctica/DumontDUrville": {
-			"name": "Antarctica/DumontDUrville",
-			"lat": -65.3333,
-			"long": 140.0167,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Dumont-d'Urville"
-		},
-		"Antarctica/Syowa": {
-			"name": "Antarctica/Syowa",
-			"lat": -68.9939,
-			"long": 39.59,
-			"countries": [
-				"AQ"
-			],
-			"comments": "Syowa"
-		},
-		"America/Aruba": {
-			"name": "America/Aruba",
-			"lat": 12.5,
-			"long": -68.0333,
-			"countries": [
-				"AW"
-			],
-			"comments": ""
-		},
-		"Europe/Mariehamn": {
-			"name": "Europe/Mariehamn",
-			"lat": 60.1,
-			"long": 19.95,
-			"countries": [
-				"AX"
-			],
-			"comments": ""
-		},
-		"Europe/Sarajevo": {
-			"name": "Europe/Sarajevo",
-			"lat": 43.8667,
-			"long": 18.4167,
-			"countries": [
-				"BA"
-			],
-			"comments": ""
-		},
-		"Africa/Ouagadougou": {
-			"name": "Africa/Ouagadougou",
-			"lat": 12.3667,
-			"long": -0.4833,
-			"countries": [
-				"BF"
-			],
-			"comments": ""
-		},
-		"Asia/Bahrain": {
-			"name": "Asia/Bahrain",
-			"lat": 26.3833,
-			"long": 50.5833,
-			"countries": [
-				"BH"
-			],
-			"comments": ""
-		},
-		"Africa/Bujumbura": {
-			"name": "Africa/Bujumbura",
-			"lat": -2.6167,
-			"long": 29.3667,
-			"countries": [
-				"BI"
-			],
-			"comments": ""
-		},
-		"Africa/Porto-Novo": {
-			"name": "Africa/Porto-Novo",
-			"lat": 6.4833,
-			"long": 2.6167,
-			"countries": [
-				"BJ"
-			],
-			"comments": ""
-		},
-		"America/St_Barthelemy": {
-			"name": "America/St_Barthelemy",
-			"lat": 17.8833,
-			"long": -61.15,
-			"countries": [
-				"BL"
-			],
-			"comments": ""
-		},
-		"Asia/Brunei": {
-			"name": "Asia/Brunei",
-			"lat": 4.9333,
-			"long": 114.9167,
-			"countries": [
-				"BN"
-			],
-			"comments": ""
-		},
-		"America/Kralendijk": {
-			"name": "America/Kralendijk",
-			"lat": 12.1508,
-			"long": -67.7233,
-			"countries": [
-				"BQ"
-			],
-			"comments": ""
-		},
-		"America/Nassau": {
-			"name": "America/Nassau",
-			"lat": 25.0833,
-			"long": -76.65,
-			"countries": [
-				"BS"
-			],
-			"comments": ""
-		},
-		"Africa/Gaborone": {
-			"name": "Africa/Gaborone",
-			"lat": -23.35,
-			"long": 25.9167,
-			"countries": [
-				"BW"
-			],
-			"comments": ""
-		},
-		"America/Blanc-Sablon": {
-			"name": "America/Blanc-Sablon",
-			"lat": 51.4167,
-			"long": -56.8833,
-			"countries": [
-				"CA"
-			],
-			"comments": "AST - QC (Lower North Shore)"
-		},
-		"America/Atikokan": {
-			"name": "America/Atikokan",
-			"lat": 48.7586,
-			"long": -90.3783,
-			"countries": [
-				"CA"
-			],
-			"comments": "EST - ON (Atikokan), NU (Coral H)"
-		},
-		"America/Creston": {
-			"name": "America/Creston",
-			"lat": 49.1,
-			"long": -115.4833,
-			"countries": [
-				"CA"
-			],
-			"comments": "MST - BC (Creston)"
-		},
-		"Indian/Cocos": {
-			"name": "Indian/Cocos",
-			"lat": -11.8333,
-			"long": 96.9167,
-			"countries": [
-				"CC"
-			],
-			"comments": ""
-		},
-		"Africa/Kinshasa": {
-			"name": "Africa/Kinshasa",
-			"lat": -3.7,
-			"long": 15.3,
-			"countries": [
-				"CD"
-			],
-			"comments": "Dem. Rep. of Congo (west)"
-		},
-		"Africa/Lubumbashi": {
-			"name": "Africa/Lubumbashi",
-			"lat": -10.3333,
-			"long": 27.4667,
-			"countries": [
-				"CD"
-			],
-			"comments": "Dem. Rep. of Congo (east)"
-		},
-		"Africa/Bangui": {
-			"name": "Africa/Bangui",
-			"lat": 4.3667,
-			"long": 18.5833,
-			"countries": [
-				"CF"
-			],
-			"comments": ""
-		},
-		"Africa/Brazzaville": {
-			"name": "Africa/Brazzaville",
-			"lat": -3.7333,
-			"long": 15.2833,
-			"countries": [
-				"CG"
-			],
-			"comments": ""
-		},
-		"Africa/Douala": {
-			"name": "Africa/Douala",
-			"lat": 4.05,
-			"long": 9.7,
-			"countries": [
-				"CM"
-			],
-			"comments": ""
-		},
-		"America/Curacao": {
-			"name": "America/Curacao",
-			"lat": 12.1833,
-			"long": -69,
-			"countries": [
-				"CW"
-			],
-			"comments": ""
-		},
-		"Indian/Christmas": {
-			"name": "Indian/Christmas",
-			"lat": -9.5833,
-			"long": 105.7167,
-			"countries": [
-				"CX"
-			],
-			"comments": ""
-		},
-		"Europe/Busingen": {
-			"name": "Europe/Busingen",
-			"lat": 47.7,
-			"long": 8.6833,
-			"countries": [
-				"DE"
-			],
-			"comments": "Busingen"
-		},
-		"Africa/Djibouti": {
-			"name": "Africa/Djibouti",
-			"lat": 11.6,
-			"long": 43.15,
-			"countries": [
-				"DJ"
-			],
-			"comments": ""
-		},
-		"Europe/Copenhagen": {
-			"name": "Europe/Copenhagen",
-			"lat": 55.6667,
-			"long": 12.5833,
-			"countries": [
-				"DK"
-			],
-			"comments": ""
-		},
-		"America/Dominica": {
-			"name": "America/Dominica",
-			"lat": 15.3,
-			"long": -60.6,
-			"countries": [
-				"DM"
-			],
-			"comments": ""
-		},
-		"Africa/Asmara": {
-			"name": "Africa/Asmara",
-			"lat": 15.3333,
-			"long": 38.8833,
-			"countries": [
-				"ER"
-			],
-			"comments": ""
-		},
-		"Africa/Addis_Ababa": {
-			"name": "Africa/Addis_Ababa",
-			"lat": 9.0333,
-			"long": 38.7,
-			"countries": [
-				"ET"
-			],
-			"comments": ""
-		},
-		"Pacific/Chuuk": {
-			"name": "Pacific/Chuuk",
-			"lat": 7.4167,
-			"long": 151.7833,
-			"countries": [
-				"FM"
-			],
-			"comments": "Chuuk/Truk, Yap"
-		},
-		"Pacific/Pohnpei": {
-			"name": "Pacific/Pohnpei",
-			"lat": 6.9667,
-			"long": 158.2167,
-			"countries": [
-				"FM"
-			],
-			"comments": "Pohnpei/Ponape"
-		},
-		"Africa/Libreville": {
-			"name": "Africa/Libreville",
-			"lat": 0.3833,
-			"long": 9.45,
-			"countries": [
-				"GA"
-			],
-			"comments": ""
-		},
-		"America/Grenada": {
-			"name": "America/Grenada",
-			"lat": 12.05,
-			"long": -60.25,
-			"countries": [
-				"GD"
-			],
-			"comments": ""
-		},
-		"Europe/Guernsey": {
-			"name": "Europe/Guernsey",
-			"lat": 49.4547,
-			"long": -1.4639,
-			"countries": [
-				"GG"
-			],
-			"comments": ""
-		},
-		"Africa/Accra": {
-			"name": "Africa/Accra",
-			"lat": 5.55,
-			"long": 0.2167,
-			"countries": [
-				"GH"
-			],
-			"comments": ""
-		},
-		"Africa/Banjul": {
-			"name": "Africa/Banjul",
-			"lat": 13.4667,
-			"long": -15.35,
-			"countries": [
-				"GM"
-			],
-			"comments": ""
-		},
-		"Africa/Conakry": {
-			"name": "Africa/Conakry",
-			"lat": 9.5167,
-			"long": -12.2833,
-			"countries": [
-				"GN"
-			],
-			"comments": ""
-		},
-		"America/Guadeloupe": {
-			"name": "America/Guadeloupe",
-			"lat": 16.2333,
-			"long": -60.4667,
-			"countries": [
-				"GP"
-			],
-			"comments": ""
-		},
-		"Africa/Malabo": {
-			"name": "Africa/Malabo",
-			"lat": 3.75,
-			"long": 8.7833,
-			"countries": [
-				"GQ"
-			],
-			"comments": ""
-		},
-		"Europe/Zagreb": {
-			"name": "Europe/Zagreb",
-			"lat": 45.8,
-			"long": 15.9667,
-			"countries": [
-				"HR"
-			],
-			"comments": ""
-		},
-		"Europe/Isle_of_Man": {
-			"name": "Europe/Isle_of_Man",
-			"lat": 54.15,
-			"long": -3.5333,
-			"countries": [
-				"IM"
-			],
-			"comments": ""
-		},
-		"Atlantic/Reykjavik": {
-			"name": "Atlantic/Reykjavik",
-			"lat": 64.15,
-			"long": -20.15,
-			"countries": [
-				"IS"
-			],
-			"comments": ""
-		},
-		"Europe/Jersey": {
-			"name": "Europe/Jersey",
-			"lat": 49.1836,
-			"long": -1.8933,
-			"countries": [
-				"JE"
-			],
-			"comments": ""
-		},
-		"Asia/Phnom_Penh": {
-			"name": "Asia/Phnom_Penh",
-			"lat": 11.55,
-			"long": 104.9167,
-			"countries": [
-				"KH"
-			],
-			"comments": ""
-		},
-		"Indian/Comoro": {
-			"name": "Indian/Comoro",
-			"lat": -10.3167,
-			"long": 43.2667,
-			"countries": [
-				"KM"
-			],
-			"comments": ""
-		},
-		"America/St_Kitts": {
-			"name": "America/St_Kitts",
-			"lat": 17.3,
-			"long": -61.2833,
-			"countries": [
-				"KN"
-			],
-			"comments": ""
-		},
-		"Asia/Kuwait": {
-			"name": "Asia/Kuwait",
-			"lat": 29.3333,
-			"long": 47.9833,
-			"countries": [
-				"KW"
-			],
-			"comments": ""
-		},
-		"America/Cayman": {
-			"name": "America/Cayman",
-			"lat": 19.3,
-			"long": -80.6167,
-			"countries": [
-				"KY"
-			],
-			"comments": ""
-		},
-		"Asia/Vientiane": {
-			"name": "Asia/Vientiane",
-			"lat": 17.9667,
-			"long": 102.6,
-			"countries": [
-				"LA"
-			],
-			"comments": ""
-		},
-		"America/St_Lucia": {
-			"name": "America/St_Lucia",
-			"lat": 14.0167,
-			"long": -61,
-			"countries": [
-				"LC"
-			],
-			"comments": ""
-		},
-		"Europe/Vaduz": {
-			"name": "Europe/Vaduz",
-			"lat": 47.15,
-			"long": 9.5167,
-			"countries": [
-				"LI"
-			],
-			"comments": ""
-		},
-		"Africa/Maseru": {
-			"name": "Africa/Maseru",
-			"lat": -28.5333,
-			"long": 27.5,
-			"countries": [
-				"LS"
-			],
-			"comments": ""
-		},
-		"Europe/Luxembourg": {
-			"name": "Europe/Luxembourg",
-			"lat": 49.6,
-			"long": 6.15,
-			"countries": [
-				"LU"
-			],
-			"comments": ""
-		},
-		"Europe/Monaco": {
-			"name": "Europe/Monaco",
-			"lat": 43.7,
-			"long": 7.3833,
-			"countries": [
-				"MC"
-			],
-			"comments": ""
-		},
-		"Europe/Podgorica": {
-			"name": "Europe/Podgorica",
-			"lat": 42.4333,
-			"long": 19.2667,
-			"countries": [
-				"ME"
-			],
-			"comments": ""
-		},
-		"America/Marigot": {
-			"name": "America/Marigot",
-			"lat": 18.0667,
-			"long": -62.9167,
-			"countries": [
-				"MF"
-			],
-			"comments": ""
-		},
-		"Indian/Antananarivo": {
-			"name": "Indian/Antananarivo",
-			"lat": -17.0833,
-			"long": 47.5167,
-			"countries": [
-				"MG"
-			],
-			"comments": ""
-		},
-		"Pacific/Majuro": {
-			"name": "Pacific/Majuro",
-			"lat": 7.15,
-			"long": 171.2,
-			"countries": [
-				"MH"
-			],
-			"comments": "most of Marshall Islands"
-		},
-		"Europe/Skopje": {
-			"name": "Europe/Skopje",
-			"lat": 41.9833,
-			"long": 21.4333,
-			"countries": [
-				"MK"
-			],
-			"comments": ""
-		},
-		"Africa/Bamako": {
-			"name": "Africa/Bamako",
-			"lat": 12.65,
-			"long": -8,
-			"countries": [
-				"ML"
-			],
-			"comments": ""
-		},
-		"Pacific/Saipan": {
-			"name": "Pacific/Saipan",
-			"lat": 15.2,
-			"long": 145.75,
-			"countries": [
-				"MP"
-			],
-			"comments": ""
-		},
-		"Africa/Nouakchott": {
-			"name": "Africa/Nouakchott",
-			"lat": 18.1,
-			"long": -14.05,
-			"countries": [
-				"MR"
-			],
-			"comments": ""
-		},
-		"America/Montserrat": {
-			"name": "America/Montserrat",
-			"lat": 16.7167,
-			"long": -61.7833,
-			"countries": [
-				"MS"
-			],
-			"comments": ""
-		},
-		"Africa/Blantyre": {
-			"name": "Africa/Blantyre",
-			"lat": -14.2167,
-			"long": 35,
-			"countries": [
-				"MW"
-			],
-			"comments": ""
-		},
-		"Asia/Kuala_Lumpur": {
-			"name": "Asia/Kuala_Lumpur",
-			"lat": 3.1667,
-			"long": 101.7,
-			"countries": [
-				"MY"
-			],
-			"comments": "Malaysia (peninsula)"
-		},
-		"Africa/Niamey": {
-			"name": "Africa/Niamey",
-			"lat": 13.5167,
-			"long": 2.1167,
-			"countries": [
-				"NE"
-			],
-			"comments": ""
-		},
-		"Europe/Amsterdam": {
-			"name": "Europe/Amsterdam",
-			"lat": 52.3667,
-			"long": 4.9,
-			"countries": [
-				"NL"
-			],
-			"comments": ""
-		},
-		"Europe/Oslo": {
-			"name": "Europe/Oslo",
-			"lat": 59.9167,
-			"long": 10.75,
-			"countries": [
-				"NO"
-			],
-			"comments": ""
-		},
-		"Asia/Muscat": {
-			"name": "Asia/Muscat",
-			"lat": 23.6,
-			"long": 58.5833,
-			"countries": [
-				"OM"
-			],
-			"comments": ""
-		},
-		"Indian/Reunion": {
-			"name": "Indian/Reunion",
-			"lat": -19.1333,
-			"long": 55.4667,
-			"countries": [
-				"RE"
-			],
-			"comments": ""
-		},
-		"Africa/Kigali": {
-			"name": "Africa/Kigali",
-			"lat": -0.05,
-			"long": 30.0667,
-			"countries": [
-				"RW"
-			],
-			"comments": ""
-		},
-		"Indian/Mahe": {
-			"name": "Indian/Mahe",
-			"lat": -3.3333,
-			"long": 55.4667,
-			"countries": [
-				"SC"
-			],
-			"comments": ""
-		},
-		"Europe/Stockholm": {
-			"name": "Europe/Stockholm",
-			"lat": 59.3333,
-			"long": 18.05,
-			"countries": [
-				"SE"
-			],
-			"comments": ""
-		},
-		"Atlantic/St_Helena": {
-			"name": "Atlantic/St_Helena",
-			"lat": -14.0833,
-			"long": -4.3,
-			"countries": [
-				"SH"
-			],
-			"comments": ""
-		},
-		"Europe/Ljubljana": {
-			"name": "Europe/Ljubljana",
-			"lat": 46.05,
-			"long": 14.5167,
-			"countries": [
-				"SI"
-			],
-			"comments": ""
-		},
-		"Arctic/Longyearbyen": {
-			"name": "Arctic/Longyearbyen",
-			"lat": 78,
-			"long": 16,
-			"countries": [
-				"SJ"
-			],
-			"comments": ""
-		},
-		"Europe/Bratislava": {
-			"name": "Europe/Bratislava",
-			"lat": 48.15,
-			"long": 17.1167,
-			"countries": [
-				"SK"
-			],
-			"comments": ""
-		},
-		"Africa/Freetown": {
-			"name": "Africa/Freetown",
-			"lat": 8.5,
-			"long": -12.75,
-			"countries": [
-				"SL"
-			],
-			"comments": ""
-		},
-		"Europe/San_Marino": {
-			"name": "Europe/San_Marino",
-			"lat": 43.9167,
-			"long": 12.4667,
-			"countries": [
-				"SM"
-			],
-			"comments": ""
-		},
-		"Africa/Dakar": {
-			"name": "Africa/Dakar",
-			"lat": 14.6667,
-			"long": -16.5667,
-			"countries": [
-				"SN"
-			],
-			"comments": ""
-		},
-		"Africa/Mogadishu": {
-			"name": "Africa/Mogadishu",
-			"lat": 2.0667,
-			"long": 45.3667,
-			"countries": [
-				"SO"
-			],
-			"comments": ""
-		},
-		"America/Lower_Princes": {
-			"name": "America/Lower_Princes",
-			"lat": 18.0514,
-			"long": -62.9528,
-			"countries": [
-				"SX"
-			],
-			"comments": ""
-		},
-		"Africa/Mbabane": {
-			"name": "Africa/Mbabane",
-			"lat": -25.7,
-			"long": 31.1,
-			"countries": [
-				"SZ"
-			],
-			"comments": ""
-		},
-		"Indian/Kerguelen": {
-			"name": "Indian/Kerguelen",
-			"lat": -48.6472,
-			"long": 70.2175,
-			"countries": [
-				"TF"
-			],
-			"comments": ""
-		},
-		"Africa/Lome": {
-			"name": "Africa/Lome",
-			"lat": 6.1333,
-			"long": 1.2167,
-			"countries": [
-				"TG"
-			],
-			"comments": ""
-		},
-		"America/Port_of_Spain": {
-			"name": "America/Port_of_Spain",
-			"lat": 10.65,
-			"long": -60.4833,
-			"countries": [
-				"TT"
-			],
-			"comments": ""
-		},
-		"Pacific/Funafuti": {
-			"name": "Pacific/Funafuti",
-			"lat": -7.4833,
-			"long": 179.2167,
-			"countries": [
-				"TV"
-			],
-			"comments": ""
-		},
-		"Africa/Dar_es_Salaam": {
-			"name": "Africa/Dar_es_Salaam",
-			"lat": -5.2,
-			"long": 39.2833,
-			"countries": [
-				"TZ"
-			],
-			"comments": ""
-		},
-		"Africa/Kampala": {
-			"name": "Africa/Kampala",
-			"lat": 0.3167,
-			"long": 32.4167,
-			"countries": [
-				"UG"
-			],
-			"comments": ""
-		},
-		"Pacific/Midway": {
-			"name": "Pacific/Midway",
-			"lat": 28.2167,
-			"long": -176.6333,
-			"countries": [
-				"UM"
-			],
-			"comments": "Midway Islands"
-		},
-		"Pacific/Wake": {
-			"name": "Pacific/Wake",
-			"lat": 19.2833,
-			"long": 166.6167,
-			"countries": [
-				"UM"
-			],
-			"comments": "Wake Island"
-		},
-		"Europe/Vatican": {
-			"name": "Europe/Vatican",
-			"lat": 41.9022,
-			"long": 12.4531,
-			"countries": [
-				"VA"
-			],
-			"comments": ""
-		},
-		"America/St_Vincent": {
-			"name": "America/St_Vincent",
-			"lat": 13.15,
-			"long": -60.7667,
-			"countries": [
-				"VC"
-			],
-			"comments": ""
-		},
-		"America/Tortola": {
-			"name": "America/Tortola",
-			"lat": 18.45,
-			"long": -63.3833,
-			"countries": [
-				"VG"
-			],
-			"comments": ""
-		},
-		"America/St_Thomas": {
-			"name": "America/St_Thomas",
-			"lat": 18.35,
-			"long": -63.0667,
-			"countries": [
-				"VI"
-			],
-			"comments": ""
-		},
-		"Pacific/Wallis": {
-			"name": "Pacific/Wallis",
-			"lat": -12.7,
-			"long": -175.8333,
-			"countries": [
-				"WF"
-			],
-			"comments": ""
-		},
-		"Asia/Aden": {
-			"name": "Asia/Aden",
-			"lat": 12.75,
-			"long": 45.2,
-			"countries": [
-				"YE"
-			],
-			"comments": ""
-		},
-		"Indian/Mayotte": {
-			"name": "Indian/Mayotte",
-			"lat": -11.2167,
-			"long": 45.2333,
-			"countries": [
-				"YT"
-			],
-			"comments": ""
-		},
-		"Africa/Lusaka": {
-			"name": "Africa/Lusaka",
-			"lat": -14.5833,
-			"long": 28.2833,
-			"countries": [
-				"ZM"
-			],
-			"comments": ""
-		},
-		"Africa/Harare": {
-			"name": "Africa/Harare",
-			"lat": -16.1667,
-			"long": 31.05,
-			"countries": [
-				"ZW"
-			],
-			"comments": ""
-		}
-	}
-}
Index: ckend/node_modules/moment-timezone/data/packed/latest.json
===================================================================
--- backend/node_modules/moment-timezone/data/packed/latest.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,853 +1,0 @@
-{
-	"version": "2025b",
-	"zones": [
-		"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5",
-		"Africa/Nairobi|LMT +0230 EAT +0245|-2r.g -2u -30 -2J|012132|-2ua2r.g N6nV.g 3Fbu h1cu dzbJ|47e5",
-		"Africa/Algiers|LMT PMT WET WEST CET CEST|-c.c -9.l 0 -10 -10 -20|01232323232323232454542423234542324|-3bQ0c.c MDA2.P cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5",
-		"Africa/Lagos|LMT GMT +0030 WAT|-d.z 0 -u -10|01023|-2B40d.z 7iod.z dnXK.p dLzH.z|17e6",
-		"Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4",
-		"Africa/Maputo|LMT CAT|-2a.i -20|01|-2sw2a.i|26e5",
-		"Africa/Cairo|LMT EET EEST|-25.9 -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBC5.9 1AQM5.9 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0 kSp0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0|15e6",
-		"Africa/Casablanca|LMT +00 +01|u.k 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5",
-		"Africa/Ceuta|LMT WET WEST CET CEST|l.g 0 -10 -10 -20|0121212121212121212121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2M0M0 GdX0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|85e3",
-		"Africa/El_Aaiun|LMT -01 +00 +01|Q.M 10 0 -10|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|20e4",
-		"Africa/Johannesburg|LMT SAST SAST SAST|-1Q -1u -20 -30|0123232|-39EpQ qTcm 1Ajdu 1cL0 1cN0 1cL0|84e5",
-		"Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|012121212121212121212121212121212131|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 PeX0|",
-		"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5",
-		"Africa/Monrovia|LMT MMT MMT GMT|H.8 H.8 I.u 0|0123|-3ygng.Q 1usM0 28G01.m|11e5",
-		"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5",
-		"Africa/Sao_Tome|LMT LMT GMT WAT|-q.U A.J 0 -10|01232|-3tooq.U 18aoq.U 4i6N0 2q00|",
-		"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5",
-		"Africa/Tunis|LMT PMT CET CEST|-E.I -9.l -10 -20|01232323232323232323232323232323232|-3zO0E.I 1cBAv.n 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5",
-		"Africa/Windhoek|LMT +0130 SAST SAST CAT WAT|-18.o -1u -20 -30 -20 -10|012324545454545454545454545454545454545454545454545454|-39Ep8.o qTbC.o 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4",
-		"America/Adak|LMT LMT NST NWT NPT BST BDT AHST HST HDT|-cd.m bK.C b0 a0 a0 b0 a0 a0 a0 90|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVzf.p 1EX1d.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326",
-		"America/Anchorage|LMT LMT AST AWT APT AHST AHDT YST AKST AKDT|-e0.o 9X.A a0 90 90 a0 90 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVxs.n 1EX20.o 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4",
-		"America/Puerto_Rico|LMT AST AWT APT|4o.p 40 30 30|01231|-2Qi7z.z 1IUbz.z 7XT0 iu0|24e5",
-		"America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4",
-		"America/Argentina/Buenos_Aires|LMT CMT -04 -03 -02|3R.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343434343|-331U6.c 125cn pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-		"America/Argentina/Catamarca|LMT CMT -04 -03 -02|4n.8 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243432343|-331TA.Q 125bR.E pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-		"America/Argentina/Cordoba|LMT CMT -04 -03 -02|4g.M 4g.M 40 30 20|012323232323232323232323232323232323232323234343434243434343|-331TH.c 125c0 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0|",
-		"America/Argentina/Jujuy|LMT CMT -04 -03 -02|4l.c 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232434343|-331TC.M 125bT.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0|",
-		"America/Argentina/La_Rioja|LMT CMT -04 -03 -02|4r.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tw.A 125bN.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-		"America/Argentina/Mendoza|LMT CMT -04 -03 -02|4z.g 4g.M 40 30 20|012323232323232323232323232323232323232323234343423232432343|-331To.I 125bF.w pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0|",
-		"America/Argentina/Rio_Gallegos|LMT CMT -04 -03 -02|4A.Q 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tn.8 125bD.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0|",
-		"America/Argentina/Salta|LMT CMT -04 -03 -02|4l.E 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342434343|-331TC.k 125bT.8 pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0|",
-		"America/Argentina/San_Juan|LMT CMT -04 -03 -02|4y.4 4g.M 40 30 20|0123232323232323232323232323232323232323232343434342343432343|-331Tp.U 125bG.I pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0|",
-		"America/Argentina/San_Luis|LMT CMT -04 -03 -02|4p.o 4g.M 40 30 20|0123232323232323232323232323232323232323232343434232323432323|-331Ty.A 125bP.o pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0|",
-		"America/Argentina/Tucuman|LMT CMT -04 -03 -02|4k.Q 4g.M 40 30 20|01232323232323232323232323232323232323232323434343424343234343|-331TD.8 125bT.U pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0|",
-		"America/Argentina/Ushuaia|LMT CMT -04 -03 -02|4x.c 4g.M 40 30 20|012323232323232323232323232323232323232323234343434343432343|-331Tq.M 125bH.A pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0|",
-		"America/Asuncion|LMT AMT -04 -03|3O.E 3O.E 40 30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-3eLw9.k 1FGo0 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0|28e5",
-		"America/Panama|LMT CMT EST|5i.8 5j.A 50|012|-3eLuF.Q Iy01.s|15e5",
-		"America/Bahia_Banderas|LMT MST CST MDT CDT|71 70 60 60 50|01213121313131313131313131313131313142424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|84e3",
-		"America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5",
-		"America/Barbados|LMT AST ADT -0330|3W.t 40 30 3u|0121213121212121|-2m4k1.v 1eAN1.v RB0 1Bz0 Op0 1rb0 11d0 1jJc0 IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4",
-		"America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5",
-		"America/Belize|LMT CST -0530 CWT CPT CDT|5Q.M 60 5u 50 50 50|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121215151|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu Rcu 7Bt0 Ni0 4nd0 Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu e9Au qn0 lxB0 mn0|57e3",
-		"America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2",
-		"America/Bogota|LMT BMT -05 -04|4U.g 4U.g 50 40|01232|-3sTv3.I 1eIo0 38yo3.I 1PX0|90e5",
-		"America/Boise|LMT PST PDT MST MWT MPT MDT|7I.N 80 70 70 60 60 60|01212134536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-3tFE0 1nEe0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4",
-		"America/Cambridge_Bay|-00 MST MWT MPT MDT CST CDT EST|0 70 60 60 60 60 50 50|012314141414141414141414141414141414141414141414141414141414567541414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-21Jc0 RO90 8x20 ix0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2",
-		"America/Campo_Grande|LMT -04 -03|3C.s 40 30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|77e4",
-		"America/Cancun|LMT CST EST CDT EDT|5L.4 60 50 50 40|01213132431313131313131313131313131313131312|-1UQG0 2q3C0 2tx0 wgP0 1lb0 14p0 1lb0 14o0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4",
-		"America/Caracas|LMT CMT -0430 -04|4r.I 4r.E 4u 40|012323|-3eLvw.g ROnX.U 28KM2.k 1IwOu kqo0|29e5",
-		"America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3",
-		"America/Chicago|LMT CST CDT EST CWT CPT|5O.A 60 50 50 50 50|012121212121212121212121212121212121213121212121214512121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5",
-		"America/Chihuahua|LMT MST CST MDT CDT|74.k 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4",
-		"America/Ciudad_Juarez|LMT MST CST MDT CDT|75.U 70 60 60 50|01213124242313131313131313131313131313131313131313131313131321313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Costa_Rica|LMT SJMT CST CDT|5A.d 5A.d 60 50|01232323232|-3eLun.L 1fyo0 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5",
-		"America/Coyhaique|LMT SMT -05 -04 -03|4M.g 4G.J 50 40 30|012131323232323232323434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvb.I MJbS.t fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0|",
-		"America/Phoenix|LMT MST MDT MWT|7s.i 70 60 60|012121313121|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5",
-		"America/Cuiaba|LMT -04 -03|3I.k 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|54e4",
-		"America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8",
-		"America/Dawson_Creek|LMT PST PDT PWT PPT MST|80.U 80 70 70 70 70|01213412121212121212121212121212121212121212121212121212125|-3tofX.4 1nspX.4 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3",
-		"America/Dawson|LMT YST YDT YWT YPT YDDT PST PDT MST|9h.E 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeG.k GWpG.k 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|13e2",
-		"America/Denver|LMT MST MDT MWT MPT|6X.U 70 60 60 60|012121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFF0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5",
-		"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|0123425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 JxX1 SMX 1cN0 1cL0 aW10 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5",
-		"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|0121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 XQp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5",
-		"America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3",
-		"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5",
-		"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 4Q00 8mp0 8lz0 SN0 1cL0 pHB0 83r0 AU0 5MN0 1Rz0 38N0 Wn0 1qP0 11z0 1o10 11z0 3NA0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5",
-		"America/Fort_Nelson|LMT PST PDT PWT PPT MST|8a.L 80 70 70 70 70|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121215|-3tofN.d 1nspN.d 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2",
-		"America/Fort_Wayne|LMT CST CDT CWT CPT EST EDT|5I.C 60 50 50 50 50 40|0121212134121212121212121212151565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5",
-		"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3",
-		"America/Godthab|LMT -03 -02 -01|3q.U 30 20 10|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e3",
-		"America/Goose_Bay|LMT NST NDT NST NDT NWT NPT AST ADT ADDT|41.E 3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|0121343434343434356343434343434343434343434343434343434343437878787878787878787878787878787878787878787879787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-3tojW.k 1nspt.c 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2",
-		"America/Grand_Turk|LMT KMT EST EDT AST|4I.w 57.a 50 40 40|01232323232323232323232323232323232323232323232323232323232323232323232323243232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLvf.s RK0m.C 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 7jA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2",
-		"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5",
-		"America/Guayaquil|LMT QMT -05 -04|5j.k 5e 50 40|01232|-3eLuE.E 1DNzS.E 2uILK rz0|27e5",
-		"America/Guyana|LMT -04 -0345 -03|3Q.D 40 3J 30|01231|-2mf87.l 8Hc7.l 2r7bJ Ey0f|80e4",
-		"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4",
-		"America/Havana|LMT HMT CST CDT|5t.s 5t.A 50 40|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLuu.w 1qx00.8 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5",
-		"America/Hermosillo|LMT MST CST MDT|7n.Q 70 60 60|01213121313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0|64e4",
-		"America/Indiana/Knox|LMT CST CDT CWT CPT EST|5K.u 60 50 50 50 50|01212134121212121212121212121212121212151212121212121212121212121212121212121212121212121252121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Marengo|LMT CST CDT CWT CPT EST EDT|5J.n 60 50 50 50 50 40|01212134121212121212121215656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Petersburg|LMT CST CDT CWT CPT EST EDT|5N.7 60 50 50 50 50 40|012121341212121212121212121215121212121212121212121252125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Tell_City|LMT CST CDT CWT CPT EST EDT|5L.3 60 50 50 50 50 40|012121341212121212121212121512165652121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 8wn0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Vevay|LMT CST CDT CWT CPT EST EDT|5E.g 60 50 50 50 50 40|0121213415656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Vincennes|LMT CST CDT CWT CPT EST EDT|5O.7 60 50 50 50 50 40|012121341212121212121212121212121565652125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Indiana/Winamac|LMT CST CDT CWT CPT EST EDT|5K.p 60 50 50 50 50 40|012121341212121212121212121212121212121565652165656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Inuvik|-00 PST PDT MDT MST|0 80 70 60 70|01212121212121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-FnA0 L3K0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2",
-		"America/Iqaluit|-00 EWT EPT EST EDT CST CDT|0 40 40 50 40 60 50|0123434343434343434343434343434343434343434343434343434343456343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-16K00 7nX0 iv0 14HB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2",
-		"America/Jamaica|LMT KMT EST EDT|57.a 57.a 50 40|01232323232323232323232|-3eLuQ.O RK00 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4",
-		"America/Juneau|LMT LMT PST PWT PPT PDT YDT YST AKST AKDT|-f2.j 8V.F 80 70 70 70 80 90 90 80|0123425252525252525252525252625252578989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVwq.s 1EX12.j 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3",
-		"America/Kentucky/Louisville|LMT CST CDT CWT CPT EST EDT|5H.2 60 50 50 50 50 40|01212121213412121212121212121212121212565656565656525656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 1nX1 e0X 9vd0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Kentucky/Monticello|LMT CST CDT CWT CPT EST EDT|5D.o 60 50 50 50 50 40|01212134121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFG0 1nEe0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/La_Paz|LMT CMT BST -04|4w.A 4w.A 3w.A 40|0123|-3eLvr.o 1FIo0 13b0|19e5",
-		"America/Lima|LMT LMT -05 -04|58.c 58.A 50 40|01232323232323232|-3eLuP.M JcM0.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6",
-		"America/Los_Angeles|LMT PST PDT PWT PPT|7Q.W 80 70 70 70|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFE0 1nEe0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6",
-		"America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4",
-		"America/Managua|LMT MMT CST EST CDT|5J.8 5J.c 60 50 50|01232424232324242|-3eLue.Q 1Mhc0.4 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5",
-		"America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5",
-		"America/Martinique|LMT FFMT AST ADT|44.k 44.k 40 30|01232|-3eLvT.E PTA0 2LPbT.E 19X0|39e4",
-		"America/Matamoros|LMT CST CDT|6u 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4",
-		"America/Mazatlan|LMT MST CST MDT|75.E 70 60 60|01213121313131313131313131313131313131313131313131313131313131|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 otX0 2bmP0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4",
-		"America/Menominee|LMT CST CDT CWT CPT EST|5O.r 60 50 50 50 50|012121341212152121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3pdG9.x 1jce9.x 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2",
-		"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131|-1UQG0 2q3C0 24n0 wG10 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|11e5",
-		"America/Metlakatla|LMT LMT PST PWT PPT PDT AKST AKDT|-fd.G 8K.i 80 70 70 70 90 80|0123425252525252525252525252525252526767672676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwf.5 1EX1d.G 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2",
-		"America/Mexico_City|LMT MST CST MDT CDT CWT|6A.A 70 60 60 50 50|012131242425242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6",
-		"America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mxUf.k 2LHcf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2",
-		"America/Moncton|LMT EST AST ADT AWT APT|4j.8 50 40 30 30 30|0123232323232323232323245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3txvE.Q J4ME.Q CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3",
-		"America/Monterrey|LMT MST CST MDT CDT|6F.g 70 60 60 50|012131242424242424242424242424242424242424242424242424242424242|-1UQG0 dep0 8lz0 16p0 11z0 1dd0 2gmp0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|41e5",
-		"America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5",
-		"America/Toronto|LMT EST EDT EWT EPT|5h.w 50 40 40 40|012121212121212121212121212121212121212121212123412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-32B6G.s UFdG.s 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1qL0 11B0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5",
-		"America/New_York|LMT EST EDT EWT EPT|4U.2 50 40 40 40|012121212121212121212121212121212121212121212121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tFH0 1nEe0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6",
-		"America/Nome|LMT LMT NST NWT NPT BST BDT YST AKST AKDT|-cW.m b1.C b0 a0 a0 b0 a0 90 90 80|01234256565656565656565656565656565678989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898|-48Pzs.L 1jVyu.p 1EX1W.m 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2",
-		"America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2",
-		"America/North_Dakota/Beulah|LMT MST MDT MWT MPT CST CDT|6L.7 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/North_Dakota/Center|LMT MST MDT MWT MPT CST CDT|6J.c 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212125656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/North_Dakota/New_Salem|LMT MST MDT MWT MPT CST CDT|6J.D 70 60 60 60 60 50|0121213412121212121212121212121212121212121212121212121212121212121212121212121212565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tFF0 1nEe0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|",
-		"America/Ojinaga|LMT MST CST MDT CDT|6V.E 70 60 60 50|0121312424231313131313131313131313131313131313131313131313132424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-1UQF0 deo0 8lz0 16p0 11z0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3",
-		"America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4",
-		"America/Port-au-Prince|LMT PPMT EST EDT|4N.k 4N 50 40|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3eLva.E 15RLX.E 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-		"America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4",
-		"America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4",
-		"America/Punta_Arenas|LMT SMT -05 -04 -03|4H.E 4G.J 50 40 30|01213132323232323232343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvg.k MJbX.5 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|",
-		"America/Winnipeg|LMT CST CDT CWT CPT|6s.A 60 50 50 50|0121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3kLtv.o 1a3bv.o WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4",
-		"America/Rankin_Inlet|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-vDc0 Bjk0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2",
-		"America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5",
-		"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4",
-		"America/Resolute|-00 CST CDT EST|0 60 50 50|01212121212121212121212121212121212121212121212121212121212321212121212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-SnA0 103I0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229",
-		"America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4",
-		"America/Santiago|LMT SMT -05 -04 -03|4G.J 4G.J 50 40 30|0121313232323232323432343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLvh.f MJc0 fJAh.f 5knG.J 1Vzh.f jRAG.J 1pbh.f 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 hX0 1q10 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|62e5",
-		"America/Santo_Domingo|LMT SDMT EST EDT -0430 AST|4D.A 4E 50 40 4u 40|012324242424242525|-3eLvk.o 1Jic0.o 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5",
-		"America/Sao_Paulo|LMT -03 -02|36.s 30 20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0|20e6",
-		"America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|012132323232323232323232323232323232323232323232323232323232323232323232323232323232323232121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 2pA0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|452",
-		"America/Sitka|LMT LMT PST PWT PPT PDT YST AKST AKDT|-eW.L 91.d 80 70 70 70 90 90 80|0123425252525252525252525252525252567878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787878787|-48Pzs.L 1jVwu 1EX0W.L 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2",
-		"America/St_Johns|LMT NST NDT NST NDT NWT NPT NDDT|3u.Q 3u.Q 2u.Q 3u 2u 2u 2u 1u|012121212121212121212121212121212121213434343434343435634343434343434343434343434343434343434343434343434343434343434343434343434343434343437343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tokt.8 1l020 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4",
-		"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3",
-		"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5",
-		"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656",
-		"America/Vancouver|LMT PST PDT PWT PPT|8c.s 80 70 70 70|01213412121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3tofL.w 1nspL.w 1in0 UGp0 8x10 iy0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5",
-		"America/Whitehorse|LMT YST YDT YWT YPT YDDT PST PDT MST|90.c 90 80 80 80 70 80 70 70|0121213415167676767676767676767676767676767676767676767676767676767676767676767676767676767678|-2MSeX.M GWpX.M 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 LA0 ytd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1z90|23e3",
-		"America/Yakutat|LMT LMT YST YWT YPT YDT AKST AKDT|-eF.5 9i.T 90 80 80 80 90 80|0123425252525252525252525252525252526767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-48Pzs.L 1jVwL.G 1EX1F.5 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642",
-		"Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121212121212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10 1o30 14k0 1kr0 12l0 1o01 14kX 1lf1 14kX 1lf1 13bX|10",
-		"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70",
-		"Pacific/Port_Moresby|LMT PMMT +10|-9M.E -9M.w -a0|012|-3D8VM.E AvA0.8|25e4",
-		"Antarctica/Macquarie|-00 AEST AEDT|0 -a0 -b0|0121012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2OPc0 Fb40 1a00 4SK0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 3Co0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|1",
-		"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60",
-		"Pacific/Auckland|LMT NZMT NZST NZST NZDT|-bD.4 -bu -cu -c0 -d0|012131313131313131313131313134343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-46jLD.4 2nEO9.4 Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5",
-		"Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40",
-		"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130",
-		"Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5",
-		"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|40",
-		"Antarctica/Vostok|-00 +07 +05|0 -70 -50|01012|-tjA0 1rWh0 1Nj0 1aTv0|25",
-		"Europe/Berlin|LMT CET CEST CEMT|-R.s -10 -20 -30|012121212121212321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36RcR.s UbWR.s 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e5",
-		"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|0123232323232323232323212323232323232323232323232321|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 L4m0|15e5",
-		"Asia/Amman|LMT EET EEST +03|-2n.I -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5",
-		"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3",
-		"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4",
-		"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4",
-		"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4",
-		"Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|",
-		"Asia/Baghdad|LMT BMT +03 +04|-2V.E -2V.A -30 -40|0123232323232323232323232323232323232323232323232323232|-3eLCV.E 18ao0.4 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5",
-		"Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4",
-		"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-		"Asia/Bangkok|LMT BMT +07|-6G.4 -6G.4 -70|012|-3D8SG.4 1C000|15e6",
-		"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|",
-		"Asia/Beirut|LMT EET EEST|-2m -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3D8Om 1BWom 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|22e5",
-		"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4",
-		"Asia/Brunei|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|42e4",
-		"Asia/Kolkata|LMT HMT MMT IST +0630|-5R.s -5R.k -5l.a -5u -6u|01234343|-4Fg5R.s BKo0.8 1rDcw.a 1r2LP.a 1un0 HB0 7zX0|15e6",
-		"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4",
-		"Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5",
-		"Asia/Shanghai|LMT CST CDT|-85.H -80 -90|012121212121212121212121212121|-2M0U5.H Iuo5.H 18n0 OjB0 Rz0 11d0 1wL0 A10 8HX0 1G10 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 aL0 1tU30 Rb0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6",
-		"Asia/Colombo|LMT MMT +0530 +06 +0630|-5j.o -5j.w -5u -60 -6u|012342432|-3D8Rj.o 13inX.Q 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5",
-		"Asia/Dhaka|LMT HMT +0630 +0530 +06 +07|-61.E -5R.k -6u -5u -60 -70|01232454|-3eLG1.E 26008.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6",
-		"Asia/Damascus|LMT EET EEST +03|-2p.c -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5",
-		"Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le80 1dnX0 1nfA0 Xld0|19e4",
-		"Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5",
-		"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4",
-		"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|",
-		"Asia/Gaza|LMT EET EEST IST IDT|-2h.Q -20 -30 -20 -30|0121212121212121212121212121212121234343434343434343434343434343431212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCh.Q 1Azeh.Q MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|18e5",
-		"Asia/Hebron|LMT EET EEST IST IDT|-2k.n -20 -30 -20 -30|012121212121212121212121212121212123434343434343434343434343434343121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2MBCk.n 1Azek.n MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 pBa0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nA0 1210 1qL0 WN0 1qL0 WN0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 1a10 1fz0 17d0 1in0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1lb0 14p0 1in0 17d0 1cL0 1cN0 19X0 1fB0 14n0 jB0 2L0 11B0 WL0 gN0 8n0 11B0 TX0 gN0 bb0 11B0 On0 jB0 dX0 11B0 Lz0 gN0 mn0 WN0 IL0 gN0 pb0 WN0 Db0 jB0 rX0 11B0 xz0 gN0 xz0 11B0 rX0 jB0 An0 11B0 pb0 gN0 IL0 WN0 mn0 gN0 Lz0 WN0 gL0 jB0 On0 11B0 bb0 gN0 TX0 11B0 5z0 jB0 WL0 11B0 2L0 jB0 11z0 1ip0 19X0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1nX0 14p0 1in0 17d0 1fz0 1a10 19X0 1fB0 17b0 gN0 2L0 WN0 14n0 gN0 5z0 WN0 WL0 jB0 8n0 11B0 Rb0 gN0 dX0 11B0 Lz0 jB0 gL0 11B0 IL0 jB0 mn0 WN0 FX0 gN0 rX0 WN0 An0 jB0 uL0 11B0 uL0 gN0 An0 11B0 rX0 gN0 Db0 11B0 mn0 jB0 FX0 11B0 jz0 gN0 On0 WN0 dX0 jB0 Rb0 WN0 bb0 jB0 TX0 11B0 5z0 gN0 11z0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0|25e4",
-		"Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.u -76.u -70 -80 -90|0123423232|-2yC76.u bK00 1h7b6.u 5lz0 18o0 3Oq0 k5c0 aVX0 BAM0|90e5",
-		"Asia/Hong_Kong|LMT HKT HKST HKWT JST|-7A.G -80 -90 -8u -90|0123412121212121212121212121212121212121212121212121212121212121212121|-2CFH0 1taO0 Hc0 xUu 9tBu 11z0 1tDu Rc0 1wo0 11A0 1cM0 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5",
-		"Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3",
-		"Asia/Irkutsk|LMT IMT +07 +08 +09|-6V.5 -6V.5 -70 -80 -90|012343434343434343434343234343434343434343434343434343434343434343|-3D8SV.5 1Bxc0 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-		"Europe/Istanbul|LMT IMT EET EEST +03 +04|-1T.Q -1U.U -20 -30 -30 -40|01232323232323232323232323232323232323232323232345423232323232323232323232323232323232323232323232323232323232323234|-3D8NT.Q 1ePXW.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSN0 CL0 mp0 1Vz0 1gN0 8yn0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1ip0 19X0 1ip0 17b0 qdB0 38L0 1jd0 Tz0 l6O0 11A0 WN0 1qL0 TB0 1tX0 U10 1tz0 11B0 1in0 17d0 z90 cne0 pb0 2Cp0 1800 14o0 1dc0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6",
-		"Asia/Jakarta|LMT BMT +0720 +0730 +09 +08 WIB|-77.c -77.c -7k -7u -90 -80 -70|012343536|-49jH7.c 2hiLL.c luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6",
-		"Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4",
-		"Asia/Jerusalem|LMT JMT IST IDT IDDT|-2k.S -2k.E -20 -30 -40|012323232323232432323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8Ok.S 1wvA0.e SyOk.E MM0 iM0 4JA0 10o0 1pA0 10M0 1pA0 16o0 1jA0 16o0 1jA0 3LA0 Eo0 oo0 1co0 1dA0 16o0 10M0 1jc0 1tA0 14o0 1cM0 1a00 11A0 1Nc0 Ao0 1Nc0 Ao0 1Ko0 LA0 1o00 WM0 EQK0 Db0 1fB0 Rb0 bXB0 gM0 8Q00 IM0 1wo0 TX0 1HB0 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0|81e4",
-		"Asia/Kabul|LMT +04 +0430|-4A.M -40 -4u|012|-3eLEA.M 2dTcA.M|46e5",
-		"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4",
-		"Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6",
-		"Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5",
-		"Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5",
-		"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2",
-		"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5",
-		"Asia/Kuala_Lumpur|LMT SMT +07 +0720 +0730 +09 +08|-6T.p -6T.p -70 -7k -7u -90 -80|01234546|-2M0ST.p aIM0 17anT.p l5XE 17bO 8Fyu 1so10|71e5",
-		"Asia/Macau|LMT CST +09 +10 CDT|-7y.a -80 -90 -a0 -90|012323214141414141414141414141414141414141414141414141414141414141414141|-2CFHy.a 1uqKy.a PX0 1kn0 15B0 11b0 4Qq0 1oM0 11c0 1ko0 1u00 11A0 1cM0 11c0 1o00 11A0 1o00 11A0 1oo0 1400 1o00 11A0 1o00 U00 1tA0 U00 1wo0 Rc0 1wru U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cK0 1cO0 1cK0 1cO0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|57e4",
-		"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3",
-		"Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5",
-		"Asia/Manila|LMT LMT PST PDT JST|fU.8 -83.Q -80 -90 -90|012323432323232|-54m83.Q 2d8A3.Q 1urM0 un0 bW10 nb0 7qo0 1MM0 klB0 lz0 TwN0 1bb0 uNB0 rz0|24e6",
-		"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|32e4",
-		"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4",
-		"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5",
-		"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5",
-		"Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4",
-		"Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4",
-		"Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BA0|29e5",
-		"Asia/Qostanay|LMT +04 +05 +06|-4e.s -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc4e.s eUoe.s 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 Mv90|",
-		"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|01232323232323232323232323232323232323232323232|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 zQl0|73e4",
-		"Asia/Rangoon|LMT RMT +0630 +09|-6o.L -6o.L -6u -90|01232|-3D8So.L 1BnA0 SmnS.L 7j9u|48e5",
-		"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4",
-		"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4",
-		"Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -a0 -9u|012343434343151515151515134343|-2um8r.Q 97XV.Q 1m1zu 6CM0 Fz0 1kN0 14n0 1kN0 14L0 1zd0 On0 69B0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6",
-		"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2",
-		"Asia/Taipei|LMT CST JST CDT|-86 -80 -90 -90|012131313131313131313131313131313131313131|-30bk6 1FDc6 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5",
-		"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5",
-		"Asia/Tbilisi|LMT TBMT +03 +04 +05|-2X.b -2X.b -30 -40 -50|01234343434343434343434323232343434343434343434323|-3D8OX.b 1LUM0 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5",
-		"Asia/Tehran|LMT TMT +0330 +0430 +04 +05|-3p.I -3p.I -3u -4u -40 -50|012345423232323232323232323232323232323232323232323232323232323232323232|-2btDp.I Llc0 1FHaT.I 1pc0 120u Rc0 Dc0 1iMu JX0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6",
-		"Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3",
-		"Asia/Tokyo|LMT JST JDT|-9i.X -90 -a0|0121212121|-3jE90 2qSo0 Rc0 1lc0 14o0 1zc0 Oo0 1zc0 Oo0|38e6",
-		"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5",
-		"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2",
-		"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4",
-		"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4",
-		"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5",
-		"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5",
-		"Atlantic/Azores|LMT HMT -02 -01 +00 WET WEST|1G.E 1S.w 20 10 0 0 -10|012323232323232323232323232323232323232323232343234323432343232323232323232323232323232323232323232323434343434343434343434356434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3tomh.k 18aoh.k aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 CT90 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 Ap0 An0 wo0 Eo0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|25e4",
-		"Atlantic/Bermuda|LMT BMT BST AST ADT|4j.i 4j.i 3j.i 40 30|0121213434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3eLvE.G 16mo0 1bb0 1i10 11X0 ru30 thbE.G 1PX0 11B0 1tz0 Rd0 1zb0 Op0 1zb0 3I10 Lz0 1EN0 FX0 1HB0 FX0 1Kp0 Db0 1Kp0 Db0 1Kp0 FX0 93d0 11z0 GAp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3",
-		"Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4",
-		"Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4",
-		"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|49e3",
-		"Atlantic/Madeira|LMT FMT -01 +00 +01 WET WEST|17.A 17.A 10 0 -10 0 -10|01232323232323232323232323232323232323232323234323432343234323232323232323232323232323232323232323232356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-3tomQ.o 18anQ.o aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 BJ90 1a00 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e4",
-		"Atlantic/South_Georgia|LMT -02|2q.8 20|01|-3eLxx.Q|30",
-		"Atlantic/Stanley|LMT SMT -04 -03 -02|3P.o 3P.o 40 30 20|0123232323232323434323232323232323232323232323232323232323232323232323|-3eLw8.A S200 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2",
-		"Australia/Sydney|LMT AEST AEDT|-a4.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oW4.Q RlC4.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5",
-		"Australia/Adelaide|LMT ACST ACST ACDT|-9e.k -90 -9u -au|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-32oVe.k ak0e.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5",
-		"Australia/Brisbane|LMT AEST AEDT|-ac.8 -a0 -b0|012121212121212121|-32Bmc.8 Ry2c.8 xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5",
-		"Australia/Broken_Hill|LMT AEST ACST ACST ACDT|-9p.M -a0 -90 -9u -au|0123434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-32oVp.M 3Lzp.M 6wp0 H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|18e3",
-		"Australia/Hobart|LMT AEST AEDT|-9N.g -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-3109N.g Pk1N.g 1a00 1qM0 Oo0 1zc0 Oo0 TAo0 yM0 1cM0 1cM0 1fA0 1a00 VfA0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|21e4",
-		"Australia/Darwin|LMT ACST ACST ACDT|-8H.k -90 -9u -au|01232323232|-32oUH.k ajXH.k H1Bu xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00|12e4",
-		"Australia/Eucla|LMT +0845 +0945|-8z.s -8J -9J|01212121212121212121|-30nIz.s PkpO.s xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368",
-		"Australia/Lord_Howe|LMT AEST +1030 +1130 +11|-aA.k -a0 -au -bu -b0|01232323232424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-32oWA.k 3tzAA.k 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347",
-		"Australia/Lindeman|LMT AEST AEDT|-9T.U -a0 -b0|0121212121212121212121|-32BlT.U Ry1T.U xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10",
-		"Australia/Melbourne|LMT AEST AEDT|-9D.Q -a0 -b0|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-32oVD.Q RlBD.Q xc0 10jc0 yM0 1cM0 1cM0 1fA0 1a00 17c00 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|39e5",
-		"Australia/Perth|LMT AWST AWDT|-7H.o -80 -90|01212121212121212121|-30nHH.o PkpH.o xc0 10jc0 yM0 1cM0 1cM0 1gSo0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5",
-		"Europe/Brussels|LMT BMT WET CET CEST WEST|-h.u -h.u 0 -10 -20 -10|012343434325252525252525252525252525252525252525252525434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8Mh.u u1Ah.u SO00 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|21e5",
-		"Pacific/Easter|LMT EMT -07 -06 -05|7h.s 7h.s 70 60 50|0123232323232323232323232323234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-3eLsG.w 1HRc0 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0|30e2",
-		"Europe/Athens|LMT AMT EET EEST CEST CET|-1y.Q -1y.Q -20 -30 -20 -10|0123234545232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-30SNy.Q OMM1 CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|35e5",
-		"Europe/Dublin|LMT DMT IST GMT BST IST|p.l p.l -y.D 0 -10 -10|012343434343435353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353|-3BHby.D 1ra20 Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-		"Etc/GMT-0|GMT|0|0||",
-		"Etc/GMT-1|+01|-10|0||",
-		"Etc/GMT-10|+10|-a0|0||",
-		"Etc/GMT-11|+11|-b0|0||",
-		"Etc/GMT-12|+12|-c0|0||",
-		"Etc/GMT-13|+13|-d0|0||",
-		"Etc/GMT-14|+14|-e0|0||",
-		"Etc/GMT-2|+02|-20|0||",
-		"Etc/GMT-3|+03|-30|0||",
-		"Etc/GMT-4|+04|-40|0||",
-		"Etc/GMT-5|+05|-50|0||",
-		"Etc/GMT-6|+06|-60|0||",
-		"Etc/GMT-7|+07|-70|0||",
-		"Etc/GMT-8|+08|-80|0||",
-		"Etc/GMT-9|+09|-90|0||",
-		"Etc/GMT+1|-01|10|0||",
-		"Etc/GMT+10|-10|a0|0||",
-		"Etc/GMT+11|-11|b0|0||",
-		"Etc/GMT+12|-12|c0|0||",
-		"Etc/GMT+2|-02|20|0||",
-		"Etc/GMT+3|-03|30|0||",
-		"Etc/GMT+4|-04|40|0||",
-		"Etc/GMT+5|-05|50|0||",
-		"Etc/GMT+6|-06|60|0||",
-		"Etc/GMT+7|-07|70|0||",
-		"Etc/GMT+8|-08|80|0||",
-		"Etc/GMT+9|-09|90|0||",
-		"Etc/UTC|UTC|0|0||",
-		"Europe/Andorra|LMT WET CET CEST|-6.4 0 -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2M0M6.4 1Pnc6.4 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|79e3",
-		"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|10e5",
-		"Europe/London|LMT GMT BST BDST|1.f 0 -10 -20|01212121212121212121212121212121212121212121212121232323232321212321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-4VgnW.J 2KHdW.J Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|10e6",
-		"Europe/Belgrade|LMT CET CEST|-1m -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3topm 2juLm 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-		"Europe/Prague|LMT PMT CET CEST GMT|-V.I -V.I -10 -20 0|0123232323232323232423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4QbAV.I 1FDc0 XPaV.I 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|13e5",
-		"Europe/Bucharest|LMT BMT EET EEST|-1I.o -1I.o -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3awpI.o 1AU00 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|19e5",
-		"Europe/Budapest|LMT CET CEST|-1g.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-3cK1g.k 124Lg.k 11d0 1iO0 11A0 1o00 11A0 1oo0 11c0 1lc0 17c0 O1V0 3Nf0 WM0 1fA0 1cM0 1cM0 1oJ0 1dd0 1020 1fX0 1cp0 1cM0 1cM0 1cM0 1fA0 1a00 bhy0 Rb0 1wr0 Rc0 1C00 LA0 1C00 LA0 SNW0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cO0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5",
-		"Europe/Zurich|LMT BMT CET CEST|-y.8 -t.K -10 -20|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4HyMy.8 1Dw04.m 1SfAt.K 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|38e4",
-		"Europe/Chisinau|LMT CMT BMT EET EEST CEST CET MSK MSD|-1T.k -1T -1I.o -20 -30 -20 -10 -30 -40|0123434343434343434345656578787878787878787878434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-3D8NT.k 1wNA0.k wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|67e4",
-		"Europe/Gibraltar|LMT GMT BST BDST CET CEST|l.o 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123232323232121232121212121212121212145454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-3BHbC.A 1ra1C.A Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|30e3",
-		"Europe/Helsinki|LMT HMT EET EEST|-1D.N -1D.N -20 -30|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3H0ND.N 1Iu00 OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-		"Europe/Kaliningrad|LMT CET CEST EET EEST MSK MSD +03|-1m -10 -20 -20 -30 -30 -40 -30|012121212121212343565656565656565654343434343434343434343434343434343434343434373|-36Rdm UbXm 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 390 7A0 1en0 12N0 1pbb0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4",
-		"Europe/Kiev|LMT KMT EET MSK CEST CET MSD EEST|-22.4 -22.4 -20 -30 -20 -10 -40 -30|01234545363636363636363636367272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-3D8O2.4 1LUM0 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o10 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|34e5",
-		"Europe/Kirov|LMT +03 +04 +05 MSD MSK MSK|-3i.M -30 -40 -50 -40 -30 -40|0123232323232323232454524545454545454545454545454545454545454565|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4",
-		"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212124121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 M00 1vb0 SN0 1vb0 SN0 1vb0 Td0 1vb0 SN0 1vb0 6600 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1uo0 1c00 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 oiK0 1cM0 1cM0 1fB0 1cM0 1cM0 1cM0 1fA0 1a00 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5",
-		"Europe/Madrid|LMT WET WEST WEMT CET CEST|e.I 0 -10 -20 -10 -20|0121212121212121212321454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2M0M0 G5z0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|62e5",
-		"Europe/Malta|LMT CET CEST|-W.4 -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-35rcW.4 SXzW.4 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4",
-		"Europe/Minsk|LMT MMT EET MSK CEST CET MSD EEST +03|-1O.g -1O -20 -30 -20 -10 -40 -30 -30|012345454363636363636363636372727272727272727272727272727272727272728|-3D8NO.g 1LUM0.g eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5",
-		"Europe/Paris|LMT PMT WET WEST CEST CET WEMT|-9.l -9.l 0 -10 -20 -10 -20|01232323232323232323232323232323232323232323232323234545463654545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-3bQ09.l MDA0 cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|11e6",
-		"Europe/Moscow|LMT MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|01232434565756865656565656565656565698656565656565656565656565656565656565656a6|-3D8Ou.h 1sQM0 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6",
-		"Europe/Riga|LMT RMT LST EET MSK CEST CET MSD EEST|-1A.y -1A.y -2A.y -20 -30 -20 -10 -40 -30|0121213456565647474747474747474838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383|-3D8NA.y 1xde0 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|64e4",
-		"Europe/Rome|LMT RMT CET CEST|-N.U -N.U -10 -20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-4aU0N.U 15snN.U T000 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|39e5",
-		"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5",
-		"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810|",
-		"Europe/Simferopol|LMT SMT EET MSK CEST CET MSD EEST MSK|-2g.o -2g -20 -30 -20 -10 -40 -30 -40|0123454543636363636363636363272727636363727272727272727272727272727272727283|-3D8Og.o 1LUM0.o eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eN0 1cM0 1cM0 1cM0 1cM0 dV0 WO0 1cM0 1cM0 1fy0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4",
-		"Europe/Sofia|LMT IMT EET CET CEST EEST|-1x.g -1U.U -20 -10 -20 -30|0123434325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-3D8Nx.g AiLA.k 1UFeU.U WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|12e5",
-		"Europe/Tallinn|LMT TMT CET CEST EET MSK MSD EEST|-1D -1D -10 -20 -20 -30 -40 -30|0123214532323565656565656565657474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474747474|-3D8ND 1wI00 teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|41e4",
-		"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|42e4",
-		"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|13e5",
-		"Europe/Vienna|LMT CET CEST|-15.l -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-36Rd5.l UbX5.l 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1ao0 1co0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|18e5",
-		"Europe/Vilnius|LMT WMT KMT CET EET MSK CEST MSD EEST|-1F.g -1o -1z.A -10 -20 -30 -20 -40 -30|0123435636365757575757575757584848484848484848463648484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484848484|-3D8NF.g 1u5Ah.g 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|54e4",
-		"Europe/Volgograd|LMT +03 +04 +05 MSD MSK MSK|-2V.E -30 -40 -50 -40 -30 -40|012323232323232324545452454545454545454545454545454545454545456525|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1fA0 1cM0 2pz0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 9Jd0 5gn0|10e5",
-		"Europe/Warsaw|LMT WMT CET CEST EET EEST|-1o -1o -10 -20 -20 -30|0123232345423232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-3D8No 1qDA0 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|17e5",
-		"Pacific/Honolulu|LMT HST HDT HWT HPT HST|av.q au 9u 9u 9u a0|01213415|-3061s.y 1uMdW.y 8x0 lef0 8wWu iAu 46p0|37e4",
-		"Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2",
-		"Indian/Maldives|LMT MMT +05|-4S -4S -50|012|-3D8QS 3eLA0|35e4",
-		"Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4",
-		"Pacific/Kwajalein|LMT +11 +10 +09 -12 +12|-b9.k -b0 -a0 -90 c0 -c0|0123145|-2M0X9.k 1rDA9.k akp0 6Up0 12ry0 Wan0|14e3",
-		"Pacific/Chatham|LMT +1215 +1245 +1345|-cd.M -cf -cJ -dJ|0123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-46jMd.M 37RbW.M 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00|600",
-		"Pacific/Apia|LMT LMT -1130 -11 -10 +14 +13|-cx.4 bq.U bu b0 a0 -e0 -d0|012343456565656565656565656|-38Fox.4 J1A0 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3",
-		"Pacific/Bougainville|LMT PMMT +10 +09 +11|-am.g -9M.w -a0 -90 -b0|012324|-3D8Wm.g AvAx.I 1TCLM.w 7CN0 2MQp0|18e4",
-		"Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|012121212121212121212121|-2l9nd.g 2uNXd.g Dc0 n610 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3",
-		"Pacific/Enderbury|-00 -12 -11 +13|0 c0 b0 -d0|0123|-1iIo0 1GsA0 B7X0|1",
-		"Pacific/Fakaofo|LMT -11 +13|bo.U b0 -d0|012|-2M0Az.4 4ufXz.4|483",
-		"Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|012121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 20o0 pc0 2hc0 bc0|88e4",
-		"Pacific/Tarawa|LMT +12|-bw.4 -c0|01|-2M0Xw.4|29e3",
-		"Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3",
-		"Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125",
-		"Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4",
-		"Pacific/Guam|LMT LMT GST +09 GDT ChST|el -9D -a0 -90 -b0 -a0|0123242424242424242425|-54m9D 2glc0 1DFbD 6pB0 AhB0 3QL0 g2p0 3p91 WOX rX0 1zd0 Rb0 1wp0 Rb0 5xd0 rX0 5sN0 zb1 1C0X On0 ULb0|17e4",
-		"Pacific/Kiritimati|LMT -1040 -10 +14|at.k aE a0 -e0|0123|-2M0Bu.E 3bIMa.E B7Xk|51e2",
-		"Pacific/Kosrae|LMT LMT +11 +09 +10 +12|d8.4 -aP.U -b0 -90 -a0 -c0|0123243252|-54maP.U 2glc0 xsnP.U axC0 HBy0 akp0 axd0 WOK0 1bdz0|66e2",
-		"Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2",
-		"Pacific/Pago_Pago|LMT LMT SST|-cB.c bm.M b0|012|-38FoB.c J1A0|37e2",
-		"Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E QCnB.E 7mqu 1lnbu|10e3",
-		"Pacific/Niue|LMT -1120 -11|bj.E bk b0|012|-FScE.k suo0.k|12e2",
-		"Pacific/Norfolk|LMT +1112 +1130 +1230 +11 +12|-bb.Q -bc -bu -cu -b0 -c0|0123245454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2M0Xb.Q 21ILX.Q W01G Oo0 1COo0 9Jcu 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4",
-		"Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3",
-		"Pacific/Palau|LMT LMT +09|f2.4 -8V.U -90|012|-54m8V.U 2glc0|21e3",
-		"Pacific/Pitcairn|LMT -0830 -08|8E.k 8u 80|012|-2M0Dj.E 3UVXN.E|56",
-		"Pacific/Rarotonga|LMT LMT -1030 -0930 -10|-dk.U aD.4 au 9u a0|01234343434343434343434343434|-2Otpk.U 28zc0 13tbO.U IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3",
-		"Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4",
-		"Pacific/Tongatapu|LMT +1220 +13 +14|-cj.c -ck -d0 -e0|01232323232|-XbMj.c BgLX.c 1yndk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3"
-	],
-	"links": [
-		"Africa/Abidjan|Africa/Accra",
-		"Africa/Abidjan|Africa/Bamako",
-		"Africa/Abidjan|Africa/Banjul",
-		"Africa/Abidjan|Africa/Conakry",
-		"Africa/Abidjan|Africa/Dakar",
-		"Africa/Abidjan|Africa/Freetown",
-		"Africa/Abidjan|Africa/Lome",
-		"Africa/Abidjan|Africa/Nouakchott",
-		"Africa/Abidjan|Africa/Ouagadougou",
-		"Africa/Abidjan|Africa/Timbuktu",
-		"Africa/Abidjan|Atlantic/Reykjavik",
-		"Africa/Abidjan|Atlantic/St_Helena",
-		"Africa/Abidjan|Iceland",
-		"Africa/Cairo|Egypt",
-		"Africa/Johannesburg|Africa/Maseru",
-		"Africa/Johannesburg|Africa/Mbabane",
-		"Africa/Lagos|Africa/Bangui",
-		"Africa/Lagos|Africa/Brazzaville",
-		"Africa/Lagos|Africa/Douala",
-		"Africa/Lagos|Africa/Kinshasa",
-		"Africa/Lagos|Africa/Libreville",
-		"Africa/Lagos|Africa/Luanda",
-		"Africa/Lagos|Africa/Malabo",
-		"Africa/Lagos|Africa/Niamey",
-		"Africa/Lagos|Africa/Porto-Novo",
-		"Africa/Maputo|Africa/Blantyre",
-		"Africa/Maputo|Africa/Bujumbura",
-		"Africa/Maputo|Africa/Gaborone",
-		"Africa/Maputo|Africa/Harare",
-		"Africa/Maputo|Africa/Kigali",
-		"Africa/Maputo|Africa/Lubumbashi",
-		"Africa/Maputo|Africa/Lusaka",
-		"Africa/Nairobi|Africa/Addis_Ababa",
-		"Africa/Nairobi|Africa/Asmara",
-		"Africa/Nairobi|Africa/Asmera",
-		"Africa/Nairobi|Africa/Dar_es_Salaam",
-		"Africa/Nairobi|Africa/Djibouti",
-		"Africa/Nairobi|Africa/Kampala",
-		"Africa/Nairobi|Africa/Mogadishu",
-		"Africa/Nairobi|Indian/Antananarivo",
-		"Africa/Nairobi|Indian/Comoro",
-		"Africa/Nairobi|Indian/Mayotte",
-		"Africa/Tripoli|Libya",
-		"America/Adak|America/Atka",
-		"America/Adak|US/Aleutian",
-		"America/Anchorage|US/Alaska",
-		"America/Argentina/Buenos_Aires|America/Buenos_Aires",
-		"America/Argentina/Catamarca|America/Argentina/ComodRivadavia",
-		"America/Argentina/Catamarca|America/Catamarca",
-		"America/Argentina/Cordoba|America/Cordoba",
-		"America/Argentina/Cordoba|America/Rosario",
-		"America/Argentina/Jujuy|America/Jujuy",
-		"America/Argentina/Mendoza|America/Mendoza",
-		"America/Chicago|CST6CDT",
-		"America/Chicago|US/Central",
-		"America/Denver|America/Shiprock",
-		"America/Denver|MST7MDT",
-		"America/Denver|Navajo",
-		"America/Denver|US/Mountain",
-		"America/Detroit|US/Michigan",
-		"America/Edmonton|America/Yellowknife",
-		"America/Edmonton|Canada/Mountain",
-		"America/Fort_Wayne|America/Indiana/Indianapolis",
-		"America/Fort_Wayne|America/Indianapolis",
-		"America/Fort_Wayne|US/East-Indiana",
-		"America/Godthab|America/Nuuk",
-		"America/Halifax|Canada/Atlantic",
-		"America/Havana|Cuba",
-		"America/Indiana/Knox|America/Knox_IN",
-		"America/Indiana/Knox|US/Indiana-Starke",
-		"America/Iqaluit|America/Pangnirtung",
-		"America/Jamaica|Jamaica",
-		"America/Kentucky/Louisville|America/Louisville",
-		"America/Los_Angeles|PST8PDT",
-		"America/Los_Angeles|US/Pacific",
-		"America/Manaus|Brazil/West",
-		"America/Mazatlan|Mexico/BajaSur",
-		"America/Mexico_City|Mexico/General",
-		"America/New_York|EST5EDT",
-		"America/New_York|US/Eastern",
-		"America/Noronha|Brazil/DeNoronha",
-		"America/Panama|America/Atikokan",
-		"America/Panama|America/Cayman",
-		"America/Panama|America/Coral_Harbour",
-		"America/Panama|EST",
-		"America/Phoenix|America/Creston",
-		"America/Phoenix|MST",
-		"America/Phoenix|US/Arizona",
-		"America/Puerto_Rico|America/Anguilla",
-		"America/Puerto_Rico|America/Antigua",
-		"America/Puerto_Rico|America/Aruba",
-		"America/Puerto_Rico|America/Blanc-Sablon",
-		"America/Puerto_Rico|America/Curacao",
-		"America/Puerto_Rico|America/Dominica",
-		"America/Puerto_Rico|America/Grenada",
-		"America/Puerto_Rico|America/Guadeloupe",
-		"America/Puerto_Rico|America/Kralendijk",
-		"America/Puerto_Rico|America/Lower_Princes",
-		"America/Puerto_Rico|America/Marigot",
-		"America/Puerto_Rico|America/Montserrat",
-		"America/Puerto_Rico|America/Port_of_Spain",
-		"America/Puerto_Rico|America/St_Barthelemy",
-		"America/Puerto_Rico|America/St_Kitts",
-		"America/Puerto_Rico|America/St_Lucia",
-		"America/Puerto_Rico|America/St_Thomas",
-		"America/Puerto_Rico|America/St_Vincent",
-		"America/Puerto_Rico|America/Tortola",
-		"America/Puerto_Rico|America/Virgin",
-		"America/Regina|Canada/Saskatchewan",
-		"America/Rio_Branco|America/Porto_Acre",
-		"America/Rio_Branco|Brazil/Acre",
-		"America/Santiago|Chile/Continental",
-		"America/Sao_Paulo|Brazil/East",
-		"America/St_Johns|Canada/Newfoundland",
-		"America/Tijuana|America/Ensenada",
-		"America/Tijuana|America/Santa_Isabel",
-		"America/Tijuana|Mexico/BajaNorte",
-		"America/Toronto|America/Montreal",
-		"America/Toronto|America/Nassau",
-		"America/Toronto|America/Nipigon",
-		"America/Toronto|America/Thunder_Bay",
-		"America/Toronto|Canada/Eastern",
-		"America/Vancouver|Canada/Pacific",
-		"America/Whitehorse|Canada/Yukon",
-		"America/Winnipeg|America/Rainy_River",
-		"America/Winnipeg|Canada/Central",
-		"Asia/Ashgabat|Asia/Ashkhabad",
-		"Asia/Bangkok|Asia/Phnom_Penh",
-		"Asia/Bangkok|Asia/Vientiane",
-		"Asia/Bangkok|Indian/Christmas",
-		"Asia/Brunei|Asia/Kuching",
-		"Asia/Dhaka|Asia/Dacca",
-		"Asia/Dubai|Asia/Muscat",
-		"Asia/Dubai|Indian/Mahe",
-		"Asia/Dubai|Indian/Reunion",
-		"Asia/Ho_Chi_Minh|Asia/Saigon",
-		"Asia/Hong_Kong|Hongkong",
-		"Asia/Jerusalem|Asia/Tel_Aviv",
-		"Asia/Jerusalem|Israel",
-		"Asia/Kathmandu|Asia/Katmandu",
-		"Asia/Kolkata|Asia/Calcutta",
-		"Asia/Kuala_Lumpur|Asia/Singapore",
-		"Asia/Kuala_Lumpur|Singapore",
-		"Asia/Macau|Asia/Macao",
-		"Asia/Makassar|Asia/Ujung_Pandang",
-		"Asia/Nicosia|Europe/Nicosia",
-		"Asia/Qatar|Asia/Bahrain",
-		"Asia/Rangoon|Asia/Yangon",
-		"Asia/Rangoon|Indian/Cocos",
-		"Asia/Riyadh|Antarctica/Syowa",
-		"Asia/Riyadh|Asia/Aden",
-		"Asia/Riyadh|Asia/Kuwait",
-		"Asia/Seoul|ROK",
-		"Asia/Shanghai|Asia/Chongqing",
-		"Asia/Shanghai|Asia/Chungking",
-		"Asia/Shanghai|Asia/Harbin",
-		"Asia/Shanghai|PRC",
-		"Asia/Taipei|ROC",
-		"Asia/Tehran|Iran",
-		"Asia/Thimphu|Asia/Thimbu",
-		"Asia/Tokyo|Japan",
-		"Asia/Ulaanbaatar|Asia/Choibalsan",
-		"Asia/Ulaanbaatar|Asia/Ulan_Bator",
-		"Asia/Urumqi|Asia/Kashgar",
-		"Atlantic/Faroe|Atlantic/Faeroe",
-		"Australia/Adelaide|Australia/South",
-		"Australia/Brisbane|Australia/Queensland",
-		"Australia/Broken_Hill|Australia/Yancowinna",
-		"Australia/Darwin|Australia/North",
-		"Australia/Hobart|Australia/Currie",
-		"Australia/Hobart|Australia/Tasmania",
-		"Australia/Lord_Howe|Australia/LHI",
-		"Australia/Melbourne|Australia/Victoria",
-		"Australia/Perth|Australia/West",
-		"Australia/Sydney|Australia/ACT",
-		"Australia/Sydney|Australia/Canberra",
-		"Australia/Sydney|Australia/NSW",
-		"Etc/GMT-0|Etc/GMT",
-		"Etc/GMT-0|Etc/GMT+0",
-		"Etc/GMT-0|Etc/GMT0",
-		"Etc/GMT-0|Etc/Greenwich",
-		"Etc/GMT-0|GMT",
-		"Etc/GMT-0|GMT+0",
-		"Etc/GMT-0|GMT-0",
-		"Etc/GMT-0|GMT0",
-		"Etc/GMT-0|Greenwich",
-		"Etc/UTC|Etc/UCT",
-		"Etc/UTC|Etc/Universal",
-		"Etc/UTC|Etc/Zulu",
-		"Etc/UTC|UCT",
-		"Etc/UTC|UTC",
-		"Etc/UTC|Universal",
-		"Etc/UTC|Zulu",
-		"Europe/Athens|EET",
-		"Europe/Belgrade|Europe/Ljubljana",
-		"Europe/Belgrade|Europe/Podgorica",
-		"Europe/Belgrade|Europe/Sarajevo",
-		"Europe/Belgrade|Europe/Skopje",
-		"Europe/Belgrade|Europe/Zagreb",
-		"Europe/Berlin|Arctic/Longyearbyen",
-		"Europe/Berlin|Atlantic/Jan_Mayen",
-		"Europe/Berlin|Europe/Copenhagen",
-		"Europe/Berlin|Europe/Oslo",
-		"Europe/Berlin|Europe/Stockholm",
-		"Europe/Brussels|CET",
-		"Europe/Brussels|Europe/Amsterdam",
-		"Europe/Brussels|Europe/Luxembourg",
-		"Europe/Brussels|MET",
-		"Europe/Chisinau|Europe/Tiraspol",
-		"Europe/Dublin|Eire",
-		"Europe/Helsinki|Europe/Mariehamn",
-		"Europe/Istanbul|Asia/Istanbul",
-		"Europe/Istanbul|Turkey",
-		"Europe/Kiev|Europe/Kyiv",
-		"Europe/Kiev|Europe/Uzhgorod",
-		"Europe/Kiev|Europe/Zaporozhye",
-		"Europe/Lisbon|Portugal",
-		"Europe/Lisbon|WET",
-		"Europe/London|Europe/Belfast",
-		"Europe/London|Europe/Guernsey",
-		"Europe/London|Europe/Isle_of_Man",
-		"Europe/London|Europe/Jersey",
-		"Europe/London|GB",
-		"Europe/London|GB-Eire",
-		"Europe/Moscow|W-SU",
-		"Europe/Paris|Europe/Monaco",
-		"Europe/Prague|Europe/Bratislava",
-		"Europe/Rome|Europe/San_Marino",
-		"Europe/Rome|Europe/Vatican",
-		"Europe/Warsaw|Poland",
-		"Europe/Zurich|Europe/Busingen",
-		"Europe/Zurich|Europe/Vaduz",
-		"Indian/Maldives|Indian/Kerguelen",
-		"Pacific/Auckland|Antarctica/McMurdo",
-		"Pacific/Auckland|Antarctica/South_Pole",
-		"Pacific/Auckland|NZ",
-		"Pacific/Chatham|NZ-CHAT",
-		"Pacific/Easter|Chile/EasterIsland",
-		"Pacific/Enderbury|Pacific/Kanton",
-		"Pacific/Guadalcanal|Pacific/Pohnpei",
-		"Pacific/Guadalcanal|Pacific/Ponape",
-		"Pacific/Guam|Pacific/Saipan",
-		"Pacific/Honolulu|HST",
-		"Pacific/Honolulu|Pacific/Johnston",
-		"Pacific/Honolulu|US/Hawaii",
-		"Pacific/Kwajalein|Kwajalein",
-		"Pacific/Pago_Pago|Pacific/Midway",
-		"Pacific/Pago_Pago|Pacific/Samoa",
-		"Pacific/Pago_Pago|US/Samoa",
-		"Pacific/Port_Moresby|Antarctica/DumontDUrville",
-		"Pacific/Port_Moresby|Pacific/Chuuk",
-		"Pacific/Port_Moresby|Pacific/Truk",
-		"Pacific/Port_Moresby|Pacific/Yap",
-		"Pacific/Tarawa|Pacific/Funafuti",
-		"Pacific/Tarawa|Pacific/Majuro",
-		"Pacific/Tarawa|Pacific/Wake",
-		"Pacific/Tarawa|Pacific/Wallis"
-	],
-	"countries": [
-		"AD|Europe/Andorra",
-		"AE|Asia/Dubai",
-		"AF|Asia/Kabul",
-		"AG|America/Puerto_Rico America/Antigua",
-		"AI|America/Puerto_Rico America/Anguilla",
-		"AL|Europe/Tirane",
-		"AM|Asia/Yerevan",
-		"AO|Africa/Lagos Africa/Luanda",
-		"AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Antarctica/Vostok Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Asia/Singapore Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa",
-		"AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia",
-		"AS|Pacific/Pago_Pago",
-		"AT|Europe/Vienna",
-		"AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla Asia/Tokyo",
-		"AW|America/Puerto_Rico America/Aruba",
-		"AX|Europe/Helsinki Europe/Mariehamn",
-		"AZ|Asia/Baku",
-		"BA|Europe/Belgrade Europe/Sarajevo",
-		"BB|America/Barbados",
-		"BD|Asia/Dhaka",
-		"BE|Europe/Brussels",
-		"BF|Africa/Abidjan Africa/Ouagadougou",
-		"BG|Europe/Sofia",
-		"BH|Asia/Qatar Asia/Bahrain",
-		"BI|Africa/Maputo Africa/Bujumbura",
-		"BJ|Africa/Lagos Africa/Porto-Novo",
-		"BL|America/Puerto_Rico America/St_Barthelemy",
-		"BM|Atlantic/Bermuda",
-		"BN|Asia/Kuching Asia/Brunei",
-		"BO|America/La_Paz",
-		"BQ|America/Puerto_Rico America/Kralendijk",
-		"BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco",
-		"BS|America/Toronto America/Nassau",
-		"BT|Asia/Thimphu",
-		"BW|Africa/Maputo Africa/Gaborone",
-		"BY|Europe/Minsk",
-		"BZ|America/Belize",
-		"CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston",
-		"CC|Asia/Yangon Indian/Cocos",
-		"CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi",
-		"CF|Africa/Lagos Africa/Bangui",
-		"CG|Africa/Lagos Africa/Brazzaville",
-		"CH|Europe/Zurich",
-		"CI|Africa/Abidjan",
-		"CK|Pacific/Rarotonga",
-		"CL|America/Santiago America/Coyhaique America/Punta_Arenas Pacific/Easter",
-		"CM|Africa/Lagos Africa/Douala",
-		"CN|Asia/Shanghai Asia/Urumqi",
-		"CO|America/Bogota",
-		"CR|America/Costa_Rica",
-		"CU|America/Havana",
-		"CV|Atlantic/Cape_Verde",
-		"CW|America/Puerto_Rico America/Curacao",
-		"CX|Asia/Bangkok Indian/Christmas",
-		"CY|Asia/Nicosia Asia/Famagusta",
-		"CZ|Europe/Prague",
-		"DE|Europe/Zurich Europe/Berlin Europe/Busingen",
-		"DJ|Africa/Nairobi Africa/Djibouti",
-		"DK|Europe/Berlin Europe/Copenhagen",
-		"DM|America/Puerto_Rico America/Dominica",
-		"DO|America/Santo_Domingo",
-		"DZ|Africa/Algiers",
-		"EC|America/Guayaquil Pacific/Galapagos",
-		"EE|Europe/Tallinn",
-		"EG|Africa/Cairo",
-		"EH|Africa/El_Aaiun",
-		"ER|Africa/Nairobi Africa/Asmara",
-		"ES|Europe/Madrid Africa/Ceuta Atlantic/Canary",
-		"ET|Africa/Nairobi Africa/Addis_Ababa",
-		"FI|Europe/Helsinki",
-		"FJ|Pacific/Fiji",
-		"FK|Atlantic/Stanley",
-		"FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei",
-		"FO|Atlantic/Faroe",
-		"FR|Europe/Paris",
-		"GA|Africa/Lagos Africa/Libreville",
-		"GB|Europe/London",
-		"GD|America/Puerto_Rico America/Grenada",
-		"GE|Asia/Tbilisi",
-		"GF|America/Cayenne",
-		"GG|Europe/London Europe/Guernsey",
-		"GH|Africa/Abidjan Africa/Accra",
-		"GI|Europe/Gibraltar",
-		"GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule",
-		"GM|Africa/Abidjan Africa/Banjul",
-		"GN|Africa/Abidjan Africa/Conakry",
-		"GP|America/Puerto_Rico America/Guadeloupe",
-		"GQ|Africa/Lagos Africa/Malabo",
-		"GR|Europe/Athens",
-		"GS|Atlantic/South_Georgia",
-		"GT|America/Guatemala",
-		"GU|Pacific/Guam",
-		"GW|Africa/Bissau",
-		"GY|America/Guyana",
-		"HK|Asia/Hong_Kong",
-		"HN|America/Tegucigalpa",
-		"HR|Europe/Belgrade Europe/Zagreb",
-		"HT|America/Port-au-Prince",
-		"HU|Europe/Budapest",
-		"ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura",
-		"IE|Europe/Dublin",
-		"IL|Asia/Jerusalem",
-		"IM|Europe/London Europe/Isle_of_Man",
-		"IN|Asia/Kolkata",
-		"IO|Indian/Chagos",
-		"IQ|Asia/Baghdad",
-		"IR|Asia/Tehran",
-		"IS|Africa/Abidjan Atlantic/Reykjavik",
-		"IT|Europe/Rome",
-		"JE|Europe/London Europe/Jersey",
-		"JM|America/Jamaica",
-		"JO|Asia/Amman",
-		"JP|Asia/Tokyo",
-		"KE|Africa/Nairobi",
-		"KG|Asia/Bishkek",
-		"KH|Asia/Bangkok Asia/Phnom_Penh",
-		"KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati",
-		"KM|Africa/Nairobi Indian/Comoro",
-		"KN|America/Puerto_Rico America/St_Kitts",
-		"KP|Asia/Pyongyang",
-		"KR|Asia/Seoul",
-		"KW|Asia/Riyadh Asia/Kuwait",
-		"KY|America/Panama America/Cayman",
-		"KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral",
-		"LA|Asia/Bangkok Asia/Vientiane",
-		"LB|Asia/Beirut",
-		"LC|America/Puerto_Rico America/St_Lucia",
-		"LI|Europe/Zurich Europe/Vaduz",
-		"LK|Asia/Colombo",
-		"LR|Africa/Monrovia",
-		"LS|Africa/Johannesburg Africa/Maseru",
-		"LT|Europe/Vilnius",
-		"LU|Europe/Brussels Europe/Luxembourg",
-		"LV|Europe/Riga",
-		"LY|Africa/Tripoli",
-		"MA|Africa/Casablanca",
-		"MC|Europe/Paris Europe/Monaco",
-		"MD|Europe/Chisinau",
-		"ME|Europe/Belgrade Europe/Podgorica",
-		"MF|America/Puerto_Rico America/Marigot",
-		"MG|Africa/Nairobi Indian/Antananarivo",
-		"MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro",
-		"MK|Europe/Belgrade Europe/Skopje",
-		"ML|Africa/Abidjan Africa/Bamako",
-		"MM|Asia/Yangon",
-		"MN|Asia/Ulaanbaatar Asia/Hovd",
-		"MO|Asia/Macau",
-		"MP|Pacific/Guam Pacific/Saipan",
-		"MQ|America/Martinique",
-		"MR|Africa/Abidjan Africa/Nouakchott",
-		"MS|America/Puerto_Rico America/Montserrat",
-		"MT|Europe/Malta",
-		"MU|Indian/Mauritius",
-		"MV|Indian/Maldives",
-		"MW|Africa/Maputo Africa/Blantyre",
-		"MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana",
-		"MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur",
-		"MZ|Africa/Maputo",
-		"NA|Africa/Windhoek",
-		"NC|Pacific/Noumea",
-		"NE|Africa/Lagos Africa/Niamey",
-		"NF|Pacific/Norfolk",
-		"NG|Africa/Lagos",
-		"NI|America/Managua",
-		"NL|Europe/Brussels Europe/Amsterdam",
-		"NO|Europe/Berlin Europe/Oslo",
-		"NP|Asia/Kathmandu",
-		"NR|Pacific/Nauru",
-		"NU|Pacific/Niue",
-		"NZ|Pacific/Auckland Pacific/Chatham",
-		"OM|Asia/Dubai Asia/Muscat",
-		"PA|America/Panama",
-		"PE|America/Lima",
-		"PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier",
-		"PG|Pacific/Port_Moresby Pacific/Bougainville",
-		"PH|Asia/Manila",
-		"PK|Asia/Karachi",
-		"PL|Europe/Warsaw",
-		"PM|America/Miquelon",
-		"PN|Pacific/Pitcairn",
-		"PR|America/Puerto_Rico",
-		"PS|Asia/Gaza Asia/Hebron",
-		"PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores",
-		"PW|Pacific/Palau",
-		"PY|America/Asuncion",
-		"QA|Asia/Qatar",
-		"RE|Asia/Dubai Indian/Reunion",
-		"RO|Europe/Bucharest",
-		"RS|Europe/Belgrade",
-		"RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr",
-		"RW|Africa/Maputo Africa/Kigali",
-		"SA|Asia/Riyadh",
-		"SB|Pacific/Guadalcanal",
-		"SC|Asia/Dubai Indian/Mahe",
-		"SD|Africa/Khartoum",
-		"SE|Europe/Berlin Europe/Stockholm",
-		"SG|Asia/Singapore",
-		"SH|Africa/Abidjan Atlantic/St_Helena",
-		"SI|Europe/Belgrade Europe/Ljubljana",
-		"SJ|Europe/Berlin Arctic/Longyearbyen",
-		"SK|Europe/Prague Europe/Bratislava",
-		"SL|Africa/Abidjan Africa/Freetown",
-		"SM|Europe/Rome Europe/San_Marino",
-		"SN|Africa/Abidjan Africa/Dakar",
-		"SO|Africa/Nairobi Africa/Mogadishu",
-		"SR|America/Paramaribo",
-		"SS|Africa/Juba",
-		"ST|Africa/Sao_Tome",
-		"SV|America/El_Salvador",
-		"SX|America/Puerto_Rico America/Lower_Princes",
-		"SY|Asia/Damascus",
-		"SZ|Africa/Johannesburg Africa/Mbabane",
-		"TC|America/Grand_Turk",
-		"TD|Africa/Ndjamena",
-		"TF|Asia/Dubai Indian/Maldives Indian/Kerguelen",
-		"TG|Africa/Abidjan Africa/Lome",
-		"TH|Asia/Bangkok",
-		"TJ|Asia/Dushanbe",
-		"TK|Pacific/Fakaofo",
-		"TL|Asia/Dili",
-		"TM|Asia/Ashgabat",
-		"TN|Africa/Tunis",
-		"TO|Pacific/Tongatapu",
-		"TR|Europe/Istanbul",
-		"TT|America/Puerto_Rico America/Port_of_Spain",
-		"TV|Pacific/Tarawa Pacific/Funafuti",
-		"TW|Asia/Taipei",
-		"TZ|Africa/Nairobi Africa/Dar_es_Salaam",
-		"UA|Europe/Simferopol Europe/Kyiv",
-		"UG|Africa/Nairobi Africa/Kampala",
-		"UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake",
-		"US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu",
-		"UY|America/Montevideo",
-		"UZ|Asia/Samarkand Asia/Tashkent",
-		"VA|Europe/Rome Europe/Vatican",
-		"VC|America/Puerto_Rico America/St_Vincent",
-		"VE|America/Caracas",
-		"VG|America/Puerto_Rico America/Tortola",
-		"VI|America/Puerto_Rico America/St_Thomas",
-		"VN|Asia/Bangkok Asia/Ho_Chi_Minh",
-		"VU|Pacific/Efate",
-		"WF|Pacific/Tarawa Pacific/Wallis",
-		"WS|Pacific/Apia",
-		"YE|Asia/Riyadh Asia/Aden",
-		"YT|Africa/Nairobi Indian/Mayotte",
-		"ZA|Africa/Johannesburg",
-		"ZM|Africa/Maputo Africa/Lusaka",
-		"ZW|Africa/Maputo Africa/Harare"
-	]
-}
Index: ckend/node_modules/moment-timezone/index.d.ts
===================================================================
--- backend/node_modules/moment-timezone/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-// Type definitions for moment-timezone.js 0.5
-// Project: http://momentjs.com/timezone/
-// Definitions by: Michel Salib <https://github.com/michelsalib>
-//                 Alan Brazil Lins <https://github.com/alanblins>
-//                 Agustin Carrasco <https://github.com/asermax>
-//                 Borys Kupar <https://github.com/borys-kupar>
-//                 Anthony Rainer <https://github.com/pristinesource>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-// Migrated here from DefinitelyTyped in release moment-timezone@0.5.30
-
-import moment = require('moment');
-
-declare module 'moment' {
-    interface MomentZone {
-        name: string;
-        abbrs: string[];
-        untils: number[];
-        offsets: number[];
-        population: number;
-
-        abbr(timestamp: number): string;
-        offset(timestamp: number): number;
-        utcOffset(timestamp: number): number;
-        parse(timestamp: number): number;
-    }
-
-    interface MomentZoneOffset {
-        name: string;
-        offset: number;
-    }
-
-    interface MomentTimezone {
-        (): moment.Moment;
-        (timezone: string): moment.Moment;
-        (date: number, timezone: string): moment.Moment;
-        (date: number[], timezone: string): moment.Moment;
-        (date: string, timezone: string): moment.Moment;
-        (date: string, format: moment.MomentFormatSpecification, timezone: string): moment.Moment;
-        (date: string, format: moment.MomentFormatSpecification, strict: boolean, timezone: string): moment.Moment;
-        (date: string, format: moment.MomentFormatSpecification, language: string, timezone: string): moment.Moment;
-        (date: string, format: moment.MomentFormatSpecification, language: string, strict: boolean, timezone: string): moment.Moment;
-        (date: Date, timezone: string): moment.Moment;
-        (date: moment.Moment, timezone: string): moment.Moment;
-        (date: any, timezone: string): moment.Moment;
-
-        zone(timezone: string): MomentZone | null;
-
-        add(packedZoneString: string): void;
-        add(packedZoneString: string[]): void;
-
-        link(packedLinkString: string): void;
-        link(packedLinkString: string[]): void;
-
-        load(data: { version: string; links: string[]; zones: string[] }): void;
-
-        names(): string[];
-        zonesForCountry<T extends true>(country: string, with_offset: T): T extends true ? MomentZoneOffset[] : never;
-        zonesForCountry<T extends false>(country: string, with_offset?: T): T extends false ? string[] : never;
-        zonesForCountry(country: string, with_offset?: boolean): MomentZoneOffset[] | string[];
-        countries(): string[];
-        guess(ignoreCache?: boolean): string;
-
-        setDefault(timezone?: string): Moment;
-        dataVersion: string;
-    }
-
-    interface Moment {
-        tz(): string | undefined;
-        tz(timezone: string, keepLocalTime?: boolean): moment.Moment;
-        zoneAbbr(): string;
-        zoneName(): string;
-    }
-
-    const tz: MomentTimezone;
-}
-
-// require("moment-timezone") === require("moment")
-export = moment;
Index: ckend/node_modules/moment-timezone/index.js
===================================================================
--- backend/node_modules/moment-timezone/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-var moment = module.exports = require("./moment-timezone");
-moment.tz.load(require('./data/packed/latest.json'));
Index: ckend/node_modules/moment-timezone/moment-timezone-utils.d.ts
===================================================================
--- backend/node_modules/moment-timezone/moment-timezone-utils.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-import moment = require('moment');
-import { MomentTimezone } from "./index";
-
-declare module 'moment' {
-
-    /** Parsed / unpacked zone data. */
-    interface UnpackedZone {
-        /** The uniquely identifying name of the time zone. */
-        name: string;
-        /** zone abbreviations */
-        abbrs: Array<string>;
-        /** (measured in milliseconds) */
-        untils: Array<number | null>;
-        /** (measured in minutes) */
-        offsets: Array<number>;
-    }
-
-    /** Bundle of zone data and links for multiple timezones */
-    interface PackedZoneBundle {
-        version: string;
-        zones: Array<string>;
-        links: Array<string>;
-    }
-
-    /** Bundle of zone data and links for multiple timezones */
-    interface UnpackedZoneBundle {
-        version: string;
-        zones: Array<UnpackedZone>;
-        links: Array<string>;
-    }
-    
-    /** extends MomentTimezone declared in index */
-    interface MomentTimezone {
-        /** Converts zone data in the unpacked format to the packed format. */
-        pack(unpackedObject: UnpackedZone): string;
-
-        /** Convert a base 10 number to a base 60 string. */
-        packBase60(input: number, precision?: number): string;
-
-        /** Create links out of two zones that share data.
-         * @returns A new ZoneBundle with duplicate zone data replaced by links
-         */
-        createLinks(unlinked: UnpackedZoneBundle): PackedZoneBundle;
-
-        /**
-         * Filter out data for years outside a certain range.
-         * @return a new, filtered UnPackedZone object
-         */
-        filterYears(unpackedZone: UnpackedZone, startYear: number, endYear: number): UnpackedZone;
-        /**
-         * Filter out data for years outside a certain range.
-         * @return a new, filtered UnPackedZone object
-         */
-        filterYears(unpackedZone: UnpackedZone, startAndEndYear: number): UnpackedZone;
-
-        /**
-         * Combines packing, link creation, and subsetting of years into one simple interface.
-         * Pass in an unpacked bundle, start year, and end year and get a filtered, linked, packed bundle back.
-         */
-        filterLinkPack(unpackedBundle: UnpackedZoneBundle, startYear: number, endYear: number): PackedZoneBundle;
-        /**
-         * Combines packing, link creation, and subsetting of years into one simple interface.
-         * Pass in an unpacked bundle, start year, and end year and get a filtered, linked, packed bundle back.
-         */
-        filterLinkPack(unpackedBundle: UnpackedZoneBundle, startAndEndYear: number): PackedZoneBundle;
-    }
-}
-
-// require("moment-timezone") === require("moment")
-export = moment;
Index: ckend/node_modules/moment-timezone/moment-timezone-utils.js
===================================================================
--- backend/node_modules/moment-timezone/moment-timezone-utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,339 +1,0 @@
-//! moment-timezone-utils.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('./'));     // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	if (!moment.tz) {
-		throw new Error("moment-timezone-utils.js must be loaded after moment-timezone.js");
-	}
-
-	/************************************
-		Pack Base 60
-	************************************/
-
-	var BASE60 = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX',
-		EPSILON = 0.000001; // Used to fix floating point rounding errors
-
-	function packBase60Fraction(fraction, precision) {
-		var buffer = '.',
-			output = '',
-			current;
-
-		while (precision > 0) {
-			precision  -= 1;
-			fraction   *= 60;
-			current     = Math.floor(fraction + EPSILON);
-			buffer     += BASE60[current];
-			fraction   -= current;
-
-			// Only add buffer to output once we have a non-zero value.
-			// This makes '.000' output '', and '.100' output '.1'
-			if (current) {
-				output += buffer;
-				buffer  = '';
-			}
-		}
-
-		return output;
-	}
-
-	function packBase60(number, precision) {
-		var output = '',
-			absolute = Math.abs(number),
-			whole = Math.floor(absolute),
-			fraction = packBase60Fraction(absolute - whole, Math.min(~~precision, 10));
-
-		while (whole > 0) {
-			output = BASE60[whole % 60] + output;
-			whole = Math.floor(whole / 60);
-		}
-
-		if (number < 0) {
-			output = '-' + output;
-		}
-
-		if (output && fraction) {
-			return output + fraction;
-		}
-
-		if (!fraction && output === '-') {
-			return '0';
-		}
-
-		return output || fraction || '0';
-	}
-
-	/************************************
-		Pack
-	************************************/
-
-	function packUntils(untils) {
-		var out = [],
-			last = 0,
-			i;
-
-		for (i = 0; i < untils.length - 1; i++) {
-			out[i] = packBase60(Math.round((untils[i] - last) / 1000) / 60, 1);
-			last = untils[i];
-		}
-
-		return out.join(' ');
-	}
-
-	function packAbbrsAndOffsets(source) {
-		var index = 0,
-			abbrs = [],
-			offsets = [],
-			indices = [],
-			map = {},
-			i, key;
-
-		for (i = 0; i < source.abbrs.length; i++) {
-			key = source.abbrs[i] + '|' + source.offsets[i];
-			if (map[key] === undefined) {
-				map[key] = index;
-				abbrs[index] = source.abbrs[i];
-				offsets[index] = packBase60(Math.round(source.offsets[i] * 60) / 60, 1);
-				index++;
-			}
-			indices[i] = packBase60(map[key], 0);
-		}
-
-		return abbrs.join(' ') + '|' + offsets.join(' ') + '|' + indices.join('');
-	}
-
-	function packPopulation (number) {
-		if (!number) {
-			return '';
-		}
-		if (number < 1000) {
-			return number;
-		}
-		var exponent = String(number | 0).length - 2;
-		var precision = Math.round(number / Math.pow(10, exponent));
-		return precision + 'e' + exponent;
-	}
-
-	function packCountries (countries) {
-		if (!countries) {
-			return '';
-		}
-		return countries.join(' ');
-	}
-
-	function validatePackData (source) {
-		if (!source.name)    { throw new Error("Missing name"); }
-		if (!source.abbrs)   { throw new Error("Missing abbrs"); }
-		if (!source.untils)  { throw new Error("Missing untils"); }
-		if (!source.offsets) { throw new Error("Missing offsets"); }
-		if (
-			source.offsets.length !== source.untils.length ||
-			source.offsets.length !== source.abbrs.length
-		) {
-			throw new Error("Mismatched array lengths");
-		}
-	}
-
-	function pack (source) {
-		validatePackData(source);
-		return [
-			source.name, // 0 - timezone name
-			packAbbrsAndOffsets(source), // 1 - abbrs, 2 - offsets, 3 - indices
-			packUntils(source.untils), // 4 - untils
-			packPopulation(source.population) // 5 - population
-		].join('|');
-	}
-
-	function packCountry (source) {
-		return [
-			source.name,
-			source.zones.join(' '),
-		].join('|');
-	}
-
-	/************************************
-		Create Links
-	************************************/
-
-	function arraysAreEqual(a, b) {
-		var i;
-
-		if (a.length !== b.length) { return false; }
-
-		for (i = 0; i < a.length; i++) {
-			if (a[i] !== b[i]) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	function zonesAreEqual(a, b) {
-		return arraysAreEqual(a.offsets, b.offsets) && arraysAreEqual(a.abbrs, b.abbrs) && arraysAreEqual(a.untils, b.untils);
-	}
-
-	function findAndCreateLinks (input, output, links, groupLeaders) {
-		var i, j, a, b, group, foundGroup, groups = [];
-
-		for (i = 0; i < input.length; i++) {
-			foundGroup = false;
-			a = input[i];
-
-			for (j = 0; j < groups.length; j++) {
-				group = groups[j];
-				b = group[0];
-				if (zonesAreEqual(a, b)) {
-					if (a.population > b.population) {
-						group.unshift(a);
-					} else if (a.population === b.population && groupLeaders && groupLeaders[a.name]) {
-						group.unshift(a);
-					} else {
-						group.push(a);
-					}
-					foundGroup = true;
-				}
-			}
-
-			if (!foundGroup) {
-				groups.push([a]);
-			}
-		}
-
-		for (i = 0; i < groups.length; i++) {
-			group = groups[i];
-			output.push(group[0]);
-			for (j = 1; j < group.length; j++) {
-				links.push(group[0].name + '|' + group[j].name);
-			}
-		}
-	}
-
-	function createLinks (source, groupLeaders) {
-		var zones = [],
-			links = [];
-
-		if (source.links) {
-			links = source.links.slice();
-		}
-
-		findAndCreateLinks(source.zones, zones, links, groupLeaders);
-
-		return {
-			version 	: source.version,
-			zones   	: zones,
-			links   	: links.sort()
-		};
-	}
-
-	/************************************
-		Filter Years
-	************************************/
-
-	function findStartAndEndIndex (untils, start, end) {
-		var startI = 0,
-			endI = untils.length + 1,
-			untilYear,
-			i;
-
-		if (!end) {
-			end = start;
-		}
-
-		if (start > end) {
-			i = start;
-			start = end;
-			end = i;
-		}
-
-		for (i = 0; i < untils.length; i++) {
-			if (untils[i] == null) {
-				continue;
-			}
-			untilYear = new Date(untils[i]).getUTCFullYear();
-			if (untilYear < start) {
-				startI = i + 1;
-			}
-			if (untilYear > end) {
-				endI = Math.min(endI, i + 1);
-			}
-		}
-
-		return [startI, endI];
-	}
-
-	function filterYears (source, start, end) {
-		var slice     = Array.prototype.slice,
-			indices   = findStartAndEndIndex(source.untils, start, end),
-			untils    = slice.apply(source.untils, indices);
-
-		untils[untils.length - 1] = null;
-
-		return {
-			name       : source.name,
-			abbrs      : slice.apply(source.abbrs, indices),
-			untils     : untils,
-			offsets    : slice.apply(source.offsets, indices),
-			population : source.population,
-			countries  : source.countries
-		};
-	}
-
-	/************************************
-		Filter, Link, and Pack
-	************************************/
-
-	function filterLinkPack (input, start, end, groupLeaders) {
-		var i,
-			inputZones = input.zones,
-			outputZones = [],
-			output;
-
-		for (i = 0; i < inputZones.length; i++) {
-			outputZones[i] = filterYears(inputZones[i], start, end);
-		}
-
-		output = createLinks({
-			zones : outputZones,
-			links : input.links.slice(),
-			version : input.version
-		}, groupLeaders);
-
-		for (i = 0; i < output.zones.length; i++) {
-			output.zones[i] = pack(output.zones[i]);
-		}
-
-		output.countries = input.countries ? input.countries.map(function (unpacked) {
-			return packCountry(unpacked);
-		}) : [];
-
-		return output;
-	}
-
-	/************************************
-		Exports
-	************************************/
-
-	moment.tz.pack           = pack;
-	moment.tz.packBase60     = packBase60;
-	moment.tz.createLinks    = createLinks;
-	moment.tz.filterYears    = filterYears;
-	moment.tz.filterLinkPack = filterLinkPack;
-	moment.tz.packCountry	 = packCountry;
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/moment-timezone.js
===================================================================
--- backend/node_modules/moment-timezone/moment-timezone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,729 +1,0 @@
-//! moment-timezone.js
-//! version : 0.5.48
-//! Copyright (c) JS Foundation and other contributors
-//! license : MIT
-//! github.com/moment/moment-timezone
-
-(function (root, factory) {
-	"use strict";
-
-	/*global define*/
-	if (typeof module === 'object' && module.exports) {
-		module.exports = factory(require('moment')); // Node
-	} else if (typeof define === 'function' && define.amd) {
-		define(['moment'], factory);                 // AMD
-	} else {
-		factory(root.moment);                        // Browser
-	}
-}(this, function (moment) {
-	"use strict";
-
-	// Resolves es6 module loading issue
-	if (moment.version === undefined && moment.default) {
-		moment = moment.default;
-	}
-
-	// Do not load moment-timezone a second time.
-	// if (moment.tz !== undefined) {
-	// 	logError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);
-	// 	return moment;
-	// }
-
-	var VERSION = "0.5.48",
-		zones = {},
-		links = {},
-		countries = {},
-		names = {},
-		guesses = {},
-		cachedGuess;
-
-	if (!moment || typeof moment.version !== 'string') {
-		logError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');
-	}
-
-	var momentVersion = moment.version.split('.'),
-		major = +momentVersion[0],
-		minor = +momentVersion[1];
-
-	// Moment.js version check
-	if (major < 2 || (major === 2 && minor < 6)) {
-		logError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');
-	}
-
-	/************************************
-		Unpacking
-	************************************/
-
-	function charCodeToInt(charCode) {
-		if (charCode > 96) {
-			return charCode - 87;
-		} else if (charCode > 64) {
-			return charCode - 29;
-		}
-		return charCode - 48;
-	}
-
-	function unpackBase60(string) {
-		var i = 0,
-			parts = string.split('.'),
-			whole = parts[0],
-			fractional = parts[1] || '',
-			multiplier = 1,
-			num,
-			out = 0,
-			sign = 1;
-
-		// handle negative numbers
-		if (string.charCodeAt(0) === 45) {
-			i = 1;
-			sign = -1;
-		}
-
-		// handle digits before the decimal
-		for (i; i < whole.length; i++) {
-			num = charCodeToInt(whole.charCodeAt(i));
-			out = 60 * out + num;
-		}
-
-		// handle digits after the decimal
-		for (i = 0; i < fractional.length; i++) {
-			multiplier = multiplier / 60;
-			num = charCodeToInt(fractional.charCodeAt(i));
-			out += num * multiplier;
-		}
-
-		return out * sign;
-	}
-
-	function arrayToInt (array) {
-		for (var i = 0; i < array.length; i++) {
-			array[i] = unpackBase60(array[i]);
-		}
-	}
-
-	function intToUntil (array, length) {
-		for (var i = 0; i < length; i++) {
-			array[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds
-		}
-
-		array[length - 1] = Infinity;
-	}
-
-	function mapIndices (source, indices) {
-		var out = [], i;
-
-		for (i = 0; i < indices.length; i++) {
-			out[i] = source[indices[i]];
-		}
-
-		return out;
-	}
-
-	function unpack (string) {
-		var data = string.split('|'),
-			offsets = data[2].split(' '),
-			indices = data[3].split(''),
-			untils  = data[4].split(' ');
-
-		arrayToInt(offsets);
-		arrayToInt(indices);
-		arrayToInt(untils);
-
-		intToUntil(untils, indices.length);
-
-		return {
-			name       : data[0],
-			abbrs      : mapIndices(data[1].split(' '), indices),
-			offsets    : mapIndices(offsets, indices),
-			untils     : untils,
-			population : data[5] | 0
-		};
-	}
-
-	/************************************
-		Zone object
-	************************************/
-
-	function Zone (packedString) {
-		if (packedString) {
-			this._set(unpack(packedString));
-		}
-	}
-
-	function closest (num, arr) {
-		var len = arr.length;
-		if (num < arr[0]) {
-			return 0;
-		} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {
-			return len - 1;
-		} else if (num >= arr[len - 1]) {
-			return -1;
-		}
-
-		var mid;
-		var lo = 0;
-		var hi = len - 1;
-		while (hi - lo > 1) {
-			mid = Math.floor((lo + hi) / 2);
-			if (arr[mid] <= num) {
-				lo = mid;
-			} else {
-				hi = mid;
-			}
-		}
-		return hi;
-	}
-
-	Zone.prototype = {
-		_set : function (unpacked) {
-			this.name       = unpacked.name;
-			this.abbrs      = unpacked.abbrs;
-			this.untils     = unpacked.untils;
-			this.offsets    = unpacked.offsets;
-			this.population = unpacked.population;
-		},
-
-		_index : function (timestamp) {
-			var target = +timestamp,
-				untils = this.untils,
-				i;
-
-			i = closest(target, untils);
-			if (i >= 0) {
-				return i;
-			}
-		},
-
-		countries : function () {
-			var zone_name = this.name;
-			return Object.keys(countries).filter(function (country_code) {
-				return countries[country_code].zones.indexOf(zone_name) !== -1;
-			});
-		},
-
-		parse : function (timestamp) {
-			var target  = +timestamp,
-				offsets = this.offsets,
-				untils  = this.untils,
-				max     = untils.length - 1,
-				offset, offsetNext, offsetPrev, i;
-
-			for (i = 0; i < max; i++) {
-				offset     = offsets[i];
-				offsetNext = offsets[i + 1];
-				offsetPrev = offsets[i ? i - 1 : i];
-
-				if (offset < offsetNext && tz.moveAmbiguousForward) {
-					offset = offsetNext;
-				} else if (offset > offsetPrev && tz.moveInvalidForward) {
-					offset = offsetPrev;
-				}
-
-				if (target < untils[i] - (offset * 60000)) {
-					return offsets[i];
-				}
-			}
-
-			return offsets[max];
-		},
-
-		abbr : function (mom) {
-			return this.abbrs[this._index(mom)];
-		},
-
-		offset : function (mom) {
-			logError("zone.offset has been deprecated in favor of zone.utcOffset");
-			return this.offsets[this._index(mom)];
-		},
-
-		utcOffset : function (mom) {
-			return this.offsets[this._index(mom)];
-		}
-	};
-
-	/************************************
-		Country object
-	************************************/
-
-	function Country (country_name, zone_names) {
-		this.name = country_name;
-		this.zones = zone_names;
-	}
-
-	/************************************
-		Current Timezone
-	************************************/
-
-	function OffsetAt(at) {
-		var timeString = at.toTimeString();
-		var abbr = timeString.match(/\([a-z ]+\)/i);
-		if (abbr && abbr[0]) {
-			// 17:56:31 GMT-0600 (CST)
-			// 17:56:31 GMT-0600 (Central Standard Time)
-			abbr = abbr[0].match(/[A-Z]/g);
-			abbr = abbr ? abbr.join('') : undefined;
-		} else {
-			// 17:56:31 CST
-			// 17:56:31 GMT+0800 (台北標準時間)
-			abbr = timeString.match(/[A-Z]{3,5}/g);
-			abbr = abbr ? abbr[0] : undefined;
-		}
-
-		if (abbr === 'GMT') {
-			abbr = undefined;
-		}
-
-		this.at = +at;
-		this.abbr = abbr;
-		this.offset = at.getTimezoneOffset();
-	}
-
-	function ZoneScore(zone) {
-		this.zone = zone;
-		this.offsetScore = 0;
-		this.abbrScore = 0;
-	}
-
-	ZoneScore.prototype.scoreOffsetAt = function (offsetAt) {
-		this.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);
-		if (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {
-			this.abbrScore++;
-		}
-	};
-
-	function findChange(low, high) {
-		var mid, diff;
-
-		while ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {
-			mid = new OffsetAt(new Date(low.at + diff));
-			if (mid.offset === low.offset) {
-				low = mid;
-			} else {
-				high = mid;
-			}
-		}
-
-		return low;
-	}
-
-	function userOffsets() {
-		var startYear = new Date().getFullYear() - 2,
-			last = new OffsetAt(new Date(startYear, 0, 1)),
-			lastOffset = last.offset,
-			offsets = [last],
-			change, next, nextOffset, i;
-
-		for (i = 1; i < 48; i++) {
-			nextOffset = new Date(startYear, i, 1).getTimezoneOffset();
-			if (nextOffset !== lastOffset) {
-				// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets
-				next = new OffsetAt(new Date(startYear, i, 1));
-				change = findChange(last, next);
-				offsets.push(change);
-				offsets.push(new OffsetAt(new Date(change.at + 6e4)));
-				last = next;
-				lastOffset = nextOffset;
-			}
-		}
-
-		for (i = 0; i < 4; i++) {
-			offsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));
-			offsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));
-		}
-
-		return offsets;
-	}
-
-	function sortZoneScores (a, b) {
-		if (a.offsetScore !== b.offsetScore) {
-			return a.offsetScore - b.offsetScore;
-		}
-		if (a.abbrScore !== b.abbrScore) {
-			return a.abbrScore - b.abbrScore;
-		}
-		if (a.zone.population !== b.zone.population) {
-			return b.zone.population - a.zone.population;
-		}
-		return b.zone.name.localeCompare(a.zone.name);
-	}
-
-	function addToGuesses (name, offsets) {
-		var i, offset;
-		arrayToInt(offsets);
-		for (i = 0; i < offsets.length; i++) {
-			offset = offsets[i];
-			guesses[offset] = guesses[offset] || {};
-			guesses[offset][name] = true;
-		}
-	}
-
-	function guessesForUserOffsets (offsets) {
-		var offsetsLength = offsets.length,
-			filteredGuesses = {},
-			out = [],
-			checkedOffsets = {},
-			i, j, offset, guessesOffset;
-
-		for (i = 0; i < offsetsLength; i++) {
-			offset = offsets[i].offset;
-			if (checkedOffsets.hasOwnProperty(offset)) {
-				continue;
-			}
-			guessesOffset = guesses[offset] || {};
-			for (j in guessesOffset) {
-				if (guessesOffset.hasOwnProperty(j)) {
-					filteredGuesses[j] = true;
-				}
-			}
-			checkedOffsets[offset] = true;
-		}
-
-		for (i in filteredGuesses) {
-			if (filteredGuesses.hasOwnProperty(i)) {
-				out.push(names[i]);
-			}
-		}
-
-		return out;
-	}
-
-	function rebuildGuess () {
-
-		// use Intl API when available and returning valid time zone
-		try {
-			var intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;
-			if (intlName && intlName.length > 3) {
-				var name = names[normalizeName(intlName)];
-				if (name) {
-					return name;
-				}
-				logError("Moment Timezone found " + intlName + " from the Intl api, but did not have that data loaded.");
-			}
-		} catch (e) {
-			// Intl unavailable, fall back to manual guessing.
-		}
-
-		var offsets = userOffsets(),
-			offsetsLength = offsets.length,
-			guesses = guessesForUserOffsets(offsets),
-			zoneScores = [],
-			zoneScore, i, j;
-
-		for (i = 0; i < guesses.length; i++) {
-			zoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);
-			for (j = 0; j < offsetsLength; j++) {
-				zoneScore.scoreOffsetAt(offsets[j]);
-			}
-			zoneScores.push(zoneScore);
-		}
-
-		zoneScores.sort(sortZoneScores);
-
-		return zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;
-	}
-
-	function guess (ignoreCache) {
-		if (!cachedGuess || ignoreCache) {
-			cachedGuess = rebuildGuess();
-		}
-		return cachedGuess;
-	}
-
-	/************************************
-		Global Methods
-	************************************/
-
-	function normalizeName (name) {
-		return (name || '').toLowerCase().replace(/\//g, '_');
-	}
-
-	function addZone (packed) {
-		var i, name, split, normalized;
-
-		if (typeof packed === "string") {
-			packed = [packed];
-		}
-
-		for (i = 0; i < packed.length; i++) {
-			split = packed[i].split('|');
-			name = split[0];
-			normalized = normalizeName(name);
-			zones[normalized] = packed[i];
-			names[normalized] = name;
-			addToGuesses(normalized, split[2].split(' '));
-		}
-	}
-
-	function getZone (name, caller) {
-
-		name = normalizeName(name);
-
-		var zone = zones[name];
-		var link;
-
-		if (zone instanceof Zone) {
-			return zone;
-		}
-
-		if (typeof zone === 'string') {
-			zone = new Zone(zone);
-			zones[name] = zone;
-			return zone;
-		}
-
-		// Pass getZone to prevent recursion more than 1 level deep
-		if (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {
-			zone = zones[name] = new Zone();
-			zone._set(link);
-			zone.name = names[name];
-			return zone;
-		}
-
-		return null;
-	}
-
-	function getNames () {
-		var i, out = [];
-
-		for (i in names) {
-			if (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {
-				out.push(names[i]);
-			}
-		}
-
-		return out.sort();
-	}
-
-	function getCountryNames () {
-		return Object.keys(countries);
-	}
-
-	function addLink (aliases) {
-		var i, alias, normal0, normal1;
-
-		if (typeof aliases === "string") {
-			aliases = [aliases];
-		}
-
-		for (i = 0; i < aliases.length; i++) {
-			alias = aliases[i].split('|');
-
-			normal0 = normalizeName(alias[0]);
-			normal1 = normalizeName(alias[1]);
-
-			links[normal0] = normal1;
-			names[normal0] = alias[0];
-
-			links[normal1] = normal0;
-			names[normal1] = alias[1];
-		}
-	}
-
-	function addCountries (data) {
-		var i, country_code, country_zones, split;
-		if (!data || !data.length) return;
-		for (i = 0; i < data.length; i++) {
-			split = data[i].split('|');
-			country_code = split[0].toUpperCase();
-			country_zones = split[1].split(' ');
-			countries[country_code] = new Country(
-				country_code,
-				country_zones
-			);
-		}
-	}
-
-	function getCountry (name) {
-		name = name.toUpperCase();
-		return countries[name] || null;
-	}
-
-	function zonesForCountry(country, with_offset) {
-		country = getCountry(country);
-
-		if (!country) return null;
-
-		var zones = country.zones.sort();
-
-		if (with_offset) {
-			return zones.map(function (zone_name) {
-				var zone = getZone(zone_name);
-				return {
-					name: zone_name,
-					offset: zone.utcOffset(new Date())
-				};
-			});
-		}
-
-		return zones;
-	}
-
-	function loadData (data) {
-		addZone(data.zones);
-		addLink(data.links);
-		addCountries(data.countries);
-		tz.dataVersion = data.version;
-	}
-
-	function zoneExists (name) {
-		if (!zoneExists.didShowError) {
-			zoneExists.didShowError = true;
-				logError("moment.tz.zoneExists('" + name + "') has been deprecated in favor of !moment.tz.zone('" + name + "')");
-		}
-		return !!getZone(name);
-	}
-
-	function needsOffset (m) {
-		var isUnixTimestamp = (m._f === 'X' || m._f === 'x');
-		return !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);
-	}
-
-	function logError (message) {
-		if (typeof console !== 'undefined' && typeof console.error === 'function') {
-			console.error(message);
-		}
-	}
-
-	/************************************
-		moment.tz namespace
-	************************************/
-
-	function tz (input) {
-		var args = Array.prototype.slice.call(arguments, 0, -1),
-			name = arguments[arguments.length - 1],
-			out  = moment.utc.apply(null, args),
-			zone;
-
-		if (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {
-			out.add(zone.parse(out), 'minutes');
-		}
-
-		out.tz(name);
-
-		return out;
-	}
-
-	tz.version      = VERSION;
-	tz.dataVersion  = '';
-	tz._zones       = zones;
-	tz._links       = links;
-	tz._names       = names;
-	tz._countries	= countries;
-	tz.add          = addZone;
-	tz.link         = addLink;
-	tz.load         = loadData;
-	tz.zone         = getZone;
-	tz.zoneExists   = zoneExists; // deprecated in 0.1.0
-	tz.guess        = guess;
-	tz.names        = getNames;
-	tz.Zone         = Zone;
-	tz.unpack       = unpack;
-	tz.unpackBase60 = unpackBase60;
-	tz.needsOffset  = needsOffset;
-	tz.moveInvalidForward   = true;
-	tz.moveAmbiguousForward = false;
-	tz.countries    = getCountryNames;
-	tz.zonesForCountry = zonesForCountry;
-
-	/************************************
-		Interface with Moment.js
-	************************************/
-
-	var fn = moment.fn;
-
-	moment.tz = tz;
-
-	moment.defaultZone = null;
-
-	moment.updateOffset = function (mom, keepTime) {
-		var zone = moment.defaultZone,
-			offset;
-
-		if (mom._z === undefined) {
-			if (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {
-				mom._d = moment.utc(mom._a)._d;
-				mom.utc().add(zone.parse(mom), 'minutes');
-			}
-			mom._z = zone;
-		}
-		if (mom._z) {
-			offset = mom._z.utcOffset(mom);
-			if (Math.abs(offset) < 16) {
-				offset = offset / 60;
-			}
-			if (mom.utcOffset !== undefined) {
-				var z = mom._z;
-				mom.utcOffset(-offset, keepTime);
-				mom._z = z;
-			} else {
-				mom.zone(offset, keepTime);
-			}
-		}
-	};
-
-	fn.tz = function (name, keepTime) {
-		if (name) {
-			if (typeof name !== 'string') {
-				throw new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');
-			}
-			this._z = getZone(name);
-			if (this._z) {
-				moment.updateOffset(this, keepTime);
-			} else {
-				logError("Moment Timezone has no data for " + name + ". See http://momentjs.com/timezone/docs/#/data-loading/.");
-			}
-			return this;
-		}
-		if (this._z) { return this._z.name; }
-	};
-
-	function abbrWrap (old) {
-		return function () {
-			if (this._z) { return this._z.abbr(this); }
-			return old.call(this);
-		};
-	}
-
-	function resetZoneWrap (old) {
-		return function () {
-			this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	function resetZoneWrap2 (old) {
-		return function () {
-			if (arguments.length > 0) this._z = null;
-			return old.apply(this, arguments);
-		};
-	}
-
-	fn.zoneName  = abbrWrap(fn.zoneName);
-	fn.zoneAbbr  = abbrWrap(fn.zoneAbbr);
-	fn.utc       = resetZoneWrap(fn.utc);
-	fn.local     = resetZoneWrap(fn.local);
-	fn.utcOffset = resetZoneWrap2(fn.utcOffset);
-
-	moment.tz.setDefault = function(name) {
-		if (major < 2 || (major === 2 && minor < 9)) {
-			logError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');
-		}
-		moment.defaultZone = name ? getZone(name) : null;
-		return moment;
-	};
-
-	// Cloning a moment should include the _z property.
-	var momentProperties = moment.momentProperties;
-	if (Object.prototype.toString.call(momentProperties) === '[object Array]') {
-		// moment 2.8.1+
-		momentProperties.push('_z');
-		momentProperties.push('_a');
-	} else if (momentProperties) {
-		// moment 2.7.0
-		momentProperties._z = null;
-	}
-
-	// INJECT DATA
-
-	return moment;
-}));
Index: ckend/node_modules/moment-timezone/package.json
===================================================================
--- backend/node_modules/moment-timezone/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-{
-	"name": "moment-timezone",
-	"version": "0.5.48",
-	"description": "Parse and display moments in any timezone.",
-	"homepage": "http://momentjs.com/timezone/",
-	"author": "Tim Wood <washwithcare@gmail.com> (http://timwoodcreates.com/)",
-	"keywords": [
-		"moment",
-		"date",
-		"time",
-		"timezone",
-		"olson",
-		"iana",
-		"zone",
-		"tz"
-	],
-	"main": "./index.js",
-	"typings": "./index.d.ts",
-	"engines": {
-		"node": "*"
-	},
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/moment/moment-timezone.git"
-	},
-	"bugs": {
-		"url": "https://github.com/moment/moment-timezone/issues"
-	},
-	"license": "MIT",
-	"dependencies": {
-		"moment": "^2.29.4"
-	},
-	"devDependencies": {
-		"grunt": "^1.5.3",
-		"grunt-contrib-clean": "^2.0.1",
-		"grunt-contrib-jshint": "^3.2.0",
-		"grunt-contrib-nodeunit": "^5.0.0",
-		"grunt-contrib-uglify": "^5.2.2",
-		"grunt-exec": "^3.0.0",
-		"typescript": "^3.5.1"
-	},
-	"jspm": {
-		"main": "builds/moment-timezone-with-data",
-		"shim": {
-			"moment-timezone": {
-				"deps": [
-					"moment"
-				]
-			}
-		}
-	},
-	"scripts": {
-		"test": "grunt"
-	}
-}
Index: ckend/node_modules/moment/CHANGELOG.md
===================================================================
--- backend/node_modules/moment/CHANGELOG.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,996 +1,0 @@
-Changelog
-=========
-
-### 2.30.1
-* Release Dec 27, 2023
-* Revert https://github.com/moment/moment/pull/5827, because it's breaking
-  a lot of TS code.
-
-### 2.30.0 [Full changelog](https://gist.github.com/ichernev/e277bcd1f0eeabb834f60a777237925a)
-* Release Dec 26, 2023
-
-### 2.29.4
-
-* Release Jul 6, 2022
-  * [#6015](https://github.com/moment/moment/pull/6015) [bugfix] Fix ReDoS in preprocessRFC2822 regex
-
-### 2.29.3 [Full changelog](https://gist.github.com/ichernev/edebd440f49adcaec72e5e77b791d8be)
-
-* Release Apr 17, 2022
-  * [#5995](https://github.com/moment/moment/pull/5995) [bugfix] Remove const usage
-  * [#5990](https://github.com/moment/moment/pull/5990) misc: fix advisory link
-
-
-### 2.29.2 [See full changelog](https://gist.github.com/ichernev/1904b564f6679d9aac1ae08ce13bc45c)
-
-* Release Apr 3 2022
-
-Address https://github.com/moment/moment/security/advisories/GHSA-8hfj-j24r-96c4
-
-### 2.29.1 [See full changelog](https://gist.github.com/marwahaha/cc478ba01a1292ab4bd4e861d164d99b)
-
-* Release Oct 6, 2020
-
-Updated deprecation message, bugfix in hi locale
-
-### 2.29.0 [See full changelog](https://gist.github.com/marwahaha/b0111718641a6461800066549957ec14)
-
-* Release Sept 22, 2020
-
-New locales (es-mx, bn-bd).
-Minor bugfixes and locale improvements.
-More tests.
-Moment is in maintenance mode. Read more at this link:
-https://momentjs.com/docs/#/-project-status/
-
-### 2.28.0 [See full changelog](https://gist.github.com/marwahaha/028fd6c2b2470b2804857cfd63c0e94f)
-
-* Release Sept 13, 2020
-
-Fix bug where .format() modifies original instance, and locale updates
-
-### 2.27.0 [See full changelog](https://gist.github.com/marwahaha/5100c9c2f42019067b1f6cefc333daa7)
-
-* Release June 18, 2020
-
-Added Turkmen locale, other locale improvements, slight TypeScript fixes
-
-### 2.26.0 [See full changelog](https://gist.github.com/marwahaha/0725c40740560854a849b096ea7b7590)
-
-* Release May 19, 2020
-
-TypeScript fixes and many locale improvements
-
-### 2.25.3
-
-* Release May 4, 2020
-
-Remove package.json module property. It looks like webpack behaves differently
-for modules loaded via module vs jsnext:main.
-
-### 2.25.2
-
-* Release May 4, 2020
-
-This release includes ES Module bundled moment, separate from it's source code
-under dist/ folder. This might alleviate issues with finding the `./locale
-subfolder for loading locales. This might also mean now webpack will bundle all
-locales automatically, unless told otherwise.
-
-### 2.25.1
-
-* Release May 1, 2020
-
-This is a quick patch release to address some of the issues raised after
-releasing 2.25.0.
-
-* [2e268635](https://github.com/moment/moment/commit/2e268635) [misc] Revert #5269 due to webpack warning
-* [226799e1](https://github.com/moment/moment/commit/226799e1) [locale] fil: Fix metadata comment
-* [a83a521](https://github.com/moment/moment/commit/a83a521) [bugfix] Fix typeoff usages
-* [e324334](https://github.com/moment/moment/commit/e324334) [pkg] Add ts3.1-typings in npm package
-* [28cc23e](https://github.com/moment/moment/commit/28cc23e) [misc] Remove deleted generated locale en-SG
-
-### 2.25.0 [See full changelog](https://gist.github.com/ichernev/6148e64df2427e455b10ce6a18de1a65)
-
-* Release May 1, 2020
-
-* [#4611](https://github.com/moment/moment/issues/4611) [022dc038](https://github.com/moment/moment/commit/022dc038) [feature] Support for strict string parsing, fixes [#2469](https://github.com/moment/moment/issues/2469)
-* [#4599](https://github.com/moment/moment/issues/4599) [4b615b9d](https://github.com/moment/moment/commit/4b615b9d) [feature] Add support for eras in en and jp
-* [#4296](https://github.com/moment/moment/issues/4296) [757d4ff8](https://github.com/moment/moment/commit/757d4ff8) [feature] Accept custom relative thresholds in duration.humanize
-
-* 18 bigfixes
-* 36 locale fixes
-* 5 new locales (oc-lnc, zh-mo, en-in, gom-deva, fil)
-
-### 2.24.0 [See full changelog](https://gist.github.com/marwahaha/12366fe45bee328f33acf125d4cd540e)
-
-* Release Jan 21, 2019
-
-* [#4338](https://github.com/moment/moment/pull/4338) [bugfix] Fix startOf/endOf DST issues while boosting performance
-* [#4553](https://github.com/moment/moment/pull/4553) [feature] Add localeSort param to Locale weekday methods
-* [#4887](https://github.com/moment/moment/pull/4887) [bugfix] Make Duration#as work with quarters
-* 3 new locales (it-ch, ga, en-SG)
-* Lots of locale improvements
-
-### 2.23.0 [See full changelog](https://gist.github.com/marwahaha/eadb7ac11b761290399a576f8b2419a5)
-
-* Release Dec 12, 2018
-
-* [#4863](https://github.com/moment/moment/pull/4863) [new locale] added Kurdish language (ku)
-* [#4417](https://github.com/moment/moment/pull/4417) [bugfix] isBetween should return false for invalid dates
-* [#4700](https://github.com/moment/moment/pull/4700) [bugfix] Fix [#4698](https://github.com/moment/moment/pull/4698): Use ISO WeekYear for HTML5_FMT.WEEK
-* [#4563](https://github.com/moment/moment/pull/4563) [feature] Fix [#4518](https://github.com/moment/moment/pull/4518): Add support to add/subtract ISO weeks
-* other locale changes, build process changes, typos
-
-### 2.22.2 [See full changelog](https://gist.github.com/marwahaha/4d992c13c2dbc0f59d4d8acae1dc6d3a)
-
-* Release May 31, 2018
-
-* [#4564](https://github.com/moment/moment/pull/4564) [bugfix] Avoid using trim()
-* [#4453](https://github.com/moment/moment/pull/4453) [bugfix] Treat periods as periods, not regex-anything period, for weekday parsing in strict mode.
-* Minor locale improvements (pa-in, be, az)
-
-### 2.22.1 [See full changelog](https://gist.github.com/marwahaha/ff2cd13d0eda08afb7a237b10aae558c)
-
-* Release Apr 14, 2018
-
-* [#4495](https://github.com/moment/moment/pull/4495) [bugfix] Added HTML5_FMT to moment.d.ts
-* Minor locale improvements
-* QUnit upgrade and coveralls reporting
-
-### 2.22.0 [See full changelog](https://gist.github.com/marwahaha/ae895025dac3f0641fa9ec2e36d282bb)
-
-* Release Mar 30, 2018
-
-* [#4423](https://github.com/moment/moment/pull/4423) [new locale] Added Mongolian locale mn
-* Various locale improvements
-* Minor misc changes
-
-### 2.21.0 [See full changelog](https://gist.github.com/marwahaha/80d19ef882b71df1948df7865efdd40e)
-
-* Release Mar 2, 2018
-
-* [#4391](https://github.com/moment/moment/pull/4391) [bugfix] Fix [#4390](https://github.com/moment/moment/pull/4390): use offset properly in toISOString
-* [#4310](https://github.com/moment/moment/pull/4310) [bugfix] Fix [#3883](https://github.com/moment/moment/pull/3883) lazy load parentLocale in defineLocale, fallback to global if missing
-* [#4085](https://github.com/moment/moment/pull/4085) [misc] Print console warning when setting non-existent locales
-* [#4371](https://github.com/moment/moment/pull/4371) [misc] fix deprecated rollup options
-* New locales: ug-cn, en-il, tg
-* Various locale improvements
-
-### 2.20.1 [See changelog](https://gist.github.com/marwahaha/d72c1cb22076373be889b16272cbd187)
-
-* Release Dec 18, 2017
-
-* [#4359](https://github.com/moment/moment/pull/4359) [locale] Fix Arabic locale for months (again)
-* [#4357](https://github.com/moment/moment/pull/4357) [misc] Add optional parameter keepOffset to toISOString
-
-### 2.20.0 [See full changelog](https://gist.github.com/marwahaha/e0d4135fbf8bb75fa85c4aa2bddc5031)
-
-* Release Dec 16, 2017
-
-* [#4312](https://github.com/moment/moment/pull/4312) [bugfix] Fix [#4251](https://github.com/moment/moment/pull/4251): Avoid RFC2822 in utc() test
-* [#4240](https://github.com/moment/moment/pull/4240) [bugfix] Fix incorrect strict parsing with full-width parentheses
-* [#4341](https://github.com/moment/moment/pull/4341) [feature] Prevent toISOString converting to UTC (issue [#1751](https://github.com/moment/moment/pull/1751))
-* [#4154](https://github.com/moment/moment/pull/4154) [feature] add format constants to support output to HTML5 input type formats (see [#3928](https://github.com/moment/moment/pull/3928))
-* [#4143](https://github.com/moment/moment/pull/4143) [new locale] mt: Maltese language
-* [#4183](https://github.com/moment/moment/pull/4183) [locale] Relative seconds i18n
-* Various other locale improvements
-
-### 2.19.4 [See changelog](https://gist.github.com/marwahaha/d3b7b0ddf4bdae512244f16e8cc59efb)
-
-* Release Dec 10, 2017
-
-* [#4332](https://github.com/moment/moment/pull/4332) [bugfix] Fix weekday verification for UTC and offset days (fixes [#4227](https://github.com/moment/moment/pull/4227))
-* [#4336](https://github.com/moment/moment/pull/4336) [bugfix] Fix [#4334](https://github.com/moment/moment/pull/4334): Remove unused function call argument
-* [#4246](https://github.com/moment/moment/pull/4246) [misc] Add 'ss' relative time key to typescript definition
-
-### 2.19.3 [See changelog](https://gist.github.com/marwahaha/3654006bc0c2e522451c08d12c0bfabf)
-
-* Release Nov 29, 2017
-
-* [#4326](https://github.com/moment/moment/pull/4326) [bugfix] Fix for ReDOS vulnerability (see [#4163](https://github.com/moment/moment/issues/4163))
-* [#4289](https://github.com/moment/moment/pull/4289) [misc] Fix spelling and formatting for U.S. for es-us
-
-### 2.19.2 [See changelog (it's the same >:D)](https://gist.github.com/ichernev/76b1a3f33d3a8ff9665ce434a45221d0)
-
-* Release Nov 11, 2017
-
-* [#4255](https://github.com/moment/moment/pull/4255) [bugfix] Fix year setter for random days in a leap year, fixes [#4238](https://github.com/moment/moment/issues/4238)
-* [#4242](https://github.com/moment/moment/pull/4242) [bugfix] updateLocale now tries to load parent, fixes [#3626](https://github.com/moment/moment/issues/3626)
-
-### 2.19.1
-
-* Release Oct 11, 2017
-
-Make react native and webpack both work
-* #4225 #4226 #4232
-
-### 2.19.0 [See full changelog](https://gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603)
-
-* Release Oct 10, 2017
-
-## Fix React Native 0.49+ crash
-* [#4213](https://github.com/moment/moment/pull/4213) [critical] Rename dynamic
-  require to avoid React Native crash
-* [#4214](https://github.com/moment/moment/pull/4214) [fixup] Move require
-  rename inside try/catch, fixes
-  [#4213](https://github.com/moment/moment/issues/4213)
-
-## Features
-
-* [#3735](https://github.com/moment/moment/pull/3735) [feature] Ignore NaN values in setters
-* [#4106](https://github.com/moment/moment/pull/4106) [fixup] Drop isNumeric utility fn, fixes [#3735](https://github.com/moment/moment/issues/3735)
-* [#4080](https://github.com/moment/moment/pull/4080) [feature] Implement a clone method for durations, fixes [#4078](https://github.com/moment/moment/issues/4078)
-* [#4215](https://github.com/moment/moment/pull/4215) [misc] TS: Add duration.clone(), for [#4080](https://github.com/moment/moment/issues/4080)
-
-## Packaging
-
-* [#4003](https://github.com/moment/moment/pull/4003) [pkg] bower: Remove tests from package
-* [#3904](https://github.com/moment/moment/pull/3904) [pkg] jsnext:main -> module in package.json
-* [#4060](https://github.com/moment/moment/pull/4060) [pkg] Account for new rollup interface
-
-Bugfixes, new locales, locale fixes etc...
-
-### 2.18.1
-
-* Release Mar 22, 2017
-
-* [#3853](https://github.com/moment/moment/pull/3853) [misc] Fix invalid whitespace character causing inability to parse
-  moment.js
-
-### 2.18.0 [See full changelog](https://gist.github.com/ichernev/78920c5a1e419fb28c6e4546d1b7235c)
-
-* Release Mar 18, 2017
-
-## Features
-
-* [#3708](https://github.com/moment/moment/pull/3708) [feature] RFC2822 parsing
-* [#3611](https://github.com/moment/moment/pull/3611) [feature] Durations gain validity
-* [#3738](https://github.com/moment/moment/pull/3738) [feature] Enable relative time for multiple seconds, request [#2558](https://github.com/moment/moment/issues/2558)
-* [#3766](https://github.com/moment/moment/pull/3766) [feature] Add support for k and kk format parsing
-
-## Bugfixes
-
-* [#3643](https://github.com/moment/moment/pull/3643) [bugfix] Fixes [#3520](https://github.com/moment/moment/issues/3520), parseZone incorrectly handled minutes under 16
-* [#3710](https://github.com/moment/moment/pull/3710) [bugfix] Fixes [#3632](https://github.com/moment/moment/issues/3632), toISOString returns null for invalid date
-* [#3787](https://github.com/moment/moment/pull/3787) [bugfix] Fixes [#3717](https://github.com/moment/moment/issues/3717), ensure day-of-year is non-zero
-* [#3780](https://github.com/moment/moment/pull/3780) [bugfix] Fixes [#3765](https://github.com/moment/moment/issues/3765): Ensure year 0 is formatted with YYYY
-* [#3806](https://github.com/moment/moment/pull/3806) [bugfix] Fixes [#3805](https://github.com/moment/moment/issues/3805), fix locale month getters for standalone/format cases
-
-7 new locales, many locale improvements and some misc changes
-
-### 2.17.1 [Also available here](https://gist.github.com/ichernev/f38280b2b29c4932914a6d3a4e50bfb2)
-* Release Dec 03, 2016
-
-* [#3638](https://github.com/moment/moment/pull/3638) [misc] TS: Make typescript definitions work with 1.x
-* [#3628](https://github.com/moment/moment/pull/3628) [misc] Adds "sign CLA" link to `CONTRIBUTING.md`
-* [#3640](https://github.com/moment/moment/pull/3640) [misc] Fix locale issues
-
-### 2.17.0 [Also available here](https://gist.github.com/ichernev/ed58f76fb95205eeac653d719972b90c)
-* Release Nov 22, 2016
-
-* [#3435](https://github.com/moment/moment/pull/3435) [new locale] yo: Yoruba (Nigeria) locale
-* [#3595](https://github.com/moment/moment/pull/3595) [bugfix] Fix accidental reference to global "value" variable
-* [#3506](https://github.com/moment/moment/pull/3506) [bugfix] Fix invalid moments returning valid dates to method calls
-* [#3563](https://github.com/moment/moment/pull/3563) [locale] ca: Change future relative time
-* [#3504](https://github.com/moment/moment/pull/3504) [tests] Fixes [#3463](https://github.com/moment/moment/issues/3463), parseZone not handling Z correctly (tests only)
-* [#3591](https://github.com/moment/moment/pull/3591) [misc] typescript: update typescript to 2.0.8, add strictNullChecks=true
-* [#3597](https://github.com/moment/moment/pull/3597) [misc] Fixed capitalization in nuget spec
-
-### 2.16.0 [See full changelog](https://gist.github.com/ichernev/17bffc1005a032cb1a8ac4c1558b4994)
-* Release Nov 9, 2016
-
-## Features
-* [#3530](https://github.com/moment/moment/pull/3530) [feature] Check whether input is date before checking if format is array
-* [#3515](https://github.com/moment/moment/pull/3515) [feature] Fix [#2300](https://github.com/moment/moment/issues/2300): Default to current week.
-
-## Bugfixes
-* [#3546](https://github.com/moment/moment/pull/3546) [bugfix] Implement lazy-loading of child locales with missing prents
-* [#3523](https://github.com/moment/moment/pull/3523) [bugfix] parseZone should handle UTC
-* [#3502](https://github.com/moment/moment/pull/3502) [bugfix] Fix [#3500](https://github.com/moment/moment/issues/3500): ISO 8601 parsing should match the full string, not the beginning of the string.
-* [#3581](https://github.com/moment/moment/pull/3581) [bugfix] Fix parseZone, redo [#3504](https://github.com/moment/moment/issues/3504), fix [#3463](https://github.com/moment/moment/issues/3463)
-
-## New Locales
-* [#3416](https://github.com/moment/moment/pull/3416) [new locale] nl-be: Dutch (Belgium) locale
-* [#3393](https://github.com/moment/moment/pull/3393) [new locale] ar-dz: Arabic (Algeria) locale
-* [#3342](https://github.com/moment/moment/pull/3342) [new locale] tet: Tetun Dili (East Timor) locale
-
-And more locale, build and typescript improvements
-
-### 2.15.2
-* Release Oct 23, 2016
-* [#3525](https://github.com/moment/moment/pull/3525) Speedup month standalone/format regexes **(IMPORTANT)**
-* [#3466](https://github.com/moment/moment/pull/3466) Fix typo of Javanese
-
-### 2.15.1
-* Release Sept 20, 2016
-* [#3438](https://github.com/moment/moment/pull/3438) Fix locale autoload, revert [#3344](https://github.com/moment/moment/pull/3344)
-
-### 2.15.0 [See full changelog](https://gist.github.com/ichernev/10e1c5bf647545c72ca30e9628a09ed3)
-- Release Sept 12, 2016
-
-## New Locales
-* [#3255](https://github.com/moment/moment/pull/3255) [new locale] mi: Maori language
-* [#3267](https://github.com/moment/moment/pull/3267) [new locale] ar-ly: Arabic (Libya) locale
-* [#3333](https://github.com/moment/moment/pull/3333) [new locale] zh-hk: Chinese (Hong Kong) locale
-
-## Bugfixes
-* [#3276](https://github.com/moment/moment/pull/3276) [bugfix] duration: parser: Support ms durations in .NET syntax
-* [#3312](https://github.com/moment/moment/pull/3312) [bugfix] locales: Enable locale-data getters without moment (fixes [#3284](https://github.com/moment/moment/issues/3284))
-* [#3381](https://github.com/moment/moment/pull/3381) [bugfix] parsing: Fix parseZone without timezone in string, fixes [#3083](https://github.com/moment/moment/issues/3083)
-* [#3383](https://github.com/moment/moment/pull/3383) [bugfix] toJSON: Fix isValid so that toJSON works after a moment is frozen
-* [#3427](https://github.com/moment/moment/pull/3427) [bugfix] ie8: Fix IE8 (regression in 2.14.x)
-
-## Packaging
-* [#3299](https://github.com/moment/moment/pull/3299) [pkg] npm: Do not include .npmignore in npm package
-* [#3273](https://github.com/moment/moment/pull/3273) [pkg] jspm: Include moment.d.ts file in package
-* [#3344](https://github.com/moment/moment/pull/3344) [pkg] exports: use module.require for nodejs
-
-Also some locale and typescript improvements
-
-### 2.14.1
-- Release July 20, 2016
-* [#3280](https://github.com/moment/moment/pull/3280) Fix typescript definitions
-
-
-### 2.14.0 [See full changelog](https://gist.github.com/ichernev/812e79ac36a7829a22598fe964bfc18a)
-
-- Release July 20, 2016
-
-## New Features
-* [#3233](https://github.com/moment/moment/pull/3233) Introduce month.isFormat for format/standalone discovery
-* [#2848](https://github.com/moment/moment/pull/2848) Allow user to get/set the rounding method used when calculating relative time
-* [#3112](https://github.com/moment/moment/pull/3112) optimize configFromStringAndFormat
-* [#3147](https://github.com/moment/moment/pull/3147) Call calendar format function with moment context
-* [#3160](https://github.com/moment/moment/pull/3160) deprecate isDSTShifted
-* [#3175](https://github.com/moment/moment/pull/3175) make moment calendar extensible with ad-hoc options
-* [#3191](https://github.com/moment/moment/pull/3191) toDate returns a copy of the internal date object
-* [#3192](https://github.com/moment/moment/pull/3192) Adding support for rollup import.
-* [#3238](https://github.com/moment/moment/pull/3238) Handle empty object and empty array for creation as now
-* [#3082](https://github.com/moment/moment/pull/3082) Use relative AMD moment dependency
-
-## Bugfixes
-* [#3241](https://github.com/moment/moment/pull/3241) Escape all 24 mixed pieces, not only first 12 in computeMonthsParse
-* [#3008](https://github.com/moment/moment/pull/3008) Object setter orders sets based on size of unit
-* [#3177](https://github.com/moment/moment/pull/3177) Bug Fix [#2704](https://github.com/moment/moment/pull/2704) - isoWeekday(String) inconsistent with isoWeekday(Number)
-* [#3230](https://github.com/moment/moment/pull/3230) fix passing date with format string to ignore format string
-* [#3232](https://github.com/moment/moment/pull/3232) Fix negative 0 in certain diff cases
-* [#3235](https://github.com/moment/moment/pull/3235) Use proper locale inheritance for the base locale, fixes [#3137](https://github.com/moment/moment/pull/3137)
-
-Plus es-do locale and locale bugfixes
-
-### 2.13.0 [See full changelog](https://gist.github.com/ichernev/0132fcf5b61f7fc140b0bb0090480d49)
-- Release April 18, 2016
-
-## Enhancements:
-* [#2982](https://github.com/moment/moment/pull/2982) Add 'date' as alias to 'day' for startOf() and endOf().
-* [#2955](https://github.com/moment/moment/pull/2955) Add parsing negative components in durations when ISO 8601
-* [#2991](https://github.com/moment/moment/pull/2991) isBetween support for both open and closed intervals
-* [#3105](https://github.com/moment/moment/pull/3105) Add localeSorted argument to weekday listers
-* [#3102](https://github.com/moment/moment/pull/3102) Add k and kk formatting tokens
-
-## Bugfixes
-* [#3109](https://github.com/moment/moment/pull/3109) Fix [#1756](https://github.com/moment/moment/issues/1756) Resolved thread-safe issue on server side.
-* [#3078](https://github.com/moment/moment/pull/3078) Fix parsing for months/weekdays with weird characters
-* [#3098](https://github.com/moment/moment/pull/3098) Use Z suffix when in UTC mode ([#3020](https://github.com/moment/moment/issues/3020))
-* [#2995](https://github.com/moment/moment/pull/2995) Fix floating point rounding errors in durations
-* [#3059](https://github.com/moment/moment/pull/3059) fix bug where diff returns -0 in month-related diffs
-* [#3045](https://github.com/moment/moment/pull/3045) Fix mistaking any input for 'a' token
-* [#2877](https://github.com/moment/moment/pull/2877) Use explicit .valueOf() calls instead of coercion
-* [#3036](https://github.com/moment/moment/pull/3036) Year setter should keep time when DST changes
-
-Plus 3 new locales and locale fixes.
-
-### 2.12.0 [See full changelog](https://gist.github.com/ichernev/6e5bfdf8d6522fc4ac73)
-
-- Release March 7, 2016
-
-## Enhancements:
-* [#2932](https://github.com/moment/moment/pull/2932) List loaded locales
-* [#2818](https://github.com/moment/moment/pull/2818) Parse ISO-8061 duration containing both day and week values
-* [#2774](https://github.com/moment/moment/pull/2774) Implement locale inheritance and locale updating
-
-## Bugfixes:
-* [#2970](https://github.com/moment/moment/pull/2970) change add subtract to handle decimal values by rounding
-* [#2887](https://github.com/moment/moment/pull/2887) Fix toJSON casting of invalid moment
-* [#2897](https://github.com/moment/moment/pull/2897) parse string arguments for month() correctly, closes #2884
-* [#2946](https://github.com/moment/moment/pull/2946) Fix usage suggestions for min and max
-
-## New locales:
-* [#2917](https://github.com/moment/moment/pull/2917) Locale Punjabi(Gurmukhi) India format conversion
-
-And more
-
-### 2.11.2 (Fix ReDoS attack vector)
-
-- Release February 7, 2016
-
-* [#2939](https://github.com/moment/moment/pull/2939) use full-string match to speed up aspnet regex match
-
-### 2.11.1 [See full changelog](https://gist.github.com/ichernev/8ec3ee25b749b4cff3c2)
-
-- Release January 9, 2016
-
-## Bugfixes:
-* [#2881](https://github.com/moment/moment/pull/2881) Revert "Merge pull request #2746 from mbad0la:develop" Sep->Sept
-* [#2868](https://github.com/moment/moment/pull/2868) Add format and parse token Y, so it actually works
-* [#2865](https://github.com/moment/moment/pull/2865) Use typeof checks for undefined for global variables
-* [#2858](https://github.com/moment/moment/pull/2858) Fix Date mocking regression introduced in 2.11.0
-* [#2864](https://github.com/moment/moment/pull/2864) Include changelog in npm release
-* [#2830](https://github.com/moment/moment/pull/2830) dep: add grunt-cli
-* [#2869](https://github.com/moment/moment/pull/2869) Fix months parsing for some locales
-
-### 2.11.0 [See full changelog](https://gist.github.com/ichernev/6594bc29719dde6b2f66)
-
-- Release January 4, 2016
-
-* [#2624](https://github.com/moment/moment/pull/2624) Proper handling of invalid moments
-* [#2634](https://github.com/moment/moment/pull/2634) Fix strict month parsing issue in cs,ru,sk
-* [#2735](https://github.com/moment/moment/pull/2735) Reset the locale back to 'en' after defining all locales in min/locales.js
-* [#2702](https://github.com/moment/moment/pull/2702) Week rework
-* [#2746](https://github.com/moment/moment/pull/2746) Changed September Abbreviation to "Sept" in locale-specific english
-  files and default locale file
-* [#2646](https://github.com/moment/moment/pull/2646) Fix [#2645](https://github.com/moment/moment/pull/2645) - invalid dates pre-1970
-
-* [#2641](https://github.com/moment/moment/pull/2641) Implement basic format and comma as ms separator in ISO 8601
-* [#2665](https://github.com/moment/moment/pull/2665) Implement stricter weekday parsing
-* [#2700](https://github.com/moment/moment/pull/2700) Add [Hh]mm and [Hh]mmss formatting tokens, so you can parse 123 with
-  hmm for example
-* [#2565](https://github.com/moment/moment/pull/2565) [#2835](https://github.com/moment/moment/pull/2835) Expose arguments used for moment creation with creationData
-  (fix [#2443](https://github.com/moment/moment/pull/2443))
-* [#2648](https://github.com/moment/moment/pull/2648) fix issue [#2640](https://github.com/moment/moment/pull/2640): support instanceof operator
-* [#2709](https://github.com/moment/moment/pull/2709) Add isSameOrAfter and isSameOrBefore comparison methods
-* [#2721](https://github.com/moment/moment/pull/2721) Fix moment creation from object with strings values
-* [#2740](https://github.com/moment/moment/pull/2740) Enable 'd hh:mm:ss.sss' format for durations
-* [#2766](https://github.com/moment/moment/pull/2766) [#2833](https://github.com/moment/moment/pull/2833) Alternate Clock Source Support
-
-### 2.10.6
-
-- Release July 28, 2015
-
-[#2515](https://github.com/moment/moment/pull/2515) Fix regression introduced
-in `2.10.5` related to `moment.ISO_8601` parsing.
-
-### 2.10.5 [See full changelog](https://gist.github.com/ichernev/6ec13ac7efc396da44b2)
-
-- Release July 26, 2015
-
-Important changes:
-* [#2357](https://github.com/moment/moment/pull/2357) Improve unit bubbling for ISO dates
-  this fixes day to year conversions to work around end-of-year (~365 days). As
-  a side effect 365 days is 11 months and 30 days, and 366 days is one year.
-* [#2438](https://github.com/moment/moment/pull/2438) Fix inconsistent moment.min and moment.max results
-  Return invalid result if any of the inputs is invalid
-* [#2494](https://github.com/moment/moment/pull/2494) Fix two digit year parsing with YYYY format
-  This brings the benefits of YY to YYYY
-* [#2368](https://github.com/moment/moment/pull/2368) perf: use faster form of copying dates, across the board improvement
-
-
-### 2.10.3 [See full changelog](https://gist.github.com/ichernev/f264b9bed5b00f8b1b7f)
-
-- Release May 13, 2015
-
-* add `moment.fn.to` and `moment.fn.toNow` (similar to `from` and `fromNow`)
-* new locales (Sinhalese (si), Montenegrin (me), Javanese (ja))
-* performance improvements
-
-### 2.10.2
-
-- Release April 9, 2015
-
-* fixed moment-with-locales in browser env caused by esperanto change
-
-### 2.10.1
-
-* regression: Add moment.duration.fn back
-
-### 2.10.0
-
-Ported code to es6 modules.
-
-### 2.9.0 [See full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7)
-
-- Release January 8, 2015
-
-languages:
-* [2104](https://github.com/moment/moment/issues/2104) Frisian (fy) language file with unit test
-* [2097](https://github.com/moment/moment/issues/2097) add ar-tn locale
-
-deprecations:
-* [2074](https://github.com/moment/moment/issues/2074) Implement `moment.fn.utcOffset`, deprecate `moment.fn.zone`
-
-features:
-* [2088](https://github.com/moment/moment/issues/2088) add moment.fn.isBetween
-* [2054](https://github.com/moment/moment/issues/2054) Call updateOffset when creating moment (needed for default timezone in
-  moment-timezone)
-* [1893](https://github.com/moment/moment/issues/1893) Add moment.isDate method
-* [1825](https://github.com/moment/moment/issues/1825) Implement toJSON function on Duration
-* [1809](https://github.com/moment/moment/issues/1809) Allowing moment.set() to accept a hash of units
-* [2128](https://github.com/moment/moment/issues/2128) Add firstDayOfWeek, firstDayOfYear locale getters
-* [2131](https://github.com/moment/moment/issues/2131) Add quarter diff support
-
-Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/0c9a9b49951111a27ce7)
-
-### 2.8.4 [See full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996)
-
-- Release November 19, 2014
-
-Features:
-
-* [#2000](https://github.com/moment/moment/issues/2000) Add LTS localised format that includes seconds
-* [#1960](https://github.com/moment/moment/issues/1960) added formatToken 'x' for unix offset in milliseconds #1938
-* [#1965](https://github.com/moment/moment/issues/1965) Support 24:00:00.000 to mean next day, at midnight.
-* [#2002](https://github.com/moment/moment/issues/2002) Accept 'date' key when creating moment with object
-* [#2009](https://github.com/moment/moment/issues/2009) Use native toISOString when we can
-
-Some bugfixes and language improvements -- [full changelog](https://gist.github.com/ichernev/a4fcb0a46d74e4b9b996)
-
-### 2.8.3
-
-- Release September 5, 2014
-
-Bugfixes:
-
-* [#1801](https://github.com/moment/moment/issues/1801) proper pluralization for Arabic
-* [#1833](https://github.com/moment/moment/issues/1833) improve spm integration
-* [#1871](https://github.com/moment/moment/issues/1871) fix zone bug caused by Firefox 24
-* [#1882](https://github.com/moment/moment/issues/1882) Use hh:mm in Czech
-* [#1883](https://github.com/moment/moment/issues/1883) Fix 2.8.0 regression in duration as conversions
-* [#1890](https://github.com/moment/moment/issues/1890) Faster travis builds
-* [#1892](https://github.com/moment/moment/issues/1892) Faster isBefore/After/Same
-* [#1848](https://github.com/moment/moment/issues/1848) Fix flaky month diffs
-* [#1895](https://github.com/moment/moment/issues/1895) Fix 2.8.0 regression in moment.utc with format array
-* [#1896](https://github.com/moment/moment/issues/1896) Support setting invalid instance locale (noop)
-* [#1897](https://github.com/moment/moment/issues/1897) Support moment([str]) in addition to moment([int])
-
-### 2.8.2
-
-- Release August 22, 2014
-
-Minor bugfixes:
-
-* [#1874](https://github.com/moment/moment/issues/1874) use `Object.prototype.hasOwnProperty`
-  instead of `obj.hasOwnProperty` (ie8 bug)
-* [#1873](https://github.com/moment/moment/issues/1873) add `duration#toString()`
-* [#1859](https://github.com/moment/moment/issues/1859) better month/weekday names in norwegian
-* [#1812](https://github.com/moment/moment/issues/1812) meridiem parsing for greek
-* [#1804](https://github.com/moment/moment/issues/1804) spanish del -> de
-* [#1800](https://github.com/moment/moment/issues/1800) korean LT improvement
-
-### 2.8.1
-
-- Release August 1, 2014
-
-* bugfix [#1813](https://github.com/moment/moment/issues/1813): fix moment().lang([key]) incompatibility
-
-### 2.8.0 [See changelog](https://gist.github.com/ichernev/ac3899324a5fa6c8c9b4)
-
-- Release July 31, 2014
-
-* incompatible changes
-    * [#1761](https://github.com/moment/moment/issues/1761): moments created without a language are no longer following the global language, in case it changes. Only newly created moments take the global language by default. In case you're affected by this, wait, comment on [#1797](https://github.com/moment/moment/issues/1797) and wait for a proper reimplementation
-    * [#1642](https://github.com/moment/moment/issues/1642): 45 days is no longer "a month" according to humanize, cutoffs for month, and year have changed. Hopefully your code does not depend on a particular answer from humanize (which it shouldn't anyway)
-    * [#1784](https://github.com/moment/moment/issues/1784): if you use the human readable English datetime format in a weird way (like storing them in a database) that would break when the format changes you're at risk.
-
-* deprecations (old behavior will be dropped in 3.0)
-    * [#1761](https://github.com/moment/moment/issues/1761) `lang` is renamed to `locale`, `langData` -> `localeData`. Also there is now `defineLocale` that should be used when creating new locales
-    * [#1763](https://github.com/moment/moment/issues/1763) `add(unit, value)` and `subtract(unit, value)` are now deprecated. Use `add(value, unit)` and `subtract(value, unit)` instead.
-    * [#1759](https://github.com/moment/moment/issues/1759) rename `duration.toIsoString` to `duration.toISOString`. The js standard library and moment's `toISOString` follow that convention.
-
-* new locales
-    * [#1789](https://github.com/moment/moment/issues/1789) Tibetan (bo)
-    * [#1786](https://github.com/moment/moment/issues/1786) Africaans (af)
-    * [#1778](https://github.com/moment/moment/issues/1778) Burmese (my)
-    * [#1727](https://github.com/moment/moment/issues/1727) Belarusian (be)
-
-* bugfixes, locale bugfixes, performance improvements, features
-
-### 2.7.0 [See changelog](https://gist.github.com/ichernev/b0a3d456d5a84c9901d7)
-
-- Release June 12, 2014
-
-* new languages
-
-  * [#1678](https://github.com/moment/moment/issues/1678) Bengali (bn)
-  * [#1628](https://github.com/moment/moment/issues/1628) Azerbaijani (az)
-  * [#1633](https://github.com/moment/moment/issues/1633) Arabic, Saudi Arabia (ar-sa)
-  * [#1648](https://github.com/moment/moment/issues/1648) Austrian German (de-at)
-
-* features
-
-  * [#1663](https://github.com/moment/moment/issues/1663) configurable relative time thresholds
-  * [#1554](https://github.com/moment/moment/issues/1554) support anchor time in moment.calendar
-  * [#1693](https://github.com/moment/moment/issues/1693) support moment.ISO_8601 as parsing format
-  * [#1637](https://github.com/moment/moment/issues/1637) add moment.min and moment.max and deprecate min/max instance methods
-  * [#1704](https://github.com/moment/moment/issues/1704) support string value in add/subtract
-  * [#1647](https://github.com/moment/moment/issues/1647) add spm support (package manager)
-
-* bugfixes
-
-### 2.6.0 [See changelog](https://gist.github.com/ichernev/10544682)
-
-- Release April 12 , 2014
-
-* languages
-  * [#1529](https://github.com/moment/moment/issues/1529) Serbian-Cyrillic (sr-cyr)
-  * [#1544](https://github.com/moment/moment/issues/1544), [#1546](https://github.com/moment/moment/issues/1546) Khmer Cambodia (km)
-
-* features
-    * [#1419](https://github.com/moment/moment/issues/1419), [#1468](https://github.com/moment/moment/issues/1468), [#1467](https://github.com/moment/moment/issues/1467), [#1546](https://github.com/moment/moment/issues/1546) better handling of timezone-d moments around DST
-    * [#1462](https://github.com/moment/moment/issues/1462) add weeksInYear and isoWeeksInYear
-    * [#1475](https://github.com/moment/moment/issues/1475) support ordinal parsing
-    * [#1499](https://github.com/moment/moment/issues/1499) composer support
-    * [#1577](https://github.com/moment/moment/issues/1577), [#1604](https://github.com/moment/moment/issues/1604) put Date parsing in moment.createFromInputFallback so it can be properly deprecated and controlled in the future
-    * [#1545](https://github.com/moment/moment/issues/1545) extract two-digit year parsing in moment.parseTwoDigitYear, so it can be overwritten
-    * [#1590](https://github.com/moment/moment/issues/1590) (see [#1574](https://github.com/moment/moment/issues/1574)) set AMD global before module definition to better support non AMD module dependencies used in AMD environment
-    * [#1589](https://github.com/moment/moment/issues/1589) remove global in Node.JS environment (was not working before, nobody complained, was scheduled for removal anyway)
-    * [#1586](https://github.com/moment/moment/issues/1586) support quarter setting and parsing
-
-* 18 bugs fixed
-
-### 2.5.1
-
-- Release January 22, 2014
-
-* languages
-  * [#1392](https://github.com/moment/moment/issues/1392) Armenian (hy-am)
-
-* bugfixes
-  * [#1429](https://github.com/moment/moment/issues/1429) fixes [#1423](https://github.com/moment/moment/issues/1423) weird chrome-32 bug with js object creation
-  * [#1421](https://github.com/moment/moment/issues/1421) remove html entities from Welsh
-  * [#1418](https://github.com/moment/moment/issues/1418) fixes [#1401](https://github.com/moment/moment/issues/1401) improved non-padded tokens in strict matching
-  * [#1417](https://github.com/moment/moment/issues/1417) fixes [#1404](https://github.com/moment/moment/issues/1404) handle buggy moment object created by property cloning
-  * [#1398](https://github.com/moment/moment/issues/1398) fixes [#1397](https://github.com/moment/moment/issues/1397) fix Arabic-like week number parsing
-  * [#1396](https://github.com/moment/moment/issues/1396) add leftZeroFill(4) to GGGG and gggg formats
-  * [#1373](https://github.com/moment/moment/issues/1373) use lowercase for months and days in Catalan
-
-* testing
-  * [#1374](https://github.com/moment/moment/issues/1374) run tests on multiple browser/os combos via SauceLabs and Travis
-
-### 2.5.0 [See changelog](https://gist.github.com/ichernev/8104451)
-
-- Release Dec 24, 2013
-
-* New languages
-  * Luxemburish (lb) [1247](https://github.com/moment/moment/issues/1247)
-  * Serbian (rs) [1319](https://github.com/moment/moment/issues/1319)
-  * Tamil (ta) [1324](https://github.com/moment/moment/issues/1324)
-  * Macedonian (mk) [1337](https://github.com/moment/moment/issues/1337)
-
-* Features
-  * [1311](https://github.com/moment/moment/issues/1311) Add quarter getter and format token `Q`
-  * [1303](https://github.com/moment/moment/issues/1303) strict parsing now respects number of digits per token (fix [1196](https://github.com/moment/moment/issues/1196))
-  * 0d30bb7 add jspm support
-  * [1347](https://github.com/moment/moment/issues/1347) improve zone parsing
-  * [1362](https://github.com/moment/moment/issues/1362) support merideam parsing in Korean
-
-* 22 bugfixes
-
-### 2.4.0
-
-- Release Oct 27, 2013
-
-* **Deprecate** globally exported moment, will be removed in next major
-* New languages
-  * Farose (fo) [#1206](https://github.com/moment/moment/issues/1206)
-  * Tagalog/Filipino (tl-ph) [#1197](https://github.com/moment/moment/issues/1197)
-  * Welsh (cy) [#1215](https://github.com/moment/moment/issues/1215)
-* Bugfixes
-  * properly handle Z at the end of iso RegExp [#1187](https://github.com/moment/moment/issues/1187)
-  * chinese meridian time improvements [#1076](https://github.com/moment/moment/issues/1076)
-  * fix language tests [#1177](https://github.com/moment/moment/issues/1177)
-  * remove some failing tests (that should have never existed :))
-    [#1185](https://github.com/moment/moment/issues/1185)
-    [#1183](https://github.com/moment/moment/issues/1183)
-  * handle russian noun cases in weird cases [#1195](https://github.com/moment/moment/issues/1195)
-
-### 2.3.1
-
-- Release Oct 9, 2013
-
-Removed a trailing comma [1169] and fixed a bug with `months`, `weekdays` getters [#1171](https://github.com/moment/moment/issues/1171).
-
-### 2.3.0 [See changelog](https://gist.github.com/ichernev/6864354)
-
-- Release Oct 7, 2013
-
-Changed isValid, added strict parsing.
-Week tokens parsing.
-
-### 2.2.1
-
-- Release Sep 12, 2013
-
-Fixed bug in string prototype test.
-Updated authors and contributors.
-
-### 2.2.0 [See changelog](https://gist.github.com/ichernev/00f837a9baf46a3565e4)
-
-- Release  Sep 11, 2013
-
-Added bower support.
-
-Language files now use UMD.
-
-Creating moment defaults to current date/month/year.
-
-Added a bundle of moment and all language files.
-
-### 2.1.0 [See changelog](https://gist.github.com/timrwood/b8c2d90d528eddb53ab5)
-
-- Release Jul 8, 2013
-
-Added better week support.
-
-Added ability to set offset with `moment#zone`.
-
-Added ability to set month or weekday from a string.
-
-Added `moment#min` and `moment#max`
-
-### 2.0.0 [See changelog](https://gist.github.com/timrwood/e72f2eef320ed9e37c51)
-
-- Release Feb 9, 2013
-
-Added short form localized tokens.
-
-Added ability to define language a string should be parsed in.
-
-Added support for reversed add/subtract arguments.
-
-Added support for `endOf('week')` and `startOf('week')`.
-
-Fixed the logic for `moment#diff(Moment, 'months')` and `moment#diff(Moment, 'years')`
-
-`moment#diff` now floors instead of rounds.
-
-Normalized `moment#toString`.
-
-Added `isSame`, `isAfter`, and `isBefore` methods.
-
-Added better week support.
-
-Added `moment#toJSON`
-
-Bugfix: Fixed parsing of first century dates
-
-Bugfix: Parsing 10Sep2001 should work as expected
-
-Bugfix: Fixed weirdness with `moment.utc()` parsing.
-
-Changed language ordinal method to return the number + ordinal instead of just the ordinal.
-
-Changed two digit year parsing cutoff to match strptime.
-
-Removed `moment#sod` and `moment#eod` in favor of `moment#startOf` and `moment#endOf`.
-
-Removed `moment.humanizeDuration()` in favor of `moment.duration().humanize()`.
-
-Removed the lang data objects from the top level namespace.
-
-Duplicate `Date` passed to `moment()` instead of referencing it.
-
-### 1.7.2 [See discussion](https://github.com/timrwood/moment/issues/456)
-
-- Release Oct 2, 2012
-
-Bugfixes
-
-### 1.7.1 [See discussion](https://github.com/timrwood/moment/issues/384)
-
-- Release Oct 1, 2012
-
-Bugfixes
-
-### 1.7.0 [See discussion](https://github.com/timrwood/moment/issues/288)
-
-- Release Jul 26, 2012
-
-Added `moment.fn.endOf()` and `moment.fn.startOf()`.
-
-Added validation via `moment.fn.isValid()`.
-
-Made formatting method 3x faster. http://jsperf.com/momentjs-cached-format-functions
-
-Add support for month/weekday callbacks in `moment.fn.format()`
-
-Added instance specific languages.
-
-Added two letter weekday abbreviations with the formatting token `dd`.
-
-Various language updates.
-
-Various bugfixes.
-
-### 1.6.0 [See discussion](https://github.com/timrwood/moment/pull/268)
-
-- Release Apr 26, 2012
-
-Added Durations.
-
-Revamped parser to support parsing non-separated strings (YYYYMMDD vs YYYY-MM-DD).
-
-Added support for millisecond parsing and formatting tokens (S SS SSS)
-
-Added a getter for `moment.lang()`
-
-Various bugfixes.
-
-There are a few things deprecated in the 1.6.0 release.
-
-1. The format tokens `z` and `zz` (timezone abbreviations like EST CST MST etc) will no longer be supported. Due to inconsistent browser support, we are unable to consistently produce this value. See [this issue](https://github.com/timrwood/moment/issues/162) for more background.
-
-2. The method `moment.fn.native` is deprecated in favor of `moment.fn.toDate`. There continue to be issues with Google Closure Compiler throwing errors when using `native`, even in valid instances.
-
-3. The way to customize am/pm strings is being changed. This would only affect you if you created a custom language file. For more information, see [this issue](https://github.com/timrwood/moment/pull/222).
-
-### 1.5.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=10&page=1&state=closed)
-
-- Release Mar 20, 2012
-
-Added UTC mode.
-
-Added automatic ISO8601 parsing.
-
-Various bugfixes.
-
-### 1.4.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=8&state=closed)
-
-- Release Feb 4, 2012
-
-Added `moment.fn.toDate` as a replacement for `moment.fn.native`.
-
-Added `moment.fn.sod` and `moment.fn.eod` to get the start and end of day.
-
-Various bugfixes.
-
-### 1.3.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=7&state=closed)
-
-- Release Jan 5, 2012
-
-Added support for parsing month names in the current language.
-
-Added escape blocks for parsing tokens.
-
-Added `moment.fn.calendar` to format strings like 'Today 2:30 PM', 'Tomorrow 1:25 AM', and 'Last Sunday 4:30 AM'.
-
-Added `moment.fn.day` as a setter.
-
-Various bugfixes
-
-### 1.2.0 [See milestone](https://github.com/timrwood/moment/issues?milestone=4&state=closed)
-
-- Release Dec 7, 2011
-
-Added timezones to parser and formatter.
-
-Added `moment.fn.isDST`.
-
-Added `moment.fn.zone` to get the timezone offset in minutes.
-
-### 1.1.2 [See milestone](https://github.com/timrwood/moment/issues?milestone=6&state=closed)
-
-- Release Nov 18, 2011
-
-Various bugfixes
-
-### 1.1.1 [See milestone](https://github.com/timrwood/moment/issues?milestone=5&state=closed)
-
-- Release Nov 12, 2011
-
-Added time specific diffs (months, days, hours, etc)
-
-### 1.1.0
-
-- Release Oct 28, 2011
-
-Added `moment.fn.format` localized masks. 'L LL LLL LLLL' [issue 29](https://github.com/timrwood/moment/pull/29)
-
-Fixed [issue 31](https://github.com/timrwood/moment/pull/31).
-
-### 1.0.1
-
-- Release Oct 18, 2011
-
-Added `moment.version` to get the current version.
-
-Removed `window !== undefined` when checking if module exists to support browserify. [issue 25](https://github.com/timrwood/moment/pull/25)
-
-### 1.0.0
-
-- Release
-
-Added convenience methods for getting and setting date parts.
-
-Added better support for `moment.add()`.
-
-Added better lang support in NodeJS.
-
-Renamed library from underscore.date to Moment.js
-
-### 0.6.1
-
-- Release Oct 12, 2011
-
-Added Portuguese, Italian, and French language support
-
-### 0.6.0
-
-- Release Sep 21, 2011
-
-Added _date.lang() support.
-Added support for passing multiple formats to try to parse a date. _date("07-10-1986", ["MM-DD-YYYY", "YYYY-MM-DD"]);
-Made parse from string and single format 25% faster.
-
-### 0.5.2
-
-- Release Jul 11, 2011
-
-Bugfix for [issue 8](https://github.com/timrwood/underscore.date/pull/8) and [issue 9](https://github.com/timrwood/underscore.date/pull/9).
-
-### 0.5.1
-
-- Release Jun 17, 2011
-
-Bugfix for [issue 5](https://github.com/timrwood/underscore.date/pull/5).
-
-### 0.5.0
-
-- Release Jun 13, 2011
-
-Dropped the redundant `_date.date()` in favor of `_date()`.
-Removed `_date.now()`, as it is a duplicate of `_date()` with no parameters.
-Removed `_date.isLeapYear(yearNumber)`. Use `_date([yearNumber]).isLeapYear()` instead.
-Exposed customization options through the `_date.relativeTime`, `_date.weekdays`, `_date.weekdaysShort`, `_date.months`, `_date.monthsShort`, and `_date.ordinal` variables instead of the `_date.customize()` function.
-
-### 0.4.1
-
-- Release May 9, 2011
-
-Added date input formats for input strings.
-
-### 0.4.0
-
-- Release May 9, 2011
-
-Added underscore.date to npm. Removed dependencies on underscore.
-
-### 0.3.2
-
-- Release Apr 9, 2011
-
-Added `'z'` and `'zz'` to `_.date().format()`. Cleaned up some redundant code to trim off some bytes.
-
-### 0.3.1
-
-- Release Mar 25, 2011
-
-Cleaned up the namespace. Moved all date manipulation and display functions to the _.date() object.
-
-### 0.3.0
-
-- Release Mar 25, 2011
-
-Switched to the Underscore methodology of not mucking with the native objects' prototypes.
-Made chaining possible.
-
-### 0.2.1
-
-- Release
-
-Changed date names to be a more pseudo standardized 'dddd, MMMM Do YYYY, h:mm:ss a'.
-Added `Date.prototype` functions `add`, `subtract`, `isdst`, and `isleapyear`.
-
-### 0.2.0
-
-- Release
-
-Changed function names to be more concise.
-Changed date format from php date format to custom format.
-
-### 0.1.0
-
-- Release
-
-Initial release
-
Index: ckend/node_modules/moment/LICENSE
===================================================================
--- backend/node_modules/moment/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-Copyright (c) JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/moment/README.md
===================================================================
--- backend/node_modules/moment/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-# [Moment.js](http://momentjs.com/)
-
-[![NPM version][npm-version-image]][npm-url]
-[![NPM downloads][npm-downloads-image]][npm-downloads-url]
-[![MIT License][license-image]][license-url]
-[![Build Status][travis-image]][travis-url]
-[![Coverage Status][coveralls-image]][coveralls-url]
-[![FOSSA Status][fossa-badge-image]][fossa-badge-url]
-[![SemVer compatibility][semver-image]][semver-url]
-
-A JavaScript date library for parsing, validating, manipulating, and formatting dates.
-
-## Project Status
-
-Moment.js is a legacy project, now in maintenance mode.  In most cases, you should choose a different library.
-
-For more details and recommendations, please see [Project Status](https://momentjs.com/docs/#/-project-status/) in the docs.
-
-*Thank you.*
-
-## Resources
-
-- [Documentation](https://momentjs.com/docs/)
-- [Changelog](CHANGELOG.md)
-- [Stack Overflow](https://stackoverflow.com/questions/tagged/momentjs)
-
-## License
-
-Moment.js is freely distributable under the terms of the [MIT license][license-url].
-
-[![FOSSA Status][fossa-large-image]][fossa-large-url]
-
-[license-image]: https://img.shields.io/badge/license-MIT-blue.svg?style=flat
-[license-url]: LICENSE
-
-[npm-url]: https://npmjs.org/package/moment
-[npm-version-image]: https://img.shields.io/npm/v/moment.svg?style=flat
-
-[npm-downloads-image]: https://img.shields.io/npm/dm/moment.svg?style=flat
-[npm-downloads-url]: https://npmcharts.com/compare/moment?minimal=true
-
-[travis-url]: https://travis-ci.org/moment/moment
-[travis-image]: https://img.shields.io/travis/moment/moment/develop.svg?style=flat
-
-[coveralls-image]: https://coveralls.io/repos/moment/moment/badge.svg?branch=develop
-[coveralls-url]: https://coveralls.io/r/moment/moment?branch=develop
-
-[fossa-badge-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=shield
-[fossa-badge-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_shield
-
-[fossa-large-image]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment.svg?type=large
-[fossa-large-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fmoment%2Fmoment?ref=badge_large
-
-[semver-image]: https://api.dependabot.com/badges/compatibility_score?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
-[semver-url]: https://dependabot.com/compatibility-score.html?dependency-name=moment&package-manager=npm_and_yarn&version-scheme=semver
Index: ckend/node_modules/moment/dist/locale/af.js
===================================================================
--- backend/node_modules/moment/dist/locale/af.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//! moment.js locale configuration
-//! locale : Afrikaans [af]
-//! author : Werner Mollentze : https://github.com/wernerm
-
-import moment from '../moment';
-
-export default moment.defineLocale('af', {
-    months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
-    weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
-        '_'
-    ),
-    weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
-    weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
-    meridiemParse: /vm|nm/i,
-    isPM: function (input) {
-        return /^nm$/i.test(input);
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'vm' : 'VM';
-        } else {
-            return isLower ? 'nm' : 'NM';
-        }
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Vandag om] LT',
-        nextDay: '[Môre om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[Gister om] LT',
-        lastWeek: '[Laas] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'oor %s',
-        past: '%s gelede',
-        s: "'n paar sekondes",
-        ss: '%d sekondes',
-        m: "'n minuut",
-        mm: '%d minute',
-        h: "'n uur",
-        hh: '%d ure',
-        d: "'n dag",
-        dd: '%d dae',
-        M: "'n maand",
-        MM: '%d maande',
-        y: "'n jaar",
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        ); // Thanks to Joris Röling : https://github.com/jjupiter
-    },
-    week: {
-        dow: 1, // Maandag is die eerste dag van die week.
-        doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-dz.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-dz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Algeria) [ar-dz]
-//! author : Amine Roukh: https://github.com/Amine27
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
-
-import moment from '../moment';
-
-var pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'جانفي',
-        'فيفري',
-        'مارس',
-        'أفريل',
-        'ماي',
-        'جوان',
-        'جويلية',
-        'أوت',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar-dz', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-kw.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-kw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Kuwait) [ar-kw]
-//! author : Nusret Parlak: https://github.com/nusretparlak
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-kw', {
-    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-ly.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-ly.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Libya) [ar-ly]
-//! author : Ali Hmer: https://github.com/kikoanis
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '1',
-        2: '2',
-        3: '3',
-        4: '4',
-        5: '5',
-        6: '6',
-        7: '7',
-        8: '8',
-        9: '9',
-        0: '0',
-    },
-    pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'يناير',
-        'فبراير',
-        'مارس',
-        'أبريل',
-        'مايو',
-        'يونيو',
-        'يوليو',
-        'أغسطس',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar-ly', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-ma.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-ma.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Morocco) [ar-ma]
-//! author : ElFadili Yassine : https://github.com/ElFadiliY
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-ma', {
-    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-ps.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-ps.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,112 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Palestine) [ar-ps]
-//! author : Majd Al-Shihabi : https://github.com/majdal
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    };
-
-export default moment.defineLocale('ar-ps', {
-    months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
-        '_'
-    ),
-    monthsShort:
-        'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .split('') // reversed since negative lookbehind not supported everywhere
-            .reverse()
-            .join('')
-            .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
-                return numberMap[match];
-            })
-            .split('')
-            .reverse()
-            .join('')
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-sa.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-sa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Saudi Arabia) [ar-sa]
-//! author : Suhail Alkowaileet : https://github.com/xsoh
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    };
-
-export default moment.defineLocale('ar-sa', {
-    months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar-tn.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar-tn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale  :  Arabic (Tunisia) [ar-tn]
-//! author : Nader Toukabri : https://github.com/naderio
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-tn', {
-    months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ar.js
===================================================================
--- backend/node_modules/moment/dist/locale/ar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,189 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic [ar]
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    },
-    pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'يناير',
-        'فبراير',
-        'مارس',
-        'أبريل',
-        'مايو',
-        'يونيو',
-        'يوليو',
-        'أغسطس',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/az.js
===================================================================
--- backend/node_modules/moment/dist/locale/az.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Azerbaijani [az]
-//! author : topchiyev : https://github.com/topchiyev
-
-import moment from '../moment';
-
-var suffixes = {
-    1: '-inci',
-    5: '-inci',
-    8: '-inci',
-    70: '-inci',
-    80: '-inci',
-    2: '-nci',
-    7: '-nci',
-    20: '-nci',
-    50: '-nci',
-    3: '-üncü',
-    4: '-üncü',
-    100: '-üncü',
-    6: '-ncı',
-    9: '-uncu',
-    10: '-uncu',
-    30: '-uncu',
-    60: '-ıncı',
-    90: '-ıncı',
-};
-
-export default moment.defineLocale('az', {
-    months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
-    weekdays:
-        'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
-            '_'
-        ),
-    weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
-    weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün saat] LT',
-        nextDay: '[sabah saat] LT',
-        nextWeek: '[gələn həftə] dddd [saat] LT',
-        lastDay: '[dünən] LT',
-        lastWeek: '[keçən həftə] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s sonra',
-        past: '%s əvvəl',
-        s: 'bir neçə saniyə',
-        ss: '%d saniyə',
-        m: 'bir dəqiqə',
-        mm: '%d dəqiqə',
-        h: 'bir saat',
-        hh: '%d saat',
-        d: 'bir gün',
-        dd: '%d gün',
-        M: 'bir ay',
-        MM: '%d ay',
-        y: 'bir il',
-        yy: '%d il',
-    },
-    meridiemParse: /gecə|səhər|gündüz|axşam/,
-    isPM: function (input) {
-        return /^(gündüz|axşam)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'gecə';
-        } else if (hour < 12) {
-            return 'səhər';
-        } else if (hour < 17) {
-            return 'gündüz';
-        } else {
-            return 'axşam';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
-    ordinal: function (number) {
-        if (number === 0) {
-            // special case for zero
-            return number + '-ıncı';
-        }
-        var a = number % 10,
-            b = (number % 100) - a,
-            c = number >= 100 ? 100 : null;
-        return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/be.js
===================================================================
--- backend/node_modules/moment/dist/locale/be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,142 +1,0 @@
-//! moment.js locale configuration
-//! locale : Belarusian [be]
-//! author : Dmitry Demidov : https://github.com/demidov91
-//! author: Praleska: http://praleska.pro/
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-        mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
-        hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
-        dd: 'дзень_дні_дзён',
-        MM: 'месяц_месяцы_месяцаў',
-        yy: 'год_гады_гадоў',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'хвіліна' : 'хвіліну';
-    } else if (key === 'h') {
-        return withoutSuffix ? 'гадзіна' : 'гадзіну';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-
-export default moment.defineLocale('be', {
-    months: {
-        format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
-            '_'
-        ),
-        standalone:
-            'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
-    weekdays: {
-        format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
-            '_'
-        ),
-        standalone:
-            'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
-                '_'
-            ),
-        isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
-    },
-    weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-    weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY г.',
-        LLL: 'D MMMM YYYY г., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY г., HH:mm',
-    },
-    calendar: {
-        sameDay: '[Сёння ў] LT',
-        nextDay: '[Заўтра ў] LT',
-        lastDay: '[Учора ў] LT',
-        nextWeek: function () {
-            return '[У] dddd [ў] LT';
-        },
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 5:
-                case 6:
-                    return '[У мінулую] dddd [ў] LT';
-                case 1:
-                case 2:
-                case 4:
-                    return '[У мінулы] dddd [ў] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'праз %s',
-        past: '%s таму',
-        s: 'некалькі секунд',
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: relativeTimeWithPlural,
-        hh: relativeTimeWithPlural,
-        d: 'дзень',
-        dd: relativeTimeWithPlural,
-        M: 'месяц',
-        MM: relativeTimeWithPlural,
-        y: 'год',
-        yy: relativeTimeWithPlural,
-    },
-    meridiemParse: /ночы|раніцы|дня|вечара/,
-    isPM: function (input) {
-        return /^(дня|вечара)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночы';
-        } else if (hour < 12) {
-            return 'раніцы';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечара';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-            case 'w':
-            case 'W':
-                return (number % 10 === 2 || number % 10 === 3) &&
-                    number % 100 !== 12 &&
-                    number % 100 !== 13
-                    ? number + '-і'
-                    : number + '-ы';
-            case 'D':
-                return number + '-га';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bg.js
===================================================================
--- backend/node_modules/moment/dist/locale/bg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bulgarian [bg]
-//! author : Krasen Borisov : https://github.com/kraz
-
-import moment from '../moment';
-
-export default moment.defineLocale('bg', {
-    months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
-        '_'
-    ),
-    monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
-    weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
-        '_'
-    ),
-    weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
-    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Днес в] LT',
-        nextDay: '[Утре в] LT',
-        nextWeek: 'dddd [в] LT',
-        lastDay: '[Вчера в] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 6:
-                    return '[Миналата] dddd [в] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[Миналия] dddd [в] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'след %s',
-        past: 'преди %s',
-        s: 'няколко секунди',
-        ss: '%d секунди',
-        m: 'минута',
-        mm: '%d минути',
-        h: 'час',
-        hh: '%d часа',
-        d: 'ден',
-        dd: '%d дена',
-        w: 'седмица',
-        ww: '%d седмици',
-        M: 'месец',
-        MM: '%d месеца',
-        y: 'година',
-        yy: '%d години',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-    ordinal: function (number) {
-        var lastDigit = number % 10,
-            last2Digits = number % 100;
-        if (number === 0) {
-            return number + '-ев';
-        } else if (last2Digits === 0) {
-            return number + '-ен';
-        } else if (last2Digits > 10 && last2Digits < 20) {
-            return number + '-ти';
-        } else if (lastDigit === 1) {
-            return number + '-ви';
-        } else if (lastDigit === 2) {
-            return number + '-ри';
-        } else if (lastDigit === 7 || lastDigit === 8) {
-            return number + '-ми';
-        } else {
-            return number + '-ти';
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bm.js
===================================================================
--- backend/node_modules/moment/dist/locale/bm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bambara [bm]
-//! author : Estelle Comment : https://github.com/estellecomment
-// Language contact person : Abdoufata Kane : https://github.com/abdoufata
-
-import moment from '../moment';
-
-export default moment.defineLocale('bm', {
-    months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
-        '_'
-    ),
-    monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
-    weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
-    weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
-    weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'MMMM [tile] D [san] YYYY',
-        LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-        LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Bi lɛrɛ] LT',
-        nextDay: '[Sini lɛrɛ] LT',
-        nextWeek: 'dddd [don lɛrɛ] LT',
-        lastDay: '[Kunu lɛrɛ] LT',
-        lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s kɔnɔ',
-        past: 'a bɛ %s bɔ',
-        s: 'sanga dama dama',
-        ss: 'sekondi %d',
-        m: 'miniti kelen',
-        mm: 'miniti %d',
-        h: 'lɛrɛ kelen',
-        hh: 'lɛrɛ %d',
-        d: 'tile kelen',
-        dd: 'tile %d',
-        M: 'kalo kelen',
-        MM: 'kalo %d',
-        y: 'san kelen',
-        yy: 'san %d',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bn-bd.js
===================================================================
--- backend/node_modules/moment/dist/locale/bn-bd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali (Bangladesh) [bn-bd]
-//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '১',
-        2: '২',
-        3: '৩',
-        4: '৪',
-        5: '৫',
-        6: '৬',
-        7: '৭',
-        8: '৮',
-        9: '৯',
-        0: '০',
-    },
-    numberMap = {
-        '১': '1',
-        '২': '2',
-        '৩': '3',
-        '৪': '4',
-        '৫': '5',
-        '৬': '6',
-        '৭': '7',
-        '৮': '8',
-        '৯': '9',
-        '০': '0',
-    };
-
-export default moment.defineLocale('bn-bd', {
-    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-        '_'
-    ),
-    monthsShort:
-        'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-            '_'
-        ),
-    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-        '_'
-    ),
-    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm সময়',
-        LTS: 'A h:mm:ss সময়',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm সময়',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-    },
-    calendar: {
-        sameDay: '[আজ] LT',
-        nextDay: '[আগামীকাল] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[গতকাল] LT',
-        lastWeek: '[গত] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s পরে',
-        past: '%s আগে',
-        s: 'কয়েক সেকেন্ড',
-        ss: '%d সেকেন্ড',
-        m: 'এক মিনিট',
-        mm: '%d মিনিট',
-        h: 'এক ঘন্টা',
-        hh: '%d ঘন্টা',
-        d: 'এক দিন',
-        dd: '%d দিন',
-        M: 'এক মাস',
-        MM: '%d মাস',
-        y: 'এক বছর',
-        yy: '%d বছর',
-    },
-    preparse: function (string) {
-        return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-
-    meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'রাত') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ভোর') {
-            return hour;
-        } else if (meridiem === 'সকাল') {
-            return hour;
-        } else if (meridiem === 'দুপুর') {
-            return hour >= 3 ? hour : hour + 12;
-        } else if (meridiem === 'বিকাল') {
-            return hour + 12;
-        } else if (meridiem === 'সন্ধ্যা') {
-            return hour + 12;
-        }
-    },
-
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'রাত';
-        } else if (hour < 6) {
-            return 'ভোর';
-        } else if (hour < 12) {
-            return 'সকাল';
-        } else if (hour < 15) {
-            return 'দুপুর';
-        } else if (hour < 18) {
-            return 'বিকাল';
-        } else if (hour < 20) {
-            return 'সন্ধ্যা';
-        } else {
-            return 'রাত';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bn.js
===================================================================
--- backend/node_modules/moment/dist/locale/bn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali [bn]
-//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '১',
-        2: '২',
-        3: '৩',
-        4: '৪',
-        5: '৫',
-        6: '৬',
-        7: '৭',
-        8: '৮',
-        9: '৯',
-        0: '০',
-    },
-    numberMap = {
-        '১': '1',
-        '২': '2',
-        '৩': '3',
-        '৪': '4',
-        '৫': '5',
-        '৬': '6',
-        '৭': '7',
-        '৮': '8',
-        '৯': '9',
-        '০': '0',
-    };
-
-export default moment.defineLocale('bn', {
-    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-        '_'
-    ),
-    monthsShort:
-        'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-            '_'
-        ),
-    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-        '_'
-    ),
-    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm সময়',
-        LTS: 'A h:mm:ss সময়',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm সময়',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-    },
-    calendar: {
-        sameDay: '[আজ] LT',
-        nextDay: '[আগামীকাল] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[গতকাল] LT',
-        lastWeek: '[গত] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s পরে',
-        past: '%s আগে',
-        s: 'কয়েক সেকেন্ড',
-        ss: '%d সেকেন্ড',
-        m: 'এক মিনিট',
-        mm: '%d মিনিট',
-        h: 'এক ঘন্টা',
-        hh: '%d ঘন্টা',
-        d: 'এক দিন',
-        dd: '%d দিন',
-        M: 'এক মাস',
-        MM: '%d মাস',
-        y: 'এক বছর',
-        yy: '%d বছর',
-    },
-    preparse: function (string) {
-        return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'রাত' && hour >= 4) ||
-            (meridiem === 'দুপুর' && hour < 5) ||
-            meridiem === 'বিকাল'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'রাত';
-        } else if (hour < 10) {
-            return 'সকাল';
-        } else if (hour < 17) {
-            return 'দুপুর';
-        } else if (hour < 20) {
-            return 'বিকাল';
-        } else {
-            return 'রাত';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bo.js
===================================================================
--- backend/node_modules/moment/dist/locale/bo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tibetan [bo]
-//! author : Thupten N. Chakrishar : https://github.com/vajradog
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '༡',
-        2: '༢',
-        3: '༣',
-        4: '༤',
-        5: '༥',
-        6: '༦',
-        7: '༧',
-        8: '༨',
-        9: '༩',
-        0: '༠',
-    },
-    numberMap = {
-        '༡': '1',
-        '༢': '2',
-        '༣': '3',
-        '༤': '4',
-        '༥': '5',
-        '༦': '6',
-        '༧': '7',
-        '༨': '8',
-        '༩': '9',
-        '༠': '0',
-    };
-
-export default moment.defineLocale('bo', {
-    months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
-            '_'
-        ),
-    monthsShortRegex: /^(ཟླ་\d{1,2})/,
-    monthsParseExact: true,
-    weekdays:
-        'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
-            '_'
-        ),
-    weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
-        '_'
-    ),
-    weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[དི་རིང] LT',
-        nextDay: '[སང་ཉིན] LT',
-        nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
-        lastDay: '[ཁ་སང] LT',
-        lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ལ་',
-        past: '%s སྔན་ལ',
-        s: 'ལམ་སང',
-        ss: '%d སྐར་ཆ།',
-        m: 'སྐར་མ་གཅིག',
-        mm: '%d སྐར་མ',
-        h: 'ཆུ་ཚོད་གཅིག',
-        hh: '%d ཆུ་ཚོད',
-        d: 'ཉིན་གཅིག',
-        dd: '%d ཉིན་',
-        M: 'ཟླ་བ་གཅིག',
-        MM: '%d ཟླ་བ',
-        y: 'ལོ་གཅིག',
-        yy: '%d ལོ',
-    },
-    preparse: function (string) {
-        return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'མཚན་མོ' && hour >= 4) ||
-            (meridiem === 'ཉིན་གུང' && hour < 5) ||
-            meridiem === 'དགོང་དག'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'མཚན་མོ';
-        } else if (hour < 10) {
-            return 'ཞོགས་ཀས';
-        } else if (hour < 17) {
-            return 'ཉིན་གུང';
-        } else if (hour < 20) {
-            return 'དགོང་དག';
-        } else {
-            return 'མཚན་མོ';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/br.js
===================================================================
--- backend/node_modules/moment/dist/locale/br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,168 +1,0 @@
-//! moment.js locale configuration
-//! locale : Breton [br]
-//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-import moment from '../moment';
-
-function relativeTimeWithMutation(number, withoutSuffix, key) {
-    var format = {
-        mm: 'munutenn',
-        MM: 'miz',
-        dd: 'devezh',
-    };
-    return number + ' ' + mutation(format[key], number);
-}
-function specialMutationForYears(number) {
-    switch (lastNumber(number)) {
-        case 1:
-        case 3:
-        case 4:
-        case 5:
-        case 9:
-            return number + ' bloaz';
-        default:
-            return number + ' vloaz';
-    }
-}
-function lastNumber(number) {
-    if (number > 9) {
-        return lastNumber(number % 10);
-    }
-    return number;
-}
-function mutation(text, number) {
-    if (number === 2) {
-        return softMutation(text);
-    }
-    return text;
-}
-function softMutation(text) {
-    var mutationTable = {
-        m: 'v',
-        b: 'v',
-        d: 'z',
-    };
-    if (mutationTable[text.charAt(0)] === undefined) {
-        return text;
-    }
-    return mutationTable[text.charAt(0)] + text.substring(1);
-}
-
-var monthsParse = [
-        /^gen/i,
-        /^c[ʼ\']hwe/i,
-        /^meu/i,
-        /^ebr/i,
-        /^mae/i,
-        /^(mez|eve)/i,
-        /^gou/i,
-        /^eos/i,
-        /^gwe/i,
-        /^her/i,
-        /^du/i,
-        /^ker/i,
-    ],
-    monthsRegex =
-        /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-    monthsStrictRegex =
-        /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
-    monthsShortStrictRegex =
-        /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-    fullWeekdaysParse = [
-        /^sul/i,
-        /^lun/i,
-        /^meurzh/i,
-        /^merc[ʼ\']her/i,
-        /^yaou/i,
-        /^gwener/i,
-        /^sadorn/i,
-    ],
-    shortWeekdaysParse = [
-        /^Sul/i,
-        /^Lun/i,
-        /^Meu/i,
-        /^Mer/i,
-        /^Yao/i,
-        /^Gwe/i,
-        /^Sad/i,
-    ],
-    minWeekdaysParse = [
-        /^Su/i,
-        /^Lu/i,
-        /^Me([^r]|$)/i,
-        /^Mer/i,
-        /^Ya/i,
-        /^Gw/i,
-        /^Sa/i,
-    ];
-
-export default moment.defineLocale('br', {
-    months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
-        '_'
-    ),
-    monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
-    weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
-    weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
-    weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-    weekdaysParse: minWeekdaysParse,
-    fullWeekdaysParse: fullWeekdaysParse,
-    shortWeekdaysParse: shortWeekdaysParse,
-    minWeekdaysParse: minWeekdaysParse,
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex: monthsStrictRegex,
-    monthsShortStrictRegex: monthsShortStrictRegex,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [a viz] MMMM YYYY',
-        LLL: 'D [a viz] MMMM YYYY HH:mm',
-        LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hiziv da] LT',
-        nextDay: '[Warcʼhoazh da] LT',
-        nextWeek: 'dddd [da] LT',
-        lastDay: '[Decʼh da] LT',
-        lastWeek: 'dddd [paset da] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'a-benn %s',
-        past: '%s ʼzo',
-        s: 'un nebeud segondennoù',
-        ss: '%d eilenn',
-        m: 'ur vunutenn',
-        mm: relativeTimeWithMutation,
-        h: 'un eur',
-        hh: '%d eur',
-        d: 'un devezh',
-        dd: relativeTimeWithMutation,
-        M: 'ur miz',
-        MM: relativeTimeWithMutation,
-        y: 'ur bloaz',
-        yy: specialMutationForYears,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'añ' : 'vet';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
-    isPM: function (token) {
-        return token === 'g.m.';
-    },
-    meridiem: function (hour, minute, isLower) {
-        return hour < 12 ? 'a.m.' : 'g.m.';
-    },
-});
Index: ckend/node_modules/moment/dist/locale/bs.js
===================================================================
--- backend/node_modules/moment/dist/locale/bs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,160 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bosnian [bs]
-//! author : Nedim Cholich : https://github.com/frontyard
-//! author : Rasid Redzic : https://github.com/rasidre
-//! based on (hr) translation by Bojan Marković
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    switch (key) {
-        case 'm':
-            return withoutSuffix
-                ? 'jedna minuta'
-                : isFuture
-                  ? 'jednu minutu'
-                  : 'jedne minute';
-    }
-}
-
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            if (number === 1) {
-                result += 'sekunda';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sekunde';
-            } else {
-                result += 'sekundi';
-            }
-            return result;
-        case 'mm':
-            if (number === 1) {
-                result += 'minuta';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'minute';
-            } else {
-                result += 'minuta';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'jedan sat' : 'jedan sat';
-        case 'hh':
-            if (number === 1) {
-                result += 'sat';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sata';
-            } else {
-                result += 'sati';
-            }
-            return result;
-        case 'dd':
-            if (number === 1) {
-                result += 'dan';
-            } else {
-                result += 'dana';
-            }
-            return result;
-        case 'MM':
-            if (number === 1) {
-                result += 'mjesec';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'mjeseca';
-            } else {
-                result += 'mjeseci';
-            }
-            return result;
-        case 'yy':
-            if (number === 1) {
-                result += 'godina';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'godine';
-            } else {
-                result += 'godina';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('bs', {
-    months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[jučer u] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                    return '[prošlu] dddd [u] LT';
-                case 6:
-                    return '[prošle] [subote] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prošli] dddd [u] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'par sekundi',
-        ss: translate,
-        m: processRelativeTime,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: 'dan',
-        dd: translate,
-        M: 'mjesec',
-        MM: translate,
-        y: 'godinu',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ca.js
===================================================================
--- backend/node_modules/moment/dist/locale/ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Catalan [ca]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-import moment from '../moment';
-
-export default moment.defineLocale('ca', {
-    months: {
-        standalone:
-            'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
-                '_'
-            ),
-        format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
-            '_'
-        ),
-        isFormat: /D[oD]?(\s)+MMMM/,
-    },
-    monthsShort:
-        'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
-            '_'
-        ),
-    weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
-    weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [de] YYYY',
-        ll: 'D MMM YYYY',
-        LLL: 'D MMMM [de] YYYY [a les] H:mm',
-        lll: 'D MMM YYYY, H:mm',
-        LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
-        llll: 'ddd D MMM YYYY, H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        nextDay: function () {
-            return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        lastDay: function () {
-            return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [passat a ' +
-                (this.hours() !== 1 ? 'les' : 'la') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: "d'aquí %s",
-        past: 'fa %s',
-        s: 'uns segons',
-        ss: '%d segons',
-        m: 'un minut',
-        mm: '%d minuts',
-        h: 'una hora',
-        hh: '%d hores',
-        d: 'un dia',
-        dd: '%d dies',
-        M: 'un mes',
-        MM: '%d mesos',
-        y: 'un any',
-        yy: '%d anys',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-    ordinal: function (number, period) {
-        var output =
-            number === 1
-                ? 'r'
-                : number === 2
-                  ? 'n'
-                  : number === 3
-                    ? 'r'
-                    : number === 4
-                      ? 't'
-                      : 'è';
-        if (period === 'w' || period === 'W') {
-            output = 'a';
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/cs.js
===================================================================
--- backend/node_modules/moment/dist/locale/cs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,181 +1,0 @@
-//! moment.js locale configuration
-//! locale : Czech [cs]
-//! author : petrbela : https://github.com/petrbela
-
-import moment from '../moment';
-
-var months = {
-        standalone:
-            'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
-                '_'
-            ),
-        format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
-            '_'
-        ),
-        isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
-    },
-    monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
-    monthsParse = [
-        /^led/i,
-        /^úno/i,
-        /^bře/i,
-        /^dub/i,
-        /^kvě/i,
-        /^(čvn|červen$|června)/i,
-        /^(čvc|červenec|července)/i,
-        /^srp/i,
-        /^zář/i,
-        /^říj/i,
-        /^lis/i,
-        /^pro/i,
-    ],
-    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-    monthsRegex =
-        /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
-
-function plural(n) {
-    return n > 1 && n < 5 && ~~(n / 10) !== 1;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's': // a few seconds / in a few seconds / a few seconds ago
-            return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
-        case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'sekundy' : 'sekund');
-            } else {
-                return result + 'sekundami';
-            }
-        case 'm': // a minute / in a minute / a minute ago
-            return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
-        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'minuty' : 'minut');
-            } else {
-                return result + 'minutami';
-            }
-        case 'h': // an hour / in an hour / an hour ago
-            return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-        case 'hh': // 9 hours / in 9 hours / 9 hours ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'hodiny' : 'hodin');
-            } else {
-                return result + 'hodinami';
-            }
-        case 'd': // a day / in a day / a day ago
-            return withoutSuffix || isFuture ? 'den' : 'dnem';
-        case 'dd': // 9 days / in 9 days / 9 days ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'dny' : 'dní');
-            } else {
-                return result + 'dny';
-            }
-        case 'M': // a month / in a month / a month ago
-            return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
-        case 'MM': // 9 months / in 9 months / 9 months ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'měsíce' : 'měsíců');
-            } else {
-                return result + 'měsíci';
-            }
-        case 'y': // a year / in a year / a year ago
-            return withoutSuffix || isFuture ? 'rok' : 'rokem';
-        case 'yy': // 9 years / in 9 years / 9 years ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'roky' : 'let');
-            } else {
-                return result + 'lety';
-            }
-    }
-}
-
-export default moment.defineLocale('cs', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-    monthsStrictRegex:
-        /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
-    monthsShortStrictRegex:
-        /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
-    weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
-    weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd D. MMMM YYYY H:mm',
-        l: 'D. M. YYYY',
-    },
-    calendar: {
-        sameDay: '[dnes v] LT',
-        nextDay: '[zítra v] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v neděli v] LT';
-                case 1:
-                case 2:
-                    return '[v] dddd [v] LT';
-                case 3:
-                    return '[ve středu v] LT';
-                case 4:
-                    return '[ve čtvrtek v] LT';
-                case 5:
-                    return '[v pátek v] LT';
-                case 6:
-                    return '[v sobotu v] LT';
-            }
-        },
-        lastDay: '[včera v] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[minulou neděli v] LT';
-                case 1:
-                case 2:
-                    return '[minulé] dddd [v] LT';
-                case 3:
-                    return '[minulou středu v] LT';
-                case 4:
-                case 5:
-                    return '[minulý] dddd [v] LT';
-                case 6:
-                    return '[minulou sobotu v] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'před %s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/cv.js
===================================================================
--- backend/node_modules/moment/dist/locale/cv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chuvash [cv]
-//! author : Anatoly Mironov : https://github.com/mirontoli
-
-import moment from '../moment';
-
-export default moment.defineLocale('cv', {
-    months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
-        '_'
-    ),
-    monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
-    weekdays:
-        'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
-            '_'
-        ),
-    weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
-    weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
-        LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-        LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-    },
-    calendar: {
-        sameDay: '[Паян] LT [сехетре]',
-        nextDay: '[Ыран] LT [сехетре]',
-        lastDay: '[Ӗнер] LT [сехетре]',
-        nextWeek: '[Ҫитес] dddd LT [сехетре]',
-        lastWeek: '[Иртнӗ] dddd LT [сехетре]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (output) {
-            var affix = /сехет$/i.exec(output)
-                ? 'рен'
-                : /ҫул$/i.exec(output)
-                  ? 'тан'
-                  : 'ран';
-            return output + affix;
-        },
-        past: '%s каялла',
-        s: 'пӗр-ик ҫеккунт',
-        ss: '%d ҫеккунт',
-        m: 'пӗр минут',
-        mm: '%d минут',
-        h: 'пӗр сехет',
-        hh: '%d сехет',
-        d: 'пӗр кун',
-        dd: '%d кун',
-        M: 'пӗр уйӑх',
-        MM: '%d уйӑх',
-        y: 'пӗр ҫул',
-        yy: '%d ҫул',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
-    ordinal: '%d-мӗш',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/cy.js
===================================================================
--- backend/node_modules/moment/dist/locale/cy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,98 +1,0 @@
-//! moment.js locale configuration
-//! locale : Welsh [cy]
-//! author : Robert Allen : https://github.com/robgallen
-//! author : https://github.com/ryangreaves
-
-import moment from '../moment';
-
-export default moment.defineLocale('cy', {
-    months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
-        '_'
-    ),
-    monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
-        '_'
-    ),
-    weekdays:
-        'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
-            '_'
-        ),
-    weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
-    weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
-    weekdaysParseExact: true,
-    // time formats are the same as en-gb
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Heddiw am] LT',
-        nextDay: '[Yfory am] LT',
-        nextWeek: 'dddd [am] LT',
-        lastDay: '[Ddoe am] LT',
-        lastWeek: 'dddd [diwethaf am] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'mewn %s',
-        past: '%s yn ôl',
-        s: 'ychydig eiliadau',
-        ss: '%d eiliad',
-        m: 'munud',
-        mm: '%d munud',
-        h: 'awr',
-        hh: '%d awr',
-        d: 'diwrnod',
-        dd: '%d diwrnod',
-        M: 'mis',
-        MM: '%d mis',
-        y: 'blwyddyn',
-        yy: '%d flynedd',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
-    // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-    ordinal: function (number) {
-        var b = number,
-            output = '',
-            lookup = [
-                '',
-                'af',
-                'il',
-                'ydd',
-                'ydd',
-                'ed',
-                'ed',
-                'ed',
-                'fed',
-                'fed',
-                'fed', // 1af to 10fed
-                'eg',
-                'fed',
-                'eg',
-                'eg',
-                'fed',
-                'eg',
-                'eg',
-                'fed',
-                'eg',
-                'fed', // 11eg to 20fed
-            ];
-        if (b > 20) {
-            if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
-                output = 'fed'; // not 30ain, 70ain or 90ain
-            } else {
-                output = 'ain';
-            }
-        } else if (b > 0) {
-            output = lookup[b];
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/da.js
===================================================================
--- backend/node_modules/moment/dist/locale/da.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-//! moment.js locale configuration
-//! locale : Danish [da]
-//! author : Ulrik Nielsen : https://github.com/mrbase
-
-import moment from '../moment';
-
-export default moment.defineLocale('da', {
-    months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-    weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
-    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i dag kl.] LT',
-        nextDay: '[i morgen kl.] LT',
-        nextWeek: 'på dddd [kl.] LT',
-        lastDay: '[i går kl.] LT',
-        lastWeek: '[i] dddd[s kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s siden',
-        s: 'få sekunder',
-        ss: '%d sekunder',
-        m: 'et minut',
-        mm: '%d minutter',
-        h: 'en time',
-        hh: '%d timer',
-        d: 'en dag',
-        dd: '%d dage',
-        M: 'en måned',
-        MM: '%d måneder',
-        y: 'et år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/de-at.js
===================================================================
--- backend/node_modules/moment/dist/locale/de-at.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Austria) [de-at]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Martin Groller : https://github.com/MadMG
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de-at', {
-    months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/de-ch.js
===================================================================
--- backend/node_modules/moment/dist/locale/de-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Switzerland) [de-ch]
-//! author : sschueller : https://github.com/sschueller
-
-// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de-ch', {
-    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/de.js
===================================================================
--- backend/node_modules/moment/dist/locale/de.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : German [de]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de', {
-    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/dv.js
===================================================================
--- backend/node_modules/moment/dist/locale/dv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maldivian [dv]
-//! author : Jawish Hameed : https://github.com/jawish
-
-import moment from '../moment';
-
-var months = [
-        'ޖެނުއަރީ',
-        'ފެބްރުއަރީ',
-        'މާރިޗު',
-        'އޭޕްރީލު',
-        'މޭ',
-        'ޖޫން',
-        'ޖުލައި',
-        'އޯގަސްޓު',
-        'ސެޕްޓެމްބަރު',
-        'އޮކްޓޯބަރު',
-        'ނޮވެމްބަރު',
-        'ޑިސެމްބަރު',
-    ],
-    weekdays = [
-        'އާދިއްތަ',
-        'ހޯމަ',
-        'އަންގާރަ',
-        'ބުދަ',
-        'ބުރާސްފަތި',
-        'ހުކުރު',
-        'ހޮނިހިރު',
-    ];
-
-export default moment.defineLocale('dv', {
-    months: months,
-    monthsShort: months,
-    weekdays: weekdays,
-    weekdaysShort: weekdays,
-    weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/M/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /މކ|މފ/,
-    isPM: function (input) {
-        return 'މފ' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'މކ';
-        } else {
-            return 'މފ';
-        }
-    },
-    calendar: {
-        sameDay: '[މިއަދު] LT',
-        nextDay: '[މާދަމާ] LT',
-        nextWeek: 'dddd LT',
-        lastDay: '[އިއްޔެ] LT',
-        lastWeek: '[ފާއިތުވި] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ތެރޭގައި %s',
-        past: 'ކުރިން %s',
-        s: 'ސިކުންތުކޮޅެއް',
-        ss: 'd% ސިކުންތު',
-        m: 'މިނިޓެއް',
-        mm: 'މިނިޓު %d',
-        h: 'ގަޑިއިރެއް',
-        hh: 'ގަޑިއިރު %d',
-        d: 'ދުވަހެއް',
-        dd: 'ދުވަސް %d',
-        M: 'މަހެއް',
-        MM: 'މަސް %d',
-        y: 'އަހަރެއް',
-        yy: 'އަހަރު %d',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 7, // Sunday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/el.js
===================================================================
--- backend/node_modules/moment/dist/locale/el.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Greek [el]
-//! author : Aggelos Karalias : https://github.com/mehiel
-
-import moment from '../moment';
-
-function isFunction(input) {
-    return (
-        (typeof Function !== 'undefined' && input instanceof Function) ||
-        Object.prototype.toString.call(input) === '[object Function]'
-    );
-}
-
-export default moment.defineLocale('el', {
-    monthsNominativeEl:
-        'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
-            '_'
-        ),
-    monthsGenitiveEl:
-        'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
-            '_'
-        ),
-    months: function (momentToFormat, format) {
-        if (!momentToFormat) {
-            return this._monthsNominativeEl;
-        } else if (
-            typeof format === 'string' &&
-            /D/.test(format.substring(0, format.indexOf('MMMM')))
-        ) {
-            // if there is a day number before 'MMMM'
-            return this._monthsGenitiveEl[momentToFormat.month()];
-        } else {
-            return this._monthsNominativeEl[momentToFormat.month()];
-        }
-    },
-    monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
-    weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
-        '_'
-    ),
-    weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
-    weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'μμ' : 'ΜΜ';
-        } else {
-            return isLower ? 'πμ' : 'ΠΜ';
-        }
-    },
-    isPM: function (input) {
-        return (input + '').toLowerCase()[0] === 'μ';
-    },
-    meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendarEl: {
-        sameDay: '[Σήμερα {}] LT',
-        nextDay: '[Αύριο {}] LT',
-        nextWeek: 'dddd [{}] LT',
-        lastDay: '[Χθες {}] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 6:
-                    return '[το προηγούμενο] dddd [{}] LT';
-                default:
-                    return '[την προηγούμενη] dddd [{}] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    calendar: function (key, mom) {
-        var output = this._calendarEl[key],
-            hours = mom && mom.hours();
-        if (isFunction(output)) {
-            output = output.apply(mom);
-        }
-        return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
-    },
-    relativeTime: {
-        future: 'σε %s',
-        past: '%s πριν',
-        s: 'λίγα δευτερόλεπτα',
-        ss: '%d δευτερόλεπτα',
-        m: 'ένα λεπτό',
-        mm: '%d λεπτά',
-        h: 'μία ώρα',
-        hh: '%d ώρες',
-        d: 'μία μέρα',
-        dd: '%d μέρες',
-        M: 'ένας μήνας',
-        MM: '%d μήνες',
-        y: 'ένας χρόνος',
-        yy: '%d χρόνια',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}η/,
-    ordinal: '%dη',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-au.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-au.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Australia) [en-au]
-//! author : Jared Morse : https://github.com/jarcoal
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-au', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-ca.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Canada) [en-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-ca', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'YYYY-MM-DD',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY h:mm A',
-        LLLL: 'dddd, MMMM D, YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-gb.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-gb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (United Kingdom) [en-gb]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-gb', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-ie.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-ie.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Ireland) [en-ie]
-//! author : Chris Cartlidge : https://github.com/chriscartlidge
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-ie', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-il.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-il.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Israel) [en-il]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-il', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-in.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (India) [en-in]
-//! author : Jatin Agrawal : https://github.com/jatinag22
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-in', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-nz.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-nz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (New Zealand) [en-nz]
-//! author : Luke McGregor : https://github.com/lukemcgregor
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-nz', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/en-sg.js
===================================================================
--- backend/node_modules/moment/dist/locale/en-sg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Singapore) [en-sg]
-//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-sg', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/eo.js
===================================================================
--- backend/node_modules/moment/dist/locale/eo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Esperanto [eo]
-//! author : Colin Dean : https://github.com/colindean
-//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
-//! comment : miestasmia corrected the translation by colindean
-//! comment : Vivakvo corrected the translation by colindean and miestasmia
-
-import moment from '../moment';
-
-export default moment.defineLocale('eo', {
-    months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
-    weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
-    weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: '[la] D[-an de] MMMM, YYYY',
-        LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
-        LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
-        llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
-    },
-    meridiemParse: /[ap]\.t\.m/i,
-    isPM: function (input) {
-        return input.charAt(0).toLowerCase() === 'p';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'p.t.m.' : 'P.T.M.';
-        } else {
-            return isLower ? 'a.t.m.' : 'A.T.M.';
-        }
-    },
-    calendar: {
-        sameDay: '[Hodiaŭ je] LT',
-        nextDay: '[Morgaŭ je] LT',
-        nextWeek: 'dddd[n je] LT',
-        lastDay: '[Hieraŭ je] LT',
-        lastWeek: '[pasintan] dddd[n je] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'post %s',
-        past: 'antaŭ %s',
-        s: 'kelkaj sekundoj',
-        ss: '%d sekundoj',
-        m: 'unu minuto',
-        mm: '%d minutoj',
-        h: 'unu horo',
-        hh: '%d horoj',
-        d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
-        dd: '%d tagoj',
-        M: 'unu monato',
-        MM: '%d monatoj',
-        y: 'unu jaro',
-        yy: '%d jaroj',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}a/,
-    ordinal: '%da',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/es-do.js
===================================================================
--- backend/node_modules/moment/dist/locale/es-do.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Dominican Republic) [es-do]
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-do', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY h:mm A',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/es-mx.js
===================================================================
--- backend/node_modules/moment/dist/locale/es-mx.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Mexico) [es-mx]
-//! author : JC Franco : https://github.com/jcfranco
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-mx', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    invalidDate: 'Fecha inválida',
-});
Index: ckend/node_modules/moment/dist/locale/es-us.js
===================================================================
--- backend/node_modules/moment/dist/locale/es-us.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (United States) [es-us]
-//! author : bustta : https://github.com/bustta
-//! author : chrisrodz : https://github.com/chrisrodz
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-us', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'MM/DD/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY h:mm A',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/es.js
===================================================================
--- backend/node_modules/moment/dist/locale/es.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish [es]
-//! author : Julio Napurí : https://github.com/julionc
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    invalidDate: 'Fecha inválida',
-});
Index: ckend/node_modules/moment/dist/locale/et.js
===================================================================
--- backend/node_modules/moment/dist/locale/et.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : Estonian [et]
-//! author : Henry Kehlmann : https://github.com/madhenry
-//! improvements : Illimar Tambek : https://github.com/ragulka
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
-        ss: [number + 'sekundi', number + 'sekundit'],
-        m: ['ühe minuti', 'üks minut'],
-        mm: [number + ' minuti', number + ' minutit'],
-        h: ['ühe tunni', 'tund aega', 'üks tund'],
-        hh: [number + ' tunni', number + ' tundi'],
-        d: ['ühe päeva', 'üks päev'],
-        M: ['kuu aja', 'kuu aega', 'üks kuu'],
-        MM: [number + ' kuu', number + ' kuud'],
-        y: ['ühe aasta', 'aasta', 'üks aasta'],
-        yy: [number + ' aasta', number + ' aastat'],
-    };
-    if (withoutSuffix) {
-        return format[key][2] ? format[key][2] : format[key][1];
-    }
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('et', {
-    months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
-    weekdays:
-        'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
-            '_'
-        ),
-    weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
-    weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Täna,] LT',
-        nextDay: '[Homme,] LT',
-        nextWeek: '[Järgmine] dddd LT',
-        lastDay: '[Eile,] LT',
-        lastWeek: '[Eelmine] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s pärast',
-        past: '%s tagasi',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: '%d päeva',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/eu.js
===================================================================
--- backend/node_modules/moment/dist/locale/eu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Basque [eu]
-//! author : Eneko Illarramendi : https://github.com/eillarra
-
-import moment from '../moment';
-
-export default moment.defineLocale('eu', {
-    months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
-        '_'
-    ),
-    monthsShort:
-        'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
-            '_'
-        ),
-    weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
-    weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY[ko] MMMM[ren] D[a]',
-        LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
-        LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
-        l: 'YYYY-M-D',
-        ll: 'YYYY[ko] MMM D[a]',
-        lll: 'YYYY[ko] MMM D[a] HH:mm',
-        llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
-    },
-    calendar: {
-        sameDay: '[gaur] LT[etan]',
-        nextDay: '[bihar] LT[etan]',
-        nextWeek: 'dddd LT[etan]',
-        lastDay: '[atzo] LT[etan]',
-        lastWeek: '[aurreko] dddd LT[etan]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s barru',
-        past: 'duela %s',
-        s: 'segundo batzuk',
-        ss: '%d segundo',
-        m: 'minutu bat',
-        mm: '%d minutu',
-        h: 'ordu bat',
-        hh: '%d ordu',
-        d: 'egun bat',
-        dd: '%d egun',
-        M: 'hilabete bat',
-        MM: '%d hilabete',
-        y: 'urte bat',
-        yy: '%d urte',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fa.js
===================================================================
--- backend/node_modules/moment/dist/locale/fa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//! moment.js locale configuration
-//! locale : Persian [fa]
-//! author : Ebrahim Byagowi : https://github.com/ebraminio
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '۱',
-        2: '۲',
-        3: '۳',
-        4: '۴',
-        5: '۵',
-        6: '۶',
-        7: '۷',
-        8: '۸',
-        9: '۹',
-        0: '۰',
-    },
-    numberMap = {
-        '۱': '1',
-        '۲': '2',
-        '۳': '3',
-        '۴': '4',
-        '۵': '5',
-        '۶': '6',
-        '۷': '7',
-        '۸': '8',
-        '۹': '9',
-        '۰': '0',
-    };
-
-export default moment.defineLocale('fa', {
-    months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-            '_'
-        ),
-    weekdays:
-        'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-            '_'
-        ),
-    weekdaysShort:
-        'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-            '_'
-        ),
-    weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /قبل از ظهر|بعد از ظهر/,
-    isPM: function (input) {
-        return /بعد از ظهر/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'قبل از ظهر';
-        } else {
-            return 'بعد از ظهر';
-        }
-    },
-    calendar: {
-        sameDay: '[امروز ساعت] LT',
-        nextDay: '[فردا ساعت] LT',
-        nextWeek: 'dddd [ساعت] LT',
-        lastDay: '[دیروز ساعت] LT',
-        lastWeek: 'dddd [پیش] [ساعت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'در %s',
-        past: '%s پیش',
-        s: 'چند ثانیه',
-        ss: '%d ثانیه',
-        m: 'یک دقیقه',
-        mm: '%d دقیقه',
-        h: 'یک ساعت',
-        hh: '%d ساعت',
-        d: 'یک روز',
-        dd: '%d روز',
-        M: 'یک ماه',
-        MM: '%d ماه',
-        y: 'یک سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[۰-۹]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}م/,
-    ordinal: '%dم',
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fi.js
===================================================================
--- backend/node_modules/moment/dist/locale/fi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Finnish [fi]
-//! author : Tarmo Aidantausta : https://github.com/bleadof
-
-import moment from '../moment';
-
-var numbersPast =
-        'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
-            ' '
-        ),
-    numbersFuture = [
-        'nolla',
-        'yhden',
-        'kahden',
-        'kolmen',
-        'neljän',
-        'viiden',
-        'kuuden',
-        numbersPast[7],
-        numbersPast[8],
-        numbersPast[9],
-    ];
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = '';
-    switch (key) {
-        case 's':
-            return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
-        case 'ss':
-            result = isFuture ? 'sekunnin' : 'sekuntia';
-            break;
-        case 'm':
-            return isFuture ? 'minuutin' : 'minuutti';
-        case 'mm':
-            result = isFuture ? 'minuutin' : 'minuuttia';
-            break;
-        case 'h':
-            return isFuture ? 'tunnin' : 'tunti';
-        case 'hh':
-            result = isFuture ? 'tunnin' : 'tuntia';
-            break;
-        case 'd':
-            return isFuture ? 'päivän' : 'päivä';
-        case 'dd':
-            result = isFuture ? 'päivän' : 'päivää';
-            break;
-        case 'M':
-            return isFuture ? 'kuukauden' : 'kuukausi';
-        case 'MM':
-            result = isFuture ? 'kuukauden' : 'kuukautta';
-            break;
-        case 'y':
-            return isFuture ? 'vuoden' : 'vuosi';
-        case 'yy':
-            result = isFuture ? 'vuoden' : 'vuotta';
-            break;
-    }
-    result = verbalNumber(number, isFuture) + ' ' + result;
-    return result;
-}
-function verbalNumber(number, isFuture) {
-    return number < 10
-        ? isFuture
-            ? numbersFuture[number]
-            : numbersPast[number]
-        : number;
-}
-
-export default moment.defineLocale('fi', {
-    months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
-        '_'
-    ),
-    monthsShort:
-        'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
-            '_'
-        ),
-    weekdays:
-        'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
-            '_'
-        ),
-    weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
-    weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM[ta] YYYY',
-        LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
-        LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
-        l: 'D.M.YYYY',
-        ll: 'Do MMM YYYY',
-        lll: 'Do MMM YYYY, [klo] HH.mm',
-        llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
-    },
-    calendar: {
-        sameDay: '[tänään] [klo] LT',
-        nextDay: '[huomenna] [klo] LT',
-        nextWeek: 'dddd [klo] LT',
-        lastDay: '[eilen] [klo] LT',
-        lastWeek: '[viime] dddd[na] [klo] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s päästä',
-        past: '%s sitten',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fil.js
===================================================================
--- backend/node_modules/moment/dist/locale/fil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-//! moment.js locale configuration
-//! locale : Filipino [fil]
-//! author : Dan Hagman : https://github.com/hagmandan
-//! author : Matthew Co : https://github.com/matthewdeeco
-
-import moment from '../moment';
-
-export default moment.defineLocale('fil', {
-    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-        '_'
-    ),
-    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-        '_'
-    ),
-    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'MM/D/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY HH:mm',
-        LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: 'LT [ngayong araw]',
-        nextDay: '[Bukas ng] LT',
-        nextWeek: 'LT [sa susunod na] dddd',
-        lastDay: 'LT [kahapon]',
-        lastWeek: 'LT [noong nakaraang] dddd',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'sa loob ng %s',
-        past: '%s ang nakalipas',
-        s: 'ilang segundo',
-        ss: '%d segundo',
-        m: 'isang minuto',
-        mm: '%d minuto',
-        h: 'isang oras',
-        hh: '%d oras',
-        d: 'isang araw',
-        dd: '%d araw',
-        M: 'isang buwan',
-        MM: '%d buwan',
-        y: 'isang taon',
-        yy: '%d taon',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fo.js
===================================================================
--- backend/node_modules/moment/dist/locale/fo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Faroese [fo]
-//! author : Ragnar Johannesen : https://github.com/ragnar123
-//! author : Kristian Sakarisson : https://github.com/sakarisson
-
-import moment from '../moment';
-
-export default moment.defineLocale('fo', {
-    months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
-    weekdays:
-        'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
-            '_'
-        ),
-    weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
-    weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D. MMMM, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Í dag kl.] LT',
-        nextDay: '[Í morgin kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[Í gjár kl.] LT',
-        lastWeek: '[síðstu] dddd [kl] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'um %s',
-        past: '%s síðani',
-        s: 'fá sekund',
-        ss: '%d sekundir',
-        m: 'ein minuttur',
-        mm: '%d minuttir',
-        h: 'ein tími',
-        hh: '%d tímar',
-        d: 'ein dagur',
-        dd: '%d dagar',
-        M: 'ein mánaður',
-        MM: '%d mánaðir',
-        y: 'eitt ár',
-        yy: '%d ár',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fr-ca.js
===================================================================
--- backend/node_modules/moment/dist/locale/fr-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Canada) [fr-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-import moment from '../moment';
-
-export default moment.defineLocale('fr-ca', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'D':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fr-ch.js
===================================================================
--- backend/node_modules/moment/dist/locale/fr-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Switzerland) [fr-ch]
-//! author : Gaspard Bucher : https://github.com/gaspard
-
-import moment from '../moment';
-
-export default moment.defineLocale('fr-ch', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'D':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fr.js
===================================================================
--- backend/node_modules/moment/dist/locale/fr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//! moment.js locale configuration
-//! locale : French [fr]
-//! author : John Fischer : https://github.com/jfroffice
-
-import moment from '../moment';
-
-var monthsStrictRegex =
-        /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-    monthsShortStrictRegex =
-        /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
-    monthsRegex =
-        /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-    monthsParse = [
-        /^janv/i,
-        /^févr/i,
-        /^mars/i,
-        /^avr/i,
-        /^mai/i,
-        /^juin/i,
-        /^juil/i,
-        /^août/i,
-        /^sept/i,
-        /^oct/i,
-        /^nov/i,
-        /^déc/i,
-    ];
-
-export default moment.defineLocale('fr', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex: monthsStrictRegex,
-    monthsShortStrictRegex: monthsShortStrictRegex,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        w: 'une semaine',
-        ww: '%d semaines',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // TODO: Return 'e' when day of month > 1. Move this case inside
-            // block for masculine words below.
-            // See https://github.com/moment/moment/issues/3375
-            case 'D':
-                return number + (number === 1 ? 'er' : '');
-
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/fy.js
===================================================================
--- backend/node_modules/moment/dist/locale/fy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Frisian [fy]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
-
-export default moment.defineLocale('fy', {
-    months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-    monthsParseExact: true,
-    weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
-        '_'
-    ),
-    weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
-    weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[hjoed om] LT',
-        nextDay: '[moarn om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[juster om] LT',
-        lastWeek: '[ôfrûne] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'oer %s',
-        past: '%s lyn',
-        s: 'in pear sekonden',
-        ss: '%d sekonden',
-        m: 'ien minút',
-        mm: '%d minuten',
-        h: 'ien oere',
-        hh: '%d oeren',
-        d: 'ien dei',
-        dd: '%d dagen',
-        M: 'ien moanne',
-        MM: '%d moannen',
-        y: 'ien jier',
-        yy: '%d jierren',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ga.js
===================================================================
--- backend/node_modules/moment/dist/locale/ga.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : Irish or Irish Gaelic [ga]
-//! author : André Silva : https://github.com/askpt
-
-import moment from '../moment';
-
-var months = [
-        'Eanáir',
-        'Feabhra',
-        'Márta',
-        'Aibreán',
-        'Bealtaine',
-        'Meitheamh',
-        'Iúil',
-        'Lúnasa',
-        'Meán Fómhair',
-        'Deireadh Fómhair',
-        'Samhain',
-        'Nollaig',
-    ],
-    monthsShort = [
-        'Ean',
-        'Feabh',
-        'Márt',
-        'Aib',
-        'Beal',
-        'Meith',
-        'Iúil',
-        'Lún',
-        'M.F.',
-        'D.F.',
-        'Samh',
-        'Noll',
-    ],
-    weekdays = [
-        'Dé Domhnaigh',
-        'Dé Luain',
-        'Dé Máirt',
-        'Dé Céadaoin',
-        'Déardaoin',
-        'Dé hAoine',
-        'Dé Sathairn',
-    ],
-    weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
-    weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
-
-export default moment.defineLocale('ga', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsParseExact: true,
-    weekdays: weekdays,
-    weekdaysShort: weekdaysShort,
-    weekdaysMin: weekdaysMin,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Inniu ag] LT',
-        nextDay: '[Amárach ag] LT',
-        nextWeek: 'dddd [ag] LT',
-        lastDay: '[Inné ag] LT',
-        lastWeek: 'dddd [seo caite] [ag] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'i %s',
-        past: '%s ó shin',
-        s: 'cúpla soicind',
-        ss: '%d soicind',
-        m: 'nóiméad',
-        mm: '%d nóiméad',
-        h: 'uair an chloig',
-        hh: '%d uair an chloig',
-        d: 'lá',
-        dd: '%d lá',
-        M: 'mí',
-        MM: '%d míonna',
-        y: 'bliain',
-        yy: '%d bliain',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/gd.js
===================================================================
--- backend/node_modules/moment/dist/locale/gd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : Scottish Gaelic [gd]
-//! author : Jon Ashdown : https://github.com/jonashdown
-
-import moment from '../moment';
-
-var months = [
-        'Am Faoilleach',
-        'An Gearran',
-        'Am Màrt',
-        'An Giblean',
-        'An Cèitean',
-        'An t-Ògmhios',
-        'An t-Iuchar',
-        'An Lùnastal',
-        'An t-Sultain',
-        'An Dàmhair',
-        'An t-Samhain',
-        'An Dùbhlachd',
-    ],
-    monthsShort = [
-        'Faoi',
-        'Gear',
-        'Màrt',
-        'Gibl',
-        'Cèit',
-        'Ògmh',
-        'Iuch',
-        'Lùn',
-        'Sult',
-        'Dàmh',
-        'Samh',
-        'Dùbh',
-    ],
-    weekdays = [
-        'Didòmhnaich',
-        'Diluain',
-        'Dimàirt',
-        'Diciadain',
-        'Diardaoin',
-        'Dihaoine',
-        'Disathairne',
-    ],
-    weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
-    weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
-
-export default moment.defineLocale('gd', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsParseExact: true,
-    weekdays: weekdays,
-    weekdaysShort: weekdaysShort,
-    weekdaysMin: weekdaysMin,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[An-diugh aig] LT',
-        nextDay: '[A-màireach aig] LT',
-        nextWeek: 'dddd [aig] LT',
-        lastDay: '[An-dè aig] LT',
-        lastWeek: 'dddd [seo chaidh] [aig] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ann an %s',
-        past: 'bho chionn %s',
-        s: 'beagan diogan',
-        ss: '%d diogan',
-        m: 'mionaid',
-        mm: '%d mionaidean',
-        h: 'uair',
-        hh: '%d uairean',
-        d: 'latha',
-        dd: '%d latha',
-        M: 'mìos',
-        MM: '%d mìosan',
-        y: 'bliadhna',
-        yy: '%d bliadhna',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/gl.js
===================================================================
--- backend/node_modules/moment/dist/locale/gl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Galician [gl]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-import moment from '../moment';
-
-export default moment.defineLocale('gl', {
-    months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
-        '_'
-    ),
-    monthsShort:
-        'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
-        },
-        lastDay: function () {
-            return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (str) {
-            if (str.indexOf('un') === 0) {
-                return 'n' + str;
-            }
-            return 'en ' + str;
-        },
-        past: 'hai %s',
-        s: 'uns segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'unha hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/gom-deva.js
===================================================================
--- backend/node_modules/moment/dist/locale/gom-deva.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Devanagari script [gom-deva]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
-        ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
-        m: ['एका मिणटान', 'एक मिनूट'],
-        mm: [number + ' मिणटांनी', number + ' मिणटां'],
-        h: ['एका वरान', 'एक वर'],
-        hh: [number + ' वरांनी', number + ' वरां'],
-        d: ['एका दिसान', 'एक दीस'],
-        dd: [number + ' दिसांनी', number + ' दीस'],
-        M: ['एका म्हयन्यान', 'एक म्हयनो'],
-        MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
-        y: ['एका वर्सान', 'एक वर्स'],
-        yy: [number + ' वर्सांनी', number + ' वर्सां'],
-    };
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('gom-deva', {
-    months: {
-        standalone:
-            'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-                '_'
-            ),
-        format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
-            '_'
-        ),
-        isFormat: /MMMM(\s)+D[oD]?/,
-    },
-    monthsShort:
-        'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
-    weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
-    weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'A h:mm [वाजतां]',
-        LTS: 'A h:mm:ss [वाजतां]',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY A h:mm [वाजतां]',
-        LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
-        llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
-    },
-    calendar: {
-        sameDay: '[आयज] LT',
-        nextDay: '[फाल्यां] LT',
-        nextWeek: '[फुडलो] dddd[,] LT',
-        lastDay: '[काल] LT',
-        lastWeek: '[फाटलो] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s',
-        past: '%s आदीं',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // the ordinal 'वेर' only applies to day of the month
-            case 'D':
-                return number + 'वेर';
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-            case 'w':
-            case 'W':
-                return number;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week
-        doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-    },
-    meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'राती') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'सकाळीं') {
-            return hour;
-        } else if (meridiem === 'दनपारां') {
-            return hour > 12 ? hour : hour + 12;
-        } else if (meridiem === 'सांजे') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'राती';
-        } else if (hour < 12) {
-            return 'सकाळीं';
-        } else if (hour < 16) {
-            return 'दनपारां';
-        } else if (hour < 20) {
-            return 'सांजे';
-        } else {
-            return 'राती';
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/gom-latn.js
===================================================================
--- backend/node_modules/moment/dist/locale/gom-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Latin script [gom-latn]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['thoddea sekondamni', 'thodde sekond'],
-        ss: [number + ' sekondamni', number + ' sekond'],
-        m: ['eka mintan', 'ek minut'],
-        mm: [number + ' mintamni', number + ' mintam'],
-        h: ['eka voran', 'ek vor'],
-        hh: [number + ' voramni', number + ' voram'],
-        d: ['eka disan', 'ek dis'],
-        dd: [number + ' disamni', number + ' dis'],
-        M: ['eka mhoinean', 'ek mhoino'],
-        MM: [number + ' mhoineamni', number + ' mhoine'],
-        y: ['eka vorsan', 'ek voros'],
-        yy: [number + ' vorsamni', number + ' vorsam'],
-    };
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('gom-latn', {
-    months: {
-        standalone:
-            'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
-                '_'
-            ),
-        format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
-            '_'
-        ),
-        isFormat: /MMMM(\s)+D[oD]?/,
-    },
-    monthsShort:
-        'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
-    weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
-    weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'A h:mm [vazta]',
-        LTS: 'A h:mm:ss [vazta]',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY A h:mm [vazta]',
-        LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
-        llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
-    },
-    calendar: {
-        sameDay: '[Aiz] LT',
-        nextDay: '[Faleam] LT',
-        nextWeek: '[Fuddlo] dddd[,] LT',
-        lastDay: '[Kal] LT',
-        lastWeek: '[Fattlo] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s',
-        past: '%s adim',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // the ordinal 'er' only applies to day of the month
-            case 'D':
-                return number + 'er';
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-            case 'w':
-            case 'W':
-                return number;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week
-        doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-    },
-    meridiemParse: /rati|sokallim|donparam|sanje/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'rati') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'sokallim') {
-            return hour;
-        } else if (meridiem === 'donparam') {
-            return hour > 12 ? hour : hour + 12;
-        } else if (meridiem === 'sanje') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'rati';
-        } else if (hour < 12) {
-            return 'sokallim';
-        } else if (hour < 16) {
-            return 'donparam';
-        } else if (hour < 20) {
-            return 'sanje';
-        } else {
-            return 'rati';
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/gu.js
===================================================================
--- backend/node_modules/moment/dist/locale/gu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//! moment.js locale configuration
-//! locale : Gujarati [gu]
-//! author : Kaushik Thanki : https://github.com/Kaushik1987
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '૧',
-        2: '૨',
-        3: '૩',
-        4: '૪',
-        5: '૫',
-        6: '૬',
-        7: '૭',
-        8: '૮',
-        9: '૯',
-        0: '૦',
-    },
-    numberMap = {
-        '૧': '1',
-        '૨': '2',
-        '૩': '3',
-        '૪': '4',
-        '૫': '5',
-        '૬': '6',
-        '૭': '7',
-        '૮': '8',
-        '૯': '9',
-        '૦': '0',
-    };
-
-export default moment.defineLocale('gu', {
-    months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
-        '_'
-    ),
-    monthsShort:
-        'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
-        '_'
-    ),
-    weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
-    weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm વાગ્યે',
-        LTS: 'A h:mm:ss વાગ્યે',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
-    },
-    calendar: {
-        sameDay: '[આજ] LT',
-        nextDay: '[કાલે] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ગઇકાલે] LT',
-        lastWeek: '[પાછલા] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s મા',
-        past: '%s પહેલા',
-        s: 'અમુક પળો',
-        ss: '%d સેકંડ',
-        m: 'એક મિનિટ',
-        mm: '%d મિનિટ',
-        h: 'એક કલાક',
-        hh: '%d કલાક',
-        d: 'એક દિવસ',
-        dd: '%d દિવસ',
-        M: 'એક મહિનો',
-        MM: '%d મહિનો',
-        y: 'એક વર્ષ',
-        yy: '%d વર્ષ',
-    },
-    preparse: function (string) {
-        return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
-    meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'રાત') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'સવાર') {
-            return hour;
-        } else if (meridiem === 'બપોર') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'સાંજ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'રાત';
-        } else if (hour < 10) {
-            return 'સવાર';
-        } else if (hour < 17) {
-            return 'બપોર';
-        } else if (hour < 20) {
-            return 'સાંજ';
-        } else {
-            return 'રાત';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/he.js
===================================================================
--- backend/node_modules/moment/dist/locale/he.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hebrew [he]
-//! author : Tomer Cohen : https://github.com/tomer
-//! author : Moshe Simantov : https://github.com/DevelopmentIL
-//! author : Tal Ater : https://github.com/TalAter
-
-import moment from '../moment';
-
-export default moment.defineLocale('he', {
-    months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
-        '_'
-    ),
-    monthsShort:
-        'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
-    weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
-    weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
-    weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [ב]MMMM YYYY',
-        LLL: 'D [ב]MMMM YYYY HH:mm',
-        LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
-        l: 'D/M/YYYY',
-        ll: 'D MMM YYYY',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd, D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[היום ב־]LT',
-        nextDay: '[מחר ב־]LT',
-        nextWeek: 'dddd [בשעה] LT',
-        lastDay: '[אתמול ב־]LT',
-        lastWeek: '[ביום] dddd [האחרון בשעה] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'בעוד %s',
-        past: 'לפני %s',
-        s: 'מספר שניות',
-        ss: '%d שניות',
-        m: 'דקה',
-        mm: '%d דקות',
-        h: 'שעה',
-        hh: function (number) {
-            if (number === 2) {
-                return 'שעתיים';
-            }
-            return number + ' שעות';
-        },
-        d: 'יום',
-        dd: function (number) {
-            if (number === 2) {
-                return 'יומיים';
-            }
-            return number + ' ימים';
-        },
-        M: 'חודש',
-        MM: function (number) {
-            if (number === 2) {
-                return 'חודשיים';
-            }
-            return number + ' חודשים';
-        },
-        y: 'שנה',
-        yy: function (number) {
-            if (number === 2) {
-                return 'שנתיים';
-            } else if (number % 10 === 0 && number !== 10) {
-                return number + ' שנה';
-            }
-            return number + ' שנים';
-        },
-    },
-    meridiemParse:
-        /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
-    isPM: function (input) {
-        return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 5) {
-            return 'לפנות בוקר';
-        } else if (hour < 10) {
-            return 'בבוקר';
-        } else if (hour < 12) {
-            return isLower ? 'לפנה"צ' : 'לפני הצהריים';
-        } else if (hour < 18) {
-            return isLower ? 'אחה"צ' : 'אחרי הצהריים';
-        } else {
-            return 'בערב';
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/hi.js
===================================================================
--- backend/node_modules/moment/dist/locale/hi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,168 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hindi [hi]
-//! author : Mayank Singhal : https://github.com/mayanksinghal
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    },
-    monthsParse = [
-        /^जन/i,
-        /^फ़र|फर/i,
-        /^मार्च/i,
-        /^अप्रै/i,
-        /^मई/i,
-        /^जून/i,
-        /^जुल/i,
-        /^अग/i,
-        /^सितं|सित/i,
-        /^अक्टू/i,
-        /^नव|नवं/i,
-        /^दिसं|दिस/i,
-    ],
-    shortMonthsParse = [
-        /^जन/i,
-        /^फ़र/i,
-        /^मार्च/i,
-        /^अप्रै/i,
-        /^मई/i,
-        /^जून/i,
-        /^जुल/i,
-        /^अग/i,
-        /^सित/i,
-        /^अक्टू/i,
-        /^नव/i,
-        /^दिस/i,
-    ];
-
-export default moment.defineLocale('hi', {
-    months: {
-        format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
-            '_'
-        ),
-        standalone:
-            'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
-    weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-    weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
-    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm बजे',
-        LTS: 'A h:mm:ss बजे',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm बजे',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
-    },
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: shortMonthsParse,
-
-    monthsRegex:
-        /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-    monthsShortRegex:
-        /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-    monthsStrictRegex:
-        /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
-
-    monthsShortStrictRegex:
-        /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
-
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[कल] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[कल] LT',
-        lastWeek: '[पिछले] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s में',
-        past: '%s पहले',
-        s: 'कुछ ही क्षण',
-        ss: '%d सेकंड',
-        m: 'एक मिनट',
-        mm: '%d मिनट',
-        h: 'एक घंटा',
-        hh: '%d घंटे',
-        d: 'एक दिन',
-        dd: '%d दिन',
-        M: 'एक महीने',
-        MM: '%d महीने',
-        y: 'एक वर्ष',
-        yy: '%d वर्ष',
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Hindi notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-    meridiemParse: /रात|सुबह|दोपहर|शाम/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'रात') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'सुबह') {
-            return hour;
-        } else if (meridiem === 'दोपहर') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'शाम') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'रात';
-        } else if (hour < 10) {
-            return 'सुबह';
-        } else if (hour < 17) {
-            return 'दोपहर';
-        } else if (hour < 20) {
-            return 'शाम';
-        } else {
-            return 'रात';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/hr.js
===================================================================
--- backend/node_modules/moment/dist/locale/hr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//! moment.js locale configuration
-//! locale : Croatian [hr]
-//! author : Bojan Marković : https://github.com/bmarkovic
-
-import moment from '../moment';
-
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            if (number === 1) {
-                result += 'sekunda';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sekunde';
-            } else {
-                result += 'sekundi';
-            }
-            return result;
-        case 'm':
-            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-        case 'mm':
-            if (number === 1) {
-                result += 'minuta';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'minute';
-            } else {
-                result += 'minuta';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'jedan sat' : 'jednog sata';
-        case 'hh':
-            if (number === 1) {
-                result += 'sat';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sata';
-            } else {
-                result += 'sati';
-            }
-            return result;
-        case 'dd':
-            if (number === 1) {
-                result += 'dan';
-            } else {
-                result += 'dana';
-            }
-            return result;
-        case 'MM':
-            if (number === 1) {
-                result += 'mjesec';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'mjeseca';
-            } else {
-                result += 'mjeseci';
-            }
-            return result;
-        case 'yy':
-            if (number === 1) {
-                result += 'godina';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'godine';
-            } else {
-                result += 'godina';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('hr', {
-    months: {
-        format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
-            '_'
-        ),
-        standalone:
-            'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM YYYY',
-        LLL: 'Do MMMM YYYY H:mm',
-        LLLL: 'dddd, Do MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[jučer u] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[prošlu] [nedjelju] [u] LT';
-                case 3:
-                    return '[prošlu] [srijedu] [u] LT';
-                case 6:
-                    return '[prošle] [subote] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prošli] dddd [u] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'par sekundi',
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: 'dan',
-        dd: translate,
-        M: 'mjesec',
-        MM: translate,
-        y: 'godinu',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/hu.js
===================================================================
--- backend/node_modules/moment/dist/locale/hu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,118 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hungarian [hu]
-//! author : Adam Brunner : https://github.com/adambrunner
-//! author : Peter Viszt  : https://github.com/passatgt
-
-import moment from '../moment';
-
-var weekEndings =
-    'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-function translate(number, withoutSuffix, key, isFuture) {
-    var num = number;
-    switch (key) {
-        case 's':
-            return isFuture || withoutSuffix
-                ? 'néhány másodperc'
-                : 'néhány másodperce';
-        case 'ss':
-            return num + (isFuture || withoutSuffix)
-                ? ' másodperc'
-                : ' másodperce';
-        case 'm':
-            return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
-        case 'mm':
-            return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
-        case 'h':
-            return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
-        case 'hh':
-            return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
-        case 'd':
-            return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
-        case 'dd':
-            return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
-        case 'M':
-            return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-        case 'MM':
-            return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-        case 'y':
-            return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
-        case 'yy':
-            return num + (isFuture || withoutSuffix ? ' év' : ' éve');
-    }
-    return '';
-}
-function week(isFuture) {
-    return (
-        (isFuture ? '' : '[múlt] ') +
-        '[' +
-        weekEndings[this.day()] +
-        '] LT[-kor]'
-    );
-}
-
-export default moment.defineLocale('hu', {
-    months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
-    weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
-    weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'YYYY.MM.DD.',
-        LL: 'YYYY. MMMM D.',
-        LLL: 'YYYY. MMMM D. H:mm',
-        LLLL: 'YYYY. MMMM D., dddd H:mm',
-    },
-    meridiemParse: /de|du/i,
-    isPM: function (input) {
-        return input.charAt(1).toLowerCase() === 'u';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower === true ? 'de' : 'DE';
-        } else {
-            return isLower === true ? 'du' : 'DU';
-        }
-    },
-    calendar: {
-        sameDay: '[ma] LT[-kor]',
-        nextDay: '[holnap] LT[-kor]',
-        nextWeek: function () {
-            return week.call(this, true);
-        },
-        lastDay: '[tegnap] LT[-kor]',
-        lastWeek: function () {
-            return week.call(this, false);
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s múlva',
-        past: '%s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/hy-am.js
===================================================================
--- backend/node_modules/moment/dist/locale/hy-am.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Armenian [hy-am]
-//! author : Armendarabyan : https://github.com/armendarabyan
-
-import moment from '../moment';
-
-export default moment.defineLocale('hy-am', {
-    months: {
-        format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
-            '_'
-        ),
-        standalone:
-            'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
-    weekdays:
-        'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
-            '_'
-        ),
-    weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-    weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY թ.',
-        LLL: 'D MMMM YYYY թ., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
-    },
-    calendar: {
-        sameDay: '[այսօր] LT',
-        nextDay: '[վաղը] LT',
-        lastDay: '[երեկ] LT',
-        nextWeek: function () {
-            return 'dddd [օրը ժամը] LT';
-        },
-        lastWeek: function () {
-            return '[անցած] dddd [օրը ժամը] LT';
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s հետո',
-        past: '%s առաջ',
-        s: 'մի քանի վայրկյան',
-        ss: '%d վայրկյան',
-        m: 'րոպե',
-        mm: '%d րոպե',
-        h: 'ժամ',
-        hh: '%d ժամ',
-        d: 'օր',
-        dd: '%d օր',
-        M: 'ամիս',
-        MM: '%d ամիս',
-        y: 'տարի',
-        yy: '%d տարի',
-    },
-    meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
-    isPM: function (input) {
-        return /^(ցերեկվա|երեկոյան)$/.test(input);
-    },
-    meridiem: function (hour) {
-        if (hour < 4) {
-            return 'գիշերվա';
-        } else if (hour < 12) {
-            return 'առավոտվա';
-        } else if (hour < 17) {
-            return 'ցերեկվա';
-        } else {
-            return 'երեկոյան';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'DDD':
-            case 'w':
-            case 'W':
-            case 'DDDo':
-                if (number === 1) {
-                    return number + '-ին';
-                }
-                return number + '-րդ';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/id.js
===================================================================
--- backend/node_modules/moment/dist/locale/id.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Indonesian [id]
-//! author : Mohammad Satrio Utomo : https://github.com/tyok
-//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-
-import moment from '../moment';
-
-export default moment.defineLocale('id', {
-    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
-    weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
-    weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
-    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|siang|sore|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'siang') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'sore' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'siang';
-        } else if (hours < 19) {
-            return 'sore';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Besok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kemarin pukul] LT',
-        lastWeek: 'dddd [lalu pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lalu',
-        s: 'beberapa detik',
-        ss: '%d detik',
-        m: 'semenit',
-        mm: '%d menit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/is.js
===================================================================
--- backend/node_modules/moment/dist/locale/is.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Icelandic [is]
-//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-
-import moment from '../moment';
-
-function plural(n) {
-    if (n % 100 === 11) {
-        return true;
-    } else if (n % 10 === 1) {
-        return false;
-    }
-    return true;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's':
-            return withoutSuffix || isFuture
-                ? 'nokkrar sekúndur'
-                : 'nokkrum sekúndum';
-        case 'ss':
-            if (plural(number)) {
-                return (
-                    result +
-                    (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
-                );
-            }
-            return result + 'sekúnda';
-        case 'm':
-            return withoutSuffix ? 'mínúta' : 'mínútu';
-        case 'mm':
-            if (plural(number)) {
-                return (
-                    result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
-                );
-            } else if (withoutSuffix) {
-                return result + 'mínúta';
-            }
-            return result + 'mínútu';
-        case 'hh':
-            if (plural(number)) {
-                return (
-                    result +
-                    (withoutSuffix || isFuture
-                        ? 'klukkustundir'
-                        : 'klukkustundum')
-                );
-            }
-            return result + 'klukkustund';
-        case 'd':
-            if (withoutSuffix) {
-                return 'dagur';
-            }
-            return isFuture ? 'dag' : 'degi';
-        case 'dd':
-            if (plural(number)) {
-                if (withoutSuffix) {
-                    return result + 'dagar';
-                }
-                return result + (isFuture ? 'daga' : 'dögum');
-            } else if (withoutSuffix) {
-                return result + 'dagur';
-            }
-            return result + (isFuture ? 'dag' : 'degi');
-        case 'M':
-            if (withoutSuffix) {
-                return 'mánuður';
-            }
-            return isFuture ? 'mánuð' : 'mánuði';
-        case 'MM':
-            if (plural(number)) {
-                if (withoutSuffix) {
-                    return result + 'mánuðir';
-                }
-                return result + (isFuture ? 'mánuði' : 'mánuðum');
-            } else if (withoutSuffix) {
-                return result + 'mánuður';
-            }
-            return result + (isFuture ? 'mánuð' : 'mánuði');
-        case 'y':
-            return withoutSuffix || isFuture ? 'ár' : 'ári';
-        case 'yy':
-            if (plural(number)) {
-                return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
-            }
-            return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
-    }
-}
-
-export default moment.defineLocale('is', {
-    months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
-    weekdays:
-        'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
-            '_'
-        ),
-    weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
-    weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] H:mm',
-        LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
-    },
-    calendar: {
-        sameDay: '[í dag kl.] LT',
-        nextDay: '[á morgun kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[í gær kl.] LT',
-        lastWeek: '[síðasta] dddd [kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'eftir %s',
-        past: 'fyrir %s síðan',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: 'klukkustund',
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/it-ch.js
===================================================================
--- backend/node_modules/moment/dist/locale/it-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian (Switzerland) [it-ch]
-//! author : xfh : https://github.com/xfh
-
-import moment from '../moment';
-
-export default moment.defineLocale('it-ch', {
-    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-        '_'
-    ),
-    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-        '_'
-    ),
-    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Oggi alle] LT',
-        nextDay: '[Domani alle] LT',
-        nextWeek: 'dddd [alle] LT',
-        lastDay: '[Ieri alle] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[la scorsa] dddd [alle] LT';
-                default:
-                    return '[lo scorso] dddd [alle] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (s) {
-            return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
-        },
-        past: '%s fa',
-        s: 'alcuni secondi',
-        ss: '%d secondi',
-        m: 'un minuto',
-        mm: '%d minuti',
-        h: "un'ora",
-        hh: '%d ore',
-        d: 'un giorno',
-        dd: '%d giorni',
-        M: 'un mese',
-        MM: '%d mesi',
-        y: 'un anno',
-        yy: '%d anni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/it.js
===================================================================
--- backend/node_modules/moment/dist/locale/it.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian [it]
-//! author : Lorenzo : https://github.com/aliem
-//! author: Mattia Larentis: https://github.com/nostalgiaz
-//! author: Marco : https://github.com/Manfre98
-
-import moment from '../moment';
-
-export default moment.defineLocale('it', {
-    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-        '_'
-    ),
-    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-        '_'
-    ),
-    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return (
-                '[Oggi a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        nextDay: function () {
-            return (
-                '[Domani a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        nextWeek: function () {
-            return (
-                'dddd [a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        lastDay: function () {
-            return (
-                '[Ieri a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return (
-                        '[La scorsa] dddd [a' +
-                        (this.hours() > 1
-                            ? 'lle '
-                            : this.hours() === 0
-                              ? ' '
-                              : "ll'") +
-                        ']LT'
-                    );
-                default:
-                    return (
-                        '[Lo scorso] dddd [a' +
-                        (this.hours() > 1
-                            ? 'lle '
-                            : this.hours() === 0
-                              ? ' '
-                              : "ll'") +
-                        ']LT'
-                    );
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'tra %s',
-        past: '%s fa',
-        s: 'alcuni secondi',
-        ss: '%d secondi',
-        m: 'un minuto',
-        mm: '%d minuti',
-        h: "un'ora",
-        hh: '%d ore',
-        d: 'un giorno',
-        dd: '%d giorni',
-        w: 'una settimana',
-        ww: '%d settimane',
-        M: 'un mese',
-        MM: '%d mesi',
-        y: 'un anno',
-        yy: '%d anni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ja.js
===================================================================
--- backend/node_modules/moment/dist/locale/ja.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,148 +1,0 @@
-//! moment.js locale configuration
-//! locale : Japanese [ja]
-//! author : LI Long : https://github.com/baryon
-
-import moment from '../moment';
-
-export default moment.defineLocale('ja', {
-    eras: [
-        {
-            since: '2019-05-01',
-            offset: 1,
-            name: '令和',
-            narrow: '㋿',
-            abbr: 'R',
-        },
-        {
-            since: '1989-01-08',
-            until: '2019-04-30',
-            offset: 1,
-            name: '平成',
-            narrow: '㍻',
-            abbr: 'H',
-        },
-        {
-            since: '1926-12-25',
-            until: '1989-01-07',
-            offset: 1,
-            name: '昭和',
-            narrow: '㍼',
-            abbr: 'S',
-        },
-        {
-            since: '1912-07-30',
-            until: '1926-12-24',
-            offset: 1,
-            name: '大正',
-            narrow: '㍽',
-            abbr: 'T',
-        },
-        {
-            since: '1873-01-01',
-            until: '1912-07-29',
-            offset: 6,
-            name: '明治',
-            narrow: '㍾',
-            abbr: 'M',
-        },
-        {
-            since: '0001-01-01',
-            until: '1873-12-31',
-            offset: 1,
-            name: '西暦',
-            narrow: 'AD',
-            abbr: 'AD',
-        },
-        {
-            since: '0000-12-31',
-            until: -Infinity,
-            offset: 1,
-            name: '紀元前',
-            narrow: 'BC',
-            abbr: 'BC',
-        },
-    ],
-    eraYearOrdinalRegex: /(元|\d+)年/,
-    eraYearOrdinalParse: function (input, match) {
-        return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
-    },
-    months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
-    weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
-    weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日 dddd HH:mm',
-        l: 'YYYY/MM/DD',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日(ddd) HH:mm',
-    },
-    meridiemParse: /午前|午後/i,
-    isPM: function (input) {
-        return input === '午後';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return '午前';
-        } else {
-            return '午後';
-        }
-    },
-    calendar: {
-        sameDay: '[今日] LT',
-        nextDay: '[明日] LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                return '[来週]dddd LT';
-            } else {
-                return 'dddd LT';
-            }
-        },
-        lastDay: '[昨日] LT',
-        lastWeek: function (now) {
-            if (this.week() !== now.week()) {
-                return '[先週]dddd LT';
-            } else {
-                return 'dddd LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}日/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'y':
-                return number === 1 ? '元年' : number + '年';
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '数秒',
-        ss: '%d秒',
-        m: '1分',
-        mm: '%d分',
-        h: '1時間',
-        hh: '%d時間',
-        d: '1日',
-        dd: '%d日',
-        M: '1ヶ月',
-        MM: '%dヶ月',
-        y: '1年',
-        yy: '%d年',
-    },
-});
Index: ckend/node_modules/moment/dist/locale/jv.js
===================================================================
--- backend/node_modules/moment/dist/locale/jv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Javanese [jv]
-//! author : Rony Lantip : https://github.com/lantip
-//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
-
-import moment from '../moment';
-
-export default moment.defineLocale('jv', {
-    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
-    weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
-    weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
-    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /enjing|siyang|sonten|ndalu/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'enjing') {
-            return hour;
-        } else if (meridiem === 'siyang') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'enjing';
-        } else if (hours < 15) {
-            return 'siyang';
-        } else if (hours < 19) {
-            return 'sonten';
-        } else {
-            return 'ndalu';
-        }
-    },
-    calendar: {
-        sameDay: '[Dinten puniko pukul] LT',
-        nextDay: '[Mbenjang pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kala wingi pukul] LT',
-        lastWeek: 'dddd [kepengker pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'wonten ing %s',
-        past: '%s ingkang kepengker',
-        s: 'sawetawis detik',
-        ss: '%d detik',
-        m: 'setunggal menit',
-        mm: '%d menit',
-        h: 'setunggal jam',
-        hh: '%d jam',
-        d: 'sedinten',
-        dd: '%d dinten',
-        M: 'sewulan',
-        MM: '%d wulan',
-        y: 'setaun',
-        yy: '%d taun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ka.js
===================================================================
--- backend/node_modules/moment/dist/locale/ka.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//! moment.js locale configuration
-//! locale : Georgian [ka]
-//! author : Irakli Janiashvili : https://github.com/IrakliJani
-
-import moment from '../moment';
-
-export default moment.defineLocale('ka', {
-    months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
-        '_'
-    ),
-    monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
-    weekdays: {
-        standalone:
-            'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
-                '_'
-            ),
-        format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
-            '_'
-        ),
-        isFormat: /(წინა|შემდეგ)/,
-    },
-    weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
-    weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[დღეს] LT[-ზე]',
-        nextDay: '[ხვალ] LT[-ზე]',
-        lastDay: '[გუშინ] LT[-ზე]',
-        nextWeek: '[შემდეგ] dddd LT[-ზე]',
-        lastWeek: '[წინა] dddd LT-ზე',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (s) {
-            return s.replace(
-                /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
-                function ($0, $1, $2) {
-                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
-                }
-            );
-        },
-        past: function (s) {
-            if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
-                return s.replace(/(ი|ე)$/, 'ის წინ');
-            }
-            if (/წელი/.test(s)) {
-                return s.replace(/წელი$/, 'წლის წინ');
-            }
-            return s;
-        },
-        s: 'რამდენიმე წამი',
-        ss: '%d წამი',
-        m: 'წუთი',
-        mm: '%d წუთი',
-        h: 'საათი',
-        hh: '%d საათი',
-        d: 'დღე',
-        dd: '%d დღე',
-        M: 'თვე',
-        MM: '%d თვე',
-        y: 'წელი',
-        yy: '%d წელი',
-    },
-    dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
-    ordinal: function (number) {
-        if (number === 0) {
-            return number;
-        }
-        if (number === 1) {
-            return number + '-ლი';
-        }
-        if (
-            number < 20 ||
-            (number <= 100 && number % 20 === 0) ||
-            number % 100 === 0
-        ) {
-            return 'მე-' + number;
-        }
-        return number + '-ე';
-    },
-    week: {
-        dow: 1,
-        doy: 7,
-    },
-});
Index: ckend/node_modules/moment/dist/locale/kk.js
===================================================================
--- backend/node_modules/moment/dist/locale/kk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kazakh [kk]
-//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-ші',
-    1: '-ші',
-    2: '-ші',
-    3: '-ші',
-    4: '-ші',
-    5: '-ші',
-    6: '-шы',
-    7: '-ші',
-    8: '-ші',
-    9: '-шы',
-    10: '-шы',
-    20: '-шы',
-    30: '-шы',
-    40: '-шы',
-    50: '-ші',
-    60: '-шы',
-    70: '-ші',
-    80: '-ші',
-    90: '-шы',
-    100: '-ші',
-};
-
-export default moment.defineLocale('kk', {
-    months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
-        '_'
-    ),
-    monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
-    weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
-        '_'
-    ),
-    weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
-    weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бүгін сағат] LT',
-        nextDay: '[Ертең сағат] LT',
-        nextWeek: 'dddd [сағат] LT',
-        lastDay: '[Кеше сағат] LT',
-        lastWeek: '[Өткен аптаның] dddd [сағат] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ішінде',
-        past: '%s бұрын',
-        s: 'бірнеше секунд',
-        ss: '%d секунд',
-        m: 'бір минут',
-        mm: '%d минут',
-        h: 'бір сағат',
-        hh: '%d сағат',
-        d: 'бір күн',
-        dd: '%d күн',
-        M: 'бір ай',
-        MM: '%d ай',
-        y: 'бір жыл',
-        yy: '%d жыл',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/km.js
===================================================================
--- backend/node_modules/moment/dist/locale/km.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,103 +1,0 @@
-//! moment.js locale configuration
-//! locale : Cambodian [km]
-//! author : Kruy Vanna : https://github.com/kruyvanna
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '១',
-        2: '២',
-        3: '៣',
-        4: '៤',
-        5: '៥',
-        6: '៦',
-        7: '៧',
-        8: '៨',
-        9: '៩',
-        0: '០',
-    },
-    numberMap = {
-        '១': '1',
-        '២': '2',
-        '៣': '3',
-        '៤': '4',
-        '៥': '5',
-        '៦': '6',
-        '៧': '7',
-        '៨': '8',
-        '៩': '9',
-        '០': '0',
-    };
-
-export default moment.defineLocale('km', {
-    months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-        '_'
-    ),
-    monthsShort:
-        'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-            '_'
-        ),
-    weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
-    weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-    weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ព្រឹក|ល្ងាច/,
-    isPM: function (input) {
-        return input === 'ល្ងាច';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ព្រឹក';
-        } else {
-            return 'ល្ងាច';
-        }
-    },
-    calendar: {
-        sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
-        nextDay: '[ស្អែក ម៉ោង] LT',
-        nextWeek: 'dddd [ម៉ោង] LT',
-        lastDay: '[ម្សិលមិញ ម៉ោង] LT',
-        lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sទៀត',
-        past: '%sមុន',
-        s: 'ប៉ុន្មានវិនាទី',
-        ss: '%d វិនាទី',
-        m: 'មួយនាទី',
-        mm: '%d នាទី',
-        h: 'មួយម៉ោង',
-        hh: '%d ម៉ោង',
-        d: 'មួយថ្ងៃ',
-        dd: '%d ថ្ងៃ',
-        M: 'មួយខែ',
-        MM: '%d ខែ',
-        y: 'មួយឆ្នាំ',
-        yy: '%d ឆ្នាំ',
-    },
-    dayOfMonthOrdinalParse: /ទី\d{1,2}/,
-    ordinal: 'ទី%d',
-    preparse: function (string) {
-        return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/kn.js
===================================================================
--- backend/node_modules/moment/dist/locale/kn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kannada [kn]
-//! author : Rajeev Naik : https://github.com/rajeevnaikte
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '೧',
-        2: '೨',
-        3: '೩',
-        4: '೪',
-        5: '೫',
-        6: '೬',
-        7: '೭',
-        8: '೮',
-        9: '೯',
-        0: '೦',
-    },
-    numberMap = {
-        '೧': '1',
-        '೨': '2',
-        '೩': '3',
-        '೪': '4',
-        '೫': '5',
-        '೬': '6',
-        '೭': '7',
-        '೮': '8',
-        '೯': '9',
-        '೦': '0',
-    };
-
-export default moment.defineLocale('kn', {
-    months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
-        '_'
-    ),
-    monthsShort:
-        'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
-        '_'
-    ),
-    weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
-    weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[ಇಂದು] LT',
-        nextDay: '[ನಾಳೆ] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ನಿನ್ನೆ] LT',
-        lastWeek: '[ಕೊನೆಯ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ನಂತರ',
-        past: '%s ಹಿಂದೆ',
-        s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
-        ss: '%d ಸೆಕೆಂಡುಗಳು',
-        m: 'ಒಂದು ನಿಮಿಷ',
-        mm: '%d ನಿಮಿಷ',
-        h: 'ಒಂದು ಗಂಟೆ',
-        hh: '%d ಗಂಟೆ',
-        d: 'ಒಂದು ದಿನ',
-        dd: '%d ದಿನ',
-        M: 'ಒಂದು ತಿಂಗಳು',
-        MM: '%d ತಿಂಗಳು',
-        y: 'ಒಂದು ವರ್ಷ',
-        yy: '%d ವರ್ಷ',
-    },
-    preparse: function (string) {
-        return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ರಾತ್ರಿ') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
-            return hour;
-        } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'ಸಂಜೆ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ರಾತ್ರಿ';
-        } else if (hour < 10) {
-            return 'ಬೆಳಿಗ್ಗೆ';
-        } else if (hour < 17) {
-            return 'ಮಧ್ಯಾಹ್ನ';
-        } else if (hour < 20) {
-            return 'ಸಂಜೆ';
-        } else {
-            return 'ರಾತ್ರಿ';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
-    ordinal: function (number) {
-        return number + 'ನೇ';
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ko.js
===================================================================
--- backend/node_modules/moment/dist/locale/ko.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Korean [ko]
-//! author : Kyungwook, Park : https://github.com/kyungw00k
-//! author : Jeeeyul Lee <jeeeyul@gmail.com>
-
-import moment from '../moment';
-
-export default moment.defineLocale('ko', {
-    months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
-    monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
-        '_'
-    ),
-    weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
-    weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
-    weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'YYYY.MM.DD.',
-        LL: 'YYYY년 MMMM D일',
-        LLL: 'YYYY년 MMMM D일 A h:mm',
-        LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
-        l: 'YYYY.MM.DD.',
-        ll: 'YYYY년 MMMM D일',
-        lll: 'YYYY년 MMMM D일 A h:mm',
-        llll: 'YYYY년 MMMM D일 dddd A h:mm',
-    },
-    calendar: {
-        sameDay: '오늘 LT',
-        nextDay: '내일 LT',
-        nextWeek: 'dddd LT',
-        lastDay: '어제 LT',
-        lastWeek: '지난주 dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s 후',
-        past: '%s 전',
-        s: '몇 초',
-        ss: '%d초',
-        m: '1분',
-        mm: '%d분',
-        h: '한 시간',
-        hh: '%d시간',
-        d: '하루',
-        dd: '%d일',
-        M: '한 달',
-        MM: '%d달',
-        y: '일 년',
-        yy: '%d년',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '일';
-            case 'M':
-                return number + '월';
-            case 'w':
-            case 'W':
-                return number + '주';
-            default:
-                return number;
-        }
-    },
-    meridiemParse: /오전|오후/,
-    isPM: function (token) {
-        return token === '오후';
-    },
-    meridiem: function (hour, minute, isUpper) {
-        return hour < 12 ? '오전' : '오후';
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ku-kmr.js
===================================================================
--- backend/node_modules/moment/dist/locale/ku-kmr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Kurdish [ku-kmr]
-//! authors : Mazlum Özdogan : https://github.com/mergehez
-
-// All rules except for month names are according to
-// the spelling rules which are defined in the book 'Rêbera Rastnivîsînê' from Komxebata Kurmancîyê.
-// Komxebata Kurmancîyê is a work group that studied different uses in Kurdish language (Kurmanji/Northern Kurdish),
-// chose one of alternatives as standard and publish them via their book.
-// There are 18 Kurdish linguists in the group.
-// The group was formed by Mesopotamia Foundation
-
-import moment from '../moment';
-
-function processRelativeTime(num, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['çend sanîye', 'çend sanîyeyan'],
-        ss: [num + ' sanîye', num + ' sanîyeyan'],
-        m: ['deqîqeyek', 'deqîqeyekê'],
-        mm: [num + ' deqîqe', num + ' deqîqeyan'],
-        h: ['saetek', 'saetekê'],
-        hh: [num + ' saet', num + ' saetan'],
-        d: ['rojek', 'rojekê'],
-        dd: [num + ' roj', num + ' rojan'],
-        w: ['hefteyek', 'hefteyekê'],
-        ww: [num + ' hefte', num + ' hefteyan'],
-        M: ['mehek', 'mehekê'],
-        MM: [num + ' meh', num + ' mehan'],
-        y: ['salek', 'salekê'],
-        yy: [num + ' sal', num + ' salan'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-// function obliqueNumSuffix(num) {
-//     if(num.includes(':'))
-//         num = parseInt(num.split(':')[0]);
-//     else
-//         num = parseInt(num);
-//     return num == 0 || num % 10 == 1 ? 'ê'
-//                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
-// }
-function ezafeNumSuffix(num) {
-    num = '' + num;
-    var l = num.substring(num.length - 1),
-        ll = num.length > 1 ? num.substring(num.length - 2) : '';
-    if (
-        !(ll == 12 || ll == 13) &&
-        (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
-    )
-        return 'yê';
-    return 'ê';
-}
-
-export default moment.defineLocale('ku-kmr', {
-    // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
-    // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
-    // But the names below are more well known and handy
-    months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
-        '_'
-    ),
-    monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
-    weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
-    weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'bn' : 'BN';
-        } else {
-            return isLower ? 'pn' : 'PN';
-        }
-    },
-    meridiemParse: /bn|BN|pn|PN/,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM[a] YYYY[an]',
-        LLL: 'Do MMMM[a] YYYY[an] HH:mm',
-        LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
-        ll: 'Do MMM[.] YYYY[an]',
-        lll: 'Do MMM[.] YYYY[an] HH:mm',
-        llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Îro di saet] LT [de]',
-        nextDay: '[Sibê di saet] LT [de]',
-        nextWeek: 'dddd [di saet] LT [de]',
-        lastDay: '[Duh di saet] LT [de]',
-        lastWeek: 'dddd[a borî di saet] LT [de]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'di %s de',
-        past: 'berî %s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
-    ordinal: function (num, period) {
-        var p = period.toLowerCase();
-        if (p.includes('w') || p.includes('m')) return num + '.';
-
-        return num + ezafeNumSuffix(num);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ku.js
===================================================================
--- backend/node_modules/moment/dist/locale/ku.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,118 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kurdish [ku]
-//! author : Shahram Mebashar : https://github.com/ShahramMebashar
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    },
-    months = [
-        'کانونی دووەم',
-        'شوبات',
-        'ئازار',
-        'نیسان',
-        'ئایار',
-        'حوزەیران',
-        'تەمموز',
-        'ئاب',
-        'ئەیلوول',
-        'تشرینی یەكەم',
-        'تشرینی دووەم',
-        'كانونی یەکەم',
-    ];
-
-export default moment.defineLocale('ku', {
-    months: months,
-    monthsShort: months,
-    weekdays:
-        'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
-            '_'
-        ),
-    weekdaysShort:
-        'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
-    weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ئێواره‌|به‌یانی/,
-    isPM: function (input) {
-        return /ئێواره‌/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'به‌یانی';
-        } else {
-            return 'ئێواره‌';
-        }
-    },
-    calendar: {
-        sameDay: '[ئه‌مرۆ كاتژمێر] LT',
-        nextDay: '[به‌یانی كاتژمێر] LT',
-        nextWeek: 'dddd [كاتژمێر] LT',
-        lastDay: '[دوێنێ كاتژمێر] LT',
-        lastWeek: 'dddd [كاتژمێر] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'له‌ %s',
-        past: '%s',
-        s: 'چه‌ند چركه‌یه‌ك',
-        ss: 'چركه‌ %d',
-        m: 'یه‌ك خوله‌ك',
-        mm: '%d خوله‌ك',
-        h: 'یه‌ك كاتژمێر',
-        hh: '%d كاتژمێر',
-        d: 'یه‌ك ڕۆژ',
-        dd: '%d ڕۆژ',
-        M: 'یه‌ك مانگ',
-        MM: '%d مانگ',
-        y: 'یه‌ك ساڵ',
-        yy: '%d ساڵ',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ky.js
===================================================================
--- backend/node_modules/moment/dist/locale/ky.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kyrgyz [ky]
-//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-чү',
-    1: '-чи',
-    2: '-чи',
-    3: '-чү',
-    4: '-чү',
-    5: '-чи',
-    6: '-чы',
-    7: '-чи',
-    8: '-чи',
-    9: '-чу',
-    10: '-чу',
-    20: '-чы',
-    30: '-чу',
-    40: '-чы',
-    50: '-чү',
-    60: '-чы',
-    70: '-чи',
-    80: '-чи',
-    90: '-чу',
-    100: '-чү',
-};
-
-export default moment.defineLocale('ky', {
-    months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-        '_'
-    ),
-    monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
-        '_'
-    ),
-    weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
-        '_'
-    ),
-    weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
-    weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бүгүн саат] LT',
-        nextDay: '[Эртең саат] LT',
-        nextWeek: 'dddd [саат] LT',
-        lastDay: '[Кечээ саат] LT',
-        lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ичинде',
-        past: '%s мурун',
-        s: 'бирнече секунд',
-        ss: '%d секунд',
-        m: 'бир мүнөт',
-        mm: '%d мүнөт',
-        h: 'бир саат',
-        hh: '%d саат',
-        d: 'бир күн',
-        dd: '%d күн',
-        M: 'бир ай',
-        MM: '%d ай',
-        y: 'бир жыл',
-        yy: '%d жыл',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/lb.js
===================================================================
--- backend/node_modules/moment/dist/locale/lb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//! moment.js locale configuration
-//! locale : Luxembourgish [lb]
-//! author : mweimerskirch : https://github.com/mweimerskirch
-//! author : David Raison : https://github.com/kwisatz
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eng Minutt', 'enger Minutt'],
-        h: ['eng Stonn', 'enger Stonn'],
-        d: ['een Dag', 'engem Dag'],
-        M: ['ee Mount', 'engem Mount'],
-        y: ['ee Joer', 'engem Joer'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-function processFutureTime(string) {
-    var number = string.substr(0, string.indexOf(' '));
-    if (eifelerRegelAppliesToNumber(number)) {
-        return 'a ' + string;
-    }
-    return 'an ' + string;
-}
-function processPastTime(string) {
-    var number = string.substr(0, string.indexOf(' '));
-    if (eifelerRegelAppliesToNumber(number)) {
-        return 'viru ' + string;
-    }
-    return 'virun ' + string;
-}
-/**
- * Returns true if the word before the given number loses the '-n' ending.
- * e.g. 'an 10 Deeg' but 'a 5 Deeg'
- *
- * @param number {integer}
- * @returns {boolean}
- */
-function eifelerRegelAppliesToNumber(number) {
-    number = parseInt(number, 10);
-    if (isNaN(number)) {
-        return false;
-    }
-    if (number < 0) {
-        // Negative Number --> always true
-        return true;
-    } else if (number < 10) {
-        // Only 1 digit
-        if (4 <= number && number <= 7) {
-            return true;
-        }
-        return false;
-    } else if (number < 100) {
-        // 2 digits
-        var lastDigit = number % 10,
-            firstDigit = number / 10;
-        if (lastDigit === 0) {
-            return eifelerRegelAppliesToNumber(firstDigit);
-        }
-        return eifelerRegelAppliesToNumber(lastDigit);
-    } else if (number < 10000) {
-        // 3 or 4 digits --> recursively check first digit
-        while (number >= 10) {
-            number = number / 10;
-        }
-        return eifelerRegelAppliesToNumber(number);
-    } else {
-        // Anything larger than 4 digits: recursively check first n-3 digits
-        number = number / 1000;
-        return eifelerRegelAppliesToNumber(number);
-    }
-}
-
-export default moment.defineLocale('lb', {
-    months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm [Auer]',
-        LTS: 'H:mm:ss [Auer]',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm [Auer]',
-        LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
-    },
-    calendar: {
-        sameDay: '[Haut um] LT',
-        sameElse: 'L',
-        nextDay: '[Muer um] LT',
-        nextWeek: 'dddd [um] LT',
-        lastDay: '[Gëschter um] LT',
-        lastWeek: function () {
-            // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-            switch (this.day()) {
-                case 2:
-                case 4:
-                    return '[Leschten] dddd [um] LT';
-                default:
-                    return '[Leschte] dddd [um] LT';
-            }
-        },
-    },
-    relativeTime: {
-        future: processFutureTime,
-        past: processPastTime,
-        s: 'e puer Sekonnen',
-        ss: '%d Sekonnen',
-        m: processRelativeTime,
-        mm: '%d Minutten',
-        h: processRelativeTime,
-        hh: '%d Stonnen',
-        d: processRelativeTime,
-        dd: '%d Deeg',
-        M: processRelativeTime,
-        MM: '%d Méint',
-        y: processRelativeTime,
-        yy: '%d Joer',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/lo.js
===================================================================
--- backend/node_modules/moment/dist/locale/lo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lao [lo]
-//! author : Ryan Hart : https://github.com/ryanhart2
-
-import moment from '../moment';
-
-export default moment.defineLocale('lo', {
-    months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-            '_'
-        ),
-    weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-    weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-    weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
-    isPM: function (input) {
-        return input === 'ຕອນແລງ';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ຕອນເຊົ້າ';
-        } else {
-            return 'ຕອນແລງ';
-        }
-    },
-    calendar: {
-        sameDay: '[ມື້ນີ້ເວລາ] LT',
-        nextDay: '[ມື້ອື່ນເວລາ] LT',
-        nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
-        lastDay: '[ມື້ວານນີ້ເວລາ] LT',
-        lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ອີກ %s',
-        past: '%sຜ່ານມາ',
-        s: 'ບໍ່ເທົ່າໃດວິນາທີ',
-        ss: '%d ວິນາທີ',
-        m: '1 ນາທີ',
-        mm: '%d ນາທີ',
-        h: '1 ຊົ່ວໂມງ',
-        hh: '%d ຊົ່ວໂມງ',
-        d: '1 ມື້',
-        dd: '%d ມື້',
-        M: '1 ເດືອນ',
-        MM: '%d ເດືອນ',
-        y: '1 ປີ',
-        yy: '%d ປີ',
-    },
-    dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
-    ordinal: function (number) {
-        return 'ທີ່' + number;
-    },
-});
Index: ckend/node_modules/moment/dist/locale/lt.js
===================================================================
--- backend/node_modules/moment/dist/locale/lt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,125 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lithuanian [lt]
-//! author : Mindaugas Mozūras : https://github.com/mmozuras
-
-import moment from '../moment';
-
-var units = {
-    ss: 'sekundė_sekundžių_sekundes',
-    m: 'minutė_minutės_minutę',
-    mm: 'minutės_minučių_minutes',
-    h: 'valanda_valandos_valandą',
-    hh: 'valandos_valandų_valandas',
-    d: 'diena_dienos_dieną',
-    dd: 'dienos_dienų_dienas',
-    M: 'mėnuo_mėnesio_mėnesį',
-    MM: 'mėnesiai_mėnesių_mėnesius',
-    y: 'metai_metų_metus',
-    yy: 'metai_metų_metus',
-};
-function translateSeconds(number, withoutSuffix, key, isFuture) {
-    if (withoutSuffix) {
-        return 'kelios sekundės';
-    } else {
-        return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
-    }
-}
-function translateSingular(number, withoutSuffix, key, isFuture) {
-    return withoutSuffix
-        ? forms(key)[0]
-        : isFuture
-          ? forms(key)[1]
-          : forms(key)[2];
-}
-function special(number) {
-    return number % 10 === 0 || (number > 10 && number < 20);
-}
-function forms(key) {
-    return units[key].split('_');
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    if (number === 1) {
-        return (
-            result + translateSingular(number, withoutSuffix, key[0], isFuture)
-        );
-    } else if (withoutSuffix) {
-        return result + (special(number) ? forms(key)[1] : forms(key)[0]);
-    } else {
-        if (isFuture) {
-            return result + forms(key)[1];
-        } else {
-            return result + (special(number) ? forms(key)[1] : forms(key)[2]);
-        }
-    }
-}
-export default moment.defineLocale('lt', {
-    months: {
-        format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
-            '_'
-        ),
-        standalone:
-            'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
-                '_'
-            ),
-        isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
-    },
-    monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
-    weekdays: {
-        format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
-            '_'
-        ),
-        standalone:
-            'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
-                '_'
-            ),
-        isFormat: /dddd HH:mm/,
-    },
-    weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
-    weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY [m.] MMMM D [d.]',
-        LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-        LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
-        l: 'YYYY-MM-DD',
-        ll: 'YYYY [m.] MMMM D [d.]',
-        lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-        llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
-    },
-    calendar: {
-        sameDay: '[Šiandien] LT',
-        nextDay: '[Rytoj] LT',
-        nextWeek: 'dddd LT',
-        lastDay: '[Vakar] LT',
-        lastWeek: '[Praėjusį] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'po %s',
-        past: 'prieš %s',
-        s: translateSeconds,
-        ss: translate,
-        m: translateSingular,
-        mm: translate,
-        h: translateSingular,
-        hh: translate,
-        d: translateSingular,
-        dd: translate,
-        M: translateSingular,
-        MM: translate,
-        y: translateSingular,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-oji/,
-    ordinal: function (number) {
-        return number + '-oji';
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/lv.js
===================================================================
--- backend/node_modules/moment/dist/locale/lv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Latvian [lv]
-//! author : Kristaps Karlsons : https://github.com/skakri
-//! author : Jānis Elmeris : https://github.com/JanisE
-
-import moment from '../moment';
-
-var units = {
-    ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
-    m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-    mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-    h: 'stundas_stundām_stunda_stundas'.split('_'),
-    hh: 'stundas_stundām_stunda_stundas'.split('_'),
-    d: 'dienas_dienām_diena_dienas'.split('_'),
-    dd: 'dienas_dienām_diena_dienas'.split('_'),
-    M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-    MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-    y: 'gada_gadiem_gads_gadi'.split('_'),
-    yy: 'gada_gadiem_gads_gadi'.split('_'),
-};
-/**
- * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
- */
-function format(forms, number, withoutSuffix) {
-    if (withoutSuffix) {
-        // E.g. "21 minūte", "3 minūtes".
-        return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
-    } else {
-        // E.g. "21 minūtes" as in "pēc 21 minūtes".
-        // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
-        return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
-    }
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    return number + ' ' + format(units[key], number, withoutSuffix);
-}
-function relativeTimeWithSingular(number, withoutSuffix, key) {
-    return format(units[key], number, withoutSuffix);
-}
-function relativeSeconds(number, withoutSuffix) {
-    return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
-}
-
-export default moment.defineLocale('lv', {
-    months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
-    weekdays:
-        'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
-            '_'
-        ),
-    weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
-    weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY.',
-        LL: 'YYYY. [gada] D. MMMM',
-        LLL: 'YYYY. [gada] D. MMMM, HH:mm',
-        LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
-    },
-    calendar: {
-        sameDay: '[Šodien pulksten] LT',
-        nextDay: '[Rīt pulksten] LT',
-        nextWeek: 'dddd [pulksten] LT',
-        lastDay: '[Vakar pulksten] LT',
-        lastWeek: '[Pagājušā] dddd [pulksten] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'pēc %s',
-        past: 'pirms %s',
-        s: relativeSeconds,
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithSingular,
-        mm: relativeTimeWithPlural,
-        h: relativeTimeWithSingular,
-        hh: relativeTimeWithPlural,
-        d: relativeTimeWithSingular,
-        dd: relativeTimeWithPlural,
-        M: relativeTimeWithSingular,
-        MM: relativeTimeWithPlural,
-        y: relativeTimeWithSingular,
-        yy: relativeTimeWithPlural,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/me.js
===================================================================
--- backend/node_modules/moment/dist/locale/me.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Montenegrin [me]
-//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['sekund', 'sekunda', 'sekundi'],
-        m: ['jedan minut', 'jednog minuta'],
-        mm: ['minut', 'minuta', 'minuta'],
-        h: ['jedan sat', 'jednog sata'],
-        hh: ['sat', 'sata', 'sati'],
-        dd: ['dan', 'dana', 'dana'],
-        MM: ['mjesec', 'mjeseca', 'mjeseci'],
-        yy: ['godina', 'godine', 'godina'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        return number === 1
-            ? wordKey[0]
-            : number >= 2 && number <= 4
-              ? wordKey[1]
-              : wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key) {
-        var wordKey = translator.words[key];
-        if (key.length === 1) {
-            return withoutSuffix ? wordKey[0] : wordKey[1];
-        } else {
-            return (
-                number +
-                ' ' +
-                translator.correctGrammaticalCase(number, wordKey)
-            );
-        }
-    },
-};
-
-export default moment.defineLocale('me', {
-    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sjutra u] LT',
-
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[juče u] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[prošle] [nedjelje] [u] LT',
-                '[prošlog] [ponedjeljka] [u] LT',
-                '[prošlog] [utorka] [u] LT',
-                '[prošle] [srijede] [u] LT',
-                '[prošlog] [četvrtka] [u] LT',
-                '[prošlog] [petka] [u] LT',
-                '[prošle] [subote] [u] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'nekoliko sekundi',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: 'dan',
-        dd: translator.translate,
-        M: 'mjesec',
-        MM: translator.translate,
-        y: 'godinu',
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/mi.js
===================================================================
--- backend/node_modules/moment/dist/locale/mi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maori [mi]
-//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
-
-import moment from '../moment';
-
-export default moment.defineLocale('mi', {
-    months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
-        '_'
-    ),
-    monthsShort:
-        'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
-            '_'
-        ),
-    monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
-    weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
-    weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-    weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [i] HH:mm',
-        LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i teie mahana, i] LT',
-        nextDay: '[apopo i] LT',
-        nextWeek: 'dddd [i] LT',
-        lastDay: '[inanahi i] LT',
-        lastWeek: 'dddd [whakamutunga i] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'i roto i %s',
-        past: '%s i mua',
-        s: 'te hēkona ruarua',
-        ss: '%d hēkona',
-        m: 'he meneti',
-        mm: '%d meneti',
-        h: 'te haora',
-        hh: '%d haora',
-        d: 'he ra',
-        dd: '%d ra',
-        M: 'he marama',
-        MM: '%d marama',
-        y: 'he tau',
-        yy: '%d tau',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/mk.js
===================================================================
--- backend/node_modules/moment/dist/locale/mk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//! moment.js locale configuration
-//! locale : Macedonian [mk]
-//! author : Borislav Mickov : https://github.com/B0k0
-//! author : Sashko Todorov : https://github.com/bkyceh
-import moment from '../moment';
-
-export default moment.defineLocale('mk', {
-    months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
-        '_'
-    ),
-    monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
-    weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
-        '_'
-    ),
-    weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
-    weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Денес во] LT',
-        nextDay: '[Утре во] LT',
-        nextWeek: '[Во] dddd [во] LT',
-        lastDay: '[Вчера во] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 6:
-                    return '[Изминатата] dddd [во] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[Изминатиот] dddd [во] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: 'пред %s',
-        s: 'неколку секунди',
-        ss: '%d секунди',
-        m: 'една минута',
-        mm: '%d минути',
-        h: 'еден час',
-        hh: '%d часа',
-        d: 'еден ден',
-        dd: '%d дена',
-        M: 'еден месец',
-        MM: '%d месеци',
-        y: 'една година',
-        yy: '%d години',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-    ordinal: function (number) {
-        var lastDigit = number % 10,
-            last2Digits = number % 100;
-        if (number === 0) {
-            return number + '-ев';
-        } else if (last2Digits === 0) {
-            return number + '-ен';
-        } else if (last2Digits > 10 && last2Digits < 20) {
-            return number + '-ти';
-        } else if (lastDigit === 1) {
-            return number + '-ви';
-        } else if (lastDigit === 2) {
-            return number + '-ри';
-        } else if (lastDigit === 7 || lastDigit === 8) {
-            return number + '-ми';
-        } else {
-            return number + '-ти';
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ml.js
===================================================================
--- backend/node_modules/moment/dist/locale/ml.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malayalam [ml]
-//! author : Floyd Pink : https://github.com/floydpink
-
-import moment from '../moment';
-
-export default moment.defineLocale('ml', {
-    months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
-            '_'
-        ),
-    weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
-    weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm -നു',
-        LTS: 'A h:mm:ss -നു',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm -നു',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
-    },
-    calendar: {
-        sameDay: '[ഇന്ന്] LT',
-        nextDay: '[നാളെ] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ഇന്നലെ] LT',
-        lastWeek: '[കഴിഞ്ഞ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s കഴിഞ്ഞ്',
-        past: '%s മുൻപ്',
-        s: 'അൽപ നിമിഷങ്ങൾ',
-        ss: '%d സെക്കൻഡ്',
-        m: 'ഒരു മിനിറ്റ്',
-        mm: '%d മിനിറ്റ്',
-        h: 'ഒരു മണിക്കൂർ',
-        hh: '%d മണിക്കൂർ',
-        d: 'ഒരു ദിവസം',
-        dd: '%d ദിവസം',
-        M: 'ഒരു മാസം',
-        MM: '%d മാസം',
-        y: 'ഒരു വർഷം',
-        yy: '%d വർഷം',
-    },
-    meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'രാത്രി' && hour >= 4) ||
-            meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
-            meridiem === 'വൈകുന്നേരം'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'രാത്രി';
-        } else if (hour < 12) {
-            return 'രാവിലെ';
-        } else if (hour < 17) {
-            return 'ഉച്ച കഴിഞ്ഞ്';
-        } else if (hour < 20) {
-            return 'വൈകുന്നേരം';
-        } else {
-            return 'രാത്രി';
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/mn.js
===================================================================
--- backend/node_modules/moment/dist/locale/mn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Mongolian [mn]
-//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
-
-import moment from '../moment';
-
-function translate(number, withoutSuffix, key, isFuture) {
-    switch (key) {
-        case 's':
-            return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
-        case 'ss':
-            return number + (withoutSuffix ? ' секунд' : ' секундын');
-        case 'm':
-        case 'mm':
-            return number + (withoutSuffix ? ' минут' : ' минутын');
-        case 'h':
-        case 'hh':
-            return number + (withoutSuffix ? ' цаг' : ' цагийн');
-        case 'd':
-        case 'dd':
-            return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
-        case 'M':
-        case 'MM':
-            return number + (withoutSuffix ? ' сар' : ' сарын');
-        case 'y':
-        case 'yy':
-            return number + (withoutSuffix ? ' жил' : ' жилийн');
-        default:
-            return number;
-    }
-}
-
-export default moment.defineLocale('mn', {
-    months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
-        '_'
-    ),
-    monthsShort:
-        '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
-    weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
-    weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY оны MMMMын D',
-        LLL: 'YYYY оны MMMMын D HH:mm',
-        LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
-    },
-    meridiemParse: /ҮӨ|ҮХ/i,
-    isPM: function (input) {
-        return input === 'ҮХ';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ҮӨ';
-        } else {
-            return 'ҮХ';
-        }
-    },
-    calendar: {
-        sameDay: '[Өнөөдөр] LT',
-        nextDay: '[Маргааш] LT',
-        nextWeek: '[Ирэх] dddd LT',
-        lastDay: '[Өчигдөр] LT',
-        lastWeek: '[Өнгөрсөн] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s дараа',
-        past: '%s өмнө',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + ' өдөр';
-            default:
-                return number;
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/mr.js
===================================================================
--- backend/node_modules/moment/dist/locale/mr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,203 +1,0 @@
-//! moment.js locale configuration
-//! locale : Marathi [mr]
-//! author : Harshad Kale : https://github.com/kalehv
-//! author : Vivek Athalye : https://github.com/vnathalye
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    };
-
-function relativeTimeMr(number, withoutSuffix, string, isFuture) {
-    var output = '';
-    if (withoutSuffix) {
-        switch (string) {
-            case 's':
-                output = 'काही सेकंद';
-                break;
-            case 'ss':
-                output = '%d सेकंद';
-                break;
-            case 'm':
-                output = 'एक मिनिट';
-                break;
-            case 'mm':
-                output = '%d मिनिटे';
-                break;
-            case 'h':
-                output = 'एक तास';
-                break;
-            case 'hh':
-                output = '%d तास';
-                break;
-            case 'd':
-                output = 'एक दिवस';
-                break;
-            case 'dd':
-                output = '%d दिवस';
-                break;
-            case 'M':
-                output = 'एक महिना';
-                break;
-            case 'MM':
-                output = '%d महिने';
-                break;
-            case 'y':
-                output = 'एक वर्ष';
-                break;
-            case 'yy':
-                output = '%d वर्षे';
-                break;
-        }
-    } else {
-        switch (string) {
-            case 's':
-                output = 'काही सेकंदां';
-                break;
-            case 'ss':
-                output = '%d सेकंदां';
-                break;
-            case 'm':
-                output = 'एका मिनिटा';
-                break;
-            case 'mm':
-                output = '%d मिनिटां';
-                break;
-            case 'h':
-                output = 'एका तासा';
-                break;
-            case 'hh':
-                output = '%d तासां';
-                break;
-            case 'd':
-                output = 'एका दिवसा';
-                break;
-            case 'dd':
-                output = '%d दिवसां';
-                break;
-            case 'M':
-                output = 'एका महिन्या';
-                break;
-            case 'MM':
-                output = '%d महिन्यां';
-                break;
-            case 'y':
-                output = 'एका वर्षा';
-                break;
-            case 'yy':
-                output = '%d वर्षां';
-                break;
-        }
-    }
-    return output.replace(/%d/i, number);
-}
-
-export default moment.defineLocale('mr', {
-    months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-        '_'
-    ),
-    monthsShort:
-        'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-    weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
-    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm वाजता',
-        LTS: 'A h:mm:ss वाजता',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm वाजता',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
-    },
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[उद्या] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[काल] LT',
-        lastWeek: '[मागील] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sमध्ये',
-        past: '%sपूर्वी',
-        s: relativeTimeMr,
-        ss: relativeTimeMr,
-        m: relativeTimeMr,
-        mm: relativeTimeMr,
-        h: relativeTimeMr,
-        hh: relativeTimeMr,
-        d: relativeTimeMr,
-        dd: relativeTimeMr,
-        M: relativeTimeMr,
-        MM: relativeTimeMr,
-        y: relativeTimeMr,
-        yy: relativeTimeMr,
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
-            return hour;
-        } else if (
-            meridiem === 'दुपारी' ||
-            meridiem === 'सायंकाळी' ||
-            meridiem === 'रात्री'
-        ) {
-            return hour >= 12 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour >= 0 && hour < 6) {
-            return 'पहाटे';
-        } else if (hour < 12) {
-            return 'सकाळी';
-        } else if (hour < 17) {
-            return 'दुपारी';
-        } else if (hour < 20) {
-            return 'सायंकाळी';
-        } else {
-            return 'रात्री';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ms-my.js
===================================================================
--- backend/node_modules/moment/dist/locale/ms-my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms-my]
-//! note : DEPRECATED, the correct one is [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-import moment from '../moment';
-
-export default moment.defineLocale('ms-my', {
-    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|tengahari|petang|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'tengahari') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'petang' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'tengahari';
-        } else if (hours < 19) {
-            return 'petang';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Esok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kelmarin pukul] LT',
-        lastWeek: 'dddd [lepas pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lepas',
-        s: 'beberapa saat',
-        ss: '%d saat',
-        m: 'seminit',
-        mm: '%d minit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ms.js
===================================================================
--- backend/node_modules/moment/dist/locale/ms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-import moment from '../moment';
-
-export default moment.defineLocale('ms', {
-    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|tengahari|petang|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'tengahari') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'petang' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'tengahari';
-        } else if (hours < 19) {
-            return 'petang';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Esok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kelmarin pukul] LT',
-        lastWeek: 'dddd [lepas pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lepas',
-        s: 'beberapa saat',
-        ss: '%d saat',
-        m: 'seminit',
-        mm: '%d minit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/mt.js
===================================================================
--- backend/node_modules/moment/dist/locale/mt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maltese (Malta) [mt]
-//! author : Alessandro Maruccia : https://github.com/alesma
-
-import moment from '../moment';
-
-export default moment.defineLocale('mt', {
-    months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
-    weekdays:
-        'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
-            '_'
-        ),
-    weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
-    weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Illum fil-]LT',
-        nextDay: '[Għada fil-]LT',
-        nextWeek: 'dddd [fil-]LT',
-        lastDay: '[Il-bieraħ fil-]LT',
-        lastWeek: 'dddd [li għadda] [fil-]LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'f’ %s',
-        past: '%s ilu',
-        s: 'ftit sekondi',
-        ss: '%d sekondi',
-        m: 'minuta',
-        mm: '%d minuti',
-        h: 'siegħa',
-        hh: '%d siegħat',
-        d: 'ġurnata',
-        dd: '%d ġranet',
-        M: 'xahar',
-        MM: '%d xhur',
-        y: 'sena',
-        yy: '%d sni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/my.js
===================================================================
--- backend/node_modules/moment/dist/locale/my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//! moment.js locale configuration
-//! locale : Burmese [my]
-//! author : Squar team, mysquar.com
-//! author : David Rossellat : https://github.com/gholadr
-//! author : Tin Aung Lin : https://github.com/thanyawzinmin
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '၁',
-        2: '၂',
-        3: '၃',
-        4: '၄',
-        5: '၅',
-        6: '၆',
-        7: '၇',
-        8: '၈',
-        9: '၉',
-        0: '၀',
-    },
-    numberMap = {
-        '၁': '1',
-        '၂': '2',
-        '၃': '3',
-        '၄': '4',
-        '၅': '5',
-        '၆': '6',
-        '၇': '7',
-        '၈': '8',
-        '၉': '9',
-        '၀': '0',
-    };
-
-export default moment.defineLocale('my', {
-    months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
-        '_'
-    ),
-    monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
-    weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
-        '_'
-    ),
-    weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-    weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[ယနေ.] LT [မှာ]',
-        nextDay: '[မနက်ဖြန်] LT [မှာ]',
-        nextWeek: 'dddd LT [မှာ]',
-        lastDay: '[မနေ.က] LT [မှာ]',
-        lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'လာမည့် %s မှာ',
-        past: 'လွန်ခဲ့သော %s က',
-        s: 'စက္ကန်.အနည်းငယ်',
-        ss: '%d စက္ကန့်',
-        m: 'တစ်မိနစ်',
-        mm: '%d မိနစ်',
-        h: 'တစ်နာရီ',
-        hh: '%d နာရီ',
-        d: 'တစ်ရက်',
-        dd: '%d ရက်',
-        M: 'တစ်လ',
-        MM: '%d လ',
-        y: 'တစ်နှစ်',
-        yy: '%d နှစ်',
-    },
-    preparse: function (string) {
-        return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/nb.js
===================================================================
--- backend/node_modules/moment/dist/locale/nb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-//! moment.js locale configuration
-//! locale : Norwegian Bokmål [nb]
-//! authors : Espen Hovlandsdal : https://github.com/rexxars
-//!           Sigurd Gartmann : https://github.com/sigurdga
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-import moment from '../moment';
-
-export default moment.defineLocale('nb', {
-    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-    weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
-    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] HH:mm',
-        LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i dag kl.] LT',
-        nextDay: '[i morgen kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[i går kl.] LT',
-        lastWeek: '[forrige] dddd [kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s siden',
-        s: 'noen sekunder',
-        ss: '%d sekunder',
-        m: 'ett minutt',
-        mm: '%d minutter',
-        h: 'én time',
-        hh: '%d timer',
-        d: 'én dag',
-        dd: '%d dager',
-        w: 'én uke',
-        ww: '%d uker',
-        M: 'én måned',
-        MM: '%d måneder',
-        y: 'ett år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ne.js
===================================================================
--- backend/node_modules/moment/dist/locale/ne.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nepalese [ne]
-//! author : suvash : https://github.com/suvash
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    };
-
-export default moment.defineLocale('ne', {
-    months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
-        '_'
-    ),
-    monthsShort:
-        'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
-        '_'
-    ),
-    weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
-    weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'Aको h:mm बजे',
-        LTS: 'Aको h:mm:ss बजे',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, Aको h:mm बजे',
-        LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'राति') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'बिहान') {
-            return hour;
-        } else if (meridiem === 'दिउँसो') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'साँझ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 3) {
-            return 'राति';
-        } else if (hour < 12) {
-            return 'बिहान';
-        } else if (hour < 16) {
-            return 'दिउँसो';
-        } else if (hour < 20) {
-            return 'साँझ';
-        } else {
-            return 'राति';
-        }
-    },
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[भोलि] LT',
-        nextWeek: '[आउँदो] dddd[,] LT',
-        lastDay: '[हिजो] LT',
-        lastWeek: '[गएको] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sमा',
-        past: '%s अगाडि',
-        s: 'केही क्षण',
-        ss: '%d सेकेण्ड',
-        m: 'एक मिनेट',
-        mm: '%d मिनेट',
-        h: 'एक घण्टा',
-        hh: '%d घण्टा',
-        d: 'एक दिन',
-        dd: '%d दिन',
-        M: 'एक महिना',
-        MM: '%d महिना',
-        y: 'एक बर्ष',
-        yy: '%d बर्ष',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/nl-be.js
===================================================================
--- backend/node_modules/moment/dist/locale/nl-be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch (Belgium) [nl-be]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    monthsParse = [
-        /^jan/i,
-        /^feb/i,
-        /^(maart|mrt\.?)$/i,
-        /^apr/i,
-        /^mei$/i,
-        /^jun[i.]?$/i,
-        /^jul[i.]?$/i,
-        /^aug/i,
-        /^sep/i,
-        /^okt/i,
-        /^nov/i,
-        /^dec/i,
-    ],
-    monthsRegex =
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-export default moment.defineLocale('nl-be', {
-    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-    monthsShortStrictRegex:
-        /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    weekdays:
-        'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[vandaag om] LT',
-        nextDay: '[morgen om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[gisteren om] LT',
-        lastWeek: '[afgelopen] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'over %s',
-        past: '%s geleden',
-        s: 'een paar seconden',
-        ss: '%d seconden',
-        m: 'één minuut',
-        mm: '%d minuten',
-        h: 'één uur',
-        hh: '%d uur',
-        d: 'één dag',
-        dd: '%d dagen',
-        M: 'één maand',
-        MM: '%d maanden',
-        y: 'één jaar',
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/nl.js
===================================================================
--- backend/node_modules/moment/dist/locale/nl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,104 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch [nl]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    monthsParse = [
-        /^jan/i,
-        /^feb/i,
-        /^(maart|mrt\.?)$/i,
-        /^apr/i,
-        /^mei$/i,
-        /^jun[i.]?$/i,
-        /^jul[i.]?$/i,
-        /^aug/i,
-        /^sep/i,
-        /^okt/i,
-        /^nov/i,
-        /^dec/i,
-    ],
-    monthsRegex =
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-export default moment.defineLocale('nl', {
-    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-    monthsShortStrictRegex:
-        /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    weekdays:
-        'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[vandaag om] LT',
-        nextDay: '[morgen om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[gisteren om] LT',
-        lastWeek: '[afgelopen] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'over %s',
-        past: '%s geleden',
-        s: 'een paar seconden',
-        ss: '%d seconden',
-        m: 'één minuut',
-        mm: '%d minuten',
-        h: 'één uur',
-        hh: '%d uur',
-        d: 'één dag',
-        dd: '%d dagen',
-        w: 'één week',
-        ww: '%d weken',
-        M: 'één maand',
-        MM: '%d maanden',
-        y: 'één jaar',
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/nn.js
===================================================================
--- backend/node_modules/moment/dist/locale/nn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nynorsk [nn]
-//! authors : https://github.com/mechuwind
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-import moment from '../moment';
-
-export default moment.defineLocale('nn', {
-    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
-    weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
-    weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] H:mm',
-        LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[I dag klokka] LT',
-        nextDay: '[I morgon klokka] LT',
-        nextWeek: 'dddd [klokka] LT',
-        lastDay: '[I går klokka] LT',
-        lastWeek: '[Føregåande] dddd [klokka] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s sidan',
-        s: 'nokre sekund',
-        ss: '%d sekund',
-        m: 'eit minutt',
-        mm: '%d minutt',
-        h: 'ein time',
-        hh: '%d timar',
-        d: 'ein dag',
-        dd: '%d dagar',
-        w: 'ei veke',
-        ww: '%d veker',
-        M: 'ein månad',
-        MM: '%d månader',
-        y: 'eit år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/oc-lnc.js
===================================================================
--- backend/node_modules/moment/dist/locale/oc-lnc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//! moment.js locale configuration
-//! locale : Occitan, lengadocian dialecte [oc-lnc]
-//! author : Quentin PAGÈS : https://github.com/Quenty31
-
-import moment from '../moment';
-
-export default moment.defineLocale('oc-lnc', {
-    months: {
-        standalone:
-            'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
-                '_'
-            ),
-        format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
-            '_'
-        ),
-        isFormat: /D[oD]?(\s)+MMMM/,
-    },
-    monthsShort:
-        'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
-        '_'
-    ),
-    weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
-    weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [de] YYYY',
-        ll: 'D MMM YYYY',
-        LLL: 'D MMMM [de] YYYY [a] H:mm',
-        lll: 'D MMM YYYY, H:mm',
-        LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
-        llll: 'ddd D MMM YYYY, H:mm',
-    },
-    calendar: {
-        sameDay: '[uèi a] LT',
-        nextDay: '[deman a] LT',
-        nextWeek: 'dddd [a] LT',
-        lastDay: '[ièr a] LT',
-        lastWeek: 'dddd [passat a] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: "d'aquí %s",
-        past: 'fa %s',
-        s: 'unas segondas',
-        ss: '%d segondas',
-        m: 'una minuta',
-        mm: '%d minutas',
-        h: 'una ora',
-        hh: '%d oras',
-        d: 'un jorn',
-        dd: '%d jorns',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-    ordinal: function (number, period) {
-        var output =
-            number === 1
-                ? 'r'
-                : number === 2
-                  ? 'n'
-                  : number === 3
-                    ? 'r'
-                    : number === 4
-                      ? 't'
-                      : 'è';
-        if (period === 'w' || period === 'W') {
-            output = 'a';
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4,
-    },
-});
Index: ckend/node_modules/moment/dist/locale/pa-in.js
===================================================================
--- backend/node_modules/moment/dist/locale/pa-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//! moment.js locale configuration
-//! locale : Punjabi (India) [pa-in]
-//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '੧',
-        2: '੨',
-        3: '੩',
-        4: '੪',
-        5: '੫',
-        6: '੬',
-        7: '੭',
-        8: '੮',
-        9: '੯',
-        0: '੦',
-    },
-    numberMap = {
-        '੧': '1',
-        '੨': '2',
-        '੩': '3',
-        '੪': '4',
-        '੫': '5',
-        '੬': '6',
-        '੭': '7',
-        '੮': '8',
-        '੯': '9',
-        '੦': '0',
-    };
-
-export default moment.defineLocale('pa-in', {
-    // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
-    months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-            '_'
-        ),
-    weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
-        '_'
-    ),
-    weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-    weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm ਵਜੇ',
-        LTS: 'A h:mm:ss ਵਜੇ',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
-    },
-    calendar: {
-        sameDay: '[ਅਜ] LT',
-        nextDay: '[ਕਲ] LT',
-        nextWeek: '[ਅਗਲਾ] dddd, LT',
-        lastDay: '[ਕਲ] LT',
-        lastWeek: '[ਪਿਛਲੇ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ਵਿੱਚ',
-        past: '%s ਪਿਛਲੇ',
-        s: 'ਕੁਝ ਸਕਿੰਟ',
-        ss: '%d ਸਕਿੰਟ',
-        m: 'ਇਕ ਮਿੰਟ',
-        mm: '%d ਮਿੰਟ',
-        h: 'ਇੱਕ ਘੰਟਾ',
-        hh: '%d ਘੰਟੇ',
-        d: 'ਇੱਕ ਦਿਨ',
-        dd: '%d ਦਿਨ',
-        M: 'ਇੱਕ ਮਹੀਨਾ',
-        MM: '%d ਮਹੀਨੇ',
-        y: 'ਇੱਕ ਸਾਲ',
-        yy: '%d ਸਾਲ',
-    },
-    preparse: function (string) {
-        return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-    meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ਰਾਤ') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ਸਵੇਰ') {
-            return hour;
-        } else if (meridiem === 'ਦੁਪਹਿਰ') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'ਸ਼ਾਮ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ਰਾਤ';
-        } else if (hour < 10) {
-            return 'ਸਵੇਰ';
-        } else if (hour < 17) {
-            return 'ਦੁਪਹਿਰ';
-        } else if (hour < 20) {
-            return 'ਸ਼ਾਮ';
-        } else {
-            return 'ਰਾਤ';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/pl.js
===================================================================
--- backend/node_modules/moment/dist/locale/pl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Polish [pl]
-//! author : Rafal Hirsz : https://github.com/evoL
-
-import moment from '../moment';
-
-var monthsNominative =
-        'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
-            '_'
-        ),
-    monthsSubjective =
-        'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
-            '_'
-        ),
-    monthsParse = [
-        /^sty/i,
-        /^lut/i,
-        /^mar/i,
-        /^kwi/i,
-        /^maj/i,
-        /^cze/i,
-        /^lip/i,
-        /^sie/i,
-        /^wrz/i,
-        /^paź/i,
-        /^lis/i,
-        /^gru/i,
-    ];
-function plural(n) {
-    return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
-}
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            return result + (plural(number) ? 'sekundy' : 'sekund');
-        case 'm':
-            return withoutSuffix ? 'minuta' : 'minutę';
-        case 'mm':
-            return result + (plural(number) ? 'minuty' : 'minut');
-        case 'h':
-            return withoutSuffix ? 'godzina' : 'godzinę';
-        case 'hh':
-            return result + (plural(number) ? 'godziny' : 'godzin');
-        case 'ww':
-            return result + (plural(number) ? 'tygodnie' : 'tygodni');
-        case 'MM':
-            return result + (plural(number) ? 'miesiące' : 'miesięcy');
-        case 'yy':
-            return result + (plural(number) ? 'lata' : 'lat');
-    }
-}
-
-export default moment.defineLocale('pl', {
-    months: function (momentToFormat, format) {
-        if (!momentToFormat) {
-            return monthsNominative;
-        } else if (/D MMMM/.test(format)) {
-            return monthsSubjective[momentToFormat.month()];
-        } else {
-            return monthsNominative[momentToFormat.month()];
-        }
-    },
-    monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays:
-        'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
-    weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
-    weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Dziś o] LT',
-        nextDay: '[Jutro o] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[W niedzielę o] LT';
-
-                case 2:
-                    return '[We wtorek o] LT';
-
-                case 3:
-                    return '[W środę o] LT';
-
-                case 6:
-                    return '[W sobotę o] LT';
-
-                default:
-                    return '[W] dddd [o] LT';
-            }
-        },
-        lastDay: '[Wczoraj o] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[W zeszłą niedzielę o] LT';
-                case 3:
-                    return '[W zeszłą środę o] LT';
-                case 6:
-                    return '[W zeszłą sobotę o] LT';
-                default:
-                    return '[W zeszły] dddd [o] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: '%s temu',
-        s: 'kilka sekund',
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: '1 dzień',
-        dd: '%d dni',
-        w: 'tydzień',
-        ww: translate,
-        M: 'miesiąc',
-        MM: translate,
-        y: 'rok',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/pt-br.js
===================================================================
--- backend/node_modules/moment/dist/locale/pt-br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese (Brazil) [pt-br]
-//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-import moment from '../moment';
-
-export default moment.defineLocale('pt-br', {
-    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-    weekdays:
-        'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
-            '_'
-        ),
-    weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
-    weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hoje às] LT',
-        nextDay: '[Amanhã às] LT',
-        nextWeek: 'dddd [às] LT',
-        lastDay: '[Ontem às] LT',
-        lastWeek: function () {
-            return this.day() === 0 || this.day() === 6
-                ? '[Último] dddd [às] LT' // Saturday + Sunday
-                : '[Última] dddd [às] LT'; // Monday - Friday
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'em %s',
-        past: 'há %s',
-        s: 'poucos segundos',
-        ss: '%d segundos',
-        m: 'um minuto',
-        mm: '%d minutos',
-        h: 'uma hora',
-        hh: '%d horas',
-        d: 'um dia',
-        dd: '%d dias',
-        M: 'um mês',
-        MM: '%d meses',
-        y: 'um ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    invalidDate: 'Data inválida',
-});
Index: ckend/node_modules/moment/dist/locale/pt.js
===================================================================
--- backend/node_modules/moment/dist/locale/pt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese [pt]
-//! author : Jefferson : https://github.com/jalex79
-
-import moment from '../moment';
-
-export default moment.defineLocale('pt', {
-    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-    weekdays:
-        'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
-            '_'
-        ),
-    weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
-    weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY HH:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hoje às] LT',
-        nextDay: '[Amanhã às] LT',
-        nextWeek: 'dddd [às] LT',
-        lastDay: '[Ontem às] LT',
-        lastWeek: function () {
-            return this.day() === 0 || this.day() === 6
-                ? '[Último] dddd [às] LT' // Saturday + Sunday
-                : '[Última] dddd [às] LT'; // Monday - Friday
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'em %s',
-        past: 'há %s',
-        s: 'segundos',
-        ss: '%d segundos',
-        m: 'um minuto',
-        mm: '%d minutos',
-        h: 'uma hora',
-        hh: '%d horas',
-        d: 'um dia',
-        dd: '%d dias',
-        w: 'uma semana',
-        ww: '%d semanas',
-        M: 'um mês',
-        MM: '%d meses',
-        y: 'um ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ro.js
===================================================================
--- backend/node_modules/moment/dist/locale/ro.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Romanian [ro]
-//! author : Vlad Gurdiga : https://github.com/gurdiga
-//! author : Valentin Agachi : https://github.com/avaly
-//! author : Emanuel Cepoi : https://github.com/cepem
-
-import moment from '../moment';
-
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-            ss: 'secunde',
-            mm: 'minute',
-            hh: 'ore',
-            dd: 'zile',
-            ww: 'săptămâni',
-            MM: 'luni',
-            yy: 'ani',
-        },
-        separator = ' ';
-    if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
-        separator = ' de ';
-    }
-    return number + separator + format[key];
-}
-
-export default moment.defineLocale('ro', {
-    months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
-        '_'
-    ),
-    monthsShort:
-        'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
-    weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
-    weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[azi la] LT',
-        nextDay: '[mâine la] LT',
-        nextWeek: 'dddd [la] LT',
-        lastDay: '[ieri la] LT',
-        lastWeek: '[fosta] dddd [la] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'peste %s',
-        past: '%s în urmă',
-        s: 'câteva secunde',
-        ss: relativeTimeWithPlural,
-        m: 'un minut',
-        mm: relativeTimeWithPlural,
-        h: 'o oră',
-        hh: relativeTimeWithPlural,
-        d: 'o zi',
-        dd: relativeTimeWithPlural,
-        w: 'o săptămână',
-        ww: relativeTimeWithPlural,
-        M: 'o lună',
-        MM: relativeTimeWithPlural,
-        y: 'un an',
-        yy: relativeTimeWithPlural,
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ru.js
===================================================================
--- backend/node_modules/moment/dist/locale/ru.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,213 +1,0 @@
-//! moment.js locale configuration
-//! locale : Russian [ru]
-//! author : Viktorminator : https://github.com/Viktorminator
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Коренберг Марк : https://github.com/socketpair
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-        mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
-        hh: 'час_часа_часов',
-        dd: 'день_дня_дней',
-        ww: 'неделя_недели_недель',
-        MM: 'месяц_месяца_месяцев',
-        yy: 'год_года_лет',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'минута' : 'минуту';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-var monthsParse = [
-    /^янв/i,
-    /^фев/i,
-    /^мар/i,
-    /^апр/i,
-    /^ма[йя]/i,
-    /^июн/i,
-    /^июл/i,
-    /^авг/i,
-    /^сен/i,
-    /^окт/i,
-    /^ноя/i,
-    /^дек/i,
-];
-
-// http://new.gramota.ru/spravka/rules/139-prop : § 103
-// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-// CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-export default moment.defineLocale('ru', {
-    months: {
-        format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
-            '_'
-        ),
-        standalone:
-            'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-                '_'
-            ),
-    },
-    monthsShort: {
-        // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
-        format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
-            '_'
-        ),
-        standalone:
-            'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
-                '_'
-            ),
-    },
-    weekdays: {
-        standalone:
-            'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
-                '_'
-            ),
-        format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
-            '_'
-        ),
-        isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
-    },
-    weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-    weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
-    monthsRegex:
-        /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-    // копия предыдущего
-    monthsShortRegex:
-        /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-    // полные названия с падежами
-    monthsStrictRegex:
-        /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
-
-    // Выражение, которое соответствует только сокращённым формам
-    monthsShortStrictRegex:
-        /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY г.',
-        LLL: 'D MMMM YYYY г., H:mm',
-        LLLL: 'dddd, D MMMM YYYY г., H:mm',
-    },
-    calendar: {
-        sameDay: '[Сегодня, в] LT',
-        nextDay: '[Завтра, в] LT',
-        lastDay: '[Вчера, в] LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                switch (this.day()) {
-                    case 0:
-                        return '[В следующее] dddd, [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[В следующий] dddd, [в] LT';
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[В следующую] dddd, [в] LT';
-                }
-            } else {
-                if (this.day() === 2) {
-                    return '[Во] dddd, [в] LT';
-                } else {
-                    return '[В] dddd, [в] LT';
-                }
-            }
-        },
-        lastWeek: function (now) {
-            if (now.week() !== this.week()) {
-                switch (this.day()) {
-                    case 0:
-                        return '[В прошлое] dddd, [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[В прошлый] dddd, [в] LT';
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[В прошлую] dddd, [в] LT';
-                }
-            } else {
-                if (this.day() === 2) {
-                    return '[Во] dddd, [в] LT';
-                } else {
-                    return '[В] dddd, [в] LT';
-                }
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'через %s',
-        past: '%s назад',
-        s: 'несколько секунд',
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: 'час',
-        hh: relativeTimeWithPlural,
-        d: 'день',
-        dd: relativeTimeWithPlural,
-        w: 'неделя',
-        ww: relativeTimeWithPlural,
-        M: 'месяц',
-        MM: relativeTimeWithPlural,
-        y: 'год',
-        yy: relativeTimeWithPlural,
-    },
-    meridiemParse: /ночи|утра|дня|вечера/i,
-    isPM: function (input) {
-        return /^(дня|вечера)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночи';
-        } else if (hour < 12) {
-            return 'утра';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечера';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-                return number + '-й';
-            case 'D':
-                return number + '-го';
-            case 'w':
-            case 'W':
-                return number + '-я';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sd.js
===================================================================
--- backend/node_modules/moment/dist/locale/sd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,81 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sindhi [sd]
-//! author : Narain Sagar : https://github.com/narainsagar
-
-import moment from '../moment';
-
-var months = [
-        'جنوري',
-        'فيبروري',
-        'مارچ',
-        'اپريل',
-        'مئي',
-        'جون',
-        'جولاءِ',
-        'آگسٽ',
-        'سيپٽمبر',
-        'آڪٽوبر',
-        'نومبر',
-        'ڊسمبر',
-    ],
-    days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
-
-export default moment.defineLocale('sd', {
-    months: months,
-    monthsShort: months,
-    weekdays: days,
-    weekdaysShort: days,
-    weekdaysMin: days,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd، D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /صبح|شام/,
-    isPM: function (input) {
-        return 'شام' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'صبح';
-        }
-        return 'شام';
-    },
-    calendar: {
-        sameDay: '[اڄ] LT',
-        nextDay: '[سڀاڻي] LT',
-        nextWeek: 'dddd [اڳين هفتي تي] LT',
-        lastDay: '[ڪالهه] LT',
-        lastWeek: '[گزريل هفتي] dddd [تي] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s پوء',
-        past: '%s اڳ',
-        s: 'چند سيڪنڊ',
-        ss: '%d سيڪنڊ',
-        m: 'هڪ منٽ',
-        mm: '%d منٽ',
-        h: 'هڪ ڪلاڪ',
-        hh: '%d ڪلاڪ',
-        d: 'هڪ ڏينهن',
-        dd: '%d ڏينهن',
-        M: 'هڪ مهينو',
-        MM: '%d مهينا',
-        y: 'هڪ سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/se.js
===================================================================
--- backend/node_modules/moment/dist/locale/se.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Sami [se]
-//! authors : Bård Rolstad Henriksen : https://github.com/karamell
-
-import moment from '../moment';
-
-export default moment.defineLocale('se', {
-    months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
-        '_'
-    ),
-    monthsShort:
-        'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
-    weekdays:
-        'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
-            '_'
-        ),
-    weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
-    weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'MMMM D. [b.] YYYY',
-        LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
-        LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[otne ti] LT',
-        nextDay: '[ihttin ti] LT',
-        nextWeek: 'dddd [ti] LT',
-        lastDay: '[ikte ti] LT',
-        lastWeek: '[ovddit] dddd [ti] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s geažes',
-        past: 'maŋit %s',
-        s: 'moadde sekunddat',
-        ss: '%d sekunddat',
-        m: 'okta minuhta',
-        mm: '%d minuhtat',
-        h: 'okta diimmu',
-        hh: '%d diimmut',
-        d: 'okta beaivi',
-        dd: '%d beaivvit',
-        M: 'okta mánnu',
-        MM: '%d mánut',
-        y: 'okta jahki',
-        yy: '%d jagit',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/si.js
===================================================================
--- backend/node_modules/moment/dist/locale/si.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sinhalese [si]
-//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
-
-import moment from '../moment';
-
-/*jshint -W100*/
-export default moment.defineLocale('si', {
-    months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
-        '_'
-    ),
-    monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
-        '_'
-    ),
-    weekdays:
-        'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
-            '_'
-        ),
-    weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
-    weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'a h:mm',
-        LTS: 'a h:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY MMMM D',
-        LLL: 'YYYY MMMM D, a h:mm',
-        LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
-    },
-    calendar: {
-        sameDay: '[අද] LT[ට]',
-        nextDay: '[හෙට] LT[ට]',
-        nextWeek: 'dddd LT[ට]',
-        lastDay: '[ඊයේ] LT[ට]',
-        lastWeek: '[පසුගිය] dddd LT[ට]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sකින්',
-        past: '%sකට පෙර',
-        s: 'තත්පර කිහිපය',
-        ss: 'තත්පර %d',
-        m: 'මිනිත්තුව',
-        mm: 'මිනිත්තු %d',
-        h: 'පැය',
-        hh: 'පැය %d',
-        d: 'දිනය',
-        dd: 'දින %d',
-        M: 'මාසය',
-        MM: 'මාස %d',
-        y: 'වසර',
-        yy: 'වසර %d',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
-    ordinal: function (number) {
-        return number + ' වැනි';
-    },
-    meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
-    isPM: function (input) {
-        return input === 'ප.ව.' || input === 'පස් වරු';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'ප.ව.' : 'පස් වරු';
-        } else {
-            return isLower ? 'පෙ.ව.' : 'පෙර වරු';
-        }
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sk.js
===================================================================
--- backend/node_modules/moment/dist/locale/sk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,145 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovak [sk]
-//! author : Martin Minka : https://github.com/k2s
-//! based on work of petrbela : https://github.com/petrbela
-
-import moment from '../moment';
-
-var months =
-        'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
-            '_'
-        ),
-    monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-function plural(n) {
-    return n > 1 && n < 5;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's': // a few seconds / in a few seconds / a few seconds ago
-            return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
-        case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'sekundy' : 'sekúnd');
-            } else {
-                return result + 'sekundami';
-            }
-        case 'm': // a minute / in a minute / a minute ago
-            return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
-        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'minúty' : 'minút');
-            } else {
-                return result + 'minútami';
-            }
-        case 'h': // an hour / in an hour / an hour ago
-            return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-        case 'hh': // 9 hours / in 9 hours / 9 hours ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'hodiny' : 'hodín');
-            } else {
-                return result + 'hodinami';
-            }
-        case 'd': // a day / in a day / a day ago
-            return withoutSuffix || isFuture ? 'deň' : 'dňom';
-        case 'dd': // 9 days / in 9 days / 9 days ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'dni' : 'dní');
-            } else {
-                return result + 'dňami';
-            }
-        case 'M': // a month / in a month / a month ago
-            return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
-        case 'MM': // 9 months / in 9 months / 9 months ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'mesiace' : 'mesiacov');
-            } else {
-                return result + 'mesiacmi';
-            }
-        case 'y': // a year / in a year / a year ago
-            return withoutSuffix || isFuture ? 'rok' : 'rokom';
-        case 'yy': // 9 years / in 9 years / 9 years ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'roky' : 'rokov');
-            } else {
-                return result + 'rokmi';
-            }
-    }
-}
-
-export default moment.defineLocale('sk', {
-    months: months,
-    monthsShort: monthsShort,
-    weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
-    weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
-    weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[dnes o] LT',
-        nextDay: '[zajtra o] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v nedeľu o] LT';
-                case 1:
-                case 2:
-                    return '[v] dddd [o] LT';
-                case 3:
-                    return '[v stredu o] LT';
-                case 4:
-                    return '[vo štvrtok o] LT';
-                case 5:
-                    return '[v piatok o] LT';
-                case 6:
-                    return '[v sobotu o] LT';
-            }
-        },
-        lastDay: '[včera o] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[minulú nedeľu o] LT';
-                case 1:
-                case 2:
-                    return '[minulý] dddd [o] LT';
-                case 3:
-                    return '[minulú stredu o] LT';
-                case 4:
-                case 5:
-                    return '[minulý] dddd [o] LT';
-                case 6:
-                    return '[minulú sobotu o] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'pred %s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sl.js
===================================================================
--- backend/node_modules/moment/dist/locale/sl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovenian [sl]
-//! author : Robert Sedovšek : https://github.com/sedovsek
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's':
-            return withoutSuffix || isFuture
-                ? 'nekaj sekund'
-                : 'nekaj sekundami';
-        case 'ss':
-            if (number === 1) {
-                result += withoutSuffix ? 'sekundo' : 'sekundi';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
-            } else {
-                result += 'sekund';
-            }
-            return result;
-        case 'm':
-            return withoutSuffix ? 'ena minuta' : 'eno minuto';
-        case 'mm':
-            if (number === 1) {
-                result += withoutSuffix ? 'minuta' : 'minuto';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'minute' : 'minutami';
-            } else {
-                result += withoutSuffix || isFuture ? 'minut' : 'minutami';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'ena ura' : 'eno uro';
-        case 'hh':
-            if (number === 1) {
-                result += withoutSuffix ? 'ura' : 'uro';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'uri' : 'urama';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'ure' : 'urami';
-            } else {
-                result += withoutSuffix || isFuture ? 'ur' : 'urami';
-            }
-            return result;
-        case 'd':
-            return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
-        case 'dd':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'dan' : 'dnem';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
-            } else {
-                result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
-            }
-            return result;
-        case 'M':
-            return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
-        case 'MM':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
-            } else {
-                result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
-            }
-            return result;
-        case 'y':
-            return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
-        case 'yy':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'leto' : 'letom';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'leti' : 'letoma';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'leta' : 'leti';
-            } else {
-                result += withoutSuffix || isFuture ? 'let' : 'leti';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('sl', {
-    months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
-    weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
-    weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD. MM. YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danes ob] LT',
-        nextDay: '[jutri ob] LT',
-
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v] [nedeljo] [ob] LT';
-                case 3:
-                    return '[v] [sredo] [ob] LT';
-                case 6:
-                    return '[v] [soboto] [ob] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[v] dddd [ob] LT';
-            }
-        },
-        lastDay: '[včeraj ob] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[prejšnjo] [nedeljo] [ob] LT';
-                case 3:
-                    return '[prejšnjo] [sredo] [ob] LT';
-                case 6:
-                    return '[prejšnjo] [soboto] [ob] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prejšnji] dddd [ob] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'čez %s',
-        past: 'pred %s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sq.js
===================================================================
--- backend/node_modules/moment/dist/locale/sq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Albanian [sq]
-//! author : Flakërim Ismani : https://github.com/flakerimi
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Oerd Cukalla : https://github.com/oerd
-
-import moment from '../moment';
-
-export default moment.defineLocale('sq', {
-    months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
-    weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
-        '_'
-    ),
-    weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
-    weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
-    weekdaysParseExact: true,
-    meridiemParse: /PD|MD/,
-    isPM: function (input) {
-        return input.charAt(0) === 'M';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        return hours < 12 ? 'PD' : 'MD';
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Sot në] LT',
-        nextDay: '[Nesër në] LT',
-        nextWeek: 'dddd [në] LT',
-        lastDay: '[Dje në] LT',
-        lastWeek: 'dddd [e kaluar në] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'në %s',
-        past: '%s më parë',
-        s: 'disa sekonda',
-        ss: '%d sekonda',
-        m: 'një minutë',
-        mm: '%d minuta',
-        h: 'një orë',
-        hh: '%d orë',
-        d: 'një ditë',
-        dd: '%d ditë',
-        M: 'një muaj',
-        MM: '%d muaj',
-        y: 'një vit',
-        yy: '%d vite',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sr-cyrl.js
===================================================================
--- backend/node_modules/moment/dist/locale/sr-cyrl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,127 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian Cyrillic [sr-cyrl]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['секунда', 'секунде', 'секунди'],
-        m: ['један минут', 'једног минута'],
-        mm: ['минут', 'минута', 'минута'],
-        h: ['један сат', 'једног сата'],
-        hh: ['сат', 'сата', 'сати'],
-        d: ['један дан', 'једног дана'],
-        dd: ['дан', 'дана', 'дана'],
-        M: ['један месец', 'једног месеца'],
-        MM: ['месец', 'месеца', 'месеци'],
-        y: ['једну годину', 'једне године'],
-        yy: ['годину', 'године', 'година'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        if (
-            number % 10 >= 1 &&
-            number % 10 <= 4 &&
-            (number % 100 < 10 || number % 100 >= 20)
-        ) {
-            return number % 10 === 1 ? wordKey[0] : wordKey[1];
-        }
-        return wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key, isFuture) {
-        var wordKey = translator.words[key],
-            word;
-
-        if (key.length === 1) {
-            // Nominativ
-            if (key === 'y' && withoutSuffix) return 'једна година';
-            return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-        }
-
-        word = translator.correctGrammaticalCase(number, wordKey);
-        // Nominativ
-        if (key === 'yy' && withoutSuffix && word === 'годину') {
-            return number + ' година';
-        }
-
-        return number + ' ' + word;
-    },
-};
-
-export default moment.defineLocale('sr-cyrl', {
-    months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
-        '_'
-    ),
-    monthsShort:
-        'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
-    weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
-    weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D. M. YYYY.',
-        LL: 'D. MMMM YYYY.',
-        LLL: 'D. MMMM YYYY. H:mm',
-        LLLL: 'dddd, D. MMMM YYYY. H:mm',
-    },
-    calendar: {
-        sameDay: '[данас у] LT',
-        nextDay: '[сутра у] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[у] [недељу] [у] LT';
-                case 3:
-                    return '[у] [среду] [у] LT';
-                case 6:
-                    return '[у] [суботу] [у] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[у] dddd [у] LT';
-            }
-        },
-        lastDay: '[јуче у] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[прошле] [недеље] [у] LT',
-                '[прошлог] [понедељка] [у] LT',
-                '[прошлог] [уторка] [у] LT',
-                '[прошле] [среде] [у] LT',
-                '[прошлог] [четвртка] [у] LT',
-                '[прошлог] [петка] [у] LT',
-                '[прошле] [суботе] [у] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: 'пре %s',
-        s: 'неколико секунди',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: translator.translate,
-        dd: translator.translate,
-        M: translator.translate,
-        MM: translator.translate,
-        y: translator.translate,
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sr.js
===================================================================
--- backend/node_modules/moment/dist/locale/sr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian [sr]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['sekunda', 'sekunde', 'sekundi'],
-        m: ['jedan minut', 'jednog minuta'],
-        mm: ['minut', 'minuta', 'minuta'],
-        h: ['jedan sat', 'jednog sata'],
-        hh: ['sat', 'sata', 'sati'],
-        d: ['jedan dan', 'jednog dana'],
-        dd: ['dan', 'dana', 'dana'],
-        M: ['jedan mesec', 'jednog meseca'],
-        MM: ['mesec', 'meseca', 'meseci'],
-        y: ['jednu godinu', 'jedne godine'],
-        yy: ['godinu', 'godine', 'godina'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        if (
-            number % 10 >= 1 &&
-            number % 10 <= 4 &&
-            (number % 100 < 10 || number % 100 >= 20)
-        ) {
-            return number % 10 === 1 ? wordKey[0] : wordKey[1];
-        }
-        return wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key, isFuture) {
-        var wordKey = translator.words[key],
-            word;
-
-        if (key.length === 1) {
-            // Nominativ
-            if (key === 'y' && withoutSuffix) return 'jedna godina';
-            return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-        }
-
-        word = translator.correctGrammaticalCase(number, wordKey);
-        // Nominativ
-        if (key === 'yy' && withoutSuffix && word === 'godinu') {
-            return number + ' godina';
-        }
-
-        return number + ' ' + word;
-    },
-};
-
-export default moment.defineLocale('sr', {
-    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D. M. YYYY.',
-        LL: 'D. MMMM YYYY.',
-        LLL: 'D. MMMM YYYY. H:mm',
-        LLLL: 'dddd, D. MMMM YYYY. H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedelju] [u] LT';
-                case 3:
-                    return '[u] [sredu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[juče u] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[prošle] [nedelje] [u] LT',
-                '[prošlog] [ponedeljka] [u] LT',
-                '[prošlog] [utorka] [u] LT',
-                '[prošle] [srede] [u] LT',
-                '[prošlog] [četvrtka] [u] LT',
-                '[prošlog] [petka] [u] LT',
-                '[prošle] [subote] [u] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'pre %s',
-        s: 'nekoliko sekundi',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: translator.translate,
-        dd: translator.translate,
-        M: translator.translate,
-        MM: translator.translate,
-        y: translator.translate,
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ss.js
===================================================================
--- backend/node_modules/moment/dist/locale/ss.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//! moment.js locale configuration
-//! locale : siSwati [ss]
-//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
-
-import moment from '../moment';
-
-export default moment.defineLocale('ss', {
-    months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
-        '_'
-    ),
-    monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
-    weekdays:
-        'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
-            '_'
-        ),
-    weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
-    weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Namuhla nga] LT',
-        nextDay: '[Kusasa nga] LT',
-        nextWeek: 'dddd [nga] LT',
-        lastDay: '[Itolo nga] LT',
-        lastWeek: 'dddd [leliphelile] [nga] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'nga %s',
-        past: 'wenteka nga %s',
-        s: 'emizuzwana lomcane',
-        ss: '%d mzuzwana',
-        m: 'umzuzu',
-        mm: '%d emizuzu',
-        h: 'lihora',
-        hh: '%d emahora',
-        d: 'lilanga',
-        dd: '%d emalanga',
-        M: 'inyanga',
-        MM: '%d tinyanga',
-        y: 'umnyaka',
-        yy: '%d iminyaka',
-    },
-    meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'ekuseni';
-        } else if (hours < 15) {
-            return 'emini';
-        } else if (hours < 19) {
-            return 'entsambama';
-        } else {
-            return 'ebusuku';
-        }
-    },
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ekuseni') {
-            return hour;
-        } else if (meridiem === 'emini') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
-            if (hour === 0) {
-                return 0;
-            }
-            return hour + 12;
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: '%d',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sv.js
===================================================================
--- backend/node_modules/moment/dist/locale/sv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swedish [sv]
-//! author : Jens Alm : https://github.com/ulmus
-
-import moment from '../moment';
-
-export default moment.defineLocale('sv', {
-    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
-    weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
-    weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [kl.] HH:mm',
-        LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Idag] LT',
-        nextDay: '[Imorgon] LT',
-        lastDay: '[Igår] LT',
-        nextWeek: '[På] dddd LT',
-        lastWeek: '[I] dddd[s] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: 'för %s sedan',
-        s: 'några sekunder',
-        ss: '%d sekunder',
-        m: 'en minut',
-        mm: '%d minuter',
-        h: 'en timme',
-        hh: '%d timmar',
-        d: 'en dag',
-        dd: '%d dagar',
-        M: 'en månad',
-        MM: '%d månader',
-        y: 'ett år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? ':e'
-                    : b === 1
-                      ? ':a'
-                      : b === 2
-                        ? ':a'
-                        : b === 3
-                          ? ':e'
-                          : ':e';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/sw.js
===================================================================
--- backend/node_modules/moment/dist/locale/sw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swahili [sw]
-//! author : Fahad Kassim : https://github.com/fadsel
-
-import moment from '../moment';
-
-export default moment.defineLocale('sw', {
-    months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
-    weekdays:
-        'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
-            '_'
-        ),
-    weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
-    weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'hh:mm A',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[leo saa] LT',
-        nextDay: '[kesho saa] LT',
-        nextWeek: '[wiki ijayo] dddd [saat] LT',
-        lastDay: '[jana] LT',
-        lastWeek: '[wiki iliyopita] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s baadaye',
-        past: 'tokea %s',
-        s: 'hivi punde',
-        ss: 'sekunde %d',
-        m: 'dakika moja',
-        mm: 'dakika %d',
-        h: 'saa limoja',
-        hh: 'masaa %d',
-        d: 'siku moja',
-        dd: 'siku %d',
-        M: 'mwezi mmoja',
-        MM: 'miezi %d',
-        y: 'mwaka mmoja',
-        yy: 'miaka %d',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ta.js
===================================================================
--- backend/node_modules/moment/dist/locale/ta.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tamil [ta]
-//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '௧',
-        2: '௨',
-        3: '௩',
-        4: '௪',
-        5: '௫',
-        6: '௬',
-        7: '௭',
-        8: '௮',
-        9: '௯',
-        0: '௦',
-    },
-    numberMap = {
-        '௧': '1',
-        '௨': '2',
-        '௩': '3',
-        '௪': '4',
-        '௫': '5',
-        '௬': '6',
-        '௭': '7',
-        '௮': '8',
-        '௯': '9',
-        '௦': '0',
-    };
-
-export default moment.defineLocale('ta', {
-    months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-        '_'
-    ),
-    monthsShort:
-        'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-            '_'
-        ),
-    weekdays:
-        'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
-            '_'
-        ),
-    weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
-        '_'
-    ),
-    weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, HH:mm',
-        LLLL: 'dddd, D MMMM YYYY, HH:mm',
-    },
-    calendar: {
-        sameDay: '[இன்று] LT',
-        nextDay: '[நாளை] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[நேற்று] LT',
-        lastWeek: '[கடந்த வாரம்] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s இல்',
-        past: '%s முன்',
-        s: 'ஒரு சில விநாடிகள்',
-        ss: '%d விநாடிகள்',
-        m: 'ஒரு நிமிடம்',
-        mm: '%d நிமிடங்கள்',
-        h: 'ஒரு மணி நேரம்',
-        hh: '%d மணி நேரம்',
-        d: 'ஒரு நாள்',
-        dd: '%d நாட்கள்',
-        M: 'ஒரு மாதம்',
-        MM: '%d மாதங்கள்',
-        y: 'ஒரு வருடம்',
-        yy: '%d ஆண்டுகள்',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}வது/,
-    ordinal: function (number) {
-        return number + 'வது';
-    },
-    preparse: function (string) {
-        return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // refer http://ta.wikipedia.org/s/1er1
-    meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 2) {
-            return ' யாமம்';
-        } else if (hour < 6) {
-            return ' வைகறை'; // வைகறை
-        } else if (hour < 10) {
-            return ' காலை'; // காலை
-        } else if (hour < 14) {
-            return ' நண்பகல்'; // நண்பகல்
-        } else if (hour < 18) {
-            return ' எற்பாடு'; // எற்பாடு
-        } else if (hour < 22) {
-            return ' மாலை'; // மாலை
-        } else {
-            return ' யாமம்';
-        }
-    },
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'யாமம்') {
-            return hour < 2 ? hour : hour + 12;
-        } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
-            return hour;
-        } else if (meridiem === 'நண்பகல்') {
-            return hour >= 10 ? hour : hour + 12;
-        } else {
-            return hour + 12;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/te.js
===================================================================
--- backend/node_modules/moment/dist/locale/te.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,88 +1,0 @@
-//! moment.js locale configuration
-//! locale : Telugu [te]
-//! author : Krishna Chaitanya Thota : https://github.com/kcthota
-
-import moment from '../moment';
-
-export default moment.defineLocale('te', {
-    months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
-        '_'
-    ),
-    monthsShort:
-        'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
-            '_'
-        ),
-    weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
-    weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[నేడు] LT',
-        nextDay: '[రేపు] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[నిన్న] LT',
-        lastWeek: '[గత] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s లో',
-        past: '%s క్రితం',
-        s: 'కొన్ని క్షణాలు',
-        ss: '%d సెకన్లు',
-        m: 'ఒక నిమిషం',
-        mm: '%d నిమిషాలు',
-        h: 'ఒక గంట',
-        hh: '%d గంటలు',
-        d: 'ఒక రోజు',
-        dd: '%d రోజులు',
-        M: 'ఒక నెల',
-        MM: '%d నెలలు',
-        y: 'ఒక సంవత్సరం',
-        yy: '%d సంవత్సరాలు',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}వ/,
-    ordinal: '%dవ',
-    meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'రాత్రి') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ఉదయం') {
-            return hour;
-        } else if (meridiem === 'మధ్యాహ్నం') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'సాయంత్రం') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'రాత్రి';
-        } else if (hour < 10) {
-            return 'ఉదయం';
-        } else if (hour < 17) {
-            return 'మధ్యాహ్నం';
-        } else if (hour < 20) {
-            return 'సాయంత్రం';
-        } else {
-            return 'రాత్రి';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tet.js
===================================================================
--- backend/node_modules/moment/dist/locale/tet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tetun Dili (East Timor) [tet]
-//! author : Joshua Brooks : https://github.com/joshbrooks
-//! author : Onorio De J. Afonso : https://github.com/marobo
-//! author : Sonia Simoes : https://github.com/soniasimoes
-
-import moment from '../moment';
-
-export default moment.defineLocale('tet', {
-    months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
-    weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
-    weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
-    weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Ohin iha] LT',
-        nextDay: '[Aban iha] LT',
-        nextWeek: 'dddd [iha] LT',
-        lastDay: '[Horiseik iha] LT',
-        lastWeek: 'dddd [semana kotuk] [iha] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'iha %s',
-        past: '%s liuba',
-        s: 'segundu balun',
-        ss: 'segundu %d',
-        m: 'minutu ida',
-        mm: 'minutu %d',
-        h: 'oras ida',
-        hh: 'oras %d',
-        d: 'loron ida',
-        dd: 'loron %d',
-        M: 'fulan ida',
-        MM: 'fulan %d',
-        y: 'tinan ida',
-        yy: 'tinan %d',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tg.js
===================================================================
--- backend/node_modules/moment/dist/locale/tg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tajik [tg]
-//! author : Orif N. Jr. : https://github.com/orif-jr
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-ум',
-    1: '-ум',
-    2: '-юм',
-    3: '-юм',
-    4: '-ум',
-    5: '-ум',
-    6: '-ум',
-    7: '-ум',
-    8: '-ум',
-    9: '-ум',
-    10: '-ум',
-    12: '-ум',
-    13: '-ум',
-    20: '-ум',
-    30: '-юм',
-    40: '-ум',
-    50: '-ум',
-    60: '-ум',
-    70: '-ум',
-    80: '-ум',
-    90: '-ум',
-    100: '-ум',
-};
-
-export default moment.defineLocale('tg', {
-    months: {
-        format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
-            '_'
-        ),
-        standalone:
-            'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-    weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
-        '_'
-    ),
-    weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
-    weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Имрӯз соати] LT',
-        nextDay: '[Фардо соати] LT',
-        lastDay: '[Дирӯз соати] LT',
-        nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
-        lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'баъди %s',
-        past: '%s пеш',
-        s: 'якчанд сония',
-        m: 'як дақиқа',
-        mm: '%d дақиқа',
-        h: 'як соат',
-        hh: '%d соат',
-        d: 'як рӯз',
-        dd: '%d рӯз',
-        M: 'як моҳ',
-        MM: '%d моҳ',
-        y: 'як сол',
-        yy: '%d сол',
-    },
-    meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'шаб') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'субҳ') {
-            return hour;
-        } else if (meridiem === 'рӯз') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'бегоҳ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'шаб';
-        } else if (hour < 11) {
-            return 'субҳ';
-        } else if (hour < 16) {
-            return 'рӯз';
-        } else if (hour < 19) {
-            return 'бегоҳ';
-        } else {
-            return 'шаб';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/th.js
===================================================================
--- backend/node_modules/moment/dist/locale/th.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Thai [th]
-//! author : Kridsada Thanabulpong : https://github.com/sirn
-
-import moment from '../moment';
-
-export default moment.defineLocale('th', {
-    months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
-        '_'
-    ),
-    monthsShort:
-        'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
-    weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
-    weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY เวลา H:mm',
-        LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
-    },
-    meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
-    isPM: function (input) {
-        return input === 'หลังเที่ยง';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ก่อนเที่ยง';
-        } else {
-            return 'หลังเที่ยง';
-        }
-    },
-    calendar: {
-        sameDay: '[วันนี้ เวลา] LT',
-        nextDay: '[พรุ่งนี้ เวลา] LT',
-        nextWeek: 'dddd[หน้า เวลา] LT',
-        lastDay: '[เมื่อวานนี้ เวลา] LT',
-        lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'อีก %s',
-        past: '%sที่แล้ว',
-        s: 'ไม่กี่วินาที',
-        ss: '%d วินาที',
-        m: '1 นาที',
-        mm: '%d นาที',
-        h: '1 ชั่วโมง',
-        hh: '%d ชั่วโมง',
-        d: '1 วัน',
-        dd: '%d วัน',
-        w: '1 สัปดาห์',
-        ww: '%d สัปดาห์',
-        M: '1 เดือน',
-        MM: '%d เดือน',
-        y: '1 ปี',
-        yy: '%d ปี',
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tk.js
===================================================================
--- backend/node_modules/moment/dist/locale/tk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkmen [tk]
-//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
-
-import moment from '../moment';
-
-var suffixes = {
-    1: "'inji",
-    5: "'inji",
-    8: "'inji",
-    70: "'inji",
-    80: "'inji",
-    2: "'nji",
-    7: "'nji",
-    20: "'nji",
-    50: "'nji",
-    3: "'ünji",
-    4: "'ünji",
-    100: "'ünji",
-    6: "'njy",
-    9: "'unjy",
-    10: "'unjy",
-    30: "'unjy",
-    60: "'ynjy",
-    90: "'ynjy",
-};
-
-export default moment.defineLocale('tk', {
-    months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
-    weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
-        '_'
-    ),
-    weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
-    weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün sagat] LT',
-        nextDay: '[ertir sagat] LT',
-        nextWeek: '[indiki] dddd [sagat] LT',
-        lastDay: '[düýn] LT',
-        lastWeek: '[geçen] dddd [sagat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s soň',
-        past: '%s öň',
-        s: 'birnäçe sekunt',
-        m: 'bir minut',
-        mm: '%d minut',
-        h: 'bir sagat',
-        hh: '%d sagat',
-        d: 'bir gün',
-        dd: '%d gün',
-        M: 'bir aý',
-        MM: '%d aý',
-        y: 'bir ýyl',
-        yy: '%d ýyl',
-    },
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'Do':
-            case 'DD':
-                return number;
-            default:
-                if (number === 0) {
-                    // special case for zero
-                    return number + "'unjy";
-                }
-                var a = number % 10,
-                    b = (number % 100) - a,
-                    c = number >= 100 ? 100 : null;
-                return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tl-ph.js
===================================================================
--- backend/node_modules/moment/dist/locale/tl-ph.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tagalog (Philippines) [tl-ph]
-//! author : Dan Hagman : https://github.com/hagmandan
-
-import moment from '../moment';
-
-export default moment.defineLocale('tl-ph', {
-    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-        '_'
-    ),
-    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-        '_'
-    ),
-    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'MM/D/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY HH:mm',
-        LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: 'LT [ngayong araw]',
-        nextDay: '[Bukas ng] LT',
-        nextWeek: 'LT [sa susunod na] dddd',
-        lastDay: 'LT [kahapon]',
-        lastWeek: 'LT [noong nakaraang] dddd',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'sa loob ng %s',
-        past: '%s ang nakalipas',
-        s: 'ilang segundo',
-        ss: '%d segundo',
-        m: 'isang minuto',
-        mm: '%d minuto',
-        h: 'isang oras',
-        hh: '%d oras',
-        d: 'isang araw',
-        dd: '%d araw',
-        M: 'isang buwan',
-        MM: '%d buwan',
-        y: 'isang taon',
-        yy: '%d taon',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tlh.js
===================================================================
--- backend/node_modules/moment/dist/locale/tlh.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Klingon [tlh]
-//! author : Dominika Kruk : https://github.com/amaranthrose
-
-import moment from '../moment';
-
-var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
-
-function translateFuture(output) {
-    var time = output;
-    time =
-        output.indexOf('jaj') !== -1
-            ? time.slice(0, -3) + 'leS'
-            : output.indexOf('jar') !== -1
-              ? time.slice(0, -3) + 'waQ'
-              : output.indexOf('DIS') !== -1
-                ? time.slice(0, -3) + 'nem'
-                : time + ' pIq';
-    return time;
-}
-
-function translatePast(output) {
-    var time = output;
-    time =
-        output.indexOf('jaj') !== -1
-            ? time.slice(0, -3) + 'Hu’'
-            : output.indexOf('jar') !== -1
-              ? time.slice(0, -3) + 'wen'
-              : output.indexOf('DIS') !== -1
-                ? time.slice(0, -3) + 'ben'
-                : time + ' ret';
-    return time;
-}
-
-function translate(number, withoutSuffix, string, isFuture) {
-    var numberNoun = numberAsNoun(number);
-    switch (string) {
-        case 'ss':
-            return numberNoun + ' lup';
-        case 'mm':
-            return numberNoun + ' tup';
-        case 'hh':
-            return numberNoun + ' rep';
-        case 'dd':
-            return numberNoun + ' jaj';
-        case 'MM':
-            return numberNoun + ' jar';
-        case 'yy':
-            return numberNoun + ' DIS';
-    }
-}
-
-function numberAsNoun(number) {
-    var hundred = Math.floor((number % 1000) / 100),
-        ten = Math.floor((number % 100) / 10),
-        one = number % 10,
-        word = '';
-    if (hundred > 0) {
-        word += numbersNouns[hundred] + 'vatlh';
-    }
-    if (ten > 0) {
-        word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
-    }
-    if (one > 0) {
-        word += (word !== '' ? ' ' : '') + numbersNouns[one];
-    }
-    return word === '' ? 'pagh' : word;
-}
-
-export default moment.defineLocale('tlh', {
-    months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
-        '_'
-    ),
-    monthsShort:
-        'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
-        '_'
-    ),
-    weekdaysShort:
-        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-    weekdaysMin:
-        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[DaHjaj] LT',
-        nextDay: '[wa’leS] LT',
-        nextWeek: 'LLL',
-        lastDay: '[wa’Hu’] LT',
-        lastWeek: 'LLL',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: translateFuture,
-        past: translatePast,
-        s: 'puS lup',
-        ss: translate,
-        m: 'wa’ tup',
-        mm: translate,
-        h: 'wa’ rep',
-        hh: translate,
-        d: 'wa’ jaj',
-        dd: translate,
-        M: 'wa’ jar',
-        MM: translate,
-        y: 'wa’ DIS',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tr.js
===================================================================
--- backend/node_modules/moment/dist/locale/tr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkish [tr]
-//! authors : Erhan Gundogan : https://github.com/erhangundogan,
-//!           Burak Yiğit Kaya: https://github.com/BYK
-
-import moment from '../moment';
-
-var suffixes = {
-    1: "'inci",
-    5: "'inci",
-    8: "'inci",
-    70: "'inci",
-    80: "'inci",
-    2: "'nci",
-    7: "'nci",
-    20: "'nci",
-    50: "'nci",
-    3: "'üncü",
-    4: "'üncü",
-    100: "'üncü",
-    6: "'ncı",
-    9: "'uncu",
-    10: "'uncu",
-    30: "'uncu",
-    60: "'ıncı",
-    90: "'ıncı",
-};
-
-export default moment.defineLocale('tr', {
-    months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
-        '_'
-    ),
-    monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
-    weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
-        '_'
-    ),
-    weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
-    weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'öö' : 'ÖÖ';
-        } else {
-            return isLower ? 'ös' : 'ÖS';
-        }
-    },
-    meridiemParse: /öö|ÖÖ|ös|ÖS/,
-    isPM: function (input) {
-        return input === 'ös' || input === 'ÖS';
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün saat] LT',
-        nextDay: '[yarın saat] LT',
-        nextWeek: '[gelecek] dddd [saat] LT',
-        lastDay: '[dün] LT',
-        lastWeek: '[geçen] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s sonra',
-        past: '%s önce',
-        s: 'birkaç saniye',
-        ss: '%d saniye',
-        m: 'bir dakika',
-        mm: '%d dakika',
-        h: 'bir saat',
-        hh: '%d saat',
-        d: 'bir gün',
-        dd: '%d gün',
-        w: 'bir hafta',
-        ww: '%d hafta',
-        M: 'bir ay',
-        MM: '%d ay',
-        y: 'bir yıl',
-        yy: '%d yıl',
-    },
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'Do':
-            case 'DD':
-                return number;
-            default:
-                if (number === 0) {
-                    // special case for zero
-                    return number + "'ıncı";
-                }
-                var a = number % 10,
-                    b = (number % 100) - a,
-                    c = number >= 100 ? 100 : null;
-                return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tzl.js
===================================================================
--- backend/node_modules/moment/dist/locale/tzl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,89 +1,0 @@
-//! moment.js locale configuration
-//! locale : Talossan [tzl]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-//! author : Iustì Canun
-
-import moment from '../moment';
-
-// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-// This is currently too difficult (maybe even impossible) to add.
-export default moment.defineLocale('tzl', {
-    months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
-    weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
-    weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
-    weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM [dallas] YYYY',
-        LLL: 'D. MMMM [dallas] YYYY HH.mm',
-        LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
-    },
-    meridiemParse: /d\'o|d\'a/i,
-    isPM: function (input) {
-        return "d'o" === input.toLowerCase();
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? "d'o" : "D'O";
-        } else {
-            return isLower ? "d'a" : "D'A";
-        }
-    },
-    calendar: {
-        sameDay: '[oxhi à] LT',
-        nextDay: '[demà à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[ieiri à] LT',
-        lastWeek: '[sür el] dddd [lasteu à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'osprei %s',
-        past: 'ja%s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['viensas secunds', "'iensas secunds"],
-        ss: [number + ' secunds', '' + number + ' secunds'],
-        m: ["'n míut", "'iens míut"],
-        mm: [number + ' míuts', '' + number + ' míuts'],
-        h: ["'n þora", "'iensa þora"],
-        hh: [number + ' þoras', '' + number + ' þoras'],
-        d: ["'n ziua", "'iensa ziua"],
-        dd: [number + ' ziuas', '' + number + ' ziuas'],
-        M: ["'n mes", "'iens mes"],
-        MM: [number + ' mesen', '' + number + ' mesen'],
-        y: ["'n ar", "'iens ar"],
-        yy: [number + ' ars', '' + number + ' ars'],
-    };
-    return isFuture
-        ? format[key][0]
-        : withoutSuffix
-          ? format[key][0]
-          : format[key][1];
-}
Index: ckend/node_modules/moment/dist/locale/tzm-latn.js
===================================================================
--- backend/node_modules/moment/dist/locale/tzm-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight Latin [tzm-latn]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('tzm-latn', {
-    months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-        '_'
-    ),
-    monthsShort:
-        'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-            '_'
-        ),
-    weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[asdkh g] LT',
-        nextDay: '[aska g] LT',
-        nextWeek: 'dddd [g] LT',
-        lastDay: '[assant g] LT',
-        lastWeek: 'dddd [g] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dadkh s yan %s',
-        past: 'yan %s',
-        s: 'imik',
-        ss: '%d imik',
-        m: 'minuḍ',
-        mm: '%d minuḍ',
-        h: 'saɛa',
-        hh: '%d tassaɛin',
-        d: 'ass',
-        dd: '%d ossan',
-        M: 'ayowr',
-        MM: '%d iyyirn',
-        y: 'asgas',
-        yy: '%d isgasn',
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/tzm.js
===================================================================
--- backend/node_modules/moment/dist/locale/tzm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight [tzm]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('tzm', {
-    months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-            '_'
-        ),
-    weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
-        nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
-        nextWeek: 'dddd [ⴴ] LT',
-        lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
-        lastWeek: 'dddd [ⴴ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
-        past: 'ⵢⴰⵏ %s',
-        s: 'ⵉⵎⵉⴽ',
-        ss: '%d ⵉⵎⵉⴽ',
-        m: 'ⵎⵉⵏⵓⴺ',
-        mm: '%d ⵎⵉⵏⵓⴺ',
-        h: 'ⵙⴰⵄⴰ',
-        hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
-        d: 'ⴰⵙⵙ',
-        dd: '%d oⵙⵙⴰⵏ',
-        M: 'ⴰⵢoⵓⵔ',
-        MM: '%d ⵉⵢⵢⵉⵔⵏ',
-        y: 'ⴰⵙⴳⴰⵙ',
-        yy: '%d ⵉⵙⴳⴰⵙⵏ',
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ug-cn.js
===================================================================
--- backend/node_modules/moment/dist/locale/ug-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uyghur (China) [ug-cn]
-//! author: boyaq : https://github.com/boyaq
-
-import moment from '../moment';
-
-export default moment.defineLocale('ug-cn', {
-    months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-            '_'
-        ),
-    weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
-        '_'
-    ),
-    weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-    weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
-        LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-        LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-    },
-    meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            meridiem === 'يېرىم كېچە' ||
-            meridiem === 'سەھەر' ||
-            meridiem === 'چۈشتىن بۇرۇن'
-        ) {
-            return hour;
-        } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
-            return hour + 12;
-        } else {
-            return hour >= 11 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return 'يېرىم كېچە';
-        } else if (hm < 900) {
-            return 'سەھەر';
-        } else if (hm < 1130) {
-            return 'چۈشتىن بۇرۇن';
-        } else if (hm < 1230) {
-            return 'چۈش';
-        } else if (hm < 1800) {
-            return 'چۈشتىن كېيىن';
-        } else {
-            return 'كەچ';
-        }
-    },
-    calendar: {
-        sameDay: '[بۈگۈن سائەت] LT',
-        nextDay: '[ئەتە سائەت] LT',
-        nextWeek: '[كېلەركى] dddd [سائەت] LT',
-        lastDay: '[تۆنۈگۈن] LT',
-        lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s كېيىن',
-        past: '%s بۇرۇن',
-        s: 'نەچچە سېكونت',
-        ss: '%d سېكونت',
-        m: 'بىر مىنۇت',
-        mm: '%d مىنۇت',
-        h: 'بىر سائەت',
-        hh: '%d سائەت',
-        d: 'بىر كۈن',
-        dd: '%d كۈن',
-        M: 'بىر ئاي',
-        MM: '%d ئاي',
-        y: 'بىر يىل',
-        yy: '%d يىل',
-    },
-
-    dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '-كۈنى';
-            case 'w':
-            case 'W':
-                return number + '-ھەپتە';
-            default:
-                return number;
-        }
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/uk.js
===================================================================
--- backend/node_modules/moment/dist/locale/uk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,167 +1,0 @@
-//! moment.js locale configuration
-//! locale : Ukrainian [uk]
-//! author : zemlanin : https://github.com/zemlanin
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
-        mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
-        hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
-        dd: 'день_дні_днів',
-        MM: 'місяць_місяці_місяців',
-        yy: 'рік_роки_років',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'хвилина' : 'хвилину';
-    } else if (key === 'h') {
-        return withoutSuffix ? 'година' : 'годину';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-function weekdaysCaseReplace(m, format) {
-    var weekdays = {
-            nominative:
-                'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
-                    '_'
-                ),
-            accusative:
-                'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
-                    '_'
-                ),
-            genitive:
-                'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
-                    '_'
-                ),
-        },
-        nounCase;
-
-    if (m === true) {
-        return weekdays['nominative']
-            .slice(1, 7)
-            .concat(weekdays['nominative'].slice(0, 1));
-    }
-    if (!m) {
-        return weekdays['nominative'];
-    }
-
-    nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
-        ? 'accusative'
-        : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
-          ? 'genitive'
-          : 'nominative';
-    return weekdays[nounCase][m.day()];
-}
-function processHoursFunction(str) {
-    return function () {
-        return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
-    };
-}
-
-export default moment.defineLocale('uk', {
-    months: {
-        format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
-            '_'
-        ),
-        standalone:
-            'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
-        '_'
-    ),
-    weekdays: weekdaysCaseReplace,
-    weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY р.',
-        LLL: 'D MMMM YYYY р., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY р., HH:mm',
-    },
-    calendar: {
-        sameDay: processHoursFunction('[Сьогодні '),
-        nextDay: processHoursFunction('[Завтра '),
-        lastDay: processHoursFunction('[Вчора '),
-        nextWeek: processHoursFunction('[У] dddd ['),
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 5:
-                case 6:
-                    return processHoursFunction('[Минулої] dddd [').call(this);
-                case 1:
-                case 2:
-                case 4:
-                    return processHoursFunction('[Минулого] dddd [').call(this);
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: '%s тому',
-        s: 'декілька секунд',
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: 'годину',
-        hh: relativeTimeWithPlural,
-        d: 'день',
-        dd: relativeTimeWithPlural,
-        M: 'місяць',
-        MM: relativeTimeWithPlural,
-        y: 'рік',
-        yy: relativeTimeWithPlural,
-    },
-    // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-    meridiemParse: /ночі|ранку|дня|вечора/,
-    isPM: function (input) {
-        return /^(дня|вечора)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночі';
-        } else if (hour < 12) {
-            return 'ранку';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечора';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-            case 'w':
-            case 'W':
-                return number + '-й';
-            case 'D':
-                return number + '-го';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/ur.js
===================================================================
--- backend/node_modules/moment/dist/locale/ur.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Urdu [ur]
-//! author : Sawood Alam : https://github.com/ibnesayeed
-//! author : Zack : https://github.com/ZackVision
-
-import moment from '../moment';
-
-var months = [
-        'جنوری',
-        'فروری',
-        'مارچ',
-        'اپریل',
-        'مئی',
-        'جون',
-        'جولائی',
-        'اگست',
-        'ستمبر',
-        'اکتوبر',
-        'نومبر',
-        'دسمبر',
-    ],
-    days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
-
-export default moment.defineLocale('ur', {
-    months: months,
-    monthsShort: months,
-    weekdays: days,
-    weekdaysShort: days,
-    weekdaysMin: days,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd، D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /صبح|شام/,
-    isPM: function (input) {
-        return 'شام' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'صبح';
-        }
-        return 'شام';
-    },
-    calendar: {
-        sameDay: '[آج بوقت] LT',
-        nextDay: '[کل بوقت] LT',
-        nextWeek: 'dddd [بوقت] LT',
-        lastDay: '[گذشتہ روز بوقت] LT',
-        lastWeek: '[گذشتہ] dddd [بوقت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s بعد',
-        past: '%s قبل',
-        s: 'چند سیکنڈ',
-        ss: '%d سیکنڈ',
-        m: 'ایک منٹ',
-        mm: '%d منٹ',
-        h: 'ایک گھنٹہ',
-        hh: '%d گھنٹے',
-        d: 'ایک دن',
-        dd: '%d دن',
-        M: 'ایک ماہ',
-        MM: '%d ماہ',
-        y: 'ایک سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/uz-latn.js
===================================================================
--- backend/node_modules/moment/dist/locale/uz-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek Latin [uz-latn]
-//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
-
-import moment from '../moment';
-
-export default moment.defineLocale('uz-latn', {
-    months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
-    weekdays:
-        'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
-            '_'
-        ),
-    weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
-    weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'D MMMM YYYY, dddd HH:mm',
-    },
-    calendar: {
-        sameDay: '[Bugun soat] LT [da]',
-        nextDay: '[Ertaga] LT [da]',
-        nextWeek: 'dddd [kuni soat] LT [da]',
-        lastDay: '[Kecha soat] LT [da]',
-        lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'Yaqin %s ichida',
-        past: 'Bir necha %s oldin',
-        s: 'soniya',
-        ss: '%d soniya',
-        m: 'bir daqiqa',
-        mm: '%d daqiqa',
-        h: 'bir soat',
-        hh: '%d soat',
-        d: 'bir kun',
-        dd: '%d kun',
-        M: 'bir oy',
-        MM: '%d oy',
-        y: 'bir yil',
-        yy: '%d yil',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/uz.js
===================================================================
--- backend/node_modules/moment/dist/locale/uz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek [uz]
-//! author : Sardor Muminov : https://github.com/muminoff
-
-import moment from '../moment';
-
-export default moment.defineLocale('uz', {
-    months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-        '_'
-    ),
-    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-    weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
-    weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
-    weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'D MMMM YYYY, dddd HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бугун соат] LT [да]',
-        nextDay: '[Эртага] LT [да]',
-        nextWeek: 'dddd [куни соат] LT [да]',
-        lastDay: '[Кеча соат] LT [да]',
-        lastWeek: '[Утган] dddd [куни соат] LT [да]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'Якин %s ичида',
-        past: 'Бир неча %s олдин',
-        s: 'фурсат',
-        ss: '%d фурсат',
-        m: 'бир дакика',
-        mm: '%d дакика',
-        h: 'бир соат',
-        hh: '%d соат',
-        d: 'бир кун',
-        dd: '%d кун',
-        M: 'бир ой',
-        MM: '%d ой',
-        y: 'бир йил',
-        yy: '%d йил',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/vi.js
===================================================================
--- backend/node_modules/moment/dist/locale/vi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,80 +1,0 @@
-//! moment.js locale configuration
-//! locale : Vietnamese [vi]
-//! author : Bang Nguyen : https://github.com/bangnk
-//! author : Chien Kira : https://github.com/chienkira
-
-import moment from '../moment';
-
-export default moment.defineLocale('vi', {
-    months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
-        '_'
-    ),
-    monthsShort:
-        'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
-        '_'
-    ),
-    weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-    weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-    weekdaysParseExact: true,
-    meridiemParse: /sa|ch/i,
-    isPM: function (input) {
-        return /^ch$/i.test(input);
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'sa' : 'SA';
-        } else {
-            return isLower ? 'ch' : 'CH';
-        }
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [năm] YYYY',
-        LLL: 'D MMMM [năm] YYYY HH:mm',
-        LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
-        l: 'DD/M/YYYY',
-        ll: 'D MMM YYYY',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd, D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hôm nay lúc] LT',
-        nextDay: '[Ngày mai lúc] LT',
-        nextWeek: 'dddd [tuần tới lúc] LT',
-        lastDay: '[Hôm qua lúc] LT',
-        lastWeek: 'dddd [tuần trước lúc] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s tới',
-        past: '%s trước',
-        s: 'vài giây',
-        ss: '%d giây',
-        m: 'một phút',
-        mm: '%d phút',
-        h: 'một giờ',
-        hh: '%d giờ',
-        d: 'một ngày',
-        dd: '%d ngày',
-        w: 'một tuần',
-        ww: '%d tuần',
-        M: 'một tháng',
-        MM: '%d tháng',
-        y: 'một năm',
-        yy: '%d năm',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/x-pseudo.js
===================================================================
--- backend/node_modules/moment/dist/locale/x-pseudo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,73 +1,0 @@
-//! moment.js locale configuration
-//! locale : Pseudo [x-pseudo]
-//! author : Andrew Hood : https://github.com/andrewhood125
-
-import moment from '../moment';
-
-export default moment.defineLocale('x-pseudo', {
-    months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
-        '_'
-    ),
-    monthsShort:
-        'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
-            '_'
-        ),
-    weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
-    weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[T~ódá~ý át] LT',
-        nextDay: '[T~ómó~rró~w át] LT',
-        nextWeek: 'dddd [át] LT',
-        lastDay: '[Ý~ést~érdá~ý át] LT',
-        lastWeek: '[L~ást] dddd [át] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'í~ñ %s',
-        past: '%s á~gó',
-        s: 'á ~féw ~sécó~ñds',
-        ss: '%d s~écóñ~ds',
-        m: 'á ~míñ~úté',
-        mm: '%d m~íñú~tés',
-        h: 'á~ñ hó~úr',
-        hh: '%d h~óúrs',
-        d: 'á ~dáý',
-        dd: '%d d~áýs',
-        M: 'á ~móñ~th',
-        MM: '%d m~óñt~hs',
-        y: 'á ~ýéár',
-        yy: '%d ý~éárs',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/yo.js
===================================================================
--- backend/node_modules/moment/dist/locale/yo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-//! moment.js locale configuration
-//! locale : Yoruba Nigeria [yo]
-//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
-
-import moment from '../moment';
-
-export default moment.defineLocale('yo', {
-    months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
-        '_'
-    ),
-    monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
-    weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
-    weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
-    weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Ònì ni] LT',
-        nextDay: '[Ọ̀la ni] LT',
-        nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
-        lastDay: '[Àna ni] LT',
-        lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ní %s',
-        past: '%s kọjá',
-        s: 'ìsẹjú aayá die',
-        ss: 'aayá %d',
-        m: 'ìsẹjú kan',
-        mm: 'ìsẹjú %d',
-        h: 'wákati kan',
-        hh: 'wákati %d',
-        d: 'ọjọ́ kan',
-        dd: 'ọjọ́ %d',
-        M: 'osù kan',
-        MM: 'osù %d',
-        y: 'ọdún kan',
-        yy: 'ọdún %d',
-    },
-    dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
-    ordinal: 'ọjọ́ %d',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/zh-cn.js
===================================================================
--- backend/node_modules/moment/dist/locale/zh-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,120 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (China) [zh-cn]
-//! author : suupic : https://github.com/suupic
-//! author : Zeno Zeng : https://github.com/zenozeng
-//! author : uu109 : https://github.com/uu109
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-cn', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日Ah点mm分',
-        LLLL: 'YYYY年M月D日ddddAh点mm分',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        } else {
-            // '中午'
-            return hour >= 11 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天]LT',
-        nextDay: '[明天]LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                return '[下]dddLT';
-            } else {
-                return '[本]dddLT';
-            }
-        },
-        lastDay: '[昨天]LT',
-        lastWeek: function (now) {
-            if (this.week() !== now.week()) {
-                return '[上]dddLT';
-            } else {
-                return '[本]dddLT';
-            }
-        },
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '周';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s后',
-        past: '%s前',
-        s: '几秒',
-        ss: '%d 秒',
-        m: '1 分钟',
-        mm: '%d 分钟',
-        h: '1 小时',
-        hh: '%d 小时',
-        d: '1 天',
-        dd: '%d 天',
-        w: '1 周',
-        ww: '%d 周',
-        M: '1 个月',
-        MM: '%d 个月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-    week: {
-        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/dist/locale/zh-hk.js
===================================================================
--- backend/node_modules/moment/dist/locale/zh-hk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,101 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Hong Kong) [zh-hk]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Konstantin : https://github.com/skfd
-//! author : Anthony : https://github.com/anthonylau
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-hk', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1200) {
-            return '上午';
-        } else if (hm === 1200) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天]LT',
-        nextDay: '[明天]LT',
-        nextWeek: '[下]ddddLT',
-        lastDay: '[昨天]LT',
-        lastWeek: '[上]ddddLT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/dist/locale/zh-mo.js
===================================================================
--- backend/node_modules/moment/dist/locale/zh-mo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Macau) [zh-mo]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Tan Yuanhong : https://github.com/le0tan
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-mo', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'D/M/YYYY',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天] LT',
-        nextDay: '[明天] LT',
-        nextWeek: '[下]dddd LT',
-        lastDay: '[昨天] LT',
-        lastWeek: '[上]dddd LT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s內',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/dist/locale/zh-tw.js
===================================================================
--- backend/node_modules/moment/dist/locale/zh-tw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,99 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Taiwan) [zh-tw]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-tw', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天] LT',
-        nextDay: '[明天] LT',
-        nextWeek: '[下]dddd LT',
-        lastDay: '[昨天] LT',
-        lastWeek: '[上]dddd LT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/dist/moment.js
===================================================================
--- backend/node_modules/moment/dist/moment.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5680 +1,0 @@
-//! moment.js
-//! version : 2.30.1
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-var hookCallback;
-
-function hooks() {
-    return hookCallback.apply(null, arguments);
-}
-
-// This is done to register the method called with moment()
-// without creating circular dependencies.
-function setHookCallback(callback) {
-    hookCallback = callback;
-}
-
-function isArray(input) {
-    return (
-        input instanceof Array ||
-        Object.prototype.toString.call(input) === '[object Array]'
-    );
-}
-
-function isObject(input) {
-    // IE8 will treat undefined and null as object if it wasn't for
-    // input != null
-    return (
-        input != null &&
-        Object.prototype.toString.call(input) === '[object Object]'
-    );
-}
-
-function hasOwnProp(a, b) {
-    return Object.prototype.hasOwnProperty.call(a, b);
-}
-
-function isObjectEmpty(obj) {
-    if (Object.getOwnPropertyNames) {
-        return Object.getOwnPropertyNames(obj).length === 0;
-    } else {
-        var k;
-        for (k in obj) {
-            if (hasOwnProp(obj, k)) {
-                return false;
-            }
-        }
-        return true;
-    }
-}
-
-function isUndefined(input) {
-    return input === void 0;
-}
-
-function isNumber(input) {
-    return (
-        typeof input === 'number' ||
-        Object.prototype.toString.call(input) === '[object Number]'
-    );
-}
-
-function isDate(input) {
-    return (
-        input instanceof Date ||
-        Object.prototype.toString.call(input) === '[object Date]'
-    );
-}
-
-function map(arr, fn) {
-    var res = [],
-        i,
-        arrLen = arr.length;
-    for (i = 0; i < arrLen; ++i) {
-        res.push(fn(arr[i], i));
-    }
-    return res;
-}
-
-function extend(a, b) {
-    for (var i in b) {
-        if (hasOwnProp(b, i)) {
-            a[i] = b[i];
-        }
-    }
-
-    if (hasOwnProp(b, 'toString')) {
-        a.toString = b.toString;
-    }
-
-    if (hasOwnProp(b, 'valueOf')) {
-        a.valueOf = b.valueOf;
-    }
-
-    return a;
-}
-
-function createUTC(input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, true).utc();
-}
-
-function defaultParsingFlags() {
-    // We need to deep clone this object.
-    return {
-        empty: false,
-        unusedTokens: [],
-        unusedInput: [],
-        overflow: -2,
-        charsLeftOver: 0,
-        nullInput: false,
-        invalidEra: null,
-        invalidMonth: null,
-        invalidFormat: false,
-        userInvalidated: false,
-        iso: false,
-        parsedDateParts: [],
-        era: null,
-        meridiem: null,
-        rfc2822: false,
-        weekdayMismatch: false,
-    };
-}
-
-function getParsingFlags(m) {
-    if (m._pf == null) {
-        m._pf = defaultParsingFlags();
-    }
-    return m._pf;
-}
-
-var some;
-if (Array.prototype.some) {
-    some = Array.prototype.some;
-} else {
-    some = function (fun) {
-        var t = Object(this),
-            len = t.length >>> 0,
-            i;
-
-        for (i = 0; i < len; i++) {
-            if (i in t && fun.call(this, t[i], i, t)) {
-                return true;
-            }
-        }
-
-        return false;
-    };
-}
-
-function isValid(m) {
-    var flags = null,
-        parsedParts = false,
-        isNowValid = m._d && !isNaN(m._d.getTime());
-    if (isNowValid) {
-        flags = getParsingFlags(m);
-        parsedParts = some.call(flags.parsedDateParts, function (i) {
-            return i != null;
-        });
-        isNowValid =
-            flags.overflow < 0 &&
-            !flags.empty &&
-            !flags.invalidEra &&
-            !flags.invalidMonth &&
-            !flags.invalidWeekday &&
-            !flags.weekdayMismatch &&
-            !flags.nullInput &&
-            !flags.invalidFormat &&
-            !flags.userInvalidated &&
-            (!flags.meridiem || (flags.meridiem && parsedParts));
-        if (m._strict) {
-            isNowValid =
-                isNowValid &&
-                flags.charsLeftOver === 0 &&
-                flags.unusedTokens.length === 0 &&
-                flags.bigHour === undefined;
-        }
-    }
-    if (Object.isFrozen == null || !Object.isFrozen(m)) {
-        m._isValid = isNowValid;
-    } else {
-        return isNowValid;
-    }
-    return m._isValid;
-}
-
-function createInvalid(flags) {
-    var m = createUTC(NaN);
-    if (flags != null) {
-        extend(getParsingFlags(m), flags);
-    } else {
-        getParsingFlags(m).userInvalidated = true;
-    }
-
-    return m;
-}
-
-// Plugins that add properties should also add the key here (null value),
-// so we can properly clone ourselves.
-var momentProperties = (hooks.momentProperties = []),
-    updateInProgress = false;
-
-function copyConfig(to, from) {
-    var i,
-        prop,
-        val,
-        momentPropertiesLen = momentProperties.length;
-
-    if (!isUndefined(from._isAMomentObject)) {
-        to._isAMomentObject = from._isAMomentObject;
-    }
-    if (!isUndefined(from._i)) {
-        to._i = from._i;
-    }
-    if (!isUndefined(from._f)) {
-        to._f = from._f;
-    }
-    if (!isUndefined(from._l)) {
-        to._l = from._l;
-    }
-    if (!isUndefined(from._strict)) {
-        to._strict = from._strict;
-    }
-    if (!isUndefined(from._tzm)) {
-        to._tzm = from._tzm;
-    }
-    if (!isUndefined(from._isUTC)) {
-        to._isUTC = from._isUTC;
-    }
-    if (!isUndefined(from._offset)) {
-        to._offset = from._offset;
-    }
-    if (!isUndefined(from._pf)) {
-        to._pf = getParsingFlags(from);
-    }
-    if (!isUndefined(from._locale)) {
-        to._locale = from._locale;
-    }
-
-    if (momentPropertiesLen > 0) {
-        for (i = 0; i < momentPropertiesLen; i++) {
-            prop = momentProperties[i];
-            val = from[prop];
-            if (!isUndefined(val)) {
-                to[prop] = val;
-            }
-        }
-    }
-
-    return to;
-}
-
-// Moment prototype object
-function Moment(config) {
-    copyConfig(this, config);
-    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
-    if (!this.isValid()) {
-        this._d = new Date(NaN);
-    }
-    // Prevent infinite loop in case updateOffset creates new moment
-    // objects.
-    if (updateInProgress === false) {
-        updateInProgress = true;
-        hooks.updateOffset(this);
-        updateInProgress = false;
-    }
-}
-
-function isMoment(obj) {
-    return (
-        obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
-    );
-}
-
-function warn(msg) {
-    if (
-        hooks.suppressDeprecationWarnings === false &&
-        typeof console !== 'undefined' &&
-        console.warn
-    ) {
-        console.warn('Deprecation warning: ' + msg);
-    }
-}
-
-function deprecate(msg, fn) {
-    var firstTime = true;
-
-    return extend(function () {
-        if (hooks.deprecationHandler != null) {
-            hooks.deprecationHandler(null, msg);
-        }
-        if (firstTime) {
-            var args = [],
-                arg,
-                i,
-                key,
-                argLen = arguments.length;
-            for (i = 0; i < argLen; i++) {
-                arg = '';
-                if (typeof arguments[i] === 'object') {
-                    arg += '\n[' + i + '] ';
-                    for (key in arguments[0]) {
-                        if (hasOwnProp(arguments[0], key)) {
-                            arg += key + ': ' + arguments[0][key] + ', ';
-                        }
-                    }
-                    arg = arg.slice(0, -2); // Remove trailing comma and space
-                } else {
-                    arg = arguments[i];
-                }
-                args.push(arg);
-            }
-            warn(
-                msg +
-                    '\nArguments: ' +
-                    Array.prototype.slice.call(args).join('') +
-                    '\n' +
-                    new Error().stack
-            );
-            firstTime = false;
-        }
-        return fn.apply(this, arguments);
-    }, fn);
-}
-
-var deprecations = {};
-
-function deprecateSimple(name, msg) {
-    if (hooks.deprecationHandler != null) {
-        hooks.deprecationHandler(name, msg);
-    }
-    if (!deprecations[name]) {
-        warn(msg);
-        deprecations[name] = true;
-    }
-}
-
-hooks.suppressDeprecationWarnings = false;
-hooks.deprecationHandler = null;
-
-function isFunction(input) {
-    return (
-        (typeof Function !== 'undefined' && input instanceof Function) ||
-        Object.prototype.toString.call(input) === '[object Function]'
-    );
-}
-
-function set(config) {
-    var prop, i;
-    for (i in config) {
-        if (hasOwnProp(config, i)) {
-            prop = config[i];
-            if (isFunction(prop)) {
-                this[i] = prop;
-            } else {
-                this['_' + i] = prop;
-            }
-        }
-    }
-    this._config = config;
-    // Lenient ordinal parsing accepts just a number in addition to
-    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
-    // TODO: Remove "ordinalParse" fallback in next major release.
-    this._dayOfMonthOrdinalParseLenient = new RegExp(
-        (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
-            '|' +
-            /\d{1,2}/.source
-    );
-}
-
-function mergeConfigs(parentConfig, childConfig) {
-    var res = extend({}, parentConfig),
-        prop;
-    for (prop in childConfig) {
-        if (hasOwnProp(childConfig, prop)) {
-            if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
-                res[prop] = {};
-                extend(res[prop], parentConfig[prop]);
-                extend(res[prop], childConfig[prop]);
-            } else if (childConfig[prop] != null) {
-                res[prop] = childConfig[prop];
-            } else {
-                delete res[prop];
-            }
-        }
-    }
-    for (prop in parentConfig) {
-        if (
-            hasOwnProp(parentConfig, prop) &&
-            !hasOwnProp(childConfig, prop) &&
-            isObject(parentConfig[prop])
-        ) {
-            // make sure changes to properties don't modify parent config
-            res[prop] = extend({}, res[prop]);
-        }
-    }
-    return res;
-}
-
-function Locale(config) {
-    if (config != null) {
-        this.set(config);
-    }
-}
-
-var keys;
-
-if (Object.keys) {
-    keys = Object.keys;
-} else {
-    keys = function (obj) {
-        var i,
-            res = [];
-        for (i in obj) {
-            if (hasOwnProp(obj, i)) {
-                res.push(i);
-            }
-        }
-        return res;
-    };
-}
-
-var defaultCalendar = {
-    sameDay: '[Today at] LT',
-    nextDay: '[Tomorrow at] LT',
-    nextWeek: 'dddd [at] LT',
-    lastDay: '[Yesterday at] LT',
-    lastWeek: '[Last] dddd [at] LT',
-    sameElse: 'L',
-};
-
-function calendar(key, mom, now) {
-    var output = this._calendar[key] || this._calendar['sameElse'];
-    return isFunction(output) ? output.call(mom, now) : output;
-}
-
-function zeroFill(number, targetLength, forceSign) {
-    var absNumber = '' + Math.abs(number),
-        zerosToFill = targetLength - absNumber.length,
-        sign = number >= 0;
-    return (
-        (sign ? (forceSign ? '+' : '') : '-') +
-        Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
-        absNumber
-    );
-}
-
-var formattingTokens =
-        /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
-    localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
-    formatFunctions = {},
-    formatTokenFunctions = {};
-
-// token:    'M'
-// padded:   ['MM', 2]
-// ordinal:  'Mo'
-// callback: function () { this.month() + 1 }
-function addFormatToken(token, padded, ordinal, callback) {
-    var func = callback;
-    if (typeof callback === 'string') {
-        func = function () {
-            return this[callback]();
-        };
-    }
-    if (token) {
-        formatTokenFunctions[token] = func;
-    }
-    if (padded) {
-        formatTokenFunctions[padded[0]] = function () {
-            return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
-        };
-    }
-    if (ordinal) {
-        formatTokenFunctions[ordinal] = function () {
-            return this.localeData().ordinal(
-                func.apply(this, arguments),
-                token
-            );
-        };
-    }
-}
-
-function removeFormattingTokens(input) {
-    if (input.match(/\[[\s\S]/)) {
-        return input.replace(/^\[|\]$/g, '');
-    }
-    return input.replace(/\\/g, '');
-}
-
-function makeFormatFunction(format) {
-    var array = format.match(formattingTokens),
-        i,
-        length;
-
-    for (i = 0, length = array.length; i < length; i++) {
-        if (formatTokenFunctions[array[i]]) {
-            array[i] = formatTokenFunctions[array[i]];
-        } else {
-            array[i] = removeFormattingTokens(array[i]);
-        }
-    }
-
-    return function (mom) {
-        var output = '',
-            i;
-        for (i = 0; i < length; i++) {
-            output += isFunction(array[i])
-                ? array[i].call(mom, format)
-                : array[i];
-        }
-        return output;
-    };
-}
-
-// format date using native date object
-function formatMoment(m, format) {
-    if (!m.isValid()) {
-        return m.localeData().invalidDate();
-    }
-
-    format = expandFormat(format, m.localeData());
-    formatFunctions[format] =
-        formatFunctions[format] || makeFormatFunction(format);
-
-    return formatFunctions[format](m);
-}
-
-function expandFormat(format, locale) {
-    var i = 5;
-
-    function replaceLongDateFormatTokens(input) {
-        return locale.longDateFormat(input) || input;
-    }
-
-    localFormattingTokens.lastIndex = 0;
-    while (i >= 0 && localFormattingTokens.test(format)) {
-        format = format.replace(
-            localFormattingTokens,
-            replaceLongDateFormatTokens
-        );
-        localFormattingTokens.lastIndex = 0;
-        i -= 1;
-    }
-
-    return format;
-}
-
-var defaultLongDateFormat = {
-    LTS: 'h:mm:ss A',
-    LT: 'h:mm A',
-    L: 'MM/DD/YYYY',
-    LL: 'MMMM D, YYYY',
-    LLL: 'MMMM D, YYYY h:mm A',
-    LLLL: 'dddd, MMMM D, YYYY h:mm A',
-};
-
-function longDateFormat(key) {
-    var format = this._longDateFormat[key],
-        formatUpper = this._longDateFormat[key.toUpperCase()];
-
-    if (format || !formatUpper) {
-        return format;
-    }
-
-    this._longDateFormat[key] = formatUpper
-        .match(formattingTokens)
-        .map(function (tok) {
-            if (
-                tok === 'MMMM' ||
-                tok === 'MM' ||
-                tok === 'DD' ||
-                tok === 'dddd'
-            ) {
-                return tok.slice(1);
-            }
-            return tok;
-        })
-        .join('');
-
-    return this._longDateFormat[key];
-}
-
-var defaultInvalidDate = 'Invalid date';
-
-function invalidDate() {
-    return this._invalidDate;
-}
-
-var defaultOrdinal = '%d',
-    defaultDayOfMonthOrdinalParse = /\d{1,2}/;
-
-function ordinal(number) {
-    return this._ordinal.replace('%d', number);
-}
-
-var defaultRelativeTime = {
-    future: 'in %s',
-    past: '%s ago',
-    s: 'a few seconds',
-    ss: '%d seconds',
-    m: 'a minute',
-    mm: '%d minutes',
-    h: 'an hour',
-    hh: '%d hours',
-    d: 'a day',
-    dd: '%d days',
-    w: 'a week',
-    ww: '%d weeks',
-    M: 'a month',
-    MM: '%d months',
-    y: 'a year',
-    yy: '%d years',
-};
-
-function relativeTime(number, withoutSuffix, string, isFuture) {
-    var output = this._relativeTime[string];
-    return isFunction(output)
-        ? output(number, withoutSuffix, string, isFuture)
-        : output.replace(/%d/i, number);
-}
-
-function pastFuture(diff, output) {
-    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-    return isFunction(format) ? format(output) : format.replace(/%s/i, output);
-}
-
-var aliases = {
-    D: 'date',
-    dates: 'date',
-    date: 'date',
-    d: 'day',
-    days: 'day',
-    day: 'day',
-    e: 'weekday',
-    weekdays: 'weekday',
-    weekday: 'weekday',
-    E: 'isoWeekday',
-    isoweekdays: 'isoWeekday',
-    isoweekday: 'isoWeekday',
-    DDD: 'dayOfYear',
-    dayofyears: 'dayOfYear',
-    dayofyear: 'dayOfYear',
-    h: 'hour',
-    hours: 'hour',
-    hour: 'hour',
-    ms: 'millisecond',
-    milliseconds: 'millisecond',
-    millisecond: 'millisecond',
-    m: 'minute',
-    minutes: 'minute',
-    minute: 'minute',
-    M: 'month',
-    months: 'month',
-    month: 'month',
-    Q: 'quarter',
-    quarters: 'quarter',
-    quarter: 'quarter',
-    s: 'second',
-    seconds: 'second',
-    second: 'second',
-    gg: 'weekYear',
-    weekyears: 'weekYear',
-    weekyear: 'weekYear',
-    GG: 'isoWeekYear',
-    isoweekyears: 'isoWeekYear',
-    isoweekyear: 'isoWeekYear',
-    w: 'week',
-    weeks: 'week',
-    week: 'week',
-    W: 'isoWeek',
-    isoweeks: 'isoWeek',
-    isoweek: 'isoWeek',
-    y: 'year',
-    years: 'year',
-    year: 'year',
-};
-
-function normalizeUnits(units) {
-    return typeof units === 'string'
-        ? aliases[units] || aliases[units.toLowerCase()]
-        : undefined;
-}
-
-function normalizeObjectUnits(inputObject) {
-    var normalizedInput = {},
-        normalizedProp,
-        prop;
-
-    for (prop in inputObject) {
-        if (hasOwnProp(inputObject, prop)) {
-            normalizedProp = normalizeUnits(prop);
-            if (normalizedProp) {
-                normalizedInput[normalizedProp] = inputObject[prop];
-            }
-        }
-    }
-
-    return normalizedInput;
-}
-
-var priorities = {
-    date: 9,
-    day: 11,
-    weekday: 11,
-    isoWeekday: 11,
-    dayOfYear: 4,
-    hour: 13,
-    millisecond: 16,
-    minute: 14,
-    month: 8,
-    quarter: 7,
-    second: 15,
-    weekYear: 1,
-    isoWeekYear: 1,
-    week: 5,
-    isoWeek: 5,
-    year: 1,
-};
-
-function getPrioritizedUnits(unitsObj) {
-    var units = [],
-        u;
-    for (u in unitsObj) {
-        if (hasOwnProp(unitsObj, u)) {
-            units.push({ unit: u, priority: priorities[u] });
-        }
-    }
-    units.sort(function (a, b) {
-        return a.priority - b.priority;
-    });
-    return units;
-}
-
-var match1 = /\d/, //       0 - 9
-    match2 = /\d\d/, //      00 - 99
-    match3 = /\d{3}/, //     000 - 999
-    match4 = /\d{4}/, //    0000 - 9999
-    match6 = /[+-]?\d{6}/, // -999999 - 999999
-    match1to2 = /\d\d?/, //       0 - 99
-    match3to4 = /\d\d\d\d?/, //     999 - 9999
-    match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
-    match1to3 = /\d{1,3}/, //       0 - 999
-    match1to4 = /\d{1,4}/, //       0 - 9999
-    match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
-    matchUnsigned = /\d+/, //       0 - inf
-    matchSigned = /[+-]?\d+/, //    -inf - inf
-    matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
-    matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
-    matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-    // any word (or two) characters or numbers including two/three word month in arabic.
-    // includes scottish gaelic two word and hyphenated months
-    matchWord =
-        /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
-    match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
-    match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
-    regexes;
-
-regexes = {};
-
-function addRegexToken(token, regex, strictRegex) {
-    regexes[token] = isFunction(regex)
-        ? regex
-        : function (isStrict, localeData) {
-              return isStrict && strictRegex ? strictRegex : regex;
-          };
-}
-
-function getParseRegexForToken(token, config) {
-    if (!hasOwnProp(regexes, token)) {
-        return new RegExp(unescapeFormat(token));
-    }
-
-    return regexes[token](config._strict, config._locale);
-}
-
-// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-function unescapeFormat(s) {
-    return regexEscape(
-        s
-            .replace('\\', '')
-            .replace(
-                /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
-                function (matched, p1, p2, p3, p4) {
-                    return p1 || p2 || p3 || p4;
-                }
-            )
-    );
-}
-
-function regexEscape(s) {
-    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-}
-
-function absFloor(number) {
-    if (number < 0) {
-        // -0 -> 0
-        return Math.ceil(number) || 0;
-    } else {
-        return Math.floor(number);
-    }
-}
-
-function toInt(argumentForCoercion) {
-    var coercedNumber = +argumentForCoercion,
-        value = 0;
-
-    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-        value = absFloor(coercedNumber);
-    }
-
-    return value;
-}
-
-var tokens = {};
-
-function addParseToken(token, callback) {
-    var i,
-        func = callback,
-        tokenLen;
-    if (typeof token === 'string') {
-        token = [token];
-    }
-    if (isNumber(callback)) {
-        func = function (input, array) {
-            array[callback] = toInt(input);
-        };
-    }
-    tokenLen = token.length;
-    for (i = 0; i < tokenLen; i++) {
-        tokens[token[i]] = func;
-    }
-}
-
-function addWeekParseToken(token, callback) {
-    addParseToken(token, function (input, array, config, token) {
-        config._w = config._w || {};
-        callback(input, config._w, config, token);
-    });
-}
-
-function addTimeToArrayFromToken(token, input, config) {
-    if (input != null && hasOwnProp(tokens, token)) {
-        tokens[token](input, config._a, config, token);
-    }
-}
-
-function isLeapYear(year) {
-    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-}
-
-var YEAR = 0,
-    MONTH = 1,
-    DATE = 2,
-    HOUR = 3,
-    MINUTE = 4,
-    SECOND = 5,
-    MILLISECOND = 6,
-    WEEK = 7,
-    WEEKDAY = 8;
-
-// FORMATTING
-
-addFormatToken('Y', 0, 0, function () {
-    var y = this.year();
-    return y <= 9999 ? zeroFill(y, 4) : '+' + y;
-});
-
-addFormatToken(0, ['YY', 2], 0, function () {
-    return this.year() % 100;
-});
-
-addFormatToken(0, ['YYYY', 4], 0, 'year');
-addFormatToken(0, ['YYYYY', 5], 0, 'year');
-addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
-// PARSING
-
-addRegexToken('Y', matchSigned);
-addRegexToken('YY', match1to2, match2);
-addRegexToken('YYYY', match1to4, match4);
-addRegexToken('YYYYY', match1to6, match6);
-addRegexToken('YYYYYY', match1to6, match6);
-
-addParseToken(['YYYYY', 'YYYYYY'], YEAR);
-addParseToken('YYYY', function (input, array) {
-    array[YEAR] =
-        input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
-});
-addParseToken('YY', function (input, array) {
-    array[YEAR] = hooks.parseTwoDigitYear(input);
-});
-addParseToken('Y', function (input, array) {
-    array[YEAR] = parseInt(input, 10);
-});
-
-// HELPERS
-
-function daysInYear(year) {
-    return isLeapYear(year) ? 366 : 365;
-}
-
-// HOOKS
-
-hooks.parseTwoDigitYear = function (input) {
-    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-};
-
-// MOMENTS
-
-var getSetYear = makeGetSet('FullYear', true);
-
-function getIsLeapYear() {
-    return isLeapYear(this.year());
-}
-
-function makeGetSet(unit, keepTime) {
-    return function (value) {
-        if (value != null) {
-            set$1(this, unit, value);
-            hooks.updateOffset(this, keepTime);
-            return this;
-        } else {
-            return get(this, unit);
-        }
-    };
-}
-
-function get(mom, unit) {
-    if (!mom.isValid()) {
-        return NaN;
-    }
-
-    var d = mom._d,
-        isUTC = mom._isUTC;
-
-    switch (unit) {
-        case 'Milliseconds':
-            return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
-        case 'Seconds':
-            return isUTC ? d.getUTCSeconds() : d.getSeconds();
-        case 'Minutes':
-            return isUTC ? d.getUTCMinutes() : d.getMinutes();
-        case 'Hours':
-            return isUTC ? d.getUTCHours() : d.getHours();
-        case 'Date':
-            return isUTC ? d.getUTCDate() : d.getDate();
-        case 'Day':
-            return isUTC ? d.getUTCDay() : d.getDay();
-        case 'Month':
-            return isUTC ? d.getUTCMonth() : d.getMonth();
-        case 'FullYear':
-            return isUTC ? d.getUTCFullYear() : d.getFullYear();
-        default:
-            return NaN; // Just in case
-    }
-}
-
-function set$1(mom, unit, value) {
-    var d, isUTC, year, month, date;
-
-    if (!mom.isValid() || isNaN(value)) {
-        return;
-    }
-
-    d = mom._d;
-    isUTC = mom._isUTC;
-
-    switch (unit) {
-        case 'Milliseconds':
-            return void (isUTC
-                ? d.setUTCMilliseconds(value)
-                : d.setMilliseconds(value));
-        case 'Seconds':
-            return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
-        case 'Minutes':
-            return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
-        case 'Hours':
-            return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
-        case 'Date':
-            return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
-        // case 'Day': // Not real
-        //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
-        // case 'Month': // Not used because we need to pass two variables
-        //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
-        case 'FullYear':
-            break; // See below ...
-        default:
-            return; // Just in case
-    }
-
-    year = value;
-    month = mom.month();
-    date = mom.date();
-    date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
-    void (isUTC
-        ? d.setUTCFullYear(year, month, date)
-        : d.setFullYear(year, month, date));
-}
-
-// MOMENTS
-
-function stringGet(units) {
-    units = normalizeUnits(units);
-    if (isFunction(this[units])) {
-        return this[units]();
-    }
-    return this;
-}
-
-function stringSet(units, value) {
-    if (typeof units === 'object') {
-        units = normalizeObjectUnits(units);
-        var prioritized = getPrioritizedUnits(units),
-            i,
-            prioritizedLen = prioritized.length;
-        for (i = 0; i < prioritizedLen; i++) {
-            this[prioritized[i].unit](units[prioritized[i].unit]);
-        }
-    } else {
-        units = normalizeUnits(units);
-        if (isFunction(this[units])) {
-            return this[units](value);
-        }
-    }
-    return this;
-}
-
-function mod(n, x) {
-    return ((n % x) + x) % x;
-}
-
-var indexOf;
-
-if (Array.prototype.indexOf) {
-    indexOf = Array.prototype.indexOf;
-} else {
-    indexOf = function (o) {
-        // I know
-        var i;
-        for (i = 0; i < this.length; ++i) {
-            if (this[i] === o) {
-                return i;
-            }
-        }
-        return -1;
-    };
-}
-
-function daysInMonth(year, month) {
-    if (isNaN(year) || isNaN(month)) {
-        return NaN;
-    }
-    var modMonth = mod(month, 12);
-    year += (month - modMonth) / 12;
-    return modMonth === 1
-        ? isLeapYear(year)
-            ? 29
-            : 28
-        : 31 - ((modMonth % 7) % 2);
-}
-
-// FORMATTING
-
-addFormatToken('M', ['MM', 2], 'Mo', function () {
-    return this.month() + 1;
-});
-
-addFormatToken('MMM', 0, 0, function (format) {
-    return this.localeData().monthsShort(this, format);
-});
-
-addFormatToken('MMMM', 0, 0, function (format) {
-    return this.localeData().months(this, format);
-});
-
-// PARSING
-
-addRegexToken('M', match1to2, match1to2NoLeadingZero);
-addRegexToken('MM', match1to2, match2);
-addRegexToken('MMM', function (isStrict, locale) {
-    return locale.monthsShortRegex(isStrict);
-});
-addRegexToken('MMMM', function (isStrict, locale) {
-    return locale.monthsRegex(isStrict);
-});
-
-addParseToken(['M', 'MM'], function (input, array) {
-    array[MONTH] = toInt(input) - 1;
-});
-
-addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
-    var month = config._locale.monthsParse(input, token, config._strict);
-    // if we didn't find a month name, mark the date as invalid.
-    if (month != null) {
-        array[MONTH] = month;
-    } else {
-        getParsingFlags(config).invalidMonth = input;
-    }
-});
-
-// LOCALES
-
-var defaultLocaleMonths =
-        'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-    defaultLocaleMonthsShort =
-        'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
-    defaultMonthsShortRegex = matchWord,
-    defaultMonthsRegex = matchWord;
-
-function localeMonths(m, format) {
-    if (!m) {
-        return isArray(this._months)
-            ? this._months
-            : this._months['standalone'];
-    }
-    return isArray(this._months)
-        ? this._months[m.month()]
-        : this._months[
-              (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
-                  ? 'format'
-                  : 'standalone'
-          ][m.month()];
-}
-
-function localeMonthsShort(m, format) {
-    if (!m) {
-        return isArray(this._monthsShort)
-            ? this._monthsShort
-            : this._monthsShort['standalone'];
-    }
-    return isArray(this._monthsShort)
-        ? this._monthsShort[m.month()]
-        : this._monthsShort[
-              MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
-          ][m.month()];
-}
-
-function handleStrictParse(monthName, format, strict) {
-    var i,
-        ii,
-        mom,
-        llc = monthName.toLocaleLowerCase();
-    if (!this._monthsParse) {
-        // this is not used
-        this._monthsParse = [];
-        this._longMonthsParse = [];
-        this._shortMonthsParse = [];
-        for (i = 0; i < 12; ++i) {
-            mom = createUTC([2000, i]);
-            this._shortMonthsParse[i] = this.monthsShort(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
-        }
-    }
-
-    if (strict) {
-        if (format === 'MMM') {
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._longMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    } else {
-        if (format === 'MMM') {
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._longMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._longMonthsParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    }
-}
-
-function localeMonthsParse(monthName, format, strict) {
-    var i, mom, regex;
-
-    if (this._monthsParseExact) {
-        return handleStrictParse.call(this, monthName, format, strict);
-    }
-
-    if (!this._monthsParse) {
-        this._monthsParse = [];
-        this._longMonthsParse = [];
-        this._shortMonthsParse = [];
-    }
-
-    // TODO: add sorting
-    // Sorting makes sure if one month (or abbr) is a prefix of another
-    // see sorting in computeMonthsParse
-    for (i = 0; i < 12; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, i]);
-        if (strict && !this._longMonthsParse[i]) {
-            this._longMonthsParse[i] = new RegExp(
-                '^' + this.months(mom, '').replace('.', '') + '$',
-                'i'
-            );
-            this._shortMonthsParse[i] = new RegExp(
-                '^' + this.monthsShort(mom, '').replace('.', '') + '$',
-                'i'
-            );
-        }
-        if (!strict && !this._monthsParse[i]) {
-            regex =
-                '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-            this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (
-            strict &&
-            format === 'MMMM' &&
-            this._longMonthsParse[i].test(monthName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'MMM' &&
-            this._shortMonthsParse[i].test(monthName)
-        ) {
-            return i;
-        } else if (!strict && this._monthsParse[i].test(monthName)) {
-            return i;
-        }
-    }
-}
-
-// MOMENTS
-
-function setMonth(mom, value) {
-    if (!mom.isValid()) {
-        // No op
-        return mom;
-    }
-
-    if (typeof value === 'string') {
-        if (/^\d+$/.test(value)) {
-            value = toInt(value);
-        } else {
-            value = mom.localeData().monthsParse(value);
-            // TODO: Another silent failure?
-            if (!isNumber(value)) {
-                return mom;
-            }
-        }
-    }
-
-    var month = value,
-        date = mom.date();
-
-    date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
-    void (mom._isUTC
-        ? mom._d.setUTCMonth(month, date)
-        : mom._d.setMonth(month, date));
-    return mom;
-}
-
-function getSetMonth(value) {
-    if (value != null) {
-        setMonth(this, value);
-        hooks.updateOffset(this, true);
-        return this;
-    } else {
-        return get(this, 'Month');
-    }
-}
-
-function getDaysInMonth() {
-    return daysInMonth(this.year(), this.month());
-}
-
-function monthsShortRegex(isStrict) {
-    if (this._monthsParseExact) {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            computeMonthsParse.call(this);
-        }
-        if (isStrict) {
-            return this._monthsShortStrictRegex;
-        } else {
-            return this._monthsShortRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_monthsShortRegex')) {
-            this._monthsShortRegex = defaultMonthsShortRegex;
-        }
-        return this._monthsShortStrictRegex && isStrict
-            ? this._monthsShortStrictRegex
-            : this._monthsShortRegex;
-    }
-}
-
-function monthsRegex(isStrict) {
-    if (this._monthsParseExact) {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            computeMonthsParse.call(this);
-        }
-        if (isStrict) {
-            return this._monthsStrictRegex;
-        } else {
-            return this._monthsRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            this._monthsRegex = defaultMonthsRegex;
-        }
-        return this._monthsStrictRegex && isStrict
-            ? this._monthsStrictRegex
-            : this._monthsRegex;
-    }
-}
-
-function computeMonthsParse() {
-    function cmpLenRev(a, b) {
-        return b.length - a.length;
-    }
-
-    var shortPieces = [],
-        longPieces = [],
-        mixedPieces = [],
-        i,
-        mom,
-        shortP,
-        longP;
-    for (i = 0; i < 12; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, i]);
-        shortP = regexEscape(this.monthsShort(mom, ''));
-        longP = regexEscape(this.months(mom, ''));
-        shortPieces.push(shortP);
-        longPieces.push(longP);
-        mixedPieces.push(longP);
-        mixedPieces.push(shortP);
-    }
-    // Sorting makes sure if one month (or abbr) is a prefix of another it
-    // will match the longer piece.
-    shortPieces.sort(cmpLenRev);
-    longPieces.sort(cmpLenRev);
-    mixedPieces.sort(cmpLenRev);
-
-    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._monthsShortRegex = this._monthsRegex;
-    this._monthsStrictRegex = new RegExp(
-        '^(' + longPieces.join('|') + ')',
-        'i'
-    );
-    this._monthsShortStrictRegex = new RegExp(
-        '^(' + shortPieces.join('|') + ')',
-        'i'
-    );
-}
-
-function createDate(y, m, d, h, M, s, ms) {
-    // can't just apply() to create a date:
-    // https://stackoverflow.com/q/181348
-    var date;
-    // the date constructor remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        date = new Date(y + 400, m, d, h, M, s, ms);
-        if (isFinite(date.getFullYear())) {
-            date.setFullYear(y);
-        }
-    } else {
-        date = new Date(y, m, d, h, M, s, ms);
-    }
-
-    return date;
-}
-
-function createUTCDate(y) {
-    var date, args;
-    // the Date.UTC function remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        args = Array.prototype.slice.call(arguments);
-        // preserve leap years using a full 400 year cycle, then reset
-        args[0] = y + 400;
-        date = new Date(Date.UTC.apply(null, args));
-        if (isFinite(date.getUTCFullYear())) {
-            date.setUTCFullYear(y);
-        }
-    } else {
-        date = new Date(Date.UTC.apply(null, arguments));
-    }
-
-    return date;
-}
-
-// start-of-first-week - start-of-year
-function firstWeekOffset(year, dow, doy) {
-    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
-        fwd = 7 + dow - doy,
-        // first-week day local weekday -- which local weekday is fwd
-        fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
-
-    return -fwdlw + fwd - 1;
-}
-
-// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
-    var localWeekday = (7 + weekday - dow) % 7,
-        weekOffset = firstWeekOffset(year, dow, doy),
-        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
-        resYear,
-        resDayOfYear;
-
-    if (dayOfYear <= 0) {
-        resYear = year - 1;
-        resDayOfYear = daysInYear(resYear) + dayOfYear;
-    } else if (dayOfYear > daysInYear(year)) {
-        resYear = year + 1;
-        resDayOfYear = dayOfYear - daysInYear(year);
-    } else {
-        resYear = year;
-        resDayOfYear = dayOfYear;
-    }
-
-    return {
-        year: resYear,
-        dayOfYear: resDayOfYear,
-    };
-}
-
-function weekOfYear(mom, dow, doy) {
-    var weekOffset = firstWeekOffset(mom.year(), dow, doy),
-        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
-        resWeek,
-        resYear;
-
-    if (week < 1) {
-        resYear = mom.year() - 1;
-        resWeek = week + weeksInYear(resYear, dow, doy);
-    } else if (week > weeksInYear(mom.year(), dow, doy)) {
-        resWeek = week - weeksInYear(mom.year(), dow, doy);
-        resYear = mom.year() + 1;
-    } else {
-        resYear = mom.year();
-        resWeek = week;
-    }
-
-    return {
-        week: resWeek,
-        year: resYear,
-    };
-}
-
-function weeksInYear(year, dow, doy) {
-    var weekOffset = firstWeekOffset(year, dow, doy),
-        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
-    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
-}
-
-// FORMATTING
-
-addFormatToken('w', ['ww', 2], 'wo', 'week');
-addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
-// PARSING
-
-addRegexToken('w', match1to2, match1to2NoLeadingZero);
-addRegexToken('ww', match1to2, match2);
-addRegexToken('W', match1to2, match1to2NoLeadingZero);
-addRegexToken('WW', match1to2, match2);
-
-addWeekParseToken(
-    ['w', 'ww', 'W', 'WW'],
-    function (input, week, config, token) {
-        week[token.substr(0, 1)] = toInt(input);
-    }
-);
-
-// HELPERS
-
-// LOCALES
-
-function localeWeek(mom) {
-    return weekOfYear(mom, this._week.dow, this._week.doy).week;
-}
-
-var defaultLocaleWeek = {
-    dow: 0, // Sunday is the first day of the week.
-    doy: 6, // The week that contains Jan 6th is the first week of the year.
-};
-
-function localeFirstDayOfWeek() {
-    return this._week.dow;
-}
-
-function localeFirstDayOfYear() {
-    return this._week.doy;
-}
-
-// MOMENTS
-
-function getSetWeek(input) {
-    var week = this.localeData().week(this);
-    return input == null ? week : this.add((input - week) * 7, 'd');
-}
-
-function getSetISOWeek(input) {
-    var week = weekOfYear(this, 1, 4).week;
-    return input == null ? week : this.add((input - week) * 7, 'd');
-}
-
-// FORMATTING
-
-addFormatToken('d', 0, 'do', 'day');
-
-addFormatToken('dd', 0, 0, function (format) {
-    return this.localeData().weekdaysMin(this, format);
-});
-
-addFormatToken('ddd', 0, 0, function (format) {
-    return this.localeData().weekdaysShort(this, format);
-});
-
-addFormatToken('dddd', 0, 0, function (format) {
-    return this.localeData().weekdays(this, format);
-});
-
-addFormatToken('e', 0, 0, 'weekday');
-addFormatToken('E', 0, 0, 'isoWeekday');
-
-// PARSING
-
-addRegexToken('d', match1to2);
-addRegexToken('e', match1to2);
-addRegexToken('E', match1to2);
-addRegexToken('dd', function (isStrict, locale) {
-    return locale.weekdaysMinRegex(isStrict);
-});
-addRegexToken('ddd', function (isStrict, locale) {
-    return locale.weekdaysShortRegex(isStrict);
-});
-addRegexToken('dddd', function (isStrict, locale) {
-    return locale.weekdaysRegex(isStrict);
-});
-
-addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
-    var weekday = config._locale.weekdaysParse(input, token, config._strict);
-    // if we didn't get a weekday name, mark the date as invalid
-    if (weekday != null) {
-        week.d = weekday;
-    } else {
-        getParsingFlags(config).invalidWeekday = input;
-    }
-});
-
-addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
-    week[token] = toInt(input);
-});
-
-// HELPERS
-
-function parseWeekday(input, locale) {
-    if (typeof input !== 'string') {
-        return input;
-    }
-
-    if (!isNaN(input)) {
-        return parseInt(input, 10);
-    }
-
-    input = locale.weekdaysParse(input);
-    if (typeof input === 'number') {
-        return input;
-    }
-
-    return null;
-}
-
-function parseIsoWeekday(input, locale) {
-    if (typeof input === 'string') {
-        return locale.weekdaysParse(input) % 7 || 7;
-    }
-    return isNaN(input) ? null : input;
-}
-
-// LOCALES
-function shiftWeekdays(ws, n) {
-    return ws.slice(n, 7).concat(ws.slice(0, n));
-}
-
-var defaultLocaleWeekdays =
-        'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
-    defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    defaultWeekdaysRegex = matchWord,
-    defaultWeekdaysShortRegex = matchWord,
-    defaultWeekdaysMinRegex = matchWord;
-
-function localeWeekdays(m, format) {
-    var weekdays = isArray(this._weekdays)
-        ? this._weekdays
-        : this._weekdays[
-              m && m !== true && this._weekdays.isFormat.test(format)
-                  ? 'format'
-                  : 'standalone'
-          ];
-    return m === true
-        ? shiftWeekdays(weekdays, this._week.dow)
-        : m
-          ? weekdays[m.day()]
-          : weekdays;
-}
-
-function localeWeekdaysShort(m) {
-    return m === true
-        ? shiftWeekdays(this._weekdaysShort, this._week.dow)
-        : m
-          ? this._weekdaysShort[m.day()]
-          : this._weekdaysShort;
-}
-
-function localeWeekdaysMin(m) {
-    return m === true
-        ? shiftWeekdays(this._weekdaysMin, this._week.dow)
-        : m
-          ? this._weekdaysMin[m.day()]
-          : this._weekdaysMin;
-}
-
-function handleStrictParse$1(weekdayName, format, strict) {
-    var i,
-        ii,
-        mom,
-        llc = weekdayName.toLocaleLowerCase();
-    if (!this._weekdaysParse) {
-        this._weekdaysParse = [];
-        this._shortWeekdaysParse = [];
-        this._minWeekdaysParse = [];
-
-        for (i = 0; i < 7; ++i) {
-            mom = createUTC([2000, 1]).day(i);
-            this._minWeekdaysParse[i] = this.weekdaysMin(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._shortWeekdaysParse[i] = this.weekdaysShort(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
-        }
-    }
-
-    if (strict) {
-        if (format === 'dddd') {
-            ii = indexOf.call(this._weekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else if (format === 'ddd') {
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    } else {
-        if (format === 'dddd') {
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else if (format === 'ddd') {
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    }
-}
-
-function localeWeekdaysParse(weekdayName, format, strict) {
-    var i, mom, regex;
-
-    if (this._weekdaysParseExact) {
-        return handleStrictParse$1.call(this, weekdayName, format, strict);
-    }
-
-    if (!this._weekdaysParse) {
-        this._weekdaysParse = [];
-        this._minWeekdaysParse = [];
-        this._shortWeekdaysParse = [];
-        this._fullWeekdaysParse = [];
-    }
-
-    for (i = 0; i < 7; i++) {
-        // make the regex if we don't have it already
-
-        mom = createUTC([2000, 1]).day(i);
-        if (strict && !this._fullWeekdaysParse[i]) {
-            this._fullWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-            this._shortWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-            this._minWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-        }
-        if (!this._weekdaysParse[i]) {
-            regex =
-                '^' +
-                this.weekdays(mom, '') +
-                '|^' +
-                this.weekdaysShort(mom, '') +
-                '|^' +
-                this.weekdaysMin(mom, '');
-            this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (
-            strict &&
-            format === 'dddd' &&
-            this._fullWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'ddd' &&
-            this._shortWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'dd' &&
-            this._minWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
-            return i;
-        }
-    }
-}
-
-// MOMENTS
-
-function getSetDayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-
-    var day = get(this, 'Day');
-    if (input != null) {
-        input = parseWeekday(input, this.localeData());
-        return this.add(input - day, 'd');
-    } else {
-        return day;
-    }
-}
-
-function getSetLocaleDayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
-    return input == null ? weekday : this.add(input - weekday, 'd');
-}
-
-function getSetISODayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-
-    // behaves the same as moment#day except
-    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-    // as a setter, sunday should belong to the previous week.
-
-    if (input != null) {
-        var weekday = parseIsoWeekday(input, this.localeData());
-        return this.day(this.day() % 7 ? weekday : weekday - 7);
-    } else {
-        return this.day() || 7;
-    }
-}
-
-function weekdaysRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysStrictRegex;
-        } else {
-            return this._weekdaysRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            this._weekdaysRegex = defaultWeekdaysRegex;
-        }
-        return this._weekdaysStrictRegex && isStrict
-            ? this._weekdaysStrictRegex
-            : this._weekdaysRegex;
-    }
-}
-
-function weekdaysShortRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysShortStrictRegex;
-        } else {
-            return this._weekdaysShortRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysShortRegex')) {
-            this._weekdaysShortRegex = defaultWeekdaysShortRegex;
-        }
-        return this._weekdaysShortStrictRegex && isStrict
-            ? this._weekdaysShortStrictRegex
-            : this._weekdaysShortRegex;
-    }
-}
-
-function weekdaysMinRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysMinStrictRegex;
-        } else {
-            return this._weekdaysMinRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysMinRegex')) {
-            this._weekdaysMinRegex = defaultWeekdaysMinRegex;
-        }
-        return this._weekdaysMinStrictRegex && isStrict
-            ? this._weekdaysMinStrictRegex
-            : this._weekdaysMinRegex;
-    }
-}
-
-function computeWeekdaysParse() {
-    function cmpLenRev(a, b) {
-        return b.length - a.length;
-    }
-
-    var minPieces = [],
-        shortPieces = [],
-        longPieces = [],
-        mixedPieces = [],
-        i,
-        mom,
-        minp,
-        shortp,
-        longp;
-    for (i = 0; i < 7; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, 1]).day(i);
-        minp = regexEscape(this.weekdaysMin(mom, ''));
-        shortp = regexEscape(this.weekdaysShort(mom, ''));
-        longp = regexEscape(this.weekdays(mom, ''));
-        minPieces.push(minp);
-        shortPieces.push(shortp);
-        longPieces.push(longp);
-        mixedPieces.push(minp);
-        mixedPieces.push(shortp);
-        mixedPieces.push(longp);
-    }
-    // Sorting makes sure if one weekday (or abbr) is a prefix of another it
-    // will match the longer piece.
-    minPieces.sort(cmpLenRev);
-    shortPieces.sort(cmpLenRev);
-    longPieces.sort(cmpLenRev);
-    mixedPieces.sort(cmpLenRev);
-
-    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._weekdaysShortRegex = this._weekdaysRegex;
-    this._weekdaysMinRegex = this._weekdaysRegex;
-
-    this._weekdaysStrictRegex = new RegExp(
-        '^(' + longPieces.join('|') + ')',
-        'i'
-    );
-    this._weekdaysShortStrictRegex = new RegExp(
-        '^(' + shortPieces.join('|') + ')',
-        'i'
-    );
-    this._weekdaysMinStrictRegex = new RegExp(
-        '^(' + minPieces.join('|') + ')',
-        'i'
-    );
-}
-
-// FORMATTING
-
-function hFormat() {
-    return this.hours() % 12 || 12;
-}
-
-function kFormat() {
-    return this.hours() || 24;
-}
-
-addFormatToken('H', ['HH', 2], 0, 'hour');
-addFormatToken('h', ['hh', 2], 0, hFormat);
-addFormatToken('k', ['kk', 2], 0, kFormat);
-
-addFormatToken('hmm', 0, 0, function () {
-    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
-});
-
-addFormatToken('hmmss', 0, 0, function () {
-    return (
-        '' +
-        hFormat.apply(this) +
-        zeroFill(this.minutes(), 2) +
-        zeroFill(this.seconds(), 2)
-    );
-});
-
-addFormatToken('Hmm', 0, 0, function () {
-    return '' + this.hours() + zeroFill(this.minutes(), 2);
-});
-
-addFormatToken('Hmmss', 0, 0, function () {
-    return (
-        '' +
-        this.hours() +
-        zeroFill(this.minutes(), 2) +
-        zeroFill(this.seconds(), 2)
-    );
-});
-
-function meridiem(token, lowercase) {
-    addFormatToken(token, 0, 0, function () {
-        return this.localeData().meridiem(
-            this.hours(),
-            this.minutes(),
-            lowercase
-        );
-    });
-}
-
-meridiem('a', true);
-meridiem('A', false);
-
-// PARSING
-
-function matchMeridiem(isStrict, locale) {
-    return locale._meridiemParse;
-}
-
-addRegexToken('a', matchMeridiem);
-addRegexToken('A', matchMeridiem);
-addRegexToken('H', match1to2, match1to2HasZero);
-addRegexToken('h', match1to2, match1to2NoLeadingZero);
-addRegexToken('k', match1to2, match1to2NoLeadingZero);
-addRegexToken('HH', match1to2, match2);
-addRegexToken('hh', match1to2, match2);
-addRegexToken('kk', match1to2, match2);
-
-addRegexToken('hmm', match3to4);
-addRegexToken('hmmss', match5to6);
-addRegexToken('Hmm', match3to4);
-addRegexToken('Hmmss', match5to6);
-
-addParseToken(['H', 'HH'], HOUR);
-addParseToken(['k', 'kk'], function (input, array, config) {
-    var kInput = toInt(input);
-    array[HOUR] = kInput === 24 ? 0 : kInput;
-});
-addParseToken(['a', 'A'], function (input, array, config) {
-    config._isPm = config._locale.isPM(input);
-    config._meridiem = input;
-});
-addParseToken(['h', 'hh'], function (input, array, config) {
-    array[HOUR] = toInt(input);
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('hmm', function (input, array, config) {
-    var pos = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos));
-    array[MINUTE] = toInt(input.substr(pos));
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('hmmss', function (input, array, config) {
-    var pos1 = input.length - 4,
-        pos2 = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos1));
-    array[MINUTE] = toInt(input.substr(pos1, 2));
-    array[SECOND] = toInt(input.substr(pos2));
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('Hmm', function (input, array, config) {
-    var pos = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos));
-    array[MINUTE] = toInt(input.substr(pos));
-});
-addParseToken('Hmmss', function (input, array, config) {
-    var pos1 = input.length - 4,
-        pos2 = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos1));
-    array[MINUTE] = toInt(input.substr(pos1, 2));
-    array[SECOND] = toInt(input.substr(pos2));
-});
-
-// LOCALES
-
-function localeIsPM(input) {
-    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-    // Using charAt should be more compatible.
-    return (input + '').toLowerCase().charAt(0) === 'p';
-}
-
-var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
-    // Setting the hour should keep the time, because the user explicitly
-    // specified which hour they want. So trying to maintain the same hour (in
-    // a new timezone) makes sense. Adding/subtracting hours does not follow
-    // this rule.
-    getSetHour = makeGetSet('Hours', true);
-
-function localeMeridiem(hours, minutes, isLower) {
-    if (hours > 11) {
-        return isLower ? 'pm' : 'PM';
-    } else {
-        return isLower ? 'am' : 'AM';
-    }
-}
-
-var baseConfig = {
-    calendar: defaultCalendar,
-    longDateFormat: defaultLongDateFormat,
-    invalidDate: defaultInvalidDate,
-    ordinal: defaultOrdinal,
-    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
-    relativeTime: defaultRelativeTime,
-
-    months: defaultLocaleMonths,
-    monthsShort: defaultLocaleMonthsShort,
-
-    week: defaultLocaleWeek,
-
-    weekdays: defaultLocaleWeekdays,
-    weekdaysMin: defaultLocaleWeekdaysMin,
-    weekdaysShort: defaultLocaleWeekdaysShort,
-
-    meridiemParse: defaultLocaleMeridiemParse,
-};
-
-// internal storage for locale config files
-var locales = {},
-    localeFamilies = {},
-    globalLocale;
-
-function commonPrefix(arr1, arr2) {
-    var i,
-        minl = Math.min(arr1.length, arr2.length);
-    for (i = 0; i < minl; i += 1) {
-        if (arr1[i] !== arr2[i]) {
-            return i;
-        }
-    }
-    return minl;
-}
-
-function normalizeLocale(key) {
-    return key ? key.toLowerCase().replace('_', '-') : key;
-}
-
-// pick the locale from the array
-// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-function chooseLocale(names) {
-    var i = 0,
-        j,
-        next,
-        locale,
-        split;
-
-    while (i < names.length) {
-        split = normalizeLocale(names[i]).split('-');
-        j = split.length;
-        next = normalizeLocale(names[i + 1]);
-        next = next ? next.split('-') : null;
-        while (j > 0) {
-            locale = loadLocale(split.slice(0, j).join('-'));
-            if (locale) {
-                return locale;
-            }
-            if (
-                next &&
-                next.length >= j &&
-                commonPrefix(split, next) >= j - 1
-            ) {
-                //the next array item is better than a shallower substring of this one
-                break;
-            }
-            j--;
-        }
-        i++;
-    }
-    return globalLocale;
-}
-
-function isLocaleNameSane(name) {
-    // Prevent names that look like filesystem paths, i.e contain '/' or '\'
-    // Ensure name is available and function returns boolean
-    return !!(name && name.match('^[^/\\\\]*$'));
-}
-
-function loadLocale(name) {
-    var oldLocale = null,
-        aliasedRequire;
-    // TODO: Find a better way to register and load all the locales in Node
-    if (
-        locales[name] === undefined &&
-        typeof module !== 'undefined' &&
-        module &&
-        module.exports &&
-        isLocaleNameSane(name)
-    ) {
-        try {
-            oldLocale = globalLocale._abbr;
-            aliasedRequire = require;
-            aliasedRequire('./locale/' + name);
-            getSetGlobalLocale(oldLocale);
-        } catch (e) {
-            // mark as not found to avoid repeating expensive file require call causing high CPU
-            // when trying to find en-US, en_US, en-us for every format call
-            locales[name] = null; // null means not found
-        }
-    }
-    return locales[name];
-}
-
-// This function will load locale and then set the global locale.  If
-// no arguments are passed in, it will simply return the current global
-// locale key.
-function getSetGlobalLocale(key, values) {
-    var data;
-    if (key) {
-        if (isUndefined(values)) {
-            data = getLocale(key);
-        } else {
-            data = defineLocale(key, values);
-        }
-
-        if (data) {
-            // moment.duration._locale = moment._locale = data;
-            globalLocale = data;
-        } else {
-            if (typeof console !== 'undefined' && console.warn) {
-                //warn user if arguments are passed but the locale could not be set
-                console.warn(
-                    'Locale ' + key + ' not found. Did you forget to load it?'
-                );
-            }
-        }
-    }
-
-    return globalLocale._abbr;
-}
-
-function defineLocale(name, config) {
-    if (config !== null) {
-        var locale,
-            parentConfig = baseConfig;
-        config.abbr = name;
-        if (locales[name] != null) {
-            deprecateSimple(
-                'defineLocaleOverride',
-                'use moment.updateLocale(localeName, config) to change ' +
-                    'an existing locale. moment.defineLocale(localeName, ' +
-                    'config) should only be used for creating a new locale ' +
-                    'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
-            );
-            parentConfig = locales[name]._config;
-        } else if (config.parentLocale != null) {
-            if (locales[config.parentLocale] != null) {
-                parentConfig = locales[config.parentLocale]._config;
-            } else {
-                locale = loadLocale(config.parentLocale);
-                if (locale != null) {
-                    parentConfig = locale._config;
-                } else {
-                    if (!localeFamilies[config.parentLocale]) {
-                        localeFamilies[config.parentLocale] = [];
-                    }
-                    localeFamilies[config.parentLocale].push({
-                        name: name,
-                        config: config,
-                    });
-                    return null;
-                }
-            }
-        }
-        locales[name] = new Locale(mergeConfigs(parentConfig, config));
-
-        if (localeFamilies[name]) {
-            localeFamilies[name].forEach(function (x) {
-                defineLocale(x.name, x.config);
-            });
-        }
-
-        // backwards compat for now: also set the locale
-        // make sure we set the locale AFTER all child locales have been
-        // created, so we won't end up with the child locale set.
-        getSetGlobalLocale(name);
-
-        return locales[name];
-    } else {
-        // useful for testing
-        delete locales[name];
-        return null;
-    }
-}
-
-function updateLocale(name, config) {
-    if (config != null) {
-        var locale,
-            tmpLocale,
-            parentConfig = baseConfig;
-
-        if (locales[name] != null && locales[name].parentLocale != null) {
-            // Update existing child locale in-place to avoid memory-leaks
-            locales[name].set(mergeConfigs(locales[name]._config, config));
-        } else {
-            // MERGE
-            tmpLocale = loadLocale(name);
-            if (tmpLocale != null) {
-                parentConfig = tmpLocale._config;
-            }
-            config = mergeConfigs(parentConfig, config);
-            if (tmpLocale == null) {
-                // updateLocale is called for creating a new locale
-                // Set abbr so it will have a name (getters return
-                // undefined otherwise).
-                config.abbr = name;
-            }
-            locale = new Locale(config);
-            locale.parentLocale = locales[name];
-            locales[name] = locale;
-        }
-
-        // backwards compat for now: also set the locale
-        getSetGlobalLocale(name);
-    } else {
-        // pass null for config to unupdate, useful for tests
-        if (locales[name] != null) {
-            if (locales[name].parentLocale != null) {
-                locales[name] = locales[name].parentLocale;
-                if (name === getSetGlobalLocale()) {
-                    getSetGlobalLocale(name);
-                }
-            } else if (locales[name] != null) {
-                delete locales[name];
-            }
-        }
-    }
-    return locales[name];
-}
-
-// returns locale data
-function getLocale(key) {
-    var locale;
-
-    if (key && key._locale && key._locale._abbr) {
-        key = key._locale._abbr;
-    }
-
-    if (!key) {
-        return globalLocale;
-    }
-
-    if (!isArray(key)) {
-        //short-circuit everything else
-        locale = loadLocale(key);
-        if (locale) {
-            return locale;
-        }
-        key = [key];
-    }
-
-    return chooseLocale(key);
-}
-
-function listLocales() {
-    return keys(locales);
-}
-
-function checkOverflow(m) {
-    var overflow,
-        a = m._a;
-
-    if (a && getParsingFlags(m).overflow === -2) {
-        overflow =
-            a[MONTH] < 0 || a[MONTH] > 11
-                ? MONTH
-                : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
-                  ? DATE
-                  : a[HOUR] < 0 ||
-                      a[HOUR] > 24 ||
-                      (a[HOUR] === 24 &&
-                          (a[MINUTE] !== 0 ||
-                              a[SECOND] !== 0 ||
-                              a[MILLISECOND] !== 0))
-                    ? HOUR
-                    : a[MINUTE] < 0 || a[MINUTE] > 59
-                      ? MINUTE
-                      : a[SECOND] < 0 || a[SECOND] > 59
-                        ? SECOND
-                        : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
-                          ? MILLISECOND
-                          : -1;
-
-        if (
-            getParsingFlags(m)._overflowDayOfYear &&
-            (overflow < YEAR || overflow > DATE)
-        ) {
-            overflow = DATE;
-        }
-        if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
-            overflow = WEEK;
-        }
-        if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
-            overflow = WEEKDAY;
-        }
-
-        getParsingFlags(m).overflow = overflow;
-    }
-
-    return m;
-}
-
-// iso 8601 regex
-// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
-var extendedIsoRegex =
-        /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-    basicIsoRegex =
-        /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-    tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
-    isoDates = [
-        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
-        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
-        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
-        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
-        ['YYYY-DDD', /\d{4}-\d{3}/],
-        ['YYYY-MM', /\d{4}-\d\d/, false],
-        ['YYYYYYMMDD', /[+-]\d{10}/],
-        ['YYYYMMDD', /\d{8}/],
-        ['GGGG[W]WWE', /\d{4}W\d{3}/],
-        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
-        ['YYYYDDD', /\d{7}/],
-        ['YYYYMM', /\d{6}/, false],
-        ['YYYY', /\d{4}/, false],
-    ],
-    // iso time formats and regexes
-    isoTimes = [
-        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
-        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
-        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
-        ['HH:mm', /\d\d:\d\d/],
-        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
-        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
-        ['HHmmss', /\d\d\d\d\d\d/],
-        ['HHmm', /\d\d\d\d/],
-        ['HH', /\d\d/],
-    ],
-    aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
-    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
-    rfc2822 =
-        /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
-    obsOffsets = {
-        UT: 0,
-        GMT: 0,
-        EDT: -4 * 60,
-        EST: -5 * 60,
-        CDT: -5 * 60,
-        CST: -6 * 60,
-        MDT: -6 * 60,
-        MST: -7 * 60,
-        PDT: -7 * 60,
-        PST: -8 * 60,
-    };
-
-// date from iso format
-function configFromISO(config) {
-    var i,
-        l,
-        string = config._i,
-        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
-        allowTime,
-        dateFormat,
-        timeFormat,
-        tzFormat,
-        isoDatesLen = isoDates.length,
-        isoTimesLen = isoTimes.length;
-
-    if (match) {
-        getParsingFlags(config).iso = true;
-        for (i = 0, l = isoDatesLen; i < l; i++) {
-            if (isoDates[i][1].exec(match[1])) {
-                dateFormat = isoDates[i][0];
-                allowTime = isoDates[i][2] !== false;
-                break;
-            }
-        }
-        if (dateFormat == null) {
-            config._isValid = false;
-            return;
-        }
-        if (match[3]) {
-            for (i = 0, l = isoTimesLen; i < l; i++) {
-                if (isoTimes[i][1].exec(match[3])) {
-                    // match[2] should be 'T' or space
-                    timeFormat = (match[2] || ' ') + isoTimes[i][0];
-                    break;
-                }
-            }
-            if (timeFormat == null) {
-                config._isValid = false;
-                return;
-            }
-        }
-        if (!allowTime && timeFormat != null) {
-            config._isValid = false;
-            return;
-        }
-        if (match[4]) {
-            if (tzRegex.exec(match[4])) {
-                tzFormat = 'Z';
-            } else {
-                config._isValid = false;
-                return;
-            }
-        }
-        config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
-        configFromStringAndFormat(config);
-    } else {
-        config._isValid = false;
-    }
-}
-
-function extractFromRFC2822Strings(
-    yearStr,
-    monthStr,
-    dayStr,
-    hourStr,
-    minuteStr,
-    secondStr
-) {
-    var result = [
-        untruncateYear(yearStr),
-        defaultLocaleMonthsShort.indexOf(monthStr),
-        parseInt(dayStr, 10),
-        parseInt(hourStr, 10),
-        parseInt(minuteStr, 10),
-    ];
-
-    if (secondStr) {
-        result.push(parseInt(secondStr, 10));
-    }
-
-    return result;
-}
-
-function untruncateYear(yearStr) {
-    var year = parseInt(yearStr, 10);
-    if (year <= 49) {
-        return 2000 + year;
-    } else if (year <= 999) {
-        return 1900 + year;
-    }
-    return year;
-}
-
-function preprocessRFC2822(s) {
-    // Remove comments and folding whitespace and replace multiple-spaces with a single space
-    return s
-        .replace(/\([^()]*\)|[\n\t]/g, ' ')
-        .replace(/(\s\s+)/g, ' ')
-        .replace(/^\s\s*/, '')
-        .replace(/\s\s*$/, '');
-}
-
-function checkWeekday(weekdayStr, parsedInput, config) {
-    if (weekdayStr) {
-        // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
-        var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
-            weekdayActual = new Date(
-                parsedInput[0],
-                parsedInput[1],
-                parsedInput[2]
-            ).getDay();
-        if (weekdayProvided !== weekdayActual) {
-            getParsingFlags(config).weekdayMismatch = true;
-            config._isValid = false;
-            return false;
-        }
-    }
-    return true;
-}
-
-function calculateOffset(obsOffset, militaryOffset, numOffset) {
-    if (obsOffset) {
-        return obsOffsets[obsOffset];
-    } else if (militaryOffset) {
-        // the only allowed military tz is Z
-        return 0;
-    } else {
-        var hm = parseInt(numOffset, 10),
-            m = hm % 100,
-            h = (hm - m) / 100;
-        return h * 60 + m;
-    }
-}
-
-// date and time from ref 2822 format
-function configFromRFC2822(config) {
-    var match = rfc2822.exec(preprocessRFC2822(config._i)),
-        parsedArray;
-    if (match) {
-        parsedArray = extractFromRFC2822Strings(
-            match[4],
-            match[3],
-            match[2],
-            match[5],
-            match[6],
-            match[7]
-        );
-        if (!checkWeekday(match[1], parsedArray, config)) {
-            return;
-        }
-
-        config._a = parsedArray;
-        config._tzm = calculateOffset(match[8], match[9], match[10]);
-
-        config._d = createUTCDate.apply(null, config._a);
-        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-
-        getParsingFlags(config).rfc2822 = true;
-    } else {
-        config._isValid = false;
-    }
-}
-
-// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
-function configFromString(config) {
-    var matched = aspNetJsonRegex.exec(config._i);
-    if (matched !== null) {
-        config._d = new Date(+matched[1]);
-        return;
-    }
-
-    configFromISO(config);
-    if (config._isValid === false) {
-        delete config._isValid;
-    } else {
-        return;
-    }
-
-    configFromRFC2822(config);
-    if (config._isValid === false) {
-        delete config._isValid;
-    } else {
-        return;
-    }
-
-    if (config._strict) {
-        config._isValid = false;
-    } else {
-        // Final attempt, use Input Fallback
-        hooks.createFromInputFallback(config);
-    }
-}
-
-hooks.createFromInputFallback = deprecate(
-    'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
-        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
-        'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
-    function (config) {
-        config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
-    }
-);
-
-// Pick the first defined of two or three arguments.
-function defaults(a, b, c) {
-    if (a != null) {
-        return a;
-    }
-    if (b != null) {
-        return b;
-    }
-    return c;
-}
-
-function currentDateArray(config) {
-    // hooks is actually the exported moment object
-    var nowValue = new Date(hooks.now());
-    if (config._useUTC) {
-        return [
-            nowValue.getUTCFullYear(),
-            nowValue.getUTCMonth(),
-            nowValue.getUTCDate(),
-        ];
-    }
-    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
-}
-
-// convert an array to a date.
-// the array should mirror the parameters below
-// note: all values past the year are optional and will default to the lowest possible value.
-// [year, month, day , hour, minute, second, millisecond]
-function configFromArray(config) {
-    var i,
-        date,
-        input = [],
-        currentDate,
-        expectedWeekday,
-        yearToUse;
-
-    if (config._d) {
-        return;
-    }
-
-    currentDate = currentDateArray(config);
-
-    //compute day of the year from weeks and weekdays
-    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-        dayOfYearFromWeekInfo(config);
-    }
-
-    //if the day of the year is set, figure out what it is
-    if (config._dayOfYear != null) {
-        yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
-        if (
-            config._dayOfYear > daysInYear(yearToUse) ||
-            config._dayOfYear === 0
-        ) {
-            getParsingFlags(config)._overflowDayOfYear = true;
-        }
-
-        date = createUTCDate(yearToUse, 0, config._dayOfYear);
-        config._a[MONTH] = date.getUTCMonth();
-        config._a[DATE] = date.getUTCDate();
-    }
-
-    // Default to current date.
-    // * if no year, month, day of month are given, default to today
-    // * if day of month is given, default month and year
-    // * if month is given, default only year
-    // * if year is given, don't default anything
-    for (i = 0; i < 3 && config._a[i] == null; ++i) {
-        config._a[i] = input[i] = currentDate[i];
-    }
-
-    // Zero out whatever was not defaulted, including time
-    for (; i < 7; i++) {
-        config._a[i] = input[i] =
-            config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
-    }
-
-    // Check for 24:00:00.000
-    if (
-        config._a[HOUR] === 24 &&
-        config._a[MINUTE] === 0 &&
-        config._a[SECOND] === 0 &&
-        config._a[MILLISECOND] === 0
-    ) {
-        config._nextDay = true;
-        config._a[HOUR] = 0;
-    }
-
-    config._d = (config._useUTC ? createUTCDate : createDate).apply(
-        null,
-        input
-    );
-    expectedWeekday = config._useUTC
-        ? config._d.getUTCDay()
-        : config._d.getDay();
-
-    // Apply timezone offset from input. The actual utcOffset can be changed
-    // with parseZone.
-    if (config._tzm != null) {
-        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-    }
-
-    if (config._nextDay) {
-        config._a[HOUR] = 24;
-    }
-
-    // check for mismatching day of week
-    if (
-        config._w &&
-        typeof config._w.d !== 'undefined' &&
-        config._w.d !== expectedWeekday
-    ) {
-        getParsingFlags(config).weekdayMismatch = true;
-    }
-}
-
-function dayOfYearFromWeekInfo(config) {
-    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
-
-    w = config._w;
-    if (w.GG != null || w.W != null || w.E != null) {
-        dow = 1;
-        doy = 4;
-
-        // TODO: We need to take the current isoWeekYear, but that depends on
-        // how we interpret now (local, utc, fixed offset). So create
-        // a now version of current config (take local/utc/offset flags, and
-        // create now).
-        weekYear = defaults(
-            w.GG,
-            config._a[YEAR],
-            weekOfYear(createLocal(), 1, 4).year
-        );
-        week = defaults(w.W, 1);
-        weekday = defaults(w.E, 1);
-        if (weekday < 1 || weekday > 7) {
-            weekdayOverflow = true;
-        }
-    } else {
-        dow = config._locale._week.dow;
-        doy = config._locale._week.doy;
-
-        curWeek = weekOfYear(createLocal(), dow, doy);
-
-        weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
-
-        // Default to current week.
-        week = defaults(w.w, curWeek.week);
-
-        if (w.d != null) {
-            // weekday -- low day numbers are considered next week
-            weekday = w.d;
-            if (weekday < 0 || weekday > 6) {
-                weekdayOverflow = true;
-            }
-        } else if (w.e != null) {
-            // local weekday -- counting starts from beginning of week
-            weekday = w.e + dow;
-            if (w.e < 0 || w.e > 6) {
-                weekdayOverflow = true;
-            }
-        } else {
-            // default to beginning of week
-            weekday = dow;
-        }
-    }
-    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
-        getParsingFlags(config)._overflowWeeks = true;
-    } else if (weekdayOverflow != null) {
-        getParsingFlags(config)._overflowWeekday = true;
-    } else {
-        temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
-        config._a[YEAR] = temp.year;
-        config._dayOfYear = temp.dayOfYear;
-    }
-}
-
-// constant that refers to the ISO standard
-hooks.ISO_8601 = function () {};
-
-// constant that refers to the RFC 2822 form
-hooks.RFC_2822 = function () {};
-
-// date from string and format string
-function configFromStringAndFormat(config) {
-    // TODO: Move this to another part of the creation flow to prevent circular deps
-    if (config._f === hooks.ISO_8601) {
-        configFromISO(config);
-        return;
-    }
-    if (config._f === hooks.RFC_2822) {
-        configFromRFC2822(config);
-        return;
-    }
-    config._a = [];
-    getParsingFlags(config).empty = true;
-
-    // This array is used to make a Date, either with `new Date` or `Date.UTC`
-    var string = '' + config._i,
-        i,
-        parsedInput,
-        tokens,
-        token,
-        skipped,
-        stringLength = string.length,
-        totalParsedInputLength = 0,
-        era,
-        tokenLen;
-
-    tokens =
-        expandFormat(config._f, config._locale).match(formattingTokens) || [];
-    tokenLen = tokens.length;
-    for (i = 0; i < tokenLen; i++) {
-        token = tokens[i];
-        parsedInput = (string.match(getParseRegexForToken(token, config)) ||
-            [])[0];
-        if (parsedInput) {
-            skipped = string.substr(0, string.indexOf(parsedInput));
-            if (skipped.length > 0) {
-                getParsingFlags(config).unusedInput.push(skipped);
-            }
-            string = string.slice(
-                string.indexOf(parsedInput) + parsedInput.length
-            );
-            totalParsedInputLength += parsedInput.length;
-        }
-        // don't parse if it's not a known token
-        if (formatTokenFunctions[token]) {
-            if (parsedInput) {
-                getParsingFlags(config).empty = false;
-            } else {
-                getParsingFlags(config).unusedTokens.push(token);
-            }
-            addTimeToArrayFromToken(token, parsedInput, config);
-        } else if (config._strict && !parsedInput) {
-            getParsingFlags(config).unusedTokens.push(token);
-        }
-    }
-
-    // add remaining unparsed input length to the string
-    getParsingFlags(config).charsLeftOver =
-        stringLength - totalParsedInputLength;
-    if (string.length > 0) {
-        getParsingFlags(config).unusedInput.push(string);
-    }
-
-    // clear _12h flag if hour is <= 12
-    if (
-        config._a[HOUR] <= 12 &&
-        getParsingFlags(config).bigHour === true &&
-        config._a[HOUR] > 0
-    ) {
-        getParsingFlags(config).bigHour = undefined;
-    }
-
-    getParsingFlags(config).parsedDateParts = config._a.slice(0);
-    getParsingFlags(config).meridiem = config._meridiem;
-    // handle meridiem
-    config._a[HOUR] = meridiemFixWrap(
-        config._locale,
-        config._a[HOUR],
-        config._meridiem
-    );
-
-    // handle era
-    era = getParsingFlags(config).era;
-    if (era !== null) {
-        config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
-    }
-
-    configFromArray(config);
-    checkOverflow(config);
-}
-
-function meridiemFixWrap(locale, hour, meridiem) {
-    var isPm;
-
-    if (meridiem == null) {
-        // nothing to do
-        return hour;
-    }
-    if (locale.meridiemHour != null) {
-        return locale.meridiemHour(hour, meridiem);
-    } else if (locale.isPM != null) {
-        // Fallback
-        isPm = locale.isPM(meridiem);
-        if (isPm && hour < 12) {
-            hour += 12;
-        }
-        if (!isPm && hour === 12) {
-            hour = 0;
-        }
-        return hour;
-    } else {
-        // this is not supposed to happen
-        return hour;
-    }
-}
-
-// date from string and array of format strings
-function configFromStringAndArray(config) {
-    var tempConfig,
-        bestMoment,
-        scoreToBeat,
-        i,
-        currentScore,
-        validFormatFound,
-        bestFormatIsValid = false,
-        configfLen = config._f.length;
-
-    if (configfLen === 0) {
-        getParsingFlags(config).invalidFormat = true;
-        config._d = new Date(NaN);
-        return;
-    }
-
-    for (i = 0; i < configfLen; i++) {
-        currentScore = 0;
-        validFormatFound = false;
-        tempConfig = copyConfig({}, config);
-        if (config._useUTC != null) {
-            tempConfig._useUTC = config._useUTC;
-        }
-        tempConfig._f = config._f[i];
-        configFromStringAndFormat(tempConfig);
-
-        if (isValid(tempConfig)) {
-            validFormatFound = true;
-        }
-
-        // if there is any input that was not parsed add a penalty for that format
-        currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
-        //or tokens
-        currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
-        getParsingFlags(tempConfig).score = currentScore;
-
-        if (!bestFormatIsValid) {
-            if (
-                scoreToBeat == null ||
-                currentScore < scoreToBeat ||
-                validFormatFound
-            ) {
-                scoreToBeat = currentScore;
-                bestMoment = tempConfig;
-                if (validFormatFound) {
-                    bestFormatIsValid = true;
-                }
-            }
-        } else {
-            if (currentScore < scoreToBeat) {
-                scoreToBeat = currentScore;
-                bestMoment = tempConfig;
-            }
-        }
-    }
-
-    extend(config, bestMoment || tempConfig);
-}
-
-function configFromObject(config) {
-    if (config._d) {
-        return;
-    }
-
-    var i = normalizeObjectUnits(config._i),
-        dayOrDate = i.day === undefined ? i.date : i.day;
-    config._a = map(
-        [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
-        function (obj) {
-            return obj && parseInt(obj, 10);
-        }
-    );
-
-    configFromArray(config);
-}
-
-function createFromConfig(config) {
-    var res = new Moment(checkOverflow(prepareConfig(config)));
-    if (res._nextDay) {
-        // Adding is smart enough around DST
-        res.add(1, 'd');
-        res._nextDay = undefined;
-    }
-
-    return res;
-}
-
-function prepareConfig(config) {
-    var input = config._i,
-        format = config._f;
-
-    config._locale = config._locale || getLocale(config._l);
-
-    if (input === null || (format === undefined && input === '')) {
-        return createInvalid({ nullInput: true });
-    }
-
-    if (typeof input === 'string') {
-        config._i = input = config._locale.preparse(input);
-    }
-
-    if (isMoment(input)) {
-        return new Moment(checkOverflow(input));
-    } else if (isDate(input)) {
-        config._d = input;
-    } else if (isArray(format)) {
-        configFromStringAndArray(config);
-    } else if (format) {
-        configFromStringAndFormat(config);
-    } else {
-        configFromInput(config);
-    }
-
-    if (!isValid(config)) {
-        config._d = null;
-    }
-
-    return config;
-}
-
-function configFromInput(config) {
-    var input = config._i;
-    if (isUndefined(input)) {
-        config._d = new Date(hooks.now());
-    } else if (isDate(input)) {
-        config._d = new Date(input.valueOf());
-    } else if (typeof input === 'string') {
-        configFromString(config);
-    } else if (isArray(input)) {
-        config._a = map(input.slice(0), function (obj) {
-            return parseInt(obj, 10);
-        });
-        configFromArray(config);
-    } else if (isObject(input)) {
-        configFromObject(config);
-    } else if (isNumber(input)) {
-        // from milliseconds
-        config._d = new Date(input);
-    } else {
-        hooks.createFromInputFallback(config);
-    }
-}
-
-function createLocalOrUTC(input, format, locale, strict, isUTC) {
-    var c = {};
-
-    if (format === true || format === false) {
-        strict = format;
-        format = undefined;
-    }
-
-    if (locale === true || locale === false) {
-        strict = locale;
-        locale = undefined;
-    }
-
-    if (
-        (isObject(input) && isObjectEmpty(input)) ||
-        (isArray(input) && input.length === 0)
-    ) {
-        input = undefined;
-    }
-    // object construction must be done this way.
-    // https://github.com/moment/moment/issues/1423
-    c._isAMomentObject = true;
-    c._useUTC = c._isUTC = isUTC;
-    c._l = locale;
-    c._i = input;
-    c._f = format;
-    c._strict = strict;
-
-    return createFromConfig(c);
-}
-
-function createLocal(input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, false);
-}
-
-var prototypeMin = deprecate(
-        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
-        function () {
-            var other = createLocal.apply(null, arguments);
-            if (this.isValid() && other.isValid()) {
-                return other < this ? this : other;
-            } else {
-                return createInvalid();
-            }
-        }
-    ),
-    prototypeMax = deprecate(
-        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
-        function () {
-            var other = createLocal.apply(null, arguments);
-            if (this.isValid() && other.isValid()) {
-                return other > this ? this : other;
-            } else {
-                return createInvalid();
-            }
-        }
-    );
-
-// Pick a moment m from moments so that m[fn](other) is true for all
-// other. This relies on the function fn to be transitive.
-//
-// moments should either be an array of moment objects or an array, whose
-// first element is an array of moment objects.
-function pickBy(fn, moments) {
-    var res, i;
-    if (moments.length === 1 && isArray(moments[0])) {
-        moments = moments[0];
-    }
-    if (!moments.length) {
-        return createLocal();
-    }
-    res = moments[0];
-    for (i = 1; i < moments.length; ++i) {
-        if (!moments[i].isValid() || moments[i][fn](res)) {
-            res = moments[i];
-        }
-    }
-    return res;
-}
-
-// TODO: Use [].sort instead?
-function min() {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isBefore', args);
-}
-
-function max() {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isAfter', args);
-}
-
-var now = function () {
-    return Date.now ? Date.now() : +new Date();
-};
-
-var ordering = [
-    'year',
-    'quarter',
-    'month',
-    'week',
-    'day',
-    'hour',
-    'minute',
-    'second',
-    'millisecond',
-];
-
-function isDurationValid(m) {
-    var key,
-        unitHasDecimal = false,
-        i,
-        orderLen = ordering.length;
-    for (key in m) {
-        if (
-            hasOwnProp(m, key) &&
-            !(
-                indexOf.call(ordering, key) !== -1 &&
-                (m[key] == null || !isNaN(m[key]))
-            )
-        ) {
-            return false;
-        }
-    }
-
-    for (i = 0; i < orderLen; ++i) {
-        if (m[ordering[i]]) {
-            if (unitHasDecimal) {
-                return false; // only allow non-integers for smallest unit
-            }
-            if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
-                unitHasDecimal = true;
-            }
-        }
-    }
-
-    return true;
-}
-
-function isValid$1() {
-    return this._isValid;
-}
-
-function createInvalid$1() {
-    return createDuration(NaN);
-}
-
-function Duration(duration) {
-    var normalizedInput = normalizeObjectUnits(duration),
-        years = normalizedInput.year || 0,
-        quarters = normalizedInput.quarter || 0,
-        months = normalizedInput.month || 0,
-        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
-        days = normalizedInput.day || 0,
-        hours = normalizedInput.hour || 0,
-        minutes = normalizedInput.minute || 0,
-        seconds = normalizedInput.second || 0,
-        milliseconds = normalizedInput.millisecond || 0;
-
-    this._isValid = isDurationValid(normalizedInput);
-
-    // representation for dateAddRemove
-    this._milliseconds =
-        +milliseconds +
-        seconds * 1e3 + // 1000
-        minutes * 6e4 + // 1000 * 60
-        hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
-    // Because of dateAddRemove treats 24 hours as different from a
-    // day when working around DST, we need to store them separately
-    this._days = +days + weeks * 7;
-    // It is impossible to translate months into days without knowing
-    // which months you are are talking about, so we have to store
-    // it separately.
-    this._months = +months + quarters * 3 + years * 12;
-
-    this._data = {};
-
-    this._locale = getLocale();
-
-    this._bubble();
-}
-
-function isDuration(obj) {
-    return obj instanceof Duration;
-}
-
-function absRound(number) {
-    if (number < 0) {
-        return Math.round(-1 * number) * -1;
-    } else {
-        return Math.round(number);
-    }
-}
-
-// compare two arrays, return the number of differences
-function compareArrays(array1, array2, dontConvert) {
-    var len = Math.min(array1.length, array2.length),
-        lengthDiff = Math.abs(array1.length - array2.length),
-        diffs = 0,
-        i;
-    for (i = 0; i < len; i++) {
-        if (
-            (dontConvert && array1[i] !== array2[i]) ||
-            (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
-        ) {
-            diffs++;
-        }
-    }
-    return diffs + lengthDiff;
-}
-
-// FORMATTING
-
-function offset(token, separator) {
-    addFormatToken(token, 0, 0, function () {
-        var offset = this.utcOffset(),
-            sign = '+';
-        if (offset < 0) {
-            offset = -offset;
-            sign = '-';
-        }
-        return (
-            sign +
-            zeroFill(~~(offset / 60), 2) +
-            separator +
-            zeroFill(~~offset % 60, 2)
-        );
-    });
-}
-
-offset('Z', ':');
-offset('ZZ', '');
-
-// PARSING
-
-addRegexToken('Z', matchShortOffset);
-addRegexToken('ZZ', matchShortOffset);
-addParseToken(['Z', 'ZZ'], function (input, array, config) {
-    config._useUTC = true;
-    config._tzm = offsetFromString(matchShortOffset, input);
-});
-
-// HELPERS
-
-// timezone chunker
-// '+10:00' > ['10',  '00']
-// '-1530'  > ['-15', '30']
-var chunkOffset = /([\+\-]|\d\d)/gi;
-
-function offsetFromString(matcher, string) {
-    var matches = (string || '').match(matcher),
-        chunk,
-        parts,
-        minutes;
-
-    if (matches === null) {
-        return null;
-    }
-
-    chunk = matches[matches.length - 1] || [];
-    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
-    minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
-}
-
-// Return a moment from input, that is local/utc/zone equivalent to model.
-function cloneWithOffset(input, model) {
-    var res, diff;
-    if (model._isUTC) {
-        res = model.clone();
-        diff =
-            (isMoment(input) || isDate(input)
-                ? input.valueOf()
-                : createLocal(input).valueOf()) - res.valueOf();
-        // Use low-level api, because this fn is low-level api.
-        res._d.setTime(res._d.valueOf() + diff);
-        hooks.updateOffset(res, false);
-        return res;
-    } else {
-        return createLocal(input).local();
-    }
-}
-
-function getDateOffset(m) {
-    // On Firefox.24 Date#getTimezoneOffset returns a floating point.
-    // https://github.com/moment/moment/pull/1871
-    return -Math.round(m._d.getTimezoneOffset());
-}
-
-// HOOKS
-
-// This function will be called whenever a moment is mutated.
-// It is intended to keep the offset in sync with the timezone.
-hooks.updateOffset = function () {};
-
-// MOMENTS
-
-// keepLocalTime = true means only change the timezone, without
-// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-// +0200, so we adjust the time as needed, to be valid.
-//
-// Keeping the time actually adds/subtracts (one hour)
-// from the actual represented time. That is why we call updateOffset
-// a second time. In case it wants us to change the offset again
-// _changeInProgress == true case, then we have to adjust, because
-// there is no such time in the given timezone.
-function getSetOffset(input, keepLocalTime, keepMinutes) {
-    var offset = this._offset || 0,
-        localAdjust;
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-    if (input != null) {
-        if (typeof input === 'string') {
-            input = offsetFromString(matchShortOffset, input);
-            if (input === null) {
-                return this;
-            }
-        } else if (Math.abs(input) < 16 && !keepMinutes) {
-            input = input * 60;
-        }
-        if (!this._isUTC && keepLocalTime) {
-            localAdjust = getDateOffset(this);
-        }
-        this._offset = input;
-        this._isUTC = true;
-        if (localAdjust != null) {
-            this.add(localAdjust, 'm');
-        }
-        if (offset !== input) {
-            if (!keepLocalTime || this._changeInProgress) {
-                addSubtract(
-                    this,
-                    createDuration(input - offset, 'm'),
-                    1,
-                    false
-                );
-            } else if (!this._changeInProgress) {
-                this._changeInProgress = true;
-                hooks.updateOffset(this, true);
-                this._changeInProgress = null;
-            }
-        }
-        return this;
-    } else {
-        return this._isUTC ? offset : getDateOffset(this);
-    }
-}
-
-function getSetZone(input, keepLocalTime) {
-    if (input != null) {
-        if (typeof input !== 'string') {
-            input = -input;
-        }
-
-        this.utcOffset(input, keepLocalTime);
-
-        return this;
-    } else {
-        return -this.utcOffset();
-    }
-}
-
-function setOffsetToUTC(keepLocalTime) {
-    return this.utcOffset(0, keepLocalTime);
-}
-
-function setOffsetToLocal(keepLocalTime) {
-    if (this._isUTC) {
-        this.utcOffset(0, keepLocalTime);
-        this._isUTC = false;
-
-        if (keepLocalTime) {
-            this.subtract(getDateOffset(this), 'm');
-        }
-    }
-    return this;
-}
-
-function setOffsetToParsedOffset() {
-    if (this._tzm != null) {
-        this.utcOffset(this._tzm, false, true);
-    } else if (typeof this._i === 'string') {
-        var tZone = offsetFromString(matchOffset, this._i);
-        if (tZone != null) {
-            this.utcOffset(tZone);
-        } else {
-            this.utcOffset(0, true);
-        }
-    }
-    return this;
-}
-
-function hasAlignedHourOffset(input) {
-    if (!this.isValid()) {
-        return false;
-    }
-    input = input ? createLocal(input).utcOffset() : 0;
-
-    return (this.utcOffset() - input) % 60 === 0;
-}
-
-function isDaylightSavingTime() {
-    return (
-        this.utcOffset() > this.clone().month(0).utcOffset() ||
-        this.utcOffset() > this.clone().month(5).utcOffset()
-    );
-}
-
-function isDaylightSavingTimeShifted() {
-    if (!isUndefined(this._isDSTShifted)) {
-        return this._isDSTShifted;
-    }
-
-    var c = {},
-        other;
-
-    copyConfig(c, this);
-    c = prepareConfig(c);
-
-    if (c._a) {
-        other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
-        this._isDSTShifted =
-            this.isValid() && compareArrays(c._a, other.toArray()) > 0;
-    } else {
-        this._isDSTShifted = false;
-    }
-
-    return this._isDSTShifted;
-}
-
-function isLocal() {
-    return this.isValid() ? !this._isUTC : false;
-}
-
-function isUtcOffset() {
-    return this.isValid() ? this._isUTC : false;
-}
-
-function isUtc() {
-    return this.isValid() ? this._isUTC && this._offset === 0 : false;
-}
-
-// ASP.NET json date format regex
-var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
-    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-    // and further modified to allow for strings containing both week and day
-    isoRegex =
-        /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
-
-function createDuration(input, key) {
-    var duration = input,
-        // matching against regexp is expensive, do it on demand
-        match = null,
-        sign,
-        ret,
-        diffRes;
-
-    if (isDuration(input)) {
-        duration = {
-            ms: input._milliseconds,
-            d: input._days,
-            M: input._months,
-        };
-    } else if (isNumber(input) || !isNaN(+input)) {
-        duration = {};
-        if (key) {
-            duration[key] = +input;
-        } else {
-            duration.milliseconds = +input;
-        }
-    } else if ((match = aspNetRegex.exec(input))) {
-        sign = match[1] === '-' ? -1 : 1;
-        duration = {
-            y: 0,
-            d: toInt(match[DATE]) * sign,
-            h: toInt(match[HOUR]) * sign,
-            m: toInt(match[MINUTE]) * sign,
-            s: toInt(match[SECOND]) * sign,
-            ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
-        };
-    } else if ((match = isoRegex.exec(input))) {
-        sign = match[1] === '-' ? -1 : 1;
-        duration = {
-            y: parseIso(match[2], sign),
-            M: parseIso(match[3], sign),
-            w: parseIso(match[4], sign),
-            d: parseIso(match[5], sign),
-            h: parseIso(match[6], sign),
-            m: parseIso(match[7], sign),
-            s: parseIso(match[8], sign),
-        };
-    } else if (duration == null) {
-        // checks for null or undefined
-        duration = {};
-    } else if (
-        typeof duration === 'object' &&
-        ('from' in duration || 'to' in duration)
-    ) {
-        diffRes = momentsDifference(
-            createLocal(duration.from),
-            createLocal(duration.to)
-        );
-
-        duration = {};
-        duration.ms = diffRes.milliseconds;
-        duration.M = diffRes.months;
-    }
-
-    ret = new Duration(duration);
-
-    if (isDuration(input) && hasOwnProp(input, '_locale')) {
-        ret._locale = input._locale;
-    }
-
-    if (isDuration(input) && hasOwnProp(input, '_isValid')) {
-        ret._isValid = input._isValid;
-    }
-
-    return ret;
-}
-
-createDuration.fn = Duration.prototype;
-createDuration.invalid = createInvalid$1;
-
-function parseIso(inp, sign) {
-    // We'd normally use ~~inp for this, but unfortunately it also
-    // converts floats to ints.
-    // inp may be undefined, so careful calling replace on it.
-    var res = inp && parseFloat(inp.replace(',', '.'));
-    // apply sign while we're at it
-    return (isNaN(res) ? 0 : res) * sign;
-}
-
-function positiveMomentsDifference(base, other) {
-    var res = {};
-
-    res.months =
-        other.month() - base.month() + (other.year() - base.year()) * 12;
-    if (base.clone().add(res.months, 'M').isAfter(other)) {
-        --res.months;
-    }
-
-    res.milliseconds = +other - +base.clone().add(res.months, 'M');
-
-    return res;
-}
-
-function momentsDifference(base, other) {
-    var res;
-    if (!(base.isValid() && other.isValid())) {
-        return { milliseconds: 0, months: 0 };
-    }
-
-    other = cloneWithOffset(other, base);
-    if (base.isBefore(other)) {
-        res = positiveMomentsDifference(base, other);
-    } else {
-        res = positiveMomentsDifference(other, base);
-        res.milliseconds = -res.milliseconds;
-        res.months = -res.months;
-    }
-
-    return res;
-}
-
-// TODO: remove 'name' arg after deprecation is removed
-function createAdder(direction, name) {
-    return function (val, period) {
-        var dur, tmp;
-        //invert the arguments, but complain about it
-        if (period !== null && !isNaN(+period)) {
-            deprecateSimple(
-                name,
-                'moment().' +
-                    name +
-                    '(period, number) is deprecated. Please use moment().' +
-                    name +
-                    '(number, period). ' +
-                    'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
-            );
-            tmp = val;
-            val = period;
-            period = tmp;
-        }
-
-        dur = createDuration(val, period);
-        addSubtract(this, dur, direction);
-        return this;
-    };
-}
-
-function addSubtract(mom, duration, isAdding, updateOffset) {
-    var milliseconds = duration._milliseconds,
-        days = absRound(duration._days),
-        months = absRound(duration._months);
-
-    if (!mom.isValid()) {
-        // No op
-        return;
-    }
-
-    updateOffset = updateOffset == null ? true : updateOffset;
-
-    if (months) {
-        setMonth(mom, get(mom, 'Month') + months * isAdding);
-    }
-    if (days) {
-        set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
-    }
-    if (milliseconds) {
-        mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
-    }
-    if (updateOffset) {
-        hooks.updateOffset(mom, days || months);
-    }
-}
-
-var add = createAdder(1, 'add'),
-    subtract = createAdder(-1, 'subtract');
-
-function isString(input) {
-    return typeof input === 'string' || input instanceof String;
-}
-
-// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
-function isMomentInput(input) {
-    return (
-        isMoment(input) ||
-        isDate(input) ||
-        isString(input) ||
-        isNumber(input) ||
-        isNumberOrStringArray(input) ||
-        isMomentInputObject(input) ||
-        input === null ||
-        input === undefined
-    );
-}
-
-function isMomentInputObject(input) {
-    var objectTest = isObject(input) && !isObjectEmpty(input),
-        propertyTest = false,
-        properties = [
-            'years',
-            'year',
-            'y',
-            'months',
-            'month',
-            'M',
-            'days',
-            'day',
-            'd',
-            'dates',
-            'date',
-            'D',
-            'hours',
-            'hour',
-            'h',
-            'minutes',
-            'minute',
-            'm',
-            'seconds',
-            'second',
-            's',
-            'milliseconds',
-            'millisecond',
-            'ms',
-        ],
-        i,
-        property,
-        propertyLen = properties.length;
-
-    for (i = 0; i < propertyLen; i += 1) {
-        property = properties[i];
-        propertyTest = propertyTest || hasOwnProp(input, property);
-    }
-
-    return objectTest && propertyTest;
-}
-
-function isNumberOrStringArray(input) {
-    var arrayTest = isArray(input),
-        dataTypeTest = false;
-    if (arrayTest) {
-        dataTypeTest =
-            input.filter(function (item) {
-                return !isNumber(item) && isString(input);
-            }).length === 0;
-    }
-    return arrayTest && dataTypeTest;
-}
-
-function isCalendarSpec(input) {
-    var objectTest = isObject(input) && !isObjectEmpty(input),
-        propertyTest = false,
-        properties = [
-            'sameDay',
-            'nextDay',
-            'lastDay',
-            'nextWeek',
-            'lastWeek',
-            'sameElse',
-        ],
-        i,
-        property;
-
-    for (i = 0; i < properties.length; i += 1) {
-        property = properties[i];
-        propertyTest = propertyTest || hasOwnProp(input, property);
-    }
-
-    return objectTest && propertyTest;
-}
-
-function getCalendarFormat(myMoment, now) {
-    var diff = myMoment.diff(now, 'days', true);
-    return diff < -6
-        ? 'sameElse'
-        : diff < -1
-          ? 'lastWeek'
-          : diff < 0
-            ? 'lastDay'
-            : diff < 1
-              ? 'sameDay'
-              : diff < 2
-                ? 'nextDay'
-                : diff < 7
-                  ? 'nextWeek'
-                  : 'sameElse';
-}
-
-function calendar$1(time, formats) {
-    // Support for single parameter, formats only overload to the calendar function
-    if (arguments.length === 1) {
-        if (!arguments[0]) {
-            time = undefined;
-            formats = undefined;
-        } else if (isMomentInput(arguments[0])) {
-            time = arguments[0];
-            formats = undefined;
-        } else if (isCalendarSpec(arguments[0])) {
-            formats = arguments[0];
-            time = undefined;
-        }
-    }
-    // We want to compare the start of today, vs this.
-    // Getting start-of-today depends on whether we're local/utc/offset or not.
-    var now = time || createLocal(),
-        sod = cloneWithOffset(now, this).startOf('day'),
-        format = hooks.calendarFormat(this, sod) || 'sameElse',
-        output =
-            formats &&
-            (isFunction(formats[format])
-                ? formats[format].call(this, now)
-                : formats[format]);
-
-    return this.format(
-        output || this.localeData().calendar(format, this, createLocal(now))
-    );
-}
-
-function clone() {
-    return new Moment(this);
-}
-
-function isAfter(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input);
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() > localInput.valueOf();
-    } else {
-        return localInput.valueOf() < this.clone().startOf(units).valueOf();
-    }
-}
-
-function isBefore(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input);
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() < localInput.valueOf();
-    } else {
-        return this.clone().endOf(units).valueOf() < localInput.valueOf();
-    }
-}
-
-function isBetween(from, to, units, inclusivity) {
-    var localFrom = isMoment(from) ? from : createLocal(from),
-        localTo = isMoment(to) ? to : createLocal(to);
-    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
-        return false;
-    }
-    inclusivity = inclusivity || '()';
-    return (
-        (inclusivity[0] === '('
-            ? this.isAfter(localFrom, units)
-            : !this.isBefore(localFrom, units)) &&
-        (inclusivity[1] === ')'
-            ? this.isBefore(localTo, units)
-            : !this.isAfter(localTo, units))
-    );
-}
-
-function isSame(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input),
-        inputMs;
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() === localInput.valueOf();
-    } else {
-        inputMs = localInput.valueOf();
-        return (
-            this.clone().startOf(units).valueOf() <= inputMs &&
-            inputMs <= this.clone().endOf(units).valueOf()
-        );
-    }
-}
-
-function isSameOrAfter(input, units) {
-    return this.isSame(input, units) || this.isAfter(input, units);
-}
-
-function isSameOrBefore(input, units) {
-    return this.isSame(input, units) || this.isBefore(input, units);
-}
-
-function diff(input, units, asFloat) {
-    var that, zoneDelta, output;
-
-    if (!this.isValid()) {
-        return NaN;
-    }
-
-    that = cloneWithOffset(input, this);
-
-    if (!that.isValid()) {
-        return NaN;
-    }
-
-    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
-
-    units = normalizeUnits(units);
-
-    switch (units) {
-        case 'year':
-            output = monthDiff(this, that) / 12;
-            break;
-        case 'month':
-            output = monthDiff(this, that);
-            break;
-        case 'quarter':
-            output = monthDiff(this, that) / 3;
-            break;
-        case 'second':
-            output = (this - that) / 1e3;
-            break; // 1000
-        case 'minute':
-            output = (this - that) / 6e4;
-            break; // 1000 * 60
-        case 'hour':
-            output = (this - that) / 36e5;
-            break; // 1000 * 60 * 60
-        case 'day':
-            output = (this - that - zoneDelta) / 864e5;
-            break; // 1000 * 60 * 60 * 24, negate dst
-        case 'week':
-            output = (this - that - zoneDelta) / 6048e5;
-            break; // 1000 * 60 * 60 * 24 * 7, negate dst
-        default:
-            output = this - that;
-    }
-
-    return asFloat ? output : absFloor(output);
-}
-
-function monthDiff(a, b) {
-    if (a.date() < b.date()) {
-        // end-of-month calculations work correct when the start month has more
-        // days than the end month.
-        return -monthDiff(b, a);
-    }
-    // difference in months
-    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
-        // b is in (anchor - 1 month, anchor + 1 month)
-        anchor = a.clone().add(wholeMonthDiff, 'months'),
-        anchor2,
-        adjust;
-
-    if (b - anchor < 0) {
-        anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
-        // linear across the month
-        adjust = (b - anchor) / (anchor - anchor2);
-    } else {
-        anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
-        // linear across the month
-        adjust = (b - anchor) / (anchor2 - anchor);
-    }
-
-    //check for negative zero, return zero if negative zero
-    return -(wholeMonthDiff + adjust) || 0;
-}
-
-hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
-
-function toString() {
-    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
-}
-
-function toISOString(keepOffset) {
-    if (!this.isValid()) {
-        return null;
-    }
-    var utc = keepOffset !== true,
-        m = utc ? this.clone().utc() : this;
-    if (m.year() < 0 || m.year() > 9999) {
-        return formatMoment(
-            m,
-            utc
-                ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
-                : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
-        );
-    }
-    if (isFunction(Date.prototype.toISOString)) {
-        // native implementation is ~50x faster, use it when we can
-        if (utc) {
-            return this.toDate().toISOString();
-        } else {
-            return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
-                .toISOString()
-                .replace('Z', formatMoment(m, 'Z'));
-        }
-    }
-    return formatMoment(
-        m,
-        utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
-    );
-}
-
-/**
- * Return a human readable representation of a moment that can
- * also be evaluated to get a new moment which is the same
- *
- * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
- */
-function inspect() {
-    if (!this.isValid()) {
-        return 'moment.invalid(/* ' + this._i + ' */)';
-    }
-    var func = 'moment',
-        zone = '',
-        prefix,
-        year,
-        datetime,
-        suffix;
-    if (!this.isLocal()) {
-        func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
-        zone = 'Z';
-    }
-    prefix = '[' + func + '("]';
-    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
-    datetime = '-MM-DD[T]HH:mm:ss.SSS';
-    suffix = zone + '[")]';
-
-    return this.format(prefix + year + datetime + suffix);
-}
-
-function format(inputString) {
-    if (!inputString) {
-        inputString = this.isUtc()
-            ? hooks.defaultFormatUtc
-            : hooks.defaultFormat;
-    }
-    var output = formatMoment(this, inputString);
-    return this.localeData().postformat(output);
-}
-
-function from(time, withoutSuffix) {
-    if (
-        this.isValid() &&
-        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-    ) {
-        return createDuration({ to: this, from: time })
-            .locale(this.locale())
-            .humanize(!withoutSuffix);
-    } else {
-        return this.localeData().invalidDate();
-    }
-}
-
-function fromNow(withoutSuffix) {
-    return this.from(createLocal(), withoutSuffix);
-}
-
-function to(time, withoutSuffix) {
-    if (
-        this.isValid() &&
-        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-    ) {
-        return createDuration({ from: this, to: time })
-            .locale(this.locale())
-            .humanize(!withoutSuffix);
-    } else {
-        return this.localeData().invalidDate();
-    }
-}
-
-function toNow(withoutSuffix) {
-    return this.to(createLocal(), withoutSuffix);
-}
-
-// If passed a locale key, it will set the locale for this
-// instance.  Otherwise, it will return the locale configuration
-// variables for this instance.
-function locale(key) {
-    var newLocaleData;
-
-    if (key === undefined) {
-        return this._locale._abbr;
-    } else {
-        newLocaleData = getLocale(key);
-        if (newLocaleData != null) {
-            this._locale = newLocaleData;
-        }
-        return this;
-    }
-}
-
-var lang = deprecate(
-    'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
-    function (key) {
-        if (key === undefined) {
-            return this.localeData();
-        } else {
-            return this.locale(key);
-        }
-    }
-);
-
-function localeData() {
-    return this._locale;
-}
-
-var MS_PER_SECOND = 1000,
-    MS_PER_MINUTE = 60 * MS_PER_SECOND,
-    MS_PER_HOUR = 60 * MS_PER_MINUTE,
-    MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
-
-// actual modulo - handles negative numbers (for dates before 1970):
-function mod$1(dividend, divisor) {
-    return ((dividend % divisor) + divisor) % divisor;
-}
-
-function localStartOfDate(y, m, d) {
-    // the date constructor remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        return new Date(y + 400, m, d) - MS_PER_400_YEARS;
-    } else {
-        return new Date(y, m, d).valueOf();
-    }
-}
-
-function utcStartOfDate(y, m, d) {
-    // Date.UTC remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
-    } else {
-        return Date.UTC(y, m, d);
-    }
-}
-
-function startOf(units) {
-    var time, startOfDate;
-    units = normalizeUnits(units);
-    if (units === undefined || units === 'millisecond' || !this.isValid()) {
-        return this;
-    }
-
-    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-    switch (units) {
-        case 'year':
-            time = startOfDate(this.year(), 0, 1);
-            break;
-        case 'quarter':
-            time = startOfDate(
-                this.year(),
-                this.month() - (this.month() % 3),
-                1
-            );
-            break;
-        case 'month':
-            time = startOfDate(this.year(), this.month(), 1);
-            break;
-        case 'week':
-            time = startOfDate(
-                this.year(),
-                this.month(),
-                this.date() - this.weekday()
-            );
-            break;
-        case 'isoWeek':
-            time = startOfDate(
-                this.year(),
-                this.month(),
-                this.date() - (this.isoWeekday() - 1)
-            );
-            break;
-        case 'day':
-        case 'date':
-            time = startOfDate(this.year(), this.month(), this.date());
-            break;
-        case 'hour':
-            time = this._d.valueOf();
-            time -= mod$1(
-                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                MS_PER_HOUR
-            );
-            break;
-        case 'minute':
-            time = this._d.valueOf();
-            time -= mod$1(time, MS_PER_MINUTE);
-            break;
-        case 'second':
-            time = this._d.valueOf();
-            time -= mod$1(time, MS_PER_SECOND);
-            break;
-    }
-
-    this._d.setTime(time);
-    hooks.updateOffset(this, true);
-    return this;
-}
-
-function endOf(units) {
-    var time, startOfDate;
-    units = normalizeUnits(units);
-    if (units === undefined || units === 'millisecond' || !this.isValid()) {
-        return this;
-    }
-
-    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-    switch (units) {
-        case 'year':
-            time = startOfDate(this.year() + 1, 0, 1) - 1;
-            break;
-        case 'quarter':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month() - (this.month() % 3) + 3,
-                    1
-                ) - 1;
-            break;
-        case 'month':
-            time = startOfDate(this.year(), this.month() + 1, 1) - 1;
-            break;
-        case 'week':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - this.weekday() + 7
-                ) - 1;
-            break;
-        case 'isoWeek':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - (this.isoWeekday() - 1) + 7
-                ) - 1;
-            break;
-        case 'day':
-        case 'date':
-            time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
-            break;
-        case 'hour':
-            time = this._d.valueOf();
-            time +=
-                MS_PER_HOUR -
-                mod$1(
-                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                    MS_PER_HOUR
-                ) -
-                1;
-            break;
-        case 'minute':
-            time = this._d.valueOf();
-            time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
-            break;
-        case 'second':
-            time = this._d.valueOf();
-            time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
-            break;
-    }
-
-    this._d.setTime(time);
-    hooks.updateOffset(this, true);
-    return this;
-}
-
-function valueOf() {
-    return this._d.valueOf() - (this._offset || 0) * 60000;
-}
-
-function unix() {
-    return Math.floor(this.valueOf() / 1000);
-}
-
-function toDate() {
-    return new Date(this.valueOf());
-}
-
-function toArray() {
-    var m = this;
-    return [
-        m.year(),
-        m.month(),
-        m.date(),
-        m.hour(),
-        m.minute(),
-        m.second(),
-        m.millisecond(),
-    ];
-}
-
-function toObject() {
-    var m = this;
-    return {
-        years: m.year(),
-        months: m.month(),
-        date: m.date(),
-        hours: m.hours(),
-        minutes: m.minutes(),
-        seconds: m.seconds(),
-        milliseconds: m.milliseconds(),
-    };
-}
-
-function toJSON() {
-    // new Date(NaN).toJSON() === null
-    return this.isValid() ? this.toISOString() : null;
-}
-
-function isValid$2() {
-    return isValid(this);
-}
-
-function parsingFlags() {
-    return extend({}, getParsingFlags(this));
-}
-
-function invalidAt() {
-    return getParsingFlags(this).overflow;
-}
-
-function creationData() {
-    return {
-        input: this._i,
-        format: this._f,
-        locale: this._locale,
-        isUTC: this._isUTC,
-        strict: this._strict,
-    };
-}
-
-addFormatToken('N', 0, 0, 'eraAbbr');
-addFormatToken('NN', 0, 0, 'eraAbbr');
-addFormatToken('NNN', 0, 0, 'eraAbbr');
-addFormatToken('NNNN', 0, 0, 'eraName');
-addFormatToken('NNNNN', 0, 0, 'eraNarrow');
-
-addFormatToken('y', ['y', 1], 'yo', 'eraYear');
-addFormatToken('y', ['yy', 2], 0, 'eraYear');
-addFormatToken('y', ['yyy', 3], 0, 'eraYear');
-addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
-
-addRegexToken('N', matchEraAbbr);
-addRegexToken('NN', matchEraAbbr);
-addRegexToken('NNN', matchEraAbbr);
-addRegexToken('NNNN', matchEraName);
-addRegexToken('NNNNN', matchEraNarrow);
-
-addParseToken(
-    ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
-    function (input, array, config, token) {
-        var era = config._locale.erasParse(input, token, config._strict);
-        if (era) {
-            getParsingFlags(config).era = era;
-        } else {
-            getParsingFlags(config).invalidEra = input;
-        }
-    }
-);
-
-addRegexToken('y', matchUnsigned);
-addRegexToken('yy', matchUnsigned);
-addRegexToken('yyy', matchUnsigned);
-addRegexToken('yyyy', matchUnsigned);
-addRegexToken('yo', matchEraYearOrdinal);
-
-addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
-addParseToken(['yo'], function (input, array, config, token) {
-    var match;
-    if (config._locale._eraYearOrdinalRegex) {
-        match = input.match(config._locale._eraYearOrdinalRegex);
-    }
-
-    if (config._locale.eraYearOrdinalParse) {
-        array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
-    } else {
-        array[YEAR] = parseInt(input, 10);
-    }
-});
-
-function localeEras(m, format) {
-    var i,
-        l,
-        date,
-        eras = this._eras || getLocale('en')._eras;
-    for (i = 0, l = eras.length; i < l; ++i) {
-        switch (typeof eras[i].since) {
-            case 'string':
-                // truncate time
-                date = hooks(eras[i].since).startOf('day');
-                eras[i].since = date.valueOf();
-                break;
-        }
-
-        switch (typeof eras[i].until) {
-            case 'undefined':
-                eras[i].until = +Infinity;
-                break;
-            case 'string':
-                // truncate time
-                date = hooks(eras[i].until).startOf('day').valueOf();
-                eras[i].until = date.valueOf();
-                break;
-        }
-    }
-    return eras;
-}
-
-function localeErasParse(eraName, format, strict) {
-    var i,
-        l,
-        eras = this.eras(),
-        name,
-        abbr,
-        narrow;
-    eraName = eraName.toUpperCase();
-
-    for (i = 0, l = eras.length; i < l; ++i) {
-        name = eras[i].name.toUpperCase();
-        abbr = eras[i].abbr.toUpperCase();
-        narrow = eras[i].narrow.toUpperCase();
-
-        if (strict) {
-            switch (format) {
-                case 'N':
-                case 'NN':
-                case 'NNN':
-                    if (abbr === eraName) {
-                        return eras[i];
-                    }
-                    break;
-
-                case 'NNNN':
-                    if (name === eraName) {
-                        return eras[i];
-                    }
-                    break;
-
-                case 'NNNNN':
-                    if (narrow === eraName) {
-                        return eras[i];
-                    }
-                    break;
-            }
-        } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
-            return eras[i];
-        }
-    }
-}
-
-function localeErasConvertYear(era, year) {
-    var dir = era.since <= era.until ? +1 : -1;
-    if (year === undefined) {
-        return hooks(era.since).year();
-    } else {
-        return hooks(era.since).year() + (year - era.offset) * dir;
-    }
-}
-
-function getEraName() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].name;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].name;
-        }
-    }
-
-    return '';
-}
-
-function getEraNarrow() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].narrow;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].narrow;
-        }
-    }
-
-    return '';
-}
-
-function getEraAbbr() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].abbr;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].abbr;
-        }
-    }
-
-    return '';
-}
-
-function getEraYear() {
-    var i,
-        l,
-        dir,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        dir = eras[i].since <= eras[i].until ? +1 : -1;
-
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (
-            (eras[i].since <= val && val <= eras[i].until) ||
-            (eras[i].until <= val && val <= eras[i].since)
-        ) {
-            return (
-                (this.year() - hooks(eras[i].since).year()) * dir +
-                eras[i].offset
-            );
-        }
-    }
-
-    return this.year();
-}
-
-function erasNameRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasNameRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasNameRegex : this._erasRegex;
-}
-
-function erasAbbrRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasAbbrRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasAbbrRegex : this._erasRegex;
-}
-
-function erasNarrowRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasNarrowRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasNarrowRegex : this._erasRegex;
-}
-
-function matchEraAbbr(isStrict, locale) {
-    return locale.erasAbbrRegex(isStrict);
-}
-
-function matchEraName(isStrict, locale) {
-    return locale.erasNameRegex(isStrict);
-}
-
-function matchEraNarrow(isStrict, locale) {
-    return locale.erasNarrowRegex(isStrict);
-}
-
-function matchEraYearOrdinal(isStrict, locale) {
-    return locale._eraYearOrdinalRegex || matchUnsigned;
-}
-
-function computeErasParse() {
-    var abbrPieces = [],
-        namePieces = [],
-        narrowPieces = [],
-        mixedPieces = [],
-        i,
-        l,
-        erasName,
-        erasAbbr,
-        erasNarrow,
-        eras = this.eras();
-
-    for (i = 0, l = eras.length; i < l; ++i) {
-        erasName = regexEscape(eras[i].name);
-        erasAbbr = regexEscape(eras[i].abbr);
-        erasNarrow = regexEscape(eras[i].narrow);
-
-        namePieces.push(erasName);
-        abbrPieces.push(erasAbbr);
-        narrowPieces.push(erasNarrow);
-        mixedPieces.push(erasName);
-        mixedPieces.push(erasAbbr);
-        mixedPieces.push(erasNarrow);
-    }
-
-    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
-    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
-    this._erasNarrowRegex = new RegExp(
-        '^(' + narrowPieces.join('|') + ')',
-        'i'
-    );
-}
-
-// FORMATTING
-
-addFormatToken(0, ['gg', 2], 0, function () {
-    return this.weekYear() % 100;
-});
-
-addFormatToken(0, ['GG', 2], 0, function () {
-    return this.isoWeekYear() % 100;
-});
-
-function addWeekYearFormatToken(token, getter) {
-    addFormatToken(0, [token, token.length], 0, getter);
-}
-
-addWeekYearFormatToken('gggg', 'weekYear');
-addWeekYearFormatToken('ggggg', 'weekYear');
-addWeekYearFormatToken('GGGG', 'isoWeekYear');
-addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
-// ALIASES
-
-// PARSING
-
-addRegexToken('G', matchSigned);
-addRegexToken('g', matchSigned);
-addRegexToken('GG', match1to2, match2);
-addRegexToken('gg', match1to2, match2);
-addRegexToken('GGGG', match1to4, match4);
-addRegexToken('gggg', match1to4, match4);
-addRegexToken('GGGGG', match1to6, match6);
-addRegexToken('ggggg', match1to6, match6);
-
-addWeekParseToken(
-    ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
-    function (input, week, config, token) {
-        week[token.substr(0, 2)] = toInt(input);
-    }
-);
-
-addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
-    week[token] = hooks.parseTwoDigitYear(input);
-});
-
-// MOMENTS
-
-function getSetWeekYear(input) {
-    return getSetWeekYearHelper.call(
-        this,
-        input,
-        this.week(),
-        this.weekday() + this.localeData()._week.dow,
-        this.localeData()._week.dow,
-        this.localeData()._week.doy
-    );
-}
-
-function getSetISOWeekYear(input) {
-    return getSetWeekYearHelper.call(
-        this,
-        input,
-        this.isoWeek(),
-        this.isoWeekday(),
-        1,
-        4
-    );
-}
-
-function getISOWeeksInYear() {
-    return weeksInYear(this.year(), 1, 4);
-}
-
-function getISOWeeksInISOWeekYear() {
-    return weeksInYear(this.isoWeekYear(), 1, 4);
-}
-
-function getWeeksInYear() {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
-}
-
-function getWeeksInWeekYear() {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
-}
-
-function getSetWeekYearHelper(input, week, weekday, dow, doy) {
-    var weeksTarget;
-    if (input == null) {
-        return weekOfYear(this, dow, doy).year;
-    } else {
-        weeksTarget = weeksInYear(input, dow, doy);
-        if (week > weeksTarget) {
-            week = weeksTarget;
-        }
-        return setWeekAll.call(this, input, week, weekday, dow, doy);
-    }
-}
-
-function setWeekAll(weekYear, week, weekday, dow, doy) {
-    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
-        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
-
-    this.year(date.getUTCFullYear());
-    this.month(date.getUTCMonth());
-    this.date(date.getUTCDate());
-    return this;
-}
-
-// FORMATTING
-
-addFormatToken('Q', 0, 'Qo', 'quarter');
-
-// PARSING
-
-addRegexToken('Q', match1);
-addParseToken('Q', function (input, array) {
-    array[MONTH] = (toInt(input) - 1) * 3;
-});
-
-// MOMENTS
-
-function getSetQuarter(input) {
-    return input == null
-        ? Math.ceil((this.month() + 1) / 3)
-        : this.month((input - 1) * 3 + (this.month() % 3));
-}
-
-// FORMATTING
-
-addFormatToken('D', ['DD', 2], 'Do', 'date');
-
-// PARSING
-
-addRegexToken('D', match1to2, match1to2NoLeadingZero);
-addRegexToken('DD', match1to2, match2);
-addRegexToken('Do', function (isStrict, locale) {
-    // TODO: Remove "ordinalParse" fallback in next major release.
-    return isStrict
-        ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
-        : locale._dayOfMonthOrdinalParseLenient;
-});
-
-addParseToken(['D', 'DD'], DATE);
-addParseToken('Do', function (input, array) {
-    array[DATE] = toInt(input.match(match1to2)[0]);
-});
-
-// MOMENTS
-
-var getSetDayOfMonth = makeGetSet('Date', true);
-
-// FORMATTING
-
-addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
-// PARSING
-
-addRegexToken('DDD', match1to3);
-addRegexToken('DDDD', match3);
-addParseToken(['DDD', 'DDDD'], function (input, array, config) {
-    config._dayOfYear = toInt(input);
-});
-
-// HELPERS
-
-// MOMENTS
-
-function getSetDayOfYear(input) {
-    var dayOfYear =
-        Math.round(
-            (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
-        ) + 1;
-    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
-}
-
-// FORMATTING
-
-addFormatToken('m', ['mm', 2], 0, 'minute');
-
-// PARSING
-
-addRegexToken('m', match1to2, match1to2HasZero);
-addRegexToken('mm', match1to2, match2);
-addParseToken(['m', 'mm'], MINUTE);
-
-// MOMENTS
-
-var getSetMinute = makeGetSet('Minutes', false);
-
-// FORMATTING
-
-addFormatToken('s', ['ss', 2], 0, 'second');
-
-// PARSING
-
-addRegexToken('s', match1to2, match1to2HasZero);
-addRegexToken('ss', match1to2, match2);
-addParseToken(['s', 'ss'], SECOND);
-
-// MOMENTS
-
-var getSetSecond = makeGetSet('Seconds', false);
-
-// FORMATTING
-
-addFormatToken('S', 0, 0, function () {
-    return ~~(this.millisecond() / 100);
-});
-
-addFormatToken(0, ['SS', 2], 0, function () {
-    return ~~(this.millisecond() / 10);
-});
-
-addFormatToken(0, ['SSS', 3], 0, 'millisecond');
-addFormatToken(0, ['SSSS', 4], 0, function () {
-    return this.millisecond() * 10;
-});
-addFormatToken(0, ['SSSSS', 5], 0, function () {
-    return this.millisecond() * 100;
-});
-addFormatToken(0, ['SSSSSS', 6], 0, function () {
-    return this.millisecond() * 1000;
-});
-addFormatToken(0, ['SSSSSSS', 7], 0, function () {
-    return this.millisecond() * 10000;
-});
-addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
-    return this.millisecond() * 100000;
-});
-addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
-    return this.millisecond() * 1000000;
-});
-
-// PARSING
-
-addRegexToken('S', match1to3, match1);
-addRegexToken('SS', match1to3, match2);
-addRegexToken('SSS', match1to3, match3);
-
-var token, getSetMillisecond;
-for (token = 'SSSS'; token.length <= 9; token += 'S') {
-    addRegexToken(token, matchUnsigned);
-}
-
-function parseMs(input, array) {
-    array[MILLISECOND] = toInt(('0.' + input) * 1000);
-}
-
-for (token = 'S'; token.length <= 9; token += 'S') {
-    addParseToken(token, parseMs);
-}
-
-getSetMillisecond = makeGetSet('Milliseconds', false);
-
-// FORMATTING
-
-addFormatToken('z', 0, 0, 'zoneAbbr');
-addFormatToken('zz', 0, 0, 'zoneName');
-
-// MOMENTS
-
-function getZoneAbbr() {
-    return this._isUTC ? 'UTC' : '';
-}
-
-function getZoneName() {
-    return this._isUTC ? 'Coordinated Universal Time' : '';
-}
-
-var proto = Moment.prototype;
-
-proto.add = add;
-proto.calendar = calendar$1;
-proto.clone = clone;
-proto.diff = diff;
-proto.endOf = endOf;
-proto.format = format;
-proto.from = from;
-proto.fromNow = fromNow;
-proto.to = to;
-proto.toNow = toNow;
-proto.get = stringGet;
-proto.invalidAt = invalidAt;
-proto.isAfter = isAfter;
-proto.isBefore = isBefore;
-proto.isBetween = isBetween;
-proto.isSame = isSame;
-proto.isSameOrAfter = isSameOrAfter;
-proto.isSameOrBefore = isSameOrBefore;
-proto.isValid = isValid$2;
-proto.lang = lang;
-proto.locale = locale;
-proto.localeData = localeData;
-proto.max = prototypeMax;
-proto.min = prototypeMin;
-proto.parsingFlags = parsingFlags;
-proto.set = stringSet;
-proto.startOf = startOf;
-proto.subtract = subtract;
-proto.toArray = toArray;
-proto.toObject = toObject;
-proto.toDate = toDate;
-proto.toISOString = toISOString;
-proto.inspect = inspect;
-if (typeof Symbol !== 'undefined' && Symbol.for != null) {
-    proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
-        return 'Moment<' + this.format() + '>';
-    };
-}
-proto.toJSON = toJSON;
-proto.toString = toString;
-proto.unix = unix;
-proto.valueOf = valueOf;
-proto.creationData = creationData;
-proto.eraName = getEraName;
-proto.eraNarrow = getEraNarrow;
-proto.eraAbbr = getEraAbbr;
-proto.eraYear = getEraYear;
-proto.year = getSetYear;
-proto.isLeapYear = getIsLeapYear;
-proto.weekYear = getSetWeekYear;
-proto.isoWeekYear = getSetISOWeekYear;
-proto.quarter = proto.quarters = getSetQuarter;
-proto.month = getSetMonth;
-proto.daysInMonth = getDaysInMonth;
-proto.week = proto.weeks = getSetWeek;
-proto.isoWeek = proto.isoWeeks = getSetISOWeek;
-proto.weeksInYear = getWeeksInYear;
-proto.weeksInWeekYear = getWeeksInWeekYear;
-proto.isoWeeksInYear = getISOWeeksInYear;
-proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
-proto.date = getSetDayOfMonth;
-proto.day = proto.days = getSetDayOfWeek;
-proto.weekday = getSetLocaleDayOfWeek;
-proto.isoWeekday = getSetISODayOfWeek;
-proto.dayOfYear = getSetDayOfYear;
-proto.hour = proto.hours = getSetHour;
-proto.minute = proto.minutes = getSetMinute;
-proto.second = proto.seconds = getSetSecond;
-proto.millisecond = proto.milliseconds = getSetMillisecond;
-proto.utcOffset = getSetOffset;
-proto.utc = setOffsetToUTC;
-proto.local = setOffsetToLocal;
-proto.parseZone = setOffsetToParsedOffset;
-proto.hasAlignedHourOffset = hasAlignedHourOffset;
-proto.isDST = isDaylightSavingTime;
-proto.isLocal = isLocal;
-proto.isUtcOffset = isUtcOffset;
-proto.isUtc = isUtc;
-proto.isUTC = isUtc;
-proto.zoneAbbr = getZoneAbbr;
-proto.zoneName = getZoneName;
-proto.dates = deprecate(
-    'dates accessor is deprecated. Use date instead.',
-    getSetDayOfMonth
-);
-proto.months = deprecate(
-    'months accessor is deprecated. Use month instead',
-    getSetMonth
-);
-proto.years = deprecate(
-    'years accessor is deprecated. Use year instead',
-    getSetYear
-);
-proto.zone = deprecate(
-    'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
-    getSetZone
-);
-proto.isDSTShifted = deprecate(
-    'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
-    isDaylightSavingTimeShifted
-);
-
-function createUnix(input) {
-    return createLocal(input * 1000);
-}
-
-function createInZone() {
-    return createLocal.apply(null, arguments).parseZone();
-}
-
-function preParsePostFormat(string) {
-    return string;
-}
-
-var proto$1 = Locale.prototype;
-
-proto$1.calendar = calendar;
-proto$1.longDateFormat = longDateFormat;
-proto$1.invalidDate = invalidDate;
-proto$1.ordinal = ordinal;
-proto$1.preparse = preParsePostFormat;
-proto$1.postformat = preParsePostFormat;
-proto$1.relativeTime = relativeTime;
-proto$1.pastFuture = pastFuture;
-proto$1.set = set;
-proto$1.eras = localeEras;
-proto$1.erasParse = localeErasParse;
-proto$1.erasConvertYear = localeErasConvertYear;
-proto$1.erasAbbrRegex = erasAbbrRegex;
-proto$1.erasNameRegex = erasNameRegex;
-proto$1.erasNarrowRegex = erasNarrowRegex;
-
-proto$1.months = localeMonths;
-proto$1.monthsShort = localeMonthsShort;
-proto$1.monthsParse = localeMonthsParse;
-proto$1.monthsRegex = monthsRegex;
-proto$1.monthsShortRegex = monthsShortRegex;
-proto$1.week = localeWeek;
-proto$1.firstDayOfYear = localeFirstDayOfYear;
-proto$1.firstDayOfWeek = localeFirstDayOfWeek;
-
-proto$1.weekdays = localeWeekdays;
-proto$1.weekdaysMin = localeWeekdaysMin;
-proto$1.weekdaysShort = localeWeekdaysShort;
-proto$1.weekdaysParse = localeWeekdaysParse;
-
-proto$1.weekdaysRegex = weekdaysRegex;
-proto$1.weekdaysShortRegex = weekdaysShortRegex;
-proto$1.weekdaysMinRegex = weekdaysMinRegex;
-
-proto$1.isPM = localeIsPM;
-proto$1.meridiem = localeMeridiem;
-
-function get$1(format, index, field, setter) {
-    var locale = getLocale(),
-        utc = createUTC().set(setter, index);
-    return locale[field](utc, format);
-}
-
-function listMonthsImpl(format, index, field) {
-    if (isNumber(format)) {
-        index = format;
-        format = undefined;
-    }
-
-    format = format || '';
-
-    if (index != null) {
-        return get$1(format, index, field, 'month');
-    }
-
-    var i,
-        out = [];
-    for (i = 0; i < 12; i++) {
-        out[i] = get$1(format, i, field, 'month');
-    }
-    return out;
-}
-
-// ()
-// (5)
-// (fmt, 5)
-// (fmt)
-// (true)
-// (true, 5)
-// (true, fmt, 5)
-// (true, fmt)
-function listWeekdaysImpl(localeSorted, format, index, field) {
-    if (typeof localeSorted === 'boolean') {
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-    } else {
-        format = localeSorted;
-        index = format;
-        localeSorted = false;
-
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-    }
-
-    var locale = getLocale(),
-        shift = localeSorted ? locale._week.dow : 0,
-        i,
-        out = [];
-
-    if (index != null) {
-        return get$1(format, (index + shift) % 7, field, 'day');
-    }
-
-    for (i = 0; i < 7; i++) {
-        out[i] = get$1(format, (i + shift) % 7, field, 'day');
-    }
-    return out;
-}
-
-function listMonths(format, index) {
-    return listMonthsImpl(format, index, 'months');
-}
-
-function listMonthsShort(format, index) {
-    return listMonthsImpl(format, index, 'monthsShort');
-}
-
-function listWeekdays(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
-}
-
-function listWeekdaysShort(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
-}
-
-function listWeekdaysMin(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
-}
-
-getSetGlobalLocale('en', {
-    eras: [
-        {
-            since: '0001-01-01',
-            until: +Infinity,
-            offset: 1,
-            name: 'Anno Domini',
-            narrow: 'AD',
-            abbr: 'AD',
-        },
-        {
-            since: '0000-12-31',
-            until: -Infinity,
-            offset: 1,
-            name: 'Before Christ',
-            narrow: 'BC',
-            abbr: 'BC',
-        },
-    ],
-    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                toInt((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
-
-// Side effect imports
-
-hooks.lang = deprecate(
-    'moment.lang is deprecated. Use moment.locale instead.',
-    getSetGlobalLocale
-);
-hooks.langData = deprecate(
-    'moment.langData is deprecated. Use moment.localeData instead.',
-    getLocale
-);
-
-var mathAbs = Math.abs;
-
-function abs() {
-    var data = this._data;
-
-    this._milliseconds = mathAbs(this._milliseconds);
-    this._days = mathAbs(this._days);
-    this._months = mathAbs(this._months);
-
-    data.milliseconds = mathAbs(data.milliseconds);
-    data.seconds = mathAbs(data.seconds);
-    data.minutes = mathAbs(data.minutes);
-    data.hours = mathAbs(data.hours);
-    data.months = mathAbs(data.months);
-    data.years = mathAbs(data.years);
-
-    return this;
-}
-
-function addSubtract$1(duration, input, value, direction) {
-    var other = createDuration(input, value);
-
-    duration._milliseconds += direction * other._milliseconds;
-    duration._days += direction * other._days;
-    duration._months += direction * other._months;
-
-    return duration._bubble();
-}
-
-// supports only 2.0-style add(1, 's') or add(duration)
-function add$1(input, value) {
-    return addSubtract$1(this, input, value, 1);
-}
-
-// supports only 2.0-style subtract(1, 's') or subtract(duration)
-function subtract$1(input, value) {
-    return addSubtract$1(this, input, value, -1);
-}
-
-function absCeil(number) {
-    if (number < 0) {
-        return Math.floor(number);
-    } else {
-        return Math.ceil(number);
-    }
-}
-
-function bubble() {
-    var milliseconds = this._milliseconds,
-        days = this._days,
-        months = this._months,
-        data = this._data,
-        seconds,
-        minutes,
-        hours,
-        years,
-        monthsFromDays;
-
-    // if we have a mix of positive and negative values, bubble down first
-    // check: https://github.com/moment/moment/issues/2166
-    if (
-        !(
-            (milliseconds >= 0 && days >= 0 && months >= 0) ||
-            (milliseconds <= 0 && days <= 0 && months <= 0)
-        )
-    ) {
-        milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
-        days = 0;
-        months = 0;
-    }
-
-    // The following code bubbles up values, see the tests for
-    // examples of what that means.
-    data.milliseconds = milliseconds % 1000;
-
-    seconds = absFloor(milliseconds / 1000);
-    data.seconds = seconds % 60;
-
-    minutes = absFloor(seconds / 60);
-    data.minutes = minutes % 60;
-
-    hours = absFloor(minutes / 60);
-    data.hours = hours % 24;
-
-    days += absFloor(hours / 24);
-
-    // convert days to months
-    monthsFromDays = absFloor(daysToMonths(days));
-    months += monthsFromDays;
-    days -= absCeil(monthsToDays(monthsFromDays));
-
-    // 12 months -> 1 year
-    years = absFloor(months / 12);
-    months %= 12;
-
-    data.days = days;
-    data.months = months;
-    data.years = years;
-
-    return this;
-}
-
-function daysToMonths(days) {
-    // 400 years have 146097 days (taking into account leap year rules)
-    // 400 years have 12 months === 4800
-    return (days * 4800) / 146097;
-}
-
-function monthsToDays(months) {
-    // the reverse of daysToMonths
-    return (months * 146097) / 4800;
-}
-
-function as(units) {
-    if (!this.isValid()) {
-        return NaN;
-    }
-    var days,
-        months,
-        milliseconds = this._milliseconds;
-
-    units = normalizeUnits(units);
-
-    if (units === 'month' || units === 'quarter' || units === 'year') {
-        days = this._days + milliseconds / 864e5;
-        months = this._months + daysToMonths(days);
-        switch (units) {
-            case 'month':
-                return months;
-            case 'quarter':
-                return months / 3;
-            case 'year':
-                return months / 12;
-        }
-    } else {
-        // handle milliseconds separately because of floating point math errors (issue #1867)
-        days = this._days + Math.round(monthsToDays(this._months));
-        switch (units) {
-            case 'week':
-                return days / 7 + milliseconds / 6048e5;
-            case 'day':
-                return days + milliseconds / 864e5;
-            case 'hour':
-                return days * 24 + milliseconds / 36e5;
-            case 'minute':
-                return days * 1440 + milliseconds / 6e4;
-            case 'second':
-                return days * 86400 + milliseconds / 1000;
-            // Math.floor prevents floating point math errors here
-            case 'millisecond':
-                return Math.floor(days * 864e5) + milliseconds;
-            default:
-                throw new Error('Unknown unit ' + units);
-        }
-    }
-}
-
-function makeAs(alias) {
-    return function () {
-        return this.as(alias);
-    };
-}
-
-var asMilliseconds = makeAs('ms'),
-    asSeconds = makeAs('s'),
-    asMinutes = makeAs('m'),
-    asHours = makeAs('h'),
-    asDays = makeAs('d'),
-    asWeeks = makeAs('w'),
-    asMonths = makeAs('M'),
-    asQuarters = makeAs('Q'),
-    asYears = makeAs('y'),
-    valueOf$1 = asMilliseconds;
-
-function clone$1() {
-    return createDuration(this);
-}
-
-function get$2(units) {
-    units = normalizeUnits(units);
-    return this.isValid() ? this[units + 's']() : NaN;
-}
-
-function makeGetter(name) {
-    return function () {
-        return this.isValid() ? this._data[name] : NaN;
-    };
-}
-
-var milliseconds = makeGetter('milliseconds'),
-    seconds = makeGetter('seconds'),
-    minutes = makeGetter('minutes'),
-    hours = makeGetter('hours'),
-    days = makeGetter('days'),
-    months = makeGetter('months'),
-    years = makeGetter('years');
-
-function weeks() {
-    return absFloor(this.days() / 7);
-}
-
-var round = Math.round,
-    thresholds = {
-        ss: 44, // a few seconds to seconds
-        s: 45, // seconds to minute
-        m: 45, // minutes to hour
-        h: 22, // hours to day
-        d: 26, // days to month/week
-        w: null, // weeks to month
-        M: 11, // months to year
-    };
-
-// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
-    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
-}
-
-function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
-    var duration = createDuration(posNegDuration).abs(),
-        seconds = round(duration.as('s')),
-        minutes = round(duration.as('m')),
-        hours = round(duration.as('h')),
-        days = round(duration.as('d')),
-        months = round(duration.as('M')),
-        weeks = round(duration.as('w')),
-        years = round(duration.as('y')),
-        a =
-            (seconds <= thresholds.ss && ['s', seconds]) ||
-            (seconds < thresholds.s && ['ss', seconds]) ||
-            (minutes <= 1 && ['m']) ||
-            (minutes < thresholds.m && ['mm', minutes]) ||
-            (hours <= 1 && ['h']) ||
-            (hours < thresholds.h && ['hh', hours]) ||
-            (days <= 1 && ['d']) ||
-            (days < thresholds.d && ['dd', days]);
-
-    if (thresholds.w != null) {
-        a =
-            a ||
-            (weeks <= 1 && ['w']) ||
-            (weeks < thresholds.w && ['ww', weeks]);
-    }
-    a = a ||
-        (months <= 1 && ['M']) ||
-        (months < thresholds.M && ['MM', months]) ||
-        (years <= 1 && ['y']) || ['yy', years];
-
-    a[2] = withoutSuffix;
-    a[3] = +posNegDuration > 0;
-    a[4] = locale;
-    return substituteTimeAgo.apply(null, a);
-}
-
-// This function allows you to set the rounding function for relative time strings
-function getSetRelativeTimeRounding(roundingFunction) {
-    if (roundingFunction === undefined) {
-        return round;
-    }
-    if (typeof roundingFunction === 'function') {
-        round = roundingFunction;
-        return true;
-    }
-    return false;
-}
-
-// This function allows you to set a threshold for relative time strings
-function getSetRelativeTimeThreshold(threshold, limit) {
-    if (thresholds[threshold] === undefined) {
-        return false;
-    }
-    if (limit === undefined) {
-        return thresholds[threshold];
-    }
-    thresholds[threshold] = limit;
-    if (threshold === 's') {
-        thresholds.ss = limit - 1;
-    }
-    return true;
-}
-
-function humanize(argWithSuffix, argThresholds) {
-    if (!this.isValid()) {
-        return this.localeData().invalidDate();
-    }
-
-    var withSuffix = false,
-        th = thresholds,
-        locale,
-        output;
-
-    if (typeof argWithSuffix === 'object') {
-        argThresholds = argWithSuffix;
-        argWithSuffix = false;
-    }
-    if (typeof argWithSuffix === 'boolean') {
-        withSuffix = argWithSuffix;
-    }
-    if (typeof argThresholds === 'object') {
-        th = Object.assign({}, thresholds, argThresholds);
-        if (argThresholds.s != null && argThresholds.ss == null) {
-            th.ss = argThresholds.s - 1;
-        }
-    }
-
-    locale = this.localeData();
-    output = relativeTime$1(this, !withSuffix, th, locale);
-
-    if (withSuffix) {
-        output = locale.pastFuture(+this, output);
-    }
-
-    return locale.postformat(output);
-}
-
-var abs$1 = Math.abs;
-
-function sign(x) {
-    return (x > 0) - (x < 0) || +x;
-}
-
-function toISOString$1() {
-    // for ISO strings we do not use the normal bubbling rules:
-    //  * milliseconds bubble up until they become hours
-    //  * days do not bubble at all
-    //  * months bubble up until they become years
-    // This is because there is no context-free conversion between hours and days
-    // (think of clock changes)
-    // and also not between days and months (28-31 days per month)
-    if (!this.isValid()) {
-        return this.localeData().invalidDate();
-    }
-
-    var seconds = abs$1(this._milliseconds) / 1000,
-        days = abs$1(this._days),
-        months = abs$1(this._months),
-        minutes,
-        hours,
-        years,
-        s,
-        total = this.asSeconds(),
-        totalSign,
-        ymSign,
-        daysSign,
-        hmsSign;
-
-    if (!total) {
-        // this is the same as C#'s (Noda) and python (isodate)...
-        // but not other JS (goog.date)
-        return 'P0D';
-    }
-
-    // 3600 seconds -> 60 minutes -> 1 hour
-    minutes = absFloor(seconds / 60);
-    hours = absFloor(minutes / 60);
-    seconds %= 60;
-    minutes %= 60;
-
-    // 12 months -> 1 year
-    years = absFloor(months / 12);
-    months %= 12;
-
-    // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-    s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
-
-    totalSign = total < 0 ? '-' : '';
-    ymSign = sign(this._months) !== sign(total) ? '-' : '';
-    daysSign = sign(this._days) !== sign(total) ? '-' : '';
-    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
-
-    return (
-        totalSign +
-        'P' +
-        (years ? ymSign + years + 'Y' : '') +
-        (months ? ymSign + months + 'M' : '') +
-        (days ? daysSign + days + 'D' : '') +
-        (hours || minutes || seconds ? 'T' : '') +
-        (hours ? hmsSign + hours + 'H' : '') +
-        (minutes ? hmsSign + minutes + 'M' : '') +
-        (seconds ? hmsSign + s + 'S' : '')
-    );
-}
-
-var proto$2 = Duration.prototype;
-
-proto$2.isValid = isValid$1;
-proto$2.abs = abs;
-proto$2.add = add$1;
-proto$2.subtract = subtract$1;
-proto$2.as = as;
-proto$2.asMilliseconds = asMilliseconds;
-proto$2.asSeconds = asSeconds;
-proto$2.asMinutes = asMinutes;
-proto$2.asHours = asHours;
-proto$2.asDays = asDays;
-proto$2.asWeeks = asWeeks;
-proto$2.asMonths = asMonths;
-proto$2.asQuarters = asQuarters;
-proto$2.asYears = asYears;
-proto$2.valueOf = valueOf$1;
-proto$2._bubble = bubble;
-proto$2.clone = clone$1;
-proto$2.get = get$2;
-proto$2.milliseconds = milliseconds;
-proto$2.seconds = seconds;
-proto$2.minutes = minutes;
-proto$2.hours = hours;
-proto$2.days = days;
-proto$2.weeks = weeks;
-proto$2.months = months;
-proto$2.years = years;
-proto$2.humanize = humanize;
-proto$2.toISOString = toISOString$1;
-proto$2.toString = toISOString$1;
-proto$2.toJSON = toISOString$1;
-proto$2.locale = locale;
-proto$2.localeData = localeData;
-
-proto$2.toIsoString = deprecate(
-    'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
-    toISOString$1
-);
-proto$2.lang = lang;
-
-// FORMATTING
-
-addFormatToken('X', 0, 0, 'unix');
-addFormatToken('x', 0, 0, 'valueOf');
-
-// PARSING
-
-addRegexToken('x', matchSigned);
-addRegexToken('X', matchTimestamp);
-addParseToken('X', function (input, array, config) {
-    config._d = new Date(parseFloat(input) * 1000);
-});
-addParseToken('x', function (input, array, config) {
-    config._d = new Date(toInt(input));
-});
-
-//! moment.js
-
-hooks.version = '2.30.1';
-
-setHookCallback(createLocal);
-
-hooks.fn = proto;
-hooks.min = min;
-hooks.max = max;
-hooks.now = now;
-hooks.utc = createUTC;
-hooks.unix = createUnix;
-hooks.months = listMonths;
-hooks.isDate = isDate;
-hooks.locale = getSetGlobalLocale;
-hooks.invalid = createInvalid;
-hooks.duration = createDuration;
-hooks.isMoment = isMoment;
-hooks.weekdays = listWeekdays;
-hooks.parseZone = createInZone;
-hooks.localeData = getLocale;
-hooks.isDuration = isDuration;
-hooks.monthsShort = listMonthsShort;
-hooks.weekdaysMin = listWeekdaysMin;
-hooks.defineLocale = defineLocale;
-hooks.updateLocale = updateLocale;
-hooks.locales = listLocales;
-hooks.weekdaysShort = listWeekdaysShort;
-hooks.normalizeUnits = normalizeUnits;
-hooks.relativeTimeRounding = getSetRelativeTimeRounding;
-hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
-hooks.calendarFormat = getCalendarFormat;
-hooks.prototype = proto;
-
-// currently HTML5 input type only supports 24-hour formats
-hooks.HTML5_FMT = {
-    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
-    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
-    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
-    DATE: 'YYYY-MM-DD', // <input type="date" />
-    TIME: 'HH:mm', // <input type="time" />
-    TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
-    TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
-    WEEK: 'GGGG-[W]WW', // <input type="week" />
-    MONTH: 'YYYY-MM', // <input type="month" />
-};
-
-export default hooks;
Index: ckend/node_modules/moment/ender.js
===================================================================
--- backend/node_modules/moment/ender.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-$.ender({ moment: require('moment') })
Index: ckend/node_modules/moment/locale/af.js
===================================================================
--- backend/node_modules/moment/locale/af.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Afrikaans [af]
-//! author : Werner Mollentze : https://github.com/wernerm
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var af = moment.defineLocale('af', {
-        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
-            '_'
-        ),
-        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
-        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
-        meridiemParse: /vm|nm/i,
-        isPM: function (input) {
-            return /^nm$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'vm' : 'VM';
-            } else {
-                return isLower ? 'nm' : 'NM';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Vandag om] LT',
-            nextDay: '[Môre om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[Gister om] LT',
-            lastWeek: '[Laas] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oor %s',
-            past: '%s gelede',
-            s: "'n paar sekondes",
-            ss: '%d sekondes',
-            m: "'n minuut",
-            mm: '%d minute',
-            h: "'n uur",
-            hh: '%d ure',
-            d: "'n dag",
-            dd: '%d dae',
-            M: "'n maand",
-            MM: '%d maande',
-            y: "'n jaar",
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            ); // Thanks to Joris Röling : https://github.com/jjupiter
-        },
-        week: {
-            dow: 1, // Maandag is die eerste dag van die week.
-            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-        },
-    });
-
-    return af;
-
-})));
Index: ckend/node_modules/moment/locale/ar-dz.js
===================================================================
--- backend/node_modules/moment/locale/ar-dz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,167 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Algeria) [ar-dz]
-//! author : Amine Roukh: https://github.com/Amine27
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var pluralForm = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm(number),
-                    str = plurals[u][pluralForm(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months = [
-            'جانفي',
-            'فيفري',
-            'مارس',
-            'أفريل',
-            'ماي',
-            'جوان',
-            'جويلية',
-            'أوت',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    var arDz = moment.defineLocale('ar-dz', {
-        months: months,
-        monthsShort: months,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize('s'),
-            ss: pluralize('s'),
-            m: pluralize('m'),
-            mm: pluralize('m'),
-            h: pluralize('h'),
-            hh: pluralize('h'),
-            d: pluralize('d'),
-            dd: pluralize('d'),
-            M: pluralize('M'),
-            MM: pluralize('M'),
-            y: pluralize('y'),
-            yy: pluralize('y'),
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return arDz;
-
-})));
Index: ckend/node_modules/moment/locale/ar-kw.js
===================================================================
--- backend/node_modules/moment/locale/ar-kw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Kuwait) [ar-kw]
-//! author : Nusret Parlak: https://github.com/nusretparlak
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var arKw = moment.defineLocale('ar-kw', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return arKw;
-
-})));
Index: ckend/node_modules/moment/locale/ar-ly.js
===================================================================
--- backend/node_modules/moment/locale/ar-ly.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,182 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Libya) [ar-ly]
-//! author : Ali Hmer: https://github.com/kikoanis
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '1',
-            2: '2',
-            3: '3',
-            4: '4',
-            5: '5',
-            6: '6',
-            7: '7',
-            8: '8',
-            9: '9',
-            0: '0',
-        },
-        pluralForm = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm(number),
-                    str = plurals[u][pluralForm(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    var arLy = moment.defineLocale('ar-ly', {
-        months: months,
-        monthsShort: months,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize('s'),
-            ss: pluralize('s'),
-            m: pluralize('m'),
-            mm: pluralize('m'),
-            h: pluralize('h'),
-            hh: pluralize('h'),
-            d: pluralize('d'),
-            dd: pluralize('d'),
-            M: pluralize('M'),
-            MM: pluralize('M'),
-            y: pluralize('y'),
-            yy: pluralize('y'),
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return arLy;
-
-})));
Index: ckend/node_modules/moment/locale/ar-ma.js
===================================================================
--- backend/node_modules/moment/locale/ar-ma.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Morocco) [ar-ma]
-//! author : ElFadili Yassine : https://github.com/ElFadiliY
-//! author : Abdel Said : https://github.com/abdelsaid
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var arMa = moment.defineLocale('ar-ma', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return arMa;
-
-})));
Index: ckend/node_modules/moment/locale/ar-ps.js
===================================================================
--- backend/node_modules/moment/locale/ar-ps.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,123 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Palestine) [ar-ps]
-//! author : Majd Al-Shihabi : https://github.com/majdal
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    var arPs = moment.defineLocale('ar-ps', {
-        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
-            '_'
-        ),
-        monthsShort:
-            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('') // reversed since negative lookbehind not supported everywhere
-                .reverse()
-                .join('')
-                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('')
-                .reverse()
-                .join('')
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return arPs;
-
-})));
Index: ckend/node_modules/moment/locale/ar-sa.js
===================================================================
--- backend/node_modules/moment/locale/ar-sa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,116 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Saudi Arabia) [ar-sa]
-//! author : Suhail Alkowaileet : https://github.com/xsoh
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    var arSa = moment.defineLocale('ar-sa', {
-        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return arSa;
-
-})));
Index: ckend/node_modules/moment/locale/ar-tn.js
===================================================================
--- backend/node_modules/moment/locale/ar-tn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//! moment.js locale configuration
-//! locale  :  Arabic (Tunisia) [ar-tn]
-//! author : Nader Toukabri : https://github.com/naderio
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var arTn = moment.defineLocale('ar-tn', {
-        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return arTn;
-
-})));
Index: ckend/node_modules/moment/locale/ar.js
===================================================================
--- backend/node_modules/moment/locale/ar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,200 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic [ar]
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        pluralForm = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm(number),
-                    str = plurals[u][pluralForm(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    var ar = moment.defineLocale('ar', {
-        months: months,
-        monthsShort: months,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize('s'),
-            ss: pluralize('s'),
-            m: pluralize('m'),
-            mm: pluralize('m'),
-            h: pluralize('h'),
-            hh: pluralize('h'),
-            d: pluralize('d'),
-            dd: pluralize('d'),
-            M: pluralize('M'),
-            MM: pluralize('M'),
-            y: pluralize('y'),
-            yy: pluralize('y'),
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return ar;
-
-})));
Index: ckend/node_modules/moment/locale/az.js
===================================================================
--- backend/node_modules/moment/locale/az.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//! moment.js locale configuration
-//! locale : Azerbaijani [az]
-//! author : topchiyev : https://github.com/topchiyev
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        1: '-inci',
-        5: '-inci',
-        8: '-inci',
-        70: '-inci',
-        80: '-inci',
-        2: '-nci',
-        7: '-nci',
-        20: '-nci',
-        50: '-nci',
-        3: '-üncü',
-        4: '-üncü',
-        100: '-üncü',
-        6: '-ncı',
-        9: '-uncu',
-        10: '-uncu',
-        30: '-uncu',
-        60: '-ıncı',
-        90: '-ıncı',
-    };
-
-    var az = moment.defineLocale('az', {
-        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
-        weekdays:
-            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
-                '_'
-            ),
-        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
-        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[sabah saat] LT',
-            nextWeek: '[gələn həftə] dddd [saat] LT',
-            lastDay: '[dünən] LT',
-            lastWeek: '[keçən həftə] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s əvvəl',
-            s: 'bir neçə saniyə',
-            ss: '%d saniyə',
-            m: 'bir dəqiqə',
-            mm: '%d dəqiqə',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir il',
-            yy: '%d il',
-        },
-        meridiemParse: /gecə|səhər|gündüz|axşam/,
-        isPM: function (input) {
-            return /^(gündüz|axşam)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'gecə';
-            } else if (hour < 12) {
-                return 'səhər';
-            } else if (hour < 17) {
-                return 'gündüz';
-            } else {
-                return 'axşam';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
-        ordinal: function (number) {
-            if (number === 0) {
-                // special case for zero
-                return number + '-ıncı';
-            }
-            var a = number % 10,
-                b = (number % 100) - a,
-                c = number >= 100 ? 100 : null;
-            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return az;
-
-})));
Index: ckend/node_modules/moment/locale/be.js
===================================================================
--- backend/node_modules/moment/locale/be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,153 +1,0 @@
-//! moment.js locale configuration
-//! locale : Belarusian [be]
-//! author : Dmitry Demidov : https://github.com/demidov91
-//! author: Praleska: http://praleska.pro/
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function plural(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
-            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
-            dd: 'дзень_дні_дзён',
-            MM: 'месяц_месяцы_месяцаў',
-            yy: 'год_гады_гадоў',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвіліна' : 'хвіліну';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'гадзіна' : 'гадзіну';
-        } else {
-            return number + ' ' + plural(format[key], +number);
-        }
-    }
-
-    var be = moment.defineLocale('be', {
-        months: {
-            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
-                '_'
-            ),
-            standalone:
-                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
-        weekdays: {
-            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
-                '_'
-            ),
-            standalone:
-                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
-                    '_'
-                ),
-            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
-        },
-        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
-        },
-        calendar: {
-            sameDay: '[Сёння ў] LT',
-            nextDay: '[Заўтра ў] LT',
-            lastDay: '[Учора ў] LT',
-            nextWeek: function () {
-                return '[У] dddd [ў] LT';
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[У мінулую] dddd [ў] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[У мінулы] dddd [ў] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'праз %s',
-            past: '%s таму',
-            s: 'некалькі секунд',
-            m: relativeTimeWithPlural,
-            mm: relativeTimeWithPlural,
-            h: relativeTimeWithPlural,
-            hh: relativeTimeWithPlural,
-            d: 'дзень',
-            dd: relativeTimeWithPlural,
-            M: 'месяц',
-            MM: relativeTimeWithPlural,
-            y: 'год',
-            yy: relativeTimeWithPlural,
-        },
-        meridiemParse: /ночы|раніцы|дня|вечара/,
-        isPM: function (input) {
-            return /^(дня|вечара)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночы';
-            } else if (hour < 12) {
-                return 'раніцы';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечара';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return (number % 10 === 2 || number % 10 === 3) &&
-                        number % 100 !== 12 &&
-                        number % 100 !== 13
-                        ? number + '-і'
-                        : number + '-ы';
-                case 'D':
-                    return number + '-га';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return be;
-
-})));
Index: ckend/node_modules/moment/locale/bg.js
===================================================================
--- backend/node_modules/moment/locale/bg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,98 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bulgarian [bg]
-//! author : Krasen Borisov : https://github.com/kraz
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var bg = moment.defineLocale('bg', {
-        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Днес в] LT',
-            nextDay: '[Утре в] LT',
-            nextWeek: 'dddd [в] LT',
-            lastDay: '[Вчера в] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Миналата] dddd [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Миналия] dddd [в] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'след %s',
-            past: 'преди %s',
-            s: 'няколко секунди',
-            ss: '%d секунди',
-            m: 'минута',
-            mm: '%d минути',
-            h: 'час',
-            hh: '%d часа',
-            d: 'ден',
-            dd: '%d дена',
-            w: 'седмица',
-            ww: '%d седмици',
-            M: 'месец',
-            MM: '%d месеца',
-            y: 'година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return bg;
-
-})));
Index: ckend/node_modules/moment/locale/bm.js
===================================================================
--- backend/node_modules/moment/locale/bm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bambara [bm]
-//! author : Estelle Comment : https://github.com/estellecomment
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var bm = moment.defineLocale('bm', {
-        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
-            '_'
-        ),
-        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
-        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
-        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
-        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'MMMM [tile] D [san] YYYY',
-            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bi lɛrɛ] LT',
-            nextDay: '[Sini lɛrɛ] LT',
-            nextWeek: 'dddd [don lɛrɛ] LT',
-            lastDay: '[Kunu lɛrɛ] LT',
-            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s kɔnɔ',
-            past: 'a bɛ %s bɔ',
-            s: 'sanga dama dama',
-            ss: 'sekondi %d',
-            m: 'miniti kelen',
-            mm: 'miniti %d',
-            h: 'lɛrɛ kelen',
-            hh: 'lɛrɛ %d',
-            d: 'tile kelen',
-            dd: 'tile %d',
-            M: 'kalo kelen',
-            MM: 'kalo %d',
-            y: 'san kelen',
-            yy: 'san %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return bm;
-
-})));
Index: ckend/node_modules/moment/locale/bn-bd.js
===================================================================
--- backend/node_modules/moment/locale/bn-bd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali (Bangladesh) [bn-bd]
-//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    var bnBd = moment.defineLocale('bn-bd', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-
-        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'রাত') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ভোর') {
-                return hour;
-            } else if (meridiem === 'সকাল') {
-                return hour;
-            } else if (meridiem === 'দুপুর') {
-                return hour >= 3 ? hour : hour + 12;
-            } else if (meridiem === 'বিকাল') {
-                return hour + 12;
-            } else if (meridiem === 'সন্ধ্যা') {
-                return hour + 12;
-            }
-        },
-
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 6) {
-                return 'ভোর';
-            } else if (hour < 12) {
-                return 'সকাল';
-            } else if (hour < 15) {
-                return 'দুপুর';
-            } else if (hour < 18) {
-                return 'বিকাল';
-            } else if (hour < 20) {
-                return 'সন্ধ্যা';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return bnBd;
-
-})));
Index: ckend/node_modules/moment/locale/bn.js
===================================================================
--- backend/node_modules/moment/locale/bn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,130 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali [bn]
-//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    var bn = moment.defineLocale('bn', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'রাত' && hour >= 4) ||
-                (meridiem === 'দুপুর' && hour < 5) ||
-                meridiem === 'বিকাল'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 10) {
-                return 'সকাল';
-            } else if (hour < 17) {
-                return 'দুপুর';
-            } else if (hour < 20) {
-                return 'বিকাল';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return bn;
-
-})));
Index: ckend/node_modules/moment/locale/bo.js
===================================================================
--- backend/node_modules/moment/locale/bo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tibetan [bo]
-//! author : Thupten N. Chakrishar : https://github.com/vajradog
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '༡',
-            2: '༢',
-            3: '༣',
-            4: '༤',
-            5: '༥',
-            6: '༦',
-            7: '༧',
-            8: '༨',
-            9: '༩',
-            0: '༠',
-        },
-        numberMap = {
-            '༡': '1',
-            '༢': '2',
-            '༣': '3',
-            '༤': '4',
-            '༥': '5',
-            '༦': '6',
-            '༧': '7',
-            '༨': '8',
-            '༩': '9',
-            '༠': '0',
-        };
-
-    var bo = moment.defineLocale('bo', {
-        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
-                '_'
-            ),
-        monthsShortRegex: /^(ཟླ་\d{1,2})/,
-        monthsParseExact: true,
-        weekdays:
-            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
-                '_'
-            ),
-        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
-            '_'
-        ),
-        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[དི་རིང] LT',
-            nextDay: '[སང་ཉིན] LT',
-            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
-            lastDay: '[ཁ་སང] LT',
-            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ལ་',
-            past: '%s སྔན་ལ',
-            s: 'ལམ་སང',
-            ss: '%d སྐར་ཆ།',
-            m: 'སྐར་མ་གཅིག',
-            mm: '%d སྐར་མ',
-            h: 'ཆུ་ཚོད་གཅིག',
-            hh: '%d ཆུ་ཚོད',
-            d: 'ཉིན་གཅིག',
-            dd: '%d ཉིན་',
-            M: 'ཟླ་བ་གཅིག',
-            MM: '%d ཟླ་བ',
-            y: 'ལོ་གཅིག',
-            yy: '%d ལོ',
-        },
-        preparse: function (string) {
-            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'མཚན་མོ' && hour >= 4) ||
-                (meridiem === 'ཉིན་གུང' && hour < 5) ||
-                meridiem === 'དགོང་དག'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'མཚན་མོ';
-            } else if (hour < 10) {
-                return 'ཞོགས་ཀས';
-            } else if (hour < 17) {
-                return 'ཉིན་གུང';
-            } else if (hour < 20) {
-                return 'དགོང་དག';
-            } else {
-                return 'མཚན་མོ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return bo;
-
-})));
Index: ckend/node_modules/moment/locale/br.js
===================================================================
--- backend/node_modules/moment/locale/br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,179 +1,0 @@
-//! moment.js locale configuration
-//! locale : Breton [br]
-//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithMutation(number, withoutSuffix, key) {
-        var format = {
-            mm: 'munutenn',
-            MM: 'miz',
-            dd: 'devezh',
-        };
-        return number + ' ' + mutation(format[key], number);
-    }
-    function specialMutationForYears(number) {
-        switch (lastNumber(number)) {
-            case 1:
-            case 3:
-            case 4:
-            case 5:
-            case 9:
-                return number + ' bloaz';
-            default:
-                return number + ' vloaz';
-        }
-    }
-    function lastNumber(number) {
-        if (number > 9) {
-            return lastNumber(number % 10);
-        }
-        return number;
-    }
-    function mutation(text, number) {
-        if (number === 2) {
-            return softMutation(text);
-        }
-        return text;
-    }
-    function softMutation(text) {
-        var mutationTable = {
-            m: 'v',
-            b: 'v',
-            d: 'z',
-        };
-        if (mutationTable[text.charAt(0)] === undefined) {
-            return text;
-        }
-        return mutationTable[text.charAt(0)] + text.substring(1);
-    }
-
-    var monthsParse = [
-            /^gen/i,
-            /^c[ʼ\']hwe/i,
-            /^meu/i,
-            /^ebr/i,
-            /^mae/i,
-            /^(mez|eve)/i,
-            /^gou/i,
-            /^eos/i,
-            /^gwe/i,
-            /^her/i,
-            /^du/i,
-            /^ker/i,
-        ],
-        monthsRegex =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        monthsStrictRegex =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
-        monthsShortStrictRegex =
-            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        fullWeekdaysParse = [
-            /^sul/i,
-            /^lun/i,
-            /^meurzh/i,
-            /^merc[ʼ\']her/i,
-            /^yaou/i,
-            /^gwener/i,
-            /^sadorn/i,
-        ],
-        shortWeekdaysParse = [
-            /^Sul/i,
-            /^Lun/i,
-            /^Meu/i,
-            /^Mer/i,
-            /^Yao/i,
-            /^Gwe/i,
-            /^Sad/i,
-        ],
-        minWeekdaysParse = [
-            /^Su/i,
-            /^Lu/i,
-            /^Me([^r]|$)/i,
-            /^Mer/i,
-            /^Ya/i,
-            /^Gw/i,
-            /^Sa/i,
-        ];
-
-    var br = moment.defineLocale('br', {
-        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
-            '_'
-        ),
-        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
-        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
-        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-        weekdaysParse: minWeekdaysParse,
-        fullWeekdaysParse: fullWeekdaysParse,
-        shortWeekdaysParse: shortWeekdaysParse,
-        minWeekdaysParse: minWeekdaysParse,
-
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex: monthsStrictRegex,
-        monthsShortStrictRegex: monthsShortStrictRegex,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [a viz] MMMM YYYY',
-            LLL: 'D [a viz] MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hiziv da] LT',
-            nextDay: '[Warcʼhoazh da] LT',
-            nextWeek: 'dddd [da] LT',
-            lastDay: '[Decʼh da] LT',
-            lastWeek: 'dddd [paset da] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'a-benn %s',
-            past: '%s ʼzo',
-            s: 'un nebeud segondennoù',
-            ss: '%d eilenn',
-            m: 'ur vunutenn',
-            mm: relativeTimeWithMutation,
-            h: 'un eur',
-            hh: '%d eur',
-            d: 'un devezh',
-            dd: relativeTimeWithMutation,
-            M: 'ur miz',
-            MM: relativeTimeWithMutation,
-            y: 'ur bloaz',
-            yy: specialMutationForYears,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'añ' : 'vet';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
-        isPM: function (token) {
-            return token === 'g.m.';
-        },
-        meridiem: function (hour, minute, isLower) {
-            return hour < 12 ? 'a.m.' : 'g.m.';
-        },
-    });
-
-    return br;
-
-})));
Index: ckend/node_modules/moment/locale/bs.js
===================================================================
--- backend/node_modules/moment/locale/bs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bosnian [bs]
-//! author : Nedim Cholich : https://github.com/frontyard
-//! author : Rasid Redzic : https://github.com/rasidre
-//! based on (hr) translation by Bojan Marković
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 'm':
-                return withoutSuffix
-                    ? 'jedna minuta'
-                    : isFuture
-                      ? 'jednu minutu'
-                      : 'jedne minute';
-        }
-    }
-
-    function translate(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jedan sat';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    var bs = moment.defineLocale('bs', {
-        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                        return '[prošlu] dddd [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate,
-            m: processRelativeTime,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: 'dan',
-            dd: translate,
-            M: 'mjesec',
-            MM: translate,
-            y: 'godinu',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return bs;
-
-})));
Index: ckend/node_modules/moment/locale/ca.js
===================================================================
--- backend/node_modules/moment/locale/ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-//! moment.js locale configuration
-//! locale : Catalan [ca]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ca = moment.defineLocale('ca', {
-        months: {
-            standalone:
-                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
-                    '_'
-                ),
-            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
-                '_'
-            ),
-        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a les] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextDay: function () {
-                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastDay: function () {
-                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [passat a ' +
-                    (this.hours() !== 1 ? 'les' : 'la') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'uns segons',
-            ss: '%d segons',
-            m: 'un minut',
-            mm: '%d minuts',
-            h: 'una hora',
-            hh: '%d hores',
-            d: 'un dia',
-            dd: '%d dies',
-            M: 'un mes',
-            MM: '%d mesos',
-            y: 'un any',
-            yy: '%d anys',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return ca;
-
-})));
Index: ckend/node_modules/moment/locale/cs.js
===================================================================
--- backend/node_modules/moment/locale/cs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,192 +1,0 @@
-//! moment.js locale configuration
-//! locale : Czech [cs]
-//! author : petrbela : https://github.com/petrbela
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = {
-            standalone:
-                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
-                    '_'
-                ),
-            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
-                '_'
-            ),
-            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
-        },
-        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
-        monthsParse = [
-            /^led/i,
-            /^úno/i,
-            /^bře/i,
-            /^dub/i,
-            /^kvě/i,
-            /^(čvn|červen$|června)/i,
-            /^(čvc|červenec|července)/i,
-            /^srp/i,
-            /^zář/i,
-            /^říj/i,
-            /^lis/i,
-            /^pro/i,
-        ],
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsRegex =
-            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
-
-    function plural(n) {
-        return n > 1 && n < 5 && ~~(n / 10) !== 1;
-    }
-    function translate(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'sekundy' : 'sekund');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'minuty' : 'minut');
-                } else {
-                    return result + 'minutami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'hodiny' : 'hodin');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'den' : 'dnem';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'dny' : 'dní');
-                } else {
-                    return result + 'dny';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'měsíce' : 'měsíců');
-                } else {
-                    return result + 'měsíci';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokem';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'roky' : 'let');
-                } else {
-                    return result + 'lety';
-                }
-        }
-    }
-
-    var cs = moment.defineLocale('cs', {
-        months: months,
-        monthsShort: monthsShort,
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsStrictRegex:
-            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
-        monthsShortStrictRegex:
-            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
-        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
-        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-            l: 'D. M. YYYY',
-        },
-        calendar: {
-            sameDay: '[dnes v] LT',
-            nextDay: '[zítra v] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [v] LT';
-                    case 3:
-                        return '[ve středu v] LT';
-                    case 4:
-                        return '[ve čtvrtek v] LT';
-                    case 5:
-                        return '[v pátek v] LT';
-                    case 6:
-                        return '[v sobotu v] LT';
-                }
-            },
-            lastDay: '[včera v] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulou neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[minulé] dddd [v] LT';
-                    case 3:
-                        return '[minulou středu v] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [v] LT';
-                    case 6:
-                        return '[minulou sobotu v] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'před %s',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return cs;
-
-})));
Index: ckend/node_modules/moment/locale/cv.js
===================================================================
--- backend/node_modules/moment/locale/cv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chuvash [cv]
-//! author : Anatoly Mironov : https://github.com/mirontoli
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var cv = moment.defineLocale('cv', {
-        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
-            '_'
-        ),
-        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
-        weekdays:
-            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
-                '_'
-            ),
-        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
-        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
-            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-        },
-        calendar: {
-            sameDay: '[Паян] LT [сехетре]',
-            nextDay: '[Ыран] LT [сехетре]',
-            lastDay: '[Ӗнер] LT [сехетре]',
-            nextWeek: '[Ҫитес] dddd LT [сехетре]',
-            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (output) {
-                var affix = /сехет$/i.exec(output)
-                    ? 'рен'
-                    : /ҫул$/i.exec(output)
-                      ? 'тан'
-                      : 'ран';
-                return output + affix;
-            },
-            past: '%s каялла',
-            s: 'пӗр-ик ҫеккунт',
-            ss: '%d ҫеккунт',
-            m: 'пӗр минут',
-            mm: '%d минут',
-            h: 'пӗр сехет',
-            hh: '%d сехет',
-            d: 'пӗр кун',
-            dd: '%d кун',
-            M: 'пӗр уйӑх',
-            MM: '%d уйӑх',
-            y: 'пӗр ҫул',
-            yy: '%d ҫул',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
-        ordinal: '%d-мӗш',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return cv;
-
-})));
Index: ckend/node_modules/moment/locale/cy.js
===================================================================
--- backend/node_modules/moment/locale/cy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,109 +1,0 @@
-//! moment.js locale configuration
-//! locale : Welsh [cy]
-//! author : Robert Allen : https://github.com/robgallen
-//! author : https://github.com/ryangreaves
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var cy = moment.defineLocale('cy', {
-        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
-            '_'
-        ),
-        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
-            '_'
-        ),
-        weekdays:
-            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
-        weekdaysParseExact: true,
-        // time formats are the same as en-gb
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Heddiw am] LT',
-            nextDay: '[Yfory am] LT',
-            nextWeek: 'dddd [am] LT',
-            lastDay: '[Ddoe am] LT',
-            lastWeek: 'dddd [diwethaf am] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'mewn %s',
-            past: '%s yn ôl',
-            s: 'ychydig eiliadau',
-            ss: '%d eiliad',
-            m: 'munud',
-            mm: '%d munud',
-            h: 'awr',
-            hh: '%d awr',
-            d: 'diwrnod',
-            dd: '%d diwrnod',
-            M: 'mis',
-            MM: '%d mis',
-            y: 'blwyddyn',
-            yy: '%d flynedd',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
-        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-        ordinal: function (number) {
-            var b = number,
-                output = '',
-                lookup = [
-                    '',
-                    'af',
-                    'il',
-                    'ydd',
-                    'ydd',
-                    'ed',
-                    'ed',
-                    'ed',
-                    'fed',
-                    'fed',
-                    'fed', // 1af to 10fed
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'fed', // 11eg to 20fed
-                ];
-            if (b > 20) {
-                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
-                    output = 'fed'; // not 30ain, 70ain or 90ain
-                } else {
-                    output = 'ain';
-                }
-            } else if (b > 0) {
-                output = lookup[b];
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return cy;
-
-})));
Index: ckend/node_modules/moment/locale/da.js
===================================================================
--- backend/node_modules/moment/locale/da.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : Danish [da]
-//! author : Ulrik Nielsen : https://github.com/mrbase
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var da = moment.defineLocale('da', {
-        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'på dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[i] dddd[s kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'få sekunder',
-            ss: '%d sekunder',
-            m: 'et minut',
-            mm: '%d minutter',
-            h: 'en time',
-            hh: '%d timer',
-            d: 'en dag',
-            dd: '%d dage',
-            M: 'en måned',
-            MM: '%d måneder',
-            y: 'et år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return da;
-
-})));
Index: ckend/node_modules/moment/locale/de-at.js
===================================================================
--- backend/node_modules/moment/locale/de-at.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Austria) [de-at]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Martin Groller : https://github.com/MadMG
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    var deAt = moment.defineLocale('de-at', {
-        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime,
-            mm: '%d Minuten',
-            h: processRelativeTime,
-            hh: '%d Stunden',
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            w: processRelativeTime,
-            ww: '%d Wochen',
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return deAt;
-
-})));
Index: ckend/node_modules/moment/locale/de-ch.js
===================================================================
--- backend/node_modules/moment/locale/de-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Switzerland) [de-ch]
-//! author : sschueller : https://github.com/sschueller
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    var deCh = moment.defineLocale('de-ch', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime,
-            mm: '%d Minuten',
-            h: processRelativeTime,
-            hh: '%d Stunden',
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            w: processRelativeTime,
-            ww: '%d Wochen',
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return deCh;
-
-})));
Index: ckend/node_modules/moment/locale/de.js
===================================================================
--- backend/node_modules/moment/locale/de.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,89 +1,0 @@
-//! moment.js locale configuration
-//! locale : German [de]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    var de = moment.defineLocale('de', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime,
-            mm: '%d Minuten',
-            h: processRelativeTime,
-            hh: '%d Stunden',
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            w: processRelativeTime,
-            ww: '%d Wochen',
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return de;
-
-})));
Index: ckend/node_modules/moment/locale/dv.js
===================================================================
--- backend/node_modules/moment/locale/dv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,101 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maldivian [dv]
-//! author : Jawish Hameed : https://github.com/jawish
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = [
-            'ޖެނުއަރީ',
-            'ފެބްރުއަރީ',
-            'މާރިޗު',
-            'އޭޕްރީލު',
-            'މޭ',
-            'ޖޫން',
-            'ޖުލައި',
-            'އޯގަސްޓު',
-            'ސެޕްޓެމްބަރު',
-            'އޮކްޓޯބަރު',
-            'ނޮވެމްބަރު',
-            'ޑިސެމްބަރު',
-        ],
-        weekdays = [
-            'އާދިއްތަ',
-            'ހޯމަ',
-            'އަންގާރަ',
-            'ބުދަ',
-            'ބުރާސްފަތި',
-            'ހުކުރު',
-            'ހޮނިހިރު',
-        ];
-
-    var dv = moment.defineLocale('dv', {
-        months: months,
-        monthsShort: months,
-        weekdays: weekdays,
-        weekdaysShort: weekdays,
-        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/M/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /މކ|މފ/,
-        isPM: function (input) {
-            return 'މފ' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'މކ';
-            } else {
-                return 'މފ';
-            }
-        },
-        calendar: {
-            sameDay: '[މިއަދު] LT',
-            nextDay: '[މާދަމާ] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[އިއްޔެ] LT',
-            lastWeek: '[ފާއިތުވި] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ތެރޭގައި %s',
-            past: 'ކުރިން %s',
-            s: 'ސިކުންތުކޮޅެއް',
-            ss: 'd% ސިކުންތު',
-            m: 'މިނިޓެއް',
-            mm: 'މިނިޓު %d',
-            h: 'ގަޑިއިރެއް',
-            hh: 'ގަޑިއިރު %d',
-            d: 'ދުވަހެއް',
-            dd: 'ދުވަސް %d',
-            M: 'މަހެއް',
-            MM: 'މަސް %d',
-            y: 'އަހަރެއް',
-            yy: 'އަހަރު %d',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 7, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return dv;
-
-})));
Index: ckend/node_modules/moment/locale/el.js
===================================================================
--- backend/node_modules/moment/locale/el.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Greek [el]
-//! author : Aggelos Karalias : https://github.com/mehiel
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function isFunction(input) {
-        return (
-            (typeof Function !== 'undefined' && input instanceof Function) ||
-            Object.prototype.toString.call(input) === '[object Function]'
-        );
-    }
-
-    var el = moment.defineLocale('el', {
-        monthsNominativeEl:
-            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
-                '_'
-            ),
-        monthsGenitiveEl:
-            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
-                '_'
-            ),
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return this._monthsNominativeEl;
-            } else if (
-                typeof format === 'string' &&
-                /D/.test(format.substring(0, format.indexOf('MMMM')))
-            ) {
-                // if there is a day number before 'MMMM'
-                return this._monthsGenitiveEl[momentToFormat.month()];
-            } else {
-                return this._monthsNominativeEl[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
-        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
-            '_'
-        ),
-        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
-        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'μμ' : 'ΜΜ';
-            } else {
-                return isLower ? 'πμ' : 'ΠΜ';
-            }
-        },
-        isPM: function (input) {
-            return (input + '').toLowerCase()[0] === 'μ';
-        },
-        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendarEl: {
-            sameDay: '[Σήμερα {}] LT',
-            nextDay: '[Αύριο {}] LT',
-            nextWeek: 'dddd [{}] LT',
-            lastDay: '[Χθες {}] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 6:
-                        return '[το προηγούμενο] dddd [{}] LT';
-                    default:
-                        return '[την προηγούμενη] dddd [{}] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        calendar: function (key, mom) {
-            var output = this._calendarEl[key],
-                hours = mom && mom.hours();
-            if (isFunction(output)) {
-                output = output.apply(mom);
-            }
-            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
-        },
-        relativeTime: {
-            future: 'σε %s',
-            past: '%s πριν',
-            s: 'λίγα δευτερόλεπτα',
-            ss: '%d δευτερόλεπτα',
-            m: 'ένα λεπτό',
-            mm: '%d λεπτά',
-            h: 'μία ώρα',
-            hh: '%d ώρες',
-            d: 'μία μέρα',
-            dd: '%d μέρες',
-            M: 'ένας μήνας',
-            MM: '%d μήνες',
-            y: 'ένας χρόνος',
-            yy: '%d χρόνια',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}η/,
-        ordinal: '%dη',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4st is the first week of the year.
-        },
-    });
-
-    return el;
-
-})));
Index: ckend/node_modules/moment/locale/en-au.js
===================================================================
--- backend/node_modules/moment/locale/en-au.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Australia) [en-au]
-//! author : Jared Morse : https://github.com/jarcoal
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enAu = moment.defineLocale('en-au', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return enAu;
-
-})));
Index: ckend/node_modules/moment/locale/en-ca.js
===================================================================
--- backend/node_modules/moment/locale/en-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Canada) [en-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enCa = moment.defineLocale('en-ca', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'YYYY-MM-DD',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY h:mm A',
-            LLLL: 'dddd, MMMM D, YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    return enCa;
-
-})));
Index: ckend/node_modules/moment/locale/en-gb.js
===================================================================
--- backend/node_modules/moment/locale/en-gb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (United Kingdom) [en-gb]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enGb = moment.defineLocale('en-gb', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return enGb;
-
-})));
Index: ckend/node_modules/moment/locale/en-ie.js
===================================================================
--- backend/node_modules/moment/locale/en-ie.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Ireland) [en-ie]
-//! author : Chris Cartlidge : https://github.com/chriscartlidge
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enIe = moment.defineLocale('en-ie', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return enIe;
-
-})));
Index: ckend/node_modules/moment/locale/en-il.js
===================================================================
--- backend/node_modules/moment/locale/en-il.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Israel) [en-il]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enIl = moment.defineLocale('en-il', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    return enIl;
-
-})));
Index: ckend/node_modules/moment/locale/en-in.js
===================================================================
--- backend/node_modules/moment/locale/en-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (India) [en-in]
-//! author : Jatin Agrawal : https://github.com/jatinag22
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enIn = moment.defineLocale('en-in', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    return enIn;
-
-})));
Index: ckend/node_modules/moment/locale/en-nz.js
===================================================================
--- backend/node_modules/moment/locale/en-nz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (New Zealand) [en-nz]
-//! author : Luke McGregor : https://github.com/lukemcgregor
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enNz = moment.defineLocale('en-nz', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return enNz;
-
-})));
Index: ckend/node_modules/moment/locale/en-sg.js
===================================================================
--- backend/node_modules/moment/locale/en-sg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Singapore) [en-sg]
-//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var enSg = moment.defineLocale('en-sg', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return enSg;
-
-})));
Index: ckend/node_modules/moment/locale/eo.js
===================================================================
--- backend/node_modules/moment/locale/eo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : Esperanto [eo]
-//! author : Colin Dean : https://github.com/colindean
-//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
-//! comment : miestasmia corrected the translation by colindean
-//! comment : Vivakvo corrected the translation by colindean and miestasmia
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var eo = moment.defineLocale('eo', {
-        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
-        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
-        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: '[la] D[-an de] MMMM, YYYY',
-            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
-            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
-            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
-        },
-        meridiemParse: /[ap]\.t\.m/i,
-        isPM: function (input) {
-            return input.charAt(0).toLowerCase() === 'p';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'p.t.m.' : 'P.T.M.';
-            } else {
-                return isLower ? 'a.t.m.' : 'A.T.M.';
-            }
-        },
-        calendar: {
-            sameDay: '[Hodiaŭ je] LT',
-            nextDay: '[Morgaŭ je] LT',
-            nextWeek: 'dddd[n je] LT',
-            lastDay: '[Hieraŭ je] LT',
-            lastWeek: '[pasintan] dddd[n je] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'post %s',
-            past: 'antaŭ %s',
-            s: 'kelkaj sekundoj',
-            ss: '%d sekundoj',
-            m: 'unu minuto',
-            mm: '%d minutoj',
-            h: 'unu horo',
-            hh: '%d horoj',
-            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
-            dd: '%d tagoj',
-            M: 'unu monato',
-            MM: '%d monatoj',
-            y: 'unu jaro',
-            yy: '%d jaroj',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}a/,
-        ordinal: '%da',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return eo;
-
-})));
Index: ckend/node_modules/moment/locale/es-do.js
===================================================================
--- backend/node_modules/moment/locale/es-do.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Dominican Republic) [es-do]
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    var esDo = moment.defineLocale('es-do', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return esDo;
-
-})));
Index: ckend/node_modules/moment/locale/es-mx.js
===================================================================
--- backend/node_modules/moment/locale/es-mx.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Mexico) [es-mx]
-//! author : JC Franco : https://github.com/jcfranco
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    var esMx = moment.defineLocale('es-mx', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    return esMx;
-
-})));
Index: ckend/node_modules/moment/locale/es-us.js
===================================================================
--- backend/node_modules/moment/locale/es-us.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (United States) [es-us]
-//! author : bustta : https://github.com/bustta
-//! author : chrisrodz : https://github.com/chrisrodz
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    var esUs = moment.defineLocale('es-us', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'MM/DD/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return esUs;
-
-})));
Index: ckend/node_modules/moment/locale/es.js
===================================================================
--- backend/node_modules/moment/locale/es.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish [es]
-//! author : Julio Napurí : https://github.com/julionc
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    var es = moment.defineLocale('es', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    return es;
-
-})));
Index: ckend/node_modules/moment/locale/et.js
===================================================================
--- backend/node_modules/moment/locale/et.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,89 +1,0 @@
-//! moment.js locale configuration
-//! locale : Estonian [et]
-//! author : Henry Kehlmann : https://github.com/madhenry
-//! improvements : Illimar Tambek : https://github.com/ragulka
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
-            ss: [number + 'sekundi', number + 'sekundit'],
-            m: ['ühe minuti', 'üks minut'],
-            mm: [number + ' minuti', number + ' minutit'],
-            h: ['ühe tunni', 'tund aega', 'üks tund'],
-            hh: [number + ' tunni', number + ' tundi'],
-            d: ['ühe päeva', 'üks päev'],
-            M: ['kuu aja', 'kuu aega', 'üks kuu'],
-            MM: [number + ' kuu', number + ' kuud'],
-            y: ['ühe aasta', 'aasta', 'üks aasta'],
-            yy: [number + ' aasta', number + ' aastat'],
-        };
-        if (withoutSuffix) {
-            return format[key][2] ? format[key][2] : format[key][1];
-        }
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    var et = moment.defineLocale('et', {
-        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
-        weekdays:
-            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
-                '_'
-            ),
-        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
-        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Täna,] LT',
-            nextDay: '[Homme,] LT',
-            nextWeek: '[Järgmine] dddd LT',
-            lastDay: '[Eile,] LT',
-            lastWeek: '[Eelmine] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s pärast',
-            past: '%s tagasi',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: '%d päeva',
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return et;
-
-})));
Index: ckend/node_modules/moment/locale/eu.js
===================================================================
--- backend/node_modules/moment/locale/eu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Basque [eu]
-//! author : Eneko Illarramendi : https://github.com/eillarra
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var eu = moment.defineLocale('eu', {
-        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
-            '_'
-        ),
-        monthsShort:
-            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
-                '_'
-            ),
-        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
-        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY[ko] MMMM[ren] D[a]',
-            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
-            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
-            l: 'YYYY-M-D',
-            ll: 'YYYY[ko] MMM D[a]',
-            lll: 'YYYY[ko] MMM D[a] HH:mm',
-            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
-        },
-        calendar: {
-            sameDay: '[gaur] LT[etan]',
-            nextDay: '[bihar] LT[etan]',
-            nextWeek: 'dddd LT[etan]',
-            lastDay: '[atzo] LT[etan]',
-            lastWeek: '[aurreko] dddd LT[etan]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s barru',
-            past: 'duela %s',
-            s: 'segundo batzuk',
-            ss: '%d segundo',
-            m: 'minutu bat',
-            mm: '%d minutu',
-            h: 'ordu bat',
-            hh: '%d ordu',
-            d: 'egun bat',
-            dd: '%d egun',
-            M: 'hilabete bat',
-            MM: '%d hilabete',
-            y: 'urte bat',
-            yy: '%d urte',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return eu;
-
-})));
Index: ckend/node_modules/moment/locale/fa.js
===================================================================
--- backend/node_modules/moment/locale/fa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Persian [fa]
-//! author : Ebrahim Byagowi : https://github.com/ebraminio
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '۱',
-            2: '۲',
-            3: '۳',
-            4: '۴',
-            5: '۵',
-            6: '۶',
-            7: '۷',
-            8: '۸',
-            9: '۹',
-            0: '۰',
-        },
-        numberMap = {
-            '۱': '1',
-            '۲': '2',
-            '۳': '3',
-            '۴': '4',
-            '۵': '5',
-            '۶': '6',
-            '۷': '7',
-            '۸': '8',
-            '۹': '9',
-            '۰': '0',
-        };
-
-    var fa = moment.defineLocale('fa', {
-        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-                '_'
-            ),
-        weekdays:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /قبل از ظهر|بعد از ظهر/,
-        isPM: function (input) {
-            return /بعد از ظهر/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'قبل از ظهر';
-            } else {
-                return 'بعد از ظهر';
-            }
-        },
-        calendar: {
-            sameDay: '[امروز ساعت] LT',
-            nextDay: '[فردا ساعت] LT',
-            nextWeek: 'dddd [ساعت] LT',
-            lastDay: '[دیروز ساعت] LT',
-            lastWeek: 'dddd [پیش] [ساعت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'در %s',
-            past: '%s پیش',
-            s: 'چند ثانیه',
-            ss: '%d ثانیه',
-            m: 'یک دقیقه',
-            mm: '%d دقیقه',
-            h: 'یک ساعت',
-            hh: '%d ساعت',
-            d: 'یک روز',
-            dd: '%d روز',
-            M: 'یک ماه',
-            MM: '%d ماه',
-            y: 'یک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[۰-۹]/g, function (match) {
-                    return numberMap[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}م/,
-        ordinal: '%dم',
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return fa;
-
-})));
Index: ckend/node_modules/moment/locale/fi.js
===================================================================
--- backend/node_modules/moment/locale/fi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//! moment.js locale configuration
-//! locale : Finnish [fi]
-//! author : Tarmo Aidantausta : https://github.com/bleadof
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var numbersPast =
-            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
-                ' '
-            ),
-        numbersFuture = [
-            'nolla',
-            'yhden',
-            'kahden',
-            'kolmen',
-            'neljän',
-            'viiden',
-            'kuuden',
-            numbersPast[7],
-            numbersPast[8],
-            numbersPast[9],
-        ];
-    function translate(number, withoutSuffix, key, isFuture) {
-        var result = '';
-        switch (key) {
-            case 's':
-                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
-            case 'ss':
-                result = isFuture ? 'sekunnin' : 'sekuntia';
-                break;
-            case 'm':
-                return isFuture ? 'minuutin' : 'minuutti';
-            case 'mm':
-                result = isFuture ? 'minuutin' : 'minuuttia';
-                break;
-            case 'h':
-                return isFuture ? 'tunnin' : 'tunti';
-            case 'hh':
-                result = isFuture ? 'tunnin' : 'tuntia';
-                break;
-            case 'd':
-                return isFuture ? 'päivän' : 'päivä';
-            case 'dd':
-                result = isFuture ? 'päivän' : 'päivää';
-                break;
-            case 'M':
-                return isFuture ? 'kuukauden' : 'kuukausi';
-            case 'MM':
-                result = isFuture ? 'kuukauden' : 'kuukautta';
-                break;
-            case 'y':
-                return isFuture ? 'vuoden' : 'vuosi';
-            case 'yy':
-                result = isFuture ? 'vuoden' : 'vuotta';
-                break;
-        }
-        result = verbalNumber(number, isFuture) + ' ' + result;
-        return result;
-    }
-    function verbalNumber(number, isFuture) {
-        return number < 10
-            ? isFuture
-                ? numbersFuture[number]
-                : numbersPast[number]
-            : number;
-    }
-
-    var fi = moment.defineLocale('fi', {
-        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
-            '_'
-        ),
-        monthsShort:
-            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
-                '_'
-            ),
-        weekdays:
-            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
-                '_'
-            ),
-        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[ta] YYYY',
-            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
-            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
-            l: 'D.M.YYYY',
-            ll: 'Do MMM YYYY',
-            lll: 'Do MMM YYYY, [klo] HH.mm',
-            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
-        },
-        calendar: {
-            sameDay: '[tänään] [klo] LT',
-            nextDay: '[huomenna] [klo] LT',
-            nextWeek: 'dddd [klo] LT',
-            lastDay: '[eilen] [klo] LT',
-            lastWeek: '[viime] dddd[na] [klo] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s päästä',
-            past: '%s sitten',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return fi;
-
-})));
Index: ckend/node_modules/moment/locale/fil.js
===================================================================
--- backend/node_modules/moment/locale/fil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//! moment.js locale configuration
-//! locale : Filipino [fil]
-//! author : Dan Hagman : https://github.com/hagmandan
-//! author : Matthew Co : https://github.com/matthewdeeco
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var fil = moment.defineLocale('fil', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return fil;
-
-})));
Index: ckend/node_modules/moment/locale/fo.js
===================================================================
--- backend/node_modules/moment/locale/fo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Faroese [fo]
-//! author : Ragnar Johannesen : https://github.com/ragnar123
-//! author : Kristian Sakarisson : https://github.com/sakarisson
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var fo = moment.defineLocale('fo', {
-        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
-        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D. MMMM, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Í dag kl.] LT',
-            nextDay: '[Í morgin kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[Í gjár kl.] LT',
-            lastWeek: '[síðstu] dddd [kl] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'um %s',
-            past: '%s síðani',
-            s: 'fá sekund',
-            ss: '%d sekundir',
-            m: 'ein minuttur',
-            mm: '%d minuttir',
-            h: 'ein tími',
-            hh: '%d tímar',
-            d: 'ein dagur',
-            dd: '%d dagar',
-            M: 'ein mánaður',
-            MM: '%d mánaðir',
-            y: 'eitt ár',
-            yy: '%d ár',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return fo;
-
-})));
Index: ckend/node_modules/moment/locale/fr-ca.js
===================================================================
--- backend/node_modules/moment/locale/fr-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,81 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Canada) [fr-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var frCa = moment.defineLocale('fr-ca', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-    });
-
-    return frCa;
-
-})));
Index: ckend/node_modules/moment/locale/fr-ch.js
===================================================================
--- backend/node_modules/moment/locale/fr-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Switzerland) [fr-ch]
-//! author : Gaspard Bucher : https://github.com/gaspard
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var frCh = moment.defineLocale('fr-ch', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return frCh;
-
-})));
Index: ckend/node_modules/moment/locale/fr.js
===================================================================
--- backend/node_modules/moment/locale/fr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-//! moment.js locale configuration
-//! locale : French [fr]
-//! author : John Fischer : https://github.com/jfroffice
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsStrictRegex =
-            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsShortStrictRegex =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
-        monthsRegex =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsParse = [
-            /^janv/i,
-            /^févr/i,
-            /^mars/i,
-            /^avr/i,
-            /^mai/i,
-            /^juin/i,
-            /^juil/i,
-            /^août/i,
-            /^sept/i,
-            /^oct/i,
-            /^nov/i,
-            /^déc/i,
-        ];
-
-    var fr = moment.defineLocale('fr', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex: monthsStrictRegex,
-        monthsShortStrictRegex: monthsShortStrictRegex,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            w: 'une semaine',
-            ww: '%d semaines',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // TODO: Return 'e' when day of month > 1. Move this case inside
-                // block for masculine words below.
-                // See https://github.com/moment/moment/issues/3375
-                case 'D':
-                    return number + (number === 1 ? 'er' : '');
-
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return fr;
-
-})));
Index: ckend/node_modules/moment/locale/fy.js
===================================================================
--- backend/node_modules/moment/locale/fy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,86 +1,0 @@
-//! moment.js locale configuration
-//! locale : Frisian [fy]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots =
-            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
-        monthsShortWithoutDots =
-            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
-
-    var fy = moment.defineLocale('fy', {
-        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots[m.month()];
-            } else {
-                return monthsShortWithDots[m.month()];
-            }
-        },
-        monthsParseExact: true,
-        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
-            '_'
-        ),
-        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
-        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[hjoed om] LT',
-            nextDay: '[moarn om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[juster om] LT',
-            lastWeek: '[ôfrûne] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oer %s',
-            past: '%s lyn',
-            s: 'in pear sekonden',
-            ss: '%d sekonden',
-            m: 'ien minút',
-            mm: '%d minuten',
-            h: 'ien oere',
-            hh: '%d oeren',
-            d: 'ien dei',
-            dd: '%d dagen',
-            M: 'ien moanne',
-            MM: '%d moannen',
-            y: 'ien jier',
-            yy: '%d jierren',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return fy;
-
-})));
Index: ckend/node_modules/moment/locale/ga.js
===================================================================
--- backend/node_modules/moment/locale/ga.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Irish or Irish Gaelic [ga]
-//! author : André Silva : https://github.com/askpt
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = [
-            'Eanáir',
-            'Feabhra',
-            'Márta',
-            'Aibreán',
-            'Bealtaine',
-            'Meitheamh',
-            'Iúil',
-            'Lúnasa',
-            'Meán Fómhair',
-            'Deireadh Fómhair',
-            'Samhain',
-            'Nollaig',
-        ],
-        monthsShort = [
-            'Ean',
-            'Feabh',
-            'Márt',
-            'Aib',
-            'Beal',
-            'Meith',
-            'Iúil',
-            'Lún',
-            'M.F.',
-            'D.F.',
-            'Samh',
-            'Noll',
-        ],
-        weekdays = [
-            'Dé Domhnaigh',
-            'Dé Luain',
-            'Dé Máirt',
-            'Dé Céadaoin',
-            'Déardaoin',
-            'Dé hAoine',
-            'Dé Sathairn',
-        ],
-        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
-        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
-
-    var ga = moment.defineLocale('ga', {
-        months: months,
-        monthsShort: monthsShort,
-        monthsParseExact: true,
-        weekdays: weekdays,
-        weekdaysShort: weekdaysShort,
-        weekdaysMin: weekdaysMin,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Inniu ag] LT',
-            nextDay: '[Amárach ag] LT',
-            nextWeek: 'dddd [ag] LT',
-            lastDay: '[Inné ag] LT',
-            lastWeek: 'dddd [seo caite] [ag] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i %s',
-            past: '%s ó shin',
-            s: 'cúpla soicind',
-            ss: '%d soicind',
-            m: 'nóiméad',
-            mm: '%d nóiméad',
-            h: 'uair an chloig',
-            hh: '%d uair an chloig',
-            d: 'lá',
-            dd: '%d lá',
-            M: 'mí',
-            MM: '%d míonna',
-            y: 'bliain',
-            yy: '%d bliain',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return ga;
-
-})));
Index: ckend/node_modules/moment/locale/gd.js
===================================================================
--- backend/node_modules/moment/locale/gd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Scottish Gaelic [gd]
-//! author : Jon Ashdown : https://github.com/jonashdown
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = [
-            'Am Faoilleach',
-            'An Gearran',
-            'Am Màrt',
-            'An Giblean',
-            'An Cèitean',
-            'An t-Ògmhios',
-            'An t-Iuchar',
-            'An Lùnastal',
-            'An t-Sultain',
-            'An Dàmhair',
-            'An t-Samhain',
-            'An Dùbhlachd',
-        ],
-        monthsShort = [
-            'Faoi',
-            'Gear',
-            'Màrt',
-            'Gibl',
-            'Cèit',
-            'Ògmh',
-            'Iuch',
-            'Lùn',
-            'Sult',
-            'Dàmh',
-            'Samh',
-            'Dùbh',
-        ],
-        weekdays = [
-            'Didòmhnaich',
-            'Diluain',
-            'Dimàirt',
-            'Diciadain',
-            'Diardaoin',
-            'Dihaoine',
-            'Disathairne',
-        ],
-        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
-        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
-
-    var gd = moment.defineLocale('gd', {
-        months: months,
-        monthsShort: monthsShort,
-        monthsParseExact: true,
-        weekdays: weekdays,
-        weekdaysShort: weekdaysShort,
-        weekdaysMin: weekdaysMin,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[An-diugh aig] LT',
-            nextDay: '[A-màireach aig] LT',
-            nextWeek: 'dddd [aig] LT',
-            lastDay: '[An-dè aig] LT',
-            lastWeek: 'dddd [seo chaidh] [aig] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ann an %s',
-            past: 'bho chionn %s',
-            s: 'beagan diogan',
-            ss: '%d diogan',
-            m: 'mionaid',
-            mm: '%d mionaidean',
-            h: 'uair',
-            hh: '%d uairean',
-            d: 'latha',
-            dd: '%d latha',
-            M: 'mìos',
-            MM: '%d mìosan',
-            y: 'bliadhna',
-            yy: '%d bliadhna',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return gd;
-
-})));
Index: ckend/node_modules/moment/locale/gl.js
===================================================================
--- backend/node_modules/moment/locale/gl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,86 +1,0 @@
-//! moment.js locale configuration
-//! locale : Galician [gl]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var gl = moment.defineLocale('gl', {
-        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort:
-            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
-            },
-            lastDay: function () {
-                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (str) {
-                if (str.indexOf('un') === 0) {
-                    return 'n' + str;
-                }
-                return 'en ' + str;
-            },
-            past: 'hai %s',
-            s: 'uns segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'unha hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return gl;
-
-})));
Index: ckend/node_modules/moment/locale/gom-deva.js
===================================================================
--- backend/node_modules/moment/locale/gom-deva.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Devanagari script [gom-deva]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
-            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
-            m: ['एका मिणटान', 'एक मिनूट'],
-            mm: [number + ' मिणटांनी', number + ' मिणटां'],
-            h: ['एका वरान', 'एक वर'],
-            hh: [number + ' वरांनी', number + ' वरां'],
-            d: ['एका दिसान', 'एक दीस'],
-            dd: [number + ' दिसांनी', number + ' दीस'],
-            M: ['एका म्हयन्यान', 'एक म्हयनो'],
-            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
-            y: ['एका वर्सान', 'एक वर्स'],
-            yy: [number + ' वर्सांनी', number + ' वर्सां'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    var gomDeva = moment.defineLocale('gom-deva', {
-        months: {
-            standalone:
-                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-                    '_'
-                ),
-            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
-        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
-        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [वाजतां]',
-            LTS: 'A h:mm:ss [वाजतां]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
-            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
-        },
-        calendar: {
-            sameDay: '[आयज] LT',
-            nextDay: '[फाल्यां] LT',
-            nextWeek: '[फुडलो] dddd[,] LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[फाटलो] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s आदीं',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'वेर' only applies to day of the month
-                case 'D':
-                    return number + 'वेर';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राती') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सकाळीं') {
-                return hour;
-            } else if (meridiem === 'दनपारां') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'सांजे') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'राती';
-            } else if (hour < 12) {
-                return 'सकाळीं';
-            } else if (hour < 16) {
-                return 'दनपारां';
-            } else if (hour < 20) {
-                return 'सांजे';
-            } else {
-                return 'राती';
-            }
-        },
-    });
-
-    return gomDeva;
-
-})));
Index: ckend/node_modules/moment/locale/gom-latn.js
===================================================================
--- backend/node_modules/moment/locale/gom-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Latin script [gom-latn]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['thoddea sekondamni', 'thodde sekond'],
-            ss: [number + ' sekondamni', number + ' sekond'],
-            m: ['eka mintan', 'ek minut'],
-            mm: [number + ' mintamni', number + ' mintam'],
-            h: ['eka voran', 'ek vor'],
-            hh: [number + ' voramni', number + ' voram'],
-            d: ['eka disan', 'ek dis'],
-            dd: [number + ' disamni', number + ' dis'],
-            M: ['eka mhoinean', 'ek mhoino'],
-            MM: [number + ' mhoineamni', number + ' mhoine'],
-            y: ['eka vorsan', 'ek voros'],
-            yy: [number + ' vorsamni', number + ' vorsam'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    var gomLatn = moment.defineLocale('gom-latn', {
-        months: {
-            standalone:
-                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
-                    '_'
-                ),
-            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
-        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
-        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [vazta]',
-            LTS: 'A h:mm:ss [vazta]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [vazta]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
-            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
-        },
-        calendar: {
-            sameDay: '[Aiz] LT',
-            nextDay: '[Faleam] LT',
-            nextWeek: '[Fuddlo] dddd[,] LT',
-            lastDay: '[Kal] LT',
-            lastWeek: '[Fattlo] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s adim',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'er' only applies to day of the month
-                case 'D':
-                    return number + 'er';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /rati|sokallim|donparam|sanje/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'rati') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'sokallim') {
-                return hour;
-            } else if (meridiem === 'donparam') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'sanje') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'rati';
-            } else if (hour < 12) {
-                return 'sokallim';
-            } else if (hour < 16) {
-                return 'donparam';
-            } else if (hour < 20) {
-                return 'sanje';
-            } else {
-                return 'rati';
-            }
-        },
-    });
-
-    return gomLatn;
-
-})));
Index: ckend/node_modules/moment/locale/gu.js
===================================================================
--- backend/node_modules/moment/locale/gu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,133 +1,0 @@
-//! moment.js locale configuration
-//! locale : Gujarati [gu]
-//! author : Kaushik Thanki : https://github.com/Kaushik1987
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '૧',
-            2: '૨',
-            3: '૩',
-            4: '૪',
-            5: '૫',
-            6: '૬',
-            7: '૭',
-            8: '૮',
-            9: '૯',
-            0: '૦',
-        },
-        numberMap = {
-            '૧': '1',
-            '૨': '2',
-            '૩': '3',
-            '૪': '4',
-            '૫': '5',
-            '૬': '6',
-            '૭': '7',
-            '૮': '8',
-            '૯': '9',
-            '૦': '0',
-        };
-
-    var gu = moment.defineLocale('gu', {
-        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
-            '_'
-        ),
-        monthsShort:
-            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
-            '_'
-        ),
-        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
-        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm વાગ્યે',
-            LTS: 'A h:mm:ss વાગ્યે',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
-        },
-        calendar: {
-            sameDay: '[આજ] LT',
-            nextDay: '[કાલે] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ગઇકાલે] LT',
-            lastWeek: '[પાછલા] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s મા',
-            past: '%s પહેલા',
-            s: 'અમુક પળો',
-            ss: '%d સેકંડ',
-            m: 'એક મિનિટ',
-            mm: '%d મિનિટ',
-            h: 'એક કલાક',
-            hh: '%d કલાક',
-            d: 'એક દિવસ',
-            dd: '%d દિવસ',
-            M: 'એક મહિનો',
-            MM: '%d મહિનો',
-            y: 'એક વર્ષ',
-            yy: '%d વર્ષ',
-        },
-        preparse: function (string) {
-            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
-        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'રાત') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'સવાર') {
-                return hour;
-            } else if (meridiem === 'બપોર') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'સાંજ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'રાત';
-            } else if (hour < 10) {
-                return 'સવાર';
-            } else if (hour < 17) {
-                return 'બપોર';
-            } else if (hour < 20) {
-                return 'સાંજ';
-            } else {
-                return 'રાત';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return gu;
-
-})));
Index: ckend/node_modules/moment/locale/he.js
===================================================================
--- backend/node_modules/moment/locale/he.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hebrew [he]
-//! author : Tomer Cohen : https://github.com/tomer
-//! author : Moshe Simantov : https://github.com/DevelopmentIL
-//! author : Tal Ater : https://github.com/TalAter
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var he = moment.defineLocale('he', {
-        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
-            '_'
-        ),
-        monthsShort:
-            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
-        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
-        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
-        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [ב]MMMM YYYY',
-            LLL: 'D [ב]MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[היום ב־]LT',
-            nextDay: '[מחר ב־]LT',
-            nextWeek: 'dddd [בשעה] LT',
-            lastDay: '[אתמול ב־]LT',
-            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'בעוד %s',
-            past: 'לפני %s',
-            s: 'מספר שניות',
-            ss: '%d שניות',
-            m: 'דקה',
-            mm: '%d דקות',
-            h: 'שעה',
-            hh: function (number) {
-                if (number === 2) {
-                    return 'שעתיים';
-                }
-                return number + ' שעות';
-            },
-            d: 'יום',
-            dd: function (number) {
-                if (number === 2) {
-                    return 'יומיים';
-                }
-                return number + ' ימים';
-            },
-            M: 'חודש',
-            MM: function (number) {
-                if (number === 2) {
-                    return 'חודשיים';
-                }
-                return number + ' חודשים';
-            },
-            y: 'שנה',
-            yy: function (number) {
-                if (number === 2) {
-                    return 'שנתיים';
-                } else if (number % 10 === 0 && number !== 10) {
-                    return number + ' שנה';
-                }
-                return number + ' שנים';
-            },
-        },
-        meridiemParse:
-            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
-        isPM: function (input) {
-            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 5) {
-                return 'לפנות בוקר';
-            } else if (hour < 10) {
-                return 'בבוקר';
-            } else if (hour < 12) {
-                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
-            } else if (hour < 18) {
-                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
-            } else {
-                return 'בערב';
-            }
-        },
-    });
-
-    return he;
-
-})));
Index: ckend/node_modules/moment/locale/hi.js
===================================================================
--- backend/node_modules/moment/locale/hi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,179 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hindi [hi]
-//! author : Mayank Singhal : https://github.com/mayanksinghal
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        },
-        monthsParse = [
-            /^जन/i,
-            /^फ़र|फर/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सितं|सित/i,
-            /^अक्टू/i,
-            /^नव|नवं/i,
-            /^दिसं|दिस/i,
-        ],
-        shortMonthsParse = [
-            /^जन/i,
-            /^फ़र/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सित/i,
-            /^अक्टू/i,
-            /^नव/i,
-            /^दिस/i,
-        ];
-
-    var hi = moment.defineLocale('hi', {
-        months: {
-            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
-                '_'
-            ),
-            standalone:
-                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
-        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm बजे',
-            LTS: 'A h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
-        },
-
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: shortMonthsParse,
-
-        monthsRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsShortRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsStrictRegex:
-            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
-
-        monthsShortStrictRegex:
-            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
-
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[कल] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[कल] LT',
-            lastWeek: '[पिछले] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s में',
-            past: '%s पहले',
-            s: 'कुछ ही क्षण',
-            ss: '%d सेकंड',
-            m: 'एक मिनट',
-            mm: '%d मिनट',
-            h: 'एक घंटा',
-            hh: '%d घंटे',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महीने',
-            MM: '%d महीने',
-            y: 'एक वर्ष',
-            yy: '%d वर्ष',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-        meridiemParse: /रात|सुबह|दोपहर|शाम/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'रात') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सुबह') {
-                return hour;
-            } else if (meridiem === 'दोपहर') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'शाम') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'रात';
-            } else if (hour < 10) {
-                return 'सुबह';
-            } else if (hour < 17) {
-                return 'दोपहर';
-            } else if (hour < 20) {
-                return 'शाम';
-            } else {
-                return 'रात';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return hi;
-
-})));
Index: ckend/node_modules/moment/locale/hr.js
===================================================================
--- backend/node_modules/moment/locale/hr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,167 +1,0 @@
-//! moment.js locale configuration
-//! locale : Croatian [hr]
-//! author : Bojan Marković : https://github.com/bmarkovic
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function translate(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jednog sata';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    var hr = moment.defineLocale('hr', {
-        months: {
-            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
-                '_'
-            ),
-            standalone:
-                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM YYYY',
-            LLL: 'Do MMMM YYYY H:mm',
-            LLLL: 'dddd, Do MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prošlu] [nedjelju] [u] LT';
-                    case 3:
-                        return '[prošlu] [srijedu] [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: 'dan',
-            dd: translate,
-            M: 'mjesec',
-            MM: translate,
-            y: 'godinu',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return hr;
-
-})));
Index: ckend/node_modules/moment/locale/hu.js
===================================================================
--- backend/node_modules/moment/locale/hu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hungarian [hu]
-//! author : Adam Brunner : https://github.com/adambrunner
-//! author : Peter Viszt  : https://github.com/passatgt
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var weekEndings =
-        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-    function translate(number, withoutSuffix, key, isFuture) {
-        var num = number;
-        switch (key) {
-            case 's':
-                return isFuture || withoutSuffix
-                    ? 'néhány másodperc'
-                    : 'néhány másodperce';
-            case 'ss':
-                return num + (isFuture || withoutSuffix)
-                    ? ' másodperc'
-                    : ' másodperce';
-            case 'm':
-                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'mm':
-                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'h':
-                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'hh':
-                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'd':
-                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'dd':
-                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'M':
-                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'MM':
-                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'y':
-                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
-            case 'yy':
-                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
-        }
-        return '';
-    }
-    function week(isFuture) {
-        return (
-            (isFuture ? '' : '[múlt] ') +
-            '[' +
-            weekEndings[this.day()] +
-            '] LT[-kor]'
-        );
-    }
-
-    var hu = moment.defineLocale('hu', {
-        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
-        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
-        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY. MMMM D.',
-            LLL: 'YYYY. MMMM D. H:mm',
-            LLLL: 'YYYY. MMMM D., dddd H:mm',
-        },
-        meridiemParse: /de|du/i,
-        isPM: function (input) {
-            return input.charAt(1).toLowerCase() === 'u';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower === true ? 'de' : 'DE';
-            } else {
-                return isLower === true ? 'du' : 'DU';
-            }
-        },
-        calendar: {
-            sameDay: '[ma] LT[-kor]',
-            nextDay: '[holnap] LT[-kor]',
-            nextWeek: function () {
-                return week.call(this, true);
-            },
-            lastDay: '[tegnap] LT[-kor]',
-            lastWeek: function () {
-                return week.call(this, false);
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s múlva',
-            past: '%s',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return hu;
-
-})));
Index: ckend/node_modules/moment/locale/hy-am.js
===================================================================
--- backend/node_modules/moment/locale/hy-am.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-//! moment.js locale configuration
-//! locale : Armenian [hy-am]
-//! author : Armendarabyan : https://github.com/armendarabyan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var hyAm = moment.defineLocale('hy-am', {
-        months: {
-            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
-                '_'
-            ),
-            standalone:
-                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
-        weekdays:
-            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
-                '_'
-            ),
-        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY թ.',
-            LLL: 'D MMMM YYYY թ., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
-        },
-        calendar: {
-            sameDay: '[այսօր] LT',
-            nextDay: '[վաղը] LT',
-            lastDay: '[երեկ] LT',
-            nextWeek: function () {
-                return 'dddd [օրը ժամը] LT';
-            },
-            lastWeek: function () {
-                return '[անցած] dddd [օրը ժամը] LT';
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s հետո',
-            past: '%s առաջ',
-            s: 'մի քանի վայրկյան',
-            ss: '%d վայրկյան',
-            m: 'րոպե',
-            mm: '%d րոպե',
-            h: 'ժամ',
-            hh: '%d ժամ',
-            d: 'օր',
-            dd: '%d օր',
-            M: 'ամիս',
-            MM: '%d ամիս',
-            y: 'տարի',
-            yy: '%d տարի',
-        },
-        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
-        isPM: function (input) {
-            return /^(ցերեկվա|երեկոյան)$/.test(input);
-        },
-        meridiem: function (hour) {
-            if (hour < 4) {
-                return 'գիշերվա';
-            } else if (hour < 12) {
-                return 'առավոտվա';
-            } else if (hour < 17) {
-                return 'ցերեկվա';
-            } else {
-                return 'երեկոյան';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'DDD':
-                case 'w':
-                case 'W':
-                case 'DDDo':
-                    if (number === 1) {
-                        return number + '-ին';
-                    }
-                    return number + '-րդ';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return hyAm;
-
-})));
Index: ckend/node_modules/moment/locale/id.js
===================================================================
--- backend/node_modules/moment/locale/id.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Indonesian [id]
-//! author : Mohammad Satrio Utomo : https://github.com/tyok
-//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var id = moment.defineLocale('id', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|siang|sore|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'siang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sore' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'siang';
-            } else if (hours < 19) {
-                return 'sore';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Besok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kemarin pukul] LT',
-            lastWeek: 'dddd [lalu pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lalu',
-            s: 'beberapa detik',
-            ss: '%d detik',
-            m: 'semenit',
-            mm: '%d menit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return id;
-
-})));
Index: ckend/node_modules/moment/locale/is.js
===================================================================
--- backend/node_modules/moment/locale/is.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,151 +1,0 @@
-//! moment.js locale configuration
-//! locale : Icelandic [is]
-//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function plural(n) {
-        if (n % 100 === 11) {
-            return true;
-        } else if (n % 10 === 1) {
-            return false;
-        }
-        return true;
-    }
-    function translate(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nokkrar sekúndur'
-                    : 'nokkrum sekúndum';
-            case 'ss':
-                if (plural(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
-                    );
-                }
-                return result + 'sekúnda';
-            case 'm':
-                return withoutSuffix ? 'mínúta' : 'mínútu';
-            case 'mm':
-                if (plural(number)) {
-                    return (
-                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
-                    );
-                } else if (withoutSuffix) {
-                    return result + 'mínúta';
-                }
-                return result + 'mínútu';
-            case 'hh':
-                if (plural(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture
-                            ? 'klukkustundir'
-                            : 'klukkustundum')
-                    );
-                }
-                return result + 'klukkustund';
-            case 'd':
-                if (withoutSuffix) {
-                    return 'dagur';
-                }
-                return isFuture ? 'dag' : 'degi';
-            case 'dd':
-                if (plural(number)) {
-                    if (withoutSuffix) {
-                        return result + 'dagar';
-                    }
-                    return result + (isFuture ? 'daga' : 'dögum');
-                } else if (withoutSuffix) {
-                    return result + 'dagur';
-                }
-                return result + (isFuture ? 'dag' : 'degi');
-            case 'M':
-                if (withoutSuffix) {
-                    return 'mánuður';
-                }
-                return isFuture ? 'mánuð' : 'mánuði';
-            case 'MM':
-                if (plural(number)) {
-                    if (withoutSuffix) {
-                        return result + 'mánuðir';
-                    }
-                    return result + (isFuture ? 'mánuði' : 'mánuðum');
-                } else if (withoutSuffix) {
-                    return result + 'mánuður';
-                }
-                return result + (isFuture ? 'mánuð' : 'mánuði');
-            case 'y':
-                return withoutSuffix || isFuture ? 'ár' : 'ári';
-            case 'yy':
-                if (plural(number)) {
-                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
-                }
-                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
-        }
-    }
-
-    var is = moment.defineLocale('is', {
-        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
-        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
-        },
-        calendar: {
-            sameDay: '[í dag kl.] LT',
-            nextDay: '[á morgun kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[í gær kl.] LT',
-            lastWeek: '[síðasta] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'eftir %s',
-            past: 'fyrir %s síðan',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: 'klukkustund',
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return is;
-
-})));
Index: ckend/node_modules/moment/locale/it-ch.js
===================================================================
--- backend/node_modules/moment/locale/it-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian (Switzerland) [it-ch]
-//! author : xfh : https://github.com/xfh
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var itCh = moment.defineLocale('it-ch', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Oggi alle] LT',
-            nextDay: '[Domani alle] LT',
-            nextWeek: 'dddd [alle] LT',
-            lastDay: '[Ieri alle] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[la scorsa] dddd [alle] LT';
-                    default:
-                        return '[lo scorso] dddd [alle] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
-            },
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return itCh;
-
-})));
Index: ckend/node_modules/moment/locale/it.js
===================================================================
--- backend/node_modules/moment/locale/it.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian [it]
-//! author : Lorenzo : https://github.com/aliem
-//! author: Mattia Larentis: https://github.com/nostalgiaz
-//! author: Marco : https://github.com/Manfre98
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var it = moment.defineLocale('it', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return (
-                    '[Oggi a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextDay: function () {
-                return (
-                    '[Domani a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextWeek: function () {
-                return (
-                    'dddd [a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastDay: function () {
-                return (
-                    '[Ieri a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return (
-                            '[La scorsa] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                    default:
-                        return (
-                            '[Lo scorso] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'tra %s',
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            w: 'una settimana',
-            ww: '%d settimane',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return it;
-
-})));
Index: ckend/node_modules/moment/locale/ja.js
===================================================================
--- backend/node_modules/moment/locale/ja.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,159 +1,0 @@
-//! moment.js locale configuration
-//! locale : Japanese [ja]
-//! author : LI Long : https://github.com/baryon
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ja = moment.defineLocale('ja', {
-        eras: [
-            {
-                since: '2019-05-01',
-                offset: 1,
-                name: '令和',
-                narrow: '㋿',
-                abbr: 'R',
-            },
-            {
-                since: '1989-01-08',
-                until: '2019-04-30',
-                offset: 1,
-                name: '平成',
-                narrow: '㍻',
-                abbr: 'H',
-            },
-            {
-                since: '1926-12-25',
-                until: '1989-01-07',
-                offset: 1,
-                name: '昭和',
-                narrow: '㍼',
-                abbr: 'S',
-            },
-            {
-                since: '1912-07-30',
-                until: '1926-12-24',
-                offset: 1,
-                name: '大正',
-                narrow: '㍽',
-                abbr: 'T',
-            },
-            {
-                since: '1873-01-01',
-                until: '1912-07-29',
-                offset: 6,
-                name: '明治',
-                narrow: '㍾',
-                abbr: 'M',
-            },
-            {
-                since: '0001-01-01',
-                until: '1873-12-31',
-                offset: 1,
-                name: '西暦',
-                narrow: 'AD',
-                abbr: 'AD',
-            },
-            {
-                since: '0000-12-31',
-                until: -Infinity,
-                offset: 1,
-                name: '紀元前',
-                narrow: 'BC',
-                abbr: 'BC',
-            },
-        ],
-        eraYearOrdinalRegex: /(元|\d+)年/,
-        eraYearOrdinalParse: function (input, match) {
-            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
-        },
-        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
-        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
-        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日 dddd HH:mm',
-            l: 'YYYY/MM/DD',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日(ddd) HH:mm',
-        },
-        meridiemParse: /午前|午後/i,
-        isPM: function (input) {
-            return input === '午後';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return '午前';
-            } else {
-                return '午後';
-            }
-        },
-        calendar: {
-            sameDay: '[今日] LT',
-            nextDay: '[明日] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[来週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            lastDay: '[昨日] LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[先週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}日/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'y':
-                    return number === 1 ? '元年' : number + '年';
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '数秒',
-            ss: '%d秒',
-            m: '1分',
-            mm: '%d分',
-            h: '1時間',
-            hh: '%d時間',
-            d: '1日',
-            dd: '%d日',
-            M: '1ヶ月',
-            MM: '%dヶ月',
-            y: '1年',
-            yy: '%d年',
-        },
-    });
-
-    return ja;
-
-})));
Index: ckend/node_modules/moment/locale/jv.js
===================================================================
--- backend/node_modules/moment/locale/jv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Javanese [jv]
-//! author : Rony Lantip : https://github.com/lantip
-//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var jv = moment.defineLocale('jv', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
-        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /enjing|siyang|sonten|ndalu/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'enjing') {
-                return hour;
-            } else if (meridiem === 'siyang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'enjing';
-            } else if (hours < 15) {
-                return 'siyang';
-            } else if (hours < 19) {
-                return 'sonten';
-            } else {
-                return 'ndalu';
-            }
-        },
-        calendar: {
-            sameDay: '[Dinten puniko pukul] LT',
-            nextDay: '[Mbenjang pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kala wingi pukul] LT',
-            lastWeek: 'dddd [kepengker pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'wonten ing %s',
-            past: '%s ingkang kepengker',
-            s: 'sawetawis detik',
-            ss: '%d detik',
-            m: 'setunggal menit',
-            mm: '%d menit',
-            h: 'setunggal jam',
-            hh: '%d jam',
-            d: 'sedinten',
-            dd: '%d dinten',
-            M: 'sewulan',
-            MM: '%d wulan',
-            y: 'setaun',
-            yy: '%d taun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return jv;
-
-})));
Index: ckend/node_modules/moment/locale/ka.js
===================================================================
--- backend/node_modules/moment/locale/ka.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,103 +1,0 @@
-//! moment.js locale configuration
-//! locale : Georgian [ka]
-//! author : Irakli Janiashvili : https://github.com/IrakliJani
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ka = moment.defineLocale('ka', {
-        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
-            '_'
-        ),
-        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
-        weekdays: {
-            standalone:
-                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
-                    '_'
-                ),
-            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
-                '_'
-            ),
-            isFormat: /(წინა|შემდეგ)/,
-        },
-        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
-        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[დღეს] LT[-ზე]',
-            nextDay: '[ხვალ] LT[-ზე]',
-            lastDay: '[გუშინ] LT[-ზე]',
-            nextWeek: '[შემდეგ] dddd LT[-ზე]',
-            lastWeek: '[წინა] dddd LT-ზე',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return s.replace(
-                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
-                    function ($0, $1, $2) {
-                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
-                    }
-                );
-            },
-            past: function (s) {
-                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
-                    return s.replace(/(ი|ე)$/, 'ის წინ');
-                }
-                if (/წელი/.test(s)) {
-                    return s.replace(/წელი$/, 'წლის წინ');
-                }
-                return s;
-            },
-            s: 'რამდენიმე წამი',
-            ss: '%d წამი',
-            m: 'წუთი',
-            mm: '%d წუთი',
-            h: 'საათი',
-            hh: '%d საათი',
-            d: 'დღე',
-            dd: '%d დღე',
-            M: 'თვე',
-            MM: '%d თვე',
-            y: 'წელი',
-            yy: '%d წელი',
-        },
-        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
-        ordinal: function (number) {
-            if (number === 0) {
-                return number;
-            }
-            if (number === 1) {
-                return number + '-ლი';
-            }
-            if (
-                number < 20 ||
-                (number <= 100 && number % 20 === 0) ||
-                number % 100 === 0
-            ) {
-                return 'მე-' + number;
-            }
-            return number + '-ე';
-        },
-        week: {
-            dow: 1,
-            doy: 7,
-        },
-    });
-
-    return ka;
-
-})));
Index: ckend/node_modules/moment/locale/kk.js
===================================================================
--- backend/node_modules/moment/locale/kk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kazakh [kk]
-//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        0: '-ші',
-        1: '-ші',
-        2: '-ші',
-        3: '-ші',
-        4: '-ші',
-        5: '-ші',
-        6: '-шы',
-        7: '-ші',
-        8: '-ші',
-        9: '-шы',
-        10: '-шы',
-        20: '-шы',
-        30: '-шы',
-        40: '-шы',
-        50: '-ші',
-        60: '-шы',
-        70: '-ші',
-        80: '-ші',
-        90: '-шы',
-        100: '-ші',
-    };
-
-    var kk = moment.defineLocale('kk', {
-        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
-            '_'
-        ),
-        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
-        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
-            '_'
-        ),
-        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
-        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгін сағат] LT',
-            nextDay: '[Ертең сағат] LT',
-            nextWeek: 'dddd [сағат] LT',
-            lastDay: '[Кеше сағат] LT',
-            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ішінде',
-            past: '%s бұрын',
-            s: 'бірнеше секунд',
-            ss: '%d секунд',
-            m: 'бір минут',
-            mm: '%d минут',
-            h: 'бір сағат',
-            hh: '%d сағат',
-            d: 'бір күн',
-            dd: '%d күн',
-            M: 'бір ай',
-            MM: '%d ай',
-            y: 'бір жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return kk;
-
-})));
Index: ckend/node_modules/moment/locale/km.js
===================================================================
--- backend/node_modules/moment/locale/km.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,114 +1,0 @@
-//! moment.js locale configuration
-//! locale : Cambodian [km]
-//! author : Kruy Vanna : https://github.com/kruyvanna
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '១',
-            2: '២',
-            3: '៣',
-            4: '៤',
-            5: '៥',
-            6: '៦',
-            7: '៧',
-            8: '៨',
-            9: '៩',
-            0: '០',
-        },
-        numberMap = {
-            '១': '1',
-            '២': '2',
-            '៣': '3',
-            '៤': '4',
-            '៥': '5',
-            '៦': '6',
-            '៧': '7',
-            '៨': '8',
-            '៩': '9',
-            '០': '0',
-        };
-
-    var km = moment.defineLocale('km', {
-        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-            '_'
-        ),
-        monthsShort:
-            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-                '_'
-            ),
-        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
-        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ព្រឹក|ល្ងាច/,
-        isPM: function (input) {
-            return input === 'ល្ងាច';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ព្រឹក';
-            } else {
-                return 'ល្ងាច';
-            }
-        },
-        calendar: {
-            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
-            nextDay: '[ស្អែក ម៉ោង] LT',
-            nextWeek: 'dddd [ម៉ោង] LT',
-            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
-            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sទៀត',
-            past: '%sមុន',
-            s: 'ប៉ុន្មានវិនាទី',
-            ss: '%d វិនាទី',
-            m: 'មួយនាទី',
-            mm: '%d នាទី',
-            h: 'មួយម៉ោង',
-            hh: '%d ម៉ោង',
-            d: 'មួយថ្ងៃ',
-            dd: '%d ថ្ងៃ',
-            M: 'មួយខែ',
-            MM: '%d ខែ',
-            y: 'មួយឆ្នាំ',
-            yy: '%d ឆ្នាំ',
-        },
-        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
-        ordinal: 'ទី%d',
-        preparse: function (string) {
-            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return km;
-
-})));
Index: ckend/node_modules/moment/locale/kn.js
===================================================================
--- backend/node_modules/moment/locale/kn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kannada [kn]
-//! author : Rajeev Naik : https://github.com/rajeevnaikte
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '೧',
-            2: '೨',
-            3: '೩',
-            4: '೪',
-            5: '೫',
-            6: '೬',
-            7: '೭',
-            8: '೮',
-            9: '೯',
-            0: '೦',
-        },
-        numberMap = {
-            '೧': '1',
-            '೨': '2',
-            '೩': '3',
-            '೪': '4',
-            '೫': '5',
-            '೬': '6',
-            '೭': '7',
-            '೮': '8',
-            '೯': '9',
-            '೦': '0',
-        };
-
-    var kn = moment.defineLocale('kn', {
-        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
-            '_'
-        ),
-        monthsShort:
-            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
-        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[ಇಂದು] LT',
-            nextDay: '[ನಾಳೆ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ನಿನ್ನೆ] LT',
-            lastWeek: '[ಕೊನೆಯ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ನಂತರ',
-            past: '%s ಹಿಂದೆ',
-            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
-            ss: '%d ಸೆಕೆಂಡುಗಳು',
-            m: 'ಒಂದು ನಿಮಿಷ',
-            mm: '%d ನಿಮಿಷ',
-            h: 'ಒಂದು ಗಂಟೆ',
-            hh: '%d ಗಂಟೆ',
-            d: 'ಒಂದು ದಿನ',
-            dd: '%d ದಿನ',
-            M: 'ಒಂದು ತಿಂಗಳು',
-            MM: '%d ತಿಂಗಳು',
-            y: 'ಒಂದು ವರ್ಷ',
-            yy: '%d ವರ್ಷ',
-        },
-        preparse: function (string) {
-            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ರಾತ್ರಿ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
-                return hour;
-            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ಸಂಜೆ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ರಾತ್ರಿ';
-            } else if (hour < 10) {
-                return 'ಬೆಳಿಗ್ಗೆ';
-            } else if (hour < 17) {
-                return 'ಮಧ್ಯಾಹ್ನ';
-            } else if (hour < 20) {
-                return 'ಸಂಜೆ';
-            } else {
-                return 'ರಾತ್ರಿ';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
-        ordinal: function (number) {
-            return number + 'ನೇ';
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return kn;
-
-})));
Index: ckend/node_modules/moment/locale/ko.js
===================================================================
--- backend/node_modules/moment/locale/ko.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,86 +1,0 @@
-//! moment.js locale configuration
-//! locale : Korean [ko]
-//! author : Kyungwook, Park : https://github.com/kyungw00k
-//! author : Jeeeyul Lee <jeeeyul@gmail.com>
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ko = moment.defineLocale('ko', {
-        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
-        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
-            '_'
-        ),
-        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
-        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
-        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY년 MMMM D일',
-            LLL: 'YYYY년 MMMM D일 A h:mm',
-            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
-            l: 'YYYY.MM.DD.',
-            ll: 'YYYY년 MMMM D일',
-            lll: 'YYYY년 MMMM D일 A h:mm',
-            llll: 'YYYY년 MMMM D일 dddd A h:mm',
-        },
-        calendar: {
-            sameDay: '오늘 LT',
-            nextDay: '내일 LT',
-            nextWeek: 'dddd LT',
-            lastDay: '어제 LT',
-            lastWeek: '지난주 dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s 후',
-            past: '%s 전',
-            s: '몇 초',
-            ss: '%d초',
-            m: '1분',
-            mm: '%d분',
-            h: '한 시간',
-            hh: '%d시간',
-            d: '하루',
-            dd: '%d일',
-            M: '한 달',
-            MM: '%d달',
-            y: '일 년',
-            yy: '%d년',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '일';
-                case 'M':
-                    return number + '월';
-                case 'w':
-                case 'W':
-                    return number + '주';
-                default:
-                    return number;
-            }
-        },
-        meridiemParse: /오전|오후/,
-        isPM: function (token) {
-            return token === '오후';
-        },
-        meridiem: function (hour, minute, isUpper) {
-            return hour < 12 ? '오전' : '오후';
-        },
-    });
-
-    return ko;
-
-})));
Index: ckend/node_modules/moment/locale/ku-kmr.js
===================================================================
--- backend/node_modules/moment/locale/ku-kmr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,125 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Kurdish [ku-kmr]
-//! authors : Mazlum Özdogan : https://github.com/mergehez
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(num, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['çend sanîye', 'çend sanîyeyan'],
-            ss: [num + ' sanîye', num + ' sanîyeyan'],
-            m: ['deqîqeyek', 'deqîqeyekê'],
-            mm: [num + ' deqîqe', num + ' deqîqeyan'],
-            h: ['saetek', 'saetekê'],
-            hh: [num + ' saet', num + ' saetan'],
-            d: ['rojek', 'rojekê'],
-            dd: [num + ' roj', num + ' rojan'],
-            w: ['hefteyek', 'hefteyekê'],
-            ww: [num + ' hefte', num + ' hefteyan'],
-            M: ['mehek', 'mehekê'],
-            MM: [num + ' meh', num + ' mehan'],
-            y: ['salek', 'salekê'],
-            yy: [num + ' sal', num + ' salan'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    // function obliqueNumSuffix(num) {
-    //     if(num.includes(':'))
-    //         num = parseInt(num.split(':')[0]);
-    //     else
-    //         num = parseInt(num);
-    //     return num == 0 || num % 10 == 1 ? 'ê'
-    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
-    // }
-    function ezafeNumSuffix(num) {
-        num = '' + num;
-        var l = num.substring(num.length - 1),
-            ll = num.length > 1 ? num.substring(num.length - 2) : '';
-        if (
-            !(ll == 12 || ll == 13) &&
-            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
-        )
-            return 'yê';
-        return 'ê';
-    }
-
-    var kuKmr = moment.defineLocale('ku-kmr', {
-        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
-        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
-        // But the names below are more well known and handy
-        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
-            '_'
-        ),
-        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
-        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
-        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'bn' : 'BN';
-            } else {
-                return isLower ? 'pn' : 'PN';
-            }
-        },
-        meridiemParse: /bn|BN|pn|PN/,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[a] YYYY[an]',
-            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
-            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
-            ll: 'Do MMM[.] YYYY[an]',
-            lll: 'Do MMM[.] YYYY[an] HH:mm',
-            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Îro di saet] LT [de]',
-            nextDay: '[Sibê di saet] LT [de]',
-            nextWeek: 'dddd [di saet] LT [de]',
-            lastDay: '[Duh di saet] LT [de]',
-            lastWeek: 'dddd[a borî di saet] LT [de]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'di %s de',
-            past: 'berî %s',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            w: processRelativeTime,
-            ww: processRelativeTime,
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
-        ordinal: function (num, period) {
-            var p = period.toLowerCase();
-            if (p.includes('w') || p.includes('m')) return num + '.';
-
-            return num + ezafeNumSuffix(num);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return kuKmr;
-
-})));
Index: ckend/node_modules/moment/locale/ku.js
===================================================================
--- backend/node_modules/moment/locale/ku.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kurdish [ku]
-//! author : Shahram Mebashar : https://github.com/ShahramMebashar
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        months = [
-            'کانونی دووەم',
-            'شوبات',
-            'ئازار',
-            'نیسان',
-            'ئایار',
-            'حوزەیران',
-            'تەمموز',
-            'ئاب',
-            'ئەیلوول',
-            'تشرینی یەكەم',
-            'تشرینی دووەم',
-            'كانونی یەکەم',
-        ];
-
-    var ku = moment.defineLocale('ku', {
-        months: months,
-        monthsShort: months,
-        weekdays:
-            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
-        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ئێواره‌|به‌یانی/,
-        isPM: function (input) {
-            return /ئێواره‌/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'به‌یانی';
-            } else {
-                return 'ئێواره‌';
-            }
-        },
-        calendar: {
-            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
-            nextDay: '[به‌یانی كاتژمێر] LT',
-            nextWeek: 'dddd [كاتژمێر] LT',
-            lastDay: '[دوێنێ كاتژمێر] LT',
-            lastWeek: 'dddd [كاتژمێر] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'له‌ %s',
-            past: '%s',
-            s: 'چه‌ند چركه‌یه‌ك',
-            ss: 'چركه‌ %d',
-            m: 'یه‌ك خوله‌ك',
-            mm: '%d خوله‌ك',
-            h: 'یه‌ك كاتژمێر',
-            hh: '%d كاتژمێر',
-            d: 'یه‌ك ڕۆژ',
-            dd: '%d ڕۆژ',
-            M: 'یه‌ك مانگ',
-            MM: '%d مانگ',
-            y: 'یه‌ك ساڵ',
-            yy: '%d ساڵ',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return ku;
-
-})));
Index: ckend/node_modules/moment/locale/ky.js
===================================================================
--- backend/node_modules/moment/locale/ky.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kyrgyz [ky]
-//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        0: '-чү',
-        1: '-чи',
-        2: '-чи',
-        3: '-чү',
-        4: '-чү',
-        5: '-чи',
-        6: '-чы',
-        7: '-чи',
-        8: '-чи',
-        9: '-чу',
-        10: '-чу',
-        20: '-чы',
-        30: '-чу',
-        40: '-чы',
-        50: '-чү',
-        60: '-чы',
-        70: '-чи',
-        80: '-чи',
-        90: '-чу',
-        100: '-чү',
-    };
-
-    var ky = moment.defineLocale('ky', {
-        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
-            '_'
-        ),
-        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
-            '_'
-        ),
-        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
-        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгүн саат] LT',
-            nextDay: '[Эртең саат] LT',
-            nextWeek: 'dddd [саат] LT',
-            lastDay: '[Кечээ саат] LT',
-            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ичинде',
-            past: '%s мурун',
-            s: 'бирнече секунд',
-            ss: '%d секунд',
-            m: 'бир мүнөт',
-            mm: '%d мүнөт',
-            h: 'бир саат',
-            hh: '%d саат',
-            d: 'бир күн',
-            dd: '%d күн',
-            M: 'бир ай',
-            MM: '%d ай',
-            y: 'бир жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return ky;
-
-})));
Index: ckend/node_modules/moment/locale/lb.js
===================================================================
--- backend/node_modules/moment/locale/lb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,148 +1,0 @@
-//! moment.js locale configuration
-//! locale : Luxembourgish [lb]
-//! author : mweimerskirch : https://github.com/mweimerskirch
-//! author : David Raison : https://github.com/kwisatz
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eng Minutt', 'enger Minutt'],
-            h: ['eng Stonn', 'enger Stonn'],
-            d: ['een Dag', 'engem Dag'],
-            M: ['ee Mount', 'engem Mount'],
-            y: ['ee Joer', 'engem Joer'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    function processFutureTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'a ' + string;
-        }
-        return 'an ' + string;
-    }
-    function processPastTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'viru ' + string;
-        }
-        return 'virun ' + string;
-    }
-    /**
-     * Returns true if the word before the given number loses the '-n' ending.
-     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
-     *
-     * @param number {integer}
-     * @returns {boolean}
-     */
-    function eifelerRegelAppliesToNumber(number) {
-        number = parseInt(number, 10);
-        if (isNaN(number)) {
-            return false;
-        }
-        if (number < 0) {
-            // Negative Number --> always true
-            return true;
-        } else if (number < 10) {
-            // Only 1 digit
-            if (4 <= number && number <= 7) {
-                return true;
-            }
-            return false;
-        } else if (number < 100) {
-            // 2 digits
-            var lastDigit = number % 10,
-                firstDigit = number / 10;
-            if (lastDigit === 0) {
-                return eifelerRegelAppliesToNumber(firstDigit);
-            }
-            return eifelerRegelAppliesToNumber(lastDigit);
-        } else if (number < 10000) {
-            // 3 or 4 digits --> recursively check first digit
-            while (number >= 10) {
-                number = number / 10;
-            }
-            return eifelerRegelAppliesToNumber(number);
-        } else {
-            // Anything larger than 4 digits: recursively check first n-3 digits
-            number = number / 1000;
-            return eifelerRegelAppliesToNumber(number);
-        }
-    }
-
-    var lb = moment.defineLocale('lb', {
-        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm [Auer]',
-            LTS: 'H:mm:ss [Auer]',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm [Auer]',
-            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
-        },
-        calendar: {
-            sameDay: '[Haut um] LT',
-            sameElse: 'L',
-            nextDay: '[Muer um] LT',
-            nextWeek: 'dddd [um] LT',
-            lastDay: '[Gëschter um] LT',
-            lastWeek: function () {
-                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-                switch (this.day()) {
-                    case 2:
-                    case 4:
-                        return '[Leschten] dddd [um] LT';
-                    default:
-                        return '[Leschte] dddd [um] LT';
-                }
-            },
-        },
-        relativeTime: {
-            future: processFutureTime,
-            past: processPastTime,
-            s: 'e puer Sekonnen',
-            ss: '%d Sekonnen',
-            m: processRelativeTime,
-            mm: '%d Minutten',
-            h: processRelativeTime,
-            hh: '%d Stonnen',
-            d: processRelativeTime,
-            dd: '%d Deeg',
-            M: processRelativeTime,
-            MM: '%d Méint',
-            y: processRelativeTime,
-            yy: '%d Joer',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return lb;
-
-})));
Index: ckend/node_modules/moment/locale/lo.js
===================================================================
--- backend/node_modules/moment/locale/lo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,77 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lao [lo]
-//! author : Ryan Hart : https://github.com/ryanhart2
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var lo = moment.defineLocale('lo', {
-        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-                '_'
-            ),
-        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
-        isPM: function (input) {
-            return input === 'ຕອນແລງ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ຕອນເຊົ້າ';
-            } else {
-                return 'ຕອນແລງ';
-            }
-        },
-        calendar: {
-            sameDay: '[ມື້ນີ້ເວລາ] LT',
-            nextDay: '[ມື້ອື່ນເວລາ] LT',
-            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
-            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
-            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ອີກ %s',
-            past: '%sຜ່ານມາ',
-            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
-            ss: '%d ວິນາທີ',
-            m: '1 ນາທີ',
-            mm: '%d ນາທີ',
-            h: '1 ຊົ່ວໂມງ',
-            hh: '%d ຊົ່ວໂມງ',
-            d: '1 ມື້',
-            dd: '%d ມື້',
-            M: '1 ເດືອນ',
-            MM: '%d ເດືອນ',
-            y: '1 ປີ',
-            yy: '%d ປີ',
-        },
-        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
-        ordinal: function (number) {
-            return 'ທີ່' + number;
-        },
-    });
-
-    return lo;
-
-})));
Index: ckend/node_modules/moment/locale/lt.js
===================================================================
--- backend/node_modules/moment/locale/lt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,136 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lithuanian [lt]
-//! author : Mindaugas Mozūras : https://github.com/mmozuras
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var units = {
-        ss: 'sekundė_sekundžių_sekundes',
-        m: 'minutė_minutės_minutę',
-        mm: 'minutės_minučių_minutes',
-        h: 'valanda_valandos_valandą',
-        hh: 'valandos_valandų_valandas',
-        d: 'diena_dienos_dieną',
-        dd: 'dienos_dienų_dienas',
-        M: 'mėnuo_mėnesio_mėnesį',
-        MM: 'mėnesiai_mėnesių_mėnesius',
-        y: 'metai_metų_metus',
-        yy: 'metai_metų_metus',
-    };
-    function translateSeconds(number, withoutSuffix, key, isFuture) {
-        if (withoutSuffix) {
-            return 'kelios sekundės';
-        } else {
-            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
-        }
-    }
-    function translateSingular(number, withoutSuffix, key, isFuture) {
-        return withoutSuffix
-            ? forms(key)[0]
-            : isFuture
-              ? forms(key)[1]
-              : forms(key)[2];
-    }
-    function special(number) {
-        return number % 10 === 0 || (number > 10 && number < 20);
-    }
-    function forms(key) {
-        return units[key].split('_');
-    }
-    function translate(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        if (number === 1) {
-            return (
-                result + translateSingular(number, withoutSuffix, key[0], isFuture)
-            );
-        } else if (withoutSuffix) {
-            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
-        } else {
-            if (isFuture) {
-                return result + forms(key)[1];
-            } else {
-                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
-            }
-        }
-    }
-    var lt = moment.defineLocale('lt', {
-        months: {
-            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
-                '_'
-            ),
-            standalone:
-                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
-                    '_'
-                ),
-            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
-        },
-        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
-        weekdays: {
-            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
-                '_'
-            ),
-            standalone:
-                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
-                    '_'
-                ),
-            isFormat: /dddd HH:mm/,
-        },
-        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
-        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY [m.] MMMM D [d.]',
-            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
-            l: 'YYYY-MM-DD',
-            ll: 'YYYY [m.] MMMM D [d.]',
-            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
-        },
-        calendar: {
-            sameDay: '[Šiandien] LT',
-            nextDay: '[Rytoj] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[Vakar] LT',
-            lastWeek: '[Praėjusį] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'po %s',
-            past: 'prieš %s',
-            s: translateSeconds,
-            ss: translate,
-            m: translateSingular,
-            mm: translate,
-            h: translateSingular,
-            hh: translate,
-            d: translateSingular,
-            dd: translate,
-            M: translateSingular,
-            MM: translate,
-            y: translateSingular,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
-        ordinal: function (number) {
-            return number + '-oji';
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return lt;
-
-})));
Index: ckend/node_modules/moment/locale/lv.js
===================================================================
--- backend/node_modules/moment/locale/lv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-//! moment.js locale configuration
-//! locale : Latvian [lv]
-//! author : Kristaps Karlsons : https://github.com/skakri
-//! author : Jānis Elmeris : https://github.com/JanisE
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var units = {
-        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
-        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        h: 'stundas_stundām_stunda_stundas'.split('_'),
-        hh: 'stundas_stundām_stunda_stundas'.split('_'),
-        d: 'dienas_dienām_diena_dienas'.split('_'),
-        dd: 'dienas_dienām_diena_dienas'.split('_'),
-        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        y: 'gada_gadiem_gads_gadi'.split('_'),
-        yy: 'gada_gadiem_gads_gadi'.split('_'),
-    };
-    /**
-     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
-     */
-    function format(forms, number, withoutSuffix) {
-        if (withoutSuffix) {
-            // E.g. "21 minūte", "3 minūtes".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
-        } else {
-            // E.g. "21 minūtes" as in "pēc 21 minūtes".
-            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
-        }
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        return number + ' ' + format(units[key], number, withoutSuffix);
-    }
-    function relativeTimeWithSingular(number, withoutSuffix, key) {
-        return format(units[key], number, withoutSuffix);
-    }
-    function relativeSeconds(number, withoutSuffix) {
-        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
-    }
-
-    var lv = moment.defineLocale('lv', {
-        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
-        weekdays:
-            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY.',
-            LL: 'YYYY. [gada] D. MMMM',
-            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
-            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
-        },
-        calendar: {
-            sameDay: '[Šodien pulksten] LT',
-            nextDay: '[Rīt pulksten] LT',
-            nextWeek: 'dddd [pulksten] LT',
-            lastDay: '[Vakar pulksten] LT',
-            lastWeek: '[Pagājušā] dddd [pulksten] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'pēc %s',
-            past: 'pirms %s',
-            s: relativeSeconds,
-            ss: relativeTimeWithPlural,
-            m: relativeTimeWithSingular,
-            mm: relativeTimeWithPlural,
-            h: relativeTimeWithSingular,
-            hh: relativeTimeWithPlural,
-            d: relativeTimeWithSingular,
-            dd: relativeTimeWithPlural,
-            M: relativeTimeWithSingular,
-            MM: relativeTimeWithPlural,
-            y: relativeTimeWithSingular,
-            yy: relativeTimeWithPlural,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return lv;
-
-})));
Index: ckend/node_modules/moment/locale/me.js
===================================================================
--- backend/node_modules/moment/locale/me.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,128 +1,0 @@
-//! moment.js locale configuration
-//! locale : Montenegrin [me]
-//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var translator = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekund', 'sekunda', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            dd: ['dan', 'dana', 'dana'],
-            MM: ['mjesec', 'mjeseca', 'mjeseci'],
-            yy: ['godina', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            return number === 1
-                ? wordKey[0]
-                : number >= 2 && number <= 4
-                  ? wordKey[1]
-                  : wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key) {
-            var wordKey = translator.words[key];
-            if (key.length === 1) {
-                return withoutSuffix ? wordKey[0] : wordKey[1];
-            } else {
-                return (
-                    number +
-                    ' ' +
-                    translator.correctGrammaticalCase(number, wordKey)
-                );
-            }
-        },
-    };
-
-    var me = moment.defineLocale('me', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sjutra u] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedjelje] [u] LT',
-                    '[prošlog] [ponedjeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srijede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'nekoliko sekundi',
-            ss: translator.translate,
-            m: translator.translate,
-            mm: translator.translate,
-            h: translator.translate,
-            hh: translator.translate,
-            d: 'dan',
-            dd: translator.translate,
-            M: 'mjesec',
-            MM: translator.translate,
-            y: 'godinu',
-            yy: translator.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return me;
-
-})));
Index: ckend/node_modules/moment/locale/mi.js
===================================================================
--- backend/node_modules/moment/locale/mi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maori [mi]
-//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var mi = moment.defineLocale('mi', {
-        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
-            '_'
-        ),
-        monthsShort:
-            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
-                '_'
-            ),
-        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
-        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
-        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [i] HH:mm',
-            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i teie mahana, i] LT',
-            nextDay: '[apopo i] LT',
-            nextWeek: 'dddd [i] LT',
-            lastDay: '[inanahi i] LT',
-            lastWeek: 'dddd [whakamutunga i] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i roto i %s',
-            past: '%s i mua',
-            s: 'te hēkona ruarua',
-            ss: '%d hēkona',
-            m: 'he meneti',
-            mm: '%d meneti',
-            h: 'te haora',
-            hh: '%d haora',
-            d: 'he ra',
-            dd: '%d ra',
-            M: 'he marama',
-            MM: '%d marama',
-            y: 'he tau',
-            yy: '%d tau',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return mi;
-
-})));
Index: ckend/node_modules/moment/locale/mk.js
===================================================================
--- backend/node_modules/moment/locale/mk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,97 +1,0 @@
-//! moment.js locale configuration
-//! locale : Macedonian [mk]
-//! author : Borislav Mickov : https://github.com/B0k0
-//! author : Sashko Todorov : https://github.com/bkyceh
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var mk = moment.defineLocale('mk', {
-        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
-        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Денес во] LT',
-            nextDay: '[Утре во] LT',
-            nextWeek: '[Во] dddd [во] LT',
-            lastDay: '[Вчера во] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Изминатата] dddd [во] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Изминатиот] dddd [во] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пред %s',
-            s: 'неколку секунди',
-            ss: '%d секунди',
-            m: 'една минута',
-            mm: '%d минути',
-            h: 'еден час',
-            hh: '%d часа',
-            d: 'еден ден',
-            dd: '%d дена',
-            M: 'еден месец',
-            MM: '%d месеци',
-            y: 'една година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return mk;
-
-})));
Index: ckend/node_modules/moment/locale/ml.js
===================================================================
--- backend/node_modules/moment/locale/ml.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malayalam [ml]
-//! author : Floyd Pink : https://github.com/floydpink
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ml = moment.defineLocale('ml', {
-        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
-                '_'
-            ),
-        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
-        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm -നു',
-            LTS: 'A h:mm:ss -നു',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm -നു',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
-        },
-        calendar: {
-            sameDay: '[ഇന്ന്] LT',
-            nextDay: '[നാളെ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ഇന്നലെ] LT',
-            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s കഴിഞ്ഞ്',
-            past: '%s മുൻപ്',
-            s: 'അൽപ നിമിഷങ്ങൾ',
-            ss: '%d സെക്കൻഡ്',
-            m: 'ഒരു മിനിറ്റ്',
-            mm: '%d മിനിറ്റ്',
-            h: 'ഒരു മണിക്കൂർ',
-            hh: '%d മണിക്കൂർ',
-            d: 'ഒരു ദിവസം',
-            dd: '%d ദിവസം',
-            M: 'ഒരു മാസം',
-            MM: '%d മാസം',
-            y: 'ഒരു വർഷം',
-            yy: '%d വർഷം',
-        },
-        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'രാത്രി' && hour >= 4) ||
-                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
-                meridiem === 'വൈകുന്നേരം'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'രാത്രി';
-            } else if (hour < 12) {
-                return 'രാവിലെ';
-            } else if (hour < 17) {
-                return 'ഉച്ച കഴിഞ്ഞ്';
-            } else if (hour < 20) {
-                return 'വൈകുന്നേരം';
-            } else {
-                return 'രാത്രി';
-            }
-        },
-    });
-
-    return ml;
-
-})));
Index: ckend/node_modules/moment/locale/mn.js
===================================================================
--- backend/node_modules/moment/locale/mn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-//! moment.js locale configuration
-//! locale : Mongolian [mn]
-//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function translate(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 's':
-                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
-            case 'ss':
-                return number + (withoutSuffix ? ' секунд' : ' секундын');
-            case 'm':
-            case 'mm':
-                return number + (withoutSuffix ? ' минут' : ' минутын');
-            case 'h':
-            case 'hh':
-                return number + (withoutSuffix ? ' цаг' : ' цагийн');
-            case 'd':
-            case 'dd':
-                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
-            case 'M':
-            case 'MM':
-                return number + (withoutSuffix ? ' сар' : ' сарын');
-            case 'y':
-            case 'yy':
-                return number + (withoutSuffix ? ' жил' : ' жилийн');
-            default:
-                return number;
-        }
-    }
-
-    var mn = moment.defineLocale('mn', {
-        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
-            '_'
-        ),
-        monthsShort:
-            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
-        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
-        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY оны MMMMын D',
-            LLL: 'YYYY оны MMMMын D HH:mm',
-            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
-        },
-        meridiemParse: /ҮӨ|ҮХ/i,
-        isPM: function (input) {
-            return input === 'ҮХ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ҮӨ';
-            } else {
-                return 'ҮХ';
-            }
-        },
-        calendar: {
-            sameDay: '[Өнөөдөр] LT',
-            nextDay: '[Маргааш] LT',
-            nextWeek: '[Ирэх] dddd LT',
-            lastDay: '[Өчигдөр] LT',
-            lastWeek: '[Өнгөрсөн] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s дараа',
-            past: '%s өмнө',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + ' өдөр';
-                default:
-                    return number;
-            }
-        },
-    });
-
-    return mn;
-
-})));
Index: ckend/node_modules/moment/locale/mr.js
===================================================================
--- backend/node_modules/moment/locale/mr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,214 +1,0 @@
-//! moment.js locale configuration
-//! locale : Marathi [mr]
-//! author : Harshad Kale : https://github.com/kalehv
-//! author : Vivek Athalye : https://github.com/vnathalye
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
-        var output = '';
-        if (withoutSuffix) {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंद';
-                    break;
-                case 'ss':
-                    output = '%d सेकंद';
-                    break;
-                case 'm':
-                    output = 'एक मिनिट';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटे';
-                    break;
-                case 'h':
-                    output = 'एक तास';
-                    break;
-                case 'hh':
-                    output = '%d तास';
-                    break;
-                case 'd':
-                    output = 'एक दिवस';
-                    break;
-                case 'dd':
-                    output = '%d दिवस';
-                    break;
-                case 'M':
-                    output = 'एक महिना';
-                    break;
-                case 'MM':
-                    output = '%d महिने';
-                    break;
-                case 'y':
-                    output = 'एक वर्ष';
-                    break;
-                case 'yy':
-                    output = '%d वर्षे';
-                    break;
-            }
-        } else {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंदां';
-                    break;
-                case 'ss':
-                    output = '%d सेकंदां';
-                    break;
-                case 'm':
-                    output = 'एका मिनिटा';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटां';
-                    break;
-                case 'h':
-                    output = 'एका तासा';
-                    break;
-                case 'hh':
-                    output = '%d तासां';
-                    break;
-                case 'd':
-                    output = 'एका दिवसा';
-                    break;
-                case 'dd':
-                    output = '%d दिवसां';
-                    break;
-                case 'M':
-                    output = 'एका महिन्या';
-                    break;
-                case 'MM':
-                    output = '%d महिन्यां';
-                    break;
-                case 'y':
-                    output = 'एका वर्षा';
-                    break;
-                case 'yy':
-                    output = '%d वर्षां';
-                    break;
-            }
-        }
-        return output.replace(/%d/i, number);
-    }
-
-    var mr = moment.defineLocale('mr', {
-        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm वाजता',
-            LTS: 'A h:mm:ss वाजता',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm वाजता',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[उद्या] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[मागील] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमध्ये',
-            past: '%sपूर्वी',
-            s: relativeTimeMr,
-            ss: relativeTimeMr,
-            m: relativeTimeMr,
-            mm: relativeTimeMr,
-            h: relativeTimeMr,
-            hh: relativeTimeMr,
-            d: relativeTimeMr,
-            dd: relativeTimeMr,
-            M: relativeTimeMr,
-            MM: relativeTimeMr,
-            y: relativeTimeMr,
-            yy: relativeTimeMr,
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
-                return hour;
-            } else if (
-                meridiem === 'दुपारी' ||
-                meridiem === 'सायंकाळी' ||
-                meridiem === 'रात्री'
-            ) {
-                return hour >= 12 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour >= 0 && hour < 6) {
-                return 'पहाटे';
-            } else if (hour < 12) {
-                return 'सकाळी';
-            } else if (hour < 17) {
-                return 'दुपारी';
-            } else if (hour < 20) {
-                return 'सायंकाळी';
-            } else {
-                return 'रात्री';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return mr;
-
-})));
Index: ckend/node_modules/moment/locale/ms-my.js
===================================================================
--- backend/node_modules/moment/locale/ms-my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms-my]
-//! note : DEPRECATED, the correct one is [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var msMy = moment.defineLocale('ms-my', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return msMy;
-
-})));
Index: ckend/node_modules/moment/locale/ms.js
===================================================================
--- backend/node_modules/moment/locale/ms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,86 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ms = moment.defineLocale('ms', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return ms;
-
-})));
Index: ckend/node_modules/moment/locale/mt.js
===================================================================
--- backend/node_modules/moment/locale/mt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maltese (Malta) [mt]
-//! author : Alessandro Maruccia : https://github.com/alesma
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var mt = moment.defineLocale('mt', {
-        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
-        weekdays:
-            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
-                '_'
-            ),
-        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
-        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Illum fil-]LT',
-            nextDay: '[Għada fil-]LT',
-            nextWeek: 'dddd [fil-]LT',
-            lastDay: '[Il-bieraħ fil-]LT',
-            lastWeek: 'dddd [li għadda] [fil-]LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'f’ %s',
-            past: '%s ilu',
-            s: 'ftit sekondi',
-            ss: '%d sekondi',
-            m: 'minuta',
-            mm: '%d minuti',
-            h: 'siegħa',
-            hh: '%d siegħat',
-            d: 'ġurnata',
-            dd: '%d ġranet',
-            M: 'xahar',
-            MM: '%d xhur',
-            y: 'sena',
-            yy: '%d sni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return mt;
-
-})));
Index: ckend/node_modules/moment/locale/my.js
===================================================================
--- backend/node_modules/moment/locale/my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Burmese [my]
-//! author : Squar team, mysquar.com
-//! author : David Rossellat : https://github.com/gholadr
-//! author : Tin Aung Lin : https://github.com/thanyawzinmin
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '၁',
-            2: '၂',
-            3: '၃',
-            4: '၄',
-            5: '၅',
-            6: '၆',
-            7: '၇',
-            8: '၈',
-            9: '၉',
-            0: '၀',
-        },
-        numberMap = {
-            '၁': '1',
-            '၂': '2',
-            '၃': '3',
-            '၄': '4',
-            '၅': '5',
-            '၆': '6',
-            '၇': '7',
-            '၈': '8',
-            '၉': '9',
-            '၀': '0',
-        };
-
-    var my = moment.defineLocale('my', {
-        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
-            '_'
-        ),
-        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
-        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
-            '_'
-        ),
-        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ယနေ.] LT [မှာ]',
-            nextDay: '[မနက်ဖြန်] LT [မှာ]',
-            nextWeek: 'dddd LT [မှာ]',
-            lastDay: '[မနေ.က] LT [မှာ]',
-            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'လာမည့် %s မှာ',
-            past: 'လွန်ခဲ့သော %s က',
-            s: 'စက္ကန်.အနည်းငယ်',
-            ss: '%d စက္ကန့်',
-            m: 'တစ်မိနစ်',
-            mm: '%d မိနစ်',
-            h: 'တစ်နာရီ',
-            hh: '%d နာရီ',
-            d: 'တစ်ရက်',
-            dd: '%d ရက်',
-            M: 'တစ်လ',
-            MM: '%d လ',
-            y: 'တစ်နှစ်',
-            yy: '%d နှစ်',
-        },
-        preparse: function (string) {
-            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return my;
-
-})));
Index: ckend/node_modules/moment/locale/nb.js
===================================================================
--- backend/node_modules/moment/locale/nb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//! moment.js locale configuration
-//! locale : Norwegian Bokmål [nb]
-//! authors : Espen Hovlandsdal : https://github.com/rexxars
-//!           Sigurd Gartmann : https://github.com/sigurdga
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var nb = moment.defineLocale('nb', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[forrige] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'noen sekunder',
-            ss: '%d sekunder',
-            m: 'ett minutt',
-            mm: '%d minutter',
-            h: 'én time',
-            hh: '%d timer',
-            d: 'én dag',
-            dd: '%d dager',
-            w: 'én uke',
-            ww: '%d uker',
-            M: 'én måned',
-            MM: '%d måneder',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return nb;
-
-})));
Index: ckend/node_modules/moment/locale/ne.js
===================================================================
--- backend/node_modules/moment/locale/ne.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,132 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nepalese [ne]
-//! author : suvash : https://github.com/suvash
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    var ne = moment.defineLocale('ne', {
-        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
-            '_'
-        ),
-        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
-        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'Aको h:mm बजे',
-            LTS: 'Aको h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, Aको h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राति') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'बिहान') {
-                return hour;
-            } else if (meridiem === 'दिउँसो') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'साँझ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 3) {
-                return 'राति';
-            } else if (hour < 12) {
-                return 'बिहान';
-            } else if (hour < 16) {
-                return 'दिउँसो';
-            } else if (hour < 20) {
-                return 'साँझ';
-            } else {
-                return 'राति';
-            }
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[भोलि] LT',
-            nextWeek: '[आउँदो] dddd[,] LT',
-            lastDay: '[हिजो] LT',
-            lastWeek: '[गएको] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमा',
-            past: '%s अगाडि',
-            s: 'केही क्षण',
-            ss: '%d सेकेण्ड',
-            m: 'एक मिनेट',
-            mm: '%d मिनेट',
-            h: 'एक घण्टा',
-            hh: '%d घण्टा',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महिना',
-            MM: '%d महिना',
-            y: 'एक बर्ष',
-            yy: '%d बर्ष',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return ne;
-
-})));
Index: ckend/node_modules/moment/locale/nl-be.js
===================================================================
--- backend/node_modules/moment/locale/nl-be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch (Belgium) [nl-be]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    var nlBe = moment.defineLocale('nl-be', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots[m.month()];
-            } else {
-                return monthsShortWithDots[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return nlBe;
-
-})));
Index: ckend/node_modules/moment/locale/nl.js
===================================================================
--- backend/node_modules/moment/locale/nl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,115 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch [nl]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    var nl = moment.defineLocale('nl', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots[m.month()];
-            } else {
-                return monthsShortWithDots[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            w: 'één week',
-            ww: '%d weken',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return nl;
-
-})));
Index: ckend/node_modules/moment/locale/nn.js
===================================================================
--- backend/node_modules/moment/locale/nn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nynorsk [nn]
-//! authors : https://github.com/mechuwind
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var nn = moment.defineLocale('nn', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
-        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
-        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[I dag klokka] LT',
-            nextDay: '[I morgon klokka] LT',
-            nextWeek: 'dddd [klokka] LT',
-            lastDay: '[I går klokka] LT',
-            lastWeek: '[Føregåande] dddd [klokka] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s sidan',
-            s: 'nokre sekund',
-            ss: '%d sekund',
-            m: 'eit minutt',
-            mm: '%d minutt',
-            h: 'ein time',
-            hh: '%d timar',
-            d: 'ein dag',
-            dd: '%d dagar',
-            w: 'ei veke',
-            ww: '%d veker',
-            M: 'ein månad',
-            MM: '%d månader',
-            y: 'eit år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return nn;
-
-})));
Index: ckend/node_modules/moment/locale/oc-lnc.js
===================================================================
--- backend/node_modules/moment/locale/oc-lnc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,96 +1,0 @@
-//! moment.js locale configuration
-//! locale : Occitan, lengadocian dialecte [oc-lnc]
-//! author : Quentin PAGÈS : https://github.com/Quenty31
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ocLnc = moment.defineLocale('oc-lnc', {
-        months: {
-            standalone:
-                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
-                    '_'
-                ),
-            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
-            '_'
-        ),
-        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: '[uèi a] LT',
-            nextDay: '[deman a] LT',
-            nextWeek: 'dddd [a] LT',
-            lastDay: '[ièr a] LT',
-            lastWeek: 'dddd [passat a] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'unas segondas',
-            ss: '%d segondas',
-            m: 'una minuta',
-            mm: '%d minutas',
-            h: 'una ora',
-            hh: '%d oras',
-            d: 'un jorn',
-            dd: '%d jorns',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4,
-        },
-    });
-
-    return ocLnc;
-
-})));
Index: ckend/node_modules/moment/locale/pa-in.js
===================================================================
--- backend/node_modules/moment/locale/pa-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,133 +1,0 @@
-//! moment.js locale configuration
-//! locale : Punjabi (India) [pa-in]
-//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '੧',
-            2: '੨',
-            3: '੩',
-            4: '੪',
-            5: '੫',
-            6: '੬',
-            7: '੭',
-            8: '੮',
-            9: '੯',
-            0: '੦',
-        },
-        numberMap = {
-            '੧': '1',
-            '੨': '2',
-            '੩': '3',
-            '੪': '4',
-            '੫': '5',
-            '੬': '6',
-            '੭': '7',
-            '੮': '8',
-            '੯': '9',
-            '੦': '0',
-        };
-
-    var paIn = moment.defineLocale('pa-in', {
-        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
-        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-                '_'
-            ),
-        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm ਵਜੇ',
-            LTS: 'A h:mm:ss ਵਜੇ',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
-        },
-        calendar: {
-            sameDay: '[ਅਜ] LT',
-            nextDay: '[ਕਲ] LT',
-            nextWeek: '[ਅਗਲਾ] dddd, LT',
-            lastDay: '[ਕਲ] LT',
-            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ਵਿੱਚ',
-            past: '%s ਪਿਛਲੇ',
-            s: 'ਕੁਝ ਸਕਿੰਟ',
-            ss: '%d ਸਕਿੰਟ',
-            m: 'ਇਕ ਮਿੰਟ',
-            mm: '%d ਮਿੰਟ',
-            h: 'ਇੱਕ ਘੰਟਾ',
-            hh: '%d ਘੰਟੇ',
-            d: 'ਇੱਕ ਦਿਨ',
-            dd: '%d ਦਿਨ',
-            M: 'ਇੱਕ ਮਹੀਨਾ',
-            MM: '%d ਮਹੀਨੇ',
-            y: 'ਇੱਕ ਸਾਲ',
-            yy: '%d ਸਾਲ',
-        },
-        preparse: function (string) {
-            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ਰਾਤ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ਸਵੇਰ') {
-                return hour;
-            } else if (meridiem === 'ਦੁਪਹਿਰ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ਸ਼ਾਮ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ਰਾਤ';
-            } else if (hour < 10) {
-                return 'ਸਵੇਰ';
-            } else if (hour < 17) {
-                return 'ਦੁਪਹਿਰ';
-            } else if (hour < 20) {
-                return 'ਸ਼ਾਮ';
-            } else {
-                return 'ਰਾਤ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return paIn;
-
-})));
Index: ckend/node_modules/moment/locale/pl.js
===================================================================
--- backend/node_modules/moment/locale/pl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,151 +1,0 @@
-//! moment.js locale configuration
-//! locale : Polish [pl]
-//! author : Rafal Hirsz : https://github.com/evoL
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var monthsNominative =
-            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
-                '_'
-            ),
-        monthsSubjective =
-            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
-                '_'
-            ),
-        monthsParse = [
-            /^sty/i,
-            /^lut/i,
-            /^mar/i,
-            /^kwi/i,
-            /^maj/i,
-            /^cze/i,
-            /^lip/i,
-            /^sie/i,
-            /^wrz/i,
-            /^paź/i,
-            /^lis/i,
-            /^gru/i,
-        ];
-    function plural(n) {
-        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
-    }
-    function translate(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                return result + (plural(number) ? 'sekundy' : 'sekund');
-            case 'm':
-                return withoutSuffix ? 'minuta' : 'minutę';
-            case 'mm':
-                return result + (plural(number) ? 'minuty' : 'minut');
-            case 'h':
-                return withoutSuffix ? 'godzina' : 'godzinę';
-            case 'hh':
-                return result + (plural(number) ? 'godziny' : 'godzin');
-            case 'ww':
-                return result + (plural(number) ? 'tygodnie' : 'tygodni');
-            case 'MM':
-                return result + (plural(number) ? 'miesiące' : 'miesięcy');
-            case 'yy':
-                return result + (plural(number) ? 'lata' : 'lat');
-        }
-    }
-
-    var pl = moment.defineLocale('pl', {
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return monthsNominative;
-            } else if (/D MMMM/.test(format)) {
-                return monthsSubjective[momentToFormat.month()];
-            } else {
-                return monthsNominative[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-        weekdays:
-            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
-        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
-        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Dziś o] LT',
-            nextDay: '[Jutro o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W niedzielę o] LT';
-
-                    case 2:
-                        return '[We wtorek o] LT';
-
-                    case 3:
-                        return '[W środę o] LT';
-
-                    case 6:
-                        return '[W sobotę o] LT';
-
-                    default:
-                        return '[W] dddd [o] LT';
-                }
-            },
-            lastDay: '[Wczoraj o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W zeszłą niedzielę o] LT';
-                    case 3:
-                        return '[W zeszłą środę o] LT';
-                    case 6:
-                        return '[W zeszłą sobotę o] LT';
-                    default:
-                        return '[W zeszły] dddd [o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: '%s temu',
-            s: 'kilka sekund',
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: '1 dzień',
-            dd: '%d dni',
-            w: 'tydzień',
-            ww: translate,
-            M: 'miesiąc',
-            MM: translate,
-            y: 'rok',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return pl;
-
-})));
Index: ckend/node_modules/moment/locale/pt-br.js
===================================================================
--- backend/node_modules/moment/locale/pt-br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese (Brazil) [pt-br]
-//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ptBr = moment.defineLocale('pt-br', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
-        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'poucos segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        invalidDate: 'Data inválida',
-    });
-
-    return ptBr;
-
-})));
Index: ckend/node_modules/moment/locale/pt.js
===================================================================
--- backend/node_modules/moment/locale/pt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese [pt]
-//! author : Jefferson : https://github.com/jalex79
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var pt = moment.defineLocale('pt', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
-        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            w: 'uma semana',
-            ww: '%d semanas',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return pt;
-
-})));
Index: ckend/node_modules/moment/locale/ro.js
===================================================================
--- backend/node_modules/moment/locale/ro.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Romanian [ro]
-//! author : Vlad Gurdiga : https://github.com/gurdiga
-//! author : Valentin Agachi : https://github.com/avaly
-//! author : Emanuel Cepoi : https://github.com/cepem
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-                ss: 'secunde',
-                mm: 'minute',
-                hh: 'ore',
-                dd: 'zile',
-                ww: 'săptămâni',
-                MM: 'luni',
-                yy: 'ani',
-            },
-            separator = ' ';
-        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
-            separator = ' de ';
-        }
-        return number + separator + format[key];
-    }
-
-    var ro = moment.defineLocale('ro', {
-        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
-            '_'
-        ),
-        monthsShort:
-            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
-        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
-        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[azi la] LT',
-            nextDay: '[mâine la] LT',
-            nextWeek: 'dddd [la] LT',
-            lastDay: '[ieri la] LT',
-            lastWeek: '[fosta] dddd [la] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'peste %s',
-            past: '%s în urmă',
-            s: 'câteva secunde',
-            ss: relativeTimeWithPlural,
-            m: 'un minut',
-            mm: relativeTimeWithPlural,
-            h: 'o oră',
-            hh: relativeTimeWithPlural,
-            d: 'o zi',
-            dd: relativeTimeWithPlural,
-            w: 'o săptămână',
-            ww: relativeTimeWithPlural,
-            M: 'o lună',
-            MM: relativeTimeWithPlural,
-            y: 'un an',
-            yy: relativeTimeWithPlural,
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return ro;
-
-})));
Index: ckend/node_modules/moment/locale/ru.js
===================================================================
--- backend/node_modules/moment/locale/ru.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,224 +1,0 @@
-//! moment.js locale configuration
-//! locale : Russian [ru]
-//! author : Viktorminator : https://github.com/Viktorminator
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Коренберг Марк : https://github.com/socketpair
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function plural(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
-            hh: 'час_часа_часов',
-            dd: 'день_дня_дней',
-            ww: 'неделя_недели_недель',
-            MM: 'месяц_месяца_месяцев',
-            yy: 'год_года_лет',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'минута' : 'минуту';
-        } else {
-            return number + ' ' + plural(format[key], +number);
-        }
-    }
-    var monthsParse = [
-        /^янв/i,
-        /^фев/i,
-        /^мар/i,
-        /^апр/i,
-        /^ма[йя]/i,
-        /^июн/i,
-        /^июл/i,
-        /^авг/i,
-        /^сен/i,
-        /^окт/i,
-        /^ноя/i,
-        /^дек/i,
-    ];
-
-    // http://new.gramota.ru/spravka/rules/139-prop : § 103
-    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-    var ru = moment.defineLocale('ru', {
-        months: {
-            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
-                '_'
-            ),
-            standalone:
-                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-                    '_'
-                ),
-        },
-        monthsShort: {
-            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
-            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
-                '_'
-            ),
-            standalone:
-                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
-                    '_'
-                ),
-        },
-        weekdays: {
-            standalone:
-                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
-                    '_'
-                ),
-            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
-                '_'
-            ),
-            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
-        },
-        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
-        monthsRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // копия предыдущего
-        monthsShortRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // полные названия с падежами
-        monthsStrictRegex:
-            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
-
-        // Выражение, которое соответствует только сокращённым формам
-        monthsShortStrictRegex:
-            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., H:mm',
-            LLLL: 'dddd, D MMMM YYYY г., H:mm',
-        },
-        calendar: {
-            sameDay: '[Сегодня, в] LT',
-            nextDay: '[Завтра, в] LT',
-            lastDay: '[Вчера, в] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В следующее] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В следующий] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В следующую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            lastWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В прошлое] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В прошлый] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В прошлую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'через %s',
-            past: '%s назад',
-            s: 'несколько секунд',
-            ss: relativeTimeWithPlural,
-            m: relativeTimeWithPlural,
-            mm: relativeTimeWithPlural,
-            h: 'час',
-            hh: relativeTimeWithPlural,
-            d: 'день',
-            dd: relativeTimeWithPlural,
-            w: 'неделя',
-            ww: relativeTimeWithPlural,
-            M: 'месяц',
-            MM: relativeTimeWithPlural,
-            y: 'год',
-            yy: relativeTimeWithPlural,
-        },
-        meridiemParse: /ночи|утра|дня|вечера/i,
-        isPM: function (input) {
-            return /^(дня|вечера)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночи';
-            } else if (hour < 12) {
-                return 'утра';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечера';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                case 'w':
-                case 'W':
-                    return number + '-я';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return ru;
-
-})));
Index: ckend/node_modules/moment/locale/sd.js
===================================================================
--- backend/node_modules/moment/locale/sd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sindhi [sd]
-//! author : Narain Sagar : https://github.com/narainsagar
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = [
-            'جنوري',
-            'فيبروري',
-            'مارچ',
-            'اپريل',
-            'مئي',
-            'جون',
-            'جولاءِ',
-            'آگسٽ',
-            'سيپٽمبر',
-            'آڪٽوبر',
-            'نومبر',
-            'ڊسمبر',
-        ],
-        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
-
-    var sd = moment.defineLocale('sd', {
-        months: months,
-        monthsShort: months,
-        weekdays: days,
-        weekdaysShort: days,
-        weekdaysMin: days,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[اڄ] LT',
-            nextDay: '[سڀاڻي] LT',
-            nextWeek: 'dddd [اڳين هفتي تي] LT',
-            lastDay: '[ڪالهه] LT',
-            lastWeek: '[گزريل هفتي] dddd [تي] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s پوء',
-            past: '%s اڳ',
-            s: 'چند سيڪنڊ',
-            ss: '%d سيڪنڊ',
-            m: 'هڪ منٽ',
-            mm: '%d منٽ',
-            h: 'هڪ ڪلاڪ',
-            hh: '%d ڪلاڪ',
-            d: 'هڪ ڏينهن',
-            dd: '%d ڏينهن',
-            M: 'هڪ مهينو',
-            MM: '%d مهينا',
-            y: 'هڪ سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return sd;
-
-})));
Index: ckend/node_modules/moment/locale/se.js
===================================================================
--- backend/node_modules/moment/locale/se.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Sami [se]
-//! authors : Bård Rolstad Henriksen : https://github.com/karamell
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var se = moment.defineLocale('se', {
-        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
-            '_'
-        ),
-        monthsShort:
-            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
-        weekdays:
-            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
-                '_'
-            ),
-        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
-        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'MMMM D. [b.] YYYY',
-            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
-            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[otne ti] LT',
-            nextDay: '[ihttin ti] LT',
-            nextWeek: 'dddd [ti] LT',
-            lastDay: '[ikte ti] LT',
-            lastWeek: '[ovddit] dddd [ti] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s geažes',
-            past: 'maŋit %s',
-            s: 'moadde sekunddat',
-            ss: '%d sekunddat',
-            m: 'okta minuhta',
-            mm: '%d minuhtat',
-            h: 'okta diimmu',
-            hh: '%d diimmut',
-            d: 'okta beaivi',
-            dd: '%d beaivvit',
-            M: 'okta mánnu',
-            MM: '%d mánut',
-            y: 'okta jahki',
-            yy: '%d jagit',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return se;
-
-})));
Index: ckend/node_modules/moment/locale/si.js
===================================================================
--- backend/node_modules/moment/locale/si.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,80 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sinhalese [si]
-//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    /*jshint -W100*/
-    var si = moment.defineLocale('si', {
-        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
-            '_'
-        ),
-        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
-            '_'
-        ),
-        weekdays:
-            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
-                '_'
-            ),
-        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
-        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'a h:mm',
-            LTS: 'a h:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY MMMM D',
-            LLL: 'YYYY MMMM D, a h:mm',
-            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
-        },
-        calendar: {
-            sameDay: '[අද] LT[ට]',
-            nextDay: '[හෙට] LT[ට]',
-            nextWeek: 'dddd LT[ට]',
-            lastDay: '[ඊයේ] LT[ට]',
-            lastWeek: '[පසුගිය] dddd LT[ට]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sකින්',
-            past: '%sකට පෙර',
-            s: 'තත්පර කිහිපය',
-            ss: 'තත්පර %d',
-            m: 'මිනිත්තුව',
-            mm: 'මිනිත්තු %d',
-            h: 'පැය',
-            hh: 'පැය %d',
-            d: 'දිනය',
-            dd: 'දින %d',
-            M: 'මාසය',
-            MM: 'මාස %d',
-            y: 'වසර',
-            yy: 'වසර %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
-        ordinal: function (number) {
-            return number + ' වැනි';
-        },
-        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
-        isPM: function (input) {
-            return input === 'ප.ව.' || input === 'පස් වරු';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'ප.ව.' : 'පස් වරු';
-            } else {
-                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
-            }
-        },
-    });
-
-    return si;
-
-})));
Index: ckend/node_modules/moment/locale/sk.js
===================================================================
--- backend/node_modules/moment/locale/sk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovak [sk]
-//! author : Martin Minka : https://github.com/k2s
-//! based on work of petrbela : https://github.com/petrbela
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months =
-            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
-                '_'
-            ),
-        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-    function plural(n) {
-        return n > 1 && n < 5;
-    }
-    function translate(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'minúty' : 'minút');
-                } else {
-                    return result + 'minútami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'hodiny' : 'hodín');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'deň' : 'dňom';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'dni' : 'dní');
-                } else {
-                    return result + 'dňami';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
-                } else {
-                    return result + 'mesiacmi';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokom';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural(number) ? 'roky' : 'rokov');
-                } else {
-                    return result + 'rokmi';
-                }
-        }
-    }
-
-    var sk = moment.defineLocale('sk', {
-        months: months,
-        monthsShort: monthsShort,
-        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
-        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
-        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[dnes o] LT',
-            nextDay: '[zajtra o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [o] LT';
-                    case 3:
-                        return '[v stredu o] LT';
-                    case 4:
-                        return '[vo štvrtok o] LT';
-                    case 5:
-                        return '[v piatok o] LT';
-                    case 6:
-                        return '[v sobotu o] LT';
-                }
-            },
-            lastDay: '[včera o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulú nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[minulý] dddd [o] LT';
-                    case 3:
-                        return '[minulú stredu o] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [o] LT';
-                    case 6:
-                        return '[minulú sobotu o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pred %s',
-            s: translate,
-            ss: translate,
-            m: translate,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: translate,
-            dd: translate,
-            M: translate,
-            MM: translate,
-            y: translate,
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return sk;
-
-})));
Index: ckend/node_modules/moment/locale/sl.js
===================================================================
--- backend/node_modules/moment/locale/sl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,182 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovenian [sl]
-//! author : Robert Sedovšek : https://github.com/sedovsek
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nekaj sekund'
-                    : 'nekaj sekundami';
-            case 'ss':
-                if (number === 1) {
-                    result += withoutSuffix ? 'sekundo' : 'sekundi';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
-                } else {
-                    result += 'sekund';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'ena minuta' : 'eno minuto';
-            case 'mm':
-                if (number === 1) {
-                    result += withoutSuffix ? 'minuta' : 'minuto';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'ena ura' : 'eno uro';
-            case 'hh':
-                if (number === 1) {
-                    result += withoutSuffix ? 'ura' : 'uro';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
-                }
-                return result;
-            case 'd':
-                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
-            case 'dd':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
-                } else {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
-                }
-                return result;
-            case 'M':
-                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
-            case 'MM':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
-                } else {
-                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
-                }
-                return result;
-            case 'y':
-                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
-            case 'yy':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
-                } else {
-                    result += withoutSuffix || isFuture ? 'let' : 'leti';
-                }
-                return result;
-        }
-    }
-
-    var sl = moment.defineLocale('sl', {
-        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
-        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
-        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD. MM. YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danes ob] LT',
-            nextDay: '[jutri ob] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[v] [sredo] [ob] LT';
-                    case 6:
-                        return '[v] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[v] dddd [ob] LT';
-                }
-            },
-            lastDay: '[včeraj ob] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prejšnjo] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[prejšnjo] [sredo] [ob] LT';
-                    case 6:
-                        return '[prejšnjo] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prejšnji] dddd [ob] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'čez %s',
-            past: 'pred %s',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return sl;
-
-})));
Index: ckend/node_modules/moment/locale/sq.js
===================================================================
--- backend/node_modules/moment/locale/sq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Albanian [sq]
-//! author : Flakërim Ismani : https://github.com/flakerimi
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Oerd Cukalla : https://github.com/oerd
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var sq = moment.defineLocale('sq', {
-        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
-        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
-            '_'
-        ),
-        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
-        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /PD|MD/,
-        isPM: function (input) {
-            return input.charAt(0) === 'M';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            return hours < 12 ? 'PD' : 'MD';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Sot në] LT',
-            nextDay: '[Nesër në] LT',
-            nextWeek: 'dddd [në] LT',
-            lastDay: '[Dje në] LT',
-            lastWeek: 'dddd [e kaluar në] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'në %s',
-            past: '%s më parë',
-            s: 'disa sekonda',
-            ss: '%d sekonda',
-            m: 'një minutë',
-            mm: '%d minuta',
-            h: 'një orë',
-            hh: '%d orë',
-            d: 'një ditë',
-            dd: '%d ditë',
-            M: 'një muaj',
-            MM: '%d muaj',
-            y: 'një vit',
-            yy: '%d vite',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return sq;
-
-})));
Index: ckend/node_modules/moment/locale/sr-cyrl.js
===================================================================
--- backend/node_modules/moment/locale/sr-cyrl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,138 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian Cyrillic [sr-cyrl]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var translator = {
-        words: {
-            //Different grammatical cases
-            ss: ['секунда', 'секунде', 'секунди'],
-            m: ['један минут', 'једног минута'],
-            mm: ['минут', 'минута', 'минута'],
-            h: ['један сат', 'једног сата'],
-            hh: ['сат', 'сата', 'сати'],
-            d: ['један дан', 'једног дана'],
-            dd: ['дан', 'дана', 'дана'],
-            M: ['један месец', 'једног месеца'],
-            MM: ['месец', 'месеца', 'месеци'],
-            y: ['једну годину', 'једне године'],
-            yy: ['годину', 'године', 'година'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'једна година';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'годину') {
-                return number + ' година';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    var srCyrl = moment.defineLocale('sr-cyrl', {
-        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
-            '_'
-        ),
-        monthsShort:
-            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
-        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
-        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[данас у] LT',
-            nextDay: '[сутра у] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[у] [недељу] [у] LT';
-                    case 3:
-                        return '[у] [среду] [у] LT';
-                    case 6:
-                        return '[у] [суботу] [у] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[у] dddd [у] LT';
-                }
-            },
-            lastDay: '[јуче у] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[прошле] [недеље] [у] LT',
-                    '[прошлог] [понедељка] [у] LT',
-                    '[прошлог] [уторка] [у] LT',
-                    '[прошле] [среде] [у] LT',
-                    '[прошлог] [четвртка] [у] LT',
-                    '[прошлог] [петка] [у] LT',
-                    '[прошле] [суботе] [у] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пре %s',
-            s: 'неколико секунди',
-            ss: translator.translate,
-            m: translator.translate,
-            mm: translator.translate,
-            h: translator.translate,
-            hh: translator.translate,
-            d: translator.translate,
-            dd: translator.translate,
-            M: translator.translate,
-            MM: translator.translate,
-            y: translator.translate,
-            yy: translator.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    return srCyrl;
-
-})));
Index: ckend/node_modules/moment/locale/sr.js
===================================================================
--- backend/node_modules/moment/locale/sr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian [sr]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var translator = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekunda', 'sekunde', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            d: ['jedan dan', 'jednog dana'],
-            dd: ['dan', 'dana', 'dana'],
-            M: ['jedan mesec', 'jednog meseca'],
-            MM: ['mesec', 'meseca', 'meseci'],
-            y: ['jednu godinu', 'jedne godine'],
-            yy: ['godinu', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'jedna godina';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'godinu') {
-                return number + ' godina';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    var sr = moment.defineLocale('sr', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedelju] [u] LT';
-                    case 3:
-                        return '[u] [sredu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedelje] [u] LT',
-                    '[prošlog] [ponedeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pre %s',
-            s: 'nekoliko sekundi',
-            ss: translator.translate,
-            m: translator.translate,
-            mm: translator.translate,
-            h: translator.translate,
-            hh: translator.translate,
-            d: translator.translate,
-            dd: translator.translate,
-            M: translator.translate,
-            MM: translator.translate,
-            y: translator.translate,
-            yy: translator.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return sr;
-
-})));
Index: ckend/node_modules/moment/locale/ss.js
===================================================================
--- backend/node_modules/moment/locale/ss.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : siSwati [ss]
-//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ss = moment.defineLocale('ss', {
-        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
-            '_'
-        ),
-        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
-        weekdays:
-            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
-                '_'
-            ),
-        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
-        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Namuhla nga] LT',
-            nextDay: '[Kusasa nga] LT',
-            nextWeek: 'dddd [nga] LT',
-            lastDay: '[Itolo nga] LT',
-            lastWeek: 'dddd [leliphelile] [nga] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'nga %s',
-            past: 'wenteka nga %s',
-            s: 'emizuzwana lomcane',
-            ss: '%d mzuzwana',
-            m: 'umzuzu',
-            mm: '%d emizuzu',
-            h: 'lihora',
-            hh: '%d emahora',
-            d: 'lilanga',
-            dd: '%d emalanga',
-            M: 'inyanga',
-            MM: '%d tinyanga',
-            y: 'umnyaka',
-            yy: '%d iminyaka',
-        },
-        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'ekuseni';
-            } else if (hours < 15) {
-                return 'emini';
-            } else if (hours < 19) {
-                return 'entsambama';
-            } else {
-                return 'ebusuku';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ekuseni') {
-                return hour;
-            } else if (meridiem === 'emini') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
-                if (hour === 0) {
-                    return 0;
-                }
-                return hour + 12;
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: '%d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return ss;
-
-})));
Index: ckend/node_modules/moment/locale/sv.js
===================================================================
--- backend/node_modules/moment/locale/sv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swedish [sv]
-//! author : Jens Alm : https://github.com/ulmus
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var sv = moment.defineLocale('sv', {
-        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
-        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
-        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Idag] LT',
-            nextDay: '[Imorgon] LT',
-            lastDay: '[Igår] LT',
-            nextWeek: '[På] dddd LT',
-            lastWeek: '[I] dddd[s] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: 'för %s sedan',
-            s: 'några sekunder',
-            ss: '%d sekunder',
-            m: 'en minut',
-            mm: '%d minuter',
-            h: 'en timme',
-            hh: '%d timmar',
-            d: 'en dag',
-            dd: '%d dagar',
-            M: 'en månad',
-            MM: '%d månader',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? ':e'
-                        : b === 1
-                          ? ':a'
-                          : b === 2
-                            ? ':a'
-                            : b === 3
-                              ? ':e'
-                              : ':e';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return sv;
-
-})));
Index: ckend/node_modules/moment/locale/sw.js
===================================================================
--- backend/node_modules/moment/locale/sw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swahili [sw]
-//! author : Fahad Kassim : https://github.com/fadsel
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var sw = moment.defineLocale('sw', {
-        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
-        weekdays:
-            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
-                '_'
-            ),
-        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
-        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'hh:mm A',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[leo saa] LT',
-            nextDay: '[kesho saa] LT',
-            nextWeek: '[wiki ijayo] dddd [saat] LT',
-            lastDay: '[jana] LT',
-            lastWeek: '[wiki iliyopita] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s baadaye',
-            past: 'tokea %s',
-            s: 'hivi punde',
-            ss: 'sekunde %d',
-            m: 'dakika moja',
-            mm: 'dakika %d',
-            h: 'saa limoja',
-            hh: 'masaa %d',
-            d: 'siku moja',
-            dd: 'siku %d',
-            M: 'mwezi mmoja',
-            MM: 'miezi %d',
-            y: 'mwaka mmoja',
-            yy: 'miaka %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return sw;
-
-})));
Index: ckend/node_modules/moment/locale/ta.js
===================================================================
--- backend/node_modules/moment/locale/ta.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,142 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tamil [ta]
-//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '௧',
-            2: '௨',
-            3: '௩',
-            4: '௪',
-            5: '௫',
-            6: '௬',
-            7: '௭',
-            8: '௮',
-            9: '௯',
-            0: '௦',
-        },
-        numberMap = {
-            '௧': '1',
-            '௨': '2',
-            '௩': '3',
-            '௪': '4',
-            '௫': '5',
-            '௬': '6',
-            '௭': '7',
-            '௮': '8',
-            '௯': '9',
-            '௦': '0',
-        };
-
-    var ta = moment.defineLocale('ta', {
-        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-            '_'
-        ),
-        monthsShort:
-            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-                '_'
-            ),
-        weekdays:
-            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
-                '_'
-            ),
-        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
-            '_'
-        ),
-        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, HH:mm',
-            LLLL: 'dddd, D MMMM YYYY, HH:mm',
-        },
-        calendar: {
-            sameDay: '[இன்று] LT',
-            nextDay: '[நாளை] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[நேற்று] LT',
-            lastWeek: '[கடந்த வாரம்] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s இல்',
-            past: '%s முன்',
-            s: 'ஒரு சில விநாடிகள்',
-            ss: '%d விநாடிகள்',
-            m: 'ஒரு நிமிடம்',
-            mm: '%d நிமிடங்கள்',
-            h: 'ஒரு மணி நேரம்',
-            hh: '%d மணி நேரம்',
-            d: 'ஒரு நாள்',
-            dd: '%d நாட்கள்',
-            M: 'ஒரு மாதம்',
-            MM: '%d மாதங்கள்',
-            y: 'ஒரு வருடம்',
-            yy: '%d ஆண்டுகள்',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}வது/,
-        ordinal: function (number) {
-            return number + 'வது';
-        },
-        preparse: function (string) {
-            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
-                return numberMap[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap[match];
-            });
-        },
-        // refer http://ta.wikipedia.org/s/1er1
-        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 2) {
-                return ' யாமம்';
-            } else if (hour < 6) {
-                return ' வைகறை'; // வைகறை
-            } else if (hour < 10) {
-                return ' காலை'; // காலை
-            } else if (hour < 14) {
-                return ' நண்பகல்'; // நண்பகல்
-            } else if (hour < 18) {
-                return ' எற்பாடு'; // எற்பாடு
-            } else if (hour < 22) {
-                return ' மாலை'; // மாலை
-            } else {
-                return ' யாமம்';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'யாமம்') {
-                return hour < 2 ? hour : hour + 12;
-            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
-                return hour;
-            } else if (meridiem === 'நண்பகல்') {
-                return hour >= 10 ? hour : hour + 12;
-            } else {
-                return hour + 12;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return ta;
-
-})));
Index: ckend/node_modules/moment/locale/te.js
===================================================================
--- backend/node_modules/moment/locale/te.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,99 +1,0 @@
-//! moment.js locale configuration
-//! locale : Telugu [te]
-//! author : Krishna Chaitanya Thota : https://github.com/kcthota
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var te = moment.defineLocale('te', {
-        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
-            '_'
-        ),
-        monthsShort:
-            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
-                '_'
-            ),
-        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
-        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[నేడు] LT',
-            nextDay: '[రేపు] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[నిన్న] LT',
-            lastWeek: '[గత] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s లో',
-            past: '%s క్రితం',
-            s: 'కొన్ని క్షణాలు',
-            ss: '%d సెకన్లు',
-            m: 'ఒక నిమిషం',
-            mm: '%d నిమిషాలు',
-            h: 'ఒక గంట',
-            hh: '%d గంటలు',
-            d: 'ఒక రోజు',
-            dd: '%d రోజులు',
-            M: 'ఒక నెల',
-            MM: '%d నెలలు',
-            y: 'ఒక సంవత్సరం',
-            yy: '%d సంవత్సరాలు',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}వ/,
-        ordinal: '%dవ',
-        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'రాత్రి') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ఉదయం') {
-                return hour;
-            } else if (meridiem === 'మధ్యాహ్నం') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'సాయంత్రం') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'రాత్రి';
-            } else if (hour < 10) {
-                return 'ఉదయం';
-            } else if (hour < 17) {
-                return 'మధ్యాహ్నం';
-            } else if (hour < 20) {
-                return 'సాయంత్రం';
-            } else {
-                return 'రాత్రి';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    return te;
-
-})));
Index: ckend/node_modules/moment/locale/tet.js
===================================================================
--- backend/node_modules/moment/locale/tet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tetun Dili (East Timor) [tet]
-//! author : Joshua Brooks : https://github.com/joshbrooks
-//! author : Onorio De J. Afonso : https://github.com/marobo
-//! author : Sonia Simoes : https://github.com/soniasimoes
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var tet = moment.defineLocale('tet', {
-        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
-        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
-        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
-        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Ohin iha] LT',
-            nextDay: '[Aban iha] LT',
-            nextWeek: 'dddd [iha] LT',
-            lastDay: '[Horiseik iha] LT',
-            lastWeek: 'dddd [semana kotuk] [iha] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'iha %s',
-            past: '%s liuba',
-            s: 'segundu balun',
-            ss: 'segundu %d',
-            m: 'minutu ida',
-            mm: 'minutu %d',
-            h: 'oras ida',
-            hh: 'oras %d',
-            d: 'loron ida',
-            dd: 'loron %d',
-            M: 'fulan ida',
-            MM: 'fulan %d',
-            y: 'tinan ida',
-            yy: 'tinan %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return tet;
-
-})));
Index: ckend/node_modules/moment/locale/tg.js
===================================================================
--- backend/node_modules/moment/locale/tg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,128 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tajik [tg]
-//! author : Orif N. Jr. : https://github.com/orif-jr
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        0: '-ум',
-        1: '-ум',
-        2: '-юм',
-        3: '-юм',
-        4: '-ум',
-        5: '-ум',
-        6: '-ум',
-        7: '-ум',
-        8: '-ум',
-        9: '-ум',
-        10: '-ум',
-        12: '-ум',
-        13: '-ум',
-        20: '-ум',
-        30: '-юм',
-        40: '-ум',
-        50: '-ум',
-        60: '-ум',
-        70: '-ум',
-        80: '-ум',
-        90: '-ум',
-        100: '-ум',
-    };
-
-    var tg = moment.defineLocale('tg', {
-        months: {
-            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
-                '_'
-            ),
-            standalone:
-                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
-            '_'
-        ),
-        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
-        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Имрӯз соати] LT',
-            nextDay: '[Фардо соати] LT',
-            lastDay: '[Дирӯз соати] LT',
-            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
-            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'баъди %s',
-            past: '%s пеш',
-            s: 'якчанд сония',
-            m: 'як дақиқа',
-            mm: '%d дақиқа',
-            h: 'як соат',
-            hh: '%d соат',
-            d: 'як рӯз',
-            dd: '%d рӯз',
-            M: 'як моҳ',
-            MM: '%d моҳ',
-            y: 'як сол',
-            yy: '%d сол',
-        },
-        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'шаб') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'субҳ') {
-                return hour;
-            } else if (meridiem === 'рӯз') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'бегоҳ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'шаб';
-            } else if (hour < 11) {
-                return 'субҳ';
-            } else if (hour < 16) {
-                return 'рӯз';
-            } else if (hour < 19) {
-                return 'бегоҳ';
-            } else {
-                return 'шаб';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1th is the first week of the year.
-        },
-    });
-
-    return tg;
-
-})));
Index: ckend/node_modules/moment/locale/th.js
===================================================================
--- backend/node_modules/moment/locale/th.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Thai [th]
-//! author : Kridsada Thanabulpong : https://github.com/sirn
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var th = moment.defineLocale('th', {
-        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
-            '_'
-        ),
-        monthsShort:
-            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
-        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
-        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY เวลา H:mm',
-            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
-        },
-        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
-        isPM: function (input) {
-            return input === 'หลังเที่ยง';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ก่อนเที่ยง';
-            } else {
-                return 'หลังเที่ยง';
-            }
-        },
-        calendar: {
-            sameDay: '[วันนี้ เวลา] LT',
-            nextDay: '[พรุ่งนี้ เวลา] LT',
-            nextWeek: 'dddd[หน้า เวลา] LT',
-            lastDay: '[เมื่อวานนี้ เวลา] LT',
-            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'อีก %s',
-            past: '%sที่แล้ว',
-            s: 'ไม่กี่วินาที',
-            ss: '%d วินาที',
-            m: '1 นาที',
-            mm: '%d นาที',
-            h: '1 ชั่วโมง',
-            hh: '%d ชั่วโมง',
-            d: '1 วัน',
-            dd: '%d วัน',
-            w: '1 สัปดาห์',
-            ww: '%d สัปดาห์',
-            M: '1 เดือน',
-            MM: '%d เดือน',
-            y: '1 ปี',
-            yy: '%d ปี',
-        },
-    });
-
-    return th;
-
-})));
Index: ckend/node_modules/moment/locale/tk.js
===================================================================
--- backend/node_modules/moment/locale/tk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkmen [tk]
-//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        1: "'inji",
-        5: "'inji",
-        8: "'inji",
-        70: "'inji",
-        80: "'inji",
-        2: "'nji",
-        7: "'nji",
-        20: "'nji",
-        50: "'nji",
-        3: "'ünji",
-        4: "'ünji",
-        100: "'ünji",
-        6: "'njy",
-        9: "'unjy",
-        10: "'unjy",
-        30: "'unjy",
-        60: "'ynjy",
-        90: "'ynjy",
-    };
-
-    var tk = moment.defineLocale('tk', {
-        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
-        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
-            '_'
-        ),
-        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
-        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün sagat] LT',
-            nextDay: '[ertir sagat] LT',
-            nextWeek: '[indiki] dddd [sagat] LT',
-            lastDay: '[düýn] LT',
-            lastWeek: '[geçen] dddd [sagat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s soň',
-            past: '%s öň',
-            s: 'birnäçe sekunt',
-            m: 'bir minut',
-            mm: '%d minut',
-            h: 'bir sagat',
-            hh: '%d sagat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir aý',
-            MM: '%d aý',
-            y: 'bir ýyl',
-            yy: '%d ýyl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'unjy";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return tk;
-
-})));
Index: ckend/node_modules/moment/locale/tl-ph.js
===================================================================
--- backend/node_modules/moment/locale/tl-ph.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tagalog (Philippines) [tl-ph]
-//! author : Dan Hagman : https://github.com/hagmandan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var tlPh = moment.defineLocale('tl-ph', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return tlPh;
-
-})));
Index: ckend/node_modules/moment/locale/tlh.js
===================================================================
--- backend/node_modules/moment/locale/tlh.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-//! moment.js locale configuration
-//! locale : Klingon [tlh]
-//! author : Dominika Kruk : https://github.com/amaranthrose
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
-
-    function translateFuture(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'leS'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'waQ'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'nem'
-                    : time + ' pIq';
-        return time;
-    }
-
-    function translatePast(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'Hu’'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'wen'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'ben'
-                    : time + ' ret';
-        return time;
-    }
-
-    function translate(number, withoutSuffix, string, isFuture) {
-        var numberNoun = numberAsNoun(number);
-        switch (string) {
-            case 'ss':
-                return numberNoun + ' lup';
-            case 'mm':
-                return numberNoun + ' tup';
-            case 'hh':
-                return numberNoun + ' rep';
-            case 'dd':
-                return numberNoun + ' jaj';
-            case 'MM':
-                return numberNoun + ' jar';
-            case 'yy':
-                return numberNoun + ' DIS';
-        }
-    }
-
-    function numberAsNoun(number) {
-        var hundred = Math.floor((number % 1000) / 100),
-            ten = Math.floor((number % 100) / 10),
-            one = number % 10,
-            word = '';
-        if (hundred > 0) {
-            word += numbersNouns[hundred] + 'vatlh';
-        }
-        if (ten > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
-        }
-        if (one > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[one];
-        }
-        return word === '' ? 'pagh' : word;
-    }
-
-    var tlh = moment.defineLocale('tlh', {
-        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
-            '_'
-        ),
-        monthsShort:
-            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
-            '_'
-        ),
-        weekdaysShort:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        weekdaysMin:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[DaHjaj] LT',
-            nextDay: '[wa’leS] LT',
-            nextWeek: 'LLL',
-            lastDay: '[wa’Hu’] LT',
-            lastWeek: 'LLL',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: translateFuture,
-            past: translatePast,
-            s: 'puS lup',
-            ss: translate,
-            m: 'wa’ tup',
-            mm: translate,
-            h: 'wa’ rep',
-            hh: translate,
-            d: 'wa’ jaj',
-            dd: translate,
-            M: 'wa’ jar',
-            MM: translate,
-            y: 'wa’ DIS',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return tlh;
-
-})));
Index: ckend/node_modules/moment/locale/tr.js
===================================================================
--- backend/node_modules/moment/locale/tr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkish [tr]
-//! authors : Erhan Gundogan : https://github.com/erhangundogan,
-//!           Burak Yiğit Kaya: https://github.com/BYK
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        1: "'inci",
-        5: "'inci",
-        8: "'inci",
-        70: "'inci",
-        80: "'inci",
-        2: "'nci",
-        7: "'nci",
-        20: "'nci",
-        50: "'nci",
-        3: "'üncü",
-        4: "'üncü",
-        100: "'üncü",
-        6: "'ncı",
-        9: "'uncu",
-        10: "'uncu",
-        30: "'uncu",
-        60: "'ıncı",
-        90: "'ıncı",
-    };
-
-    var tr = moment.defineLocale('tr', {
-        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
-            '_'
-        ),
-        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
-        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
-            '_'
-        ),
-        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
-        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'öö' : 'ÖÖ';
-            } else {
-                return isLower ? 'ös' : 'ÖS';
-            }
-        },
-        meridiemParse: /öö|ÖÖ|ös|ÖS/,
-        isPM: function (input) {
-            return input === 'ös' || input === 'ÖS';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[yarın saat] LT',
-            nextWeek: '[gelecek] dddd [saat] LT',
-            lastDay: '[dün] LT',
-            lastWeek: '[geçen] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s önce',
-            s: 'birkaç saniye',
-            ss: '%d saniye',
-            m: 'bir dakika',
-            mm: '%d dakika',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            w: 'bir hafta',
-            ww: '%d hafta',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir yıl',
-            yy: '%d yıl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'ıncı";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return tr;
-
-})));
Index: ckend/node_modules/moment/locale/tzl.js
===================================================================
--- backend/node_modules/moment/locale/tzl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Talossan [tzl]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-//! author : Iustì Canun
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-    // This is currently too difficult (maybe even impossible) to add.
-    var tzl = moment.defineLocale('tzl', {
-        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
-        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
-        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
-        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM [dallas] YYYY',
-            LLL: 'D. MMMM [dallas] YYYY HH.mm',
-            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
-        },
-        meridiemParse: /d\'o|d\'a/i,
-        isPM: function (input) {
-            return "d'o" === input.toLowerCase();
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? "d'o" : "D'O";
-            } else {
-                return isLower ? "d'a" : "D'A";
-            }
-        },
-        calendar: {
-            sameDay: '[oxhi à] LT',
-            nextDay: '[demà à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[ieiri à] LT',
-            lastWeek: '[sür el] dddd [lasteu à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'osprei %s',
-            past: 'ja%s',
-            s: processRelativeTime,
-            ss: processRelativeTime,
-            m: processRelativeTime,
-            mm: processRelativeTime,
-            h: processRelativeTime,
-            hh: processRelativeTime,
-            d: processRelativeTime,
-            dd: processRelativeTime,
-            M: processRelativeTime,
-            MM: processRelativeTime,
-            y: processRelativeTime,
-            yy: processRelativeTime,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['viensas secunds', "'iensas secunds"],
-            ss: [number + ' secunds', '' + number + ' secunds'],
-            m: ["'n míut", "'iens míut"],
-            mm: [number + ' míuts', '' + number + ' míuts'],
-            h: ["'n þora", "'iensa þora"],
-            hh: [number + ' þoras', '' + number + ' þoras'],
-            d: ["'n ziua", "'iensa ziua"],
-            dd: [number + ' ziuas', '' + number + ' ziuas'],
-            M: ["'n mes", "'iens mes"],
-            MM: [number + ' mesen', '' + number + ' mesen'],
-            y: ["'n ar", "'iens ar"],
-            yy: [number + ' ars', '' + number + ' ars'],
-        };
-        return isFuture
-            ? format[key][0]
-            : withoutSuffix
-              ? format[key][0]
-              : format[key][1];
-    }
-
-    return tzl;
-
-})));
Index: ckend/node_modules/moment/locale/tzm-latn.js
===================================================================
--- backend/node_modules/moment/locale/tzm-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight Latin [tzm-latn]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var tzmLatn = moment.defineLocale('tzm-latn', {
-        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-            '_'
-        ),
-        monthsShort:
-            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-                '_'
-            ),
-        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[asdkh g] LT',
-            nextDay: '[aska g] LT',
-            nextWeek: 'dddd [g] LT',
-            lastDay: '[assant g] LT',
-            lastWeek: 'dddd [g] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dadkh s yan %s',
-            past: 'yan %s',
-            s: 'imik',
-            ss: '%d imik',
-            m: 'minuḍ',
-            mm: '%d minuḍ',
-            h: 'saɛa',
-            hh: '%d tassaɛin',
-            d: 'ass',
-            dd: '%d ossan',
-            M: 'ayowr',
-            MM: '%d iyyirn',
-            y: 'asgas',
-            yy: '%d isgasn',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return tzmLatn;
-
-})));
Index: ckend/node_modules/moment/locale/tzm.js
===================================================================
--- backend/node_modules/moment/locale/tzm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight [tzm]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var tzm = moment.defineLocale('tzm', {
-        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-                '_'
-            ),
-        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
-            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
-            nextWeek: 'dddd [ⴴ] LT',
-            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
-            lastWeek: 'dddd [ⴴ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
-            past: 'ⵢⴰⵏ %s',
-            s: 'ⵉⵎⵉⴽ',
-            ss: '%d ⵉⵎⵉⴽ',
-            m: 'ⵎⵉⵏⵓⴺ',
-            mm: '%d ⵎⵉⵏⵓⴺ',
-            h: 'ⵙⴰⵄⴰ',
-            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
-            d: 'ⴰⵙⵙ',
-            dd: '%d oⵙⵙⴰⵏ',
-            M: 'ⴰⵢoⵓⵔ',
-            MM: '%d ⵉⵢⵢⵉⵔⵏ',
-            y: 'ⴰⵙⴳⴰⵙ',
-            yy: '%d ⵉⵙⴳⴰⵙⵏ',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    return tzm;
-
-})));
Index: ckend/node_modules/moment/locale/ug-cn.js
===================================================================
--- backend/node_modules/moment/locale/ug-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uyghur (China) [ug-cn]
-//! author: boyaq : https://github.com/boyaq
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var ugCn = moment.defineLocale('ug-cn', {
-        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-                '_'
-            ),
-        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
-            '_'
-        ),
-        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
-            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-        },
-        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                meridiem === 'يېرىم كېچە' ||
-                meridiem === 'سەھەر' ||
-                meridiem === 'چۈشتىن بۇرۇن'
-            ) {
-                return hour;
-            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
-                return hour + 12;
-            } else {
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return 'يېرىم كېچە';
-            } else if (hm < 900) {
-                return 'سەھەر';
-            } else if (hm < 1130) {
-                return 'چۈشتىن بۇرۇن';
-            } else if (hm < 1230) {
-                return 'چۈش';
-            } else if (hm < 1800) {
-                return 'چۈشتىن كېيىن';
-            } else {
-                return 'كەچ';
-            }
-        },
-        calendar: {
-            sameDay: '[بۈگۈن سائەت] LT',
-            nextDay: '[ئەتە سائەت] LT',
-            nextWeek: '[كېلەركى] dddd [سائەت] LT',
-            lastDay: '[تۆنۈگۈن] LT',
-            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s كېيىن',
-            past: '%s بۇرۇن',
-            s: 'نەچچە سېكونت',
-            ss: '%d سېكونت',
-            m: 'بىر مىنۇت',
-            mm: '%d مىنۇت',
-            h: 'بىر سائەت',
-            hh: '%d سائەت',
-            d: 'بىر كۈن',
-            dd: '%d كۈن',
-            M: 'بىر ئاي',
-            MM: '%d ئاي',
-            y: 'بىر يىل',
-            yy: '%d يىل',
-        },
-
-        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '-كۈنى';
-                case 'w':
-                case 'W':
-                    return number + '-ھەپتە';
-                default:
-                    return number;
-            }
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    return ugCn;
-
-})));
Index: ckend/node_modules/moment/locale/uk.js
===================================================================
--- backend/node_modules/moment/locale/uk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,178 +1,0 @@
-//! moment.js locale configuration
-//! locale : Ukrainian [uk]
-//! author : zemlanin : https://github.com/zemlanin
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    function plural(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
-            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
-            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
-            dd: 'день_дні_днів',
-            MM: 'місяць_місяці_місяців',
-            yy: 'рік_роки_років',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвилина' : 'хвилину';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'година' : 'годину';
-        } else {
-            return number + ' ' + plural(format[key], +number);
-        }
-    }
-    function weekdaysCaseReplace(m, format) {
-        var weekdays = {
-                nominative:
-                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
-                        '_'
-                    ),
-                accusative:
-                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
-                        '_'
-                    ),
-                genitive:
-                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
-                        '_'
-                    ),
-            },
-            nounCase;
-
-        if (m === true) {
-            return weekdays['nominative']
-                .slice(1, 7)
-                .concat(weekdays['nominative'].slice(0, 1));
-        }
-        if (!m) {
-            return weekdays['nominative'];
-        }
-
-        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
-            ? 'accusative'
-            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
-              ? 'genitive'
-              : 'nominative';
-        return weekdays[nounCase][m.day()];
-    }
-    function processHoursFunction(str) {
-        return function () {
-            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
-        };
-    }
-
-    var uk = moment.defineLocale('uk', {
-        months: {
-            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
-                '_'
-            ),
-            standalone:
-                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
-            '_'
-        ),
-        weekdays: weekdaysCaseReplace,
-        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY р.',
-            LLL: 'D MMMM YYYY р., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
-        },
-        calendar: {
-            sameDay: processHoursFunction('[Сьогодні '),
-            nextDay: processHoursFunction('[Завтра '),
-            lastDay: processHoursFunction('[Вчора '),
-            nextWeek: processHoursFunction('[У] dddd ['),
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return processHoursFunction('[Минулої] dddd [').call(this);
-                    case 1:
-                    case 2:
-                    case 4:
-                        return processHoursFunction('[Минулого] dddd [').call(this);
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: '%s тому',
-            s: 'декілька секунд',
-            ss: relativeTimeWithPlural,
-            m: relativeTimeWithPlural,
-            mm: relativeTimeWithPlural,
-            h: 'годину',
-            hh: relativeTimeWithPlural,
-            d: 'день',
-            dd: relativeTimeWithPlural,
-            M: 'місяць',
-            MM: relativeTimeWithPlural,
-            y: 'рік',
-            yy: relativeTimeWithPlural,
-        },
-        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-        meridiemParse: /ночі|ранку|дня|вечора/,
-        isPM: function (input) {
-            return /^(дня|вечора)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночі';
-            } else if (hour < 12) {
-                return 'ранку';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечора';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return uk;
-
-})));
Index: ckend/node_modules/moment/locale/ur.js
===================================================================
--- backend/node_modules/moment/locale/ur.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-//! moment.js locale configuration
-//! locale : Urdu [ur]
-//! author : Sawood Alam : https://github.com/ibnesayeed
-//! author : Zack : https://github.com/ZackVision
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var months = [
-            'جنوری',
-            'فروری',
-            'مارچ',
-            'اپریل',
-            'مئی',
-            'جون',
-            'جولائی',
-            'اگست',
-            'ستمبر',
-            'اکتوبر',
-            'نومبر',
-            'دسمبر',
-        ],
-        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
-
-    var ur = moment.defineLocale('ur', {
-        months: months,
-        monthsShort: months,
-        weekdays: days,
-        weekdaysShort: days,
-        weekdaysMin: days,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[آج بوقت] LT',
-            nextDay: '[کل بوقت] LT',
-            nextWeek: 'dddd [بوقت] LT',
-            lastDay: '[گذشتہ روز بوقت] LT',
-            lastWeek: '[گذشتہ] dddd [بوقت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s بعد',
-            past: '%s قبل',
-            s: 'چند سیکنڈ',
-            ss: '%d سیکنڈ',
-            m: 'ایک منٹ',
-            mm: '%d منٹ',
-            h: 'ایک گھنٹہ',
-            hh: '%d گھنٹے',
-            d: 'ایک دن',
-            dd: '%d دن',
-            M: 'ایک ماہ',
-            MM: '%d ماہ',
-            y: 'ایک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return ur;
-
-})));
Index: ckend/node_modules/moment/locale/uz-latn.js
===================================================================
--- backend/node_modules/moment/locale/uz-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek Latin [uz-latn]
-//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var uzLatn = moment.defineLocale('uz-latn', {
-        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
-        weekdays:
-            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
-                '_'
-            ),
-        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
-        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bugun soat] LT [da]',
-            nextDay: '[Ertaga] LT [da]',
-            nextWeek: 'dddd [kuni soat] LT [da]',
-            lastDay: '[Kecha soat] LT [da]',
-            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Yaqin %s ichida',
-            past: 'Bir necha %s oldin',
-            s: 'soniya',
-            ss: '%d soniya',
-            m: 'bir daqiqa',
-            mm: '%d daqiqa',
-            h: 'bir soat',
-            hh: '%d soat',
-            d: 'bir kun',
-            dd: '%d kun',
-            M: 'bir oy',
-            MM: '%d oy',
-            y: 'bir yil',
-            yy: '%d yil',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    return uzLatn;
-
-})));
Index: ckend/node_modules/moment/locale/uz.js
===================================================================
--- backend/node_modules/moment/locale/uz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek [uz]
-//! author : Sardor Muminov : https://github.com/muminoff
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var uz = moment.defineLocale('uz', {
-        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
-        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
-        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бугун соат] LT [да]',
-            nextDay: '[Эртага] LT [да]',
-            nextWeek: 'dddd [куни соат] LT [да]',
-            lastDay: '[Кеча соат] LT [да]',
-            lastWeek: '[Утган] dddd [куни соат] LT [да]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Якин %s ичида',
-            past: 'Бир неча %s олдин',
-            s: 'фурсат',
-            ss: '%d фурсат',
-            m: 'бир дакика',
-            mm: '%d дакика',
-            h: 'бир соат',
-            hh: '%d соат',
-            d: 'бир кун',
-            dd: '%d кун',
-            M: 'бир ой',
-            MM: '%d ой',
-            y: 'бир йил',
-            yy: '%d йил',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return uz;
-
-})));
Index: ckend/node_modules/moment/locale/vi.js
===================================================================
--- backend/node_modules/moment/locale/vi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//! moment.js locale configuration
-//! locale : Vietnamese [vi]
-//! author : Bang Nguyen : https://github.com/bangnk
-//! author : Chien Kira : https://github.com/chienkira
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var vi = moment.defineLocale('vi', {
-        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
-            '_'
-        ),
-        monthsShort:
-            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
-            '_'
-        ),
-        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /sa|ch/i,
-        isPM: function (input) {
-            return /^ch$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'sa' : 'SA';
-            } else {
-                return isLower ? 'ch' : 'CH';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [năm] YYYY',
-            LLL: 'D MMMM [năm] YYYY HH:mm',
-            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
-            l: 'DD/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hôm nay lúc] LT',
-            nextDay: '[Ngày mai lúc] LT',
-            nextWeek: 'dddd [tuần tới lúc] LT',
-            lastDay: '[Hôm qua lúc] LT',
-            lastWeek: 'dddd [tuần trước lúc] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s tới',
-            past: '%s trước',
-            s: 'vài giây',
-            ss: '%d giây',
-            m: 'một phút',
-            mm: '%d phút',
-            h: 'một giờ',
-            hh: '%d giờ',
-            d: 'một ngày',
-            dd: '%d ngày',
-            w: 'một tuần',
-            ww: '%d tuần',
-            M: 'một tháng',
-            MM: '%d tháng',
-            y: 'một năm',
-            yy: '%d năm',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return vi;
-
-})));
Index: ckend/node_modules/moment/locale/x-pseudo.js
===================================================================
--- backend/node_modules/moment/locale/x-pseudo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//! moment.js locale configuration
-//! locale : Pseudo [x-pseudo]
-//! author : Andrew Hood : https://github.com/andrewhood125
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var xPseudo = moment.defineLocale('x-pseudo', {
-        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
-            '_'
-        ),
-        monthsShort:
-            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
-                '_'
-            ),
-        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
-        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[T~ódá~ý át] LT',
-            nextDay: '[T~ómó~rró~w át] LT',
-            nextWeek: 'dddd [át] LT',
-            lastDay: '[Ý~ést~érdá~ý át] LT',
-            lastWeek: '[L~ást] dddd [át] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'í~ñ %s',
-            past: '%s á~gó',
-            s: 'á ~féw ~sécó~ñds',
-            ss: '%d s~écóñ~ds',
-            m: 'á ~míñ~úté',
-            mm: '%d m~íñú~tés',
-            h: 'á~ñ hó~úr',
-            hh: '%d h~óúrs',
-            d: 'á ~dáý',
-            dd: '%d d~áýs',
-            M: 'á ~móñ~th',
-            MM: '%d m~óñt~hs',
-            y: 'á ~ýéár',
-            yy: '%d ý~éárs',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return xPseudo;
-
-})));
Index: ckend/node_modules/moment/locale/yo.js
===================================================================
--- backend/node_modules/moment/locale/yo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : Yoruba Nigeria [yo]
-//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var yo = moment.defineLocale('yo', {
-        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
-            '_'
-        ),
-        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
-        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
-        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
-        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Ònì ni] LT',
-            nextDay: '[Ọ̀la ni] LT',
-            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
-            lastDay: '[Àna ni] LT',
-            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ní %s',
-            past: '%s kọjá',
-            s: 'ìsẹjú aayá die',
-            ss: 'aayá %d',
-            m: 'ìsẹjú kan',
-            mm: 'ìsẹjú %d',
-            h: 'wákati kan',
-            hh: 'wákati %d',
-            d: 'ọjọ́ kan',
-            dd: 'ọjọ́ %d',
-            M: 'osù kan',
-            MM: 'osù %d',
-            y: 'ọdún kan',
-            yy: 'ọdún %d',
-        },
-        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
-        ordinal: 'ọjọ́ %d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return yo;
-
-})));
Index: ckend/node_modules/moment/locale/zh-cn.js
===================================================================
--- backend/node_modules/moment/locale/zh-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (China) [zh-cn]
-//! author : suupic : https://github.com/suupic
-//! author : Zeno Zeng : https://github.com/zenozeng
-//! author : uu109 : https://github.com/uu109
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var zhCn = moment.defineLocale('zh-cn', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日Ah点mm分',
-            LLLL: 'YYYY年M月D日ddddAh点mm分',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            } else {
-                // '中午'
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[下]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            lastDay: '[昨天]LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[上]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '周';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s后',
-            past: '%s前',
-            s: '几秒',
-            ss: '%d 秒',
-            m: '1 分钟',
-            mm: '%d 分钟',
-            h: '1 小时',
-            hh: '%d 小时',
-            d: '1 天',
-            dd: '%d 天',
-            w: '1 周',
-            ww: '%d 周',
-            M: '1 个月',
-            MM: '%d 个月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    return zhCn;
-
-})));
Index: ckend/node_modules/moment/locale/zh-hk.js
===================================================================
--- backend/node_modules/moment/locale/zh-hk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,112 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Hong Kong) [zh-hk]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Konstantin : https://github.com/skfd
-//! author : Anthony : https://github.com/anthonylau
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var zhHk = moment.defineLocale('zh-hk', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1200) {
-                return '上午';
-            } else if (hm === 1200) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: '[下]ddddLT',
-            lastDay: '[昨天]LT',
-            lastWeek: '[上]ddddLT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    return zhHk;
-
-})));
Index: ckend/node_modules/moment/locale/zh-mo.js
===================================================================
--- backend/node_modules/moment/locale/zh-mo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Macau) [zh-mo]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Tan Yuanhong : https://github.com/le0tan
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var zhMo = moment.defineLocale('zh-mo', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s內',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    return zhMo;
-
-})));
Index: ckend/node_modules/moment/locale/zh-tw.js
===================================================================
--- backend/node_modules/moment/locale/zh-tw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Taiwan) [zh-tw]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    var zhTw = moment.defineLocale('zh-tw', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    return zhTw;
-
-})));
Index: ckend/node_modules/moment/min/locales.js
===================================================================
--- backend/node_modules/moment/min/locales.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12800 +1,0 @@
-;(function (global, factory) {
-   typeof exports === 'object' && typeof module !== 'undefined'
-       && typeof require === 'function' ? factory(require('../moment')) :
-   typeof define === 'function' && define.amd ? define(['../moment'], factory) :
-   factory(global.moment)
-}(this, (function (moment) { 'use strict';
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('af', {
-        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
-            '_'
-        ),
-        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
-        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
-        meridiemParse: /vm|nm/i,
-        isPM: function (input) {
-            return /^nm$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'vm' : 'VM';
-            } else {
-                return isLower ? 'nm' : 'NM';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Vandag om] LT',
-            nextDay: '[Môre om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[Gister om] LT',
-            lastWeek: '[Laas] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oor %s',
-            past: '%s gelede',
-            s: "'n paar sekondes",
-            ss: '%d sekondes',
-            m: "'n minuut",
-            mm: '%d minute',
-            h: "'n uur",
-            hh: '%d ure',
-            d: "'n dag",
-            dd: '%d dae',
-            M: "'n maand",
-            MM: '%d maande',
-            y: "'n jaar",
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            ); // Thanks to Joris Röling : https://github.com/jjupiter
-        },
-        week: {
-            dow: 1, // Maandag is die eerste dag van die week.
-            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var pluralForm = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm(number),
-                    str = plurals[u][pluralForm(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months = [
-            'جانفي',
-            'فيفري',
-            'مارس',
-            'أفريل',
-            'ماي',
-            'جوان',
-            'جويلية',
-            'أوت',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    moment.defineLocale('ar-dz', {
-        months: months,
-        monthsShort: months,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize('s'),
-            ss: pluralize('s'),
-            m: pluralize('m'),
-            mm: pluralize('m'),
-            h: pluralize('h'),
-            hh: pluralize('h'),
-            d: pluralize('d'),
-            dd: pluralize('d'),
-            M: pluralize('M'),
-            MM: pluralize('M'),
-            y: pluralize('y'),
-            yy: pluralize('y'),
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ar-kw', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '1',
-            2: '2',
-            3: '3',
-            4: '4',
-            5: '5',
-            6: '6',
-            7: '7',
-            8: '8',
-            9: '9',
-            0: '0',
-        },
-        pluralForm$1 = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals$1 = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize$1 = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm$1(number),
-                    str = plurals$1[u][pluralForm$1(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months$1 = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    moment.defineLocale('ar-ly', {
-        months: months$1,
-        monthsShort: months$1,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize$1('s'),
-            ss: pluralize$1('s'),
-            m: pluralize$1('m'),
-            mm: pluralize$1('m'),
-            h: pluralize$1('h'),
-            hh: pluralize$1('h'),
-            d: pluralize$1('d'),
-            dd: pluralize$1('d'),
-            M: pluralize$1('M'),
-            MM: pluralize$1('M'),
-            y: pluralize$1('y'),
-            yy: pluralize$1('y'),
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ar-ma', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$1 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    moment.defineLocale('ar-ps', {
-        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
-            '_'
-        ),
-        monthsShort:
-            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('') // reversed since negative lookbehind not supported everywhere
-                .reverse()
-                .join('')
-                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('')
-                .reverse()
-                .join('')
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$1[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$2 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$1 = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    moment.defineLocale('ar-sa', {
-        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$1[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$2[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ar-tn', {
-        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$3 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$2 = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        pluralForm$2 = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals$2 = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize$2 = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm$2(number),
-                    str = plurals$2[u][pluralForm$2(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months$2 = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    moment.defineLocale('ar', {
-        months: months$2,
-        monthsShort: months$2,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize$2('s'),
-            ss: pluralize$2('s'),
-            m: pluralize$2('m'),
-            mm: pluralize$2('m'),
-            h: pluralize$2('h'),
-            hh: pluralize$2('h'),
-            d: pluralize$2('d'),
-            dd: pluralize$2('d'),
-            M: pluralize$2('M'),
-            MM: pluralize$2('M'),
-            y: pluralize$2('y'),
-            yy: pluralize$2('y'),
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$2[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$3[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        1: '-inci',
-        5: '-inci',
-        8: '-inci',
-        70: '-inci',
-        80: '-inci',
-        2: '-nci',
-        7: '-nci',
-        20: '-nci',
-        50: '-nci',
-        3: '-üncü',
-        4: '-üncü',
-        100: '-üncü',
-        6: '-ncı',
-        9: '-uncu',
-        10: '-uncu',
-        30: '-uncu',
-        60: '-ıncı',
-        90: '-ıncı',
-    };
-
-    moment.defineLocale('az', {
-        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
-        weekdays:
-            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
-                '_'
-            ),
-        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
-        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[sabah saat] LT',
-            nextWeek: '[gələn həftə] dddd [saat] LT',
-            lastDay: '[dünən] LT',
-            lastWeek: '[keçən həftə] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s əvvəl',
-            s: 'bir neçə saniyə',
-            ss: '%d saniyə',
-            m: 'bir dəqiqə',
-            mm: '%d dəqiqə',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir il',
-            yy: '%d il',
-        },
-        meridiemParse: /gecə|səhər|gündüz|axşam/,
-        isPM: function (input) {
-            return /^(gündüz|axşam)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'gecə';
-            } else if (hour < 12) {
-                return 'səhər';
-            } else if (hour < 17) {
-                return 'gündüz';
-            } else {
-                return 'axşam';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
-        ordinal: function (number) {
-            if (number === 0) {
-                // special case for zero
-                return number + '-ıncı';
-            }
-            var a = number % 10,
-                b = (number % 100) - a,
-                c = number >= 100 ? 100 : null;
-            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
-            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
-            dd: 'дзень_дні_дзён',
-            MM: 'месяц_месяцы_месяцаў',
-            yy: 'год_гады_гадоў',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвіліна' : 'хвіліну';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'гадзіна' : 'гадзіну';
-        } else {
-            return number + ' ' + plural(format[key], +number);
-        }
-    }
-
-    moment.defineLocale('be', {
-        months: {
-            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
-                '_'
-            ),
-            standalone:
-                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
-        weekdays: {
-            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
-                '_'
-            ),
-            standalone:
-                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
-                    '_'
-                ),
-            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
-        },
-        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
-        },
-        calendar: {
-            sameDay: '[Сёння ў] LT',
-            nextDay: '[Заўтра ў] LT',
-            lastDay: '[Учора ў] LT',
-            nextWeek: function () {
-                return '[У] dddd [ў] LT';
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[У мінулую] dddd [ў] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[У мінулы] dddd [ў] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'праз %s',
-            past: '%s таму',
-            s: 'некалькі секунд',
-            m: relativeTimeWithPlural,
-            mm: relativeTimeWithPlural,
-            h: relativeTimeWithPlural,
-            hh: relativeTimeWithPlural,
-            d: 'дзень',
-            dd: relativeTimeWithPlural,
-            M: 'месяц',
-            MM: relativeTimeWithPlural,
-            y: 'год',
-            yy: relativeTimeWithPlural,
-        },
-        meridiemParse: /ночы|раніцы|дня|вечара/,
-        isPM: function (input) {
-            return /^(дня|вечара)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночы';
-            } else if (hour < 12) {
-                return 'раніцы';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечара';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return (number % 10 === 2 || number % 10 === 3) &&
-                        number % 100 !== 12 &&
-                        number % 100 !== 13
-                        ? number + '-і'
-                        : number + '-ы';
-                case 'D':
-                    return number + '-га';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('bg', {
-        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Днес в] LT',
-            nextDay: '[Утре в] LT',
-            nextWeek: 'dddd [в] LT',
-            lastDay: '[Вчера в] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Миналата] dddd [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Миналия] dddd [в] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'след %s',
-            past: 'преди %s',
-            s: 'няколко секунди',
-            ss: '%d секунди',
-            m: 'минута',
-            mm: '%d минути',
-            h: 'час',
-            hh: '%d часа',
-            d: 'ден',
-            dd: '%d дена',
-            w: 'седмица',
-            ww: '%d седмици',
-            M: 'месец',
-            MM: '%d месеца',
-            y: 'година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('bm', {
-        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
-            '_'
-        ),
-        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
-        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
-        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
-        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'MMMM [tile] D [san] YYYY',
-            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bi lɛrɛ] LT',
-            nextDay: '[Sini lɛrɛ] LT',
-            nextWeek: 'dddd [don lɛrɛ] LT',
-            lastDay: '[Kunu lɛrɛ] LT',
-            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s kɔnɔ',
-            past: 'a bɛ %s bɔ',
-            s: 'sanga dama dama',
-            ss: 'sekondi %d',
-            m: 'miniti kelen',
-            mm: 'miniti %d',
-            h: 'lɛrɛ kelen',
-            hh: 'lɛrɛ %d',
-            d: 'tile kelen',
-            dd: 'tile %d',
-            M: 'kalo kelen',
-            MM: 'kalo %d',
-            y: 'san kelen',
-            yy: 'san %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$4 = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap$3 = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    moment.defineLocale('bn-bd', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap$3[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$4[match];
-            });
-        },
-
-        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'রাত') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ভোর') {
-                return hour;
-            } else if (meridiem === 'সকাল') {
-                return hour;
-            } else if (meridiem === 'দুপুর') {
-                return hour >= 3 ? hour : hour + 12;
-            } else if (meridiem === 'বিকাল') {
-                return hour + 12;
-            } else if (meridiem === 'সন্ধ্যা') {
-                return hour + 12;
-            }
-        },
-
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 6) {
-                return 'ভোর';
-            } else if (hour < 12) {
-                return 'সকাল';
-            } else if (hour < 15) {
-                return 'দুপুর';
-            } else if (hour < 18) {
-                return 'বিকাল';
-            } else if (hour < 20) {
-                return 'সন্ধ্যা';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$5 = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap$4 = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    moment.defineLocale('bn', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap$4[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$5[match];
-            });
-        },
-        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'রাত' && hour >= 4) ||
-                (meridiem === 'দুপুর' && hour < 5) ||
-                meridiem === 'বিকাল'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 10) {
-                return 'সকাল';
-            } else if (hour < 17) {
-                return 'দুপুর';
-            } else if (hour < 20) {
-                return 'বিকাল';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$6 = {
-            1: '༡',
-            2: '༢',
-            3: '༣',
-            4: '༤',
-            5: '༥',
-            6: '༦',
-            7: '༧',
-            8: '༨',
-            9: '༩',
-            0: '༠',
-        },
-        numberMap$5 = {
-            '༡': '1',
-            '༢': '2',
-            '༣': '3',
-            '༤': '4',
-            '༥': '5',
-            '༦': '6',
-            '༧': '7',
-            '༨': '8',
-            '༩': '9',
-            '༠': '0',
-        };
-
-    moment.defineLocale('bo', {
-        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
-                '_'
-            ),
-        monthsShortRegex: /^(ཟླ་\d{1,2})/,
-        monthsParseExact: true,
-        weekdays:
-            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
-                '_'
-            ),
-        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
-            '_'
-        ),
-        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[དི་རིང] LT',
-            nextDay: '[སང་ཉིན] LT',
-            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
-            lastDay: '[ཁ་སང] LT',
-            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ལ་',
-            past: '%s སྔན་ལ',
-            s: 'ལམ་སང',
-            ss: '%d སྐར་ཆ།',
-            m: 'སྐར་མ་གཅིག',
-            mm: '%d སྐར་མ',
-            h: 'ཆུ་ཚོད་གཅིག',
-            hh: '%d ཆུ་ཚོད',
-            d: 'ཉིན་གཅིག',
-            dd: '%d ཉིན་',
-            M: 'ཟླ་བ་གཅིག',
-            MM: '%d ཟླ་བ',
-            y: 'ལོ་གཅིག',
-            yy: '%d ལོ',
-        },
-        preparse: function (string) {
-            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
-                return numberMap$5[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$6[match];
-            });
-        },
-        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'མཚན་མོ' && hour >= 4) ||
-                (meridiem === 'ཉིན་གུང' && hour < 5) ||
-                meridiem === 'དགོང་དག'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'མཚན་མོ';
-            } else if (hour < 10) {
-                return 'ཞོགས་ཀས';
-            } else if (hour < 17) {
-                return 'ཉིན་གུང';
-            } else if (hour < 20) {
-                return 'དགོང་དག';
-            } else {
-                return 'མཚན་མོ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithMutation(number, withoutSuffix, key) {
-        var format = {
-            mm: 'munutenn',
-            MM: 'miz',
-            dd: 'devezh',
-        };
-        return number + ' ' + mutation(format[key], number);
-    }
-    function specialMutationForYears(number) {
-        switch (lastNumber(number)) {
-            case 1:
-            case 3:
-            case 4:
-            case 5:
-            case 9:
-                return number + ' bloaz';
-            default:
-                return number + ' vloaz';
-        }
-    }
-    function lastNumber(number) {
-        if (number > 9) {
-            return lastNumber(number % 10);
-        }
-        return number;
-    }
-    function mutation(text, number) {
-        if (number === 2) {
-            return softMutation(text);
-        }
-        return text;
-    }
-    function softMutation(text) {
-        var mutationTable = {
-            m: 'v',
-            b: 'v',
-            d: 'z',
-        };
-        if (mutationTable[text.charAt(0)] === undefined) {
-            return text;
-        }
-        return mutationTable[text.charAt(0)] + text.substring(1);
-    }
-
-    var monthsParse = [
-            /^gen/i,
-            /^c[ʼ\']hwe/i,
-            /^meu/i,
-            /^ebr/i,
-            /^mae/i,
-            /^(mez|eve)/i,
-            /^gou/i,
-            /^eos/i,
-            /^gwe/i,
-            /^her/i,
-            /^du/i,
-            /^ker/i,
-        ],
-        monthsRegex =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        monthsStrictRegex =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
-        monthsShortStrictRegex =
-            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        fullWeekdaysParse = [
-            /^sul/i,
-            /^lun/i,
-            /^meurzh/i,
-            /^merc[ʼ\']her/i,
-            /^yaou/i,
-            /^gwener/i,
-            /^sadorn/i,
-        ],
-        shortWeekdaysParse = [
-            /^Sul/i,
-            /^Lun/i,
-            /^Meu/i,
-            /^Mer/i,
-            /^Yao/i,
-            /^Gwe/i,
-            /^Sad/i,
-        ],
-        minWeekdaysParse = [
-            /^Su/i,
-            /^Lu/i,
-            /^Me([^r]|$)/i,
-            /^Mer/i,
-            /^Ya/i,
-            /^Gw/i,
-            /^Sa/i,
-        ];
-
-    moment.defineLocale('br', {
-        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
-            '_'
-        ),
-        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
-        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
-        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-        weekdaysParse: minWeekdaysParse,
-        fullWeekdaysParse: fullWeekdaysParse,
-        shortWeekdaysParse: shortWeekdaysParse,
-        minWeekdaysParse: minWeekdaysParse,
-
-        monthsRegex: monthsRegex,
-        monthsShortRegex: monthsRegex,
-        monthsStrictRegex: monthsStrictRegex,
-        monthsShortStrictRegex: monthsShortStrictRegex,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [a viz] MMMM YYYY',
-            LLL: 'D [a viz] MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hiziv da] LT',
-            nextDay: '[Warcʼhoazh da] LT',
-            nextWeek: 'dddd [da] LT',
-            lastDay: '[Decʼh da] LT',
-            lastWeek: 'dddd [paset da] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'a-benn %s',
-            past: '%s ʼzo',
-            s: 'un nebeud segondennoù',
-            ss: '%d eilenn',
-            m: 'ur vunutenn',
-            mm: relativeTimeWithMutation,
-            h: 'un eur',
-            hh: '%d eur',
-            d: 'un devezh',
-            dd: relativeTimeWithMutation,
-            M: 'ur miz',
-            MM: relativeTimeWithMutation,
-            y: 'ur bloaz',
-            yy: specialMutationForYears,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'añ' : 'vet';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
-        isPM: function (token) {
-            return token === 'g.m.';
-        },
-        meridiem: function (hour, minute, isLower) {
-            return hour < 12 ? 'a.m.' : 'g.m.';
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 'm':
-                return withoutSuffix
-                    ? 'jedna minuta'
-                    : isFuture
-                      ? 'jednu minutu'
-                      : 'jedne minute';
-        }
-    }
-
-    function translate(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jedan sat';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    moment.defineLocale('bs', {
-        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                        return '[prošlu] dddd [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate,
-            m: processRelativeTime,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: 'dan',
-            dd: translate,
-            M: 'mjesec',
-            MM: translate,
-            y: 'godinu',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ca', {
-        months: {
-            standalone:
-                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
-                    '_'
-                ),
-            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
-                '_'
-            ),
-        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a les] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextDay: function () {
-                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastDay: function () {
-                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [passat a ' +
-                    (this.hours() !== 1 ? 'les' : 'la') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'uns segons',
-            ss: '%d segons',
-            m: 'un minut',
-            mm: '%d minuts',
-            h: 'una hora',
-            hh: '%d hores',
-            d: 'un dia',
-            dd: '%d dies',
-            M: 'un mes',
-            MM: '%d mesos',
-            y: 'un any',
-            yy: '%d anys',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$3 = {
-            standalone:
-                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
-                    '_'
-                ),
-            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
-                '_'
-            ),
-            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
-        },
-        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
-        monthsParse$1 = [
-            /^led/i,
-            /^úno/i,
-            /^bře/i,
-            /^dub/i,
-            /^kvě/i,
-            /^(čvn|červen$|června)/i,
-            /^(čvc|červenec|července)/i,
-            /^srp/i,
-            /^zář/i,
-            /^říj/i,
-            /^lis/i,
-            /^pro/i,
-        ],
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsRegex$1 =
-            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
-
-    function plural$1(n) {
-        return n > 1 && n < 5 && ~~(n / 10) !== 1;
-    }
-    function translate$1(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'minuty' : 'minut');
-                } else {
-                    return result + 'minutami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'den' : 'dnem';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'dny' : 'dní');
-                } else {
-                    return result + 'dny';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
-                } else {
-                    return result + 'měsíci';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokem';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'roky' : 'let');
-                } else {
-                    return result + 'lety';
-                }
-        }
-    }
-
-    moment.defineLocale('cs', {
-        months: months$3,
-        monthsShort: monthsShort,
-        monthsRegex: monthsRegex$1,
-        monthsShortRegex: monthsRegex$1,
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsStrictRegex:
-            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
-        monthsShortStrictRegex:
-            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
-        monthsParse: monthsParse$1,
-        longMonthsParse: monthsParse$1,
-        shortMonthsParse: monthsParse$1,
-        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
-        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
-        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-            l: 'D. M. YYYY',
-        },
-        calendar: {
-            sameDay: '[dnes v] LT',
-            nextDay: '[zítra v] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [v] LT';
-                    case 3:
-                        return '[ve středu v] LT';
-                    case 4:
-                        return '[ve čtvrtek v] LT';
-                    case 5:
-                        return '[v pátek v] LT';
-                    case 6:
-                        return '[v sobotu v] LT';
-                }
-            },
-            lastDay: '[včera v] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulou neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[minulé] dddd [v] LT';
-                    case 3:
-                        return '[minulou středu v] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [v] LT';
-                    case 6:
-                        return '[minulou sobotu v] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'před %s',
-            s: translate$1,
-            ss: translate$1,
-            m: translate$1,
-            mm: translate$1,
-            h: translate$1,
-            hh: translate$1,
-            d: translate$1,
-            dd: translate$1,
-            M: translate$1,
-            MM: translate$1,
-            y: translate$1,
-            yy: translate$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('cv', {
-        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
-            '_'
-        ),
-        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
-        weekdays:
-            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
-                '_'
-            ),
-        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
-        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
-            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-        },
-        calendar: {
-            sameDay: '[Паян] LT [сехетре]',
-            nextDay: '[Ыран] LT [сехетре]',
-            lastDay: '[Ӗнер] LT [сехетре]',
-            nextWeek: '[Ҫитес] dddd LT [сехетре]',
-            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (output) {
-                var affix = /сехет$/i.exec(output)
-                    ? 'рен'
-                    : /ҫул$/i.exec(output)
-                      ? 'тан'
-                      : 'ран';
-                return output + affix;
-            },
-            past: '%s каялла',
-            s: 'пӗр-ик ҫеккунт',
-            ss: '%d ҫеккунт',
-            m: 'пӗр минут',
-            mm: '%d минут',
-            h: 'пӗр сехет',
-            hh: '%d сехет',
-            d: 'пӗр кун',
-            dd: '%d кун',
-            M: 'пӗр уйӑх',
-            MM: '%d уйӑх',
-            y: 'пӗр ҫул',
-            yy: '%d ҫул',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
-        ordinal: '%d-мӗш',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('cy', {
-        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
-            '_'
-        ),
-        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
-            '_'
-        ),
-        weekdays:
-            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
-        weekdaysParseExact: true,
-        // time formats are the same as en-gb
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Heddiw am] LT',
-            nextDay: '[Yfory am] LT',
-            nextWeek: 'dddd [am] LT',
-            lastDay: '[Ddoe am] LT',
-            lastWeek: 'dddd [diwethaf am] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'mewn %s',
-            past: '%s yn ôl',
-            s: 'ychydig eiliadau',
-            ss: '%d eiliad',
-            m: 'munud',
-            mm: '%d munud',
-            h: 'awr',
-            hh: '%d awr',
-            d: 'diwrnod',
-            dd: '%d diwrnod',
-            M: 'mis',
-            MM: '%d mis',
-            y: 'blwyddyn',
-            yy: '%d flynedd',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
-        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-        ordinal: function (number) {
-            var b = number,
-                output = '',
-                lookup = [
-                    '',
-                    'af',
-                    'il',
-                    'ydd',
-                    'ydd',
-                    'ed',
-                    'ed',
-                    'ed',
-                    'fed',
-                    'fed',
-                    'fed', // 1af to 10fed
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'fed', // 11eg to 20fed
-                ];
-            if (b > 20) {
-                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
-                    output = 'fed'; // not 30ain, 70ain or 90ain
-                } else {
-                    output = 'ain';
-                }
-            } else if (b > 0) {
-                output = lookup[b];
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('da', {
-        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'på dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[i] dddd[s kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'få sekunder',
-            ss: '%d sekunder',
-            m: 'et minut',
-            mm: '%d minutter',
-            h: 'en time',
-            hh: '%d timer',
-            d: 'en dag',
-            dd: '%d dage',
-            M: 'en måned',
-            MM: '%d måneder',
-            y: 'et år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('de-at', {
-        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$1,
-            mm: '%d Minuten',
-            h: processRelativeTime$1,
-            hh: '%d Stunden',
-            d: processRelativeTime$1,
-            dd: processRelativeTime$1,
-            w: processRelativeTime$1,
-            ww: '%d Wochen',
-            M: processRelativeTime$1,
-            MM: processRelativeTime$1,
-            y: processRelativeTime$1,
-            yy: processRelativeTime$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('de-ch', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$2,
-            mm: '%d Minuten',
-            h: processRelativeTime$2,
-            hh: '%d Stunden',
-            d: processRelativeTime$2,
-            dd: processRelativeTime$2,
-            w: processRelativeTime$2,
-            ww: '%d Wochen',
-            M: processRelativeTime$2,
-            MM: processRelativeTime$2,
-            y: processRelativeTime$2,
-            yy: processRelativeTime$2,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('de', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$3,
-            mm: '%d Minuten',
-            h: processRelativeTime$3,
-            hh: '%d Stunden',
-            d: processRelativeTime$3,
-            dd: processRelativeTime$3,
-            w: processRelativeTime$3,
-            ww: '%d Wochen',
-            M: processRelativeTime$3,
-            MM: processRelativeTime$3,
-            y: processRelativeTime$3,
-            yy: processRelativeTime$3,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$4 = [
-            'ޖެނުއަރީ',
-            'ފެބްރުއަރީ',
-            'މާރިޗު',
-            'އޭޕްރީލު',
-            'މޭ',
-            'ޖޫން',
-            'ޖުލައި',
-            'އޯގަސްޓު',
-            'ސެޕްޓެމްބަރު',
-            'އޮކްޓޯބަރު',
-            'ނޮވެމްބަރު',
-            'ޑިސެމްބަރު',
-        ],
-        weekdays = [
-            'އާދިއްތަ',
-            'ހޯމަ',
-            'އަންގާރަ',
-            'ބުދަ',
-            'ބުރާސްފަތި',
-            'ހުކުރު',
-            'ހޮނިހިރު',
-        ];
-
-    moment.defineLocale('dv', {
-        months: months$4,
-        monthsShort: months$4,
-        weekdays: weekdays,
-        weekdaysShort: weekdays,
-        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/M/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /މކ|މފ/,
-        isPM: function (input) {
-            return 'މފ' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'މކ';
-            } else {
-                return 'މފ';
-            }
-        },
-        calendar: {
-            sameDay: '[މިއަދު] LT',
-            nextDay: '[މާދަމާ] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[އިއްޔެ] LT',
-            lastWeek: '[ފާއިތުވި] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ތެރޭގައި %s',
-            past: 'ކުރިން %s',
-            s: 'ސިކުންތުކޮޅެއް',
-            ss: 'd% ސިކުންތު',
-            m: 'މިނިޓެއް',
-            mm: 'މިނިޓު %d',
-            h: 'ގަޑިއިރެއް',
-            hh: 'ގަޑިއިރު %d',
-            d: 'ދުވަހެއް',
-            dd: 'ދުވަސް %d',
-            M: 'މަހެއް',
-            MM: 'މަސް %d',
-            y: 'އަހަރެއް',
-            yy: 'އަހަރު %d',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 7, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function isFunction(input) {
-        return (
-            (typeof Function !== 'undefined' && input instanceof Function) ||
-            Object.prototype.toString.call(input) === '[object Function]'
-        );
-    }
-
-    moment.defineLocale('el', {
-        monthsNominativeEl:
-            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
-                '_'
-            ),
-        monthsGenitiveEl:
-            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
-                '_'
-            ),
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return this._monthsNominativeEl;
-            } else if (
-                typeof format === 'string' &&
-                /D/.test(format.substring(0, format.indexOf('MMMM')))
-            ) {
-                // if there is a day number before 'MMMM'
-                return this._monthsGenitiveEl[momentToFormat.month()];
-            } else {
-                return this._monthsNominativeEl[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
-        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
-            '_'
-        ),
-        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
-        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'μμ' : 'ΜΜ';
-            } else {
-                return isLower ? 'πμ' : 'ΠΜ';
-            }
-        },
-        isPM: function (input) {
-            return (input + '').toLowerCase()[0] === 'μ';
-        },
-        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendarEl: {
-            sameDay: '[Σήμερα {}] LT',
-            nextDay: '[Αύριο {}] LT',
-            nextWeek: 'dddd [{}] LT',
-            lastDay: '[Χθες {}] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 6:
-                        return '[το προηγούμενο] dddd [{}] LT';
-                    default:
-                        return '[την προηγούμενη] dddd [{}] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        calendar: function (key, mom) {
-            var output = this._calendarEl[key],
-                hours = mom && mom.hours();
-            if (isFunction(output)) {
-                output = output.apply(mom);
-            }
-            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
-        },
-        relativeTime: {
-            future: 'σε %s',
-            past: '%s πριν',
-            s: 'λίγα δευτερόλεπτα',
-            ss: '%d δευτερόλεπτα',
-            m: 'ένα λεπτό',
-            mm: '%d λεπτά',
-            h: 'μία ώρα',
-            hh: '%d ώρες',
-            d: 'μία μέρα',
-            dd: '%d μέρες',
-            M: 'ένας μήνας',
-            MM: '%d μήνες',
-            y: 'ένας χρόνος',
-            yy: '%d χρόνια',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}η/,
-        ordinal: '%dη',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-au', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-ca', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'YYYY-MM-DD',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY h:mm A',
-            LLLL: 'dddd, MMMM D, YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-gb', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-ie', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-il', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-in', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-nz', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('en-sg', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('eo', {
-        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
-        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
-        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: '[la] D[-an de] MMMM, YYYY',
-            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
-            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
-            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
-        },
-        meridiemParse: /[ap]\.t\.m/i,
-        isPM: function (input) {
-            return input.charAt(0).toLowerCase() === 'p';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'p.t.m.' : 'P.T.M.';
-            } else {
-                return isLower ? 'a.t.m.' : 'A.T.M.';
-            }
-        },
-        calendar: {
-            sameDay: '[Hodiaŭ je] LT',
-            nextDay: '[Morgaŭ je] LT',
-            nextWeek: 'dddd[n je] LT',
-            lastDay: '[Hieraŭ je] LT',
-            lastWeek: '[pasintan] dddd[n je] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'post %s',
-            past: 'antaŭ %s',
-            s: 'kelkaj sekundoj',
-            ss: '%d sekundoj',
-            m: 'unu minuto',
-            mm: '%d minutoj',
-            h: 'unu horo',
-            hh: '%d horoj',
-            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
-            dd: '%d tagoj',
-            M: 'unu monato',
-            MM: '%d monatoj',
-            y: 'unu jaro',
-            yy: '%d jaroj',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}a/,
-        ordinal: '%da',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$2 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$2 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    moment.defineLocale('es-do', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$1[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$2,
-        monthsShortRegex: monthsRegex$2,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$2,
-        longMonthsParse: monthsParse$2,
-        shortMonthsParse: monthsParse$2,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$1 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$3 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$3 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    moment.defineLocale('es-mx', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$1;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$2[m.month()];
-            } else {
-                return monthsShortDot$1[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$3,
-        monthsShortRegex: monthsRegex$3,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$3,
-        longMonthsParse: monthsParse$3,
-        shortMonthsParse: monthsParse$3,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$2 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$4 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$4 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    moment.defineLocale('es-us', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$2;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$3[m.month()];
-            } else {
-                return monthsShortDot$2[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$4,
-        monthsShortRegex: monthsRegex$4,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$4,
-        longMonthsParse: monthsParse$4,
-        shortMonthsParse: monthsParse$4,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'MM/DD/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$3 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$5 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$5 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    moment.defineLocale('es', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$3;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$4[m.month()];
-            } else {
-                return monthsShortDot$3[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$5,
-        monthsShortRegex: monthsRegex$5,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$5,
-        longMonthsParse: monthsParse$5,
-        shortMonthsParse: monthsParse$5,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
-            ss: [number + 'sekundi', number + 'sekundit'],
-            m: ['ühe minuti', 'üks minut'],
-            mm: [number + ' minuti', number + ' minutit'],
-            h: ['ühe tunni', 'tund aega', 'üks tund'],
-            hh: [number + ' tunni', number + ' tundi'],
-            d: ['ühe päeva', 'üks päev'],
-            M: ['kuu aja', 'kuu aega', 'üks kuu'],
-            MM: [number + ' kuu', number + ' kuud'],
-            y: ['ühe aasta', 'aasta', 'üks aasta'],
-            yy: [number + ' aasta', number + ' aastat'],
-        };
-        if (withoutSuffix) {
-            return format[key][2] ? format[key][2] : format[key][1];
-        }
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('et', {
-        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
-        weekdays:
-            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
-                '_'
-            ),
-        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
-        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Täna,] LT',
-            nextDay: '[Homme,] LT',
-            nextWeek: '[Järgmine] dddd LT',
-            lastDay: '[Eile,] LT',
-            lastWeek: '[Eelmine] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s pärast',
-            past: '%s tagasi',
-            s: processRelativeTime$4,
-            ss: processRelativeTime$4,
-            m: processRelativeTime$4,
-            mm: processRelativeTime$4,
-            h: processRelativeTime$4,
-            hh: processRelativeTime$4,
-            d: processRelativeTime$4,
-            dd: '%d päeva',
-            M: processRelativeTime$4,
-            MM: processRelativeTime$4,
-            y: processRelativeTime$4,
-            yy: processRelativeTime$4,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('eu', {
-        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
-            '_'
-        ),
-        monthsShort:
-            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
-                '_'
-            ),
-        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
-        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY[ko] MMMM[ren] D[a]',
-            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
-            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
-            l: 'YYYY-M-D',
-            ll: 'YYYY[ko] MMM D[a]',
-            lll: 'YYYY[ko] MMM D[a] HH:mm',
-            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
-        },
-        calendar: {
-            sameDay: '[gaur] LT[etan]',
-            nextDay: '[bihar] LT[etan]',
-            nextWeek: 'dddd LT[etan]',
-            lastDay: '[atzo] LT[etan]',
-            lastWeek: '[aurreko] dddd LT[etan]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s barru',
-            past: 'duela %s',
-            s: 'segundo batzuk',
-            ss: '%d segundo',
-            m: 'minutu bat',
-            mm: '%d minutu',
-            h: 'ordu bat',
-            hh: '%d ordu',
-            d: 'egun bat',
-            dd: '%d egun',
-            M: 'hilabete bat',
-            MM: '%d hilabete',
-            y: 'urte bat',
-            yy: '%d urte',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$7 = {
-            1: '۱',
-            2: '۲',
-            3: '۳',
-            4: '۴',
-            5: '۵',
-            6: '۶',
-            7: '۷',
-            8: '۸',
-            9: '۹',
-            0: '۰',
-        },
-        numberMap$6 = {
-            '۱': '1',
-            '۲': '2',
-            '۳': '3',
-            '۴': '4',
-            '۵': '5',
-            '۶': '6',
-            '۷': '7',
-            '۸': '8',
-            '۹': '9',
-            '۰': '0',
-        };
-
-    moment.defineLocale('fa', {
-        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-                '_'
-            ),
-        weekdays:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /قبل از ظهر|بعد از ظهر/,
-        isPM: function (input) {
-            return /بعد از ظهر/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'قبل از ظهر';
-            } else {
-                return 'بعد از ظهر';
-            }
-        },
-        calendar: {
-            sameDay: '[امروز ساعت] LT',
-            nextDay: '[فردا ساعت] LT',
-            nextWeek: 'dddd [ساعت] LT',
-            lastDay: '[دیروز ساعت] LT',
-            lastWeek: 'dddd [پیش] [ساعت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'در %s',
-            past: '%s پیش',
-            s: 'چند ثانیه',
-            ss: '%d ثانیه',
-            m: 'یک دقیقه',
-            mm: '%d دقیقه',
-            h: 'یک ساعت',
-            hh: '%d ساعت',
-            d: 'یک روز',
-            dd: '%d روز',
-            M: 'یک ماه',
-            MM: '%d ماه',
-            y: 'یک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[۰-۹]/g, function (match) {
-                    return numberMap$6[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$7[match];
-                })
-                .replace(/,/g, '،');
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}م/,
-        ordinal: '%dم',
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var numbersPast =
-            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
-                ' '
-            ),
-        numbersFuture = [
-            'nolla',
-            'yhden',
-            'kahden',
-            'kolmen',
-            'neljän',
-            'viiden',
-            'kuuden',
-            numbersPast[7],
-            numbersPast[8],
-            numbersPast[9],
-        ];
-    function translate$2(number, withoutSuffix, key, isFuture) {
-        var result = '';
-        switch (key) {
-            case 's':
-                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
-            case 'ss':
-                result = isFuture ? 'sekunnin' : 'sekuntia';
-                break;
-            case 'm':
-                return isFuture ? 'minuutin' : 'minuutti';
-            case 'mm':
-                result = isFuture ? 'minuutin' : 'minuuttia';
-                break;
-            case 'h':
-                return isFuture ? 'tunnin' : 'tunti';
-            case 'hh':
-                result = isFuture ? 'tunnin' : 'tuntia';
-                break;
-            case 'd':
-                return isFuture ? 'päivän' : 'päivä';
-            case 'dd':
-                result = isFuture ? 'päivän' : 'päivää';
-                break;
-            case 'M':
-                return isFuture ? 'kuukauden' : 'kuukausi';
-            case 'MM':
-                result = isFuture ? 'kuukauden' : 'kuukautta';
-                break;
-            case 'y':
-                return isFuture ? 'vuoden' : 'vuosi';
-            case 'yy':
-                result = isFuture ? 'vuoden' : 'vuotta';
-                break;
-        }
-        result = verbalNumber(number, isFuture) + ' ' + result;
-        return result;
-    }
-    function verbalNumber(number, isFuture) {
-        return number < 10
-            ? isFuture
-                ? numbersFuture[number]
-                : numbersPast[number]
-            : number;
-    }
-
-    moment.defineLocale('fi', {
-        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
-            '_'
-        ),
-        monthsShort:
-            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
-                '_'
-            ),
-        weekdays:
-            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
-                '_'
-            ),
-        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[ta] YYYY',
-            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
-            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
-            l: 'D.M.YYYY',
-            ll: 'Do MMM YYYY',
-            lll: 'Do MMM YYYY, [klo] HH.mm',
-            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
-        },
-        calendar: {
-            sameDay: '[tänään] [klo] LT',
-            nextDay: '[huomenna] [klo] LT',
-            nextWeek: 'dddd [klo] LT',
-            lastDay: '[eilen] [klo] LT',
-            lastWeek: '[viime] dddd[na] [klo] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s päästä',
-            past: '%s sitten',
-            s: translate$2,
-            ss: translate$2,
-            m: translate$2,
-            mm: translate$2,
-            h: translate$2,
-            hh: translate$2,
-            d: translate$2,
-            dd: translate$2,
-            M: translate$2,
-            MM: translate$2,
-            y: translate$2,
-            yy: translate$2,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('fil', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('fo', {
-        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
-        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D. MMMM, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Í dag kl.] LT',
-            nextDay: '[Í morgin kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[Í gjár kl.] LT',
-            lastWeek: '[síðstu] dddd [kl] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'um %s',
-            past: '%s síðani',
-            s: 'fá sekund',
-            ss: '%d sekundir',
-            m: 'ein minuttur',
-            mm: '%d minuttir',
-            h: 'ein tími',
-            hh: '%d tímar',
-            d: 'ein dagur',
-            dd: '%d dagar',
-            M: 'ein mánaður',
-            MM: '%d mánaðir',
-            y: 'eitt ár',
-            yy: '%d ár',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('fr-ca', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('fr-ch', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsStrictRegex$1 =
-            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsShortStrictRegex$1 =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
-        monthsRegex$6 =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsParse$6 = [
-            /^janv/i,
-            /^févr/i,
-            /^mars/i,
-            /^avr/i,
-            /^mai/i,
-            /^juin/i,
-            /^juil/i,
-            /^août/i,
-            /^sept/i,
-            /^oct/i,
-            /^nov/i,
-            /^déc/i,
-        ];
-
-    moment.defineLocale('fr', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsRegex: monthsRegex$6,
-        monthsShortRegex: monthsRegex$6,
-        monthsStrictRegex: monthsStrictRegex$1,
-        monthsShortStrictRegex: monthsShortStrictRegex$1,
-        monthsParse: monthsParse$6,
-        longMonthsParse: monthsParse$6,
-        shortMonthsParse: monthsParse$6,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            w: 'une semaine',
-            ww: '%d semaines',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // TODO: Return 'e' when day of month > 1. Move this case inside
-                // block for masculine words below.
-                // See https://github.com/moment/moment/issues/3375
-                case 'D':
-                    return number + (number === 1 ? 'er' : '');
-
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots =
-            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
-        monthsShortWithoutDots =
-            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
-
-    moment.defineLocale('fy', {
-        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots[m.month()];
-            } else {
-                return monthsShortWithDots[m.month()];
-            }
-        },
-        monthsParseExact: true,
-        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
-            '_'
-        ),
-        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
-        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[hjoed om] LT',
-            nextDay: '[moarn om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[juster om] LT',
-            lastWeek: '[ôfrûne] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oer %s',
-            past: '%s lyn',
-            s: 'in pear sekonden',
-            ss: '%d sekonden',
-            m: 'ien minút',
-            mm: '%d minuten',
-            h: 'ien oere',
-            hh: '%d oeren',
-            d: 'ien dei',
-            dd: '%d dagen',
-            M: 'ien moanne',
-            MM: '%d moannen',
-            y: 'ien jier',
-            yy: '%d jierren',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$5 = [
-            'Eanáir',
-            'Feabhra',
-            'Márta',
-            'Aibreán',
-            'Bealtaine',
-            'Meitheamh',
-            'Iúil',
-            'Lúnasa',
-            'Meán Fómhair',
-            'Deireadh Fómhair',
-            'Samhain',
-            'Nollaig',
-        ],
-        monthsShort$5 = [
-            'Ean',
-            'Feabh',
-            'Márt',
-            'Aib',
-            'Beal',
-            'Meith',
-            'Iúil',
-            'Lún',
-            'M.F.',
-            'D.F.',
-            'Samh',
-            'Noll',
-        ],
-        weekdays$1 = [
-            'Dé Domhnaigh',
-            'Dé Luain',
-            'Dé Máirt',
-            'Dé Céadaoin',
-            'Déardaoin',
-            'Dé hAoine',
-            'Dé Sathairn',
-        ],
-        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
-        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
-
-    moment.defineLocale('ga', {
-        months: months$5,
-        monthsShort: monthsShort$5,
-        monthsParseExact: true,
-        weekdays: weekdays$1,
-        weekdaysShort: weekdaysShort,
-        weekdaysMin: weekdaysMin,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Inniu ag] LT',
-            nextDay: '[Amárach ag] LT',
-            nextWeek: 'dddd [ag] LT',
-            lastDay: '[Inné ag] LT',
-            lastWeek: 'dddd [seo caite] [ag] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i %s',
-            past: '%s ó shin',
-            s: 'cúpla soicind',
-            ss: '%d soicind',
-            m: 'nóiméad',
-            mm: '%d nóiméad',
-            h: 'uair an chloig',
-            hh: '%d uair an chloig',
-            d: 'lá',
-            dd: '%d lá',
-            M: 'mí',
-            MM: '%d míonna',
-            y: 'bliain',
-            yy: '%d bliain',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$6 = [
-            'Am Faoilleach',
-            'An Gearran',
-            'Am Màrt',
-            'An Giblean',
-            'An Cèitean',
-            'An t-Ògmhios',
-            'An t-Iuchar',
-            'An Lùnastal',
-            'An t-Sultain',
-            'An Dàmhair',
-            'An t-Samhain',
-            'An Dùbhlachd',
-        ],
-        monthsShort$6 = [
-            'Faoi',
-            'Gear',
-            'Màrt',
-            'Gibl',
-            'Cèit',
-            'Ògmh',
-            'Iuch',
-            'Lùn',
-            'Sult',
-            'Dàmh',
-            'Samh',
-            'Dùbh',
-        ],
-        weekdays$2 = [
-            'Didòmhnaich',
-            'Diluain',
-            'Dimàirt',
-            'Diciadain',
-            'Diardaoin',
-            'Dihaoine',
-            'Disathairne',
-        ],
-        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
-        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
-
-    moment.defineLocale('gd', {
-        months: months$6,
-        monthsShort: monthsShort$6,
-        monthsParseExact: true,
-        weekdays: weekdays$2,
-        weekdaysShort: weekdaysShort$1,
-        weekdaysMin: weekdaysMin$1,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[An-diugh aig] LT',
-            nextDay: '[A-màireach aig] LT',
-            nextWeek: 'dddd [aig] LT',
-            lastDay: '[An-dè aig] LT',
-            lastWeek: 'dddd [seo chaidh] [aig] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ann an %s',
-            past: 'bho chionn %s',
-            s: 'beagan diogan',
-            ss: '%d diogan',
-            m: 'mionaid',
-            mm: '%d mionaidean',
-            h: 'uair',
-            hh: '%d uairean',
-            d: 'latha',
-            dd: '%d latha',
-            M: 'mìos',
-            MM: '%d mìosan',
-            y: 'bliadhna',
-            yy: '%d bliadhna',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('gl', {
-        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort:
-            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
-            },
-            lastDay: function () {
-                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (str) {
-                if (str.indexOf('un') === 0) {
-                    return 'n' + str;
-                }
-                return 'en ' + str;
-            },
-            past: 'hai %s',
-            s: 'uns segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'unha hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
-            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
-            m: ['एका मिणटान', 'एक मिनूट'],
-            mm: [number + ' मिणटांनी', number + ' मिणटां'],
-            h: ['एका वरान', 'एक वर'],
-            hh: [number + ' वरांनी', number + ' वरां'],
-            d: ['एका दिसान', 'एक दीस'],
-            dd: [number + ' दिसांनी', number + ' दीस'],
-            M: ['एका म्हयन्यान', 'एक म्हयनो'],
-            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
-            y: ['एका वर्सान', 'एक वर्स'],
-            yy: [number + ' वर्सांनी', number + ' वर्सां'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('gom-deva', {
-        months: {
-            standalone:
-                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-                    '_'
-                ),
-            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
-        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
-        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [वाजतां]',
-            LTS: 'A h:mm:ss [वाजतां]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
-            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
-        },
-        calendar: {
-            sameDay: '[आयज] LT',
-            nextDay: '[फाल्यां] LT',
-            nextWeek: '[फुडलो] dddd[,] LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[फाटलो] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s आदीं',
-            s: processRelativeTime$5,
-            ss: processRelativeTime$5,
-            m: processRelativeTime$5,
-            mm: processRelativeTime$5,
-            h: processRelativeTime$5,
-            hh: processRelativeTime$5,
-            d: processRelativeTime$5,
-            dd: processRelativeTime$5,
-            M: processRelativeTime$5,
-            MM: processRelativeTime$5,
-            y: processRelativeTime$5,
-            yy: processRelativeTime$5,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'वेर' only applies to day of the month
-                case 'D':
-                    return number + 'वेर';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राती') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सकाळीं') {
-                return hour;
-            } else if (meridiem === 'दनपारां') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'सांजे') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'राती';
-            } else if (hour < 12) {
-                return 'सकाळीं';
-            } else if (hour < 16) {
-                return 'दनपारां';
-            } else if (hour < 20) {
-                return 'सांजे';
-            } else {
-                return 'राती';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['thoddea sekondamni', 'thodde sekond'],
-            ss: [number + ' sekondamni', number + ' sekond'],
-            m: ['eka mintan', 'ek minut'],
-            mm: [number + ' mintamni', number + ' mintam'],
-            h: ['eka voran', 'ek vor'],
-            hh: [number + ' voramni', number + ' voram'],
-            d: ['eka disan', 'ek dis'],
-            dd: [number + ' disamni', number + ' dis'],
-            M: ['eka mhoinean', 'ek mhoino'],
-            MM: [number + ' mhoineamni', number + ' mhoine'],
-            y: ['eka vorsan', 'ek voros'],
-            yy: [number + ' vorsamni', number + ' vorsam'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    moment.defineLocale('gom-latn', {
-        months: {
-            standalone:
-                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
-                    '_'
-                ),
-            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
-        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
-        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [vazta]',
-            LTS: 'A h:mm:ss [vazta]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [vazta]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
-            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
-        },
-        calendar: {
-            sameDay: '[Aiz] LT',
-            nextDay: '[Faleam] LT',
-            nextWeek: '[Fuddlo] dddd[,] LT',
-            lastDay: '[Kal] LT',
-            lastWeek: '[Fattlo] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s adim',
-            s: processRelativeTime$6,
-            ss: processRelativeTime$6,
-            m: processRelativeTime$6,
-            mm: processRelativeTime$6,
-            h: processRelativeTime$6,
-            hh: processRelativeTime$6,
-            d: processRelativeTime$6,
-            dd: processRelativeTime$6,
-            M: processRelativeTime$6,
-            MM: processRelativeTime$6,
-            y: processRelativeTime$6,
-            yy: processRelativeTime$6,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'er' only applies to day of the month
-                case 'D':
-                    return number + 'er';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /rati|sokallim|donparam|sanje/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'rati') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'sokallim') {
-                return hour;
-            } else if (meridiem === 'donparam') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'sanje') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'rati';
-            } else if (hour < 12) {
-                return 'sokallim';
-            } else if (hour < 16) {
-                return 'donparam';
-            } else if (hour < 20) {
-                return 'sanje';
-            } else {
-                return 'rati';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$8 = {
-            1: '૧',
-            2: '૨',
-            3: '૩',
-            4: '૪',
-            5: '૫',
-            6: '૬',
-            7: '૭',
-            8: '૮',
-            9: '૯',
-            0: '૦',
-        },
-        numberMap$7 = {
-            '૧': '1',
-            '૨': '2',
-            '૩': '3',
-            '૪': '4',
-            '૫': '5',
-            '૬': '6',
-            '૭': '7',
-            '૮': '8',
-            '૯': '9',
-            '૦': '0',
-        };
-
-    moment.defineLocale('gu', {
-        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
-            '_'
-        ),
-        monthsShort:
-            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
-            '_'
-        ),
-        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
-        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm વાગ્યે',
-            LTS: 'A h:mm:ss વાગ્યે',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
-        },
-        calendar: {
-            sameDay: '[આજ] LT',
-            nextDay: '[કાલે] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ગઇકાલે] LT',
-            lastWeek: '[પાછલા] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s મા',
-            past: '%s પહેલા',
-            s: 'અમુક પળો',
-            ss: '%d સેકંડ',
-            m: 'એક મિનિટ',
-            mm: '%d મિનિટ',
-            h: 'એક કલાક',
-            hh: '%d કલાક',
-            d: 'એક દિવસ',
-            dd: '%d દિવસ',
-            M: 'એક મહિનો',
-            MM: '%d મહિનો',
-            y: 'એક વર્ષ',
-            yy: '%d વર્ષ',
-        },
-        preparse: function (string) {
-            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
-                return numberMap$7[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$8[match];
-            });
-        },
-        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
-        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'રાત') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'સવાર') {
-                return hour;
-            } else if (meridiem === 'બપોર') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'સાંજ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'રાત';
-            } else if (hour < 10) {
-                return 'સવાર';
-            } else if (hour < 17) {
-                return 'બપોર';
-            } else if (hour < 20) {
-                return 'સાંજ';
-            } else {
-                return 'રાત';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('he', {
-        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
-            '_'
-        ),
-        monthsShort:
-            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
-        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
-        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
-        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [ב]MMMM YYYY',
-            LLL: 'D [ב]MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[היום ב־]LT',
-            nextDay: '[מחר ב־]LT',
-            nextWeek: 'dddd [בשעה] LT',
-            lastDay: '[אתמול ב־]LT',
-            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'בעוד %s',
-            past: 'לפני %s',
-            s: 'מספר שניות',
-            ss: '%d שניות',
-            m: 'דקה',
-            mm: '%d דקות',
-            h: 'שעה',
-            hh: function (number) {
-                if (number === 2) {
-                    return 'שעתיים';
-                }
-                return number + ' שעות';
-            },
-            d: 'יום',
-            dd: function (number) {
-                if (number === 2) {
-                    return 'יומיים';
-                }
-                return number + ' ימים';
-            },
-            M: 'חודש',
-            MM: function (number) {
-                if (number === 2) {
-                    return 'חודשיים';
-                }
-                return number + ' חודשים';
-            },
-            y: 'שנה',
-            yy: function (number) {
-                if (number === 2) {
-                    return 'שנתיים';
-                } else if (number % 10 === 0 && number !== 10) {
-                    return number + ' שנה';
-                }
-                return number + ' שנים';
-            },
-        },
-        meridiemParse:
-            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
-        isPM: function (input) {
-            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 5) {
-                return 'לפנות בוקר';
-            } else if (hour < 10) {
-                return 'בבוקר';
-            } else if (hour < 12) {
-                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
-            } else if (hour < 18) {
-                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
-            } else {
-                return 'בערב';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$9 = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$8 = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        },
-        monthsParse$7 = [
-            /^जन/i,
-            /^फ़र|फर/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सितं|सित/i,
-            /^अक्टू/i,
-            /^नव|नवं/i,
-            /^दिसं|दिस/i,
-        ],
-        shortMonthsParse = [
-            /^जन/i,
-            /^फ़र/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सित/i,
-            /^अक्टू/i,
-            /^नव/i,
-            /^दिस/i,
-        ];
-
-    moment.defineLocale('hi', {
-        months: {
-            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
-                '_'
-            ),
-            standalone:
-                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
-        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm बजे',
-            LTS: 'A h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
-        },
-
-        monthsParse: monthsParse$7,
-        longMonthsParse: monthsParse$7,
-        shortMonthsParse: shortMonthsParse,
-
-        monthsRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsShortRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsStrictRegex:
-            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
-
-        monthsShortStrictRegex:
-            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
-
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[कल] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[कल] LT',
-            lastWeek: '[पिछले] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s में',
-            past: '%s पहले',
-            s: 'कुछ ही क्षण',
-            ss: '%d सेकंड',
-            m: 'एक मिनट',
-            mm: '%d मिनट',
-            h: 'एक घंटा',
-            hh: '%d घंटे',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महीने',
-            MM: '%d महीने',
-            y: 'एक वर्ष',
-            yy: '%d वर्ष',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$8[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$9[match];
-            });
-        },
-        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-        meridiemParse: /रात|सुबह|दोपहर|शाम/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'रात') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सुबह') {
-                return hour;
-            } else if (meridiem === 'दोपहर') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'शाम') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'रात';
-            } else if (hour < 10) {
-                return 'सुबह';
-            } else if (hour < 17) {
-                return 'दोपहर';
-            } else if (hour < 20) {
-                return 'शाम';
-            } else {
-                return 'रात';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function translate$3(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jednog sata';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    moment.defineLocale('hr', {
-        months: {
-            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
-                '_'
-            ),
-            standalone:
-                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM YYYY',
-            LLL: 'Do MMMM YYYY H:mm',
-            LLLL: 'dddd, Do MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prošlu] [nedjelju] [u] LT';
-                    case 3:
-                        return '[prošlu] [srijedu] [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate$3,
-            m: translate$3,
-            mm: translate$3,
-            h: translate$3,
-            hh: translate$3,
-            d: 'dan',
-            dd: translate$3,
-            M: 'mjesec',
-            MM: translate$3,
-            y: 'godinu',
-            yy: translate$3,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var weekEndings =
-        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-    function translate$4(number, withoutSuffix, key, isFuture) {
-        var num = number;
-        switch (key) {
-            case 's':
-                return isFuture || withoutSuffix
-                    ? 'néhány másodperc'
-                    : 'néhány másodperce';
-            case 'ss':
-                return num + (isFuture || withoutSuffix)
-                    ? ' másodperc'
-                    : ' másodperce';
-            case 'm':
-                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'mm':
-                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'h':
-                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'hh':
-                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'd':
-                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'dd':
-                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'M':
-                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'MM':
-                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'y':
-                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
-            case 'yy':
-                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
-        }
-        return '';
-    }
-    function week(isFuture) {
-        return (
-            (isFuture ? '' : '[múlt] ') +
-            '[' +
-            weekEndings[this.day()] +
-            '] LT[-kor]'
-        );
-    }
-
-    moment.defineLocale('hu', {
-        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
-        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
-        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY. MMMM D.',
-            LLL: 'YYYY. MMMM D. H:mm',
-            LLLL: 'YYYY. MMMM D., dddd H:mm',
-        },
-        meridiemParse: /de|du/i,
-        isPM: function (input) {
-            return input.charAt(1).toLowerCase() === 'u';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower === true ? 'de' : 'DE';
-            } else {
-                return isLower === true ? 'du' : 'DU';
-            }
-        },
-        calendar: {
-            sameDay: '[ma] LT[-kor]',
-            nextDay: '[holnap] LT[-kor]',
-            nextWeek: function () {
-                return week.call(this, true);
-            },
-            lastDay: '[tegnap] LT[-kor]',
-            lastWeek: function () {
-                return week.call(this, false);
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s múlva',
-            past: '%s',
-            s: translate$4,
-            ss: translate$4,
-            m: translate$4,
-            mm: translate$4,
-            h: translate$4,
-            hh: translate$4,
-            d: translate$4,
-            dd: translate$4,
-            M: translate$4,
-            MM: translate$4,
-            y: translate$4,
-            yy: translate$4,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('hy-am', {
-        months: {
-            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
-                '_'
-            ),
-            standalone:
-                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
-        weekdays:
-            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
-                '_'
-            ),
-        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY թ.',
-            LLL: 'D MMMM YYYY թ., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
-        },
-        calendar: {
-            sameDay: '[այսօր] LT',
-            nextDay: '[վաղը] LT',
-            lastDay: '[երեկ] LT',
-            nextWeek: function () {
-                return 'dddd [օրը ժամը] LT';
-            },
-            lastWeek: function () {
-                return '[անցած] dddd [օրը ժամը] LT';
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s հետո',
-            past: '%s առաջ',
-            s: 'մի քանի վայրկյան',
-            ss: '%d վայրկյան',
-            m: 'րոպե',
-            mm: '%d րոպե',
-            h: 'ժամ',
-            hh: '%d ժամ',
-            d: 'օր',
-            dd: '%d օր',
-            M: 'ամիս',
-            MM: '%d ամիս',
-            y: 'տարի',
-            yy: '%d տարի',
-        },
-        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
-        isPM: function (input) {
-            return /^(ցերեկվա|երեկոյան)$/.test(input);
-        },
-        meridiem: function (hour) {
-            if (hour < 4) {
-                return 'գիշերվա';
-            } else if (hour < 12) {
-                return 'առավոտվա';
-            } else if (hour < 17) {
-                return 'ցերեկվա';
-            } else {
-                return 'երեկոյան';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'DDD':
-                case 'w':
-                case 'W':
-                case 'DDDo':
-                    if (number === 1) {
-                        return number + '-ին';
-                    }
-                    return number + '-րդ';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('id', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|siang|sore|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'siang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sore' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'siang';
-            } else if (hours < 19) {
-                return 'sore';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Besok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kemarin pukul] LT',
-            lastWeek: 'dddd [lalu pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lalu',
-            s: 'beberapa detik',
-            ss: '%d detik',
-            m: 'semenit',
-            mm: '%d menit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$2(n) {
-        if (n % 100 === 11) {
-            return true;
-        } else if (n % 10 === 1) {
-            return false;
-        }
-        return true;
-    }
-    function translate$5(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nokkrar sekúndur'
-                    : 'nokkrum sekúndum';
-            case 'ss':
-                if (plural$2(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
-                    );
-                }
-                return result + 'sekúnda';
-            case 'm':
-                return withoutSuffix ? 'mínúta' : 'mínútu';
-            case 'mm':
-                if (plural$2(number)) {
-                    return (
-                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
-                    );
-                } else if (withoutSuffix) {
-                    return result + 'mínúta';
-                }
-                return result + 'mínútu';
-            case 'hh':
-                if (plural$2(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture
-                            ? 'klukkustundir'
-                            : 'klukkustundum')
-                    );
-                }
-                return result + 'klukkustund';
-            case 'd':
-                if (withoutSuffix) {
-                    return 'dagur';
-                }
-                return isFuture ? 'dag' : 'degi';
-            case 'dd':
-                if (plural$2(number)) {
-                    if (withoutSuffix) {
-                        return result + 'dagar';
-                    }
-                    return result + (isFuture ? 'daga' : 'dögum');
-                } else if (withoutSuffix) {
-                    return result + 'dagur';
-                }
-                return result + (isFuture ? 'dag' : 'degi');
-            case 'M':
-                if (withoutSuffix) {
-                    return 'mánuður';
-                }
-                return isFuture ? 'mánuð' : 'mánuði';
-            case 'MM':
-                if (plural$2(number)) {
-                    if (withoutSuffix) {
-                        return result + 'mánuðir';
-                    }
-                    return result + (isFuture ? 'mánuði' : 'mánuðum');
-                } else if (withoutSuffix) {
-                    return result + 'mánuður';
-                }
-                return result + (isFuture ? 'mánuð' : 'mánuði');
-            case 'y':
-                return withoutSuffix || isFuture ? 'ár' : 'ári';
-            case 'yy':
-                if (plural$2(number)) {
-                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
-                }
-                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
-        }
-    }
-
-    moment.defineLocale('is', {
-        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
-        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
-        },
-        calendar: {
-            sameDay: '[í dag kl.] LT',
-            nextDay: '[á morgun kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[í gær kl.] LT',
-            lastWeek: '[síðasta] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'eftir %s',
-            past: 'fyrir %s síðan',
-            s: translate$5,
-            ss: translate$5,
-            m: translate$5,
-            mm: translate$5,
-            h: 'klukkustund',
-            hh: translate$5,
-            d: translate$5,
-            dd: translate$5,
-            M: translate$5,
-            MM: translate$5,
-            y: translate$5,
-            yy: translate$5,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('it-ch', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Oggi alle] LT',
-            nextDay: '[Domani alle] LT',
-            nextWeek: 'dddd [alle] LT',
-            lastDay: '[Ieri alle] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[la scorsa] dddd [alle] LT';
-                    default:
-                        return '[lo scorso] dddd [alle] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
-            },
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('it', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return (
-                    '[Oggi a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextDay: function () {
-                return (
-                    '[Domani a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextWeek: function () {
-                return (
-                    'dddd [a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastDay: function () {
-                return (
-                    '[Ieri a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return (
-                            '[La scorsa] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                    default:
-                        return (
-                            '[Lo scorso] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'tra %s',
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            w: 'una settimana',
-            ww: '%d settimane',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ja', {
-        eras: [
-            {
-                since: '2019-05-01',
-                offset: 1,
-                name: '令和',
-                narrow: '㋿',
-                abbr: 'R',
-            },
-            {
-                since: '1989-01-08',
-                until: '2019-04-30',
-                offset: 1,
-                name: '平成',
-                narrow: '㍻',
-                abbr: 'H',
-            },
-            {
-                since: '1926-12-25',
-                until: '1989-01-07',
-                offset: 1,
-                name: '昭和',
-                narrow: '㍼',
-                abbr: 'S',
-            },
-            {
-                since: '1912-07-30',
-                until: '1926-12-24',
-                offset: 1,
-                name: '大正',
-                narrow: '㍽',
-                abbr: 'T',
-            },
-            {
-                since: '1873-01-01',
-                until: '1912-07-29',
-                offset: 6,
-                name: '明治',
-                narrow: '㍾',
-                abbr: 'M',
-            },
-            {
-                since: '0001-01-01',
-                until: '1873-12-31',
-                offset: 1,
-                name: '西暦',
-                narrow: 'AD',
-                abbr: 'AD',
-            },
-            {
-                since: '0000-12-31',
-                until: -Infinity,
-                offset: 1,
-                name: '紀元前',
-                narrow: 'BC',
-                abbr: 'BC',
-            },
-        ],
-        eraYearOrdinalRegex: /(元|\d+)年/,
-        eraYearOrdinalParse: function (input, match) {
-            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
-        },
-        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
-        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
-        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日 dddd HH:mm',
-            l: 'YYYY/MM/DD',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日(ddd) HH:mm',
-        },
-        meridiemParse: /午前|午後/i,
-        isPM: function (input) {
-            return input === '午後';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return '午前';
-            } else {
-                return '午後';
-            }
-        },
-        calendar: {
-            sameDay: '[今日] LT',
-            nextDay: '[明日] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[来週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            lastDay: '[昨日] LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[先週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}日/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'y':
-                    return number === 1 ? '元年' : number + '年';
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '数秒',
-            ss: '%d秒',
-            m: '1分',
-            mm: '%d分',
-            h: '1時間',
-            hh: '%d時間',
-            d: '1日',
-            dd: '%d日',
-            M: '1ヶ月',
-            MM: '%dヶ月',
-            y: '1年',
-            yy: '%d年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('jv', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
-        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /enjing|siyang|sonten|ndalu/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'enjing') {
-                return hour;
-            } else if (meridiem === 'siyang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'enjing';
-            } else if (hours < 15) {
-                return 'siyang';
-            } else if (hours < 19) {
-                return 'sonten';
-            } else {
-                return 'ndalu';
-            }
-        },
-        calendar: {
-            sameDay: '[Dinten puniko pukul] LT',
-            nextDay: '[Mbenjang pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kala wingi pukul] LT',
-            lastWeek: 'dddd [kepengker pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'wonten ing %s',
-            past: '%s ingkang kepengker',
-            s: 'sawetawis detik',
-            ss: '%d detik',
-            m: 'setunggal menit',
-            mm: '%d menit',
-            h: 'setunggal jam',
-            hh: '%d jam',
-            d: 'sedinten',
-            dd: '%d dinten',
-            M: 'sewulan',
-            MM: '%d wulan',
-            y: 'setaun',
-            yy: '%d taun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ka', {
-        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
-            '_'
-        ),
-        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
-        weekdays: {
-            standalone:
-                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
-                    '_'
-                ),
-            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
-                '_'
-            ),
-            isFormat: /(წინა|შემდეგ)/,
-        },
-        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
-        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[დღეს] LT[-ზე]',
-            nextDay: '[ხვალ] LT[-ზე]',
-            lastDay: '[გუშინ] LT[-ზე]',
-            nextWeek: '[შემდეგ] dddd LT[-ზე]',
-            lastWeek: '[წინა] dddd LT-ზე',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return s.replace(
-                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
-                    function ($0, $1, $2) {
-                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
-                    }
-                );
-            },
-            past: function (s) {
-                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
-                    return s.replace(/(ი|ე)$/, 'ის წინ');
-                }
-                if (/წელი/.test(s)) {
-                    return s.replace(/წელი$/, 'წლის წინ');
-                }
-                return s;
-            },
-            s: 'რამდენიმე წამი',
-            ss: '%d წამი',
-            m: 'წუთი',
-            mm: '%d წუთი',
-            h: 'საათი',
-            hh: '%d საათი',
-            d: 'დღე',
-            dd: '%d დღე',
-            M: 'თვე',
-            MM: '%d თვე',
-            y: 'წელი',
-            yy: '%d წელი',
-        },
-        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
-        ordinal: function (number) {
-            if (number === 0) {
-                return number;
-            }
-            if (number === 1) {
-                return number + '-ლი';
-            }
-            if (
-                number < 20 ||
-                (number <= 100 && number % 20 === 0) ||
-                number % 100 === 0
-            ) {
-                return 'მე-' + number;
-            }
-            return number + '-ე';
-        },
-        week: {
-            dow: 1,
-            doy: 7,
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$1 = {
-        0: '-ші',
-        1: '-ші',
-        2: '-ші',
-        3: '-ші',
-        4: '-ші',
-        5: '-ші',
-        6: '-шы',
-        7: '-ші',
-        8: '-ші',
-        9: '-шы',
-        10: '-шы',
-        20: '-шы',
-        30: '-шы',
-        40: '-шы',
-        50: '-ші',
-        60: '-шы',
-        70: '-ші',
-        80: '-ші',
-        90: '-шы',
-        100: '-ші',
-    };
-
-    moment.defineLocale('kk', {
-        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
-            '_'
-        ),
-        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
-        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
-            '_'
-        ),
-        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
-        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгін сағат] LT',
-            nextDay: '[Ертең сағат] LT',
-            nextWeek: 'dddd [сағат] LT',
-            lastDay: '[Кеше сағат] LT',
-            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ішінде',
-            past: '%s бұрын',
-            s: 'бірнеше секунд',
-            ss: '%d секунд',
-            m: 'бір минут',
-            mm: '%d минут',
-            h: 'бір сағат',
-            hh: '%d сағат',
-            d: 'бір күн',
-            dd: '%d күн',
-            M: 'бір ай',
-            MM: '%d ай',
-            y: 'бір жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$a = {
-            1: '១',
-            2: '២',
-            3: '៣',
-            4: '៤',
-            5: '៥',
-            6: '៦',
-            7: '៧',
-            8: '៨',
-            9: '៩',
-            0: '០',
-        },
-        numberMap$9 = {
-            '១': '1',
-            '២': '2',
-            '៣': '3',
-            '៤': '4',
-            '៥': '5',
-            '៦': '6',
-            '៧': '7',
-            '៨': '8',
-            '៩': '9',
-            '០': '0',
-        };
-
-    moment.defineLocale('km', {
-        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-            '_'
-        ),
-        monthsShort:
-            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-                '_'
-            ),
-        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
-        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ព្រឹក|ល្ងាច/,
-        isPM: function (input) {
-            return input === 'ល្ងាច';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ព្រឹក';
-            } else {
-                return 'ល្ងាច';
-            }
-        },
-        calendar: {
-            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
-            nextDay: '[ស្អែក ម៉ោង] LT',
-            nextWeek: 'dddd [ម៉ោង] LT',
-            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
-            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sទៀត',
-            past: '%sមុន',
-            s: 'ប៉ុន្មានវិនាទី',
-            ss: '%d វិនាទី',
-            m: 'មួយនាទី',
-            mm: '%d នាទី',
-            h: 'មួយម៉ោង',
-            hh: '%d ម៉ោង',
-            d: 'មួយថ្ងៃ',
-            dd: '%d ថ្ងៃ',
-            M: 'មួយខែ',
-            MM: '%d ខែ',
-            y: 'មួយឆ្នាំ',
-            yy: '%d ឆ្នាំ',
-        },
-        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
-        ordinal: 'ទី%d',
-        preparse: function (string) {
-            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
-                return numberMap$9[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$a[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$b = {
-            1: '೧',
-            2: '೨',
-            3: '೩',
-            4: '೪',
-            5: '೫',
-            6: '೬',
-            7: '೭',
-            8: '೮',
-            9: '೯',
-            0: '೦',
-        },
-        numberMap$a = {
-            '೧': '1',
-            '೨': '2',
-            '೩': '3',
-            '೪': '4',
-            '೫': '5',
-            '೬': '6',
-            '೭': '7',
-            '೮': '8',
-            '೯': '9',
-            '೦': '0',
-        };
-
-    moment.defineLocale('kn', {
-        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
-            '_'
-        ),
-        monthsShort:
-            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
-        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[ಇಂದು] LT',
-            nextDay: '[ನಾಳೆ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ನಿನ್ನೆ] LT',
-            lastWeek: '[ಕೊನೆಯ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ನಂತರ',
-            past: '%s ಹಿಂದೆ',
-            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
-            ss: '%d ಸೆಕೆಂಡುಗಳು',
-            m: 'ಒಂದು ನಿಮಿಷ',
-            mm: '%d ನಿಮಿಷ',
-            h: 'ಒಂದು ಗಂಟೆ',
-            hh: '%d ಗಂಟೆ',
-            d: 'ಒಂದು ದಿನ',
-            dd: '%d ದಿನ',
-            M: 'ಒಂದು ತಿಂಗಳು',
-            MM: '%d ತಿಂಗಳು',
-            y: 'ಒಂದು ವರ್ಷ',
-            yy: '%d ವರ್ಷ',
-        },
-        preparse: function (string) {
-            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
-                return numberMap$a[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$b[match];
-            });
-        },
-        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ರಾತ್ರಿ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
-                return hour;
-            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ಸಂಜೆ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ರಾತ್ರಿ';
-            } else if (hour < 10) {
-                return 'ಬೆಳಿಗ್ಗೆ';
-            } else if (hour < 17) {
-                return 'ಮಧ್ಯಾಹ್ನ';
-            } else if (hour < 20) {
-                return 'ಸಂಜೆ';
-            } else {
-                return 'ರಾತ್ರಿ';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
-        ordinal: function (number) {
-            return number + 'ನೇ';
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ko', {
-        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
-        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
-            '_'
-        ),
-        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
-        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
-        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY년 MMMM D일',
-            LLL: 'YYYY년 MMMM D일 A h:mm',
-            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
-            l: 'YYYY.MM.DD.',
-            ll: 'YYYY년 MMMM D일',
-            lll: 'YYYY년 MMMM D일 A h:mm',
-            llll: 'YYYY년 MMMM D일 dddd A h:mm',
-        },
-        calendar: {
-            sameDay: '오늘 LT',
-            nextDay: '내일 LT',
-            nextWeek: 'dddd LT',
-            lastDay: '어제 LT',
-            lastWeek: '지난주 dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s 후',
-            past: '%s 전',
-            s: '몇 초',
-            ss: '%d초',
-            m: '1분',
-            mm: '%d분',
-            h: '한 시간',
-            hh: '%d시간',
-            d: '하루',
-            dd: '%d일',
-            M: '한 달',
-            MM: '%d달',
-            y: '일 년',
-            yy: '%d년',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '일';
-                case 'M':
-                    return number + '월';
-                case 'w':
-                case 'W':
-                    return number + '주';
-                default:
-                    return number;
-            }
-        },
-        meridiemParse: /오전|오후/,
-        isPM: function (token) {
-            return token === '오후';
-        },
-        meridiem: function (hour, minute, isUpper) {
-            return hour < 12 ? '오전' : '오후';
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$7(num, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['çend sanîye', 'çend sanîyeyan'],
-            ss: [num + ' sanîye', num + ' sanîyeyan'],
-            m: ['deqîqeyek', 'deqîqeyekê'],
-            mm: [num + ' deqîqe', num + ' deqîqeyan'],
-            h: ['saetek', 'saetekê'],
-            hh: [num + ' saet', num + ' saetan'],
-            d: ['rojek', 'rojekê'],
-            dd: [num + ' roj', num + ' rojan'],
-            w: ['hefteyek', 'hefteyekê'],
-            ww: [num + ' hefte', num + ' hefteyan'],
-            M: ['mehek', 'mehekê'],
-            MM: [num + ' meh', num + ' mehan'],
-            y: ['salek', 'salekê'],
-            yy: [num + ' sal', num + ' salan'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    // function obliqueNumSuffix(num) {
-    //     if(num.includes(':'))
-    //         num = parseInt(num.split(':')[0]);
-    //     else
-    //         num = parseInt(num);
-    //     return num == 0 || num % 10 == 1 ? 'ê'
-    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
-    // }
-    function ezafeNumSuffix(num) {
-        num = '' + num;
-        var l = num.substring(num.length - 1),
-            ll = num.length > 1 ? num.substring(num.length - 2) : '';
-        if (
-            !(ll == 12 || ll == 13) &&
-            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
-        )
-            return 'yê';
-        return 'ê';
-    }
-
-    moment.defineLocale('ku-kmr', {
-        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
-        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
-        // But the names below are more well known and handy
-        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
-            '_'
-        ),
-        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
-        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
-        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'bn' : 'BN';
-            } else {
-                return isLower ? 'pn' : 'PN';
-            }
-        },
-        meridiemParse: /bn|BN|pn|PN/,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[a] YYYY[an]',
-            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
-            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
-            ll: 'Do MMM[.] YYYY[an]',
-            lll: 'Do MMM[.] YYYY[an] HH:mm',
-            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Îro di saet] LT [de]',
-            nextDay: '[Sibê di saet] LT [de]',
-            nextWeek: 'dddd [di saet] LT [de]',
-            lastDay: '[Duh di saet] LT [de]',
-            lastWeek: 'dddd[a borî di saet] LT [de]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'di %s de',
-            past: 'berî %s',
-            s: processRelativeTime$7,
-            ss: processRelativeTime$7,
-            m: processRelativeTime$7,
-            mm: processRelativeTime$7,
-            h: processRelativeTime$7,
-            hh: processRelativeTime$7,
-            d: processRelativeTime$7,
-            dd: processRelativeTime$7,
-            w: processRelativeTime$7,
-            ww: processRelativeTime$7,
-            M: processRelativeTime$7,
-            MM: processRelativeTime$7,
-            y: processRelativeTime$7,
-            yy: processRelativeTime$7,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
-        ordinal: function (num, period) {
-            var p = period.toLowerCase();
-            if (p.includes('w') || p.includes('m')) return num + '.';
-
-            return num + ezafeNumSuffix(num);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$c = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$b = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        months$7 = [
-            'کانونی دووەم',
-            'شوبات',
-            'ئازار',
-            'نیسان',
-            'ئایار',
-            'حوزەیران',
-            'تەمموز',
-            'ئاب',
-            'ئەیلوول',
-            'تشرینی یەكەم',
-            'تشرینی دووەم',
-            'كانونی یەکەم',
-        ];
-
-    moment.defineLocale('ku', {
-        months: months$7,
-        monthsShort: months$7,
-        weekdays:
-            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
-        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ئێواره‌|به‌یانی/,
-        isPM: function (input) {
-            return /ئێواره‌/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'به‌یانی';
-            } else {
-                return 'ئێواره‌';
-            }
-        },
-        calendar: {
-            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
-            nextDay: '[به‌یانی كاتژمێر] LT',
-            nextWeek: 'dddd [كاتژمێر] LT',
-            lastDay: '[دوێنێ كاتژمێر] LT',
-            lastWeek: 'dddd [كاتژمێر] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'له‌ %s',
-            past: '%s',
-            s: 'چه‌ند چركه‌یه‌ك',
-            ss: 'چركه‌ %d',
-            m: 'یه‌ك خوله‌ك',
-            mm: '%d خوله‌ك',
-            h: 'یه‌ك كاتژمێر',
-            hh: '%d كاتژمێر',
-            d: 'یه‌ك ڕۆژ',
-            dd: '%d ڕۆژ',
-            M: 'یه‌ك مانگ',
-            MM: '%d مانگ',
-            y: 'یه‌ك ساڵ',
-            yy: '%d ساڵ',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$b[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$c[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$2 = {
-        0: '-чү',
-        1: '-чи',
-        2: '-чи',
-        3: '-чү',
-        4: '-чү',
-        5: '-чи',
-        6: '-чы',
-        7: '-чи',
-        8: '-чи',
-        9: '-чу',
-        10: '-чу',
-        20: '-чы',
-        30: '-чу',
-        40: '-чы',
-        50: '-чү',
-        60: '-чы',
-        70: '-чи',
-        80: '-чи',
-        90: '-чу',
-        100: '-чү',
-    };
-
-    moment.defineLocale('ky', {
-        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
-            '_'
-        ),
-        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
-            '_'
-        ),
-        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
-        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгүн саат] LT',
-            nextDay: '[Эртең саат] LT',
-            nextWeek: 'dddd [саат] LT',
-            lastDay: '[Кечээ саат] LT',
-            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ичинде',
-            past: '%s мурун',
-            s: 'бирнече секунд',
-            ss: '%d секунд',
-            m: 'бир мүнөт',
-            mm: '%d мүнөт',
-            h: 'бир саат',
-            hh: '%d саат',
-            d: 'бир күн',
-            dd: '%d күн',
-            M: 'бир ай',
-            MM: '%d ай',
-            y: 'бир жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eng Minutt', 'enger Minutt'],
-            h: ['eng Stonn', 'enger Stonn'],
-            d: ['een Dag', 'engem Dag'],
-            M: ['ee Mount', 'engem Mount'],
-            y: ['ee Joer', 'engem Joer'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    function processFutureTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'a ' + string;
-        }
-        return 'an ' + string;
-    }
-    function processPastTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'viru ' + string;
-        }
-        return 'virun ' + string;
-    }
-    /**
-     * Returns true if the word before the given number loses the '-n' ending.
-     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
-     *
-     * @param number {integer}
-     * @returns {boolean}
-     */
-    function eifelerRegelAppliesToNumber(number) {
-        number = parseInt(number, 10);
-        if (isNaN(number)) {
-            return false;
-        }
-        if (number < 0) {
-            // Negative Number --> always true
-            return true;
-        } else if (number < 10) {
-            // Only 1 digit
-            if (4 <= number && number <= 7) {
-                return true;
-            }
-            return false;
-        } else if (number < 100) {
-            // 2 digits
-            var lastDigit = number % 10,
-                firstDigit = number / 10;
-            if (lastDigit === 0) {
-                return eifelerRegelAppliesToNumber(firstDigit);
-            }
-            return eifelerRegelAppliesToNumber(lastDigit);
-        } else if (number < 10000) {
-            // 3 or 4 digits --> recursively check first digit
-            while (number >= 10) {
-                number = number / 10;
-            }
-            return eifelerRegelAppliesToNumber(number);
-        } else {
-            // Anything larger than 4 digits: recursively check first n-3 digits
-            number = number / 1000;
-            return eifelerRegelAppliesToNumber(number);
-        }
-    }
-
-    moment.defineLocale('lb', {
-        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm [Auer]',
-            LTS: 'H:mm:ss [Auer]',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm [Auer]',
-            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
-        },
-        calendar: {
-            sameDay: '[Haut um] LT',
-            sameElse: 'L',
-            nextDay: '[Muer um] LT',
-            nextWeek: 'dddd [um] LT',
-            lastDay: '[Gëschter um] LT',
-            lastWeek: function () {
-                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-                switch (this.day()) {
-                    case 2:
-                    case 4:
-                        return '[Leschten] dddd [um] LT';
-                    default:
-                        return '[Leschte] dddd [um] LT';
-                }
-            },
-        },
-        relativeTime: {
-            future: processFutureTime,
-            past: processPastTime,
-            s: 'e puer Sekonnen',
-            ss: '%d Sekonnen',
-            m: processRelativeTime$8,
-            mm: '%d Minutten',
-            h: processRelativeTime$8,
-            hh: '%d Stonnen',
-            d: processRelativeTime$8,
-            dd: '%d Deeg',
-            M: processRelativeTime$8,
-            MM: '%d Méint',
-            y: processRelativeTime$8,
-            yy: '%d Joer',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('lo', {
-        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-                '_'
-            ),
-        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
-        isPM: function (input) {
-            return input === 'ຕອນແລງ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ຕອນເຊົ້າ';
-            } else {
-                return 'ຕອນແລງ';
-            }
-        },
-        calendar: {
-            sameDay: '[ມື້ນີ້ເວລາ] LT',
-            nextDay: '[ມື້ອື່ນເວລາ] LT',
-            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
-            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
-            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ອີກ %s',
-            past: '%sຜ່ານມາ',
-            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
-            ss: '%d ວິນາທີ',
-            m: '1 ນາທີ',
-            mm: '%d ນາທີ',
-            h: '1 ຊົ່ວໂມງ',
-            hh: '%d ຊົ່ວໂມງ',
-            d: '1 ມື້',
-            dd: '%d ມື້',
-            M: '1 ເດືອນ',
-            MM: '%d ເດືອນ',
-            y: '1 ປີ',
-            yy: '%d ປີ',
-        },
-        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
-        ordinal: function (number) {
-            return 'ທີ່' + number;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var units = {
-        ss: 'sekundė_sekundžių_sekundes',
-        m: 'minutė_minutės_minutę',
-        mm: 'minutės_minučių_minutes',
-        h: 'valanda_valandos_valandą',
-        hh: 'valandos_valandų_valandas',
-        d: 'diena_dienos_dieną',
-        dd: 'dienos_dienų_dienas',
-        M: 'mėnuo_mėnesio_mėnesį',
-        MM: 'mėnesiai_mėnesių_mėnesius',
-        y: 'metai_metų_metus',
-        yy: 'metai_metų_metus',
-    };
-    function translateSeconds(number, withoutSuffix, key, isFuture) {
-        if (withoutSuffix) {
-            return 'kelios sekundės';
-        } else {
-            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
-        }
-    }
-    function translateSingular(number, withoutSuffix, key, isFuture) {
-        return withoutSuffix
-            ? forms(key)[0]
-            : isFuture
-              ? forms(key)[1]
-              : forms(key)[2];
-    }
-    function special(number) {
-        return number % 10 === 0 || (number > 10 && number < 20);
-    }
-    function forms(key) {
-        return units[key].split('_');
-    }
-    function translate$6(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        if (number === 1) {
-            return (
-                result + translateSingular(number, withoutSuffix, key[0], isFuture)
-            );
-        } else if (withoutSuffix) {
-            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
-        } else {
-            if (isFuture) {
-                return result + forms(key)[1];
-            } else {
-                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
-            }
-        }
-    }
-    moment.defineLocale('lt', {
-        months: {
-            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
-                '_'
-            ),
-            standalone:
-                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
-                    '_'
-                ),
-            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
-        },
-        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
-        weekdays: {
-            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
-                '_'
-            ),
-            standalone:
-                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
-                    '_'
-                ),
-            isFormat: /dddd HH:mm/,
-        },
-        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
-        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY [m.] MMMM D [d.]',
-            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
-            l: 'YYYY-MM-DD',
-            ll: 'YYYY [m.] MMMM D [d.]',
-            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
-        },
-        calendar: {
-            sameDay: '[Šiandien] LT',
-            nextDay: '[Rytoj] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[Vakar] LT',
-            lastWeek: '[Praėjusį] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'po %s',
-            past: 'prieš %s',
-            s: translateSeconds,
-            ss: translate$6,
-            m: translateSingular,
-            mm: translate$6,
-            h: translateSingular,
-            hh: translate$6,
-            d: translateSingular,
-            dd: translate$6,
-            M: translateSingular,
-            MM: translate$6,
-            y: translateSingular,
-            yy: translate$6,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
-        ordinal: function (number) {
-            return number + '-oji';
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var units$1 = {
-        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
-        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        h: 'stundas_stundām_stunda_stundas'.split('_'),
-        hh: 'stundas_stundām_stunda_stundas'.split('_'),
-        d: 'dienas_dienām_diena_dienas'.split('_'),
-        dd: 'dienas_dienām_diena_dienas'.split('_'),
-        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        y: 'gada_gadiem_gads_gadi'.split('_'),
-        yy: 'gada_gadiem_gads_gadi'.split('_'),
-    };
-    /**
-     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
-     */
-    function format(forms, number, withoutSuffix) {
-        if (withoutSuffix) {
-            // E.g. "21 minūte", "3 minūtes".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
-        } else {
-            // E.g. "21 minūtes" as in "pēc 21 minūtes".
-            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
-        }
-    }
-    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
-        return number + ' ' + format(units$1[key], number, withoutSuffix);
-    }
-    function relativeTimeWithSingular(number, withoutSuffix, key) {
-        return format(units$1[key], number, withoutSuffix);
-    }
-    function relativeSeconds(number, withoutSuffix) {
-        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
-    }
-
-    moment.defineLocale('lv', {
-        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
-        weekdays:
-            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY.',
-            LL: 'YYYY. [gada] D. MMMM',
-            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
-            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
-        },
-        calendar: {
-            sameDay: '[Šodien pulksten] LT',
-            nextDay: '[Rīt pulksten] LT',
-            nextWeek: 'dddd [pulksten] LT',
-            lastDay: '[Vakar pulksten] LT',
-            lastWeek: '[Pagājušā] dddd [pulksten] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'pēc %s',
-            past: 'pirms %s',
-            s: relativeSeconds,
-            ss: relativeTimeWithPlural$1,
-            m: relativeTimeWithSingular,
-            mm: relativeTimeWithPlural$1,
-            h: relativeTimeWithSingular,
-            hh: relativeTimeWithPlural$1,
-            d: relativeTimeWithSingular,
-            dd: relativeTimeWithPlural$1,
-            M: relativeTimeWithSingular,
-            MM: relativeTimeWithPlural$1,
-            y: relativeTimeWithSingular,
-            yy: relativeTimeWithPlural$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekund', 'sekunda', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            dd: ['dan', 'dana', 'dana'],
-            MM: ['mjesec', 'mjeseca', 'mjeseci'],
-            yy: ['godina', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            return number === 1
-                ? wordKey[0]
-                : number >= 2 && number <= 4
-                  ? wordKey[1]
-                  : wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key) {
-            var wordKey = translator.words[key];
-            if (key.length === 1) {
-                return withoutSuffix ? wordKey[0] : wordKey[1];
-            } else {
-                return (
-                    number +
-                    ' ' +
-                    translator.correctGrammaticalCase(number, wordKey)
-                );
-            }
-        },
-    };
-
-    moment.defineLocale('me', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sjutra u] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedjelje] [u] LT',
-                    '[prošlog] [ponedjeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srijede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'nekoliko sekundi',
-            ss: translator.translate,
-            m: translator.translate,
-            mm: translator.translate,
-            h: translator.translate,
-            hh: translator.translate,
-            d: 'dan',
-            dd: translator.translate,
-            M: 'mjesec',
-            MM: translator.translate,
-            y: 'godinu',
-            yy: translator.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('mi', {
-        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
-            '_'
-        ),
-        monthsShort:
-            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
-                '_'
-            ),
-        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
-        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
-        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [i] HH:mm',
-            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i teie mahana, i] LT',
-            nextDay: '[apopo i] LT',
-            nextWeek: 'dddd [i] LT',
-            lastDay: '[inanahi i] LT',
-            lastWeek: 'dddd [whakamutunga i] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i roto i %s',
-            past: '%s i mua',
-            s: 'te hēkona ruarua',
-            ss: '%d hēkona',
-            m: 'he meneti',
-            mm: '%d meneti',
-            h: 'te haora',
-            hh: '%d haora',
-            d: 'he ra',
-            dd: '%d ra',
-            M: 'he marama',
-            MM: '%d marama',
-            y: 'he tau',
-            yy: '%d tau',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('mk', {
-        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
-        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Денес во] LT',
-            nextDay: '[Утре во] LT',
-            nextWeek: '[Во] dddd [во] LT',
-            lastDay: '[Вчера во] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Изминатата] dddd [во] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Изминатиот] dddd [во] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пред %s',
-            s: 'неколку секунди',
-            ss: '%d секунди',
-            m: 'една минута',
-            mm: '%d минути',
-            h: 'еден час',
-            hh: '%d часа',
-            d: 'еден ден',
-            dd: '%d дена',
-            M: 'еден месец',
-            MM: '%d месеци',
-            y: 'една година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ml', {
-        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
-                '_'
-            ),
-        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
-        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm -നു',
-            LTS: 'A h:mm:ss -നു',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm -നു',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
-        },
-        calendar: {
-            sameDay: '[ഇന്ന്] LT',
-            nextDay: '[നാളെ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ഇന്നലെ] LT',
-            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s കഴിഞ്ഞ്',
-            past: '%s മുൻപ്',
-            s: 'അൽപ നിമിഷങ്ങൾ',
-            ss: '%d സെക്കൻഡ്',
-            m: 'ഒരു മിനിറ്റ്',
-            mm: '%d മിനിറ്റ്',
-            h: 'ഒരു മണിക്കൂർ',
-            hh: '%d മണിക്കൂർ',
-            d: 'ഒരു ദിവസം',
-            dd: '%d ദിവസം',
-            M: 'ഒരു മാസം',
-            MM: '%d മാസം',
-            y: 'ഒരു വർഷം',
-            yy: '%d വർഷം',
-        },
-        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'രാത്രി' && hour >= 4) ||
-                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
-                meridiem === 'വൈകുന്നേരം'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'രാത്രി';
-            } else if (hour < 12) {
-                return 'രാവിലെ';
-            } else if (hour < 17) {
-                return 'ഉച്ച കഴിഞ്ഞ്';
-            } else if (hour < 20) {
-                return 'വൈകുന്നേരം';
-            } else {
-                return 'രാത്രി';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function translate$7(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 's':
-                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
-            case 'ss':
-                return number + (withoutSuffix ? ' секунд' : ' секундын');
-            case 'm':
-            case 'mm':
-                return number + (withoutSuffix ? ' минут' : ' минутын');
-            case 'h':
-            case 'hh':
-                return number + (withoutSuffix ? ' цаг' : ' цагийн');
-            case 'd':
-            case 'dd':
-                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
-            case 'M':
-            case 'MM':
-                return number + (withoutSuffix ? ' сар' : ' сарын');
-            case 'y':
-            case 'yy':
-                return number + (withoutSuffix ? ' жил' : ' жилийн');
-            default:
-                return number;
-        }
-    }
-
-    moment.defineLocale('mn', {
-        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
-            '_'
-        ),
-        monthsShort:
-            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
-        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
-        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY оны MMMMын D',
-            LLL: 'YYYY оны MMMMын D HH:mm',
-            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
-        },
-        meridiemParse: /ҮӨ|ҮХ/i,
-        isPM: function (input) {
-            return input === 'ҮХ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ҮӨ';
-            } else {
-                return 'ҮХ';
-            }
-        },
-        calendar: {
-            sameDay: '[Өнөөдөр] LT',
-            nextDay: '[Маргааш] LT',
-            nextWeek: '[Ирэх] dddd LT',
-            lastDay: '[Өчигдөр] LT',
-            lastWeek: '[Өнгөрсөн] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s дараа',
-            past: '%s өмнө',
-            s: translate$7,
-            ss: translate$7,
-            m: translate$7,
-            mm: translate$7,
-            h: translate$7,
-            hh: translate$7,
-            d: translate$7,
-            dd: translate$7,
-            M: translate$7,
-            MM: translate$7,
-            y: translate$7,
-            yy: translate$7,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + ' өдөр';
-                default:
-                    return number;
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$d = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$c = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
-        var output = '';
-        if (withoutSuffix) {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंद';
-                    break;
-                case 'ss':
-                    output = '%d सेकंद';
-                    break;
-                case 'm':
-                    output = 'एक मिनिट';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटे';
-                    break;
-                case 'h':
-                    output = 'एक तास';
-                    break;
-                case 'hh':
-                    output = '%d तास';
-                    break;
-                case 'd':
-                    output = 'एक दिवस';
-                    break;
-                case 'dd':
-                    output = '%d दिवस';
-                    break;
-                case 'M':
-                    output = 'एक महिना';
-                    break;
-                case 'MM':
-                    output = '%d महिने';
-                    break;
-                case 'y':
-                    output = 'एक वर्ष';
-                    break;
-                case 'yy':
-                    output = '%d वर्षे';
-                    break;
-            }
-        } else {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंदां';
-                    break;
-                case 'ss':
-                    output = '%d सेकंदां';
-                    break;
-                case 'm':
-                    output = 'एका मिनिटा';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटां';
-                    break;
-                case 'h':
-                    output = 'एका तासा';
-                    break;
-                case 'hh':
-                    output = '%d तासां';
-                    break;
-                case 'd':
-                    output = 'एका दिवसा';
-                    break;
-                case 'dd':
-                    output = '%d दिवसां';
-                    break;
-                case 'M':
-                    output = 'एका महिन्या';
-                    break;
-                case 'MM':
-                    output = '%d महिन्यां';
-                    break;
-                case 'y':
-                    output = 'एका वर्षा';
-                    break;
-                case 'yy':
-                    output = '%d वर्षां';
-                    break;
-            }
-        }
-        return output.replace(/%d/i, number);
-    }
-
-    moment.defineLocale('mr', {
-        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm वाजता',
-            LTS: 'A h:mm:ss वाजता',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm वाजता',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[उद्या] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[मागील] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमध्ये',
-            past: '%sपूर्वी',
-            s: relativeTimeMr,
-            ss: relativeTimeMr,
-            m: relativeTimeMr,
-            mm: relativeTimeMr,
-            h: relativeTimeMr,
-            hh: relativeTimeMr,
-            d: relativeTimeMr,
-            dd: relativeTimeMr,
-            M: relativeTimeMr,
-            MM: relativeTimeMr,
-            y: relativeTimeMr,
-            yy: relativeTimeMr,
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$c[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$d[match];
-            });
-        },
-        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
-                return hour;
-            } else if (
-                meridiem === 'दुपारी' ||
-                meridiem === 'सायंकाळी' ||
-                meridiem === 'रात्री'
-            ) {
-                return hour >= 12 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour >= 0 && hour < 6) {
-                return 'पहाटे';
-            } else if (hour < 12) {
-                return 'सकाळी';
-            } else if (hour < 17) {
-                return 'दुपारी';
-            } else if (hour < 20) {
-                return 'सायंकाळी';
-            } else {
-                return 'रात्री';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ms-my', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ms', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('mt', {
-        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
-        weekdays:
-            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
-                '_'
-            ),
-        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
-        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Illum fil-]LT',
-            nextDay: '[Għada fil-]LT',
-            nextWeek: 'dddd [fil-]LT',
-            lastDay: '[Il-bieraħ fil-]LT',
-            lastWeek: 'dddd [li għadda] [fil-]LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'f’ %s',
-            past: '%s ilu',
-            s: 'ftit sekondi',
-            ss: '%d sekondi',
-            m: 'minuta',
-            mm: '%d minuti',
-            h: 'siegħa',
-            hh: '%d siegħat',
-            d: 'ġurnata',
-            dd: '%d ġranet',
-            M: 'xahar',
-            MM: '%d xhur',
-            y: 'sena',
-            yy: '%d sni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$e = {
-            1: '၁',
-            2: '၂',
-            3: '၃',
-            4: '၄',
-            5: '၅',
-            6: '၆',
-            7: '၇',
-            8: '၈',
-            9: '၉',
-            0: '၀',
-        },
-        numberMap$d = {
-            '၁': '1',
-            '၂': '2',
-            '၃': '3',
-            '၄': '4',
-            '၅': '5',
-            '၆': '6',
-            '၇': '7',
-            '၈': '8',
-            '၉': '9',
-            '၀': '0',
-        };
-
-    moment.defineLocale('my', {
-        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
-            '_'
-        ),
-        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
-        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
-            '_'
-        ),
-        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ယနေ.] LT [မှာ]',
-            nextDay: '[မနက်ဖြန်] LT [မှာ]',
-            nextWeek: 'dddd LT [မှာ]',
-            lastDay: '[မနေ.က] LT [မှာ]',
-            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'လာမည့် %s မှာ',
-            past: 'လွန်ခဲ့သော %s က',
-            s: 'စက္ကန်.အနည်းငယ်',
-            ss: '%d စက္ကန့်',
-            m: 'တစ်မိနစ်',
-            mm: '%d မိနစ်',
-            h: 'တစ်နာရီ',
-            hh: '%d နာရီ',
-            d: 'တစ်ရက်',
-            dd: '%d ရက်',
-            M: 'တစ်လ',
-            MM: '%d လ',
-            y: 'တစ်နှစ်',
-            yy: '%d နှစ်',
-        },
-        preparse: function (string) {
-            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
-                return numberMap$d[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$e[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('nb', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[forrige] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'noen sekunder',
-            ss: '%d sekunder',
-            m: 'ett minutt',
-            mm: '%d minutter',
-            h: 'én time',
-            hh: '%d timer',
-            d: 'én dag',
-            dd: '%d dager',
-            w: 'én uke',
-            ww: '%d uker',
-            M: 'én måned',
-            MM: '%d måneder',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$f = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$e = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    moment.defineLocale('ne', {
-        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
-            '_'
-        ),
-        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
-        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'Aको h:mm बजे',
-            LTS: 'Aको h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, Aको h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$e[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$f[match];
-            });
-        },
-        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राति') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'बिहान') {
-                return hour;
-            } else if (meridiem === 'दिउँसो') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'साँझ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 3) {
-                return 'राति';
-            } else if (hour < 12) {
-                return 'बिहान';
-            } else if (hour < 16) {
-                return 'दिउँसो';
-            } else if (hour < 20) {
-                return 'साँझ';
-            } else {
-                return 'राति';
-            }
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[भोलि] LT',
-            nextWeek: '[आउँदो] dddd[,] LT',
-            lastDay: '[हिजो] LT',
-            lastWeek: '[गएको] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमा',
-            past: '%s अगाडि',
-            s: 'केही क्षण',
-            ss: '%d सेकेण्ड',
-            m: 'एक मिनेट',
-            mm: '%d मिनेट',
-            h: 'एक घण्टा',
-            hh: '%d घण्टा',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महिना',
-            MM: '%d महिना',
-            y: 'एक बर्ष',
-            yy: '%d बर्ष',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots$1 =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots$1 =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse$8 = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex$7 =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    moment.defineLocale('nl-be', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots$1;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots$1[m.month()];
-            } else {
-                return monthsShortWithDots$1[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex$7,
-        monthsShortRegex: monthsRegex$7,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse$8,
-        longMonthsParse: monthsParse$8,
-        shortMonthsParse: monthsParse$8,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots$2 =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots$2 =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse$9 = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex$8 =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    moment.defineLocale('nl', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots$2;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots$2[m.month()];
-            } else {
-                return monthsShortWithDots$2[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex$8,
-        monthsShortRegex: monthsRegex$8,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse$9,
-        longMonthsParse: monthsParse$9,
-        shortMonthsParse: monthsParse$9,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            w: 'één week',
-            ww: '%d weken',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('nn', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
-        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
-        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[I dag klokka] LT',
-            nextDay: '[I morgon klokka] LT',
-            nextWeek: 'dddd [klokka] LT',
-            lastDay: '[I går klokka] LT',
-            lastWeek: '[Føregåande] dddd [klokka] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s sidan',
-            s: 'nokre sekund',
-            ss: '%d sekund',
-            m: 'eit minutt',
-            mm: '%d minutt',
-            h: 'ein time',
-            hh: '%d timar',
-            d: 'ein dag',
-            dd: '%d dagar',
-            w: 'ei veke',
-            ww: '%d veker',
-            M: 'ein månad',
-            MM: '%d månader',
-            y: 'eit år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('oc-lnc', {
-        months: {
-            standalone:
-                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
-                    '_'
-                ),
-            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
-            '_'
-        ),
-        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: '[uèi a] LT',
-            nextDay: '[deman a] LT',
-            nextWeek: 'dddd [a] LT',
-            lastDay: '[ièr a] LT',
-            lastWeek: 'dddd [passat a] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'unas segondas',
-            ss: '%d segondas',
-            m: 'una minuta',
-            mm: '%d minutas',
-            h: 'una ora',
-            hh: '%d oras',
-            d: 'un jorn',
-            dd: '%d jorns',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4,
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$g = {
-            1: '੧',
-            2: '੨',
-            3: '੩',
-            4: '੪',
-            5: '੫',
-            6: '੬',
-            7: '੭',
-            8: '੮',
-            9: '੯',
-            0: '੦',
-        },
-        numberMap$f = {
-            '੧': '1',
-            '੨': '2',
-            '੩': '3',
-            '੪': '4',
-            '੫': '5',
-            '੬': '6',
-            '੭': '7',
-            '੮': '8',
-            '੯': '9',
-            '੦': '0',
-        };
-
-    moment.defineLocale('pa-in', {
-        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
-        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-                '_'
-            ),
-        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm ਵਜੇ',
-            LTS: 'A h:mm:ss ਵਜੇ',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
-        },
-        calendar: {
-            sameDay: '[ਅਜ] LT',
-            nextDay: '[ਕਲ] LT',
-            nextWeek: '[ਅਗਲਾ] dddd, LT',
-            lastDay: '[ਕਲ] LT',
-            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ਵਿੱਚ',
-            past: '%s ਪਿਛਲੇ',
-            s: 'ਕੁਝ ਸਕਿੰਟ',
-            ss: '%d ਸਕਿੰਟ',
-            m: 'ਇਕ ਮਿੰਟ',
-            mm: '%d ਮਿੰਟ',
-            h: 'ਇੱਕ ਘੰਟਾ',
-            hh: '%d ਘੰਟੇ',
-            d: 'ਇੱਕ ਦਿਨ',
-            dd: '%d ਦਿਨ',
-            M: 'ਇੱਕ ਮਹੀਨਾ',
-            MM: '%d ਮਹੀਨੇ',
-            y: 'ਇੱਕ ਸਾਲ',
-            yy: '%d ਸਾਲ',
-        },
-        preparse: function (string) {
-            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
-                return numberMap$f[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$g[match];
-            });
-        },
-        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ਰਾਤ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ਸਵੇਰ') {
-                return hour;
-            } else if (meridiem === 'ਦੁਪਹਿਰ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ਸ਼ਾਮ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ਰਾਤ';
-            } else if (hour < 10) {
-                return 'ਸਵੇਰ';
-            } else if (hour < 17) {
-                return 'ਦੁਪਹਿਰ';
-            } else if (hour < 20) {
-                return 'ਸ਼ਾਮ';
-            } else {
-                return 'ਰਾਤ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsNominative =
-            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
-                '_'
-            ),
-        monthsSubjective =
-            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
-                '_'
-            ),
-        monthsParse$a = [
-            /^sty/i,
-            /^lut/i,
-            /^mar/i,
-            /^kwi/i,
-            /^maj/i,
-            /^cze/i,
-            /^lip/i,
-            /^sie/i,
-            /^wrz/i,
-            /^paź/i,
-            /^lis/i,
-            /^gru/i,
-        ];
-    function plural$3(n) {
-        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
-    }
-    function translate$8(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                return result + (plural$3(number) ? 'sekundy' : 'sekund');
-            case 'm':
-                return withoutSuffix ? 'minuta' : 'minutę';
-            case 'mm':
-                return result + (plural$3(number) ? 'minuty' : 'minut');
-            case 'h':
-                return withoutSuffix ? 'godzina' : 'godzinę';
-            case 'hh':
-                return result + (plural$3(number) ? 'godziny' : 'godzin');
-            case 'ww':
-                return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
-            case 'MM':
-                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
-            case 'yy':
-                return result + (plural$3(number) ? 'lata' : 'lat');
-        }
-    }
-
-    moment.defineLocale('pl', {
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return monthsNominative;
-            } else if (/D MMMM/.test(format)) {
-                return monthsSubjective[momentToFormat.month()];
-            } else {
-                return monthsNominative[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
-        monthsParse: monthsParse$a,
-        longMonthsParse: monthsParse$a,
-        shortMonthsParse: monthsParse$a,
-        weekdays:
-            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
-        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
-        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Dziś o] LT',
-            nextDay: '[Jutro o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W niedzielę o] LT';
-
-                    case 2:
-                        return '[We wtorek o] LT';
-
-                    case 3:
-                        return '[W środę o] LT';
-
-                    case 6:
-                        return '[W sobotę o] LT';
-
-                    default:
-                        return '[W] dddd [o] LT';
-                }
-            },
-            lastDay: '[Wczoraj o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W zeszłą niedzielę o] LT';
-                    case 3:
-                        return '[W zeszłą środę o] LT';
-                    case 6:
-                        return '[W zeszłą sobotę o] LT';
-                    default:
-                        return '[W zeszły] dddd [o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: '%s temu',
-            s: 'kilka sekund',
-            ss: translate$8,
-            m: translate$8,
-            mm: translate$8,
-            h: translate$8,
-            hh: translate$8,
-            d: '1 dzień',
-            dd: '%d dni',
-            w: 'tydzień',
-            ww: translate$8,
-            M: 'miesiąc',
-            MM: translate$8,
-            y: 'rok',
-            yy: translate$8,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('pt-br', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
-        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'poucos segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        invalidDate: 'Data inválida',
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('pt', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
-        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            w: 'uma semana',
-            ww: '%d semanas',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
-        var format = {
-                ss: 'secunde',
-                mm: 'minute',
-                hh: 'ore',
-                dd: 'zile',
-                ww: 'săptămâni',
-                MM: 'luni',
-                yy: 'ani',
-            },
-            separator = ' ';
-        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
-            separator = ' de ';
-        }
-        return number + separator + format[key];
-    }
-
-    moment.defineLocale('ro', {
-        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
-            '_'
-        ),
-        monthsShort:
-            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
-        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
-        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[azi la] LT',
-            nextDay: '[mâine la] LT',
-            nextWeek: 'dddd [la] LT',
-            lastDay: '[ieri la] LT',
-            lastWeek: '[fosta] dddd [la] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'peste %s',
-            past: '%s în urmă',
-            s: 'câteva secunde',
-            ss: relativeTimeWithPlural$2,
-            m: 'un minut',
-            mm: relativeTimeWithPlural$2,
-            h: 'o oră',
-            hh: relativeTimeWithPlural$2,
-            d: 'o zi',
-            dd: relativeTimeWithPlural$2,
-            w: 'o săptămână',
-            ww: relativeTimeWithPlural$2,
-            M: 'o lună',
-            MM: relativeTimeWithPlural$2,
-            y: 'un an',
-            yy: relativeTimeWithPlural$2,
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$4(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
-            hh: 'час_часа_часов',
-            dd: 'день_дня_дней',
-            ww: 'неделя_недели_недель',
-            MM: 'месяц_месяца_месяцев',
-            yy: 'год_года_лет',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'минута' : 'минуту';
-        } else {
-            return number + ' ' + plural$4(format[key], +number);
-        }
-    }
-    var monthsParse$b = [
-        /^янв/i,
-        /^фев/i,
-        /^мар/i,
-        /^апр/i,
-        /^ма[йя]/i,
-        /^июн/i,
-        /^июл/i,
-        /^авг/i,
-        /^сен/i,
-        /^окт/i,
-        /^ноя/i,
-        /^дек/i,
-    ];
-
-    // http://new.gramota.ru/spravka/rules/139-prop : § 103
-    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-    moment.defineLocale('ru', {
-        months: {
-            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
-                '_'
-            ),
-            standalone:
-                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-                    '_'
-                ),
-        },
-        monthsShort: {
-            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
-            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
-                '_'
-            ),
-            standalone:
-                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
-                    '_'
-                ),
-        },
-        weekdays: {
-            standalone:
-                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
-                    '_'
-                ),
-            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
-                '_'
-            ),
-            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
-        },
-        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        monthsParse: monthsParse$b,
-        longMonthsParse: monthsParse$b,
-        shortMonthsParse: monthsParse$b,
-
-        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
-        monthsRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // копия предыдущего
-        monthsShortRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // полные названия с падежами
-        monthsStrictRegex:
-            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
-
-        // Выражение, которое соответствует только сокращённым формам
-        monthsShortStrictRegex:
-            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., H:mm',
-            LLLL: 'dddd, D MMMM YYYY г., H:mm',
-        },
-        calendar: {
-            sameDay: '[Сегодня, в] LT',
-            nextDay: '[Завтра, в] LT',
-            lastDay: '[Вчера, в] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В следующее] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В следующий] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В следующую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            lastWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В прошлое] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В прошлый] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В прошлую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'через %s',
-            past: '%s назад',
-            s: 'несколько секунд',
-            ss: relativeTimeWithPlural$3,
-            m: relativeTimeWithPlural$3,
-            mm: relativeTimeWithPlural$3,
-            h: 'час',
-            hh: relativeTimeWithPlural$3,
-            d: 'день',
-            dd: relativeTimeWithPlural$3,
-            w: 'неделя',
-            ww: relativeTimeWithPlural$3,
-            M: 'месяц',
-            MM: relativeTimeWithPlural$3,
-            y: 'год',
-            yy: relativeTimeWithPlural$3,
-        },
-        meridiemParse: /ночи|утра|дня|вечера/i,
-        isPM: function (input) {
-            return /^(дня|вечера)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночи';
-            } else if (hour < 12) {
-                return 'утра';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечера';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                case 'w':
-                case 'W':
-                    return number + '-я';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$8 = [
-            'جنوري',
-            'فيبروري',
-            'مارچ',
-            'اپريل',
-            'مئي',
-            'جون',
-            'جولاءِ',
-            'آگسٽ',
-            'سيپٽمبر',
-            'آڪٽوبر',
-            'نومبر',
-            'ڊسمبر',
-        ],
-        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
-
-    moment.defineLocale('sd', {
-        months: months$8,
-        monthsShort: months$8,
-        weekdays: days,
-        weekdaysShort: days,
-        weekdaysMin: days,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[اڄ] LT',
-            nextDay: '[سڀاڻي] LT',
-            nextWeek: 'dddd [اڳين هفتي تي] LT',
-            lastDay: '[ڪالهه] LT',
-            lastWeek: '[گزريل هفتي] dddd [تي] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s پوء',
-            past: '%s اڳ',
-            s: 'چند سيڪنڊ',
-            ss: '%d سيڪنڊ',
-            m: 'هڪ منٽ',
-            mm: '%d منٽ',
-            h: 'هڪ ڪلاڪ',
-            hh: '%d ڪلاڪ',
-            d: 'هڪ ڏينهن',
-            dd: '%d ڏينهن',
-            M: 'هڪ مهينو',
-            MM: '%d مهينا',
-            y: 'هڪ سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('se', {
-        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
-            '_'
-        ),
-        monthsShort:
-            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
-        weekdays:
-            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
-                '_'
-            ),
-        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
-        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'MMMM D. [b.] YYYY',
-            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
-            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[otne ti] LT',
-            nextDay: '[ihttin ti] LT',
-            nextWeek: 'dddd [ti] LT',
-            lastDay: '[ikte ti] LT',
-            lastWeek: '[ovddit] dddd [ti] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s geažes',
-            past: 'maŋit %s',
-            s: 'moadde sekunddat',
-            ss: '%d sekunddat',
-            m: 'okta minuhta',
-            mm: '%d minuhtat',
-            h: 'okta diimmu',
-            hh: '%d diimmut',
-            d: 'okta beaivi',
-            dd: '%d beaivvit',
-            M: 'okta mánnu',
-            MM: '%d mánut',
-            y: 'okta jahki',
-            yy: '%d jagit',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    /*jshint -W100*/
-    moment.defineLocale('si', {
-        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
-            '_'
-        ),
-        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
-            '_'
-        ),
-        weekdays:
-            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
-                '_'
-            ),
-        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
-        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'a h:mm',
-            LTS: 'a h:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY MMMM D',
-            LLL: 'YYYY MMMM D, a h:mm',
-            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
-        },
-        calendar: {
-            sameDay: '[අද] LT[ට]',
-            nextDay: '[හෙට] LT[ට]',
-            nextWeek: 'dddd LT[ට]',
-            lastDay: '[ඊයේ] LT[ට]',
-            lastWeek: '[පසුගිය] dddd LT[ට]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sකින්',
-            past: '%sකට පෙර',
-            s: 'තත්පර කිහිපය',
-            ss: 'තත්පර %d',
-            m: 'මිනිත්තුව',
-            mm: 'මිනිත්තු %d',
-            h: 'පැය',
-            hh: 'පැය %d',
-            d: 'දිනය',
-            dd: 'දින %d',
-            M: 'මාසය',
-            MM: 'මාස %d',
-            y: 'වසර',
-            yy: 'වසර %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
-        ordinal: function (number) {
-            return number + ' වැනි';
-        },
-        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
-        isPM: function (input) {
-            return input === 'ප.ව.' || input === 'පස් වරු';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'ප.ව.' : 'පස් වරු';
-            } else {
-                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$9 =
-            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
-                '_'
-            ),
-        monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-    function plural$5(n) {
-        return n > 1 && n < 5;
-    }
-    function translate$9(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'minúty' : 'minút');
-                } else {
-                    return result + 'minútami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'deň' : 'dňom';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'dni' : 'dní');
-                } else {
-                    return result + 'dňami';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
-                } else {
-                    return result + 'mesiacmi';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokom';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'roky' : 'rokov');
-                } else {
-                    return result + 'rokmi';
-                }
-        }
-    }
-
-    moment.defineLocale('sk', {
-        months: months$9,
-        monthsShort: monthsShort$7,
-        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
-        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
-        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[dnes o] LT',
-            nextDay: '[zajtra o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [o] LT';
-                    case 3:
-                        return '[v stredu o] LT';
-                    case 4:
-                        return '[vo štvrtok o] LT';
-                    case 5:
-                        return '[v piatok o] LT';
-                    case 6:
-                        return '[v sobotu o] LT';
-                }
-            },
-            lastDay: '[včera o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulú nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[minulý] dddd [o] LT';
-                    case 3:
-                        return '[minulú stredu o] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [o] LT';
-                    case 6:
-                        return '[minulú sobotu o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pred %s',
-            s: translate$9,
-            ss: translate$9,
-            m: translate$9,
-            mm: translate$9,
-            h: translate$9,
-            hh: translate$9,
-            d: translate$9,
-            dd: translate$9,
-            M: translate$9,
-            MM: translate$9,
-            y: translate$9,
-            yy: translate$9,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$9(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nekaj sekund'
-                    : 'nekaj sekundami';
-            case 'ss':
-                if (number === 1) {
-                    result += withoutSuffix ? 'sekundo' : 'sekundi';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
-                } else {
-                    result += 'sekund';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'ena minuta' : 'eno minuto';
-            case 'mm':
-                if (number === 1) {
-                    result += withoutSuffix ? 'minuta' : 'minuto';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'ena ura' : 'eno uro';
-            case 'hh':
-                if (number === 1) {
-                    result += withoutSuffix ? 'ura' : 'uro';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
-                }
-                return result;
-            case 'd':
-                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
-            case 'dd':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
-                } else {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
-                }
-                return result;
-            case 'M':
-                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
-            case 'MM':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
-                } else {
-                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
-                }
-                return result;
-            case 'y':
-                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
-            case 'yy':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
-                } else {
-                    result += withoutSuffix || isFuture ? 'let' : 'leti';
-                }
-                return result;
-        }
-    }
-
-    moment.defineLocale('sl', {
-        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
-        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
-        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD. MM. YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danes ob] LT',
-            nextDay: '[jutri ob] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[v] [sredo] [ob] LT';
-                    case 6:
-                        return '[v] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[v] dddd [ob] LT';
-                }
-            },
-            lastDay: '[včeraj ob] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prejšnjo] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[prejšnjo] [sredo] [ob] LT';
-                    case 6:
-                        return '[prejšnjo] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prejšnji] dddd [ob] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'čez %s',
-            past: 'pred %s',
-            s: processRelativeTime$9,
-            ss: processRelativeTime$9,
-            m: processRelativeTime$9,
-            mm: processRelativeTime$9,
-            h: processRelativeTime$9,
-            hh: processRelativeTime$9,
-            d: processRelativeTime$9,
-            dd: processRelativeTime$9,
-            M: processRelativeTime$9,
-            MM: processRelativeTime$9,
-            y: processRelativeTime$9,
-            yy: processRelativeTime$9,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('sq', {
-        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
-        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
-            '_'
-        ),
-        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
-        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /PD|MD/,
-        isPM: function (input) {
-            return input.charAt(0) === 'M';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            return hours < 12 ? 'PD' : 'MD';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Sot në] LT',
-            nextDay: '[Nesër në] LT',
-            nextWeek: 'dddd [në] LT',
-            lastDay: '[Dje në] LT',
-            lastWeek: 'dddd [e kaluar në] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'në %s',
-            past: '%s më parë',
-            s: 'disa sekonda',
-            ss: '%d sekonda',
-            m: 'një minutë',
-            mm: '%d minuta',
-            h: 'një orë',
-            hh: '%d orë',
-            d: 'një ditë',
-            dd: '%d ditë',
-            M: 'një muaj',
-            MM: '%d muaj',
-            y: 'një vit',
-            yy: '%d vite',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator$1 = {
-        words: {
-            //Different grammatical cases
-            ss: ['секунда', 'секунде', 'секунди'],
-            m: ['један минут', 'једног минута'],
-            mm: ['минут', 'минута', 'минута'],
-            h: ['један сат', 'једног сата'],
-            hh: ['сат', 'сата', 'сати'],
-            d: ['један дан', 'једног дана'],
-            dd: ['дан', 'дана', 'дана'],
-            M: ['један месец', 'једног месеца'],
-            MM: ['месец', 'месеца', 'месеци'],
-            y: ['једну годину', 'једне године'],
-            yy: ['годину', 'године', 'година'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator$1.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'једна година';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator$1.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'годину') {
-                return number + ' година';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    moment.defineLocale('sr-cyrl', {
-        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
-            '_'
-        ),
-        monthsShort:
-            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
-        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
-        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[данас у] LT',
-            nextDay: '[сутра у] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[у] [недељу] [у] LT';
-                    case 3:
-                        return '[у] [среду] [у] LT';
-                    case 6:
-                        return '[у] [суботу] [у] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[у] dddd [у] LT';
-                }
-            },
-            lastDay: '[јуче у] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[прошле] [недеље] [у] LT',
-                    '[прошлог] [понедељка] [у] LT',
-                    '[прошлог] [уторка] [у] LT',
-                    '[прошле] [среде] [у] LT',
-                    '[прошлог] [четвртка] [у] LT',
-                    '[прошлог] [петка] [у] LT',
-                    '[прошле] [суботе] [у] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пре %s',
-            s: 'неколико секунди',
-            ss: translator$1.translate,
-            m: translator$1.translate,
-            mm: translator$1.translate,
-            h: translator$1.translate,
-            hh: translator$1.translate,
-            d: translator$1.translate,
-            dd: translator$1.translate,
-            M: translator$1.translate,
-            MM: translator$1.translate,
-            y: translator$1.translate,
-            yy: translator$1.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator$2 = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekunda', 'sekunde', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            d: ['jedan dan', 'jednog dana'],
-            dd: ['dan', 'dana', 'dana'],
-            M: ['jedan mesec', 'jednog meseca'],
-            MM: ['mesec', 'meseca', 'meseci'],
-            y: ['jednu godinu', 'jedne godine'],
-            yy: ['godinu', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator$2.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'jedna godina';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator$2.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'godinu') {
-                return number + ' godina';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    moment.defineLocale('sr', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedelju] [u] LT';
-                    case 3:
-                        return '[u] [sredu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedelje] [u] LT',
-                    '[prošlog] [ponedeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pre %s',
-            s: 'nekoliko sekundi',
-            ss: translator$2.translate,
-            m: translator$2.translate,
-            mm: translator$2.translate,
-            h: translator$2.translate,
-            hh: translator$2.translate,
-            d: translator$2.translate,
-            dd: translator$2.translate,
-            M: translator$2.translate,
-            MM: translator$2.translate,
-            y: translator$2.translate,
-            yy: translator$2.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ss', {
-        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
-            '_'
-        ),
-        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
-        weekdays:
-            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
-                '_'
-            ),
-        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
-        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Namuhla nga] LT',
-            nextDay: '[Kusasa nga] LT',
-            nextWeek: 'dddd [nga] LT',
-            lastDay: '[Itolo nga] LT',
-            lastWeek: 'dddd [leliphelile] [nga] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'nga %s',
-            past: 'wenteka nga %s',
-            s: 'emizuzwana lomcane',
-            ss: '%d mzuzwana',
-            m: 'umzuzu',
-            mm: '%d emizuzu',
-            h: 'lihora',
-            hh: '%d emahora',
-            d: 'lilanga',
-            dd: '%d emalanga',
-            M: 'inyanga',
-            MM: '%d tinyanga',
-            y: 'umnyaka',
-            yy: '%d iminyaka',
-        },
-        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'ekuseni';
-            } else if (hours < 15) {
-                return 'emini';
-            } else if (hours < 19) {
-                return 'entsambama';
-            } else {
-                return 'ebusuku';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ekuseni') {
-                return hour;
-            } else if (meridiem === 'emini') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
-                if (hour === 0) {
-                    return 0;
-                }
-                return hour + 12;
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: '%d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('sv', {
-        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
-        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
-        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Idag] LT',
-            nextDay: '[Imorgon] LT',
-            lastDay: '[Igår] LT',
-            nextWeek: '[På] dddd LT',
-            lastWeek: '[I] dddd[s] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: 'för %s sedan',
-            s: 'några sekunder',
-            ss: '%d sekunder',
-            m: 'en minut',
-            mm: '%d minuter',
-            h: 'en timme',
-            hh: '%d timmar',
-            d: 'en dag',
-            dd: '%d dagar',
-            M: 'en månad',
-            MM: '%d månader',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? ':e'
-                        : b === 1
-                          ? ':a'
-                          : b === 2
-                            ? ':a'
-                            : b === 3
-                              ? ':e'
-                              : ':e';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('sw', {
-        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
-        weekdays:
-            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
-                '_'
-            ),
-        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
-        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'hh:mm A',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[leo saa] LT',
-            nextDay: '[kesho saa] LT',
-            nextWeek: '[wiki ijayo] dddd [saat] LT',
-            lastDay: '[jana] LT',
-            lastWeek: '[wiki iliyopita] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s baadaye',
-            past: 'tokea %s',
-            s: 'hivi punde',
-            ss: 'sekunde %d',
-            m: 'dakika moja',
-            mm: 'dakika %d',
-            h: 'saa limoja',
-            hh: 'masaa %d',
-            d: 'siku moja',
-            dd: 'siku %d',
-            M: 'mwezi mmoja',
-            MM: 'miezi %d',
-            y: 'mwaka mmoja',
-            yy: 'miaka %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$h = {
-            1: '௧',
-            2: '௨',
-            3: '௩',
-            4: '௪',
-            5: '௫',
-            6: '௬',
-            7: '௭',
-            8: '௮',
-            9: '௯',
-            0: '௦',
-        },
-        numberMap$g = {
-            '௧': '1',
-            '௨': '2',
-            '௩': '3',
-            '௪': '4',
-            '௫': '5',
-            '௬': '6',
-            '௭': '7',
-            '௮': '8',
-            '௯': '9',
-            '௦': '0',
-        };
-
-    moment.defineLocale('ta', {
-        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-            '_'
-        ),
-        monthsShort:
-            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-                '_'
-            ),
-        weekdays:
-            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
-                '_'
-            ),
-        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
-            '_'
-        ),
-        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, HH:mm',
-            LLLL: 'dddd, D MMMM YYYY, HH:mm',
-        },
-        calendar: {
-            sameDay: '[இன்று] LT',
-            nextDay: '[நாளை] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[நேற்று] LT',
-            lastWeek: '[கடந்த வாரம்] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s இல்',
-            past: '%s முன்',
-            s: 'ஒரு சில விநாடிகள்',
-            ss: '%d விநாடிகள்',
-            m: 'ஒரு நிமிடம்',
-            mm: '%d நிமிடங்கள்',
-            h: 'ஒரு மணி நேரம்',
-            hh: '%d மணி நேரம்',
-            d: 'ஒரு நாள்',
-            dd: '%d நாட்கள்',
-            M: 'ஒரு மாதம்',
-            MM: '%d மாதங்கள்',
-            y: 'ஒரு வருடம்',
-            yy: '%d ஆண்டுகள்',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}வது/,
-        ordinal: function (number) {
-            return number + 'வது';
-        },
-        preparse: function (string) {
-            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
-                return numberMap$g[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$h[match];
-            });
-        },
-        // refer http://ta.wikipedia.org/s/1er1
-        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 2) {
-                return ' யாமம்';
-            } else if (hour < 6) {
-                return ' வைகறை'; // வைகறை
-            } else if (hour < 10) {
-                return ' காலை'; // காலை
-            } else if (hour < 14) {
-                return ' நண்பகல்'; // நண்பகல்
-            } else if (hour < 18) {
-                return ' எற்பாடு'; // எற்பாடு
-            } else if (hour < 22) {
-                return ' மாலை'; // மாலை
-            } else {
-                return ' யாமம்';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'யாமம்') {
-                return hour < 2 ? hour : hour + 12;
-            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
-                return hour;
-            } else if (meridiem === 'நண்பகல்') {
-                return hour >= 10 ? hour : hour + 12;
-            } else {
-                return hour + 12;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('te', {
-        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
-            '_'
-        ),
-        monthsShort:
-            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
-                '_'
-            ),
-        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
-        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[నేడు] LT',
-            nextDay: '[రేపు] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[నిన్న] LT',
-            lastWeek: '[గత] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s లో',
-            past: '%s క్రితం',
-            s: 'కొన్ని క్షణాలు',
-            ss: '%d సెకన్లు',
-            m: 'ఒక నిమిషం',
-            mm: '%d నిమిషాలు',
-            h: 'ఒక గంట',
-            hh: '%d గంటలు',
-            d: 'ఒక రోజు',
-            dd: '%d రోజులు',
-            M: 'ఒక నెల',
-            MM: '%d నెలలు',
-            y: 'ఒక సంవత్సరం',
-            yy: '%d సంవత్సరాలు',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}వ/,
-        ordinal: '%dవ',
-        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'రాత్రి') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ఉదయం') {
-                return hour;
-            } else if (meridiem === 'మధ్యాహ్నం') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'సాయంత్రం') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'రాత్రి';
-            } else if (hour < 10) {
-                return 'ఉదయం';
-            } else if (hour < 17) {
-                return 'మధ్యాహ్నం';
-            } else if (hour < 20) {
-                return 'సాయంత్రం';
-            } else {
-                return 'రాత్రి';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('tet', {
-        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
-        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
-        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
-        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Ohin iha] LT',
-            nextDay: '[Aban iha] LT',
-            nextWeek: 'dddd [iha] LT',
-            lastDay: '[Horiseik iha] LT',
-            lastWeek: 'dddd [semana kotuk] [iha] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'iha %s',
-            past: '%s liuba',
-            s: 'segundu balun',
-            ss: 'segundu %d',
-            m: 'minutu ida',
-            mm: 'minutu %d',
-            h: 'oras ida',
-            hh: 'oras %d',
-            d: 'loron ida',
-            dd: 'loron %d',
-            M: 'fulan ida',
-            MM: 'fulan %d',
-            y: 'tinan ida',
-            yy: 'tinan %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$3 = {
-        0: '-ум',
-        1: '-ум',
-        2: '-юм',
-        3: '-юм',
-        4: '-ум',
-        5: '-ум',
-        6: '-ум',
-        7: '-ум',
-        8: '-ум',
-        9: '-ум',
-        10: '-ум',
-        12: '-ум',
-        13: '-ум',
-        20: '-ум',
-        30: '-юм',
-        40: '-ум',
-        50: '-ум',
-        60: '-ум',
-        70: '-ум',
-        80: '-ум',
-        90: '-ум',
-        100: '-ум',
-    };
-
-    moment.defineLocale('tg', {
-        months: {
-            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
-                '_'
-            ),
-            standalone:
-                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
-            '_'
-        ),
-        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
-        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Имрӯз соати] LT',
-            nextDay: '[Фардо соати] LT',
-            lastDay: '[Дирӯз соати] LT',
-            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
-            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'баъди %s',
-            past: '%s пеш',
-            s: 'якчанд сония',
-            m: 'як дақиқа',
-            mm: '%d дақиқа',
-            h: 'як соат',
-            hh: '%d соат',
-            d: 'як рӯз',
-            dd: '%d рӯз',
-            M: 'як моҳ',
-            MM: '%d моҳ',
-            y: 'як сол',
-            yy: '%d сол',
-        },
-        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'шаб') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'субҳ') {
-                return hour;
-            } else if (meridiem === 'рӯз') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'бегоҳ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'шаб';
-            } else if (hour < 11) {
-                return 'субҳ';
-            } else if (hour < 16) {
-                return 'рӯз';
-            } else if (hour < 19) {
-                return 'бегоҳ';
-            } else {
-                return 'шаб';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('th', {
-        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
-            '_'
-        ),
-        monthsShort:
-            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
-        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
-        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY เวลา H:mm',
-            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
-        },
-        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
-        isPM: function (input) {
-            return input === 'หลังเที่ยง';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ก่อนเที่ยง';
-            } else {
-                return 'หลังเที่ยง';
-            }
-        },
-        calendar: {
-            sameDay: '[วันนี้ เวลา] LT',
-            nextDay: '[พรุ่งนี้ เวลา] LT',
-            nextWeek: 'dddd[หน้า เวลา] LT',
-            lastDay: '[เมื่อวานนี้ เวลา] LT',
-            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'อีก %s',
-            past: '%sที่แล้ว',
-            s: 'ไม่กี่วินาที',
-            ss: '%d วินาที',
-            m: '1 นาที',
-            mm: '%d นาที',
-            h: '1 ชั่วโมง',
-            hh: '%d ชั่วโมง',
-            d: '1 วัน',
-            dd: '%d วัน',
-            w: '1 สัปดาห์',
-            ww: '%d สัปดาห์',
-            M: '1 เดือน',
-            MM: '%d เดือน',
-            y: '1 ปี',
-            yy: '%d ปี',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$4 = {
-        1: "'inji",
-        5: "'inji",
-        8: "'inji",
-        70: "'inji",
-        80: "'inji",
-        2: "'nji",
-        7: "'nji",
-        20: "'nji",
-        50: "'nji",
-        3: "'ünji",
-        4: "'ünji",
-        100: "'ünji",
-        6: "'njy",
-        9: "'unjy",
-        10: "'unjy",
-        30: "'unjy",
-        60: "'ynjy",
-        90: "'ynjy",
-    };
-
-    moment.defineLocale('tk', {
-        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
-        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
-            '_'
-        ),
-        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
-        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün sagat] LT',
-            nextDay: '[ertir sagat] LT',
-            nextWeek: '[indiki] dddd [sagat] LT',
-            lastDay: '[düýn] LT',
-            lastWeek: '[geçen] dddd [sagat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s soň',
-            past: '%s öň',
-            s: 'birnäçe sekunt',
-            m: 'bir minut',
-            mm: '%d minut',
-            h: 'bir sagat',
-            hh: '%d sagat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir aý',
-            MM: '%d aý',
-            y: 'bir ýyl',
-            yy: '%d ýyl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'unjy";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('tl-ph', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
-
-    function translateFuture(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'leS'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'waQ'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'nem'
-                    : time + ' pIq';
-        return time;
-    }
-
-    function translatePast(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'Hu’'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'wen'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'ben'
-                    : time + ' ret';
-        return time;
-    }
-
-    function translate$a(number, withoutSuffix, string, isFuture) {
-        var numberNoun = numberAsNoun(number);
-        switch (string) {
-            case 'ss':
-                return numberNoun + ' lup';
-            case 'mm':
-                return numberNoun + ' tup';
-            case 'hh':
-                return numberNoun + ' rep';
-            case 'dd':
-                return numberNoun + ' jaj';
-            case 'MM':
-                return numberNoun + ' jar';
-            case 'yy':
-                return numberNoun + ' DIS';
-        }
-    }
-
-    function numberAsNoun(number) {
-        var hundred = Math.floor((number % 1000) / 100),
-            ten = Math.floor((number % 100) / 10),
-            one = number % 10,
-            word = '';
-        if (hundred > 0) {
-            word += numbersNouns[hundred] + 'vatlh';
-        }
-        if (ten > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
-        }
-        if (one > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[one];
-        }
-        return word === '' ? 'pagh' : word;
-    }
-
-    moment.defineLocale('tlh', {
-        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
-            '_'
-        ),
-        monthsShort:
-            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
-            '_'
-        ),
-        weekdaysShort:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        weekdaysMin:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[DaHjaj] LT',
-            nextDay: '[wa’leS] LT',
-            nextWeek: 'LLL',
-            lastDay: '[wa’Hu’] LT',
-            lastWeek: 'LLL',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: translateFuture,
-            past: translatePast,
-            s: 'puS lup',
-            ss: translate$a,
-            m: 'wa’ tup',
-            mm: translate$a,
-            h: 'wa’ rep',
-            hh: translate$a,
-            d: 'wa’ jaj',
-            dd: translate$a,
-            M: 'wa’ jar',
-            MM: translate$a,
-            y: 'wa’ DIS',
-            yy: translate$a,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$5 = {
-        1: "'inci",
-        5: "'inci",
-        8: "'inci",
-        70: "'inci",
-        80: "'inci",
-        2: "'nci",
-        7: "'nci",
-        20: "'nci",
-        50: "'nci",
-        3: "'üncü",
-        4: "'üncü",
-        100: "'üncü",
-        6: "'ncı",
-        9: "'uncu",
-        10: "'uncu",
-        30: "'uncu",
-        60: "'ıncı",
-        90: "'ıncı",
-    };
-
-    moment.defineLocale('tr', {
-        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
-            '_'
-        ),
-        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
-        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
-            '_'
-        ),
-        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
-        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'öö' : 'ÖÖ';
-            } else {
-                return isLower ? 'ös' : 'ÖS';
-            }
-        },
-        meridiemParse: /öö|ÖÖ|ös|ÖS/,
-        isPM: function (input) {
-            return input === 'ös' || input === 'ÖS';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[yarın saat] LT',
-            nextWeek: '[gelecek] dddd [saat] LT',
-            lastDay: '[dün] LT',
-            lastWeek: '[geçen] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s önce',
-            s: 'birkaç saniye',
-            ss: '%d saniye',
-            m: 'bir dakika',
-            mm: '%d dakika',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            w: 'bir hafta',
-            ww: '%d hafta',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir yıl',
-            yy: '%d yıl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'ıncı";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-    // This is currently too difficult (maybe even impossible) to add.
-    moment.defineLocale('tzl', {
-        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
-        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
-        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
-        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM [dallas] YYYY',
-            LLL: 'D. MMMM [dallas] YYYY HH.mm',
-            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
-        },
-        meridiemParse: /d\'o|d\'a/i,
-        isPM: function (input) {
-            return "d'o" === input.toLowerCase();
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? "d'o" : "D'O";
-            } else {
-                return isLower ? "d'a" : "D'A";
-            }
-        },
-        calendar: {
-            sameDay: '[oxhi à] LT',
-            nextDay: '[demà à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[ieiri à] LT',
-            lastWeek: '[sür el] dddd [lasteu à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'osprei %s',
-            past: 'ja%s',
-            s: processRelativeTime$a,
-            ss: processRelativeTime$a,
-            m: processRelativeTime$a,
-            mm: processRelativeTime$a,
-            h: processRelativeTime$a,
-            hh: processRelativeTime$a,
-            d: processRelativeTime$a,
-            dd: processRelativeTime$a,
-            M: processRelativeTime$a,
-            MM: processRelativeTime$a,
-            y: processRelativeTime$a,
-            yy: processRelativeTime$a,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    function processRelativeTime$a(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['viensas secunds', "'iensas secunds"],
-            ss: [number + ' secunds', '' + number + ' secunds'],
-            m: ["'n míut", "'iens míut"],
-            mm: [number + ' míuts', '' + number + ' míuts'],
-            h: ["'n þora", "'iensa þora"],
-            hh: [number + ' þoras', '' + number + ' þoras'],
-            d: ["'n ziua", "'iensa ziua"],
-            dd: [number + ' ziuas', '' + number + ' ziuas'],
-            M: ["'n mes", "'iens mes"],
-            MM: [number + ' mesen', '' + number + ' mesen'],
-            y: ["'n ar", "'iens ar"],
-            yy: [number + ' ars', '' + number + ' ars'],
-        };
-        return isFuture
-            ? format[key][0]
-            : withoutSuffix
-              ? format[key][0]
-              : format[key][1];
-    }
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('tzm-latn', {
-        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-            '_'
-        ),
-        monthsShort:
-            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-                '_'
-            ),
-        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[asdkh g] LT',
-            nextDay: '[aska g] LT',
-            nextWeek: 'dddd [g] LT',
-            lastDay: '[assant g] LT',
-            lastWeek: 'dddd [g] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dadkh s yan %s',
-            past: 'yan %s',
-            s: 'imik',
-            ss: '%d imik',
-            m: 'minuḍ',
-            mm: '%d minuḍ',
-            h: 'saɛa',
-            hh: '%d tassaɛin',
-            d: 'ass',
-            dd: '%d ossan',
-            M: 'ayowr',
-            MM: '%d iyyirn',
-            y: 'asgas',
-            yy: '%d isgasn',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('tzm', {
-        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-                '_'
-            ),
-        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
-            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
-            nextWeek: 'dddd [ⴴ] LT',
-            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
-            lastWeek: 'dddd [ⴴ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
-            past: 'ⵢⴰⵏ %s',
-            s: 'ⵉⵎⵉⴽ',
-            ss: '%d ⵉⵎⵉⴽ',
-            m: 'ⵎⵉⵏⵓⴺ',
-            mm: '%d ⵎⵉⵏⵓⴺ',
-            h: 'ⵙⴰⵄⴰ',
-            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
-            d: 'ⴰⵙⵙ',
-            dd: '%d oⵙⵙⴰⵏ',
-            M: 'ⴰⵢoⵓⵔ',
-            MM: '%d ⵉⵢⵢⵉⵔⵏ',
-            y: 'ⴰⵙⴳⴰⵙ',
-            yy: '%d ⵉⵙⴳⴰⵙⵏ',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('ug-cn', {
-        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-                '_'
-            ),
-        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
-            '_'
-        ),
-        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
-            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-        },
-        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                meridiem === 'يېرىم كېچە' ||
-                meridiem === 'سەھەر' ||
-                meridiem === 'چۈشتىن بۇرۇن'
-            ) {
-                return hour;
-            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
-                return hour + 12;
-            } else {
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return 'يېرىم كېچە';
-            } else if (hm < 900) {
-                return 'سەھەر';
-            } else if (hm < 1130) {
-                return 'چۈشتىن بۇرۇن';
-            } else if (hm < 1230) {
-                return 'چۈش';
-            } else if (hm < 1800) {
-                return 'چۈشتىن كېيىن';
-            } else {
-                return 'كەچ';
-            }
-        },
-        calendar: {
-            sameDay: '[بۈگۈن سائەت] LT',
-            nextDay: '[ئەتە سائەت] LT',
-            nextWeek: '[كېلەركى] dddd [سائەت] LT',
-            lastDay: '[تۆنۈگۈن] LT',
-            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s كېيىن',
-            past: '%s بۇرۇن',
-            s: 'نەچچە سېكونت',
-            ss: '%d سېكونت',
-            m: 'بىر مىنۇت',
-            mm: '%d مىنۇت',
-            h: 'بىر سائەت',
-            hh: '%d سائەت',
-            d: 'بىر كۈن',
-            dd: '%d كۈن',
-            M: 'بىر ئاي',
-            MM: '%d ئاي',
-            y: 'بىر يىل',
-            yy: '%d يىل',
-        },
-
-        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '-كۈنى';
-                case 'w':
-                case 'W':
-                    return number + '-ھەپتە';
-                default:
-                    return number;
-            }
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$6(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
-            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
-            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
-            dd: 'день_дні_днів',
-            MM: 'місяць_місяці_місяців',
-            yy: 'рік_роки_років',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвилина' : 'хвилину';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'година' : 'годину';
-        } else {
-            return number + ' ' + plural$6(format[key], +number);
-        }
-    }
-    function weekdaysCaseReplace(m, format) {
-        var weekdays = {
-                nominative:
-                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
-                        '_'
-                    ),
-                accusative:
-                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
-                        '_'
-                    ),
-                genitive:
-                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
-                        '_'
-                    ),
-            },
-            nounCase;
-
-        if (m === true) {
-            return weekdays['nominative']
-                .slice(1, 7)
-                .concat(weekdays['nominative'].slice(0, 1));
-        }
-        if (!m) {
-            return weekdays['nominative'];
-        }
-
-        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
-            ? 'accusative'
-            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
-              ? 'genitive'
-              : 'nominative';
-        return weekdays[nounCase][m.day()];
-    }
-    function processHoursFunction(str) {
-        return function () {
-            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
-        };
-    }
-
-    moment.defineLocale('uk', {
-        months: {
-            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
-                '_'
-            ),
-            standalone:
-                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
-            '_'
-        ),
-        weekdays: weekdaysCaseReplace,
-        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY р.',
-            LLL: 'D MMMM YYYY р., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
-        },
-        calendar: {
-            sameDay: processHoursFunction('[Сьогодні '),
-            nextDay: processHoursFunction('[Завтра '),
-            lastDay: processHoursFunction('[Вчора '),
-            nextWeek: processHoursFunction('[У] dddd ['),
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return processHoursFunction('[Минулої] dddd [').call(this);
-                    case 1:
-                    case 2:
-                    case 4:
-                        return processHoursFunction('[Минулого] dddd [').call(this);
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: '%s тому',
-            s: 'декілька секунд',
-            ss: relativeTimeWithPlural$4,
-            m: relativeTimeWithPlural$4,
-            mm: relativeTimeWithPlural$4,
-            h: 'годину',
-            hh: relativeTimeWithPlural$4,
-            d: 'день',
-            dd: relativeTimeWithPlural$4,
-            M: 'місяць',
-            MM: relativeTimeWithPlural$4,
-            y: 'рік',
-            yy: relativeTimeWithPlural$4,
-        },
-        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-        meridiemParse: /ночі|ранку|дня|вечора/,
-        isPM: function (input) {
-            return /^(дня|вечора)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночі';
-            } else if (hour < 12) {
-                return 'ранку';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечора';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$a = [
-            'جنوری',
-            'فروری',
-            'مارچ',
-            'اپریل',
-            'مئی',
-            'جون',
-            'جولائی',
-            'اگست',
-            'ستمبر',
-            'اکتوبر',
-            'نومبر',
-            'دسمبر',
-        ],
-        days$1 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
-
-    moment.defineLocale('ur', {
-        months: months$a,
-        monthsShort: months$a,
-        weekdays: days$1,
-        weekdaysShort: days$1,
-        weekdaysMin: days$1,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[آج بوقت] LT',
-            nextDay: '[کل بوقت] LT',
-            nextWeek: 'dddd [بوقت] LT',
-            lastDay: '[گذشتہ روز بوقت] LT',
-            lastWeek: '[گذشتہ] dddd [بوقت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s بعد',
-            past: '%s قبل',
-            s: 'چند سیکنڈ',
-            ss: '%d سیکنڈ',
-            m: 'ایک منٹ',
-            mm: '%d منٹ',
-            h: 'ایک گھنٹہ',
-            hh: '%d گھنٹے',
-            d: 'ایک دن',
-            dd: '%d دن',
-            M: 'ایک ماہ',
-            MM: '%d ماہ',
-            y: 'ایک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('uz-latn', {
-        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
-        weekdays:
-            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
-                '_'
-            ),
-        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
-        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bugun soat] LT [da]',
-            nextDay: '[Ertaga] LT [da]',
-            nextWeek: 'dddd [kuni soat] LT [da]',
-            lastDay: '[Kecha soat] LT [da]',
-            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Yaqin %s ichida',
-            past: 'Bir necha %s oldin',
-            s: 'soniya',
-            ss: '%d soniya',
-            m: 'bir daqiqa',
-            mm: '%d daqiqa',
-            h: 'bir soat',
-            hh: '%d soat',
-            d: 'bir kun',
-            dd: '%d kun',
-            M: 'bir oy',
-            MM: '%d oy',
-            y: 'bir yil',
-            yy: '%d yil',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('uz', {
-        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
-        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
-        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бугун соат] LT [да]',
-            nextDay: '[Эртага] LT [да]',
-            nextWeek: 'dddd [куни соат] LT [да]',
-            lastDay: '[Кеча соат] LT [да]',
-            lastWeek: '[Утган] dddd [куни соат] LT [да]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Якин %s ичида',
-            past: 'Бир неча %s олдин',
-            s: 'фурсат',
-            ss: '%d фурсат',
-            m: 'бир дакика',
-            mm: '%d дакика',
-            h: 'бир соат',
-            hh: '%d соат',
-            d: 'бир кун',
-            dd: '%d кун',
-            M: 'бир ой',
-            MM: '%d ой',
-            y: 'бир йил',
-            yy: '%d йил',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('vi', {
-        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
-            '_'
-        ),
-        monthsShort:
-            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
-            '_'
-        ),
-        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /sa|ch/i,
-        isPM: function (input) {
-            return /^ch$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'sa' : 'SA';
-            } else {
-                return isLower ? 'ch' : 'CH';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [năm] YYYY',
-            LLL: 'D MMMM [năm] YYYY HH:mm',
-            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
-            l: 'DD/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hôm nay lúc] LT',
-            nextDay: '[Ngày mai lúc] LT',
-            nextWeek: 'dddd [tuần tới lúc] LT',
-            lastDay: '[Hôm qua lúc] LT',
-            lastWeek: 'dddd [tuần trước lúc] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s tới',
-            past: '%s trước',
-            s: 'vài giây',
-            ss: '%d giây',
-            m: 'một phút',
-            mm: '%d phút',
-            h: 'một giờ',
-            hh: '%d giờ',
-            d: 'một ngày',
-            dd: '%d ngày',
-            w: 'một tuần',
-            ww: '%d tuần',
-            M: 'một tháng',
-            MM: '%d tháng',
-            y: 'một năm',
-            yy: '%d năm',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('x-pseudo', {
-        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
-            '_'
-        ),
-        monthsShort:
-            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
-                '_'
-            ),
-        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
-        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[T~ódá~ý át] LT',
-            nextDay: '[T~ómó~rró~w át] LT',
-            nextWeek: 'dddd [át] LT',
-            lastDay: '[Ý~ést~érdá~ý át] LT',
-            lastWeek: '[L~ást] dddd [át] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'í~ñ %s',
-            past: '%s á~gó',
-            s: 'á ~féw ~sécó~ñds',
-            ss: '%d s~écóñ~ds',
-            m: 'á ~míñ~úté',
-            mm: '%d m~íñú~tés',
-            h: 'á~ñ hó~úr',
-            hh: '%d h~óúrs',
-            d: 'á ~dáý',
-            dd: '%d d~áýs',
-            M: 'á ~móñ~th',
-            MM: '%d m~óñt~hs',
-            y: 'á ~ýéár',
-            yy: '%d ý~éárs',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('yo', {
-        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
-            '_'
-        ),
-        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
-        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
-        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
-        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Ònì ni] LT',
-            nextDay: '[Ọ̀la ni] LT',
-            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
-            lastDay: '[Àna ni] LT',
-            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ní %s',
-            past: '%s kọjá',
-            s: 'ìsẹjú aayá die',
-            ss: 'aayá %d',
-            m: 'ìsẹjú kan',
-            mm: 'ìsẹjú %d',
-            h: 'wákati kan',
-            hh: 'wákati %d',
-            d: 'ọjọ́ kan',
-            dd: 'ọjọ́ %d',
-            M: 'osù kan',
-            MM: 'osù %d',
-            y: 'ọdún kan',
-            yy: 'ọdún %d',
-        },
-        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
-        ordinal: 'ọjọ́ %d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('zh-cn', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日Ah点mm分',
-            LLLL: 'YYYY年M月D日ddddAh点mm分',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            } else {
-                // '中午'
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[下]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            lastDay: '[昨天]LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[上]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '周';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s后',
-            past: '%s前',
-            s: '几秒',
-            ss: '%d 秒',
-            m: '1 分钟',
-            mm: '%d 分钟',
-            h: '1 小时',
-            hh: '%d 小时',
-            d: '1 天',
-            dd: '%d 天',
-            w: '1 周',
-            ww: '%d 周',
-            M: '1 个月',
-            MM: '%d 个月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('zh-hk', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1200) {
-                return '上午';
-            } else if (hm === 1200) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: '[下]ddddLT',
-            lastDay: '[昨天]LT',
-            lastWeek: '[上]ddddLT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('zh-mo', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s內',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    moment.defineLocale('zh-tw', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    moment.locale('en');
-
-    return moment;
-
-})));
Index: ckend/node_modules/moment/min/locales.min.js
===================================================================
--- backend/node_modules/moment/min/locales.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-!function(e,a){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?a(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],a):a(e.moment)}(this,function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,_){return e<12?_?"vm":"VM":_?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function E(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function a(n){return function(e,a,_,s){var d=E(e),t=J[n][E(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}function F(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function _(n){return function(e,a,_,s){var d=F(e),t=I[n][F(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}function z(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function s(n){return function(e,a,_,s){var d=z(e),t=U[n][z(e)];return(t=2===d?t[a?0:1]:t).replace(/%d/i,e)}}var J={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],N=(e.defineLocale("ar-dz",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),e.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}}),{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"}),I={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],R=(e.defineLocale("ar-ly",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:_("s"),ss:_("s"),m:_("m"),mm:_("m"),h:_("h"),hh:_("h"),d:_("d"),dd:_("d"),M:_("M"),MM:_("M"),y:_("y"),yy:_("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return N[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),e.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),C={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},K=(e.defineLocale("ar-ps",{months:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a \u0627\u0644\u0623\u0648\u0651\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0651\u0644".split("_"),monthsShort:"\u0643\u0662_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0661_\u062a\u0662_\u0643\u0661".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return C[e]}).split("").reverse().join("").replace(/[\u0661\u0662](?![\u062a\u0643])/g,function(e){return C[e]}).split("").reverse().join("").replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return R[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),B={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},q=(e.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return B[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return K[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),e.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),G={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},U={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},d=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],$=(e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return G[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return q[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"});function t(e,a,_){return"m"===_?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===_?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[_]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,_){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){var a;return 0===e?e+"-\u0131nc\u0131":e+($[a=e%10]||$[e%100-a]||$[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:t,mm:t,h:t,hh:t,d:"\u0434\u0437\u0435\u043d\u044c",dd:t,M:"\u043c\u0435\u0441\u044f\u0446",MM:t,y:"\u0433\u043e\u0434",yy:t},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),e.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,_=e%100;return 0===e?e+"-\u0435\u0432":0==_?e+"-\u0435\u043d":10<_&&_<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var Q={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},V={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},Z=(e.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return V[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Q[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a?e<4?e:e+12:"\u09ad\u09cb\u09b0"===a||"\u09b8\u0995\u09be\u09b2"===a?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===a?3<=e?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===a||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"}),X={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},ee=(e.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return X[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Z[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"}),ae={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function _e(e,a,_){return e+" "+(_={mm:"munutenn",MM:"miz",dd:"devezh"}[_],2!==(e=e)?_:void 0!==(e={m:"v",b:"v",d:"z"})[(_=_).charAt(0)]?e[_.charAt(0)]+_.substring(1):_)}e.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return ae[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ee[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});var d=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],n=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,r=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function i(e,a,_){var s=e+" ";switch(_){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return"jedan sat";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}e.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:r,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:r,monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:_e,h:"un eur",hh:"%d eur",d:"un devezh",dd:_e,M:"ur miz",MM:_e,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,_){return e<12?"a.m.":"g.m."}}),e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:i,m:function(e,a,_,s){switch(_){case"m":return a?"jedna minuta":s?"jednu minutu":"jedne minute"}},mm:i,h:i,hh:i,d:"dan",dd:i,M:"mjesec",MM:i,y:"godinu",yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});var r={standalone:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),format:"ledna_\xfanora_b\u0159ezna_dubna_kv\u011btna_\u010dervna_\u010dervence_srpna_z\xe1\u0159\xed_\u0159\xedjna_listopadu_prosince".split("_"),isFormat:/DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/},n="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),d=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],m=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function o(e){return 1<e&&e<5&&1!=~~(e/10)}function u(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?d+(o(e)?"sekundy":"sekund"):d+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?d+(o(e)?"minuty":"minut"):d+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?d+(o(e)?"hodiny":"hodin"):d+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?d+(o(e)?"dny":"dn\xed"):d+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?d+(o(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):d+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?d+(o(e)?"roky":"let"):d+"lety"}}function l(e,a,_,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[_][0]:e[_][1]}function M(e,a,_,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[_][0]:e[_][1]}function L(e,a,_,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[_][0]:e[_][1]}e.defineLocale("cs",{months:r,monthsShort:n,monthsRegex:m,monthsShortRegex:m,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:u,ss:u,m:u,mm:u,h:u,hh:u,d:u,dd:u,M:u,MM:u,y:u,yy:u},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:l,mm:"%d Minuten",h:l,hh:"%d Stunden",d:l,dd:l,w:l,ww:"%d Wochen",M:l,MM:l,y:l,yy:l},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:M,mm:"%d Minuten",h:M,hh:"%d Stunden",d:M,dd:M,w:M,ww:"%d Wochen",M:M,MM:M,y:M,yy:M},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:L,mm:"%d Minuten",h:L,hh:"%d Stunden",d:L,dd:L,w:L,ww:"%d Wochen",M:L,MM:L,y:L,yy:L},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});r=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],n=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];e.defineLocale("dv",{months:r,monthsShort:r,weekdays:n,weekdaysShort:n,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,_){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),e.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?("string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl:this._monthsNominativeEl)[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,_){return 11<e?_?"\u03bc\u03bc":"\u039c\u039c":_?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var _,e=this._calendarEl[e],s=a&&a.hours();return _=e,(e="undefined"!=typeof Function&&_ instanceof Function||"[object Function]"===Object.prototype.toString.call(_)?e.apply(a):e).replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,_){return 11<e?_?"p.t.m.":"P.T.M.":_?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var se="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),de="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),m=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],d=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,te=(e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?de:se)[e.month()]:se},monthsRegex:d,monthsShortRegex:d,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),ne="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],n=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,re=(e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ne:te)[e.month()]:te},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),ie="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],m=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,me=(e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ie:re)[e.month()]:re},monthsRegex:m,monthsShortRegex:m,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),oe="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function Y(e,a,_,s){e={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?e[_][2]||e[_][1]:s?e[_][0]:e[_][1]}e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?oe:me)[e.month()]:me},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),e.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:Y,ss:Y,m:Y,mm:Y,h:Y,hh:Y,d:Y,dd:"%d p\xe4eva",M:Y,MM:Y,y:Y,yy:Y},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var ue={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},le={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"},Me=(e.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,_){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return le[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ue[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" ")),Le=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",Me[7],Me[8],Me[9]];function h(e,a,_,s){var d="";switch(_){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":d=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":d=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":d=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":d=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":d=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":d=s?"vuoden":"vuotta";break}return _=s,d=((e=e)<10?(_?Le:Me)[e]:e)+" "+d}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:h,ss:h,m:h,mm:h,h:h,hh:h,d:h,dd:h,M:h,MM:h,y:h,yy:h},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),e.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),e.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var m=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,d=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i],Ye=(e.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:m,monthsShortRegex:m,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:d,longMonthsParse:d,shortMonthsParse:d,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),he="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?he:Ye)[e.month()]:Ye},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),e.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function y(e,a,_,s){e={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?e[_][0]:e[_][1]}function c(e,a,_,s){e={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?e[_][0]:e[_][1]}e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:y,ss:y,m:y,mm:y,h:y,hh:y,d:y,dd:y,M:y,MM:y,y:y,yy:y},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:c,ss:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var ye={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},ce={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"},ke=(e.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return ce[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ye[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),e.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,_){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?_?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?_?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),De={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},r=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];function k(e,a,_){var s=e+" ";switch(_){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}e.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:r,longMonthsParse:r,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return De[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ke[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),e.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:k,m:k,mm:k,h:k,hh:k,d:"dan",dd:k,M:"mjesec",MM:k,y:"godinu",yy:k},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var pe="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function D(e,a,_,s){var d=e;switch(_){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return d+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return d+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return d+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return d+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return d+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return d+(s||a?" \xe9v":" \xe9ve")}return""}function Te(e){return(e?"":"[m\xfalt] ")+"["+pe[this.day()]+"] LT[-kor]"}function fe(e){return e%100==11||e%10!=1}function p(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return fe(e)?d+(a||s?"sek\xfandur":"sek\xfandum"):d+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return fe(e)?d+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?d+"m\xedn\xfata":d+"m\xedn\xfatu";case"hh":return fe(e)?d+(a||s?"klukkustundir":"klukkustundum"):d+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return fe(e)?a?d+"dagar":d+(s?"daga":"d\xf6gum"):a?d+"dagur":d+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return fe(e)?a?d+"m\xe1nu\xf0ir":d+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?d+"m\xe1nu\xf0ur":d+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return fe(e)?d+(a||s?"\xe1r":"\xe1rum"):d+(a||s?"\xe1r":"\xe1ri")}}e.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,_){return e<12?!0===_?"de":"DE":!0===_?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Te.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Te.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:D,ss:D,m:D,mm:D,h:D,hh:D,d:D,dd:D,M:D,MM:D,y:D,yy:D},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),e.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:p,ss:p,m:p,mm:p,h:"klukkustund",hh:p,d:p,dd:p,M:p,MM:p,y:p,yy:p},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,_){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),e.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,_){return"\u10d8"===_?a+"\u10e8\u10d8":a+_+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var we={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"},ge=(e.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(we[e]||we[e%10]||we[100<=e?100:null])},week:{dow:1,doy:7}}),{1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"}),He={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"},be=(e.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,_){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return He[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ge[e]})},week:{dow:1,doy:4}}),{1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"}),Se={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};function T(e,a,_,s){e={s:["\xe7end san\xeeye","\xe7end san\xeeyeyan"],ss:[e+" san\xeeye",e+" san\xeeyeyan"],m:["deq\xeeqeyek","deq\xeeqeyek\xea"],mm:[e+" deq\xeeqe",e+" deq\xeeqeyan"],h:["saetek","saetek\xea"],hh:[e+" saet",e+" saetan"],d:["rojek","rojek\xea"],dd:[e+" roj",e+" rojan"],w:["hefteyek","hefteyek\xea"],ww:[e+" hefte",e+" hefteyan"],M:["mehek","mehek\xea"],MM:[e+" meh",e+" mehan"],y:["salek","salek\xea"],yy:[e+" sal",e+" salan"]};return a?e[_][0]:e[_][1]}e.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return Se[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return be[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),e.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,_){return e<12?"\uc624\uc804":"\uc624\ud6c4"}}),e.defineLocale("ku-kmr",{months:"R\xeabendan_Sibat_Adar_N\xeesan_Gulan_Hez\xeeran_T\xeermeh_Tebax_\xcelon_Cotmeh_Mijdar_Berfanbar".split("_"),monthsShort:"R\xeab_Sib_Ada_N\xees_Gul_Hez_T\xeer_Teb_\xcelo_Cot_Mij_Ber".split("_"),monthsParseExact:!0,weekdays:"Yek\u015fem_Du\u015fem_S\xea\u015fem_\xc7ar\u015fem_P\xeanc\u015fem_\xcen_\u015eem\xee".split("_"),weekdaysShort:"Yek_Du_S\xea_\xc7ar_P\xean_\xcen_\u015eem".split("_"),weekdaysMin:"Ye_Du_S\xea_\xc7a_P\xea_\xcen_\u015ee".split("_"),meridiem:function(e,a,_){return e<12?_?"bn":"BN":_?"pn":"PN"},meridiemParse:/bn|BN|pn|PN/,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM[a] YYYY[an]",LLL:"Do MMMM[a] YYYY[an] HH:mm",LLLL:"dddd, Do MMMM[a] YYYY[an] HH:mm",ll:"Do MMM[.] YYYY[an]",lll:"Do MMM[.] YYYY[an] HH:mm",llll:"ddd[.], Do MMM[.] YYYY[an] HH:mm"},calendar:{sameDay:"[\xcero di saet] LT [de]",nextDay:"[Sib\xea di saet] LT [de]",nextWeek:"dddd [di saet] LT [de]",lastDay:"[Duh di saet] LT [de]",lastWeek:"dddd[a bor\xee di saet] LT [de]",sameElse:"L"},relativeTime:{future:"di %s de",past:"ber\xee %s",s:T,ss:T,m:T,mm:T,h:T,hh:T,d:T,dd:T,w:T,ww:T,M:T,MM:T,y:T,yy:T},dayOfMonthOrdinalParse:/\d{1,2}(?:y\xea|\xea|\.)/,ordinal:function(e,a){var a=a.toLowerCase();return a.includes("w")||a.includes("m")?e+".":e+(e=(a=""+(a=e)).substring(a.length-1),12==(a=1<a.length?a.substring(a.length-2):"")||13==a||"2"!=e&&"3"!=e&&"50"!=a&&"70"!=e&&"80"!=e?"\xea":"y\xea")},week:{dow:1,doy:4}});var ve={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},je={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},n=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"],xe=(e.defineLocale("ku",{months:n,monthsShort:n,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,_){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return je[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ve[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"});function Pe(e,a,_,s){var d={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?d[_][0]:d[_][1]}function We(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;var a;if(e<100)return We(0==(a=e%10)?e/10:a);if(e<1e4){for(;10<=e;)e/=10;return We(e)}return We(e/=1e3)}e.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(xe[e]||xe[e%10]||xe[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return We(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return We(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:Pe,mm:"%d Minutten",h:Pe,hh:"%d Stonnen",d:Pe,dd:"%d Deeg",M:Pe,MM:"%d M\xe9int",y:Pe,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,_){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var Ae={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function Oe(e,a,_,s){return a?f(_)[0]:s?f(_)[1]:f(_)[2]}function Ee(e){return e%10==0||10<e&&e<20}function f(e){return Ae[e].split("_")}function Fe(e,a,_,s){var d=e+" ";return 1===e?d+Oe(0,a,_[0],s):a?d+(Ee(e)?f(_)[1]:f(_)[0]):s?d+f(_)[1]:d+(Ee(e)?f(_)[1]:f(_)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,_,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:Fe,m:Oe,mm:Fe,h:Oe,hh:Fe,d:Oe,dd:Fe,M:Oe,MM:Fe,y:Oe,yy:Fe},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var ze={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Je(e,a,_){return _?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function Ne(e,a,_){return e+" "+Je(ze[_],e,a)}function Ie(e,a,_){return Je(ze[_],e,a)}e.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:Ne,m:Ie,mm:Ne,h:Ie,hh:Ne,d:Ie,dd:Ne,M:Ie,MM:Ne,y:Ie,yy:Ne},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var w={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,_){var s=w.words[_];return 1===_.length?a?s[0]:s[1]:e+" "+w.correctGrammaticalCase(e,s)}};function g(e,a,_,s){switch(_){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:w.translate,m:w.translate,mm:w.translate,h:w.translate,hh:w.translate,d:"dan",dd:w.translate,M:"mjesec",MM:w.translate,y:"godinu",yy:w.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,_=e%100;return 0===e?e+"-\u0435\u0432":0==_?e+"-\u0435\u043d":10<_&&_<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),e.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,_){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),e.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,_){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:g,ss:g,m:g,mm:g,h:g,hh:g,d:g,dd:g,M:g,MM:g,y:g,yy:g},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var Re={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ce={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function H(e,a,_,s){var d="";if(a)switch(_){case"s":d="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":d="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":d="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":d="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":d="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":d="%d \u0924\u093e\u0938";break;case"d":d="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":d="%d \u0926\u093f\u0935\u0938";break;case"M":d="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":d="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":d="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":d="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(_){case"s":d="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":d="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":d="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":d="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":d="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":d="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":d="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":d="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":d="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":d="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":d="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":d="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return d.replace(/%d/i,e)}e.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:H,ss:H,m:H,mm:H,h:H,hh:H,d:H,dd:H,M:H,MM:H,y:H,yy:H},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ce[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Re[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,_){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,_){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Ke={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},Be={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"},qe=(e.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return Be[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ke[e]})},week:{dow:1,doy:4}}),e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"\xe9n time",hh:"%d timer",d:"\xe9n dag",dd:"%d dager",w:"\xe9n uke",ww:"%d uker",M:"\xe9n m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),Ge={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},Ue=(e.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ge[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return qe[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,_){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),$e="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),m=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],d=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,Qe=(e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?$e:Ue)[e.month()]:Ue},monthsRegex:d,monthsShortRegex:d,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Ve="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],n=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,Ze=(e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?Ve:Qe)[e.month()]:Qe},monthsRegex:n,monthsShortRegex:n,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}}),{1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"}),Xe={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"},ea=(e.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Xe[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ze[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}}),"stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_")),aa="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),d=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function _a(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function b(e,a,_){var s=e+" ";switch(_){case"ss":return s+(_a(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(_a(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(_a(e)?"godziny":"godzin");case"ww":return s+(_a(e)?"tygodnie":"tygodni");case"MM":return s+(_a(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(_a(e)?"lata":"lat")}}function S(e,a,_){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[_]}function v(e,a,_){return"m"===_?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[_]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}e.defineLocale("pl",{months:function(e,a){return e?(/D MMMM/.test(a)?aa:ea)[e.month()]:ea},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:b,m:b,mm:b,h:b,hh:b,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:b,M:"miesi\u0105c",MM:b,y:"rok",yy:b},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"}),e.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:S,m:"un minut",mm:S,h:"o or\u0103",hh:S,d:"o zi",dd:S,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:S,M:"o lun\u0103",MM:S,y:"un an",yy:S},week:{dow:1,doy:7}});m=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i],e.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:m,longMonthsParse:m,shortMonthsParse:m,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:v,m:v,mm:v,h:"\u0447\u0430\u0441",hh:v,d:"\u0434\u0435\u043d\u044c",dd:v,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:v,M:"\u043c\u0435\u0441\u044f\u0446",MM:v,y:"\u0433\u043e\u0434",yy:v},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}}),n=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],r=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"],e.defineLocale("sd",{months:n,monthsShort:n,weekdays:r,weekdaysShort:r,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),e.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,_){return 11<e?_?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":_?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}}),d="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),m="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function sa(e){return 1<e&&e<5}function j(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?d+(sa(e)?"sekundy":"sek\xfand"):d+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?d+(sa(e)?"min\xfaty":"min\xfat"):d+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?d+(sa(e)?"hodiny":"hod\xedn"):d+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?d+(sa(e)?"dni":"dn\xed"):d+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?d+(sa(e)?"mesiace":"mesiacov"):d+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?d+(sa(e)?"roky":"rokov"):d+"rokmi"}}function x(e,a,_,s){var d=e+" ";switch(_){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return d+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return d+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return d+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return d+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return d+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return d+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}e.defineLocale("sk",{months:d,monthsShort:m,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:j,ss:j,m:j,mm:j,h:j,hh:j,d:j,dd:j,M:j,MM:j,y:j,yy:j},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:x,ss:x,m:x,mm:x,h:x,hh:x,d:x,dd:x,M:x,MM:x,y:x,yy:x},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,_){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var P={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["\u0433\u043e\u0434\u0438\u043d\u0443","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,_,s){var d=P.words[_];return 1===_.length?"y"===_&&a?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":s||a?d[0]:d[1]:(s=P.correctGrammaticalCase(e,d),"yy"===_&&a&&"\u0433\u043e\u0434\u0438\u043d\u0443"===s?e+" \u0433\u043e\u0434\u0438\u043d\u0430":e+" "+s)}},W=(e.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:P.translate,m:P.translate,mm:P.translate,h:P.translate,hh:P.translate,d:P.translate,dd:P.translate,M:P.translate,MM:P.translate,y:P.translate,yy:P.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,_,s){var d=W.words[_];return 1===_.length?"y"===_&&a?"jedna godina":s||a?d[0]:d[1]:(s=W.correctGrammaticalCase(e,d),"yy"===_&&a&&"godinu"===s?e+" godina":e+" "+s)}}),da=(e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:W.translate,m:W.translate,mm:W.translate,h:W.translate,hh:W.translate,d:W.translate,dd:W.translate,M:W.translate,MM:W.translate,y:W.translate,yy:W.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,_){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}}),{1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"}),ta={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"},na=(e.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return ta[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return da[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,_){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),e.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),{0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"}),ra=(e.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,_){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(na[e]||na[e%10]||na[100<=e?100:null])},week:{dow:1,doy:7}}),e.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,_){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),{1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"}),ia=(e.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var _;return 0===e?e+"'unjy":e+(ra[_=e%10]||ra[e%100-_]||ra[100<=e?100:null])}},week:{dow:1,doy:7}}),e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),"pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"));function ma(e,a,_,s){var d=function(e){var a=Math.floor(e%1e3/100),_=Math.floor(e%100/10),e=e%10,s="";0<a&&(s+=ia[a]+"vatlh");0<_&&(s+=(""!==s?" ":"")+ia[_]+"maH");0<e&&(s+=(""!==s?" ":"")+ia[e]);return""===s?"pagh":s}(e);switch(_){case"ss":return d+" lup";case"mm":return d+" tup";case"hh":return d+" rep";case"dd":return d+" jaj";case"MM":return d+" jar";case"yy":return d+" DIS"}}e.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:ma,m:"wa\u2019 tup",mm:ma,h:"wa\u2019 rep",hh:ma,d:"wa\u2019 jaj",dd:ma,M:"wa\u2019 jar",MM:ma,y:"wa\u2019 DIS",yy:ma},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var oa={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function A(e,a,_,s){e={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?e[_][0]:e[_][1]}function O(e,a,_){return"m"===_?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===_?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[_]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}function ua(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}e.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_\xc7ar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,_){return e<12?_?"\xf6\xf6":"\xd6\xd6":_?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var _;return 0===e?e+"'\u0131nc\u0131":e+(oa[_=e%10]||oa[e%100-_]||oa[100<=e?100:null])}},week:{dow:1,doy:7}}),e.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,_){return 11<e?_?"d'o":"D'O":_?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:A,ss:A,m:A,mm:A,h:A,hh:A,d:A,dd:A,M:A,MM:A,y:A,yy:A},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),e.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),e.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),e.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,_){e=100*e+a;return e<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":e<900?"\u0633\u06d5\u06be\u06d5\u0631":e<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":e<1230?"\u0686\u06c8\u0634":e<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),e.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var _={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?_.nominative.slice(1,7).concat(_.nominative.slice(0,1)):e?_[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:_.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:ua("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:ua("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:ua("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:ua("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return ua("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return ua("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:O,m:O,mm:O,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:O,d:"\u0434\u0435\u043d\u044c",dd:O,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:O,y:"\u0440\u0456\u043a",yy:O},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,_){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});n=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],r=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return e.defineLocale("ur",{months:n,monthsShort:n,weekdays:r,weekdaysShort:r,weekdaysMin:r,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,_){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),e.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),e.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,_){return e<12?_?"sa":"SA":_?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),e.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),e.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),e.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,_){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),e.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1200?"\u4e0a\u5348":1200===e?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,_){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),e.locale("en"),e});
-//# sourceMappingURL=locales.min.js.map
Index: ckend/node_modules/moment/min/locales.min.js.map
===================================================================
--- backend/node_modules/moment/min/locales.min.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"locales.min.js","sources":["locales.js"],"names":["global","factory","exports","module","require","define","amd","moment","this","defineLocale","months","split","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","input","test","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","s","ss","m","mm","h","hh","d","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","n","pluralize","u","withoutSuffix","string","isFuture","f","str","plurals","replace","pluralForm$1","pluralize$1","plurals$1","pluralForm$2","pluralize$2","plurals$2","symbolMap","weekdaysParseExact","hour","minute","postformat","1","2","3","4","5","6","7","8","9","0","months$1","symbolMap$1","preparse","match","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","symbolMap$2","reverse","join","numberMap$1","symbolMap$3","numberMap$2","months$2","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","key","num","forms","word","a","format","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","symbolMap$4","numberMap$3","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$5","meridiemHour","numberMap$4","symbolMap$6","numberMap$5","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","text","undefined","mutationTable","b","charAt","substring","monthsShortRegex","monthsParseExact","monthsParse","monthsRegex","minWeekdaysParse","translate","result","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","token","ll","lll","llll","months$3","monthsParse$1","monthsRegex$1","plural$1","translate$1","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","l","output","exec","months$4","monthsNominativeEl","monthsGenitiveEl","momentToFormat","indexOf","_monthsGenitiveEl","_monthsNominativeEl","month","toLowerCase","calendarEl","mom","_calendarEl","Function","Object","prototype","toString","call","apply","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$2","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$3","monthsShortDot$2","invalidDate","monthsShort$3","monthsParse$4","monthsRegex$4","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$5","processRelativeTime$4","symbolMap$7","numberMap$6","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$6","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$9","numberMap$8","१","२","३","४","५","६","७","८","९","०","monthsParse$7","translate$3","weekEndings","translate$4","plural$2","translate$5","eras","since","offset","name","narrow","abbr","until","Infinity","eraYearOrdinalRegex","eraYearOrdinalParse","parseInt","now","$0","$1","$2","suffixes$1","40","symbolMap$a","numberMap$9","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$b","numberMap$a","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","processRelativeTime$7","isUpper","p","includes","length","symbolMap$c","numberMap$b","months$7","suffixes$2","processRelativeTime$8","eifelerRegelAppliesToNumber","isNaN","substr","units","translateSingular","special","translate$6","units$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$7","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$8","symbolMap$g","numberMap$f","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$b","months$8","days","months$9","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","Math","floor","ten","one","time","slice","suffixes$5","processRelativeTime$a","relativeTimeWithPlural$4","processHoursFunction","hm","nominative","accusative","genitive","concat","months$a","days$1","locale"],"mappings":"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"}
Index: ckend/node_modules/moment/min/moment-with-locales.js
===================================================================
--- backend/node_modules/moment/min/moment-with-locales.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18472 +1,0 @@
-;(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    global.moment = factory()
-}(this, (function () { 'use strict';
-
-    var hookCallback;
-
-    function hooks() {
-        return hookCallback.apply(null, arguments);
-    }
-
-    // This is done to register the method called with moment()
-    // without creating circular dependencies.
-    function setHookCallback(callback) {
-        hookCallback = callback;
-    }
-
-    function isArray(input) {
-        return (
-            input instanceof Array ||
-            Object.prototype.toString.call(input) === '[object Array]'
-        );
-    }
-
-    function isObject(input) {
-        // IE8 will treat undefined and null as object if it wasn't for
-        // input != null
-        return (
-            input != null &&
-            Object.prototype.toString.call(input) === '[object Object]'
-        );
-    }
-
-    function hasOwnProp(a, b) {
-        return Object.prototype.hasOwnProperty.call(a, b);
-    }
-
-    function isObjectEmpty(obj) {
-        if (Object.getOwnPropertyNames) {
-            return Object.getOwnPropertyNames(obj).length === 0;
-        } else {
-            var k;
-            for (k in obj) {
-                if (hasOwnProp(obj, k)) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    function isUndefined(input) {
-        return input === void 0;
-    }
-
-    function isNumber(input) {
-        return (
-            typeof input === 'number' ||
-            Object.prototype.toString.call(input) === '[object Number]'
-        );
-    }
-
-    function isDate(input) {
-        return (
-            input instanceof Date ||
-            Object.prototype.toString.call(input) === '[object Date]'
-        );
-    }
-
-    function map(arr, fn) {
-        var res = [],
-            i,
-            arrLen = arr.length;
-        for (i = 0; i < arrLen; ++i) {
-            res.push(fn(arr[i], i));
-        }
-        return res;
-    }
-
-    function extend(a, b) {
-        for (var i in b) {
-            if (hasOwnProp(b, i)) {
-                a[i] = b[i];
-            }
-        }
-
-        if (hasOwnProp(b, 'toString')) {
-            a.toString = b.toString;
-        }
-
-        if (hasOwnProp(b, 'valueOf')) {
-            a.valueOf = b.valueOf;
-        }
-
-        return a;
-    }
-
-    function createUTC(input, format, locale, strict) {
-        return createLocalOrUTC(input, format, locale, strict, true).utc();
-    }
-
-    function defaultParsingFlags() {
-        // We need to deep clone this object.
-        return {
-            empty: false,
-            unusedTokens: [],
-            unusedInput: [],
-            overflow: -2,
-            charsLeftOver: 0,
-            nullInput: false,
-            invalidEra: null,
-            invalidMonth: null,
-            invalidFormat: false,
-            userInvalidated: false,
-            iso: false,
-            parsedDateParts: [],
-            era: null,
-            meridiem: null,
-            rfc2822: false,
-            weekdayMismatch: false,
-        };
-    }
-
-    function getParsingFlags(m) {
-        if (m._pf == null) {
-            m._pf = defaultParsingFlags();
-        }
-        return m._pf;
-    }
-
-    var some;
-    if (Array.prototype.some) {
-        some = Array.prototype.some;
-    } else {
-        some = function (fun) {
-            var t = Object(this),
-                len = t.length >>> 0,
-                i;
-
-            for (i = 0; i < len; i++) {
-                if (i in t && fun.call(this, t[i], i, t)) {
-                    return true;
-                }
-            }
-
-            return false;
-        };
-    }
-
-    function isValid(m) {
-        var flags = null,
-            parsedParts = false,
-            isNowValid = m._d && !isNaN(m._d.getTime());
-        if (isNowValid) {
-            flags = getParsingFlags(m);
-            parsedParts = some.call(flags.parsedDateParts, function (i) {
-                return i != null;
-            });
-            isNowValid =
-                flags.overflow < 0 &&
-                !flags.empty &&
-                !flags.invalidEra &&
-                !flags.invalidMonth &&
-                !flags.invalidWeekday &&
-                !flags.weekdayMismatch &&
-                !flags.nullInput &&
-                !flags.invalidFormat &&
-                !flags.userInvalidated &&
-                (!flags.meridiem || (flags.meridiem && parsedParts));
-            if (m._strict) {
-                isNowValid =
-                    isNowValid &&
-                    flags.charsLeftOver === 0 &&
-                    flags.unusedTokens.length === 0 &&
-                    flags.bigHour === undefined;
-            }
-        }
-        if (Object.isFrozen == null || !Object.isFrozen(m)) {
-            m._isValid = isNowValid;
-        } else {
-            return isNowValid;
-        }
-        return m._isValid;
-    }
-
-    function createInvalid(flags) {
-        var m = createUTC(NaN);
-        if (flags != null) {
-            extend(getParsingFlags(m), flags);
-        } else {
-            getParsingFlags(m).userInvalidated = true;
-        }
-
-        return m;
-    }
-
-    // Plugins that add properties should also add the key here (null value),
-    // so we can properly clone ourselves.
-    var momentProperties = (hooks.momentProperties = []),
-        updateInProgress = false;
-
-    function copyConfig(to, from) {
-        var i,
-            prop,
-            val,
-            momentPropertiesLen = momentProperties.length;
-
-        if (!isUndefined(from._isAMomentObject)) {
-            to._isAMomentObject = from._isAMomentObject;
-        }
-        if (!isUndefined(from._i)) {
-            to._i = from._i;
-        }
-        if (!isUndefined(from._f)) {
-            to._f = from._f;
-        }
-        if (!isUndefined(from._l)) {
-            to._l = from._l;
-        }
-        if (!isUndefined(from._strict)) {
-            to._strict = from._strict;
-        }
-        if (!isUndefined(from._tzm)) {
-            to._tzm = from._tzm;
-        }
-        if (!isUndefined(from._isUTC)) {
-            to._isUTC = from._isUTC;
-        }
-        if (!isUndefined(from._offset)) {
-            to._offset = from._offset;
-        }
-        if (!isUndefined(from._pf)) {
-            to._pf = getParsingFlags(from);
-        }
-        if (!isUndefined(from._locale)) {
-            to._locale = from._locale;
-        }
-
-        if (momentPropertiesLen > 0) {
-            for (i = 0; i < momentPropertiesLen; i++) {
-                prop = momentProperties[i];
-                val = from[prop];
-                if (!isUndefined(val)) {
-                    to[prop] = val;
-                }
-            }
-        }
-
-        return to;
-    }
-
-    // Moment prototype object
-    function Moment(config) {
-        copyConfig(this, config);
-        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
-        if (!this.isValid()) {
-            this._d = new Date(NaN);
-        }
-        // Prevent infinite loop in case updateOffset creates new moment
-        // objects.
-        if (updateInProgress === false) {
-            updateInProgress = true;
-            hooks.updateOffset(this);
-            updateInProgress = false;
-        }
-    }
-
-    function isMoment(obj) {
-        return (
-            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
-        );
-    }
-
-    function warn(msg) {
-        if (
-            hooks.suppressDeprecationWarnings === false &&
-            typeof console !== 'undefined' &&
-            console.warn
-        ) {
-            console.warn('Deprecation warning: ' + msg);
-        }
-    }
-
-    function deprecate(msg, fn) {
-        var firstTime = true;
-
-        return extend(function () {
-            if (hooks.deprecationHandler != null) {
-                hooks.deprecationHandler(null, msg);
-            }
-            if (firstTime) {
-                var args = [],
-                    arg,
-                    i,
-                    key,
-                    argLen = arguments.length;
-                for (i = 0; i < argLen; i++) {
-                    arg = '';
-                    if (typeof arguments[i] === 'object') {
-                        arg += '\n[' + i + '] ';
-                        for (key in arguments[0]) {
-                            if (hasOwnProp(arguments[0], key)) {
-                                arg += key + ': ' + arguments[0][key] + ', ';
-                            }
-                        }
-                        arg = arg.slice(0, -2); // Remove trailing comma and space
-                    } else {
-                        arg = arguments[i];
-                    }
-                    args.push(arg);
-                }
-                warn(
-                    msg +
-                        '\nArguments: ' +
-                        Array.prototype.slice.call(args).join('') +
-                        '\n' +
-                        new Error().stack
-                );
-                firstTime = false;
-            }
-            return fn.apply(this, arguments);
-        }, fn);
-    }
-
-    var deprecations = {};
-
-    function deprecateSimple(name, msg) {
-        if (hooks.deprecationHandler != null) {
-            hooks.deprecationHandler(name, msg);
-        }
-        if (!deprecations[name]) {
-            warn(msg);
-            deprecations[name] = true;
-        }
-    }
-
-    hooks.suppressDeprecationWarnings = false;
-    hooks.deprecationHandler = null;
-
-    function isFunction(input) {
-        return (
-            (typeof Function !== 'undefined' && input instanceof Function) ||
-            Object.prototype.toString.call(input) === '[object Function]'
-        );
-    }
-
-    function set(config) {
-        var prop, i;
-        for (i in config) {
-            if (hasOwnProp(config, i)) {
-                prop = config[i];
-                if (isFunction(prop)) {
-                    this[i] = prop;
-                } else {
-                    this['_' + i] = prop;
-                }
-            }
-        }
-        this._config = config;
-        // Lenient ordinal parsing accepts just a number in addition to
-        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
-        // TODO: Remove "ordinalParse" fallback in next major release.
-        this._dayOfMonthOrdinalParseLenient = new RegExp(
-            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
-                '|' +
-                /\d{1,2}/.source
-        );
-    }
-
-    function mergeConfigs(parentConfig, childConfig) {
-        var res = extend({}, parentConfig),
-            prop;
-        for (prop in childConfig) {
-            if (hasOwnProp(childConfig, prop)) {
-                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
-                    res[prop] = {};
-                    extend(res[prop], parentConfig[prop]);
-                    extend(res[prop], childConfig[prop]);
-                } else if (childConfig[prop] != null) {
-                    res[prop] = childConfig[prop];
-                } else {
-                    delete res[prop];
-                }
-            }
-        }
-        for (prop in parentConfig) {
-            if (
-                hasOwnProp(parentConfig, prop) &&
-                !hasOwnProp(childConfig, prop) &&
-                isObject(parentConfig[prop])
-            ) {
-                // make sure changes to properties don't modify parent config
-                res[prop] = extend({}, res[prop]);
-            }
-        }
-        return res;
-    }
-
-    function Locale(config) {
-        if (config != null) {
-            this.set(config);
-        }
-    }
-
-    var keys;
-
-    if (Object.keys) {
-        keys = Object.keys;
-    } else {
-        keys = function (obj) {
-            var i,
-                res = [];
-            for (i in obj) {
-                if (hasOwnProp(obj, i)) {
-                    res.push(i);
-                }
-            }
-            return res;
-        };
-    }
-
-    var defaultCalendar = {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    };
-
-    function calendar(key, mom, now) {
-        var output = this._calendar[key] || this._calendar['sameElse'];
-        return isFunction(output) ? output.call(mom, now) : output;
-    }
-
-    function zeroFill(number, targetLength, forceSign) {
-        var absNumber = '' + Math.abs(number),
-            zerosToFill = targetLength - absNumber.length,
-            sign = number >= 0;
-        return (
-            (sign ? (forceSign ? '+' : '') : '-') +
-            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
-            absNumber
-        );
-    }
-
-    var formattingTokens =
-            /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
-        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
-        formatFunctions = {},
-        formatTokenFunctions = {};
-
-    // token:    'M'
-    // padded:   ['MM', 2]
-    // ordinal:  'Mo'
-    // callback: function () { this.month() + 1 }
-    function addFormatToken(token, padded, ordinal, callback) {
-        var func = callback;
-        if (typeof callback === 'string') {
-            func = function () {
-                return this[callback]();
-            };
-        }
-        if (token) {
-            formatTokenFunctions[token] = func;
-        }
-        if (padded) {
-            formatTokenFunctions[padded[0]] = function () {
-                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
-            };
-        }
-        if (ordinal) {
-            formatTokenFunctions[ordinal] = function () {
-                return this.localeData().ordinal(
-                    func.apply(this, arguments),
-                    token
-                );
-            };
-        }
-    }
-
-    function removeFormattingTokens(input) {
-        if (input.match(/\[[\s\S]/)) {
-            return input.replace(/^\[|\]$/g, '');
-        }
-        return input.replace(/\\/g, '');
-    }
-
-    function makeFormatFunction(format) {
-        var array = format.match(formattingTokens),
-            i,
-            length;
-
-        for (i = 0, length = array.length; i < length; i++) {
-            if (formatTokenFunctions[array[i]]) {
-                array[i] = formatTokenFunctions[array[i]];
-            } else {
-                array[i] = removeFormattingTokens(array[i]);
-            }
-        }
-
-        return function (mom) {
-            var output = '',
-                i;
-            for (i = 0; i < length; i++) {
-                output += isFunction(array[i])
-                    ? array[i].call(mom, format)
-                    : array[i];
-            }
-            return output;
-        };
-    }
-
-    // format date using native date object
-    function formatMoment(m, format) {
-        if (!m.isValid()) {
-            return m.localeData().invalidDate();
-        }
-
-        format = expandFormat(format, m.localeData());
-        formatFunctions[format] =
-            formatFunctions[format] || makeFormatFunction(format);
-
-        return formatFunctions[format](m);
-    }
-
-    function expandFormat(format, locale) {
-        var i = 5;
-
-        function replaceLongDateFormatTokens(input) {
-            return locale.longDateFormat(input) || input;
-        }
-
-        localFormattingTokens.lastIndex = 0;
-        while (i >= 0 && localFormattingTokens.test(format)) {
-            format = format.replace(
-                localFormattingTokens,
-                replaceLongDateFormatTokens
-            );
-            localFormattingTokens.lastIndex = 0;
-            i -= 1;
-        }
-
-        return format;
-    }
-
-    var defaultLongDateFormat = {
-        LTS: 'h:mm:ss A',
-        LT: 'h:mm A',
-        L: 'MM/DD/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY h:mm A',
-        LLLL: 'dddd, MMMM D, YYYY h:mm A',
-    };
-
-    function longDateFormat(key) {
-        var format = this._longDateFormat[key],
-            formatUpper = this._longDateFormat[key.toUpperCase()];
-
-        if (format || !formatUpper) {
-            return format;
-        }
-
-        this._longDateFormat[key] = formatUpper
-            .match(formattingTokens)
-            .map(function (tok) {
-                if (
-                    tok === 'MMMM' ||
-                    tok === 'MM' ||
-                    tok === 'DD' ||
-                    tok === 'dddd'
-                ) {
-                    return tok.slice(1);
-                }
-                return tok;
-            })
-            .join('');
-
-        return this._longDateFormat[key];
-    }
-
-    var defaultInvalidDate = 'Invalid date';
-
-    function invalidDate() {
-        return this._invalidDate;
-    }
-
-    var defaultOrdinal = '%d',
-        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
-
-    function ordinal(number) {
-        return this._ordinal.replace('%d', number);
-    }
-
-    var defaultRelativeTime = {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        w: 'a week',
-        ww: '%d weeks',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    };
-
-    function relativeTime(number, withoutSuffix, string, isFuture) {
-        var output = this._relativeTime[string];
-        return isFunction(output)
-            ? output(number, withoutSuffix, string, isFuture)
-            : output.replace(/%d/i, number);
-    }
-
-    function pastFuture(diff, output) {
-        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
-    }
-
-    var aliases = {
-        D: 'date',
-        dates: 'date',
-        date: 'date',
-        d: 'day',
-        days: 'day',
-        day: 'day',
-        e: 'weekday',
-        weekdays: 'weekday',
-        weekday: 'weekday',
-        E: 'isoWeekday',
-        isoweekdays: 'isoWeekday',
-        isoweekday: 'isoWeekday',
-        DDD: 'dayOfYear',
-        dayofyears: 'dayOfYear',
-        dayofyear: 'dayOfYear',
-        h: 'hour',
-        hours: 'hour',
-        hour: 'hour',
-        ms: 'millisecond',
-        milliseconds: 'millisecond',
-        millisecond: 'millisecond',
-        m: 'minute',
-        minutes: 'minute',
-        minute: 'minute',
-        M: 'month',
-        months: 'month',
-        month: 'month',
-        Q: 'quarter',
-        quarters: 'quarter',
-        quarter: 'quarter',
-        s: 'second',
-        seconds: 'second',
-        second: 'second',
-        gg: 'weekYear',
-        weekyears: 'weekYear',
-        weekyear: 'weekYear',
-        GG: 'isoWeekYear',
-        isoweekyears: 'isoWeekYear',
-        isoweekyear: 'isoWeekYear',
-        w: 'week',
-        weeks: 'week',
-        week: 'week',
-        W: 'isoWeek',
-        isoweeks: 'isoWeek',
-        isoweek: 'isoWeek',
-        y: 'year',
-        years: 'year',
-        year: 'year',
-    };
-
-    function normalizeUnits(units) {
-        return typeof units === 'string'
-            ? aliases[units] || aliases[units.toLowerCase()]
-            : undefined;
-    }
-
-    function normalizeObjectUnits(inputObject) {
-        var normalizedInput = {},
-            normalizedProp,
-            prop;
-
-        for (prop in inputObject) {
-            if (hasOwnProp(inputObject, prop)) {
-                normalizedProp = normalizeUnits(prop);
-                if (normalizedProp) {
-                    normalizedInput[normalizedProp] = inputObject[prop];
-                }
-            }
-        }
-
-        return normalizedInput;
-    }
-
-    var priorities = {
-        date: 9,
-        day: 11,
-        weekday: 11,
-        isoWeekday: 11,
-        dayOfYear: 4,
-        hour: 13,
-        millisecond: 16,
-        minute: 14,
-        month: 8,
-        quarter: 7,
-        second: 15,
-        weekYear: 1,
-        isoWeekYear: 1,
-        week: 5,
-        isoWeek: 5,
-        year: 1,
-    };
-
-    function getPrioritizedUnits(unitsObj) {
-        var units = [],
-            u;
-        for (u in unitsObj) {
-            if (hasOwnProp(unitsObj, u)) {
-                units.push({ unit: u, priority: priorities[u] });
-            }
-        }
-        units.sort(function (a, b) {
-            return a.priority - b.priority;
-        });
-        return units;
-    }
-
-    var match1 = /\d/, //       0 - 9
-        match2 = /\d\d/, //      00 - 99
-        match3 = /\d{3}/, //     000 - 999
-        match4 = /\d{4}/, //    0000 - 9999
-        match6 = /[+-]?\d{6}/, // -999999 - 999999
-        match1to2 = /\d\d?/, //       0 - 99
-        match3to4 = /\d\d\d\d?/, //     999 - 9999
-        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
-        match1to3 = /\d{1,3}/, //       0 - 999
-        match1to4 = /\d{1,4}/, //       0 - 9999
-        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
-        matchUnsigned = /\d+/, //       0 - inf
-        matchSigned = /[+-]?\d+/, //    -inf - inf
-        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
-        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
-        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-        // any word (or two) characters or numbers including two/three word month in arabic.
-        // includes scottish gaelic two word and hyphenated months
-        matchWord =
-            /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
-        match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
-        match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
-        regexes;
-
-    regexes = {};
-
-    function addRegexToken(token, regex, strictRegex) {
-        regexes[token] = isFunction(regex)
-            ? regex
-            : function (isStrict, localeData) {
-                  return isStrict && strictRegex ? strictRegex : regex;
-              };
-    }
-
-    function getParseRegexForToken(token, config) {
-        if (!hasOwnProp(regexes, token)) {
-            return new RegExp(unescapeFormat(token));
-        }
-
-        return regexes[token](config._strict, config._locale);
-    }
-
-    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-    function unescapeFormat(s) {
-        return regexEscape(
-            s
-                .replace('\\', '')
-                .replace(
-                    /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
-                    function (matched, p1, p2, p3, p4) {
-                        return p1 || p2 || p3 || p4;
-                    }
-                )
-        );
-    }
-
-    function regexEscape(s) {
-        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-    }
-
-    function absFloor(number) {
-        if (number < 0) {
-            // -0 -> 0
-            return Math.ceil(number) || 0;
-        } else {
-            return Math.floor(number);
-        }
-    }
-
-    function toInt(argumentForCoercion) {
-        var coercedNumber = +argumentForCoercion,
-            value = 0;
-
-        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-            value = absFloor(coercedNumber);
-        }
-
-        return value;
-    }
-
-    var tokens = {};
-
-    function addParseToken(token, callback) {
-        var i,
-            func = callback,
-            tokenLen;
-        if (typeof token === 'string') {
-            token = [token];
-        }
-        if (isNumber(callback)) {
-            func = function (input, array) {
-                array[callback] = toInt(input);
-            };
-        }
-        tokenLen = token.length;
-        for (i = 0; i < tokenLen; i++) {
-            tokens[token[i]] = func;
-        }
-    }
-
-    function addWeekParseToken(token, callback) {
-        addParseToken(token, function (input, array, config, token) {
-            config._w = config._w || {};
-            callback(input, config._w, config, token);
-        });
-    }
-
-    function addTimeToArrayFromToken(token, input, config) {
-        if (input != null && hasOwnProp(tokens, token)) {
-            tokens[token](input, config._a, config, token);
-        }
-    }
-
-    function isLeapYear(year) {
-        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-    }
-
-    var YEAR = 0,
-        MONTH = 1,
-        DATE = 2,
-        HOUR = 3,
-        MINUTE = 4,
-        SECOND = 5,
-        MILLISECOND = 6,
-        WEEK = 7,
-        WEEKDAY = 8;
-
-    // FORMATTING
-
-    addFormatToken('Y', 0, 0, function () {
-        var y = this.year();
-        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
-    });
-
-    addFormatToken(0, ['YY', 2], 0, function () {
-        return this.year() % 100;
-    });
-
-    addFormatToken(0, ['YYYY', 4], 0, 'year');
-    addFormatToken(0, ['YYYYY', 5], 0, 'year');
-    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
-    // PARSING
-
-    addRegexToken('Y', matchSigned);
-    addRegexToken('YY', match1to2, match2);
-    addRegexToken('YYYY', match1to4, match4);
-    addRegexToken('YYYYY', match1to6, match6);
-    addRegexToken('YYYYYY', match1to6, match6);
-
-    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
-    addParseToken('YYYY', function (input, array) {
-        array[YEAR] =
-            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
-    });
-    addParseToken('YY', function (input, array) {
-        array[YEAR] = hooks.parseTwoDigitYear(input);
-    });
-    addParseToken('Y', function (input, array) {
-        array[YEAR] = parseInt(input, 10);
-    });
-
-    // HELPERS
-
-    function daysInYear(year) {
-        return isLeapYear(year) ? 366 : 365;
-    }
-
-    // HOOKS
-
-    hooks.parseTwoDigitYear = function (input) {
-        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-    };
-
-    // MOMENTS
-
-    var getSetYear = makeGetSet('FullYear', true);
-
-    function getIsLeapYear() {
-        return isLeapYear(this.year());
-    }
-
-    function makeGetSet(unit, keepTime) {
-        return function (value) {
-            if (value != null) {
-                set$1(this, unit, value);
-                hooks.updateOffset(this, keepTime);
-                return this;
-            } else {
-                return get(this, unit);
-            }
-        };
-    }
-
-    function get(mom, unit) {
-        if (!mom.isValid()) {
-            return NaN;
-        }
-
-        var d = mom._d,
-            isUTC = mom._isUTC;
-
-        switch (unit) {
-            case 'Milliseconds':
-                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
-            case 'Seconds':
-                return isUTC ? d.getUTCSeconds() : d.getSeconds();
-            case 'Minutes':
-                return isUTC ? d.getUTCMinutes() : d.getMinutes();
-            case 'Hours':
-                return isUTC ? d.getUTCHours() : d.getHours();
-            case 'Date':
-                return isUTC ? d.getUTCDate() : d.getDate();
-            case 'Day':
-                return isUTC ? d.getUTCDay() : d.getDay();
-            case 'Month':
-                return isUTC ? d.getUTCMonth() : d.getMonth();
-            case 'FullYear':
-                return isUTC ? d.getUTCFullYear() : d.getFullYear();
-            default:
-                return NaN; // Just in case
-        }
-    }
-
-    function set$1(mom, unit, value) {
-        var d, isUTC, year, month, date;
-
-        if (!mom.isValid() || isNaN(value)) {
-            return;
-        }
-
-        d = mom._d;
-        isUTC = mom._isUTC;
-
-        switch (unit) {
-            case 'Milliseconds':
-                return void (isUTC
-                    ? d.setUTCMilliseconds(value)
-                    : d.setMilliseconds(value));
-            case 'Seconds':
-                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
-            case 'Minutes':
-                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
-            case 'Hours':
-                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
-            case 'Date':
-                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
-            // case 'Day': // Not real
-            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
-            // case 'Month': // Not used because we need to pass two variables
-            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
-            case 'FullYear':
-                break; // See below ...
-            default:
-                return; // Just in case
-        }
-
-        year = value;
-        month = mom.month();
-        date = mom.date();
-        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
-        void (isUTC
-            ? d.setUTCFullYear(year, month, date)
-            : d.setFullYear(year, month, date));
-    }
-
-    // MOMENTS
-
-    function stringGet(units) {
-        units = normalizeUnits(units);
-        if (isFunction(this[units])) {
-            return this[units]();
-        }
-        return this;
-    }
-
-    function stringSet(units, value) {
-        if (typeof units === 'object') {
-            units = normalizeObjectUnits(units);
-            var prioritized = getPrioritizedUnits(units),
-                i,
-                prioritizedLen = prioritized.length;
-            for (i = 0; i < prioritizedLen; i++) {
-                this[prioritized[i].unit](units[prioritized[i].unit]);
-            }
-        } else {
-            units = normalizeUnits(units);
-            if (isFunction(this[units])) {
-                return this[units](value);
-            }
-        }
-        return this;
-    }
-
-    function mod(n, x) {
-        return ((n % x) + x) % x;
-    }
-
-    var indexOf;
-
-    if (Array.prototype.indexOf) {
-        indexOf = Array.prototype.indexOf;
-    } else {
-        indexOf = function (o) {
-            // I know
-            var i;
-            for (i = 0; i < this.length; ++i) {
-                if (this[i] === o) {
-                    return i;
-                }
-            }
-            return -1;
-        };
-    }
-
-    function daysInMonth(year, month) {
-        if (isNaN(year) || isNaN(month)) {
-            return NaN;
-        }
-        var modMonth = mod(month, 12);
-        year += (month - modMonth) / 12;
-        return modMonth === 1
-            ? isLeapYear(year)
-                ? 29
-                : 28
-            : 31 - ((modMonth % 7) % 2);
-    }
-
-    // FORMATTING
-
-    addFormatToken('M', ['MM', 2], 'Mo', function () {
-        return this.month() + 1;
-    });
-
-    addFormatToken('MMM', 0, 0, function (format) {
-        return this.localeData().monthsShort(this, format);
-    });
-
-    addFormatToken('MMMM', 0, 0, function (format) {
-        return this.localeData().months(this, format);
-    });
-
-    // PARSING
-
-    addRegexToken('M', match1to2, match1to2NoLeadingZero);
-    addRegexToken('MM', match1to2, match2);
-    addRegexToken('MMM', function (isStrict, locale) {
-        return locale.monthsShortRegex(isStrict);
-    });
-    addRegexToken('MMMM', function (isStrict, locale) {
-        return locale.monthsRegex(isStrict);
-    });
-
-    addParseToken(['M', 'MM'], function (input, array) {
-        array[MONTH] = toInt(input) - 1;
-    });
-
-    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
-        var month = config._locale.monthsParse(input, token, config._strict);
-        // if we didn't find a month name, mark the date as invalid.
-        if (month != null) {
-            array[MONTH] = month;
-        } else {
-            getParsingFlags(config).invalidMonth = input;
-        }
-    });
-
-    // LOCALES
-
-    var defaultLocaleMonths =
-            'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-                '_'
-            ),
-        defaultLocaleMonthsShort =
-            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
-        defaultMonthsShortRegex = matchWord,
-        defaultMonthsRegex = matchWord;
-
-    function localeMonths(m, format) {
-        if (!m) {
-            return isArray(this._months)
-                ? this._months
-                : this._months['standalone'];
-        }
-        return isArray(this._months)
-            ? this._months[m.month()]
-            : this._months[
-                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
-                      ? 'format'
-                      : 'standalone'
-              ][m.month()];
-    }
-
-    function localeMonthsShort(m, format) {
-        if (!m) {
-            return isArray(this._monthsShort)
-                ? this._monthsShort
-                : this._monthsShort['standalone'];
-        }
-        return isArray(this._monthsShort)
-            ? this._monthsShort[m.month()]
-            : this._monthsShort[
-                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
-              ][m.month()];
-    }
-
-    function handleStrictParse(monthName, format, strict) {
-        var i,
-            ii,
-            mom,
-            llc = monthName.toLocaleLowerCase();
-        if (!this._monthsParse) {
-            // this is not used
-            this._monthsParse = [];
-            this._longMonthsParse = [];
-            this._shortMonthsParse = [];
-            for (i = 0; i < 12; ++i) {
-                mom = createUTC([2000, i]);
-                this._shortMonthsParse[i] = this.monthsShort(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
-            }
-        }
-
-        if (strict) {
-            if (format === 'MMM') {
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._longMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        } else {
-            if (format === 'MMM') {
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._longMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._longMonthsParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        }
-    }
-
-    function localeMonthsParse(monthName, format, strict) {
-        var i, mom, regex;
-
-        if (this._monthsParseExact) {
-            return handleStrictParse.call(this, monthName, format, strict);
-        }
-
-        if (!this._monthsParse) {
-            this._monthsParse = [];
-            this._longMonthsParse = [];
-            this._shortMonthsParse = [];
-        }
-
-        // TODO: add sorting
-        // Sorting makes sure if one month (or abbr) is a prefix of another
-        // see sorting in computeMonthsParse
-        for (i = 0; i < 12; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, i]);
-            if (strict && !this._longMonthsParse[i]) {
-                this._longMonthsParse[i] = new RegExp(
-                    '^' + this.months(mom, '').replace('.', '') + '$',
-                    'i'
-                );
-                this._shortMonthsParse[i] = new RegExp(
-                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
-                    'i'
-                );
-            }
-            if (!strict && !this._monthsParse[i]) {
-                regex =
-                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-            }
-            // test the regex
-            if (
-                strict &&
-                format === 'MMMM' &&
-                this._longMonthsParse[i].test(monthName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'MMM' &&
-                this._shortMonthsParse[i].test(monthName)
-            ) {
-                return i;
-            } else if (!strict && this._monthsParse[i].test(monthName)) {
-                return i;
-            }
-        }
-    }
-
-    // MOMENTS
-
-    function setMonth(mom, value) {
-        if (!mom.isValid()) {
-            // No op
-            return mom;
-        }
-
-        if (typeof value === 'string') {
-            if (/^\d+$/.test(value)) {
-                value = toInt(value);
-            } else {
-                value = mom.localeData().monthsParse(value);
-                // TODO: Another silent failure?
-                if (!isNumber(value)) {
-                    return mom;
-                }
-            }
-        }
-
-        var month = value,
-            date = mom.date();
-
-        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
-        void (mom._isUTC
-            ? mom._d.setUTCMonth(month, date)
-            : mom._d.setMonth(month, date));
-        return mom;
-    }
-
-    function getSetMonth(value) {
-        if (value != null) {
-            setMonth(this, value);
-            hooks.updateOffset(this, true);
-            return this;
-        } else {
-            return get(this, 'Month');
-        }
-    }
-
-    function getDaysInMonth() {
-        return daysInMonth(this.year(), this.month());
-    }
-
-    function monthsShortRegex(isStrict) {
-        if (this._monthsParseExact) {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                computeMonthsParse.call(this);
-            }
-            if (isStrict) {
-                return this._monthsShortStrictRegex;
-            } else {
-                return this._monthsShortRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_monthsShortRegex')) {
-                this._monthsShortRegex = defaultMonthsShortRegex;
-            }
-            return this._monthsShortStrictRegex && isStrict
-                ? this._monthsShortStrictRegex
-                : this._monthsShortRegex;
-        }
-    }
-
-    function monthsRegex(isStrict) {
-        if (this._monthsParseExact) {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                computeMonthsParse.call(this);
-            }
-            if (isStrict) {
-                return this._monthsStrictRegex;
-            } else {
-                return this._monthsRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                this._monthsRegex = defaultMonthsRegex;
-            }
-            return this._monthsStrictRegex && isStrict
-                ? this._monthsStrictRegex
-                : this._monthsRegex;
-        }
-    }
-
-    function computeMonthsParse() {
-        function cmpLenRev(a, b) {
-            return b.length - a.length;
-        }
-
-        var shortPieces = [],
-            longPieces = [],
-            mixedPieces = [],
-            i,
-            mom,
-            shortP,
-            longP;
-        for (i = 0; i < 12; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, i]);
-            shortP = regexEscape(this.monthsShort(mom, ''));
-            longP = regexEscape(this.months(mom, ''));
-            shortPieces.push(shortP);
-            longPieces.push(longP);
-            mixedPieces.push(longP);
-            mixedPieces.push(shortP);
-        }
-        // Sorting makes sure if one month (or abbr) is a prefix of another it
-        // will match the longer piece.
-        shortPieces.sort(cmpLenRev);
-        longPieces.sort(cmpLenRev);
-        mixedPieces.sort(cmpLenRev);
-
-        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._monthsShortRegex = this._monthsRegex;
-        this._monthsStrictRegex = new RegExp(
-            '^(' + longPieces.join('|') + ')',
-            'i'
-        );
-        this._monthsShortStrictRegex = new RegExp(
-            '^(' + shortPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    function createDate(y, m, d, h, M, s, ms) {
-        // can't just apply() to create a date:
-        // https://stackoverflow.com/q/181348
-        var date;
-        // the date constructor remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            date = new Date(y + 400, m, d, h, M, s, ms);
-            if (isFinite(date.getFullYear())) {
-                date.setFullYear(y);
-            }
-        } else {
-            date = new Date(y, m, d, h, M, s, ms);
-        }
-
-        return date;
-    }
-
-    function createUTCDate(y) {
-        var date, args;
-        // the Date.UTC function remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            args = Array.prototype.slice.call(arguments);
-            // preserve leap years using a full 400 year cycle, then reset
-            args[0] = y + 400;
-            date = new Date(Date.UTC.apply(null, args));
-            if (isFinite(date.getUTCFullYear())) {
-                date.setUTCFullYear(y);
-            }
-        } else {
-            date = new Date(Date.UTC.apply(null, arguments));
-        }
-
-        return date;
-    }
-
-    // start-of-first-week - start-of-year
-    function firstWeekOffset(year, dow, doy) {
-        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
-            fwd = 7 + dow - doy,
-            // first-week day local weekday -- which local weekday is fwd
-            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
-
-        return -fwdlw + fwd - 1;
-    }
-
-    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
-        var localWeekday = (7 + weekday - dow) % 7,
-            weekOffset = firstWeekOffset(year, dow, doy),
-            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
-            resYear,
-            resDayOfYear;
-
-        if (dayOfYear <= 0) {
-            resYear = year - 1;
-            resDayOfYear = daysInYear(resYear) + dayOfYear;
-        } else if (dayOfYear > daysInYear(year)) {
-            resYear = year + 1;
-            resDayOfYear = dayOfYear - daysInYear(year);
-        } else {
-            resYear = year;
-            resDayOfYear = dayOfYear;
-        }
-
-        return {
-            year: resYear,
-            dayOfYear: resDayOfYear,
-        };
-    }
-
-    function weekOfYear(mom, dow, doy) {
-        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
-            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
-            resWeek,
-            resYear;
-
-        if (week < 1) {
-            resYear = mom.year() - 1;
-            resWeek = week + weeksInYear(resYear, dow, doy);
-        } else if (week > weeksInYear(mom.year(), dow, doy)) {
-            resWeek = week - weeksInYear(mom.year(), dow, doy);
-            resYear = mom.year() + 1;
-        } else {
-            resYear = mom.year();
-            resWeek = week;
-        }
-
-        return {
-            week: resWeek,
-            year: resYear,
-        };
-    }
-
-    function weeksInYear(year, dow, doy) {
-        var weekOffset = firstWeekOffset(year, dow, doy),
-            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
-        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
-    }
-
-    // FORMATTING
-
-    addFormatToken('w', ['ww', 2], 'wo', 'week');
-    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
-    // PARSING
-
-    addRegexToken('w', match1to2, match1to2NoLeadingZero);
-    addRegexToken('ww', match1to2, match2);
-    addRegexToken('W', match1to2, match1to2NoLeadingZero);
-    addRegexToken('WW', match1to2, match2);
-
-    addWeekParseToken(
-        ['w', 'ww', 'W', 'WW'],
-        function (input, week, config, token) {
-            week[token.substr(0, 1)] = toInt(input);
-        }
-    );
-
-    // HELPERS
-
-    // LOCALES
-
-    function localeWeek(mom) {
-        return weekOfYear(mom, this._week.dow, this._week.doy).week;
-    }
-
-    var defaultLocaleWeek = {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    };
-
-    function localeFirstDayOfWeek() {
-        return this._week.dow;
-    }
-
-    function localeFirstDayOfYear() {
-        return this._week.doy;
-    }
-
-    // MOMENTS
-
-    function getSetWeek(input) {
-        var week = this.localeData().week(this);
-        return input == null ? week : this.add((input - week) * 7, 'd');
-    }
-
-    function getSetISOWeek(input) {
-        var week = weekOfYear(this, 1, 4).week;
-        return input == null ? week : this.add((input - week) * 7, 'd');
-    }
-
-    // FORMATTING
-
-    addFormatToken('d', 0, 'do', 'day');
-
-    addFormatToken('dd', 0, 0, function (format) {
-        return this.localeData().weekdaysMin(this, format);
-    });
-
-    addFormatToken('ddd', 0, 0, function (format) {
-        return this.localeData().weekdaysShort(this, format);
-    });
-
-    addFormatToken('dddd', 0, 0, function (format) {
-        return this.localeData().weekdays(this, format);
-    });
-
-    addFormatToken('e', 0, 0, 'weekday');
-    addFormatToken('E', 0, 0, 'isoWeekday');
-
-    // PARSING
-
-    addRegexToken('d', match1to2);
-    addRegexToken('e', match1to2);
-    addRegexToken('E', match1to2);
-    addRegexToken('dd', function (isStrict, locale) {
-        return locale.weekdaysMinRegex(isStrict);
-    });
-    addRegexToken('ddd', function (isStrict, locale) {
-        return locale.weekdaysShortRegex(isStrict);
-    });
-    addRegexToken('dddd', function (isStrict, locale) {
-        return locale.weekdaysRegex(isStrict);
-    });
-
-    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
-        var weekday = config._locale.weekdaysParse(input, token, config._strict);
-        // if we didn't get a weekday name, mark the date as invalid
-        if (weekday != null) {
-            week.d = weekday;
-        } else {
-            getParsingFlags(config).invalidWeekday = input;
-        }
-    });
-
-    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
-        week[token] = toInt(input);
-    });
-
-    // HELPERS
-
-    function parseWeekday(input, locale) {
-        if (typeof input !== 'string') {
-            return input;
-        }
-
-        if (!isNaN(input)) {
-            return parseInt(input, 10);
-        }
-
-        input = locale.weekdaysParse(input);
-        if (typeof input === 'number') {
-            return input;
-        }
-
-        return null;
-    }
-
-    function parseIsoWeekday(input, locale) {
-        if (typeof input === 'string') {
-            return locale.weekdaysParse(input) % 7 || 7;
-        }
-        return isNaN(input) ? null : input;
-    }
-
-    // LOCALES
-    function shiftWeekdays(ws, n) {
-        return ws.slice(n, 7).concat(ws.slice(0, n));
-    }
-
-    var defaultLocaleWeekdays =
-            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
-        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        defaultWeekdaysRegex = matchWord,
-        defaultWeekdaysShortRegex = matchWord,
-        defaultWeekdaysMinRegex = matchWord;
-
-    function localeWeekdays(m, format) {
-        var weekdays = isArray(this._weekdays)
-            ? this._weekdays
-            : this._weekdays[
-                  m && m !== true && this._weekdays.isFormat.test(format)
-                      ? 'format'
-                      : 'standalone'
-              ];
-        return m === true
-            ? shiftWeekdays(weekdays, this._week.dow)
-            : m
-              ? weekdays[m.day()]
-              : weekdays;
-    }
-
-    function localeWeekdaysShort(m) {
-        return m === true
-            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
-            : m
-              ? this._weekdaysShort[m.day()]
-              : this._weekdaysShort;
-    }
-
-    function localeWeekdaysMin(m) {
-        return m === true
-            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
-            : m
-              ? this._weekdaysMin[m.day()]
-              : this._weekdaysMin;
-    }
-
-    function handleStrictParse$1(weekdayName, format, strict) {
-        var i,
-            ii,
-            mom,
-            llc = weekdayName.toLocaleLowerCase();
-        if (!this._weekdaysParse) {
-            this._weekdaysParse = [];
-            this._shortWeekdaysParse = [];
-            this._minWeekdaysParse = [];
-
-            for (i = 0; i < 7; ++i) {
-                mom = createUTC([2000, 1]).day(i);
-                this._minWeekdaysParse[i] = this.weekdaysMin(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._shortWeekdaysParse[i] = this.weekdaysShort(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
-            }
-        }
-
-        if (strict) {
-            if (format === 'dddd') {
-                ii = indexOf.call(this._weekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else if (format === 'ddd') {
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        } else {
-            if (format === 'dddd') {
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else if (format === 'ddd') {
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        }
-    }
-
-    function localeWeekdaysParse(weekdayName, format, strict) {
-        var i, mom, regex;
-
-        if (this._weekdaysParseExact) {
-            return handleStrictParse$1.call(this, weekdayName, format, strict);
-        }
-
-        if (!this._weekdaysParse) {
-            this._weekdaysParse = [];
-            this._minWeekdaysParse = [];
-            this._shortWeekdaysParse = [];
-            this._fullWeekdaysParse = [];
-        }
-
-        for (i = 0; i < 7; i++) {
-            // make the regex if we don't have it already
-
-            mom = createUTC([2000, 1]).day(i);
-            if (strict && !this._fullWeekdaysParse[i]) {
-                this._fullWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-                this._shortWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-                this._minWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-            }
-            if (!this._weekdaysParse[i]) {
-                regex =
-                    '^' +
-                    this.weekdays(mom, '') +
-                    '|^' +
-                    this.weekdaysShort(mom, '') +
-                    '|^' +
-                    this.weekdaysMin(mom, '');
-                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-            }
-            // test the regex
-            if (
-                strict &&
-                format === 'dddd' &&
-                this._fullWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'ddd' &&
-                this._shortWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'dd' &&
-                this._minWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
-                return i;
-            }
-        }
-    }
-
-    // MOMENTS
-
-    function getSetDayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-
-        var day = get(this, 'Day');
-        if (input != null) {
-            input = parseWeekday(input, this.localeData());
-            return this.add(input - day, 'd');
-        } else {
-            return day;
-        }
-    }
-
-    function getSetLocaleDayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
-        return input == null ? weekday : this.add(input - weekday, 'd');
-    }
-
-    function getSetISODayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-
-        // behaves the same as moment#day except
-        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-        // as a setter, sunday should belong to the previous week.
-
-        if (input != null) {
-            var weekday = parseIsoWeekday(input, this.localeData());
-            return this.day(this.day() % 7 ? weekday : weekday - 7);
-        } else {
-            return this.day() || 7;
-        }
-    }
-
-    function weekdaysRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysStrictRegex;
-            } else {
-                return this._weekdaysRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                this._weekdaysRegex = defaultWeekdaysRegex;
-            }
-            return this._weekdaysStrictRegex && isStrict
-                ? this._weekdaysStrictRegex
-                : this._weekdaysRegex;
-        }
-    }
-
-    function weekdaysShortRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysShortStrictRegex;
-            } else {
-                return this._weekdaysShortRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
-                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
-            }
-            return this._weekdaysShortStrictRegex && isStrict
-                ? this._weekdaysShortStrictRegex
-                : this._weekdaysShortRegex;
-        }
-    }
-
-    function weekdaysMinRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysMinStrictRegex;
-            } else {
-                return this._weekdaysMinRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
-                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
-            }
-            return this._weekdaysMinStrictRegex && isStrict
-                ? this._weekdaysMinStrictRegex
-                : this._weekdaysMinRegex;
-        }
-    }
-
-    function computeWeekdaysParse() {
-        function cmpLenRev(a, b) {
-            return b.length - a.length;
-        }
-
-        var minPieces = [],
-            shortPieces = [],
-            longPieces = [],
-            mixedPieces = [],
-            i,
-            mom,
-            minp,
-            shortp,
-            longp;
-        for (i = 0; i < 7; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, 1]).day(i);
-            minp = regexEscape(this.weekdaysMin(mom, ''));
-            shortp = regexEscape(this.weekdaysShort(mom, ''));
-            longp = regexEscape(this.weekdays(mom, ''));
-            minPieces.push(minp);
-            shortPieces.push(shortp);
-            longPieces.push(longp);
-            mixedPieces.push(minp);
-            mixedPieces.push(shortp);
-            mixedPieces.push(longp);
-        }
-        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
-        // will match the longer piece.
-        minPieces.sort(cmpLenRev);
-        shortPieces.sort(cmpLenRev);
-        longPieces.sort(cmpLenRev);
-        mixedPieces.sort(cmpLenRev);
-
-        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._weekdaysShortRegex = this._weekdaysRegex;
-        this._weekdaysMinRegex = this._weekdaysRegex;
-
-        this._weekdaysStrictRegex = new RegExp(
-            '^(' + longPieces.join('|') + ')',
-            'i'
-        );
-        this._weekdaysShortStrictRegex = new RegExp(
-            '^(' + shortPieces.join('|') + ')',
-            'i'
-        );
-        this._weekdaysMinStrictRegex = new RegExp(
-            '^(' + minPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    // FORMATTING
-
-    function hFormat() {
-        return this.hours() % 12 || 12;
-    }
-
-    function kFormat() {
-        return this.hours() || 24;
-    }
-
-    addFormatToken('H', ['HH', 2], 0, 'hour');
-    addFormatToken('h', ['hh', 2], 0, hFormat);
-    addFormatToken('k', ['kk', 2], 0, kFormat);
-
-    addFormatToken('hmm', 0, 0, function () {
-        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
-    });
-
-    addFormatToken('hmmss', 0, 0, function () {
-        return (
-            '' +
-            hFormat.apply(this) +
-            zeroFill(this.minutes(), 2) +
-            zeroFill(this.seconds(), 2)
-        );
-    });
-
-    addFormatToken('Hmm', 0, 0, function () {
-        return '' + this.hours() + zeroFill(this.minutes(), 2);
-    });
-
-    addFormatToken('Hmmss', 0, 0, function () {
-        return (
-            '' +
-            this.hours() +
-            zeroFill(this.minutes(), 2) +
-            zeroFill(this.seconds(), 2)
-        );
-    });
-
-    function meridiem(token, lowercase) {
-        addFormatToken(token, 0, 0, function () {
-            return this.localeData().meridiem(
-                this.hours(),
-                this.minutes(),
-                lowercase
-            );
-        });
-    }
-
-    meridiem('a', true);
-    meridiem('A', false);
-
-    // PARSING
-
-    function matchMeridiem(isStrict, locale) {
-        return locale._meridiemParse;
-    }
-
-    addRegexToken('a', matchMeridiem);
-    addRegexToken('A', matchMeridiem);
-    addRegexToken('H', match1to2, match1to2HasZero);
-    addRegexToken('h', match1to2, match1to2NoLeadingZero);
-    addRegexToken('k', match1to2, match1to2NoLeadingZero);
-    addRegexToken('HH', match1to2, match2);
-    addRegexToken('hh', match1to2, match2);
-    addRegexToken('kk', match1to2, match2);
-
-    addRegexToken('hmm', match3to4);
-    addRegexToken('hmmss', match5to6);
-    addRegexToken('Hmm', match3to4);
-    addRegexToken('Hmmss', match5to6);
-
-    addParseToken(['H', 'HH'], HOUR);
-    addParseToken(['k', 'kk'], function (input, array, config) {
-        var kInput = toInt(input);
-        array[HOUR] = kInput === 24 ? 0 : kInput;
-    });
-    addParseToken(['a', 'A'], function (input, array, config) {
-        config._isPm = config._locale.isPM(input);
-        config._meridiem = input;
-    });
-    addParseToken(['h', 'hh'], function (input, array, config) {
-        array[HOUR] = toInt(input);
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('hmm', function (input, array, config) {
-        var pos = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos));
-        array[MINUTE] = toInt(input.substr(pos));
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('hmmss', function (input, array, config) {
-        var pos1 = input.length - 4,
-            pos2 = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos1));
-        array[MINUTE] = toInt(input.substr(pos1, 2));
-        array[SECOND] = toInt(input.substr(pos2));
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('Hmm', function (input, array, config) {
-        var pos = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos));
-        array[MINUTE] = toInt(input.substr(pos));
-    });
-    addParseToken('Hmmss', function (input, array, config) {
-        var pos1 = input.length - 4,
-            pos2 = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos1));
-        array[MINUTE] = toInt(input.substr(pos1, 2));
-        array[SECOND] = toInt(input.substr(pos2));
-    });
-
-    // LOCALES
-
-    function localeIsPM(input) {
-        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-        // Using charAt should be more compatible.
-        return (input + '').toLowerCase().charAt(0) === 'p';
-    }
-
-    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
-        // Setting the hour should keep the time, because the user explicitly
-        // specified which hour they want. So trying to maintain the same hour (in
-        // a new timezone) makes sense. Adding/subtracting hours does not follow
-        // this rule.
-        getSetHour = makeGetSet('Hours', true);
-
-    function localeMeridiem(hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'pm' : 'PM';
-        } else {
-            return isLower ? 'am' : 'AM';
-        }
-    }
-
-    var baseConfig = {
-        calendar: defaultCalendar,
-        longDateFormat: defaultLongDateFormat,
-        invalidDate: defaultInvalidDate,
-        ordinal: defaultOrdinal,
-        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
-        relativeTime: defaultRelativeTime,
-
-        months: defaultLocaleMonths,
-        monthsShort: defaultLocaleMonthsShort,
-
-        week: defaultLocaleWeek,
-
-        weekdays: defaultLocaleWeekdays,
-        weekdaysMin: defaultLocaleWeekdaysMin,
-        weekdaysShort: defaultLocaleWeekdaysShort,
-
-        meridiemParse: defaultLocaleMeridiemParse,
-    };
-
-    // internal storage for locale config files
-    var locales = {},
-        localeFamilies = {},
-        globalLocale;
-
-    function commonPrefix(arr1, arr2) {
-        var i,
-            minl = Math.min(arr1.length, arr2.length);
-        for (i = 0; i < minl; i += 1) {
-            if (arr1[i] !== arr2[i]) {
-                return i;
-            }
-        }
-        return minl;
-    }
-
-    function normalizeLocale(key) {
-        return key ? key.toLowerCase().replace('_', '-') : key;
-    }
-
-    // pick the locale from the array
-    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-    function chooseLocale(names) {
-        var i = 0,
-            j,
-            next,
-            locale,
-            split;
-
-        while (i < names.length) {
-            split = normalizeLocale(names[i]).split('-');
-            j = split.length;
-            next = normalizeLocale(names[i + 1]);
-            next = next ? next.split('-') : null;
-            while (j > 0) {
-                locale = loadLocale(split.slice(0, j).join('-'));
-                if (locale) {
-                    return locale;
-                }
-                if (
-                    next &&
-                    next.length >= j &&
-                    commonPrefix(split, next) >= j - 1
-                ) {
-                    //the next array item is better than a shallower substring of this one
-                    break;
-                }
-                j--;
-            }
-            i++;
-        }
-        return globalLocale;
-    }
-
-    function isLocaleNameSane(name) {
-        // Prevent names that look like filesystem paths, i.e contain '/' or '\'
-        // Ensure name is available and function returns boolean
-        return !!(name && name.match('^[^/\\\\]*$'));
-    }
-
-    function loadLocale(name) {
-        var oldLocale = null,
-            aliasedRequire;
-        // TODO: Find a better way to register and load all the locales in Node
-        if (
-            locales[name] === undefined &&
-            typeof module !== 'undefined' &&
-            module &&
-            module.exports &&
-            isLocaleNameSane(name)
-        ) {
-            try {
-                oldLocale = globalLocale._abbr;
-                aliasedRequire = require;
-                aliasedRequire('./locale/' + name);
-                getSetGlobalLocale(oldLocale);
-            } catch (e) {
-                // mark as not found to avoid repeating expensive file require call causing high CPU
-                // when trying to find en-US, en_US, en-us for every format call
-                locales[name] = null; // null means not found
-            }
-        }
-        return locales[name];
-    }
-
-    // This function will load locale and then set the global locale.  If
-    // no arguments are passed in, it will simply return the current global
-    // locale key.
-    function getSetGlobalLocale(key, values) {
-        var data;
-        if (key) {
-            if (isUndefined(values)) {
-                data = getLocale(key);
-            } else {
-                data = defineLocale(key, values);
-            }
-
-            if (data) {
-                // moment.duration._locale = moment._locale = data;
-                globalLocale = data;
-            } else {
-                if (typeof console !== 'undefined' && console.warn) {
-                    //warn user if arguments are passed but the locale could not be set
-                    console.warn(
-                        'Locale ' + key + ' not found. Did you forget to load it?'
-                    );
-                }
-            }
-        }
-
-        return globalLocale._abbr;
-    }
-
-    function defineLocale(name, config) {
-        if (config !== null) {
-            var locale,
-                parentConfig = baseConfig;
-            config.abbr = name;
-            if (locales[name] != null) {
-                deprecateSimple(
-                    'defineLocaleOverride',
-                    'use moment.updateLocale(localeName, config) to change ' +
-                        'an existing locale. moment.defineLocale(localeName, ' +
-                        'config) should only be used for creating a new locale ' +
-                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
-                );
-                parentConfig = locales[name]._config;
-            } else if (config.parentLocale != null) {
-                if (locales[config.parentLocale] != null) {
-                    parentConfig = locales[config.parentLocale]._config;
-                } else {
-                    locale = loadLocale(config.parentLocale);
-                    if (locale != null) {
-                        parentConfig = locale._config;
-                    } else {
-                        if (!localeFamilies[config.parentLocale]) {
-                            localeFamilies[config.parentLocale] = [];
-                        }
-                        localeFamilies[config.parentLocale].push({
-                            name: name,
-                            config: config,
-                        });
-                        return null;
-                    }
-                }
-            }
-            locales[name] = new Locale(mergeConfigs(parentConfig, config));
-
-            if (localeFamilies[name]) {
-                localeFamilies[name].forEach(function (x) {
-                    defineLocale(x.name, x.config);
-                });
-            }
-
-            // backwards compat for now: also set the locale
-            // make sure we set the locale AFTER all child locales have been
-            // created, so we won't end up with the child locale set.
-            getSetGlobalLocale(name);
-
-            return locales[name];
-        } else {
-            // useful for testing
-            delete locales[name];
-            return null;
-        }
-    }
-
-    function updateLocale(name, config) {
-        if (config != null) {
-            var locale,
-                tmpLocale,
-                parentConfig = baseConfig;
-
-            if (locales[name] != null && locales[name].parentLocale != null) {
-                // Update existing child locale in-place to avoid memory-leaks
-                locales[name].set(mergeConfigs(locales[name]._config, config));
-            } else {
-                // MERGE
-                tmpLocale = loadLocale(name);
-                if (tmpLocale != null) {
-                    parentConfig = tmpLocale._config;
-                }
-                config = mergeConfigs(parentConfig, config);
-                if (tmpLocale == null) {
-                    // updateLocale is called for creating a new locale
-                    // Set abbr so it will have a name (getters return
-                    // undefined otherwise).
-                    config.abbr = name;
-                }
-                locale = new Locale(config);
-                locale.parentLocale = locales[name];
-                locales[name] = locale;
-            }
-
-            // backwards compat for now: also set the locale
-            getSetGlobalLocale(name);
-        } else {
-            // pass null for config to unupdate, useful for tests
-            if (locales[name] != null) {
-                if (locales[name].parentLocale != null) {
-                    locales[name] = locales[name].parentLocale;
-                    if (name === getSetGlobalLocale()) {
-                        getSetGlobalLocale(name);
-                    }
-                } else if (locales[name] != null) {
-                    delete locales[name];
-                }
-            }
-        }
-        return locales[name];
-    }
-
-    // returns locale data
-    function getLocale(key) {
-        var locale;
-
-        if (key && key._locale && key._locale._abbr) {
-            key = key._locale._abbr;
-        }
-
-        if (!key) {
-            return globalLocale;
-        }
-
-        if (!isArray(key)) {
-            //short-circuit everything else
-            locale = loadLocale(key);
-            if (locale) {
-                return locale;
-            }
-            key = [key];
-        }
-
-        return chooseLocale(key);
-    }
-
-    function listLocales() {
-        return keys(locales);
-    }
-
-    function checkOverflow(m) {
-        var overflow,
-            a = m._a;
-
-        if (a && getParsingFlags(m).overflow === -2) {
-            overflow =
-                a[MONTH] < 0 || a[MONTH] > 11
-                    ? MONTH
-                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
-                      ? DATE
-                      : a[HOUR] < 0 ||
-                          a[HOUR] > 24 ||
-                          (a[HOUR] === 24 &&
-                              (a[MINUTE] !== 0 ||
-                                  a[SECOND] !== 0 ||
-                                  a[MILLISECOND] !== 0))
-                        ? HOUR
-                        : a[MINUTE] < 0 || a[MINUTE] > 59
-                          ? MINUTE
-                          : a[SECOND] < 0 || a[SECOND] > 59
-                            ? SECOND
-                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
-                              ? MILLISECOND
-                              : -1;
-
-            if (
-                getParsingFlags(m)._overflowDayOfYear &&
-                (overflow < YEAR || overflow > DATE)
-            ) {
-                overflow = DATE;
-            }
-            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
-                overflow = WEEK;
-            }
-            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
-                overflow = WEEKDAY;
-            }
-
-            getParsingFlags(m).overflow = overflow;
-        }
-
-        return m;
-    }
-
-    // iso 8601 regex
-    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
-    var extendedIsoRegex =
-            /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-        basicIsoRegex =
-            /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
-        isoDates = [
-            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
-            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
-            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
-            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
-            ['YYYY-DDD', /\d{4}-\d{3}/],
-            ['YYYY-MM', /\d{4}-\d\d/, false],
-            ['YYYYYYMMDD', /[+-]\d{10}/],
-            ['YYYYMMDD', /\d{8}/],
-            ['GGGG[W]WWE', /\d{4}W\d{3}/],
-            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
-            ['YYYYDDD', /\d{7}/],
-            ['YYYYMM', /\d{6}/, false],
-            ['YYYY', /\d{4}/, false],
-        ],
-        // iso time formats and regexes
-        isoTimes = [
-            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
-            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
-            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
-            ['HH:mm', /\d\d:\d\d/],
-            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
-            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
-            ['HHmmss', /\d\d\d\d\d\d/],
-            ['HHmm', /\d\d\d\d/],
-            ['HH', /\d\d/],
-        ],
-        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
-        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
-        rfc2822 =
-            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
-        obsOffsets = {
-            UT: 0,
-            GMT: 0,
-            EDT: -4 * 60,
-            EST: -5 * 60,
-            CDT: -5 * 60,
-            CST: -6 * 60,
-            MDT: -6 * 60,
-            MST: -7 * 60,
-            PDT: -7 * 60,
-            PST: -8 * 60,
-        };
-
-    // date from iso format
-    function configFromISO(config) {
-        var i,
-            l,
-            string = config._i,
-            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
-            allowTime,
-            dateFormat,
-            timeFormat,
-            tzFormat,
-            isoDatesLen = isoDates.length,
-            isoTimesLen = isoTimes.length;
-
-        if (match) {
-            getParsingFlags(config).iso = true;
-            for (i = 0, l = isoDatesLen; i < l; i++) {
-                if (isoDates[i][1].exec(match[1])) {
-                    dateFormat = isoDates[i][0];
-                    allowTime = isoDates[i][2] !== false;
-                    break;
-                }
-            }
-            if (dateFormat == null) {
-                config._isValid = false;
-                return;
-            }
-            if (match[3]) {
-                for (i = 0, l = isoTimesLen; i < l; i++) {
-                    if (isoTimes[i][1].exec(match[3])) {
-                        // match[2] should be 'T' or space
-                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
-                        break;
-                    }
-                }
-                if (timeFormat == null) {
-                    config._isValid = false;
-                    return;
-                }
-            }
-            if (!allowTime && timeFormat != null) {
-                config._isValid = false;
-                return;
-            }
-            if (match[4]) {
-                if (tzRegex.exec(match[4])) {
-                    tzFormat = 'Z';
-                } else {
-                    config._isValid = false;
-                    return;
-                }
-            }
-            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
-            configFromStringAndFormat(config);
-        } else {
-            config._isValid = false;
-        }
-    }
-
-    function extractFromRFC2822Strings(
-        yearStr,
-        monthStr,
-        dayStr,
-        hourStr,
-        minuteStr,
-        secondStr
-    ) {
-        var result = [
-            untruncateYear(yearStr),
-            defaultLocaleMonthsShort.indexOf(monthStr),
-            parseInt(dayStr, 10),
-            parseInt(hourStr, 10),
-            parseInt(minuteStr, 10),
-        ];
-
-        if (secondStr) {
-            result.push(parseInt(secondStr, 10));
-        }
-
-        return result;
-    }
-
-    function untruncateYear(yearStr) {
-        var year = parseInt(yearStr, 10);
-        if (year <= 49) {
-            return 2000 + year;
-        } else if (year <= 999) {
-            return 1900 + year;
-        }
-        return year;
-    }
-
-    function preprocessRFC2822(s) {
-        // Remove comments and folding whitespace and replace multiple-spaces with a single space
-        return s
-            .replace(/\([^()]*\)|[\n\t]/g, ' ')
-            .replace(/(\s\s+)/g, ' ')
-            .replace(/^\s\s*/, '')
-            .replace(/\s\s*$/, '');
-    }
-
-    function checkWeekday(weekdayStr, parsedInput, config) {
-        if (weekdayStr) {
-            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
-            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
-                weekdayActual = new Date(
-                    parsedInput[0],
-                    parsedInput[1],
-                    parsedInput[2]
-                ).getDay();
-            if (weekdayProvided !== weekdayActual) {
-                getParsingFlags(config).weekdayMismatch = true;
-                config._isValid = false;
-                return false;
-            }
-        }
-        return true;
-    }
-
-    function calculateOffset(obsOffset, militaryOffset, numOffset) {
-        if (obsOffset) {
-            return obsOffsets[obsOffset];
-        } else if (militaryOffset) {
-            // the only allowed military tz is Z
-            return 0;
-        } else {
-            var hm = parseInt(numOffset, 10),
-                m = hm % 100,
-                h = (hm - m) / 100;
-            return h * 60 + m;
-        }
-    }
-
-    // date and time from ref 2822 format
-    function configFromRFC2822(config) {
-        var match = rfc2822.exec(preprocessRFC2822(config._i)),
-            parsedArray;
-        if (match) {
-            parsedArray = extractFromRFC2822Strings(
-                match[4],
-                match[3],
-                match[2],
-                match[5],
-                match[6],
-                match[7]
-            );
-            if (!checkWeekday(match[1], parsedArray, config)) {
-                return;
-            }
-
-            config._a = parsedArray;
-            config._tzm = calculateOffset(match[8], match[9], match[10]);
-
-            config._d = createUTCDate.apply(null, config._a);
-            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-
-            getParsingFlags(config).rfc2822 = true;
-        } else {
-            config._isValid = false;
-        }
-    }
-
-    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
-    function configFromString(config) {
-        var matched = aspNetJsonRegex.exec(config._i);
-        if (matched !== null) {
-            config._d = new Date(+matched[1]);
-            return;
-        }
-
-        configFromISO(config);
-        if (config._isValid === false) {
-            delete config._isValid;
-        } else {
-            return;
-        }
-
-        configFromRFC2822(config);
-        if (config._isValid === false) {
-            delete config._isValid;
-        } else {
-            return;
-        }
-
-        if (config._strict) {
-            config._isValid = false;
-        } else {
-            // Final attempt, use Input Fallback
-            hooks.createFromInputFallback(config);
-        }
-    }
-
-    hooks.createFromInputFallback = deprecate(
-        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
-            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
-            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
-        function (config) {
-            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
-        }
-    );
-
-    // Pick the first defined of two or three arguments.
-    function defaults(a, b, c) {
-        if (a != null) {
-            return a;
-        }
-        if (b != null) {
-            return b;
-        }
-        return c;
-    }
-
-    function currentDateArray(config) {
-        // hooks is actually the exported moment object
-        var nowValue = new Date(hooks.now());
-        if (config._useUTC) {
-            return [
-                nowValue.getUTCFullYear(),
-                nowValue.getUTCMonth(),
-                nowValue.getUTCDate(),
-            ];
-        }
-        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
-    }
-
-    // convert an array to a date.
-    // the array should mirror the parameters below
-    // note: all values past the year are optional and will default to the lowest possible value.
-    // [year, month, day , hour, minute, second, millisecond]
-    function configFromArray(config) {
-        var i,
-            date,
-            input = [],
-            currentDate,
-            expectedWeekday,
-            yearToUse;
-
-        if (config._d) {
-            return;
-        }
-
-        currentDate = currentDateArray(config);
-
-        //compute day of the year from weeks and weekdays
-        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-            dayOfYearFromWeekInfo(config);
-        }
-
-        //if the day of the year is set, figure out what it is
-        if (config._dayOfYear != null) {
-            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
-            if (
-                config._dayOfYear > daysInYear(yearToUse) ||
-                config._dayOfYear === 0
-            ) {
-                getParsingFlags(config)._overflowDayOfYear = true;
-            }
-
-            date = createUTCDate(yearToUse, 0, config._dayOfYear);
-            config._a[MONTH] = date.getUTCMonth();
-            config._a[DATE] = date.getUTCDate();
-        }
-
-        // Default to current date.
-        // * if no year, month, day of month are given, default to today
-        // * if day of month is given, default month and year
-        // * if month is given, default only year
-        // * if year is given, don't default anything
-        for (i = 0; i < 3 && config._a[i] == null; ++i) {
-            config._a[i] = input[i] = currentDate[i];
-        }
-
-        // Zero out whatever was not defaulted, including time
-        for (; i < 7; i++) {
-            config._a[i] = input[i] =
-                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
-        }
-
-        // Check for 24:00:00.000
-        if (
-            config._a[HOUR] === 24 &&
-            config._a[MINUTE] === 0 &&
-            config._a[SECOND] === 0 &&
-            config._a[MILLISECOND] === 0
-        ) {
-            config._nextDay = true;
-            config._a[HOUR] = 0;
-        }
-
-        config._d = (config._useUTC ? createUTCDate : createDate).apply(
-            null,
-            input
-        );
-        expectedWeekday = config._useUTC
-            ? config._d.getUTCDay()
-            : config._d.getDay();
-
-        // Apply timezone offset from input. The actual utcOffset can be changed
-        // with parseZone.
-        if (config._tzm != null) {
-            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-        }
-
-        if (config._nextDay) {
-            config._a[HOUR] = 24;
-        }
-
-        // check for mismatching day of week
-        if (
-            config._w &&
-            typeof config._w.d !== 'undefined' &&
-            config._w.d !== expectedWeekday
-        ) {
-            getParsingFlags(config).weekdayMismatch = true;
-        }
-    }
-
-    function dayOfYearFromWeekInfo(config) {
-        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
-
-        w = config._w;
-        if (w.GG != null || w.W != null || w.E != null) {
-            dow = 1;
-            doy = 4;
-
-            // TODO: We need to take the current isoWeekYear, but that depends on
-            // how we interpret now (local, utc, fixed offset). So create
-            // a now version of current config (take local/utc/offset flags, and
-            // create now).
-            weekYear = defaults(
-                w.GG,
-                config._a[YEAR],
-                weekOfYear(createLocal(), 1, 4).year
-            );
-            week = defaults(w.W, 1);
-            weekday = defaults(w.E, 1);
-            if (weekday < 1 || weekday > 7) {
-                weekdayOverflow = true;
-            }
-        } else {
-            dow = config._locale._week.dow;
-            doy = config._locale._week.doy;
-
-            curWeek = weekOfYear(createLocal(), dow, doy);
-
-            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
-
-            // Default to current week.
-            week = defaults(w.w, curWeek.week);
-
-            if (w.d != null) {
-                // weekday -- low day numbers are considered next week
-                weekday = w.d;
-                if (weekday < 0 || weekday > 6) {
-                    weekdayOverflow = true;
-                }
-            } else if (w.e != null) {
-                // local weekday -- counting starts from beginning of week
-                weekday = w.e + dow;
-                if (w.e < 0 || w.e > 6) {
-                    weekdayOverflow = true;
-                }
-            } else {
-                // default to beginning of week
-                weekday = dow;
-            }
-        }
-        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
-            getParsingFlags(config)._overflowWeeks = true;
-        } else if (weekdayOverflow != null) {
-            getParsingFlags(config)._overflowWeekday = true;
-        } else {
-            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
-            config._a[YEAR] = temp.year;
-            config._dayOfYear = temp.dayOfYear;
-        }
-    }
-
-    // constant that refers to the ISO standard
-    hooks.ISO_8601 = function () {};
-
-    // constant that refers to the RFC 2822 form
-    hooks.RFC_2822 = function () {};
-
-    // date from string and format string
-    function configFromStringAndFormat(config) {
-        // TODO: Move this to another part of the creation flow to prevent circular deps
-        if (config._f === hooks.ISO_8601) {
-            configFromISO(config);
-            return;
-        }
-        if (config._f === hooks.RFC_2822) {
-            configFromRFC2822(config);
-            return;
-        }
-        config._a = [];
-        getParsingFlags(config).empty = true;
-
-        // This array is used to make a Date, either with `new Date` or `Date.UTC`
-        var string = '' + config._i,
-            i,
-            parsedInput,
-            tokens,
-            token,
-            skipped,
-            stringLength = string.length,
-            totalParsedInputLength = 0,
-            era,
-            tokenLen;
-
-        tokens =
-            expandFormat(config._f, config._locale).match(formattingTokens) || [];
-        tokenLen = tokens.length;
-        for (i = 0; i < tokenLen; i++) {
-            token = tokens[i];
-            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
-                [])[0];
-            if (parsedInput) {
-                skipped = string.substr(0, string.indexOf(parsedInput));
-                if (skipped.length > 0) {
-                    getParsingFlags(config).unusedInput.push(skipped);
-                }
-                string = string.slice(
-                    string.indexOf(parsedInput) + parsedInput.length
-                );
-                totalParsedInputLength += parsedInput.length;
-            }
-            // don't parse if it's not a known token
-            if (formatTokenFunctions[token]) {
-                if (parsedInput) {
-                    getParsingFlags(config).empty = false;
-                } else {
-                    getParsingFlags(config).unusedTokens.push(token);
-                }
-                addTimeToArrayFromToken(token, parsedInput, config);
-            } else if (config._strict && !parsedInput) {
-                getParsingFlags(config).unusedTokens.push(token);
-            }
-        }
-
-        // add remaining unparsed input length to the string
-        getParsingFlags(config).charsLeftOver =
-            stringLength - totalParsedInputLength;
-        if (string.length > 0) {
-            getParsingFlags(config).unusedInput.push(string);
-        }
-
-        // clear _12h flag if hour is <= 12
-        if (
-            config._a[HOUR] <= 12 &&
-            getParsingFlags(config).bigHour === true &&
-            config._a[HOUR] > 0
-        ) {
-            getParsingFlags(config).bigHour = undefined;
-        }
-
-        getParsingFlags(config).parsedDateParts = config._a.slice(0);
-        getParsingFlags(config).meridiem = config._meridiem;
-        // handle meridiem
-        config._a[HOUR] = meridiemFixWrap(
-            config._locale,
-            config._a[HOUR],
-            config._meridiem
-        );
-
-        // handle era
-        era = getParsingFlags(config).era;
-        if (era !== null) {
-            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
-        }
-
-        configFromArray(config);
-        checkOverflow(config);
-    }
-
-    function meridiemFixWrap(locale, hour, meridiem) {
-        var isPm;
-
-        if (meridiem == null) {
-            // nothing to do
-            return hour;
-        }
-        if (locale.meridiemHour != null) {
-            return locale.meridiemHour(hour, meridiem);
-        } else if (locale.isPM != null) {
-            // Fallback
-            isPm = locale.isPM(meridiem);
-            if (isPm && hour < 12) {
-                hour += 12;
-            }
-            if (!isPm && hour === 12) {
-                hour = 0;
-            }
-            return hour;
-        } else {
-            // this is not supposed to happen
-            return hour;
-        }
-    }
-
-    // date from string and array of format strings
-    function configFromStringAndArray(config) {
-        var tempConfig,
-            bestMoment,
-            scoreToBeat,
-            i,
-            currentScore,
-            validFormatFound,
-            bestFormatIsValid = false,
-            configfLen = config._f.length;
-
-        if (configfLen === 0) {
-            getParsingFlags(config).invalidFormat = true;
-            config._d = new Date(NaN);
-            return;
-        }
-
-        for (i = 0; i < configfLen; i++) {
-            currentScore = 0;
-            validFormatFound = false;
-            tempConfig = copyConfig({}, config);
-            if (config._useUTC != null) {
-                tempConfig._useUTC = config._useUTC;
-            }
-            tempConfig._f = config._f[i];
-            configFromStringAndFormat(tempConfig);
-
-            if (isValid(tempConfig)) {
-                validFormatFound = true;
-            }
-
-            // if there is any input that was not parsed add a penalty for that format
-            currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
-            //or tokens
-            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
-            getParsingFlags(tempConfig).score = currentScore;
-
-            if (!bestFormatIsValid) {
-                if (
-                    scoreToBeat == null ||
-                    currentScore < scoreToBeat ||
-                    validFormatFound
-                ) {
-                    scoreToBeat = currentScore;
-                    bestMoment = tempConfig;
-                    if (validFormatFound) {
-                        bestFormatIsValid = true;
-                    }
-                }
-            } else {
-                if (currentScore < scoreToBeat) {
-                    scoreToBeat = currentScore;
-                    bestMoment = tempConfig;
-                }
-            }
-        }
-
-        extend(config, bestMoment || tempConfig);
-    }
-
-    function configFromObject(config) {
-        if (config._d) {
-            return;
-        }
-
-        var i = normalizeObjectUnits(config._i),
-            dayOrDate = i.day === undefined ? i.date : i.day;
-        config._a = map(
-            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
-            function (obj) {
-                return obj && parseInt(obj, 10);
-            }
-        );
-
-        configFromArray(config);
-    }
-
-    function createFromConfig(config) {
-        var res = new Moment(checkOverflow(prepareConfig(config)));
-        if (res._nextDay) {
-            // Adding is smart enough around DST
-            res.add(1, 'd');
-            res._nextDay = undefined;
-        }
-
-        return res;
-    }
-
-    function prepareConfig(config) {
-        var input = config._i,
-            format = config._f;
-
-        config._locale = config._locale || getLocale(config._l);
-
-        if (input === null || (format === undefined && input === '')) {
-            return createInvalid({ nullInput: true });
-        }
-
-        if (typeof input === 'string') {
-            config._i = input = config._locale.preparse(input);
-        }
-
-        if (isMoment(input)) {
-            return new Moment(checkOverflow(input));
-        } else if (isDate(input)) {
-            config._d = input;
-        } else if (isArray(format)) {
-            configFromStringAndArray(config);
-        } else if (format) {
-            configFromStringAndFormat(config);
-        } else {
-            configFromInput(config);
-        }
-
-        if (!isValid(config)) {
-            config._d = null;
-        }
-
-        return config;
-    }
-
-    function configFromInput(config) {
-        var input = config._i;
-        if (isUndefined(input)) {
-            config._d = new Date(hooks.now());
-        } else if (isDate(input)) {
-            config._d = new Date(input.valueOf());
-        } else if (typeof input === 'string') {
-            configFromString(config);
-        } else if (isArray(input)) {
-            config._a = map(input.slice(0), function (obj) {
-                return parseInt(obj, 10);
-            });
-            configFromArray(config);
-        } else if (isObject(input)) {
-            configFromObject(config);
-        } else if (isNumber(input)) {
-            // from milliseconds
-            config._d = new Date(input);
-        } else {
-            hooks.createFromInputFallback(config);
-        }
-    }
-
-    function createLocalOrUTC(input, format, locale, strict, isUTC) {
-        var c = {};
-
-        if (format === true || format === false) {
-            strict = format;
-            format = undefined;
-        }
-
-        if (locale === true || locale === false) {
-            strict = locale;
-            locale = undefined;
-        }
-
-        if (
-            (isObject(input) && isObjectEmpty(input)) ||
-            (isArray(input) && input.length === 0)
-        ) {
-            input = undefined;
-        }
-        // object construction must be done this way.
-        // https://github.com/moment/moment/issues/1423
-        c._isAMomentObject = true;
-        c._useUTC = c._isUTC = isUTC;
-        c._l = locale;
-        c._i = input;
-        c._f = format;
-        c._strict = strict;
-
-        return createFromConfig(c);
-    }
-
-    function createLocal(input, format, locale, strict) {
-        return createLocalOrUTC(input, format, locale, strict, false);
-    }
-
-    var prototypeMin = deprecate(
-            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
-            function () {
-                var other = createLocal.apply(null, arguments);
-                if (this.isValid() && other.isValid()) {
-                    return other < this ? this : other;
-                } else {
-                    return createInvalid();
-                }
-            }
-        ),
-        prototypeMax = deprecate(
-            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
-            function () {
-                var other = createLocal.apply(null, arguments);
-                if (this.isValid() && other.isValid()) {
-                    return other > this ? this : other;
-                } else {
-                    return createInvalid();
-                }
-            }
-        );
-
-    // Pick a moment m from moments so that m[fn](other) is true for all
-    // other. This relies on the function fn to be transitive.
-    //
-    // moments should either be an array of moment objects or an array, whose
-    // first element is an array of moment objects.
-    function pickBy(fn, moments) {
-        var res, i;
-        if (moments.length === 1 && isArray(moments[0])) {
-            moments = moments[0];
-        }
-        if (!moments.length) {
-            return createLocal();
-        }
-        res = moments[0];
-        for (i = 1; i < moments.length; ++i) {
-            if (!moments[i].isValid() || moments[i][fn](res)) {
-                res = moments[i];
-            }
-        }
-        return res;
-    }
-
-    // TODO: Use [].sort instead?
-    function min() {
-        var args = [].slice.call(arguments, 0);
-
-        return pickBy('isBefore', args);
-    }
-
-    function max() {
-        var args = [].slice.call(arguments, 0);
-
-        return pickBy('isAfter', args);
-    }
-
-    var now = function () {
-        return Date.now ? Date.now() : +new Date();
-    };
-
-    var ordering = [
-        'year',
-        'quarter',
-        'month',
-        'week',
-        'day',
-        'hour',
-        'minute',
-        'second',
-        'millisecond',
-    ];
-
-    function isDurationValid(m) {
-        var key,
-            unitHasDecimal = false,
-            i,
-            orderLen = ordering.length;
-        for (key in m) {
-            if (
-                hasOwnProp(m, key) &&
-                !(
-                    indexOf.call(ordering, key) !== -1 &&
-                    (m[key] == null || !isNaN(m[key]))
-                )
-            ) {
-                return false;
-            }
-        }
-
-        for (i = 0; i < orderLen; ++i) {
-            if (m[ordering[i]]) {
-                if (unitHasDecimal) {
-                    return false; // only allow non-integers for smallest unit
-                }
-                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
-                    unitHasDecimal = true;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    function isValid$1() {
-        return this._isValid;
-    }
-
-    function createInvalid$1() {
-        return createDuration(NaN);
-    }
-
-    function Duration(duration) {
-        var normalizedInput = normalizeObjectUnits(duration),
-            years = normalizedInput.year || 0,
-            quarters = normalizedInput.quarter || 0,
-            months = normalizedInput.month || 0,
-            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
-            days = normalizedInput.day || 0,
-            hours = normalizedInput.hour || 0,
-            minutes = normalizedInput.minute || 0,
-            seconds = normalizedInput.second || 0,
-            milliseconds = normalizedInput.millisecond || 0;
-
-        this._isValid = isDurationValid(normalizedInput);
-
-        // representation for dateAddRemove
-        this._milliseconds =
-            +milliseconds +
-            seconds * 1e3 + // 1000
-            minutes * 6e4 + // 1000 * 60
-            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
-        // Because of dateAddRemove treats 24 hours as different from a
-        // day when working around DST, we need to store them separately
-        this._days = +days + weeks * 7;
-        // It is impossible to translate months into days without knowing
-        // which months you are are talking about, so we have to store
-        // it separately.
-        this._months = +months + quarters * 3 + years * 12;
-
-        this._data = {};
-
-        this._locale = getLocale();
-
-        this._bubble();
-    }
-
-    function isDuration(obj) {
-        return obj instanceof Duration;
-    }
-
-    function absRound(number) {
-        if (number < 0) {
-            return Math.round(-1 * number) * -1;
-        } else {
-            return Math.round(number);
-        }
-    }
-
-    // compare two arrays, return the number of differences
-    function compareArrays(array1, array2, dontConvert) {
-        var len = Math.min(array1.length, array2.length),
-            lengthDiff = Math.abs(array1.length - array2.length),
-            diffs = 0,
-            i;
-        for (i = 0; i < len; i++) {
-            if (
-                (dontConvert && array1[i] !== array2[i]) ||
-                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
-            ) {
-                diffs++;
-            }
-        }
-        return diffs + lengthDiff;
-    }
-
-    // FORMATTING
-
-    function offset(token, separator) {
-        addFormatToken(token, 0, 0, function () {
-            var offset = this.utcOffset(),
-                sign = '+';
-            if (offset < 0) {
-                offset = -offset;
-                sign = '-';
-            }
-            return (
-                sign +
-                zeroFill(~~(offset / 60), 2) +
-                separator +
-                zeroFill(~~offset % 60, 2)
-            );
-        });
-    }
-
-    offset('Z', ':');
-    offset('ZZ', '');
-
-    // PARSING
-
-    addRegexToken('Z', matchShortOffset);
-    addRegexToken('ZZ', matchShortOffset);
-    addParseToken(['Z', 'ZZ'], function (input, array, config) {
-        config._useUTC = true;
-        config._tzm = offsetFromString(matchShortOffset, input);
-    });
-
-    // HELPERS
-
-    // timezone chunker
-    // '+10:00' > ['10',  '00']
-    // '-1530'  > ['-15', '30']
-    var chunkOffset = /([\+\-]|\d\d)/gi;
-
-    function offsetFromString(matcher, string) {
-        var matches = (string || '').match(matcher),
-            chunk,
-            parts,
-            minutes;
-
-        if (matches === null) {
-            return null;
-        }
-
-        chunk = matches[matches.length - 1] || [];
-        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
-        minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
-    }
-
-    // Return a moment from input, that is local/utc/zone equivalent to model.
-    function cloneWithOffset(input, model) {
-        var res, diff;
-        if (model._isUTC) {
-            res = model.clone();
-            diff =
-                (isMoment(input) || isDate(input)
-                    ? input.valueOf()
-                    : createLocal(input).valueOf()) - res.valueOf();
-            // Use low-level api, because this fn is low-level api.
-            res._d.setTime(res._d.valueOf() + diff);
-            hooks.updateOffset(res, false);
-            return res;
-        } else {
-            return createLocal(input).local();
-        }
-    }
-
-    function getDateOffset(m) {
-        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
-        // https://github.com/moment/moment/pull/1871
-        return -Math.round(m._d.getTimezoneOffset());
-    }
-
-    // HOOKS
-
-    // This function will be called whenever a moment is mutated.
-    // It is intended to keep the offset in sync with the timezone.
-    hooks.updateOffset = function () {};
-
-    // MOMENTS
-
-    // keepLocalTime = true means only change the timezone, without
-    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-    // +0200, so we adjust the time as needed, to be valid.
-    //
-    // Keeping the time actually adds/subtracts (one hour)
-    // from the actual represented time. That is why we call updateOffset
-    // a second time. In case it wants us to change the offset again
-    // _changeInProgress == true case, then we have to adjust, because
-    // there is no such time in the given timezone.
-    function getSetOffset(input, keepLocalTime, keepMinutes) {
-        var offset = this._offset || 0,
-            localAdjust;
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-        if (input != null) {
-            if (typeof input === 'string') {
-                input = offsetFromString(matchShortOffset, input);
-                if (input === null) {
-                    return this;
-                }
-            } else if (Math.abs(input) < 16 && !keepMinutes) {
-                input = input * 60;
-            }
-            if (!this._isUTC && keepLocalTime) {
-                localAdjust = getDateOffset(this);
-            }
-            this._offset = input;
-            this._isUTC = true;
-            if (localAdjust != null) {
-                this.add(localAdjust, 'm');
-            }
-            if (offset !== input) {
-                if (!keepLocalTime || this._changeInProgress) {
-                    addSubtract(
-                        this,
-                        createDuration(input - offset, 'm'),
-                        1,
-                        false
-                    );
-                } else if (!this._changeInProgress) {
-                    this._changeInProgress = true;
-                    hooks.updateOffset(this, true);
-                    this._changeInProgress = null;
-                }
-            }
-            return this;
-        } else {
-            return this._isUTC ? offset : getDateOffset(this);
-        }
-    }
-
-    function getSetZone(input, keepLocalTime) {
-        if (input != null) {
-            if (typeof input !== 'string') {
-                input = -input;
-            }
-
-            this.utcOffset(input, keepLocalTime);
-
-            return this;
-        } else {
-            return -this.utcOffset();
-        }
-    }
-
-    function setOffsetToUTC(keepLocalTime) {
-        return this.utcOffset(0, keepLocalTime);
-    }
-
-    function setOffsetToLocal(keepLocalTime) {
-        if (this._isUTC) {
-            this.utcOffset(0, keepLocalTime);
-            this._isUTC = false;
-
-            if (keepLocalTime) {
-                this.subtract(getDateOffset(this), 'm');
-            }
-        }
-        return this;
-    }
-
-    function setOffsetToParsedOffset() {
-        if (this._tzm != null) {
-            this.utcOffset(this._tzm, false, true);
-        } else if (typeof this._i === 'string') {
-            var tZone = offsetFromString(matchOffset, this._i);
-            if (tZone != null) {
-                this.utcOffset(tZone);
-            } else {
-                this.utcOffset(0, true);
-            }
-        }
-        return this;
-    }
-
-    function hasAlignedHourOffset(input) {
-        if (!this.isValid()) {
-            return false;
-        }
-        input = input ? createLocal(input).utcOffset() : 0;
-
-        return (this.utcOffset() - input) % 60 === 0;
-    }
-
-    function isDaylightSavingTime() {
-        return (
-            this.utcOffset() > this.clone().month(0).utcOffset() ||
-            this.utcOffset() > this.clone().month(5).utcOffset()
-        );
-    }
-
-    function isDaylightSavingTimeShifted() {
-        if (!isUndefined(this._isDSTShifted)) {
-            return this._isDSTShifted;
-        }
-
-        var c = {},
-            other;
-
-        copyConfig(c, this);
-        c = prepareConfig(c);
-
-        if (c._a) {
-            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
-            this._isDSTShifted =
-                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
-        } else {
-            this._isDSTShifted = false;
-        }
-
-        return this._isDSTShifted;
-    }
-
-    function isLocal() {
-        return this.isValid() ? !this._isUTC : false;
-    }
-
-    function isUtcOffset() {
-        return this.isValid() ? this._isUTC : false;
-    }
-
-    function isUtc() {
-        return this.isValid() ? this._isUTC && this._offset === 0 : false;
-    }
-
-    // ASP.NET json date format regex
-    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
-        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-        // and further modified to allow for strings containing both week and day
-        isoRegex =
-            /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
-
-    function createDuration(input, key) {
-        var duration = input,
-            // matching against regexp is expensive, do it on demand
-            match = null,
-            sign,
-            ret,
-            diffRes;
-
-        if (isDuration(input)) {
-            duration = {
-                ms: input._milliseconds,
-                d: input._days,
-                M: input._months,
-            };
-        } else if (isNumber(input) || !isNaN(+input)) {
-            duration = {};
-            if (key) {
-                duration[key] = +input;
-            } else {
-                duration.milliseconds = +input;
-            }
-        } else if ((match = aspNetRegex.exec(input))) {
-            sign = match[1] === '-' ? -1 : 1;
-            duration = {
-                y: 0,
-                d: toInt(match[DATE]) * sign,
-                h: toInt(match[HOUR]) * sign,
-                m: toInt(match[MINUTE]) * sign,
-                s: toInt(match[SECOND]) * sign,
-                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
-            };
-        } else if ((match = isoRegex.exec(input))) {
-            sign = match[1] === '-' ? -1 : 1;
-            duration = {
-                y: parseIso(match[2], sign),
-                M: parseIso(match[3], sign),
-                w: parseIso(match[4], sign),
-                d: parseIso(match[5], sign),
-                h: parseIso(match[6], sign),
-                m: parseIso(match[7], sign),
-                s: parseIso(match[8], sign),
-            };
-        } else if (duration == null) {
-            // checks for null or undefined
-            duration = {};
-        } else if (
-            typeof duration === 'object' &&
-            ('from' in duration || 'to' in duration)
-        ) {
-            diffRes = momentsDifference(
-                createLocal(duration.from),
-                createLocal(duration.to)
-            );
-
-            duration = {};
-            duration.ms = diffRes.milliseconds;
-            duration.M = diffRes.months;
-        }
-
-        ret = new Duration(duration);
-
-        if (isDuration(input) && hasOwnProp(input, '_locale')) {
-            ret._locale = input._locale;
-        }
-
-        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
-            ret._isValid = input._isValid;
-        }
-
-        return ret;
-    }
-
-    createDuration.fn = Duration.prototype;
-    createDuration.invalid = createInvalid$1;
-
-    function parseIso(inp, sign) {
-        // We'd normally use ~~inp for this, but unfortunately it also
-        // converts floats to ints.
-        // inp may be undefined, so careful calling replace on it.
-        var res = inp && parseFloat(inp.replace(',', '.'));
-        // apply sign while we're at it
-        return (isNaN(res) ? 0 : res) * sign;
-    }
-
-    function positiveMomentsDifference(base, other) {
-        var res = {};
-
-        res.months =
-            other.month() - base.month() + (other.year() - base.year()) * 12;
-        if (base.clone().add(res.months, 'M').isAfter(other)) {
-            --res.months;
-        }
-
-        res.milliseconds = +other - +base.clone().add(res.months, 'M');
-
-        return res;
-    }
-
-    function momentsDifference(base, other) {
-        var res;
-        if (!(base.isValid() && other.isValid())) {
-            return { milliseconds: 0, months: 0 };
-        }
-
-        other = cloneWithOffset(other, base);
-        if (base.isBefore(other)) {
-            res = positiveMomentsDifference(base, other);
-        } else {
-            res = positiveMomentsDifference(other, base);
-            res.milliseconds = -res.milliseconds;
-            res.months = -res.months;
-        }
-
-        return res;
-    }
-
-    // TODO: remove 'name' arg after deprecation is removed
-    function createAdder(direction, name) {
-        return function (val, period) {
-            var dur, tmp;
-            //invert the arguments, but complain about it
-            if (period !== null && !isNaN(+period)) {
-                deprecateSimple(
-                    name,
-                    'moment().' +
-                        name +
-                        '(period, number) is deprecated. Please use moment().' +
-                        name +
-                        '(number, period). ' +
-                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
-                );
-                tmp = val;
-                val = period;
-                period = tmp;
-            }
-
-            dur = createDuration(val, period);
-            addSubtract(this, dur, direction);
-            return this;
-        };
-    }
-
-    function addSubtract(mom, duration, isAdding, updateOffset) {
-        var milliseconds = duration._milliseconds,
-            days = absRound(duration._days),
-            months = absRound(duration._months);
-
-        if (!mom.isValid()) {
-            // No op
-            return;
-        }
-
-        updateOffset = updateOffset == null ? true : updateOffset;
-
-        if (months) {
-            setMonth(mom, get(mom, 'Month') + months * isAdding);
-        }
-        if (days) {
-            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
-        }
-        if (milliseconds) {
-            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
-        }
-        if (updateOffset) {
-            hooks.updateOffset(mom, days || months);
-        }
-    }
-
-    var add = createAdder(1, 'add'),
-        subtract = createAdder(-1, 'subtract');
-
-    function isString(input) {
-        return typeof input === 'string' || input instanceof String;
-    }
-
-    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
-    function isMomentInput(input) {
-        return (
-            isMoment(input) ||
-            isDate(input) ||
-            isString(input) ||
-            isNumber(input) ||
-            isNumberOrStringArray(input) ||
-            isMomentInputObject(input) ||
-            input === null ||
-            input === undefined
-        );
-    }
-
-    function isMomentInputObject(input) {
-        var objectTest = isObject(input) && !isObjectEmpty(input),
-            propertyTest = false,
-            properties = [
-                'years',
-                'year',
-                'y',
-                'months',
-                'month',
-                'M',
-                'days',
-                'day',
-                'd',
-                'dates',
-                'date',
-                'D',
-                'hours',
-                'hour',
-                'h',
-                'minutes',
-                'minute',
-                'm',
-                'seconds',
-                'second',
-                's',
-                'milliseconds',
-                'millisecond',
-                'ms',
-            ],
-            i,
-            property,
-            propertyLen = properties.length;
-
-        for (i = 0; i < propertyLen; i += 1) {
-            property = properties[i];
-            propertyTest = propertyTest || hasOwnProp(input, property);
-        }
-
-        return objectTest && propertyTest;
-    }
-
-    function isNumberOrStringArray(input) {
-        var arrayTest = isArray(input),
-            dataTypeTest = false;
-        if (arrayTest) {
-            dataTypeTest =
-                input.filter(function (item) {
-                    return !isNumber(item) && isString(input);
-                }).length === 0;
-        }
-        return arrayTest && dataTypeTest;
-    }
-
-    function isCalendarSpec(input) {
-        var objectTest = isObject(input) && !isObjectEmpty(input),
-            propertyTest = false,
-            properties = [
-                'sameDay',
-                'nextDay',
-                'lastDay',
-                'nextWeek',
-                'lastWeek',
-                'sameElse',
-            ],
-            i,
-            property;
-
-        for (i = 0; i < properties.length; i += 1) {
-            property = properties[i];
-            propertyTest = propertyTest || hasOwnProp(input, property);
-        }
-
-        return objectTest && propertyTest;
-    }
-
-    function getCalendarFormat(myMoment, now) {
-        var diff = myMoment.diff(now, 'days', true);
-        return diff < -6
-            ? 'sameElse'
-            : diff < -1
-              ? 'lastWeek'
-              : diff < 0
-                ? 'lastDay'
-                : diff < 1
-                  ? 'sameDay'
-                  : diff < 2
-                    ? 'nextDay'
-                    : diff < 7
-                      ? 'nextWeek'
-                      : 'sameElse';
-    }
-
-    function calendar$1(time, formats) {
-        // Support for single parameter, formats only overload to the calendar function
-        if (arguments.length === 1) {
-            if (!arguments[0]) {
-                time = undefined;
-                formats = undefined;
-            } else if (isMomentInput(arguments[0])) {
-                time = arguments[0];
-                formats = undefined;
-            } else if (isCalendarSpec(arguments[0])) {
-                formats = arguments[0];
-                time = undefined;
-            }
-        }
-        // We want to compare the start of today, vs this.
-        // Getting start-of-today depends on whether we're local/utc/offset or not.
-        var now = time || createLocal(),
-            sod = cloneWithOffset(now, this).startOf('day'),
-            format = hooks.calendarFormat(this, sod) || 'sameElse',
-            output =
-                formats &&
-                (isFunction(formats[format])
-                    ? formats[format].call(this, now)
-                    : formats[format]);
-
-        return this.format(
-            output || this.localeData().calendar(format, this, createLocal(now))
-        );
-    }
-
-    function clone() {
-        return new Moment(this);
-    }
-
-    function isAfter(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input);
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() > localInput.valueOf();
-        } else {
-            return localInput.valueOf() < this.clone().startOf(units).valueOf();
-        }
-    }
-
-    function isBefore(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input);
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() < localInput.valueOf();
-        } else {
-            return this.clone().endOf(units).valueOf() < localInput.valueOf();
-        }
-    }
-
-    function isBetween(from, to, units, inclusivity) {
-        var localFrom = isMoment(from) ? from : createLocal(from),
-            localTo = isMoment(to) ? to : createLocal(to);
-        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
-            return false;
-        }
-        inclusivity = inclusivity || '()';
-        return (
-            (inclusivity[0] === '('
-                ? this.isAfter(localFrom, units)
-                : !this.isBefore(localFrom, units)) &&
-            (inclusivity[1] === ')'
-                ? this.isBefore(localTo, units)
-                : !this.isAfter(localTo, units))
-        );
-    }
-
-    function isSame(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input),
-            inputMs;
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() === localInput.valueOf();
-        } else {
-            inputMs = localInput.valueOf();
-            return (
-                this.clone().startOf(units).valueOf() <= inputMs &&
-                inputMs <= this.clone().endOf(units).valueOf()
-            );
-        }
-    }
-
-    function isSameOrAfter(input, units) {
-        return this.isSame(input, units) || this.isAfter(input, units);
-    }
-
-    function isSameOrBefore(input, units) {
-        return this.isSame(input, units) || this.isBefore(input, units);
-    }
-
-    function diff(input, units, asFloat) {
-        var that, zoneDelta, output;
-
-        if (!this.isValid()) {
-            return NaN;
-        }
-
-        that = cloneWithOffset(input, this);
-
-        if (!that.isValid()) {
-            return NaN;
-        }
-
-        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
-
-        units = normalizeUnits(units);
-
-        switch (units) {
-            case 'year':
-                output = monthDiff(this, that) / 12;
-                break;
-            case 'month':
-                output = monthDiff(this, that);
-                break;
-            case 'quarter':
-                output = monthDiff(this, that) / 3;
-                break;
-            case 'second':
-                output = (this - that) / 1e3;
-                break; // 1000
-            case 'minute':
-                output = (this - that) / 6e4;
-                break; // 1000 * 60
-            case 'hour':
-                output = (this - that) / 36e5;
-                break; // 1000 * 60 * 60
-            case 'day':
-                output = (this - that - zoneDelta) / 864e5;
-                break; // 1000 * 60 * 60 * 24, negate dst
-            case 'week':
-                output = (this - that - zoneDelta) / 6048e5;
-                break; // 1000 * 60 * 60 * 24 * 7, negate dst
-            default:
-                output = this - that;
-        }
-
-        return asFloat ? output : absFloor(output);
-    }
-
-    function monthDiff(a, b) {
-        if (a.date() < b.date()) {
-            // end-of-month calculations work correct when the start month has more
-            // days than the end month.
-            return -monthDiff(b, a);
-        }
-        // difference in months
-        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
-            // b is in (anchor - 1 month, anchor + 1 month)
-            anchor = a.clone().add(wholeMonthDiff, 'months'),
-            anchor2,
-            adjust;
-
-        if (b - anchor < 0) {
-            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
-            // linear across the month
-            adjust = (b - anchor) / (anchor - anchor2);
-        } else {
-            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
-            // linear across the month
-            adjust = (b - anchor) / (anchor2 - anchor);
-        }
-
-        //check for negative zero, return zero if negative zero
-        return -(wholeMonthDiff + adjust) || 0;
-    }
-
-    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
-
-    function toString() {
-        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
-    }
-
-    function toISOString(keepOffset) {
-        if (!this.isValid()) {
-            return null;
-        }
-        var utc = keepOffset !== true,
-            m = utc ? this.clone().utc() : this;
-        if (m.year() < 0 || m.year() > 9999) {
-            return formatMoment(
-                m,
-                utc
-                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
-                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
-            );
-        }
-        if (isFunction(Date.prototype.toISOString)) {
-            // native implementation is ~50x faster, use it when we can
-            if (utc) {
-                return this.toDate().toISOString();
-            } else {
-                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
-                    .toISOString()
-                    .replace('Z', formatMoment(m, 'Z'));
-            }
-        }
-        return formatMoment(
-            m,
-            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
-        );
-    }
-
-    /**
-     * Return a human readable representation of a moment that can
-     * also be evaluated to get a new moment which is the same
-     *
-     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
-     */
-    function inspect() {
-        if (!this.isValid()) {
-            return 'moment.invalid(/* ' + this._i + ' */)';
-        }
-        var func = 'moment',
-            zone = '',
-            prefix,
-            year,
-            datetime,
-            suffix;
-        if (!this.isLocal()) {
-            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
-            zone = 'Z';
-        }
-        prefix = '[' + func + '("]';
-        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
-        datetime = '-MM-DD[T]HH:mm:ss.SSS';
-        suffix = zone + '[")]';
-
-        return this.format(prefix + year + datetime + suffix);
-    }
-
-    function format(inputString) {
-        if (!inputString) {
-            inputString = this.isUtc()
-                ? hooks.defaultFormatUtc
-                : hooks.defaultFormat;
-        }
-        var output = formatMoment(this, inputString);
-        return this.localeData().postformat(output);
-    }
-
-    function from(time, withoutSuffix) {
-        if (
-            this.isValid() &&
-            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-        ) {
-            return createDuration({ to: this, from: time })
-                .locale(this.locale())
-                .humanize(!withoutSuffix);
-        } else {
-            return this.localeData().invalidDate();
-        }
-    }
-
-    function fromNow(withoutSuffix) {
-        return this.from(createLocal(), withoutSuffix);
-    }
-
-    function to(time, withoutSuffix) {
-        if (
-            this.isValid() &&
-            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-        ) {
-            return createDuration({ from: this, to: time })
-                .locale(this.locale())
-                .humanize(!withoutSuffix);
-        } else {
-            return this.localeData().invalidDate();
-        }
-    }
-
-    function toNow(withoutSuffix) {
-        return this.to(createLocal(), withoutSuffix);
-    }
-
-    // If passed a locale key, it will set the locale for this
-    // instance.  Otherwise, it will return the locale configuration
-    // variables for this instance.
-    function locale(key) {
-        var newLocaleData;
-
-        if (key === undefined) {
-            return this._locale._abbr;
-        } else {
-            newLocaleData = getLocale(key);
-            if (newLocaleData != null) {
-                this._locale = newLocaleData;
-            }
-            return this;
-        }
-    }
-
-    var lang = deprecate(
-        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
-        function (key) {
-            if (key === undefined) {
-                return this.localeData();
-            } else {
-                return this.locale(key);
-            }
-        }
-    );
-
-    function localeData() {
-        return this._locale;
-    }
-
-    var MS_PER_SECOND = 1000,
-        MS_PER_MINUTE = 60 * MS_PER_SECOND,
-        MS_PER_HOUR = 60 * MS_PER_MINUTE,
-        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
-
-    // actual modulo - handles negative numbers (for dates before 1970):
-    function mod$1(dividend, divisor) {
-        return ((dividend % divisor) + divisor) % divisor;
-    }
-
-    function localStartOfDate(y, m, d) {
-        // the date constructor remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
-        } else {
-            return new Date(y, m, d).valueOf();
-        }
-    }
-
-    function utcStartOfDate(y, m, d) {
-        // Date.UTC remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
-        } else {
-            return Date.UTC(y, m, d);
-        }
-    }
-
-    function startOf(units) {
-        var time, startOfDate;
-        units = normalizeUnits(units);
-        if (units === undefined || units === 'millisecond' || !this.isValid()) {
-            return this;
-        }
-
-        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-        switch (units) {
-            case 'year':
-                time = startOfDate(this.year(), 0, 1);
-                break;
-            case 'quarter':
-                time = startOfDate(
-                    this.year(),
-                    this.month() - (this.month() % 3),
-                    1
-                );
-                break;
-            case 'month':
-                time = startOfDate(this.year(), this.month(), 1);
-                break;
-            case 'week':
-                time = startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - this.weekday()
-                );
-                break;
-            case 'isoWeek':
-                time = startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - (this.isoWeekday() - 1)
-                );
-                break;
-            case 'day':
-            case 'date':
-                time = startOfDate(this.year(), this.month(), this.date());
-                break;
-            case 'hour':
-                time = this._d.valueOf();
-                time -= mod$1(
-                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                    MS_PER_HOUR
-                );
-                break;
-            case 'minute':
-                time = this._d.valueOf();
-                time -= mod$1(time, MS_PER_MINUTE);
-                break;
-            case 'second':
-                time = this._d.valueOf();
-                time -= mod$1(time, MS_PER_SECOND);
-                break;
-        }
-
-        this._d.setTime(time);
-        hooks.updateOffset(this, true);
-        return this;
-    }
-
-    function endOf(units) {
-        var time, startOfDate;
-        units = normalizeUnits(units);
-        if (units === undefined || units === 'millisecond' || !this.isValid()) {
-            return this;
-        }
-
-        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-        switch (units) {
-            case 'year':
-                time = startOfDate(this.year() + 1, 0, 1) - 1;
-                break;
-            case 'quarter':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month() - (this.month() % 3) + 3,
-                        1
-                    ) - 1;
-                break;
-            case 'month':
-                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
-                break;
-            case 'week':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month(),
-                        this.date() - this.weekday() + 7
-                    ) - 1;
-                break;
-            case 'isoWeek':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month(),
-                        this.date() - (this.isoWeekday() - 1) + 7
-                    ) - 1;
-                break;
-            case 'day':
-            case 'date':
-                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
-                break;
-            case 'hour':
-                time = this._d.valueOf();
-                time +=
-                    MS_PER_HOUR -
-                    mod$1(
-                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                        MS_PER_HOUR
-                    ) -
-                    1;
-                break;
-            case 'minute':
-                time = this._d.valueOf();
-                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
-                break;
-            case 'second':
-                time = this._d.valueOf();
-                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
-                break;
-        }
-
-        this._d.setTime(time);
-        hooks.updateOffset(this, true);
-        return this;
-    }
-
-    function valueOf() {
-        return this._d.valueOf() - (this._offset || 0) * 60000;
-    }
-
-    function unix() {
-        return Math.floor(this.valueOf() / 1000);
-    }
-
-    function toDate() {
-        return new Date(this.valueOf());
-    }
-
-    function toArray() {
-        var m = this;
-        return [
-            m.year(),
-            m.month(),
-            m.date(),
-            m.hour(),
-            m.minute(),
-            m.second(),
-            m.millisecond(),
-        ];
-    }
-
-    function toObject() {
-        var m = this;
-        return {
-            years: m.year(),
-            months: m.month(),
-            date: m.date(),
-            hours: m.hours(),
-            minutes: m.minutes(),
-            seconds: m.seconds(),
-            milliseconds: m.milliseconds(),
-        };
-    }
-
-    function toJSON() {
-        // new Date(NaN).toJSON() === null
-        return this.isValid() ? this.toISOString() : null;
-    }
-
-    function isValid$2() {
-        return isValid(this);
-    }
-
-    function parsingFlags() {
-        return extend({}, getParsingFlags(this));
-    }
-
-    function invalidAt() {
-        return getParsingFlags(this).overflow;
-    }
-
-    function creationData() {
-        return {
-            input: this._i,
-            format: this._f,
-            locale: this._locale,
-            isUTC: this._isUTC,
-            strict: this._strict,
-        };
-    }
-
-    addFormatToken('N', 0, 0, 'eraAbbr');
-    addFormatToken('NN', 0, 0, 'eraAbbr');
-    addFormatToken('NNN', 0, 0, 'eraAbbr');
-    addFormatToken('NNNN', 0, 0, 'eraName');
-    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
-
-    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
-    addFormatToken('y', ['yy', 2], 0, 'eraYear');
-    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
-    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
-
-    addRegexToken('N', matchEraAbbr);
-    addRegexToken('NN', matchEraAbbr);
-    addRegexToken('NNN', matchEraAbbr);
-    addRegexToken('NNNN', matchEraName);
-    addRegexToken('NNNNN', matchEraNarrow);
-
-    addParseToken(
-        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
-        function (input, array, config, token) {
-            var era = config._locale.erasParse(input, token, config._strict);
-            if (era) {
-                getParsingFlags(config).era = era;
-            } else {
-                getParsingFlags(config).invalidEra = input;
-            }
-        }
-    );
-
-    addRegexToken('y', matchUnsigned);
-    addRegexToken('yy', matchUnsigned);
-    addRegexToken('yyy', matchUnsigned);
-    addRegexToken('yyyy', matchUnsigned);
-    addRegexToken('yo', matchEraYearOrdinal);
-
-    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
-    addParseToken(['yo'], function (input, array, config, token) {
-        var match;
-        if (config._locale._eraYearOrdinalRegex) {
-            match = input.match(config._locale._eraYearOrdinalRegex);
-        }
-
-        if (config._locale.eraYearOrdinalParse) {
-            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
-        } else {
-            array[YEAR] = parseInt(input, 10);
-        }
-    });
-
-    function localeEras(m, format) {
-        var i,
-            l,
-            date,
-            eras = this._eras || getLocale('en')._eras;
-        for (i = 0, l = eras.length; i < l; ++i) {
-            switch (typeof eras[i].since) {
-                case 'string':
-                    // truncate time
-                    date = hooks(eras[i].since).startOf('day');
-                    eras[i].since = date.valueOf();
-                    break;
-            }
-
-            switch (typeof eras[i].until) {
-                case 'undefined':
-                    eras[i].until = +Infinity;
-                    break;
-                case 'string':
-                    // truncate time
-                    date = hooks(eras[i].until).startOf('day').valueOf();
-                    eras[i].until = date.valueOf();
-                    break;
-            }
-        }
-        return eras;
-    }
-
-    function localeErasParse(eraName, format, strict) {
-        var i,
-            l,
-            eras = this.eras(),
-            name,
-            abbr,
-            narrow;
-        eraName = eraName.toUpperCase();
-
-        for (i = 0, l = eras.length; i < l; ++i) {
-            name = eras[i].name.toUpperCase();
-            abbr = eras[i].abbr.toUpperCase();
-            narrow = eras[i].narrow.toUpperCase();
-
-            if (strict) {
-                switch (format) {
-                    case 'N':
-                    case 'NN':
-                    case 'NNN':
-                        if (abbr === eraName) {
-                            return eras[i];
-                        }
-                        break;
-
-                    case 'NNNN':
-                        if (name === eraName) {
-                            return eras[i];
-                        }
-                        break;
-
-                    case 'NNNNN':
-                        if (narrow === eraName) {
-                            return eras[i];
-                        }
-                        break;
-                }
-            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
-                return eras[i];
-            }
-        }
-    }
-
-    function localeErasConvertYear(era, year) {
-        var dir = era.since <= era.until ? +1 : -1;
-        if (year === undefined) {
-            return hooks(era.since).year();
-        } else {
-            return hooks(era.since).year() + (year - era.offset) * dir;
-        }
-    }
-
-    function getEraName() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].name;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].name;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraNarrow() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].narrow;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].narrow;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraAbbr() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].abbr;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].abbr;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraYear() {
-        var i,
-            l,
-            dir,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            dir = eras[i].since <= eras[i].until ? +1 : -1;
-
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (
-                (eras[i].since <= val && val <= eras[i].until) ||
-                (eras[i].until <= val && val <= eras[i].since)
-            ) {
-                return (
-                    (this.year() - hooks(eras[i].since).year()) * dir +
-                    eras[i].offset
-                );
-            }
-        }
-
-        return this.year();
-    }
-
-    function erasNameRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasNameRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasNameRegex : this._erasRegex;
-    }
-
-    function erasAbbrRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasAbbrRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasAbbrRegex : this._erasRegex;
-    }
-
-    function erasNarrowRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasNarrowRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasNarrowRegex : this._erasRegex;
-    }
-
-    function matchEraAbbr(isStrict, locale) {
-        return locale.erasAbbrRegex(isStrict);
-    }
-
-    function matchEraName(isStrict, locale) {
-        return locale.erasNameRegex(isStrict);
-    }
-
-    function matchEraNarrow(isStrict, locale) {
-        return locale.erasNarrowRegex(isStrict);
-    }
-
-    function matchEraYearOrdinal(isStrict, locale) {
-        return locale._eraYearOrdinalRegex || matchUnsigned;
-    }
-
-    function computeErasParse() {
-        var abbrPieces = [],
-            namePieces = [],
-            narrowPieces = [],
-            mixedPieces = [],
-            i,
-            l,
-            erasName,
-            erasAbbr,
-            erasNarrow,
-            eras = this.eras();
-
-        for (i = 0, l = eras.length; i < l; ++i) {
-            erasName = regexEscape(eras[i].name);
-            erasAbbr = regexEscape(eras[i].abbr);
-            erasNarrow = regexEscape(eras[i].narrow);
-
-            namePieces.push(erasName);
-            abbrPieces.push(erasAbbr);
-            narrowPieces.push(erasNarrow);
-            mixedPieces.push(erasName);
-            mixedPieces.push(erasAbbr);
-            mixedPieces.push(erasNarrow);
-        }
-
-        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
-        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
-        this._erasNarrowRegex = new RegExp(
-            '^(' + narrowPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    // FORMATTING
-
-    addFormatToken(0, ['gg', 2], 0, function () {
-        return this.weekYear() % 100;
-    });
-
-    addFormatToken(0, ['GG', 2], 0, function () {
-        return this.isoWeekYear() % 100;
-    });
-
-    function addWeekYearFormatToken(token, getter) {
-        addFormatToken(0, [token, token.length], 0, getter);
-    }
-
-    addWeekYearFormatToken('gggg', 'weekYear');
-    addWeekYearFormatToken('ggggg', 'weekYear');
-    addWeekYearFormatToken('GGGG', 'isoWeekYear');
-    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
-    // ALIASES
-
-    // PARSING
-
-    addRegexToken('G', matchSigned);
-    addRegexToken('g', matchSigned);
-    addRegexToken('GG', match1to2, match2);
-    addRegexToken('gg', match1to2, match2);
-    addRegexToken('GGGG', match1to4, match4);
-    addRegexToken('gggg', match1to4, match4);
-    addRegexToken('GGGGG', match1to6, match6);
-    addRegexToken('ggggg', match1to6, match6);
-
-    addWeekParseToken(
-        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
-        function (input, week, config, token) {
-            week[token.substr(0, 2)] = toInt(input);
-        }
-    );
-
-    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
-        week[token] = hooks.parseTwoDigitYear(input);
-    });
-
-    // MOMENTS
-
-    function getSetWeekYear(input) {
-        return getSetWeekYearHelper.call(
-            this,
-            input,
-            this.week(),
-            this.weekday() + this.localeData()._week.dow,
-            this.localeData()._week.dow,
-            this.localeData()._week.doy
-        );
-    }
-
-    function getSetISOWeekYear(input) {
-        return getSetWeekYearHelper.call(
-            this,
-            input,
-            this.isoWeek(),
-            this.isoWeekday(),
-            1,
-            4
-        );
-    }
-
-    function getISOWeeksInYear() {
-        return weeksInYear(this.year(), 1, 4);
-    }
-
-    function getISOWeeksInISOWeekYear() {
-        return weeksInYear(this.isoWeekYear(), 1, 4);
-    }
-
-    function getWeeksInYear() {
-        var weekInfo = this.localeData()._week;
-        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
-    }
-
-    function getWeeksInWeekYear() {
-        var weekInfo = this.localeData()._week;
-        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
-    }
-
-    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
-        var weeksTarget;
-        if (input == null) {
-            return weekOfYear(this, dow, doy).year;
-        } else {
-            weeksTarget = weeksInYear(input, dow, doy);
-            if (week > weeksTarget) {
-                week = weeksTarget;
-            }
-            return setWeekAll.call(this, input, week, weekday, dow, doy);
-        }
-    }
-
-    function setWeekAll(weekYear, week, weekday, dow, doy) {
-        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
-            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
-
-        this.year(date.getUTCFullYear());
-        this.month(date.getUTCMonth());
-        this.date(date.getUTCDate());
-        return this;
-    }
-
-    // FORMATTING
-
-    addFormatToken('Q', 0, 'Qo', 'quarter');
-
-    // PARSING
-
-    addRegexToken('Q', match1);
-    addParseToken('Q', function (input, array) {
-        array[MONTH] = (toInt(input) - 1) * 3;
-    });
-
-    // MOMENTS
-
-    function getSetQuarter(input) {
-        return input == null
-            ? Math.ceil((this.month() + 1) / 3)
-            : this.month((input - 1) * 3 + (this.month() % 3));
-    }
-
-    // FORMATTING
-
-    addFormatToken('D', ['DD', 2], 'Do', 'date');
-
-    // PARSING
-
-    addRegexToken('D', match1to2, match1to2NoLeadingZero);
-    addRegexToken('DD', match1to2, match2);
-    addRegexToken('Do', function (isStrict, locale) {
-        // TODO: Remove "ordinalParse" fallback in next major release.
-        return isStrict
-            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
-            : locale._dayOfMonthOrdinalParseLenient;
-    });
-
-    addParseToken(['D', 'DD'], DATE);
-    addParseToken('Do', function (input, array) {
-        array[DATE] = toInt(input.match(match1to2)[0]);
-    });
-
-    // MOMENTS
-
-    var getSetDayOfMonth = makeGetSet('Date', true);
-
-    // FORMATTING
-
-    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
-    // PARSING
-
-    addRegexToken('DDD', match1to3);
-    addRegexToken('DDDD', match3);
-    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
-        config._dayOfYear = toInt(input);
-    });
-
-    // HELPERS
-
-    // MOMENTS
-
-    function getSetDayOfYear(input) {
-        var dayOfYear =
-            Math.round(
-                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
-            ) + 1;
-        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
-    }
-
-    // FORMATTING
-
-    addFormatToken('m', ['mm', 2], 0, 'minute');
-
-    // PARSING
-
-    addRegexToken('m', match1to2, match1to2HasZero);
-    addRegexToken('mm', match1to2, match2);
-    addParseToken(['m', 'mm'], MINUTE);
-
-    // MOMENTS
-
-    var getSetMinute = makeGetSet('Minutes', false);
-
-    // FORMATTING
-
-    addFormatToken('s', ['ss', 2], 0, 'second');
-
-    // PARSING
-
-    addRegexToken('s', match1to2, match1to2HasZero);
-    addRegexToken('ss', match1to2, match2);
-    addParseToken(['s', 'ss'], SECOND);
-
-    // MOMENTS
-
-    var getSetSecond = makeGetSet('Seconds', false);
-
-    // FORMATTING
-
-    addFormatToken('S', 0, 0, function () {
-        return ~~(this.millisecond() / 100);
-    });
-
-    addFormatToken(0, ['SS', 2], 0, function () {
-        return ~~(this.millisecond() / 10);
-    });
-
-    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
-    addFormatToken(0, ['SSSS', 4], 0, function () {
-        return this.millisecond() * 10;
-    });
-    addFormatToken(0, ['SSSSS', 5], 0, function () {
-        return this.millisecond() * 100;
-    });
-    addFormatToken(0, ['SSSSSS', 6], 0, function () {
-        return this.millisecond() * 1000;
-    });
-    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
-        return this.millisecond() * 10000;
-    });
-    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
-        return this.millisecond() * 100000;
-    });
-    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
-        return this.millisecond() * 1000000;
-    });
-
-    // PARSING
-
-    addRegexToken('S', match1to3, match1);
-    addRegexToken('SS', match1to3, match2);
-    addRegexToken('SSS', match1to3, match3);
-
-    var token, getSetMillisecond;
-    for (token = 'SSSS'; token.length <= 9; token += 'S') {
-        addRegexToken(token, matchUnsigned);
-    }
-
-    function parseMs(input, array) {
-        array[MILLISECOND] = toInt(('0.' + input) * 1000);
-    }
-
-    for (token = 'S'; token.length <= 9; token += 'S') {
-        addParseToken(token, parseMs);
-    }
-
-    getSetMillisecond = makeGetSet('Milliseconds', false);
-
-    // FORMATTING
-
-    addFormatToken('z', 0, 0, 'zoneAbbr');
-    addFormatToken('zz', 0, 0, 'zoneName');
-
-    // MOMENTS
-
-    function getZoneAbbr() {
-        return this._isUTC ? 'UTC' : '';
-    }
-
-    function getZoneName() {
-        return this._isUTC ? 'Coordinated Universal Time' : '';
-    }
-
-    var proto = Moment.prototype;
-
-    proto.add = add;
-    proto.calendar = calendar$1;
-    proto.clone = clone;
-    proto.diff = diff;
-    proto.endOf = endOf;
-    proto.format = format;
-    proto.from = from;
-    proto.fromNow = fromNow;
-    proto.to = to;
-    proto.toNow = toNow;
-    proto.get = stringGet;
-    proto.invalidAt = invalidAt;
-    proto.isAfter = isAfter;
-    proto.isBefore = isBefore;
-    proto.isBetween = isBetween;
-    proto.isSame = isSame;
-    proto.isSameOrAfter = isSameOrAfter;
-    proto.isSameOrBefore = isSameOrBefore;
-    proto.isValid = isValid$2;
-    proto.lang = lang;
-    proto.locale = locale;
-    proto.localeData = localeData;
-    proto.max = prototypeMax;
-    proto.min = prototypeMin;
-    proto.parsingFlags = parsingFlags;
-    proto.set = stringSet;
-    proto.startOf = startOf;
-    proto.subtract = subtract;
-    proto.toArray = toArray;
-    proto.toObject = toObject;
-    proto.toDate = toDate;
-    proto.toISOString = toISOString;
-    proto.inspect = inspect;
-    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
-        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
-            return 'Moment<' + this.format() + '>';
-        };
-    }
-    proto.toJSON = toJSON;
-    proto.toString = toString;
-    proto.unix = unix;
-    proto.valueOf = valueOf;
-    proto.creationData = creationData;
-    proto.eraName = getEraName;
-    proto.eraNarrow = getEraNarrow;
-    proto.eraAbbr = getEraAbbr;
-    proto.eraYear = getEraYear;
-    proto.year = getSetYear;
-    proto.isLeapYear = getIsLeapYear;
-    proto.weekYear = getSetWeekYear;
-    proto.isoWeekYear = getSetISOWeekYear;
-    proto.quarter = proto.quarters = getSetQuarter;
-    proto.month = getSetMonth;
-    proto.daysInMonth = getDaysInMonth;
-    proto.week = proto.weeks = getSetWeek;
-    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
-    proto.weeksInYear = getWeeksInYear;
-    proto.weeksInWeekYear = getWeeksInWeekYear;
-    proto.isoWeeksInYear = getISOWeeksInYear;
-    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
-    proto.date = getSetDayOfMonth;
-    proto.day = proto.days = getSetDayOfWeek;
-    proto.weekday = getSetLocaleDayOfWeek;
-    proto.isoWeekday = getSetISODayOfWeek;
-    proto.dayOfYear = getSetDayOfYear;
-    proto.hour = proto.hours = getSetHour;
-    proto.minute = proto.minutes = getSetMinute;
-    proto.second = proto.seconds = getSetSecond;
-    proto.millisecond = proto.milliseconds = getSetMillisecond;
-    proto.utcOffset = getSetOffset;
-    proto.utc = setOffsetToUTC;
-    proto.local = setOffsetToLocal;
-    proto.parseZone = setOffsetToParsedOffset;
-    proto.hasAlignedHourOffset = hasAlignedHourOffset;
-    proto.isDST = isDaylightSavingTime;
-    proto.isLocal = isLocal;
-    proto.isUtcOffset = isUtcOffset;
-    proto.isUtc = isUtc;
-    proto.isUTC = isUtc;
-    proto.zoneAbbr = getZoneAbbr;
-    proto.zoneName = getZoneName;
-    proto.dates = deprecate(
-        'dates accessor is deprecated. Use date instead.',
-        getSetDayOfMonth
-    );
-    proto.months = deprecate(
-        'months accessor is deprecated. Use month instead',
-        getSetMonth
-    );
-    proto.years = deprecate(
-        'years accessor is deprecated. Use year instead',
-        getSetYear
-    );
-    proto.zone = deprecate(
-        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
-        getSetZone
-    );
-    proto.isDSTShifted = deprecate(
-        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
-        isDaylightSavingTimeShifted
-    );
-
-    function createUnix(input) {
-        return createLocal(input * 1000);
-    }
-
-    function createInZone() {
-        return createLocal.apply(null, arguments).parseZone();
-    }
-
-    function preParsePostFormat(string) {
-        return string;
-    }
-
-    var proto$1 = Locale.prototype;
-
-    proto$1.calendar = calendar;
-    proto$1.longDateFormat = longDateFormat;
-    proto$1.invalidDate = invalidDate;
-    proto$1.ordinal = ordinal;
-    proto$1.preparse = preParsePostFormat;
-    proto$1.postformat = preParsePostFormat;
-    proto$1.relativeTime = relativeTime;
-    proto$1.pastFuture = pastFuture;
-    proto$1.set = set;
-    proto$1.eras = localeEras;
-    proto$1.erasParse = localeErasParse;
-    proto$1.erasConvertYear = localeErasConvertYear;
-    proto$1.erasAbbrRegex = erasAbbrRegex;
-    proto$1.erasNameRegex = erasNameRegex;
-    proto$1.erasNarrowRegex = erasNarrowRegex;
-
-    proto$1.months = localeMonths;
-    proto$1.monthsShort = localeMonthsShort;
-    proto$1.monthsParse = localeMonthsParse;
-    proto$1.monthsRegex = monthsRegex;
-    proto$1.monthsShortRegex = monthsShortRegex;
-    proto$1.week = localeWeek;
-    proto$1.firstDayOfYear = localeFirstDayOfYear;
-    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
-
-    proto$1.weekdays = localeWeekdays;
-    proto$1.weekdaysMin = localeWeekdaysMin;
-    proto$1.weekdaysShort = localeWeekdaysShort;
-    proto$1.weekdaysParse = localeWeekdaysParse;
-
-    proto$1.weekdaysRegex = weekdaysRegex;
-    proto$1.weekdaysShortRegex = weekdaysShortRegex;
-    proto$1.weekdaysMinRegex = weekdaysMinRegex;
-
-    proto$1.isPM = localeIsPM;
-    proto$1.meridiem = localeMeridiem;
-
-    function get$1(format, index, field, setter) {
-        var locale = getLocale(),
-            utc = createUTC().set(setter, index);
-        return locale[field](utc, format);
-    }
-
-    function listMonthsImpl(format, index, field) {
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-
-        if (index != null) {
-            return get$1(format, index, field, 'month');
-        }
-
-        var i,
-            out = [];
-        for (i = 0; i < 12; i++) {
-            out[i] = get$1(format, i, field, 'month');
-        }
-        return out;
-    }
-
-    // ()
-    // (5)
-    // (fmt, 5)
-    // (fmt)
-    // (true)
-    // (true, 5)
-    // (true, fmt, 5)
-    // (true, fmt)
-    function listWeekdaysImpl(localeSorted, format, index, field) {
-        if (typeof localeSorted === 'boolean') {
-            if (isNumber(format)) {
-                index = format;
-                format = undefined;
-            }
-
-            format = format || '';
-        } else {
-            format = localeSorted;
-            index = format;
-            localeSorted = false;
-
-            if (isNumber(format)) {
-                index = format;
-                format = undefined;
-            }
-
-            format = format || '';
-        }
-
-        var locale = getLocale(),
-            shift = localeSorted ? locale._week.dow : 0,
-            i,
-            out = [];
-
-        if (index != null) {
-            return get$1(format, (index + shift) % 7, field, 'day');
-        }
-
-        for (i = 0; i < 7; i++) {
-            out[i] = get$1(format, (i + shift) % 7, field, 'day');
-        }
-        return out;
-    }
-
-    function listMonths(format, index) {
-        return listMonthsImpl(format, index, 'months');
-    }
-
-    function listMonthsShort(format, index) {
-        return listMonthsImpl(format, index, 'monthsShort');
-    }
-
-    function listWeekdays(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
-    }
-
-    function listWeekdaysShort(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
-    }
-
-    function listWeekdaysMin(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
-    }
-
-    getSetGlobalLocale('en', {
-        eras: [
-            {
-                since: '0001-01-01',
-                until: +Infinity,
-                offset: 1,
-                name: 'Anno Domini',
-                narrow: 'AD',
-                abbr: 'AD',
-            },
-            {
-                since: '0000-12-31',
-                until: -Infinity,
-                offset: 1,
-                name: 'Before Christ',
-                narrow: 'BC',
-                abbr: 'BC',
-            },
-        ],
-        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    toInt((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    // Side effect imports
-
-    hooks.lang = deprecate(
-        'moment.lang is deprecated. Use moment.locale instead.',
-        getSetGlobalLocale
-    );
-    hooks.langData = deprecate(
-        'moment.langData is deprecated. Use moment.localeData instead.',
-        getLocale
-    );
-
-    var mathAbs = Math.abs;
-
-    function abs() {
-        var data = this._data;
-
-        this._milliseconds = mathAbs(this._milliseconds);
-        this._days = mathAbs(this._days);
-        this._months = mathAbs(this._months);
-
-        data.milliseconds = mathAbs(data.milliseconds);
-        data.seconds = mathAbs(data.seconds);
-        data.minutes = mathAbs(data.minutes);
-        data.hours = mathAbs(data.hours);
-        data.months = mathAbs(data.months);
-        data.years = mathAbs(data.years);
-
-        return this;
-    }
-
-    function addSubtract$1(duration, input, value, direction) {
-        var other = createDuration(input, value);
-
-        duration._milliseconds += direction * other._milliseconds;
-        duration._days += direction * other._days;
-        duration._months += direction * other._months;
-
-        return duration._bubble();
-    }
-
-    // supports only 2.0-style add(1, 's') or add(duration)
-    function add$1(input, value) {
-        return addSubtract$1(this, input, value, 1);
-    }
-
-    // supports only 2.0-style subtract(1, 's') or subtract(duration)
-    function subtract$1(input, value) {
-        return addSubtract$1(this, input, value, -1);
-    }
-
-    function absCeil(number) {
-        if (number < 0) {
-            return Math.floor(number);
-        } else {
-            return Math.ceil(number);
-        }
-    }
-
-    function bubble() {
-        var milliseconds = this._milliseconds,
-            days = this._days,
-            months = this._months,
-            data = this._data,
-            seconds,
-            minutes,
-            hours,
-            years,
-            monthsFromDays;
-
-        // if we have a mix of positive and negative values, bubble down first
-        // check: https://github.com/moment/moment/issues/2166
-        if (
-            !(
-                (milliseconds >= 0 && days >= 0 && months >= 0) ||
-                (milliseconds <= 0 && days <= 0 && months <= 0)
-            )
-        ) {
-            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
-            days = 0;
-            months = 0;
-        }
-
-        // The following code bubbles up values, see the tests for
-        // examples of what that means.
-        data.milliseconds = milliseconds % 1000;
-
-        seconds = absFloor(milliseconds / 1000);
-        data.seconds = seconds % 60;
-
-        minutes = absFloor(seconds / 60);
-        data.minutes = minutes % 60;
-
-        hours = absFloor(minutes / 60);
-        data.hours = hours % 24;
-
-        days += absFloor(hours / 24);
-
-        // convert days to months
-        monthsFromDays = absFloor(daysToMonths(days));
-        months += monthsFromDays;
-        days -= absCeil(monthsToDays(monthsFromDays));
-
-        // 12 months -> 1 year
-        years = absFloor(months / 12);
-        months %= 12;
-
-        data.days = days;
-        data.months = months;
-        data.years = years;
-
-        return this;
-    }
-
-    function daysToMonths(days) {
-        // 400 years have 146097 days (taking into account leap year rules)
-        // 400 years have 12 months === 4800
-        return (days * 4800) / 146097;
-    }
-
-    function monthsToDays(months) {
-        // the reverse of daysToMonths
-        return (months * 146097) / 4800;
-    }
-
-    function as(units) {
-        if (!this.isValid()) {
-            return NaN;
-        }
-        var days,
-            months,
-            milliseconds = this._milliseconds;
-
-        units = normalizeUnits(units);
-
-        if (units === 'month' || units === 'quarter' || units === 'year') {
-            days = this._days + milliseconds / 864e5;
-            months = this._months + daysToMonths(days);
-            switch (units) {
-                case 'month':
-                    return months;
-                case 'quarter':
-                    return months / 3;
-                case 'year':
-                    return months / 12;
-            }
-        } else {
-            // handle milliseconds separately because of floating point math errors (issue #1867)
-            days = this._days + Math.round(monthsToDays(this._months));
-            switch (units) {
-                case 'week':
-                    return days / 7 + milliseconds / 6048e5;
-                case 'day':
-                    return days + milliseconds / 864e5;
-                case 'hour':
-                    return days * 24 + milliseconds / 36e5;
-                case 'minute':
-                    return days * 1440 + milliseconds / 6e4;
-                case 'second':
-                    return days * 86400 + milliseconds / 1000;
-                // Math.floor prevents floating point math errors here
-                case 'millisecond':
-                    return Math.floor(days * 864e5) + milliseconds;
-                default:
-                    throw new Error('Unknown unit ' + units);
-            }
-        }
-    }
-
-    function makeAs(alias) {
-        return function () {
-            return this.as(alias);
-        };
-    }
-
-    var asMilliseconds = makeAs('ms'),
-        asSeconds = makeAs('s'),
-        asMinutes = makeAs('m'),
-        asHours = makeAs('h'),
-        asDays = makeAs('d'),
-        asWeeks = makeAs('w'),
-        asMonths = makeAs('M'),
-        asQuarters = makeAs('Q'),
-        asYears = makeAs('y'),
-        valueOf$1 = asMilliseconds;
-
-    function clone$1() {
-        return createDuration(this);
-    }
-
-    function get$2(units) {
-        units = normalizeUnits(units);
-        return this.isValid() ? this[units + 's']() : NaN;
-    }
-
-    function makeGetter(name) {
-        return function () {
-            return this.isValid() ? this._data[name] : NaN;
-        };
-    }
-
-    var milliseconds = makeGetter('milliseconds'),
-        seconds = makeGetter('seconds'),
-        minutes = makeGetter('minutes'),
-        hours = makeGetter('hours'),
-        days = makeGetter('days'),
-        months = makeGetter('months'),
-        years = makeGetter('years');
-
-    function weeks() {
-        return absFloor(this.days() / 7);
-    }
-
-    var round = Math.round,
-        thresholds = {
-            ss: 44, // a few seconds to seconds
-            s: 45, // seconds to minute
-            m: 45, // minutes to hour
-            h: 22, // hours to day
-            d: 26, // days to month/week
-            w: null, // weeks to month
-            M: 11, // months to year
-        };
-
-    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
-        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
-    }
-
-    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
-        var duration = createDuration(posNegDuration).abs(),
-            seconds = round(duration.as('s')),
-            minutes = round(duration.as('m')),
-            hours = round(duration.as('h')),
-            days = round(duration.as('d')),
-            months = round(duration.as('M')),
-            weeks = round(duration.as('w')),
-            years = round(duration.as('y')),
-            a =
-                (seconds <= thresholds.ss && ['s', seconds]) ||
-                (seconds < thresholds.s && ['ss', seconds]) ||
-                (minutes <= 1 && ['m']) ||
-                (minutes < thresholds.m && ['mm', minutes]) ||
-                (hours <= 1 && ['h']) ||
-                (hours < thresholds.h && ['hh', hours]) ||
-                (days <= 1 && ['d']) ||
-                (days < thresholds.d && ['dd', days]);
-
-        if (thresholds.w != null) {
-            a =
-                a ||
-                (weeks <= 1 && ['w']) ||
-                (weeks < thresholds.w && ['ww', weeks]);
-        }
-        a = a ||
-            (months <= 1 && ['M']) ||
-            (months < thresholds.M && ['MM', months]) ||
-            (years <= 1 && ['y']) || ['yy', years];
-
-        a[2] = withoutSuffix;
-        a[3] = +posNegDuration > 0;
-        a[4] = locale;
-        return substituteTimeAgo.apply(null, a);
-    }
-
-    // This function allows you to set the rounding function for relative time strings
-    function getSetRelativeTimeRounding(roundingFunction) {
-        if (roundingFunction === undefined) {
-            return round;
-        }
-        if (typeof roundingFunction === 'function') {
-            round = roundingFunction;
-            return true;
-        }
-        return false;
-    }
-
-    // This function allows you to set a threshold for relative time strings
-    function getSetRelativeTimeThreshold(threshold, limit) {
-        if (thresholds[threshold] === undefined) {
-            return false;
-        }
-        if (limit === undefined) {
-            return thresholds[threshold];
-        }
-        thresholds[threshold] = limit;
-        if (threshold === 's') {
-            thresholds.ss = limit - 1;
-        }
-        return true;
-    }
-
-    function humanize(argWithSuffix, argThresholds) {
-        if (!this.isValid()) {
-            return this.localeData().invalidDate();
-        }
-
-        var withSuffix = false,
-            th = thresholds,
-            locale,
-            output;
-
-        if (typeof argWithSuffix === 'object') {
-            argThresholds = argWithSuffix;
-            argWithSuffix = false;
-        }
-        if (typeof argWithSuffix === 'boolean') {
-            withSuffix = argWithSuffix;
-        }
-        if (typeof argThresholds === 'object') {
-            th = Object.assign({}, thresholds, argThresholds);
-            if (argThresholds.s != null && argThresholds.ss == null) {
-                th.ss = argThresholds.s - 1;
-            }
-        }
-
-        locale = this.localeData();
-        output = relativeTime$1(this, !withSuffix, th, locale);
-
-        if (withSuffix) {
-            output = locale.pastFuture(+this, output);
-        }
-
-        return locale.postformat(output);
-    }
-
-    var abs$1 = Math.abs;
-
-    function sign(x) {
-        return (x > 0) - (x < 0) || +x;
-    }
-
-    function toISOString$1() {
-        // for ISO strings we do not use the normal bubbling rules:
-        //  * milliseconds bubble up until they become hours
-        //  * days do not bubble at all
-        //  * months bubble up until they become years
-        // This is because there is no context-free conversion between hours and days
-        // (think of clock changes)
-        // and also not between days and months (28-31 days per month)
-        if (!this.isValid()) {
-            return this.localeData().invalidDate();
-        }
-
-        var seconds = abs$1(this._milliseconds) / 1000,
-            days = abs$1(this._days),
-            months = abs$1(this._months),
-            minutes,
-            hours,
-            years,
-            s,
-            total = this.asSeconds(),
-            totalSign,
-            ymSign,
-            daysSign,
-            hmsSign;
-
-        if (!total) {
-            // this is the same as C#'s (Noda) and python (isodate)...
-            // but not other JS (goog.date)
-            return 'P0D';
-        }
-
-        // 3600 seconds -> 60 minutes -> 1 hour
-        minutes = absFloor(seconds / 60);
-        hours = absFloor(minutes / 60);
-        seconds %= 60;
-        minutes %= 60;
-
-        // 12 months -> 1 year
-        years = absFloor(months / 12);
-        months %= 12;
-
-        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
-
-        totalSign = total < 0 ? '-' : '';
-        ymSign = sign(this._months) !== sign(total) ? '-' : '';
-        daysSign = sign(this._days) !== sign(total) ? '-' : '';
-        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
-
-        return (
-            totalSign +
-            'P' +
-            (years ? ymSign + years + 'Y' : '') +
-            (months ? ymSign + months + 'M' : '') +
-            (days ? daysSign + days + 'D' : '') +
-            (hours || minutes || seconds ? 'T' : '') +
-            (hours ? hmsSign + hours + 'H' : '') +
-            (minutes ? hmsSign + minutes + 'M' : '') +
-            (seconds ? hmsSign + s + 'S' : '')
-        );
-    }
-
-    var proto$2 = Duration.prototype;
-
-    proto$2.isValid = isValid$1;
-    proto$2.abs = abs;
-    proto$2.add = add$1;
-    proto$2.subtract = subtract$1;
-    proto$2.as = as;
-    proto$2.asMilliseconds = asMilliseconds;
-    proto$2.asSeconds = asSeconds;
-    proto$2.asMinutes = asMinutes;
-    proto$2.asHours = asHours;
-    proto$2.asDays = asDays;
-    proto$2.asWeeks = asWeeks;
-    proto$2.asMonths = asMonths;
-    proto$2.asQuarters = asQuarters;
-    proto$2.asYears = asYears;
-    proto$2.valueOf = valueOf$1;
-    proto$2._bubble = bubble;
-    proto$2.clone = clone$1;
-    proto$2.get = get$2;
-    proto$2.milliseconds = milliseconds;
-    proto$2.seconds = seconds;
-    proto$2.minutes = minutes;
-    proto$2.hours = hours;
-    proto$2.days = days;
-    proto$2.weeks = weeks;
-    proto$2.months = months;
-    proto$2.years = years;
-    proto$2.humanize = humanize;
-    proto$2.toISOString = toISOString$1;
-    proto$2.toString = toISOString$1;
-    proto$2.toJSON = toISOString$1;
-    proto$2.locale = locale;
-    proto$2.localeData = localeData;
-
-    proto$2.toIsoString = deprecate(
-        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
-        toISOString$1
-    );
-    proto$2.lang = lang;
-
-    // FORMATTING
-
-    addFormatToken('X', 0, 0, 'unix');
-    addFormatToken('x', 0, 0, 'valueOf');
-
-    // PARSING
-
-    addRegexToken('x', matchSigned);
-    addRegexToken('X', matchTimestamp);
-    addParseToken('X', function (input, array, config) {
-        config._d = new Date(parseFloat(input) * 1000);
-    });
-    addParseToken('x', function (input, array, config) {
-        config._d = new Date(toInt(input));
-    });
-
-    //! moment.js
-
-    hooks.version = '2.30.1';
-
-    setHookCallback(createLocal);
-
-    hooks.fn = proto;
-    hooks.min = min;
-    hooks.max = max;
-    hooks.now = now;
-    hooks.utc = createUTC;
-    hooks.unix = createUnix;
-    hooks.months = listMonths;
-    hooks.isDate = isDate;
-    hooks.locale = getSetGlobalLocale;
-    hooks.invalid = createInvalid;
-    hooks.duration = createDuration;
-    hooks.isMoment = isMoment;
-    hooks.weekdays = listWeekdays;
-    hooks.parseZone = createInZone;
-    hooks.localeData = getLocale;
-    hooks.isDuration = isDuration;
-    hooks.monthsShort = listMonthsShort;
-    hooks.weekdaysMin = listWeekdaysMin;
-    hooks.defineLocale = defineLocale;
-    hooks.updateLocale = updateLocale;
-    hooks.locales = listLocales;
-    hooks.weekdaysShort = listWeekdaysShort;
-    hooks.normalizeUnits = normalizeUnits;
-    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
-    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
-    hooks.calendarFormat = getCalendarFormat;
-    hooks.prototype = proto;
-
-    // currently HTML5 input type only supports 24-hour formats
-    hooks.HTML5_FMT = {
-        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
-        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
-        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
-        DATE: 'YYYY-MM-DD', // <input type="date" />
-        TIME: 'HH:mm', // <input type="time" />
-        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
-        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
-        WEEK: 'GGGG-[W]WW', // <input type="week" />
-        MONTH: 'YYYY-MM', // <input type="month" />
-    };
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('af', {
-        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
-            '_'
-        ),
-        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
-        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
-        meridiemParse: /vm|nm/i,
-        isPM: function (input) {
-            return /^nm$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'vm' : 'VM';
-            } else {
-                return isLower ? 'nm' : 'NM';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Vandag om] LT',
-            nextDay: '[Môre om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[Gister om] LT',
-            lastWeek: '[Laas] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oor %s',
-            past: '%s gelede',
-            s: "'n paar sekondes",
-            ss: '%d sekondes',
-            m: "'n minuut",
-            mm: '%d minute',
-            h: "'n uur",
-            hh: '%d ure',
-            d: "'n dag",
-            dd: '%d dae',
-            M: "'n maand",
-            MM: '%d maande',
-            y: "'n jaar",
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            ); // Thanks to Joris Röling : https://github.com/jjupiter
-        },
-        week: {
-            dow: 1, // Maandag is die eerste dag van die week.
-            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var pluralForm = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm(number),
-                    str = plurals[u][pluralForm(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months$1 = [
-            'جانفي',
-            'فيفري',
-            'مارس',
-            'أفريل',
-            'ماي',
-            'جوان',
-            'جويلية',
-            'أوت',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    hooks.defineLocale('ar-dz', {
-        months: months$1,
-        monthsShort: months$1,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize('s'),
-            ss: pluralize('s'),
-            m: pluralize('m'),
-            mm: pluralize('m'),
-            h: pluralize('h'),
-            hh: pluralize('h'),
-            d: pluralize('d'),
-            dd: pluralize('d'),
-            M: pluralize('M'),
-            MM: pluralize('M'),
-            y: pluralize('y'),
-            yy: pluralize('y'),
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ar-kw', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap = {
-            1: '1',
-            2: '2',
-            3: '3',
-            4: '4',
-            5: '5',
-            6: '6',
-            7: '7',
-            8: '8',
-            9: '9',
-            0: '0',
-        },
-        pluralForm$1 = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals$1 = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize$1 = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm$1(number),
-                    str = plurals$1[u][pluralForm$1(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months$2 = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    hooks.defineLocale('ar-ly', {
-        months: months$2,
-        monthsShort: months$2,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize$1('s'),
-            ss: pluralize$1('s'),
-            m: pluralize$1('m'),
-            mm: pluralize$1('m'),
-            h: pluralize$1('h'),
-            hh: pluralize$1('h'),
-            d: pluralize$1('d'),
-            dd: pluralize$1('d'),
-            M: pluralize$1('M'),
-            MM: pluralize$1('M'),
-            y: pluralize$1('y'),
-            yy: pluralize$1('y'),
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ar-ma', {
-        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$1 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    hooks.defineLocale('ar-ps', {
-        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
-            '_'
-        ),
-        monthsShort:
-            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('') // reversed since negative lookbehind not supported everywhere
-                .reverse()
-                .join('')
-                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
-                    return numberMap[match];
-                })
-                .split('')
-                .reverse()
-                .join('')
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$1[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$2 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$1 = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        };
-
-    hooks.defineLocale('ar-sa', {
-        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$1[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$2[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ar-tn', {
-        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-                '_'
-            ),
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[اليوم على الساعة] LT',
-            nextDay: '[غدا على الساعة] LT',
-            nextWeek: 'dddd [على الساعة] LT',
-            lastDay: '[أمس على الساعة] LT',
-            lastWeek: 'dddd [على الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'في %s',
-            past: 'منذ %s',
-            s: 'ثوان',
-            ss: '%d ثانية',
-            m: 'دقيقة',
-            mm: '%d دقائق',
-            h: 'ساعة',
-            hh: '%d ساعات',
-            d: 'يوم',
-            dd: '%d أيام',
-            M: 'شهر',
-            MM: '%d أشهر',
-            y: 'سنة',
-            yy: '%d سنوات',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$3 = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$2 = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        pluralForm$2 = function (n) {
-            return n === 0
-                ? 0
-                : n === 1
-                  ? 1
-                  : n === 2
-                    ? 2
-                    : n % 100 >= 3 && n % 100 <= 10
-                      ? 3
-                      : n % 100 >= 11
-                        ? 4
-                        : 5;
-        },
-        plurals$2 = {
-            s: [
-                'أقل من ثانية',
-                'ثانية واحدة',
-                ['ثانيتان', 'ثانيتين'],
-                '%d ثوان',
-                '%d ثانية',
-                '%d ثانية',
-            ],
-            m: [
-                'أقل من دقيقة',
-                'دقيقة واحدة',
-                ['دقيقتان', 'دقيقتين'],
-                '%d دقائق',
-                '%d دقيقة',
-                '%d دقيقة',
-            ],
-            h: [
-                'أقل من ساعة',
-                'ساعة واحدة',
-                ['ساعتان', 'ساعتين'],
-                '%d ساعات',
-                '%d ساعة',
-                '%d ساعة',
-            ],
-            d: [
-                'أقل من يوم',
-                'يوم واحد',
-                ['يومان', 'يومين'],
-                '%d أيام',
-                '%d يومًا',
-                '%d يوم',
-            ],
-            M: [
-                'أقل من شهر',
-                'شهر واحد',
-                ['شهران', 'شهرين'],
-                '%d أشهر',
-                '%d شهرا',
-                '%d شهر',
-            ],
-            y: [
-                'أقل من عام',
-                'عام واحد',
-                ['عامان', 'عامين'],
-                '%d أعوام',
-                '%d عامًا',
-                '%d عام',
-            ],
-        },
-        pluralize$2 = function (u) {
-            return function (number, withoutSuffix, string, isFuture) {
-                var f = pluralForm$2(number),
-                    str = plurals$2[u][pluralForm$2(number)];
-                if (f === 2) {
-                    str = str[withoutSuffix ? 0 : 1];
-                }
-                return str.replace(/%d/i, number);
-            };
-        },
-        months$3 = [
-            'يناير',
-            'فبراير',
-            'مارس',
-            'أبريل',
-            'مايو',
-            'يونيو',
-            'يوليو',
-            'أغسطس',
-            'سبتمبر',
-            'أكتوبر',
-            'نوفمبر',
-            'ديسمبر',
-        ];
-
-    hooks.defineLocale('ar', {
-        months: months$3,
-        monthsShort: months$3,
-        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/\u200FM/\u200FYYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ص|م/,
-        isPM: function (input) {
-            return 'م' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ص';
-            } else {
-                return 'م';
-            }
-        },
-        calendar: {
-            sameDay: '[اليوم عند الساعة] LT',
-            nextDay: '[غدًا عند الساعة] LT',
-            nextWeek: 'dddd [عند الساعة] LT',
-            lastDay: '[أمس عند الساعة] LT',
-            lastWeek: 'dddd [عند الساعة] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'بعد %s',
-            past: 'منذ %s',
-            s: pluralize$2('s'),
-            ss: pluralize$2('s'),
-            m: pluralize$2('m'),
-            mm: pluralize$2('m'),
-            h: pluralize$2('h'),
-            hh: pluralize$2('h'),
-            d: pluralize$2('d'),
-            dd: pluralize$2('d'),
-            M: pluralize$2('M'),
-            MM: pluralize$2('M'),
-            y: pluralize$2('y'),
-            yy: pluralize$2('y'),
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$2[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$3[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes = {
-        1: '-inci',
-        5: '-inci',
-        8: '-inci',
-        70: '-inci',
-        80: '-inci',
-        2: '-nci',
-        7: '-nci',
-        20: '-nci',
-        50: '-nci',
-        3: '-üncü',
-        4: '-üncü',
-        100: '-üncü',
-        6: '-ncı',
-        9: '-uncu',
-        10: '-uncu',
-        30: '-uncu',
-        60: '-ıncı',
-        90: '-ıncı',
-    };
-
-    hooks.defineLocale('az', {
-        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
-        weekdays:
-            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
-                '_'
-            ),
-        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
-        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[sabah saat] LT',
-            nextWeek: '[gələn həftə] dddd [saat] LT',
-            lastDay: '[dünən] LT',
-            lastWeek: '[keçən həftə] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s əvvəl',
-            s: 'bir neçə saniyə',
-            ss: '%d saniyə',
-            m: 'bir dəqiqə',
-            mm: '%d dəqiqə',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir il',
-            yy: '%d il',
-        },
-        meridiemParse: /gecə|səhər|gündüz|axşam/,
-        isPM: function (input) {
-            return /^(gündüz|axşam)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'gecə';
-            } else if (hour < 12) {
-                return 'səhər';
-            } else if (hour < 17) {
-                return 'gündüz';
-            } else {
-                return 'axşam';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
-        ordinal: function (number) {
-            if (number === 0) {
-                // special case for zero
-                return number + '-ıncı';
-            }
-            var a = number % 10,
-                b = (number % 100) - a,
-                c = number >= 100 ? 100 : null;
-            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
-            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
-            dd: 'дзень_дні_дзён',
-            MM: 'месяц_месяцы_месяцаў',
-            yy: 'год_гады_гадоў',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвіліна' : 'хвіліну';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'гадзіна' : 'гадзіну';
-        } else {
-            return number + ' ' + plural(format[key], +number);
-        }
-    }
-
-    hooks.defineLocale('be', {
-        months: {
-            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
-                '_'
-            ),
-            standalone:
-                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
-        weekdays: {
-            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
-                '_'
-            ),
-            standalone:
-                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
-                    '_'
-                ),
-            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
-        },
-        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
-        },
-        calendar: {
-            sameDay: '[Сёння ў] LT',
-            nextDay: '[Заўтра ў] LT',
-            lastDay: '[Учора ў] LT',
-            nextWeek: function () {
-                return '[У] dddd [ў] LT';
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[У мінулую] dddd [ў] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[У мінулы] dddd [ў] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'праз %s',
-            past: '%s таму',
-            s: 'некалькі секунд',
-            m: relativeTimeWithPlural,
-            mm: relativeTimeWithPlural,
-            h: relativeTimeWithPlural,
-            hh: relativeTimeWithPlural,
-            d: 'дзень',
-            dd: relativeTimeWithPlural,
-            M: 'месяц',
-            MM: relativeTimeWithPlural,
-            y: 'год',
-            yy: relativeTimeWithPlural,
-        },
-        meridiemParse: /ночы|раніцы|дня|вечара/,
-        isPM: function (input) {
-            return /^(дня|вечара)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночы';
-            } else if (hour < 12) {
-                return 'раніцы';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечара';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return (number % 10 === 2 || number % 10 === 3) &&
-                        number % 100 !== 12 &&
-                        number % 100 !== 13
-                        ? number + '-і'
-                        : number + '-ы';
-                case 'D':
-                    return number + '-га';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('bg', {
-        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Днес в] LT',
-            nextDay: '[Утре в] LT',
-            nextWeek: 'dddd [в] LT',
-            lastDay: '[Вчера в] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Миналата] dddd [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Миналия] dddd [в] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'след %s',
-            past: 'преди %s',
-            s: 'няколко секунди',
-            ss: '%d секунди',
-            m: 'минута',
-            mm: '%d минути',
-            h: 'час',
-            hh: '%d часа',
-            d: 'ден',
-            dd: '%d дена',
-            w: 'седмица',
-            ww: '%d седмици',
-            M: 'месец',
-            MM: '%d месеца',
-            y: 'година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('bm', {
-        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
-            '_'
-        ),
-        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
-        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
-        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
-        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'MMMM [tile] D [san] YYYY',
-            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bi lɛrɛ] LT',
-            nextDay: '[Sini lɛrɛ] LT',
-            nextWeek: 'dddd [don lɛrɛ] LT',
-            lastDay: '[Kunu lɛrɛ] LT',
-            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s kɔnɔ',
-            past: 'a bɛ %s bɔ',
-            s: 'sanga dama dama',
-            ss: 'sekondi %d',
-            m: 'miniti kelen',
-            mm: 'miniti %d',
-            h: 'lɛrɛ kelen',
-            hh: 'lɛrɛ %d',
-            d: 'tile kelen',
-            dd: 'tile %d',
-            M: 'kalo kelen',
-            MM: 'kalo %d',
-            y: 'san kelen',
-            yy: 'san %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$4 = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap$3 = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    hooks.defineLocale('bn-bd', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap$3[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$4[match];
-            });
-        },
-
-        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'রাত') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ভোর') {
-                return hour;
-            } else if (meridiem === 'সকাল') {
-                return hour;
-            } else if (meridiem === 'দুপুর') {
-                return hour >= 3 ? hour : hour + 12;
-            } else if (meridiem === 'বিকাল') {
-                return hour + 12;
-            } else if (meridiem === 'সন্ধ্যা') {
-                return hour + 12;
-            }
-        },
-
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 6) {
-                return 'ভোর';
-            } else if (hour < 12) {
-                return 'সকাল';
-            } else if (hour < 15) {
-                return 'দুপুর';
-            } else if (hour < 18) {
-                return 'বিকাল';
-            } else if (hour < 20) {
-                return 'সন্ধ্যা';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$5 = {
-            1: '১',
-            2: '২',
-            3: '৩',
-            4: '৪',
-            5: '৫',
-            6: '৬',
-            7: '৭',
-            8: '৮',
-            9: '৯',
-            0: '০',
-        },
-        numberMap$4 = {
-            '১': '1',
-            '২': '2',
-            '৩': '3',
-            '৪': '4',
-            '৫': '5',
-            '৬': '6',
-            '৭': '7',
-            '৮': '8',
-            '৯': '9',
-            '০': '0',
-        };
-
-    hooks.defineLocale('bn', {
-        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-            '_'
-        ),
-        monthsShort:
-            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-                '_'
-            ),
-        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-            '_'
-        ),
-        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm সময়',
-            LTS: 'A h:mm:ss সময়',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm সময়',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-        },
-        calendar: {
-            sameDay: '[আজ] LT',
-            nextDay: '[আগামীকাল] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[গতকাল] LT',
-            lastWeek: '[গত] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s পরে',
-            past: '%s আগে',
-            s: 'কয়েক সেকেন্ড',
-            ss: '%d সেকেন্ড',
-            m: 'এক মিনিট',
-            mm: '%d মিনিট',
-            h: 'এক ঘন্টা',
-            hh: '%d ঘন্টা',
-            d: 'এক দিন',
-            dd: '%d দিন',
-            M: 'এক মাস',
-            MM: '%d মাস',
-            y: 'এক বছর',
-            yy: '%d বছর',
-        },
-        preparse: function (string) {
-            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-                return numberMap$4[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$5[match];
-            });
-        },
-        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'রাত' && hour >= 4) ||
-                (meridiem === 'দুপুর' && hour < 5) ||
-                meridiem === 'বিকাল'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'রাত';
-            } else if (hour < 10) {
-                return 'সকাল';
-            } else if (hour < 17) {
-                return 'দুপুর';
-            } else if (hour < 20) {
-                return 'বিকাল';
-            } else {
-                return 'রাত';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$6 = {
-            1: '༡',
-            2: '༢',
-            3: '༣',
-            4: '༤',
-            5: '༥',
-            6: '༦',
-            7: '༧',
-            8: '༨',
-            9: '༩',
-            0: '༠',
-        },
-        numberMap$5 = {
-            '༡': '1',
-            '༢': '2',
-            '༣': '3',
-            '༤': '4',
-            '༥': '5',
-            '༦': '6',
-            '༧': '7',
-            '༨': '8',
-            '༩': '9',
-            '༠': '0',
-        };
-
-    hooks.defineLocale('bo', {
-        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
-                '_'
-            ),
-        monthsShortRegex: /^(ཟླ་\d{1,2})/,
-        monthsParseExact: true,
-        weekdays:
-            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
-                '_'
-            ),
-        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
-            '_'
-        ),
-        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[དི་རིང] LT',
-            nextDay: '[སང་ཉིན] LT',
-            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
-            lastDay: '[ཁ་སང] LT',
-            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ལ་',
-            past: '%s སྔན་ལ',
-            s: 'ལམ་སང',
-            ss: '%d སྐར་ཆ།',
-            m: 'སྐར་མ་གཅིག',
-            mm: '%d སྐར་མ',
-            h: 'ཆུ་ཚོད་གཅིག',
-            hh: '%d ཆུ་ཚོད',
-            d: 'ཉིན་གཅིག',
-            dd: '%d ཉིན་',
-            M: 'ཟླ་བ་གཅིག',
-            MM: '%d ཟླ་བ',
-            y: 'ལོ་གཅིག',
-            yy: '%d ལོ',
-        },
-        preparse: function (string) {
-            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
-                return numberMap$5[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$6[match];
-            });
-        },
-        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'མཚན་མོ' && hour >= 4) ||
-                (meridiem === 'ཉིན་གུང' && hour < 5) ||
-                meridiem === 'དགོང་དག'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'མཚན་མོ';
-            } else if (hour < 10) {
-                return 'ཞོགས་ཀས';
-            } else if (hour < 17) {
-                return 'ཉིན་གུང';
-            } else if (hour < 20) {
-                return 'དགོང་དག';
-            } else {
-                return 'མཚན་མོ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithMutation(number, withoutSuffix, key) {
-        var format = {
-            mm: 'munutenn',
-            MM: 'miz',
-            dd: 'devezh',
-        };
-        return number + ' ' + mutation(format[key], number);
-    }
-    function specialMutationForYears(number) {
-        switch (lastNumber(number)) {
-            case 1:
-            case 3:
-            case 4:
-            case 5:
-            case 9:
-                return number + ' bloaz';
-            default:
-                return number + ' vloaz';
-        }
-    }
-    function lastNumber(number) {
-        if (number > 9) {
-            return lastNumber(number % 10);
-        }
-        return number;
-    }
-    function mutation(text, number) {
-        if (number === 2) {
-            return softMutation(text);
-        }
-        return text;
-    }
-    function softMutation(text) {
-        var mutationTable = {
-            m: 'v',
-            b: 'v',
-            d: 'z',
-        };
-        if (mutationTable[text.charAt(0)] === undefined) {
-            return text;
-        }
-        return mutationTable[text.charAt(0)] + text.substring(1);
-    }
-
-    var monthsParse = [
-            /^gen/i,
-            /^c[ʼ\']hwe/i,
-            /^meu/i,
-            /^ebr/i,
-            /^mae/i,
-            /^(mez|eve)/i,
-            /^gou/i,
-            /^eos/i,
-            /^gwe/i,
-            /^her/i,
-            /^du/i,
-            /^ker/i,
-        ],
-        monthsRegex$1 =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        monthsStrictRegex =
-            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
-        monthsShortStrictRegex =
-            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-        fullWeekdaysParse = [
-            /^sul/i,
-            /^lun/i,
-            /^meurzh/i,
-            /^merc[ʼ\']her/i,
-            /^yaou/i,
-            /^gwener/i,
-            /^sadorn/i,
-        ],
-        shortWeekdaysParse = [
-            /^Sul/i,
-            /^Lun/i,
-            /^Meu/i,
-            /^Mer/i,
-            /^Yao/i,
-            /^Gwe/i,
-            /^Sad/i,
-        ],
-        minWeekdaysParse = [
-            /^Su/i,
-            /^Lu/i,
-            /^Me([^r]|$)/i,
-            /^Mer/i,
-            /^Ya/i,
-            /^Gw/i,
-            /^Sa/i,
-        ];
-
-    hooks.defineLocale('br', {
-        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
-            '_'
-        ),
-        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
-        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
-        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-        weekdaysParse: minWeekdaysParse,
-        fullWeekdaysParse: fullWeekdaysParse,
-        shortWeekdaysParse: shortWeekdaysParse,
-        minWeekdaysParse: minWeekdaysParse,
-
-        monthsRegex: monthsRegex$1,
-        monthsShortRegex: monthsRegex$1,
-        monthsStrictRegex: monthsStrictRegex,
-        monthsShortStrictRegex: monthsShortStrictRegex,
-        monthsParse: monthsParse,
-        longMonthsParse: monthsParse,
-        shortMonthsParse: monthsParse,
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [a viz] MMMM YYYY',
-            LLL: 'D [a viz] MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hiziv da] LT',
-            nextDay: '[Warcʼhoazh da] LT',
-            nextWeek: 'dddd [da] LT',
-            lastDay: '[Decʼh da] LT',
-            lastWeek: 'dddd [paset da] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'a-benn %s',
-            past: '%s ʼzo',
-            s: 'un nebeud segondennoù',
-            ss: '%d eilenn',
-            m: 'ur vunutenn',
-            mm: relativeTimeWithMutation,
-            h: 'un eur',
-            hh: '%d eur',
-            d: 'un devezh',
-            dd: relativeTimeWithMutation,
-            M: 'ur miz',
-            MM: relativeTimeWithMutation,
-            y: 'ur bloaz',
-            yy: specialMutationForYears,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'añ' : 'vet';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
-        isPM: function (token) {
-            return token === 'g.m.';
-        },
-        meridiem: function (hour, minute, isLower) {
-            return hour < 12 ? 'a.m.' : 'g.m.';
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 'm':
-                return withoutSuffix
-                    ? 'jedna minuta'
-                    : isFuture
-                      ? 'jednu minutu'
-                      : 'jedne minute';
-        }
-    }
-
-    function translate(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jedan sat';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    hooks.defineLocale('bs', {
-        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                        return '[prošlu] dddd [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate,
-            m: processRelativeTime,
-            mm: translate,
-            h: translate,
-            hh: translate,
-            d: 'dan',
-            dd: translate,
-            M: 'mjesec',
-            MM: translate,
-            y: 'godinu',
-            yy: translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ca', {
-        months: {
-            standalone:
-                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
-                    '_'
-                ),
-            format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
-                '_'
-            ),
-        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a les] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextDay: function () {
-                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastDay: function () {
-                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [passat a ' +
-                    (this.hours() !== 1 ? 'les' : 'la') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'uns segons',
-            ss: '%d segons',
-            m: 'un minut',
-            mm: '%d minuts',
-            h: 'una hora',
-            hh: '%d hores',
-            d: 'un dia',
-            dd: '%d dies',
-            M: 'un mes',
-            MM: '%d mesos',
-            y: 'un any',
-            yy: '%d anys',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$4 = {
-            standalone:
-                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
-                    '_'
-                ),
-            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
-                '_'
-            ),
-            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
-        },
-        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
-        monthsParse$1 = [
-            /^led/i,
-            /^úno/i,
-            /^bře/i,
-            /^dub/i,
-            /^kvě/i,
-            /^(čvn|červen$|června)/i,
-            /^(čvc|červenec|července)/i,
-            /^srp/i,
-            /^zář/i,
-            /^říj/i,
-            /^lis/i,
-            /^pro/i,
-        ],
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsRegex$2 =
-            /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
-
-    function plural$1(n) {
-        return n > 1 && n < 5 && ~~(n / 10) !== 1;
-    }
-    function translate$1(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'minuty' : 'minut');
-                } else {
-                    return result + 'minutami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'den' : 'dnem';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'dny' : 'dní');
-                } else {
-                    return result + 'dny';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
-                } else {
-                    return result + 'měsíci';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokem';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$1(number) ? 'roky' : 'let');
-                } else {
-                    return result + 'lety';
-                }
-        }
-    }
-
-    hooks.defineLocale('cs', {
-        months: months$4,
-        monthsShort: monthsShort,
-        monthsRegex: monthsRegex$2,
-        monthsShortRegex: monthsRegex$2,
-        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-        monthsStrictRegex:
-            /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
-        monthsShortStrictRegex:
-            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
-        monthsParse: monthsParse$1,
-        longMonthsParse: monthsParse$1,
-        shortMonthsParse: monthsParse$1,
-        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
-        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
-        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-            l: 'D. M. YYYY',
-        },
-        calendar: {
-            sameDay: '[dnes v] LT',
-            nextDay: '[zítra v] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [v] LT';
-                    case 3:
-                        return '[ve středu v] LT';
-                    case 4:
-                        return '[ve čtvrtek v] LT';
-                    case 5:
-                        return '[v pátek v] LT';
-                    case 6:
-                        return '[v sobotu v] LT';
-                }
-            },
-            lastDay: '[včera v] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulou neděli v] LT';
-                    case 1:
-                    case 2:
-                        return '[minulé] dddd [v] LT';
-                    case 3:
-                        return '[minulou středu v] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [v] LT';
-                    case 6:
-                        return '[minulou sobotu v] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'před %s',
-            s: translate$1,
-            ss: translate$1,
-            m: translate$1,
-            mm: translate$1,
-            h: translate$1,
-            hh: translate$1,
-            d: translate$1,
-            dd: translate$1,
-            M: translate$1,
-            MM: translate$1,
-            y: translate$1,
-            yy: translate$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('cv', {
-        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
-            '_'
-        ),
-        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
-        weekdays:
-            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
-                '_'
-            ),
-        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
-        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
-            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-        },
-        calendar: {
-            sameDay: '[Паян] LT [сехетре]',
-            nextDay: '[Ыран] LT [сехетре]',
-            lastDay: '[Ӗнер] LT [сехетре]',
-            nextWeek: '[Ҫитес] dddd LT [сехетре]',
-            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (output) {
-                var affix = /сехет$/i.exec(output)
-                    ? 'рен'
-                    : /ҫул$/i.exec(output)
-                      ? 'тан'
-                      : 'ран';
-                return output + affix;
-            },
-            past: '%s каялла',
-            s: 'пӗр-ик ҫеккунт',
-            ss: '%d ҫеккунт',
-            m: 'пӗр минут',
-            mm: '%d минут',
-            h: 'пӗр сехет',
-            hh: '%d сехет',
-            d: 'пӗр кун',
-            dd: '%d кун',
-            M: 'пӗр уйӑх',
-            MM: '%d уйӑх',
-            y: 'пӗр ҫул',
-            yy: '%d ҫул',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
-        ordinal: '%d-мӗш',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('cy', {
-        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
-            '_'
-        ),
-        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
-            '_'
-        ),
-        weekdays:
-            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
-        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
-        weekdaysParseExact: true,
-        // time formats are the same as en-gb
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Heddiw am] LT',
-            nextDay: '[Yfory am] LT',
-            nextWeek: 'dddd [am] LT',
-            lastDay: '[Ddoe am] LT',
-            lastWeek: 'dddd [diwethaf am] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'mewn %s',
-            past: '%s yn ôl',
-            s: 'ychydig eiliadau',
-            ss: '%d eiliad',
-            m: 'munud',
-            mm: '%d munud',
-            h: 'awr',
-            hh: '%d awr',
-            d: 'diwrnod',
-            dd: '%d diwrnod',
-            M: 'mis',
-            MM: '%d mis',
-            y: 'blwyddyn',
-            yy: '%d flynedd',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
-        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-        ordinal: function (number) {
-            var b = number,
-                output = '',
-                lookup = [
-                    '',
-                    'af',
-                    'il',
-                    'ydd',
-                    'ydd',
-                    'ed',
-                    'ed',
-                    'ed',
-                    'fed',
-                    'fed',
-                    'fed', // 1af to 10fed
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'eg',
-                    'fed',
-                    'eg',
-                    'fed', // 11eg to 20fed
-                ];
-            if (b > 20) {
-                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
-                    output = 'fed'; // not 30ain, 70ain or 90ain
-                } else {
-                    output = 'ain';
-                }
-            } else if (b > 0) {
-                output = lookup[b];
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('da', {
-        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'på dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[i] dddd[s kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'få sekunder',
-            ss: '%d sekunder',
-            m: 'et minut',
-            mm: '%d minutter',
-            h: 'en time',
-            hh: '%d timer',
-            d: 'en dag',
-            dd: '%d dage',
-            M: 'en måned',
-            MM: '%d måneder',
-            y: 'et år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('de-at', {
-        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$1,
-            mm: '%d Minuten',
-            h: processRelativeTime$1,
-            hh: '%d Stunden',
-            d: processRelativeTime$1,
-            dd: processRelativeTime$1,
-            w: processRelativeTime$1,
-            ww: '%d Wochen',
-            M: processRelativeTime$1,
-            MM: processRelativeTime$1,
-            y: processRelativeTime$1,
-            yy: processRelativeTime$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('de-ch', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$2,
-            mm: '%d Minuten',
-            h: processRelativeTime$2,
-            hh: '%d Stunden',
-            d: processRelativeTime$2,
-            dd: processRelativeTime$2,
-            w: processRelativeTime$2,
-            ww: '%d Wochen',
-            M: processRelativeTime$2,
-            MM: processRelativeTime$2,
-            y: processRelativeTime$2,
-            yy: processRelativeTime$2,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eine Minute', 'einer Minute'],
-            h: ['eine Stunde', 'einer Stunde'],
-            d: ['ein Tag', 'einem Tag'],
-            dd: [number + ' Tage', number + ' Tagen'],
-            w: ['eine Woche', 'einer Woche'],
-            M: ['ein Monat', 'einem Monat'],
-            MM: [number + ' Monate', number + ' Monaten'],
-            y: ['ein Jahr', 'einem Jahr'],
-            yy: [number + ' Jahre', number + ' Jahren'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('de', {
-        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays:
-            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY HH:mm',
-            LLLL: 'dddd, D. MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[heute um] LT [Uhr]',
-            sameElse: 'L',
-            nextDay: '[morgen um] LT [Uhr]',
-            nextWeek: 'dddd [um] LT [Uhr]',
-            lastDay: '[gestern um] LT [Uhr]',
-            lastWeek: '[letzten] dddd [um] LT [Uhr]',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: 'vor %s',
-            s: 'ein paar Sekunden',
-            ss: '%d Sekunden',
-            m: processRelativeTime$3,
-            mm: '%d Minuten',
-            h: processRelativeTime$3,
-            hh: '%d Stunden',
-            d: processRelativeTime$3,
-            dd: processRelativeTime$3,
-            w: processRelativeTime$3,
-            ww: '%d Wochen',
-            M: processRelativeTime$3,
-            MM: processRelativeTime$3,
-            y: processRelativeTime$3,
-            yy: processRelativeTime$3,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$5 = [
-            'ޖެނުއަރީ',
-            'ފެބްރުއަރީ',
-            'މާރިޗު',
-            'އޭޕްރީލު',
-            'މޭ',
-            'ޖޫން',
-            'ޖުލައި',
-            'އޯގަސްޓު',
-            'ސެޕްޓެމްބަރު',
-            'އޮކްޓޯބަރު',
-            'ނޮވެމްބަރު',
-            'ޑިސެމްބަރު',
-        ],
-        weekdays = [
-            'އާދިއްތަ',
-            'ހޯމަ',
-            'އަންގާރަ',
-            'ބުދަ',
-            'ބުރާސްފަތި',
-            'ހުކުރު',
-            'ހޮނިހިރު',
-        ];
-
-    hooks.defineLocale('dv', {
-        months: months$5,
-        monthsShort: months$5,
-        weekdays: weekdays,
-        weekdaysShort: weekdays,
-        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'D/M/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /މކ|މފ/,
-        isPM: function (input) {
-            return 'މފ' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'މކ';
-            } else {
-                return 'މފ';
-            }
-        },
-        calendar: {
-            sameDay: '[މިއަދު] LT',
-            nextDay: '[މާދަމާ] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[އިއްޔެ] LT',
-            lastWeek: '[ފާއިތުވި] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ތެރޭގައި %s',
-            past: 'ކުރިން %s',
-            s: 'ސިކުންތުކޮޅެއް',
-            ss: 'd% ސިކުންތު',
-            m: 'މިނިޓެއް',
-            mm: 'މިނިޓު %d',
-            h: 'ގަޑިއިރެއް',
-            hh: 'ގަޑިއިރު %d',
-            d: 'ދުވަހެއް',
-            dd: 'ދުވަސް %d',
-            M: 'މަހެއް',
-            MM: 'މަސް %d',
-            y: 'އަހަރެއް',
-            yy: 'އަހަރު %d',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 7, // Sunday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function isFunction$1(input) {
-        return (
-            (typeof Function !== 'undefined' && input instanceof Function) ||
-            Object.prototype.toString.call(input) === '[object Function]'
-        );
-    }
-
-    hooks.defineLocale('el', {
-        monthsNominativeEl:
-            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
-                '_'
-            ),
-        monthsGenitiveEl:
-            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
-                '_'
-            ),
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return this._monthsNominativeEl;
-            } else if (
-                typeof format === 'string' &&
-                /D/.test(format.substring(0, format.indexOf('MMMM')))
-            ) {
-                // if there is a day number before 'MMMM'
-                return this._monthsGenitiveEl[momentToFormat.month()];
-            } else {
-                return this._monthsNominativeEl[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
-        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
-            '_'
-        ),
-        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
-        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'μμ' : 'ΜΜ';
-            } else {
-                return isLower ? 'πμ' : 'ΠΜ';
-            }
-        },
-        isPM: function (input) {
-            return (input + '').toLowerCase()[0] === 'μ';
-        },
-        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendarEl: {
-            sameDay: '[Σήμερα {}] LT',
-            nextDay: '[Αύριο {}] LT',
-            nextWeek: 'dddd [{}] LT',
-            lastDay: '[Χθες {}] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 6:
-                        return '[το προηγούμενο] dddd [{}] LT';
-                    default:
-                        return '[την προηγούμενη] dddd [{}] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        calendar: function (key, mom) {
-            var output = this._calendarEl[key],
-                hours = mom && mom.hours();
-            if (isFunction$1(output)) {
-                output = output.apply(mom);
-            }
-            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
-        },
-        relativeTime: {
-            future: 'σε %s',
-            past: '%s πριν',
-            s: 'λίγα δευτερόλεπτα',
-            ss: '%d δευτερόλεπτα',
-            m: 'ένα λεπτό',
-            mm: '%d λεπτά',
-            h: 'μία ώρα',
-            hh: '%d ώρες',
-            d: 'μία μέρα',
-            dd: '%d μέρες',
-            M: 'ένας μήνας',
-            MM: '%d μήνες',
-            y: 'ένας χρόνος',
-            yy: '%d χρόνια',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}η/,
-        ordinal: '%dη',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-au', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-ca', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'YYYY-MM-DD',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY h:mm A',
-            LLLL: 'dddd, MMMM D, YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-gb', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-ie', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-il', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-in', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-nz', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('en-sg', {
-        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-            '_'
-        ),
-        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Today at] LT',
-            nextDay: '[Tomorrow at] LT',
-            nextWeek: 'dddd [at] LT',
-            lastDay: '[Yesterday at] LT',
-            lastWeek: '[Last] dddd [at] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'in %s',
-            past: '%s ago',
-            s: 'a few seconds',
-            ss: '%d seconds',
-            m: 'a minute',
-            mm: '%d minutes',
-            h: 'an hour',
-            hh: '%d hours',
-            d: 'a day',
-            dd: '%d days',
-            M: 'a month',
-            MM: '%d months',
-            y: 'a year',
-            yy: '%d years',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('eo', {
-        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
-        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
-        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: '[la] D[-an de] MMMM, YYYY',
-            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
-            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
-            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
-        },
-        meridiemParse: /[ap]\.t\.m/i,
-        isPM: function (input) {
-            return input.charAt(0).toLowerCase() === 'p';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'p.t.m.' : 'P.T.M.';
-            } else {
-                return isLower ? 'a.t.m.' : 'A.T.M.';
-            }
-        },
-        calendar: {
-            sameDay: '[Hodiaŭ je] LT',
-            nextDay: '[Morgaŭ je] LT',
-            nextWeek: 'dddd[n je] LT',
-            lastDay: '[Hieraŭ je] LT',
-            lastWeek: '[pasintan] dddd[n je] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'post %s',
-            past: 'antaŭ %s',
-            s: 'kelkaj sekundoj',
-            ss: '%d sekundoj',
-            m: 'unu minuto',
-            mm: '%d minutoj',
-            h: 'unu horo',
-            hh: '%d horoj',
-            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
-            dd: '%d tagoj',
-            M: 'unu monato',
-            MM: '%d monatoj',
-            y: 'unu jaro',
-            yy: '%d jaroj',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}a/,
-        ordinal: '%da',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$2 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$3 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    hooks.defineLocale('es-do', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$1[m.month()];
-            } else {
-                return monthsShortDot[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$3,
-        monthsShortRegex: monthsRegex$3,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$2,
-        longMonthsParse: monthsParse$2,
-        shortMonthsParse: monthsParse$2,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$1 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$3 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$4 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    hooks.defineLocale('es-mx', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$1;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$2[m.month()];
-            } else {
-                return monthsShortDot$1[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$4,
-        monthsShortRegex: monthsRegex$4,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$3,
-        longMonthsParse: monthsParse$3,
-        shortMonthsParse: monthsParse$3,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$2 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$4 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$5 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    hooks.defineLocale('es-us', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$2;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$3[m.month()];
-            } else {
-                return monthsShortDot$2[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$5,
-        monthsShortRegex: monthsRegex$5,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$4,
-        longMonthsParse: monthsParse$4,
-        shortMonthsParse: monthsParse$4,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'MM/DD/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY h:mm A',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortDot$3 =
-            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-                '_'
-            ),
-        monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-        monthsParse$5 = [
-            /^ene/i,
-            /^feb/i,
-            /^mar/i,
-            /^abr/i,
-            /^may/i,
-            /^jun/i,
-            /^jul/i,
-            /^ago/i,
-            /^sep/i,
-            /^oct/i,
-            /^nov/i,
-            /^dic/i,
-        ],
-        monthsRegex$6 =
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-    hooks.defineLocale('es', {
-        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortDot$3;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShort$4[m.month()];
-            } else {
-                return monthsShortDot$3[m.month()];
-            }
-        },
-        monthsRegex: monthsRegex$6,
-        monthsShortRegex: monthsRegex$6,
-        monthsStrictRegex:
-            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-        monthsShortStrictRegex:
-            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-        monthsParse: monthsParse$5,
-        longMonthsParse: monthsParse$5,
-        shortMonthsParse: monthsParse$5,
-        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastDay: function () {
-                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[el] dddd [pasado a la' +
-                    (this.hours() !== 1 ? 's' : '') +
-                    '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'en %s',
-            past: 'hace %s',
-            s: 'unos segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'una hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            w: 'una semana',
-            ww: '%d semanas',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un año',
-            yy: '%d años',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-        invalidDate: 'Fecha inválida',
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
-            ss: [number + 'sekundi', number + 'sekundit'],
-            m: ['ühe minuti', 'üks minut'],
-            mm: [number + ' minuti', number + ' minutit'],
-            h: ['ühe tunni', 'tund aega', 'üks tund'],
-            hh: [number + ' tunni', number + ' tundi'],
-            d: ['ühe päeva', 'üks päev'],
-            M: ['kuu aja', 'kuu aega', 'üks kuu'],
-            MM: [number + ' kuu', number + ' kuud'],
-            y: ['ühe aasta', 'aasta', 'üks aasta'],
-            yy: [number + ' aasta', number + ' aastat'],
-        };
-        if (withoutSuffix) {
-            return format[key][2] ? format[key][2] : format[key][1];
-        }
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('et', {
-        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
-        weekdays:
-            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
-                '_'
-            ),
-        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
-        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Täna,] LT',
-            nextDay: '[Homme,] LT',
-            nextWeek: '[Järgmine] dddd LT',
-            lastDay: '[Eile,] LT',
-            lastWeek: '[Eelmine] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s pärast',
-            past: '%s tagasi',
-            s: processRelativeTime$4,
-            ss: processRelativeTime$4,
-            m: processRelativeTime$4,
-            mm: processRelativeTime$4,
-            h: processRelativeTime$4,
-            hh: processRelativeTime$4,
-            d: processRelativeTime$4,
-            dd: '%d päeva',
-            M: processRelativeTime$4,
-            MM: processRelativeTime$4,
-            y: processRelativeTime$4,
-            yy: processRelativeTime$4,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('eu', {
-        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
-            '_'
-        ),
-        monthsShort:
-            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
-                '_'
-            ),
-        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
-        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY[ko] MMMM[ren] D[a]',
-            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
-            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
-            l: 'YYYY-M-D',
-            ll: 'YYYY[ko] MMM D[a]',
-            lll: 'YYYY[ko] MMM D[a] HH:mm',
-            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
-        },
-        calendar: {
-            sameDay: '[gaur] LT[etan]',
-            nextDay: '[bihar] LT[etan]',
-            nextWeek: 'dddd LT[etan]',
-            lastDay: '[atzo] LT[etan]',
-            lastWeek: '[aurreko] dddd LT[etan]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s barru',
-            past: 'duela %s',
-            s: 'segundo batzuk',
-            ss: '%d segundo',
-            m: 'minutu bat',
-            mm: '%d minutu',
-            h: 'ordu bat',
-            hh: '%d ordu',
-            d: 'egun bat',
-            dd: '%d egun',
-            M: 'hilabete bat',
-            MM: '%d hilabete',
-            y: 'urte bat',
-            yy: '%d urte',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$7 = {
-            1: '۱',
-            2: '۲',
-            3: '۳',
-            4: '۴',
-            5: '۵',
-            6: '۶',
-            7: '۷',
-            8: '۸',
-            9: '۹',
-            0: '۰',
-        },
-        numberMap$6 = {
-            '۱': '1',
-            '۲': '2',
-            '۳': '3',
-            '۴': '4',
-            '۵': '5',
-            '۶': '6',
-            '۷': '7',
-            '۸': '8',
-            '۹': '9',
-            '۰': '0',
-        };
-
-    hooks.defineLocale('fa', {
-        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-            '_'
-        ),
-        monthsShort:
-            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-                '_'
-            ),
-        weekdays:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-                '_'
-            ),
-        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /قبل از ظهر|بعد از ظهر/,
-        isPM: function (input) {
-            return /بعد از ظهر/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'قبل از ظهر';
-            } else {
-                return 'بعد از ظهر';
-            }
-        },
-        calendar: {
-            sameDay: '[امروز ساعت] LT',
-            nextDay: '[فردا ساعت] LT',
-            nextWeek: 'dddd [ساعت] LT',
-            lastDay: '[دیروز ساعت] LT',
-            lastWeek: 'dddd [پیش] [ساعت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'در %s',
-            past: '%s پیش',
-            s: 'چند ثانیه',
-            ss: '%d ثانیه',
-            m: 'یک دقیقه',
-            mm: '%d دقیقه',
-            h: 'یک ساعت',
-            hh: '%d ساعت',
-            d: 'یک روز',
-            dd: '%d روز',
-            M: 'یک ماه',
-            MM: '%d ماه',
-            y: 'یک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[۰-۹]/g, function (match) {
-                    return numberMap$6[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$7[match];
-                })
-                .replace(/,/g, '،');
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}م/,
-        ordinal: '%dم',
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var numbersPast =
-            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
-                ' '
-            ),
-        numbersFuture = [
-            'nolla',
-            'yhden',
-            'kahden',
-            'kolmen',
-            'neljän',
-            'viiden',
-            'kuuden',
-            numbersPast[7],
-            numbersPast[8],
-            numbersPast[9],
-        ];
-    function translate$2(number, withoutSuffix, key, isFuture) {
-        var result = '';
-        switch (key) {
-            case 's':
-                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
-            case 'ss':
-                result = isFuture ? 'sekunnin' : 'sekuntia';
-                break;
-            case 'm':
-                return isFuture ? 'minuutin' : 'minuutti';
-            case 'mm':
-                result = isFuture ? 'minuutin' : 'minuuttia';
-                break;
-            case 'h':
-                return isFuture ? 'tunnin' : 'tunti';
-            case 'hh':
-                result = isFuture ? 'tunnin' : 'tuntia';
-                break;
-            case 'd':
-                return isFuture ? 'päivän' : 'päivä';
-            case 'dd':
-                result = isFuture ? 'päivän' : 'päivää';
-                break;
-            case 'M':
-                return isFuture ? 'kuukauden' : 'kuukausi';
-            case 'MM':
-                result = isFuture ? 'kuukauden' : 'kuukautta';
-                break;
-            case 'y':
-                return isFuture ? 'vuoden' : 'vuosi';
-            case 'yy':
-                result = isFuture ? 'vuoden' : 'vuotta';
-                break;
-        }
-        result = verbalNumber(number, isFuture) + ' ' + result;
-        return result;
-    }
-    function verbalNumber(number, isFuture) {
-        return number < 10
-            ? isFuture
-                ? numbersFuture[number]
-                : numbersPast[number]
-            : number;
-    }
-
-    hooks.defineLocale('fi', {
-        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
-            '_'
-        ),
-        monthsShort:
-            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
-                '_'
-            ),
-        weekdays:
-            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
-                '_'
-            ),
-        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[ta] YYYY',
-            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
-            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
-            l: 'D.M.YYYY',
-            ll: 'Do MMM YYYY',
-            lll: 'Do MMM YYYY, [klo] HH.mm',
-            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
-        },
-        calendar: {
-            sameDay: '[tänään] [klo] LT',
-            nextDay: '[huomenna] [klo] LT',
-            nextWeek: 'dddd [klo] LT',
-            lastDay: '[eilen] [klo] LT',
-            lastWeek: '[viime] dddd[na] [klo] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s päästä',
-            past: '%s sitten',
-            s: translate$2,
-            ss: translate$2,
-            m: translate$2,
-            mm: translate$2,
-            h: translate$2,
-            hh: translate$2,
-            d: translate$2,
-            dd: translate$2,
-            M: translate$2,
-            MM: translate$2,
-            y: translate$2,
-            yy: translate$2,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('fil', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('fo', {
-        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
-        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D. MMMM, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Í dag kl.] LT',
-            nextDay: '[Í morgin kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[Í gjár kl.] LT',
-            lastWeek: '[síðstu] dddd [kl] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'um %s',
-            past: '%s síðani',
-            s: 'fá sekund',
-            ss: '%d sekundir',
-            m: 'ein minuttur',
-            mm: '%d minuttir',
-            h: 'ein tími',
-            hh: '%d tímar',
-            d: 'ein dagur',
-            dd: '%d dagar',
-            M: 'ein mánaður',
-            MM: '%d mánaðir',
-            y: 'eitt ár',
-            yy: '%d ár',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('fr-ca', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('fr-ch', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'D':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsStrictRegex$1 =
-            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsShortStrictRegex$1 =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
-        monthsRegex$7 =
-            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-        monthsParse$6 = [
-            /^janv/i,
-            /^févr/i,
-            /^mars/i,
-            /^avr/i,
-            /^mai/i,
-            /^juin/i,
-            /^juil/i,
-            /^août/i,
-            /^sept/i,
-            /^oct/i,
-            /^nov/i,
-            /^déc/i,
-        ];
-
-    hooks.defineLocale('fr', {
-        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-            '_'
-        ),
-        monthsShort:
-            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-                '_'
-            ),
-        monthsRegex: monthsRegex$7,
-        monthsShortRegex: monthsRegex$7,
-        monthsStrictRegex: monthsStrictRegex$1,
-        monthsShortStrictRegex: monthsShortStrictRegex$1,
-        monthsParse: monthsParse$6,
-        longMonthsParse: monthsParse$6,
-        shortMonthsParse: monthsParse$6,
-        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Aujourd’hui à] LT',
-            nextDay: '[Demain à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[Hier à] LT',
-            lastWeek: 'dddd [dernier à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dans %s',
-            past: 'il y a %s',
-            s: 'quelques secondes',
-            ss: '%d secondes',
-            m: 'une minute',
-            mm: '%d minutes',
-            h: 'une heure',
-            hh: '%d heures',
-            d: 'un jour',
-            dd: '%d jours',
-            w: 'une semaine',
-            ww: '%d semaines',
-            M: 'un mois',
-            MM: '%d mois',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // TODO: Return 'e' when day of month > 1. Move this case inside
-                // block for masculine words below.
-                // See https://github.com/moment/moment/issues/3375
-                case 'D':
-                    return number + (number === 1 ? 'er' : '');
-
-                // Words with masculine grammatical gender: mois, trimestre, jour
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                    return number + (number === 1 ? 'er' : 'e');
-
-                // Words with feminine grammatical gender: semaine
-                case 'w':
-                case 'W':
-                    return number + (number === 1 ? 're' : 'e');
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots =
-            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
-        monthsShortWithoutDots =
-            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
-
-    hooks.defineLocale('fy', {
-        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots[m.month()];
-            } else {
-                return monthsShortWithDots[m.month()];
-            }
-        },
-        monthsParseExact: true,
-        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
-            '_'
-        ),
-        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
-        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[hjoed om] LT',
-            nextDay: '[moarn om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[juster om] LT',
-            lastWeek: '[ôfrûne] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'oer %s',
-            past: '%s lyn',
-            s: 'in pear sekonden',
-            ss: '%d sekonden',
-            m: 'ien minút',
-            mm: '%d minuten',
-            h: 'ien oere',
-            hh: '%d oeren',
-            d: 'ien dei',
-            dd: '%d dagen',
-            M: 'ien moanne',
-            MM: '%d moannen',
-            y: 'ien jier',
-            yy: '%d jierren',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$6 = [
-            'Eanáir',
-            'Feabhra',
-            'Márta',
-            'Aibreán',
-            'Bealtaine',
-            'Meitheamh',
-            'Iúil',
-            'Lúnasa',
-            'Meán Fómhair',
-            'Deireadh Fómhair',
-            'Samhain',
-            'Nollaig',
-        ],
-        monthsShort$5 = [
-            'Ean',
-            'Feabh',
-            'Márt',
-            'Aib',
-            'Beal',
-            'Meith',
-            'Iúil',
-            'Lún',
-            'M.F.',
-            'D.F.',
-            'Samh',
-            'Noll',
-        ],
-        weekdays$1 = [
-            'Dé Domhnaigh',
-            'Dé Luain',
-            'Dé Máirt',
-            'Dé Céadaoin',
-            'Déardaoin',
-            'Dé hAoine',
-            'Dé Sathairn',
-        ],
-        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
-        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
-
-    hooks.defineLocale('ga', {
-        months: months$6,
-        monthsShort: monthsShort$5,
-        monthsParseExact: true,
-        weekdays: weekdays$1,
-        weekdaysShort: weekdaysShort,
-        weekdaysMin: weekdaysMin,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Inniu ag] LT',
-            nextDay: '[Amárach ag] LT',
-            nextWeek: 'dddd [ag] LT',
-            lastDay: '[Inné ag] LT',
-            lastWeek: 'dddd [seo caite] [ag] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i %s',
-            past: '%s ó shin',
-            s: 'cúpla soicind',
-            ss: '%d soicind',
-            m: 'nóiméad',
-            mm: '%d nóiméad',
-            h: 'uair an chloig',
-            hh: '%d uair an chloig',
-            d: 'lá',
-            dd: '%d lá',
-            M: 'mí',
-            MM: '%d míonna',
-            y: 'bliain',
-            yy: '%d bliain',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$7 = [
-            'Am Faoilleach',
-            'An Gearran',
-            'Am Màrt',
-            'An Giblean',
-            'An Cèitean',
-            'An t-Ògmhios',
-            'An t-Iuchar',
-            'An Lùnastal',
-            'An t-Sultain',
-            'An Dàmhair',
-            'An t-Samhain',
-            'An Dùbhlachd',
-        ],
-        monthsShort$6 = [
-            'Faoi',
-            'Gear',
-            'Màrt',
-            'Gibl',
-            'Cèit',
-            'Ògmh',
-            'Iuch',
-            'Lùn',
-            'Sult',
-            'Dàmh',
-            'Samh',
-            'Dùbh',
-        ],
-        weekdays$2 = [
-            'Didòmhnaich',
-            'Diluain',
-            'Dimàirt',
-            'Diciadain',
-            'Diardaoin',
-            'Dihaoine',
-            'Disathairne',
-        ],
-        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
-        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
-
-    hooks.defineLocale('gd', {
-        months: months$7,
-        monthsShort: monthsShort$6,
-        monthsParseExact: true,
-        weekdays: weekdays$2,
-        weekdaysShort: weekdaysShort$1,
-        weekdaysMin: weekdaysMin$1,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[An-diugh aig] LT',
-            nextDay: '[A-màireach aig] LT',
-            nextWeek: 'dddd [aig] LT',
-            lastDay: '[An-dè aig] LT',
-            lastWeek: 'dddd [seo chaidh] [aig] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ann an %s',
-            past: 'bho chionn %s',
-            s: 'beagan diogan',
-            ss: '%d diogan',
-            m: 'mionaid',
-            mm: '%d mionaidean',
-            h: 'uair',
-            hh: '%d uairean',
-            d: 'latha',
-            dd: '%d latha',
-            M: 'mìos',
-            MM: '%d mìosan',
-            y: 'bliadhna',
-            yy: '%d bliadhna',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-        ordinal: function (number) {
-            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('gl', {
-        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
-            '_'
-        ),
-        monthsShort:
-            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
-        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
-        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY H:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextDay: function () {
-                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-            },
-            nextWeek: function () {
-                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
-            },
-            lastDay: function () {
-                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
-            },
-            lastWeek: function () {
-                return (
-                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
-                );
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (str) {
-                if (str.indexOf('un') === 0) {
-                    return 'n' + str;
-                }
-                return 'en ' + str;
-            },
-            past: 'hai %s',
-            s: 'uns segundos',
-            ss: '%d segundos',
-            m: 'un minuto',
-            mm: '%d minutos',
-            h: 'unha hora',
-            hh: '%d horas',
-            d: 'un día',
-            dd: '%d días',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
-            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
-            m: ['एका मिणटान', 'एक मिनूट'],
-            mm: [number + ' मिणटांनी', number + ' मिणटां'],
-            h: ['एका वरान', 'एक वर'],
-            hh: [number + ' वरांनी', number + ' वरां'],
-            d: ['एका दिसान', 'एक दीस'],
-            dd: [number + ' दिसांनी', number + ' दीस'],
-            M: ['एका म्हयन्यान', 'एक म्हयनो'],
-            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
-            y: ['एका वर्सान', 'एक वर्स'],
-            yy: [number + ' वर्सांनी', number + ' वर्सां'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('gom-deva', {
-        months: {
-            standalone:
-                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-                    '_'
-                ),
-            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
-        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
-        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [वाजतां]',
-            LTS: 'A h:mm:ss [वाजतां]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
-            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
-        },
-        calendar: {
-            sameDay: '[आयज] LT',
-            nextDay: '[फाल्यां] LT',
-            nextWeek: '[फुडलो] dddd[,] LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[फाटलो] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s आदीं',
-            s: processRelativeTime$5,
-            ss: processRelativeTime$5,
-            m: processRelativeTime$5,
-            mm: processRelativeTime$5,
-            h: processRelativeTime$5,
-            hh: processRelativeTime$5,
-            d: processRelativeTime$5,
-            dd: processRelativeTime$5,
-            M: processRelativeTime$5,
-            MM: processRelativeTime$5,
-            y: processRelativeTime$5,
-            yy: processRelativeTime$5,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'वेर' only applies to day of the month
-                case 'D':
-                    return number + 'वेर';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राती') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सकाळीं') {
-                return hour;
-            } else if (meridiem === 'दनपारां') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'सांजे') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'राती';
-            } else if (hour < 12) {
-                return 'सकाळीं';
-            } else if (hour < 16) {
-                return 'दनपारां';
-            } else if (hour < 20) {
-                return 'सांजे';
-            } else {
-                return 'राती';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['thoddea sekondamni', 'thodde sekond'],
-            ss: [number + ' sekondamni', number + ' sekond'],
-            m: ['eka mintan', 'ek minut'],
-            mm: [number + ' mintamni', number + ' mintam'],
-            h: ['eka voran', 'ek vor'],
-            hh: [number + ' voramni', number + ' voram'],
-            d: ['eka disan', 'ek dis'],
-            dd: [number + ' disamni', number + ' dis'],
-            M: ['eka mhoinean', 'ek mhoino'],
-            MM: [number + ' mhoineamni', number + ' mhoine'],
-            y: ['eka vorsan', 'ek voros'],
-            yy: [number + ' vorsamni', number + ' vorsam'],
-        };
-        return isFuture ? format[key][0] : format[key][1];
-    }
-
-    hooks.defineLocale('gom-latn', {
-        months: {
-            standalone:
-                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
-                    '_'
-                ),
-            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
-                '_'
-            ),
-            isFormat: /MMMM(\s)+D[oD]?/,
-        },
-        monthsShort:
-            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
-        monthsParseExact: true,
-        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
-        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
-        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'A h:mm [vazta]',
-            LTS: 'A h:mm:ss [vazta]',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY A h:mm [vazta]',
-            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
-            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
-        },
-        calendar: {
-            sameDay: '[Aiz] LT',
-            nextDay: '[Faleam] LT',
-            nextWeek: '[Fuddlo] dddd[,] LT',
-            lastDay: '[Kal] LT',
-            lastWeek: '[Fattlo] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s',
-            past: '%s adim',
-            s: processRelativeTime$6,
-            ss: processRelativeTime$6,
-            m: processRelativeTime$6,
-            mm: processRelativeTime$6,
-            h: processRelativeTime$6,
-            hh: processRelativeTime$6,
-            d: processRelativeTime$6,
-            dd: processRelativeTime$6,
-            M: processRelativeTime$6,
-            MM: processRelativeTime$6,
-            y: processRelativeTime$6,
-            yy: processRelativeTime$6,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                // the ordinal 'er' only applies to day of the month
-                case 'D':
-                    return number + 'er';
-                default:
-                case 'M':
-                case 'Q':
-                case 'DDD':
-                case 'd':
-                case 'w':
-                case 'W':
-                    return number;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week
-            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-        },
-        meridiemParse: /rati|sokallim|donparam|sanje/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'rati') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'sokallim') {
-                return hour;
-            } else if (meridiem === 'donparam') {
-                return hour > 12 ? hour : hour + 12;
-            } else if (meridiem === 'sanje') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'rati';
-            } else if (hour < 12) {
-                return 'sokallim';
-            } else if (hour < 16) {
-                return 'donparam';
-            } else if (hour < 20) {
-                return 'sanje';
-            } else {
-                return 'rati';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$8 = {
-            1: '૧',
-            2: '૨',
-            3: '૩',
-            4: '૪',
-            5: '૫',
-            6: '૬',
-            7: '૭',
-            8: '૮',
-            9: '૯',
-            0: '૦',
-        },
-        numberMap$7 = {
-            '૧': '1',
-            '૨': '2',
-            '૩': '3',
-            '૪': '4',
-            '૫': '5',
-            '૬': '6',
-            '૭': '7',
-            '૮': '8',
-            '૯': '9',
-            '૦': '0',
-        };
-
-    hooks.defineLocale('gu', {
-        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
-            '_'
-        ),
-        monthsShort:
-            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
-            '_'
-        ),
-        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
-        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm વાગ્યે',
-            LTS: 'A h:mm:ss વાગ્યે',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
-        },
-        calendar: {
-            sameDay: '[આજ] LT',
-            nextDay: '[કાલે] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ગઇકાલે] LT',
-            lastWeek: '[પાછલા] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s મા',
-            past: '%s પહેલા',
-            s: 'અમુક પળો',
-            ss: '%d સેકંડ',
-            m: 'એક મિનિટ',
-            mm: '%d મિનિટ',
-            h: 'એક કલાક',
-            hh: '%d કલાક',
-            d: 'એક દિવસ',
-            dd: '%d દિવસ',
-            M: 'એક મહિનો',
-            MM: '%d મહિનો',
-            y: 'એક વર્ષ',
-            yy: '%d વર્ષ',
-        },
-        preparse: function (string) {
-            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
-                return numberMap$7[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$8[match];
-            });
-        },
-        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
-        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'રાત') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'સવાર') {
-                return hour;
-            } else if (meridiem === 'બપોર') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'સાંજ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'રાત';
-            } else if (hour < 10) {
-                return 'સવાર';
-            } else if (hour < 17) {
-                return 'બપોર';
-            } else if (hour < 20) {
-                return 'સાંજ';
-            } else {
-                return 'રાત';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('he', {
-        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
-            '_'
-        ),
-        monthsShort:
-            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
-        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
-        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
-        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [ב]MMMM YYYY',
-            LLL: 'D [ב]MMMM YYYY HH:mm',
-            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[היום ב־]LT',
-            nextDay: '[מחר ב־]LT',
-            nextWeek: 'dddd [בשעה] LT',
-            lastDay: '[אתמול ב־]LT',
-            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'בעוד %s',
-            past: 'לפני %s',
-            s: 'מספר שניות',
-            ss: '%d שניות',
-            m: 'דקה',
-            mm: '%d דקות',
-            h: 'שעה',
-            hh: function (number) {
-                if (number === 2) {
-                    return 'שעתיים';
-                }
-                return number + ' שעות';
-            },
-            d: 'יום',
-            dd: function (number) {
-                if (number === 2) {
-                    return 'יומיים';
-                }
-                return number + ' ימים';
-            },
-            M: 'חודש',
-            MM: function (number) {
-                if (number === 2) {
-                    return 'חודשיים';
-                }
-                return number + ' חודשים';
-            },
-            y: 'שנה',
-            yy: function (number) {
-                if (number === 2) {
-                    return 'שנתיים';
-                } else if (number % 10 === 0 && number !== 10) {
-                    return number + ' שנה';
-                }
-                return number + ' שנים';
-            },
-        },
-        meridiemParse:
-            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
-        isPM: function (input) {
-            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 5) {
-                return 'לפנות בוקר';
-            } else if (hour < 10) {
-                return 'בבוקר';
-            } else if (hour < 12) {
-                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
-            } else if (hour < 18) {
-                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
-            } else {
-                return 'בערב';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$9 = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$8 = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        },
-        monthsParse$7 = [
-            /^जन/i,
-            /^फ़र|फर/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सितं|सित/i,
-            /^अक्टू/i,
-            /^नव|नवं/i,
-            /^दिसं|दिस/i,
-        ],
-        shortMonthsParse = [
-            /^जन/i,
-            /^फ़र/i,
-            /^मार्च/i,
-            /^अप्रै/i,
-            /^मई/i,
-            /^जून/i,
-            /^जुल/i,
-            /^अग/i,
-            /^सित/i,
-            /^अक्टू/i,
-            /^नव/i,
-            /^दिस/i,
-        ];
-
-    hooks.defineLocale('hi', {
-        months: {
-            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
-                '_'
-            ),
-            standalone:
-                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
-        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm बजे',
-            LTS: 'A h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
-        },
-
-        monthsParse: monthsParse$7,
-        longMonthsParse: monthsParse$7,
-        shortMonthsParse: shortMonthsParse,
-
-        monthsRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsShortRegex:
-            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-        monthsStrictRegex:
-            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
-
-        monthsShortStrictRegex:
-            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
-
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[कल] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[कल] LT',
-            lastWeek: '[पिछले] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s में',
-            past: '%s पहले',
-            s: 'कुछ ही क्षण',
-            ss: '%d सेकंड',
-            m: 'एक मिनट',
-            mm: '%d मिनट',
-            h: 'एक घंटा',
-            hh: '%d घंटे',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महीने',
-            MM: '%d महीने',
-            y: 'एक वर्ष',
-            yy: '%d वर्ष',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$8[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$9[match];
-            });
-        },
-        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-        meridiemParse: /रात|सुबह|दोपहर|शाम/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'रात') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'सुबह') {
-                return hour;
-            } else if (meridiem === 'दोपहर') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'शाम') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'रात';
-            } else if (hour < 10) {
-                return 'सुबह';
-            } else if (hour < 17) {
-                return 'दोपहर';
-            } else if (hour < 20) {
-                return 'शाम';
-            } else {
-                return 'रात';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function translate$3(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                if (number === 1) {
-                    result += 'sekunda';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sekunde';
-                } else {
-                    result += 'sekundi';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-            case 'mm':
-                if (number === 1) {
-                    result += 'minuta';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'minute';
-                } else {
-                    result += 'minuta';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'jedan sat' : 'jednog sata';
-            case 'hh':
-                if (number === 1) {
-                    result += 'sat';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'sata';
-                } else {
-                    result += 'sati';
-                }
-                return result;
-            case 'dd':
-                if (number === 1) {
-                    result += 'dan';
-                } else {
-                    result += 'dana';
-                }
-                return result;
-            case 'MM':
-                if (number === 1) {
-                    result += 'mjesec';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'mjeseca';
-                } else {
-                    result += 'mjeseci';
-                }
-                return result;
-            case 'yy':
-                if (number === 1) {
-                    result += 'godina';
-                } else if (number === 2 || number === 3 || number === 4) {
-                    result += 'godine';
-                } else {
-                    result += 'godina';
-                }
-                return result;
-        }
-    }
-
-    hooks.defineLocale('hr', {
-        months: {
-            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
-                '_'
-            ),
-            standalone:
-                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
-                    '_'
-                ),
-        },
-        monthsShort:
-            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM YYYY',
-            LLL: 'Do MMMM YYYY H:mm',
-            LLLL: 'dddd, Do MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[jučer u] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prošlu] [nedjelju] [u] LT';
-                    case 3:
-                        return '[prošlu] [srijedu] [u] LT';
-                    case 6:
-                        return '[prošle] [subote] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prošli] dddd [u] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'par sekundi',
-            ss: translate$3,
-            m: translate$3,
-            mm: translate$3,
-            h: translate$3,
-            hh: translate$3,
-            d: 'dan',
-            dd: translate$3,
-            M: 'mjesec',
-            MM: translate$3,
-            y: 'godinu',
-            yy: translate$3,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var weekEndings =
-        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-    function translate$4(number, withoutSuffix, key, isFuture) {
-        var num = number;
-        switch (key) {
-            case 's':
-                return isFuture || withoutSuffix
-                    ? 'néhány másodperc'
-                    : 'néhány másodperce';
-            case 'ss':
-                return num + (isFuture || withoutSuffix)
-                    ? ' másodperc'
-                    : ' másodperce';
-            case 'm':
-                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'mm':
-                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
-            case 'h':
-                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'hh':
-                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
-            case 'd':
-                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'dd':
-                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
-            case 'M':
-                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'MM':
-                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-            case 'y':
-                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
-            case 'yy':
-                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
-        }
-        return '';
-    }
-    function week(isFuture) {
-        return (
-            (isFuture ? '' : '[múlt] ') +
-            '[' +
-            weekEndings[this.day()] +
-            '] LT[-kor]'
-        );
-    }
-
-    hooks.defineLocale('hu', {
-        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
-        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
-        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY. MMMM D.',
-            LLL: 'YYYY. MMMM D. H:mm',
-            LLLL: 'YYYY. MMMM D., dddd H:mm',
-        },
-        meridiemParse: /de|du/i,
-        isPM: function (input) {
-            return input.charAt(1).toLowerCase() === 'u';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower === true ? 'de' : 'DE';
-            } else {
-                return isLower === true ? 'du' : 'DU';
-            }
-        },
-        calendar: {
-            sameDay: '[ma] LT[-kor]',
-            nextDay: '[holnap] LT[-kor]',
-            nextWeek: function () {
-                return week.call(this, true);
-            },
-            lastDay: '[tegnap] LT[-kor]',
-            lastWeek: function () {
-                return week.call(this, false);
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s múlva',
-            past: '%s',
-            s: translate$4,
-            ss: translate$4,
-            m: translate$4,
-            mm: translate$4,
-            h: translate$4,
-            hh: translate$4,
-            d: translate$4,
-            dd: translate$4,
-            M: translate$4,
-            MM: translate$4,
-            y: translate$4,
-            yy: translate$4,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('hy-am', {
-        months: {
-            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
-                '_'
-            ),
-            standalone:
-                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
-        weekdays:
-            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
-                '_'
-            ),
-        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY թ.',
-            LLL: 'D MMMM YYYY թ., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
-        },
-        calendar: {
-            sameDay: '[այսօր] LT',
-            nextDay: '[վաղը] LT',
-            lastDay: '[երեկ] LT',
-            nextWeek: function () {
-                return 'dddd [օրը ժամը] LT';
-            },
-            lastWeek: function () {
-                return '[անցած] dddd [օրը ժամը] LT';
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s հետո',
-            past: '%s առաջ',
-            s: 'մի քանի վայրկյան',
-            ss: '%d վայրկյան',
-            m: 'րոպե',
-            mm: '%d րոպե',
-            h: 'ժամ',
-            hh: '%d ժամ',
-            d: 'օր',
-            dd: '%d օր',
-            M: 'ամիս',
-            MM: '%d ամիս',
-            y: 'տարի',
-            yy: '%d տարի',
-        },
-        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
-        isPM: function (input) {
-            return /^(ցերեկվա|երեկոյան)$/.test(input);
-        },
-        meridiem: function (hour) {
-            if (hour < 4) {
-                return 'գիշերվա';
-            } else if (hour < 12) {
-                return 'առավոտվա';
-            } else if (hour < 17) {
-                return 'ցերեկվա';
-            } else {
-                return 'երեկոյան';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'DDD':
-                case 'w':
-                case 'W':
-                case 'DDDo':
-                    if (number === 1) {
-                        return number + '-ին';
-                    }
-                    return number + '-րդ';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('id', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
-        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|siang|sore|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'siang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sore' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'siang';
-            } else if (hours < 19) {
-                return 'sore';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Besok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kemarin pukul] LT',
-            lastWeek: 'dddd [lalu pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lalu',
-            s: 'beberapa detik',
-            ss: '%d detik',
-            m: 'semenit',
-            mm: '%d menit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$2(n) {
-        if (n % 100 === 11) {
-            return true;
-        } else if (n % 10 === 1) {
-            return false;
-        }
-        return true;
-    }
-    function translate$5(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nokkrar sekúndur'
-                    : 'nokkrum sekúndum';
-            case 'ss':
-                if (plural$2(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
-                    );
-                }
-                return result + 'sekúnda';
-            case 'm':
-                return withoutSuffix ? 'mínúta' : 'mínútu';
-            case 'mm':
-                if (plural$2(number)) {
-                    return (
-                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
-                    );
-                } else if (withoutSuffix) {
-                    return result + 'mínúta';
-                }
-                return result + 'mínútu';
-            case 'hh':
-                if (plural$2(number)) {
-                    return (
-                        result +
-                        (withoutSuffix || isFuture
-                            ? 'klukkustundir'
-                            : 'klukkustundum')
-                    );
-                }
-                return result + 'klukkustund';
-            case 'd':
-                if (withoutSuffix) {
-                    return 'dagur';
-                }
-                return isFuture ? 'dag' : 'degi';
-            case 'dd':
-                if (plural$2(number)) {
-                    if (withoutSuffix) {
-                        return result + 'dagar';
-                    }
-                    return result + (isFuture ? 'daga' : 'dögum');
-                } else if (withoutSuffix) {
-                    return result + 'dagur';
-                }
-                return result + (isFuture ? 'dag' : 'degi');
-            case 'M':
-                if (withoutSuffix) {
-                    return 'mánuður';
-                }
-                return isFuture ? 'mánuð' : 'mánuði';
-            case 'MM':
-                if (plural$2(number)) {
-                    if (withoutSuffix) {
-                        return result + 'mánuðir';
-                    }
-                    return result + (isFuture ? 'mánuði' : 'mánuðum');
-                } else if (withoutSuffix) {
-                    return result + 'mánuður';
-                }
-                return result + (isFuture ? 'mánuð' : 'mánuði');
-            case 'y':
-                return withoutSuffix || isFuture ? 'ár' : 'ári';
-            case 'yy':
-                if (plural$2(number)) {
-                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
-                }
-                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
-        }
-    }
-
-    hooks.defineLocale('is', {
-        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
-        weekdays:
-            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
-                '_'
-            ),
-        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
-        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
-        },
-        calendar: {
-            sameDay: '[í dag kl.] LT',
-            nextDay: '[á morgun kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[í gær kl.] LT',
-            lastWeek: '[síðasta] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'eftir %s',
-            past: 'fyrir %s síðan',
-            s: translate$5,
-            ss: translate$5,
-            m: translate$5,
-            mm: translate$5,
-            h: 'klukkustund',
-            hh: translate$5,
-            d: translate$5,
-            dd: translate$5,
-            M: translate$5,
-            MM: translate$5,
-            y: translate$5,
-            yy: translate$5,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('it-ch', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Oggi alle] LT',
-            nextDay: '[Domani alle] LT',
-            nextWeek: 'dddd [alle] LT',
-            lastDay: '[Ieri alle] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[la scorsa] dddd [alle] LT';
-                    default:
-                        return '[lo scorso] dddd [alle] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
-            },
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('it', {
-        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-            '_'
-        ),
-        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-            '_'
-        ),
-        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: function () {
-                return (
-                    '[Oggi a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextDay: function () {
-                return (
-                    '[Domani a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            nextWeek: function () {
-                return (
-                    'dddd [a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastDay: function () {
-                return (
-                    '[Ieri a' +
-                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                    ']LT'
-                );
-            },
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return (
-                            '[La scorsa] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                    default:
-                        return (
-                            '[Lo scorso] dddd [a' +
-                            (this.hours() > 1
-                                ? 'lle '
-                                : this.hours() === 0
-                                  ? ' '
-                                  : "ll'") +
-                            ']LT'
-                        );
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'tra %s',
-            past: '%s fa',
-            s: 'alcuni secondi',
-            ss: '%d secondi',
-            m: 'un minuto',
-            mm: '%d minuti',
-            h: "un'ora",
-            hh: '%d ore',
-            d: 'un giorno',
-            dd: '%d giorni',
-            w: 'una settimana',
-            ww: '%d settimane',
-            M: 'un mese',
-            MM: '%d mesi',
-            y: 'un anno',
-            yy: '%d anni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ja', {
-        eras: [
-            {
-                since: '2019-05-01',
-                offset: 1,
-                name: '令和',
-                narrow: '㋿',
-                abbr: 'R',
-            },
-            {
-                since: '1989-01-08',
-                until: '2019-04-30',
-                offset: 1,
-                name: '平成',
-                narrow: '㍻',
-                abbr: 'H',
-            },
-            {
-                since: '1926-12-25',
-                until: '1989-01-07',
-                offset: 1,
-                name: '昭和',
-                narrow: '㍼',
-                abbr: 'S',
-            },
-            {
-                since: '1912-07-30',
-                until: '1926-12-24',
-                offset: 1,
-                name: '大正',
-                narrow: '㍽',
-                abbr: 'T',
-            },
-            {
-                since: '1873-01-01',
-                until: '1912-07-29',
-                offset: 6,
-                name: '明治',
-                narrow: '㍾',
-                abbr: 'M',
-            },
-            {
-                since: '0001-01-01',
-                until: '1873-12-31',
-                offset: 1,
-                name: '西暦',
-                narrow: 'AD',
-                abbr: 'AD',
-            },
-            {
-                since: '0000-12-31',
-                until: -Infinity,
-                offset: 1,
-                name: '紀元前',
-                narrow: 'BC',
-                abbr: 'BC',
-            },
-        ],
-        eraYearOrdinalRegex: /(元|\d+)年/,
-        eraYearOrdinalParse: function (input, match) {
-            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
-        },
-        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
-        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
-        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日 dddd HH:mm',
-            l: 'YYYY/MM/DD',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日(ddd) HH:mm',
-        },
-        meridiemParse: /午前|午後/i,
-        isPM: function (input) {
-            return input === '午後';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return '午前';
-            } else {
-                return '午後';
-            }
-        },
-        calendar: {
-            sameDay: '[今日] LT',
-            nextDay: '[明日] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[来週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            lastDay: '[昨日] LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[先週]dddd LT';
-                } else {
-                    return 'dddd LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}日/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'y':
-                    return number === 1 ? '元年' : number + '年';
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '数秒',
-            ss: '%d秒',
-            m: '1分',
-            mm: '%d分',
-            h: '1時間',
-            hh: '%d時間',
-            d: '1日',
-            dd: '%d日',
-            M: '1ヶ月',
-            MM: '%dヶ月',
-            y: '1年',
-            yy: '%d年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('jv', {
-        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
-        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
-        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
-        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /enjing|siyang|sonten|ndalu/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'enjing') {
-                return hour;
-            } else if (meridiem === 'siyang') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'enjing';
-            } else if (hours < 15) {
-                return 'siyang';
-            } else if (hours < 19) {
-                return 'sonten';
-            } else {
-                return 'ndalu';
-            }
-        },
-        calendar: {
-            sameDay: '[Dinten puniko pukul] LT',
-            nextDay: '[Mbenjang pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kala wingi pukul] LT',
-            lastWeek: 'dddd [kepengker pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'wonten ing %s',
-            past: '%s ingkang kepengker',
-            s: 'sawetawis detik',
-            ss: '%d detik',
-            m: 'setunggal menit',
-            mm: '%d menit',
-            h: 'setunggal jam',
-            hh: '%d jam',
-            d: 'sedinten',
-            dd: '%d dinten',
-            M: 'sewulan',
-            MM: '%d wulan',
-            y: 'setaun',
-            yy: '%d taun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ka', {
-        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
-            '_'
-        ),
-        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
-        weekdays: {
-            standalone:
-                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
-                    '_'
-                ),
-            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
-                '_'
-            ),
-            isFormat: /(წინა|შემდეგ)/,
-        },
-        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
-        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[დღეს] LT[-ზე]',
-            nextDay: '[ხვალ] LT[-ზე]',
-            lastDay: '[გუშინ] LT[-ზე]',
-            nextWeek: '[შემდეგ] dddd LT[-ზე]',
-            lastWeek: '[წინა] dddd LT-ზე',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: function (s) {
-                return s.replace(
-                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
-                    function ($0, $1, $2) {
-                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
-                    }
-                );
-            },
-            past: function (s) {
-                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
-                    return s.replace(/(ი|ე)$/, 'ის წინ');
-                }
-                if (/წელი/.test(s)) {
-                    return s.replace(/წელი$/, 'წლის წინ');
-                }
-                return s;
-            },
-            s: 'რამდენიმე წამი',
-            ss: '%d წამი',
-            m: 'წუთი',
-            mm: '%d წუთი',
-            h: 'საათი',
-            hh: '%d საათი',
-            d: 'დღე',
-            dd: '%d დღე',
-            M: 'თვე',
-            MM: '%d თვე',
-            y: 'წელი',
-            yy: '%d წელი',
-        },
-        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
-        ordinal: function (number) {
-            if (number === 0) {
-                return number;
-            }
-            if (number === 1) {
-                return number + '-ლი';
-            }
-            if (
-                number < 20 ||
-                (number <= 100 && number % 20 === 0) ||
-                number % 100 === 0
-            ) {
-                return 'მე-' + number;
-            }
-            return number + '-ე';
-        },
-        week: {
-            dow: 1,
-            doy: 7,
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$1 = {
-        0: '-ші',
-        1: '-ші',
-        2: '-ші',
-        3: '-ші',
-        4: '-ші',
-        5: '-ші',
-        6: '-шы',
-        7: '-ші',
-        8: '-ші',
-        9: '-шы',
-        10: '-шы',
-        20: '-шы',
-        30: '-шы',
-        40: '-шы',
-        50: '-ші',
-        60: '-шы',
-        70: '-ші',
-        80: '-ші',
-        90: '-шы',
-        100: '-ші',
-    };
-
-    hooks.defineLocale('kk', {
-        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
-            '_'
-        ),
-        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
-        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
-            '_'
-        ),
-        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
-        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгін сағат] LT',
-            nextDay: '[Ертең сағат] LT',
-            nextWeek: 'dddd [сағат] LT',
-            lastDay: '[Кеше сағат] LT',
-            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ішінде',
-            past: '%s бұрын',
-            s: 'бірнеше секунд',
-            ss: '%d секунд',
-            m: 'бір минут',
-            mm: '%d минут',
-            h: 'бір сағат',
-            hh: '%d сағат',
-            d: 'бір күн',
-            dd: '%d күн',
-            M: 'бір ай',
-            MM: '%d ай',
-            y: 'бір жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$a = {
-            1: '១',
-            2: '២',
-            3: '៣',
-            4: '៤',
-            5: '៥',
-            6: '៦',
-            7: '៧',
-            8: '៨',
-            9: '៩',
-            0: '០',
-        },
-        numberMap$9 = {
-            '១': '1',
-            '២': '2',
-            '៣': '3',
-            '៤': '4',
-            '៥': '5',
-            '៦': '6',
-            '៧': '7',
-            '៨': '8',
-            '៩': '9',
-            '០': '0',
-        };
-
-    hooks.defineLocale('km', {
-        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-            '_'
-        ),
-        monthsShort:
-            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-                '_'
-            ),
-        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
-        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ព្រឹក|ល្ងាច/,
-        isPM: function (input) {
-            return input === 'ល្ងាច';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ព្រឹក';
-            } else {
-                return 'ល្ងាច';
-            }
-        },
-        calendar: {
-            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
-            nextDay: '[ស្អែក ម៉ោង] LT',
-            nextWeek: 'dddd [ម៉ោង] LT',
-            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
-            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sទៀត',
-            past: '%sមុន',
-            s: 'ប៉ុន្មានវិនាទី',
-            ss: '%d វិនាទី',
-            m: 'មួយនាទី',
-            mm: '%d នាទី',
-            h: 'មួយម៉ោង',
-            hh: '%d ម៉ោង',
-            d: 'មួយថ្ងៃ',
-            dd: '%d ថ្ងៃ',
-            M: 'មួយខែ',
-            MM: '%d ខែ',
-            y: 'មួយឆ្នាំ',
-            yy: '%d ឆ្នាំ',
-        },
-        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
-        ordinal: 'ទី%d',
-        preparse: function (string) {
-            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
-                return numberMap$9[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$a[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$b = {
-            1: '೧',
-            2: '೨',
-            3: '೩',
-            4: '೪',
-            5: '೫',
-            6: '೬',
-            7: '೭',
-            8: '೮',
-            9: '೯',
-            0: '೦',
-        },
-        numberMap$a = {
-            '೧': '1',
-            '೨': '2',
-            '೩': '3',
-            '೪': '4',
-            '೫': '5',
-            '೬': '6',
-            '೭': '7',
-            '೮': '8',
-            '೯': '9',
-            '೦': '0',
-        };
-
-    hooks.defineLocale('kn', {
-        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
-            '_'
-        ),
-        monthsShort:
-            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
-        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[ಇಂದು] LT',
-            nextDay: '[ನಾಳೆ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ನಿನ್ನೆ] LT',
-            lastWeek: '[ಕೊನೆಯ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ನಂತರ',
-            past: '%s ಹಿಂದೆ',
-            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
-            ss: '%d ಸೆಕೆಂಡುಗಳು',
-            m: 'ಒಂದು ನಿಮಿಷ',
-            mm: '%d ನಿಮಿಷ',
-            h: 'ಒಂದು ಗಂಟೆ',
-            hh: '%d ಗಂಟೆ',
-            d: 'ಒಂದು ದಿನ',
-            dd: '%d ದಿನ',
-            M: 'ಒಂದು ತಿಂಗಳು',
-            MM: '%d ತಿಂಗಳು',
-            y: 'ಒಂದು ವರ್ಷ',
-            yy: '%d ವರ್ಷ',
-        },
-        preparse: function (string) {
-            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
-                return numberMap$a[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$b[match];
-            });
-        },
-        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ರಾತ್ರಿ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
-                return hour;
-            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ಸಂಜೆ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ರಾತ್ರಿ';
-            } else if (hour < 10) {
-                return 'ಬೆಳಿಗ್ಗೆ';
-            } else if (hour < 17) {
-                return 'ಮಧ್ಯಾಹ್ನ';
-            } else if (hour < 20) {
-                return 'ಸಂಜೆ';
-            } else {
-                return 'ರಾತ್ರಿ';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
-        ordinal: function (number) {
-            return number + 'ನೇ';
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ko', {
-        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
-        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
-            '_'
-        ),
-        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
-        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
-        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'YYYY.MM.DD.',
-            LL: 'YYYY년 MMMM D일',
-            LLL: 'YYYY년 MMMM D일 A h:mm',
-            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
-            l: 'YYYY.MM.DD.',
-            ll: 'YYYY년 MMMM D일',
-            lll: 'YYYY년 MMMM D일 A h:mm',
-            llll: 'YYYY년 MMMM D일 dddd A h:mm',
-        },
-        calendar: {
-            sameDay: '오늘 LT',
-            nextDay: '내일 LT',
-            nextWeek: 'dddd LT',
-            lastDay: '어제 LT',
-            lastWeek: '지난주 dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s 후',
-            past: '%s 전',
-            s: '몇 초',
-            ss: '%d초',
-            m: '1분',
-            mm: '%d분',
-            h: '한 시간',
-            hh: '%d시간',
-            d: '하루',
-            dd: '%d일',
-            M: '한 달',
-            MM: '%d달',
-            y: '일 년',
-            yy: '%d년',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '일';
-                case 'M':
-                    return number + '월';
-                case 'w':
-                case 'W':
-                    return number + '주';
-                default:
-                    return number;
-            }
-        },
-        meridiemParse: /오전|오후/,
-        isPM: function (token) {
-            return token === '오후';
-        },
-        meridiem: function (hour, minute, isUpper) {
-            return hour < 12 ? '오전' : '오후';
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$7(num, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['çend sanîye', 'çend sanîyeyan'],
-            ss: [num + ' sanîye', num + ' sanîyeyan'],
-            m: ['deqîqeyek', 'deqîqeyekê'],
-            mm: [num + ' deqîqe', num + ' deqîqeyan'],
-            h: ['saetek', 'saetekê'],
-            hh: [num + ' saet', num + ' saetan'],
-            d: ['rojek', 'rojekê'],
-            dd: [num + ' roj', num + ' rojan'],
-            w: ['hefteyek', 'hefteyekê'],
-            ww: [num + ' hefte', num + ' hefteyan'],
-            M: ['mehek', 'mehekê'],
-            MM: [num + ' meh', num + ' mehan'],
-            y: ['salek', 'salekê'],
-            yy: [num + ' sal', num + ' salan'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    // function obliqueNumSuffix(num) {
-    //     if(num.includes(':'))
-    //         num = parseInt(num.split(':')[0]);
-    //     else
-    //         num = parseInt(num);
-    //     return num == 0 || num % 10 == 1 ? 'ê'
-    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
-    // }
-    function ezafeNumSuffix(num) {
-        num = '' + num;
-        var l = num.substring(num.length - 1),
-            ll = num.length > 1 ? num.substring(num.length - 2) : '';
-        if (
-            !(ll == 12 || ll == 13) &&
-            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
-        )
-            return 'yê';
-        return 'ê';
-    }
-
-    hooks.defineLocale('ku-kmr', {
-        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
-        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
-        // But the names below are more well known and handy
-        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
-            '_'
-        ),
-        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
-        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
-        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'bn' : 'BN';
-            } else {
-                return isLower ? 'pn' : 'PN';
-            }
-        },
-        meridiemParse: /bn|BN|pn|PN/,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'Do MMMM[a] YYYY[an]',
-            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
-            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
-            ll: 'Do MMM[.] YYYY[an]',
-            lll: 'Do MMM[.] YYYY[an] HH:mm',
-            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Îro di saet] LT [de]',
-            nextDay: '[Sibê di saet] LT [de]',
-            nextWeek: 'dddd [di saet] LT [de]',
-            lastDay: '[Duh di saet] LT [de]',
-            lastWeek: 'dddd[a borî di saet] LT [de]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'di %s de',
-            past: 'berî %s',
-            s: processRelativeTime$7,
-            ss: processRelativeTime$7,
-            m: processRelativeTime$7,
-            mm: processRelativeTime$7,
-            h: processRelativeTime$7,
-            hh: processRelativeTime$7,
-            d: processRelativeTime$7,
-            dd: processRelativeTime$7,
-            w: processRelativeTime$7,
-            ww: processRelativeTime$7,
-            M: processRelativeTime$7,
-            MM: processRelativeTime$7,
-            y: processRelativeTime$7,
-            yy: processRelativeTime$7,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
-        ordinal: function (num, period) {
-            var p = period.toLowerCase();
-            if (p.includes('w') || p.includes('m')) return num + '.';
-
-            return num + ezafeNumSuffix(num);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$c = {
-            1: '١',
-            2: '٢',
-            3: '٣',
-            4: '٤',
-            5: '٥',
-            6: '٦',
-            7: '٧',
-            8: '٨',
-            9: '٩',
-            0: '٠',
-        },
-        numberMap$b = {
-            '١': '1',
-            '٢': '2',
-            '٣': '3',
-            '٤': '4',
-            '٥': '5',
-            '٦': '6',
-            '٧': '7',
-            '٨': '8',
-            '٩': '9',
-            '٠': '0',
-        },
-        months$8 = [
-            'کانونی دووەم',
-            'شوبات',
-            'ئازار',
-            'نیسان',
-            'ئایار',
-            'حوزەیران',
-            'تەمموز',
-            'ئاب',
-            'ئەیلوول',
-            'تشرینی یەكەم',
-            'تشرینی دووەم',
-            'كانونی یەکەم',
-        ];
-
-    hooks.defineLocale('ku', {
-        months: months$8,
-        monthsShort: months$8,
-        weekdays:
-            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
-                '_'
-            ),
-        weekdaysShort:
-            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
-        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ئێواره‌|به‌یانی/,
-        isPM: function (input) {
-            return /ئێواره‌/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'به‌یانی';
-            } else {
-                return 'ئێواره‌';
-            }
-        },
-        calendar: {
-            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
-            nextDay: '[به‌یانی كاتژمێر] LT',
-            nextWeek: 'dddd [كاتژمێر] LT',
-            lastDay: '[دوێنێ كاتژمێر] LT',
-            lastWeek: 'dddd [كاتژمێر] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'له‌ %s',
-            past: '%s',
-            s: 'چه‌ند چركه‌یه‌ك',
-            ss: 'چركه‌ %d',
-            m: 'یه‌ك خوله‌ك',
-            mm: '%d خوله‌ك',
-            h: 'یه‌ك كاتژمێر',
-            hh: '%d كاتژمێر',
-            d: 'یه‌ك ڕۆژ',
-            dd: '%d ڕۆژ',
-            M: 'یه‌ك مانگ',
-            MM: '%d مانگ',
-            y: 'یه‌ك ساڵ',
-            yy: '%d ساڵ',
-        },
-        preparse: function (string) {
-            return string
-                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                    return numberMap$b[match];
-                })
-                .replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string
-                .replace(/\d/g, function (match) {
-                    return symbolMap$c[match];
-                })
-                .replace(/,/g, '،');
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$2 = {
-        0: '-чү',
-        1: '-чи',
-        2: '-чи',
-        3: '-чү',
-        4: '-чү',
-        5: '-чи',
-        6: '-чы',
-        7: '-чи',
-        8: '-чи',
-        9: '-чу',
-        10: '-чу',
-        20: '-чы',
-        30: '-чу',
-        40: '-чы',
-        50: '-чү',
-        60: '-чы',
-        70: '-чи',
-        80: '-чи',
-        90: '-чу',
-        100: '-чү',
-    };
-
-    hooks.defineLocale('ky', {
-        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
-            '_'
-        ),
-        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
-            '_'
-        ),
-        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
-        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бүгүн саат] LT',
-            nextDay: '[Эртең саат] LT',
-            nextWeek: 'dddd [саат] LT',
-            lastDay: '[Кечээ саат] LT',
-            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ичинде',
-            past: '%s мурун',
-            s: 'бирнече секунд',
-            ss: '%d секунд',
-            m: 'бир мүнөт',
-            mm: '%d мүнөт',
-            h: 'бир саат',
-            hh: '%d саат',
-            d: 'бир күн',
-            dd: '%d күн',
-            M: 'бир ай',
-            MM: '%d ай',
-            y: 'бир жыл',
-            yy: '%d жыл',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
-        var format = {
-            m: ['eng Minutt', 'enger Minutt'],
-            h: ['eng Stonn', 'enger Stonn'],
-            d: ['een Dag', 'engem Dag'],
-            M: ['ee Mount', 'engem Mount'],
-            y: ['ee Joer', 'engem Joer'],
-        };
-        return withoutSuffix ? format[key][0] : format[key][1];
-    }
-    function processFutureTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'a ' + string;
-        }
-        return 'an ' + string;
-    }
-    function processPastTime(string) {
-        var number = string.substr(0, string.indexOf(' '));
-        if (eifelerRegelAppliesToNumber(number)) {
-            return 'viru ' + string;
-        }
-        return 'virun ' + string;
-    }
-    /**
-     * Returns true if the word before the given number loses the '-n' ending.
-     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
-     *
-     * @param number {integer}
-     * @returns {boolean}
-     */
-    function eifelerRegelAppliesToNumber(number) {
-        number = parseInt(number, 10);
-        if (isNaN(number)) {
-            return false;
-        }
-        if (number < 0) {
-            // Negative Number --> always true
-            return true;
-        } else if (number < 10) {
-            // Only 1 digit
-            if (4 <= number && number <= 7) {
-                return true;
-            }
-            return false;
-        } else if (number < 100) {
-            // 2 digits
-            var lastDigit = number % 10,
-                firstDigit = number / 10;
-            if (lastDigit === 0) {
-                return eifelerRegelAppliesToNumber(firstDigit);
-            }
-            return eifelerRegelAppliesToNumber(lastDigit);
-        } else if (number < 10000) {
-            // 3 or 4 digits --> recursively check first digit
-            while (number >= 10) {
-                number = number / 10;
-            }
-            return eifelerRegelAppliesToNumber(number);
-        } else {
-            // Anything larger than 4 digits: recursively check first n-3 digits
-            number = number / 1000;
-            return eifelerRegelAppliesToNumber(number);
-        }
-    }
-
-    hooks.defineLocale('lb', {
-        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-            '_'
-        ),
-        monthsShort:
-            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
-                '_'
-            ),
-        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
-        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm [Auer]',
-            LTS: 'H:mm:ss [Auer]',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm [Auer]',
-            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
-        },
-        calendar: {
-            sameDay: '[Haut um] LT',
-            sameElse: 'L',
-            nextDay: '[Muer um] LT',
-            nextWeek: 'dddd [um] LT',
-            lastDay: '[Gëschter um] LT',
-            lastWeek: function () {
-                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-                switch (this.day()) {
-                    case 2:
-                    case 4:
-                        return '[Leschten] dddd [um] LT';
-                    default:
-                        return '[Leschte] dddd [um] LT';
-                }
-            },
-        },
-        relativeTime: {
-            future: processFutureTime,
-            past: processPastTime,
-            s: 'e puer Sekonnen',
-            ss: '%d Sekonnen',
-            m: processRelativeTime$8,
-            mm: '%d Minutten',
-            h: processRelativeTime$8,
-            hh: '%d Stonnen',
-            d: processRelativeTime$8,
-            dd: '%d Deeg',
-            M: processRelativeTime$8,
-            MM: '%d Méint',
-            y: processRelativeTime$8,
-            yy: '%d Joer',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('lo', {
-        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-                '_'
-            ),
-        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
-        isPM: function (input) {
-            return input === 'ຕອນແລງ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ຕອນເຊົ້າ';
-            } else {
-                return 'ຕອນແລງ';
-            }
-        },
-        calendar: {
-            sameDay: '[ມື້ນີ້ເວລາ] LT',
-            nextDay: '[ມື້ອື່ນເວລາ] LT',
-            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
-            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
-            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ອີກ %s',
-            past: '%sຜ່ານມາ',
-            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
-            ss: '%d ວິນາທີ',
-            m: '1 ນາທີ',
-            mm: '%d ນາທີ',
-            h: '1 ຊົ່ວໂມງ',
-            hh: '%d ຊົ່ວໂມງ',
-            d: '1 ມື້',
-            dd: '%d ມື້',
-            M: '1 ເດືອນ',
-            MM: '%d ເດືອນ',
-            y: '1 ປີ',
-            yy: '%d ປີ',
-        },
-        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
-        ordinal: function (number) {
-            return 'ທີ່' + number;
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var units = {
-        ss: 'sekundė_sekundžių_sekundes',
-        m: 'minutė_minutės_minutę',
-        mm: 'minutės_minučių_minutes',
-        h: 'valanda_valandos_valandą',
-        hh: 'valandos_valandų_valandas',
-        d: 'diena_dienos_dieną',
-        dd: 'dienos_dienų_dienas',
-        M: 'mėnuo_mėnesio_mėnesį',
-        MM: 'mėnesiai_mėnesių_mėnesius',
-        y: 'metai_metų_metus',
-        yy: 'metai_metų_metus',
-    };
-    function translateSeconds(number, withoutSuffix, key, isFuture) {
-        if (withoutSuffix) {
-            return 'kelios sekundės';
-        } else {
-            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
-        }
-    }
-    function translateSingular(number, withoutSuffix, key, isFuture) {
-        return withoutSuffix
-            ? forms(key)[0]
-            : isFuture
-              ? forms(key)[1]
-              : forms(key)[2];
-    }
-    function special(number) {
-        return number % 10 === 0 || (number > 10 && number < 20);
-    }
-    function forms(key) {
-        return units[key].split('_');
-    }
-    function translate$6(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        if (number === 1) {
-            return (
-                result + translateSingular(number, withoutSuffix, key[0], isFuture)
-            );
-        } else if (withoutSuffix) {
-            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
-        } else {
-            if (isFuture) {
-                return result + forms(key)[1];
-            } else {
-                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
-            }
-        }
-    }
-    hooks.defineLocale('lt', {
-        months: {
-            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
-                '_'
-            ),
-            standalone:
-                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
-                    '_'
-                ),
-            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
-        },
-        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
-        weekdays: {
-            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
-                '_'
-            ),
-            standalone:
-                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
-                    '_'
-                ),
-            isFormat: /dddd HH:mm/,
-        },
-        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
-        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY [m.] MMMM D [d.]',
-            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
-            l: 'YYYY-MM-DD',
-            ll: 'YYYY [m.] MMMM D [d.]',
-            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
-        },
-        calendar: {
-            sameDay: '[Šiandien] LT',
-            nextDay: '[Rytoj] LT',
-            nextWeek: 'dddd LT',
-            lastDay: '[Vakar] LT',
-            lastWeek: '[Praėjusį] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'po %s',
-            past: 'prieš %s',
-            s: translateSeconds,
-            ss: translate$6,
-            m: translateSingular,
-            mm: translate$6,
-            h: translateSingular,
-            hh: translate$6,
-            d: translateSingular,
-            dd: translate$6,
-            M: translateSingular,
-            MM: translate$6,
-            y: translateSingular,
-            yy: translate$6,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
-        ordinal: function (number) {
-            return number + '-oji';
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var units$1 = {
-        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
-        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-        h: 'stundas_stundām_stunda_stundas'.split('_'),
-        hh: 'stundas_stundām_stunda_stundas'.split('_'),
-        d: 'dienas_dienām_diena_dienas'.split('_'),
-        dd: 'dienas_dienām_diena_dienas'.split('_'),
-        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-        y: 'gada_gadiem_gads_gadi'.split('_'),
-        yy: 'gada_gadiem_gads_gadi'.split('_'),
-    };
-    /**
-     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
-     */
-    function format$1(forms, number, withoutSuffix) {
-        if (withoutSuffix) {
-            // E.g. "21 minūte", "3 minūtes".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
-        } else {
-            // E.g. "21 minūtes" as in "pēc 21 minūtes".
-            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
-            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
-        }
-    }
-    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
-        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
-    }
-    function relativeTimeWithSingular(number, withoutSuffix, key) {
-        return format$1(units$1[key], number, withoutSuffix);
-    }
-    function relativeSeconds(number, withoutSuffix) {
-        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
-    }
-
-    hooks.defineLocale('lv', {
-        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
-        weekdays:
-            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
-                '_'
-            ),
-        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY.',
-            LL: 'YYYY. [gada] D. MMMM',
-            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
-            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
-        },
-        calendar: {
-            sameDay: '[Šodien pulksten] LT',
-            nextDay: '[Rīt pulksten] LT',
-            nextWeek: 'dddd [pulksten] LT',
-            lastDay: '[Vakar pulksten] LT',
-            lastWeek: '[Pagājušā] dddd [pulksten] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'pēc %s',
-            past: 'pirms %s',
-            s: relativeSeconds,
-            ss: relativeTimeWithPlural$1,
-            m: relativeTimeWithSingular,
-            mm: relativeTimeWithPlural$1,
-            h: relativeTimeWithSingular,
-            hh: relativeTimeWithPlural$1,
-            d: relativeTimeWithSingular,
-            dd: relativeTimeWithPlural$1,
-            M: relativeTimeWithSingular,
-            MM: relativeTimeWithPlural$1,
-            y: relativeTimeWithSingular,
-            yy: relativeTimeWithPlural$1,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekund', 'sekunda', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            dd: ['dan', 'dana', 'dana'],
-            MM: ['mjesec', 'mjeseca', 'mjeseci'],
-            yy: ['godina', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            return number === 1
-                ? wordKey[0]
-                : number >= 2 && number <= 4
-                  ? wordKey[1]
-                  : wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key) {
-            var wordKey = translator.words[key];
-            if (key.length === 1) {
-                return withoutSuffix ? wordKey[0] : wordKey[1];
-            } else {
-                return (
-                    number +
-                    ' ' +
-                    translator.correctGrammaticalCase(number, wordKey)
-                );
-            }
-        },
-    };
-
-    hooks.defineLocale('me', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sjutra u] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedjelju] [u] LT';
-                    case 3:
-                        return '[u] [srijedu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedjelje] [u] LT',
-                    '[prošlog] [ponedjeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srijede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'prije %s',
-            s: 'nekoliko sekundi',
-            ss: translator.translate,
-            m: translator.translate,
-            mm: translator.translate,
-            h: translator.translate,
-            hh: translator.translate,
-            d: 'dan',
-            dd: translator.translate,
-            M: 'mjesec',
-            MM: translator.translate,
-            y: 'godinu',
-            yy: translator.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('mi', {
-        months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
-            '_'
-        ),
-        monthsShort:
-            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
-                '_'
-            ),
-        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
-        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
-        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [i] HH:mm',
-            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i teie mahana, i] LT',
-            nextDay: '[apopo i] LT',
-            nextWeek: 'dddd [i] LT',
-            lastDay: '[inanahi i] LT',
-            lastWeek: 'dddd [whakamutunga i] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'i roto i %s',
-            past: '%s i mua',
-            s: 'te hēkona ruarua',
-            ss: '%d hēkona',
-            m: 'he meneti',
-            mm: '%d meneti',
-            h: 'te haora',
-            hh: '%d haora',
-            d: 'he ra',
-            dd: '%d ra',
-            M: 'he marama',
-            MM: '%d marama',
-            y: 'he tau',
-            yy: '%d tau',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('mk', {
-        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
-            '_'
-        ),
-        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
-        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
-            '_'
-        ),
-        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
-        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[Денес во] LT',
-            nextDay: '[Утре во] LT',
-            nextWeek: '[Во] dddd [во] LT',
-            lastDay: '[Вчера во] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 6:
-                        return '[Изминатата] dddd [во] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[Изминатиот] dddd [во] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пред %s',
-            s: 'неколку секунди',
-            ss: '%d секунди',
-            m: 'една минута',
-            mm: '%d минути',
-            h: 'еден час',
-            hh: '%d часа',
-            d: 'еден ден',
-            dd: '%d дена',
-            M: 'еден месец',
-            MM: '%d месеци',
-            y: 'една година',
-            yy: '%d години',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-        ordinal: function (number) {
-            var lastDigit = number % 10,
-                last2Digits = number % 100;
-            if (number === 0) {
-                return number + '-ев';
-            } else if (last2Digits === 0) {
-                return number + '-ен';
-            } else if (last2Digits > 10 && last2Digits < 20) {
-                return number + '-ти';
-            } else if (lastDigit === 1) {
-                return number + '-ви';
-            } else if (lastDigit === 2) {
-                return number + '-ри';
-            } else if (lastDigit === 7 || lastDigit === 8) {
-                return number + '-ми';
-            } else {
-                return number + '-ти';
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ml', {
-        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
-                '_'
-            ),
-        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
-        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm -നു',
-            LTS: 'A h:mm:ss -നു',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm -നു',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
-        },
-        calendar: {
-            sameDay: '[ഇന്ന്] LT',
-            nextDay: '[നാളെ] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[ഇന്നലെ] LT',
-            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s കഴിഞ്ഞ്',
-            past: '%s മുൻപ്',
-            s: 'അൽപ നിമിഷങ്ങൾ',
-            ss: '%d സെക്കൻഡ്',
-            m: 'ഒരു മിനിറ്റ്',
-            mm: '%d മിനിറ്റ്',
-            h: 'ഒരു മണിക്കൂർ',
-            hh: '%d മണിക്കൂർ',
-            d: 'ഒരു ദിവസം',
-            dd: '%d ദിവസം',
-            M: 'ഒരു മാസം',
-            MM: '%d മാസം',
-            y: 'ഒരു വർഷം',
-            yy: '%d വർഷം',
-        },
-        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                (meridiem === 'രാത്രി' && hour >= 4) ||
-                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
-                meridiem === 'വൈകുന്നേരം'
-            ) {
-                return hour + 12;
-            } else {
-                return hour;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'രാത്രി';
-            } else if (hour < 12) {
-                return 'രാവിലെ';
-            } else if (hour < 17) {
-                return 'ഉച്ച കഴിഞ്ഞ്';
-            } else if (hour < 20) {
-                return 'വൈകുന്നേരം';
-            } else {
-                return 'രാത്രി';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function translate$7(number, withoutSuffix, key, isFuture) {
-        switch (key) {
-            case 's':
-                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
-            case 'ss':
-                return number + (withoutSuffix ? ' секунд' : ' секундын');
-            case 'm':
-            case 'mm':
-                return number + (withoutSuffix ? ' минут' : ' минутын');
-            case 'h':
-            case 'hh':
-                return number + (withoutSuffix ? ' цаг' : ' цагийн');
-            case 'd':
-            case 'dd':
-                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
-            case 'M':
-            case 'MM':
-                return number + (withoutSuffix ? ' сар' : ' сарын');
-            case 'y':
-            case 'yy':
-                return number + (withoutSuffix ? ' жил' : ' жилийн');
-            default:
-                return number;
-        }
-    }
-
-    hooks.defineLocale('mn', {
-        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
-            '_'
-        ),
-        monthsShort:
-            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
-        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
-        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY оны MMMMын D',
-            LLL: 'YYYY оны MMMMын D HH:mm',
-            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
-        },
-        meridiemParse: /ҮӨ|ҮХ/i,
-        isPM: function (input) {
-            return input === 'ҮХ';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ҮӨ';
-            } else {
-                return 'ҮХ';
-            }
-        },
-        calendar: {
-            sameDay: '[Өнөөдөр] LT',
-            nextDay: '[Маргааш] LT',
-            nextWeek: '[Ирэх] dddd LT',
-            lastDay: '[Өчигдөр] LT',
-            lastWeek: '[Өнгөрсөн] dddd LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s дараа',
-            past: '%s өмнө',
-            s: translate$7,
-            ss: translate$7,
-            m: translate$7,
-            mm: translate$7,
-            h: translate$7,
-            hh: translate$7,
-            d: translate$7,
-            dd: translate$7,
-            M: translate$7,
-            MM: translate$7,
-            y: translate$7,
-            yy: translate$7,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + ' өдөр';
-                default:
-                    return number;
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$d = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$c = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
-        var output = '';
-        if (withoutSuffix) {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंद';
-                    break;
-                case 'ss':
-                    output = '%d सेकंद';
-                    break;
-                case 'm':
-                    output = 'एक मिनिट';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटे';
-                    break;
-                case 'h':
-                    output = 'एक तास';
-                    break;
-                case 'hh':
-                    output = '%d तास';
-                    break;
-                case 'd':
-                    output = 'एक दिवस';
-                    break;
-                case 'dd':
-                    output = '%d दिवस';
-                    break;
-                case 'M':
-                    output = 'एक महिना';
-                    break;
-                case 'MM':
-                    output = '%d महिने';
-                    break;
-                case 'y':
-                    output = 'एक वर्ष';
-                    break;
-                case 'yy':
-                    output = '%d वर्षे';
-                    break;
-            }
-        } else {
-            switch (string) {
-                case 's':
-                    output = 'काही सेकंदां';
-                    break;
-                case 'ss':
-                    output = '%d सेकंदां';
-                    break;
-                case 'm':
-                    output = 'एका मिनिटा';
-                    break;
-                case 'mm':
-                    output = '%d मिनिटां';
-                    break;
-                case 'h':
-                    output = 'एका तासा';
-                    break;
-                case 'hh':
-                    output = '%d तासां';
-                    break;
-                case 'd':
-                    output = 'एका दिवसा';
-                    break;
-                case 'dd':
-                    output = '%d दिवसां';
-                    break;
-                case 'M':
-                    output = 'एका महिन्या';
-                    break;
-                case 'MM':
-                    output = '%d महिन्यां';
-                    break;
-                case 'y':
-                    output = 'एका वर्षा';
-                    break;
-                case 'yy':
-                    output = '%d वर्षां';
-                    break;
-            }
-        }
-        return output.replace(/%d/i, number);
-    }
-
-    hooks.defineLocale('mr', {
-        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
-        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm वाजता',
-            LTS: 'A h:mm:ss वाजता',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm वाजता',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[उद्या] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[काल] LT',
-            lastWeek: '[मागील] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमध्ये',
-            past: '%sपूर्वी',
-            s: relativeTimeMr,
-            ss: relativeTimeMr,
-            m: relativeTimeMr,
-            mm: relativeTimeMr,
-            h: relativeTimeMr,
-            hh: relativeTimeMr,
-            d: relativeTimeMr,
-            dd: relativeTimeMr,
-            M: relativeTimeMr,
-            MM: relativeTimeMr,
-            y: relativeTimeMr,
-            yy: relativeTimeMr,
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$c[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$d[match];
-            });
-        },
-        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
-                return hour;
-            } else if (
-                meridiem === 'दुपारी' ||
-                meridiem === 'सायंकाळी' ||
-                meridiem === 'रात्री'
-            ) {
-                return hour >= 12 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour >= 0 && hour < 6) {
-                return 'पहाटे';
-            } else if (hour < 12) {
-                return 'सकाळी';
-            } else if (hour < 17) {
-                return 'दुपारी';
-            } else if (hour < 20) {
-                return 'सायंकाळी';
-            } else {
-                return 'रात्री';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ms-my', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ms', {
-        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [pukul] HH.mm',
-            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-        },
-        meridiemParse: /pagi|tengahari|petang|malam/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'pagi') {
-                return hour;
-            } else if (meridiem === 'tengahari') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'petang' || meridiem === 'malam') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'pagi';
-            } else if (hours < 15) {
-                return 'tengahari';
-            } else if (hours < 19) {
-                return 'petang';
-            } else {
-                return 'malam';
-            }
-        },
-        calendar: {
-            sameDay: '[Hari ini pukul] LT',
-            nextDay: '[Esok pukul] LT',
-            nextWeek: 'dddd [pukul] LT',
-            lastDay: '[Kelmarin pukul] LT',
-            lastWeek: 'dddd [lepas pukul] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dalam %s',
-            past: '%s yang lepas',
-            s: 'beberapa saat',
-            ss: '%d saat',
-            m: 'seminit',
-            mm: '%d minit',
-            h: 'sejam',
-            hh: '%d jam',
-            d: 'sehari',
-            dd: '%d hari',
-            M: 'sebulan',
-            MM: '%d bulan',
-            y: 'setahun',
-            yy: '%d tahun',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('mt', {
-        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
-        weekdays:
-            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
-                '_'
-            ),
-        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
-        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Illum fil-]LT',
-            nextDay: '[Għada fil-]LT',
-            nextWeek: 'dddd [fil-]LT',
-            lastDay: '[Il-bieraħ fil-]LT',
-            lastWeek: 'dddd [li għadda] [fil-]LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'f’ %s',
-            past: '%s ilu',
-            s: 'ftit sekondi',
-            ss: '%d sekondi',
-            m: 'minuta',
-            mm: '%d minuti',
-            h: 'siegħa',
-            hh: '%d siegħat',
-            d: 'ġurnata',
-            dd: '%d ġranet',
-            M: 'xahar',
-            MM: '%d xhur',
-            y: 'sena',
-            yy: '%d sni',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$e = {
-            1: '၁',
-            2: '၂',
-            3: '၃',
-            4: '၄',
-            5: '၅',
-            6: '၆',
-            7: '၇',
-            8: '၈',
-            9: '၉',
-            0: '၀',
-        },
-        numberMap$d = {
-            '၁': '1',
-            '၂': '2',
-            '၃': '3',
-            '၄': '4',
-            '၅': '5',
-            '၆': '6',
-            '၇': '7',
-            '၈': '8',
-            '၉': '9',
-            '၀': '0',
-        };
-
-    hooks.defineLocale('my', {
-        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
-            '_'
-        ),
-        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
-        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
-            '_'
-        ),
-        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ယနေ.] LT [မှာ]',
-            nextDay: '[မနက်ဖြန်] LT [မှာ]',
-            nextWeek: 'dddd LT [မှာ]',
-            lastDay: '[မနေ.က] LT [မှာ]',
-            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'လာမည့် %s မှာ',
-            past: 'လွန်ခဲ့သော %s က',
-            s: 'စက္ကန်.အနည်းငယ်',
-            ss: '%d စက္ကန့်',
-            m: 'တစ်မိနစ်',
-            mm: '%d မိနစ်',
-            h: 'တစ်နာရီ',
-            hh: '%d နာရီ',
-            d: 'တစ်ရက်',
-            dd: '%d ရက်',
-            M: 'တစ်လ',
-            MM: '%d လ',
-            y: 'တစ်နှစ်',
-            yy: '%d နှစ်',
-        },
-        preparse: function (string) {
-            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
-                return numberMap$d[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$e[match];
-            });
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('nb', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
-        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[i dag kl.] LT',
-            nextDay: '[i morgen kl.] LT',
-            nextWeek: 'dddd [kl.] LT',
-            lastDay: '[i går kl.] LT',
-            lastWeek: '[forrige] dddd [kl.] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s siden',
-            s: 'noen sekunder',
-            ss: '%d sekunder',
-            m: 'ett minutt',
-            mm: '%d minutter',
-            h: 'én time',
-            hh: '%d timer',
-            d: 'én dag',
-            dd: '%d dager',
-            w: 'én uke',
-            ww: '%d uker',
-            M: 'én måned',
-            MM: '%d måneder',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$f = {
-            1: '१',
-            2: '२',
-            3: '३',
-            4: '४',
-            5: '५',
-            6: '६',
-            7: '७',
-            8: '८',
-            9: '९',
-            0: '०',
-        },
-        numberMap$e = {
-            '१': '1',
-            '२': '2',
-            '३': '3',
-            '४': '4',
-            '५': '5',
-            '६': '6',
-            '७': '7',
-            '८': '8',
-            '९': '9',
-            '०': '0',
-        };
-
-    hooks.defineLocale('ne', {
-        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
-            '_'
-        ),
-        monthsShort:
-            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
-            '_'
-        ),
-        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
-        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'Aको h:mm बजे',
-            LTS: 'Aको h:mm:ss बजे',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, Aको h:mm बजे',
-            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
-        },
-        preparse: function (string) {
-            return string.replace(/[१२३४५६७८९०]/g, function (match) {
-                return numberMap$e[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$f[match];
-            });
-        },
-        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'राति') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'बिहान') {
-                return hour;
-            } else if (meridiem === 'दिउँसो') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'साँझ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 3) {
-                return 'राति';
-            } else if (hour < 12) {
-                return 'बिहान';
-            } else if (hour < 16) {
-                return 'दिउँसो';
-            } else if (hour < 20) {
-                return 'साँझ';
-            } else {
-                return 'राति';
-            }
-        },
-        calendar: {
-            sameDay: '[आज] LT',
-            nextDay: '[भोलि] LT',
-            nextWeek: '[आउँदो] dddd[,] LT',
-            lastDay: '[हिजो] LT',
-            lastWeek: '[गएको] dddd[,] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sमा',
-            past: '%s अगाडि',
-            s: 'केही क्षण',
-            ss: '%d सेकेण्ड',
-            m: 'एक मिनेट',
-            mm: '%d मिनेट',
-            h: 'एक घण्टा',
-            hh: '%d घण्टा',
-            d: 'एक दिन',
-            dd: '%d दिन',
-            M: 'एक महिना',
-            MM: '%d महिना',
-            y: 'एक बर्ष',
-            yy: '%d बर्ष',
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots$1 =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots$1 =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse$8 = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex$8 =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    hooks.defineLocale('nl-be', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots$1;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots$1[m.month()];
-            } else {
-                return monthsShortWithDots$1[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex$8,
-        monthsShortRegex: monthsRegex$8,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse$8,
-        longMonthsParse: monthsParse$8,
-        shortMonthsParse: monthsParse$8,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsShortWithDots$2 =
-            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-        monthsShortWithoutDots$2 =
-            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        monthsParse$9 = [
-            /^jan/i,
-            /^feb/i,
-            /^(maart|mrt\.?)$/i,
-            /^apr/i,
-            /^mei$/i,
-            /^jun[i.]?$/i,
-            /^jul[i.]?$/i,
-            /^aug/i,
-            /^sep/i,
-            /^okt/i,
-            /^nov/i,
-            /^dec/i,
-        ],
-        monthsRegex$9 =
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-    hooks.defineLocale('nl', {
-        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: function (m, format) {
-            if (!m) {
-                return monthsShortWithDots$2;
-            } else if (/-MMM-/.test(format)) {
-                return monthsShortWithoutDots$2[m.month()];
-            } else {
-                return monthsShortWithDots$2[m.month()];
-            }
-        },
-
-        monthsRegex: monthsRegex$9,
-        monthsShortRegex: monthsRegex$9,
-        monthsStrictRegex:
-            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-        monthsShortStrictRegex:
-            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-        monthsParse: monthsParse$9,
-        longMonthsParse: monthsParse$9,
-        shortMonthsParse: monthsParse$9,
-
-        weekdays:
-            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD-MM-YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[vandaag om] LT',
-            nextDay: '[morgen om] LT',
-            nextWeek: 'dddd [om] LT',
-            lastDay: '[gisteren om] LT',
-            lastWeek: '[afgelopen] dddd [om] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'over %s',
-            past: '%s geleden',
-            s: 'een paar seconden',
-            ss: '%d seconden',
-            m: 'één minuut',
-            mm: '%d minuten',
-            h: 'één uur',
-            hh: '%d uur',
-            d: 'één dag',
-            dd: '%d dagen',
-            w: 'één week',
-            ww: '%d weken',
-            M: 'één maand',
-            MM: '%d maanden',
-            y: 'één jaar',
-            yy: '%d jaar',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-        ordinal: function (number) {
-            return (
-                number +
-                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-            );
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('nn', {
-        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
-        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
-        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY [kl.] H:mm',
-            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[I dag klokka] LT',
-            nextDay: '[I morgon klokka] LT',
-            nextWeek: 'dddd [klokka] LT',
-            lastDay: '[I går klokka] LT',
-            lastWeek: '[Føregåande] dddd [klokka] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: '%s sidan',
-            s: 'nokre sekund',
-            ss: '%d sekund',
-            m: 'eit minutt',
-            mm: '%d minutt',
-            h: 'ein time',
-            hh: '%d timar',
-            d: 'ein dag',
-            dd: '%d dagar',
-            w: 'ei veke',
-            ww: '%d veker',
-            M: 'ein månad',
-            MM: '%d månader',
-            y: 'eit år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('oc-lnc', {
-        months: {
-            standalone:
-                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
-                    '_'
-                ),
-            format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
-                '_'
-            ),
-            isFormat: /D[oD]?(\s)+MMMM/,
-        },
-        monthsShort:
-            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
-            '_'
-        ),
-        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
-        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [de] YYYY',
-            ll: 'D MMM YYYY',
-            LLL: 'D MMMM [de] YYYY [a] H:mm',
-            lll: 'D MMM YYYY, H:mm',
-            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
-            llll: 'ddd D MMM YYYY, H:mm',
-        },
-        calendar: {
-            sameDay: '[uèi a] LT',
-            nextDay: '[deman a] LT',
-            nextWeek: 'dddd [a] LT',
-            lastDay: '[ièr a] LT',
-            lastWeek: 'dddd [passat a] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: "d'aquí %s",
-            past: 'fa %s',
-            s: 'unas segondas',
-            ss: '%d segondas',
-            m: 'una minuta',
-            mm: '%d minutas',
-            h: 'una ora',
-            hh: '%d oras',
-            d: 'un jorn',
-            dd: '%d jorns',
-            M: 'un mes',
-            MM: '%d meses',
-            y: 'un an',
-            yy: '%d ans',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-        ordinal: function (number, period) {
-            var output =
-                number === 1
-                    ? 'r'
-                    : number === 2
-                      ? 'n'
-                      : number === 3
-                        ? 'r'
-                        : number === 4
-                          ? 't'
-                          : 'è';
-            if (period === 'w' || period === 'W') {
-                output = 'a';
-            }
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4,
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$g = {
-            1: '੧',
-            2: '੨',
-            3: '੩',
-            4: '੪',
-            5: '੫',
-            6: '੬',
-            7: '੭',
-            8: '੮',
-            9: '੯',
-            0: '੦',
-        },
-        numberMap$f = {
-            '੧': '1',
-            '੨': '2',
-            '੩': '3',
-            '੪': '4',
-            '੫': '5',
-            '੬': '6',
-            '੭': '7',
-            '੮': '8',
-            '੯': '9',
-            '੦': '0',
-        };
-
-    hooks.defineLocale('pa-in', {
-        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
-        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-                '_'
-            ),
-        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
-            '_'
-        ),
-        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm ਵਜੇ',
-            LTS: 'A h:mm:ss ਵਜੇ',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
-        },
-        calendar: {
-            sameDay: '[ਅਜ] LT',
-            nextDay: '[ਕਲ] LT',
-            nextWeek: '[ਅਗਲਾ] dddd, LT',
-            lastDay: '[ਕਲ] LT',
-            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s ਵਿੱਚ',
-            past: '%s ਪਿਛਲੇ',
-            s: 'ਕੁਝ ਸਕਿੰਟ',
-            ss: '%d ਸਕਿੰਟ',
-            m: 'ਇਕ ਮਿੰਟ',
-            mm: '%d ਮਿੰਟ',
-            h: 'ਇੱਕ ਘੰਟਾ',
-            hh: '%d ਘੰਟੇ',
-            d: 'ਇੱਕ ਦਿਨ',
-            dd: '%d ਦਿਨ',
-            M: 'ਇੱਕ ਮਹੀਨਾ',
-            MM: '%d ਮਹੀਨੇ',
-            y: 'ਇੱਕ ਸਾਲ',
-            yy: '%d ਸਾਲ',
-        },
-        preparse: function (string) {
-            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
-                return numberMap$f[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$g[match];
-            });
-        },
-        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ਰਾਤ') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ਸਵੇਰ') {
-                return hour;
-            } else if (meridiem === 'ਦੁਪਹਿਰ') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'ਸ਼ਾਮ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ਰਾਤ';
-            } else if (hour < 10) {
-                return 'ਸਵੇਰ';
-            } else if (hour < 17) {
-                return 'ਦੁਪਹਿਰ';
-            } else if (hour < 20) {
-                return 'ਸ਼ਾਮ';
-            } else {
-                return 'ਰਾਤ';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var monthsNominative =
-            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
-                '_'
-            ),
-        monthsSubjective =
-            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
-                '_'
-            ),
-        monthsParse$a = [
-            /^sty/i,
-            /^lut/i,
-            /^mar/i,
-            /^kwi/i,
-            /^maj/i,
-            /^cze/i,
-            /^lip/i,
-            /^sie/i,
-            /^wrz/i,
-            /^paź/i,
-            /^lis/i,
-            /^gru/i,
-        ];
-    function plural$3(n) {
-        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
-    }
-    function translate$8(number, withoutSuffix, key) {
-        var result = number + ' ';
-        switch (key) {
-            case 'ss':
-                return result + (plural$3(number) ? 'sekundy' : 'sekund');
-            case 'm':
-                return withoutSuffix ? 'minuta' : 'minutę';
-            case 'mm':
-                return result + (plural$3(number) ? 'minuty' : 'minut');
-            case 'h':
-                return withoutSuffix ? 'godzina' : 'godzinę';
-            case 'hh':
-                return result + (plural$3(number) ? 'godziny' : 'godzin');
-            case 'ww':
-                return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
-            case 'MM':
-                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
-            case 'yy':
-                return result + (plural$3(number) ? 'lata' : 'lat');
-        }
-    }
-
-    hooks.defineLocale('pl', {
-        months: function (momentToFormat, format) {
-            if (!momentToFormat) {
-                return monthsNominative;
-            } else if (/D MMMM/.test(format)) {
-                return monthsSubjective[momentToFormat.month()];
-            } else {
-                return monthsNominative[momentToFormat.month()];
-            }
-        },
-        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
-        monthsParse: monthsParse$a,
-        longMonthsParse: monthsParse$a,
-        shortMonthsParse: monthsParse$a,
-        weekdays:
-            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
-        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
-        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Dziś o] LT',
-            nextDay: '[Jutro o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W niedzielę o] LT';
-
-                    case 2:
-                        return '[We wtorek o] LT';
-
-                    case 3:
-                        return '[W środę o] LT';
-
-                    case 6:
-                        return '[W sobotę o] LT';
-
-                    default:
-                        return '[W] dddd [o] LT';
-                }
-            },
-            lastDay: '[Wczoraj o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[W zeszłą niedzielę o] LT';
-                    case 3:
-                        return '[W zeszłą środę o] LT';
-                    case 6:
-                        return '[W zeszłą sobotę o] LT';
-                    default:
-                        return '[W zeszły] dddd [o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: '%s temu',
-            s: 'kilka sekund',
-            ss: translate$8,
-            m: translate$8,
-            mm: translate$8,
-            h: translate$8,
-            hh: translate$8,
-            d: '1 dzień',
-            dd: '%d dni',
-            w: 'tydzień',
-            ww: translate$8,
-            M: 'miesiąc',
-            MM: translate$8,
-            y: 'rok',
-            yy: translate$8,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('pt-br', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
-        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'poucos segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        invalidDate: 'Data inválida',
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('pt', {
-        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-            '_'
-        ),
-        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-        weekdays:
-            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
-                '_'
-            ),
-        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
-        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D [de] MMMM [de] YYYY',
-            LLL: 'D [de] MMMM [de] YYYY HH:mm',
-            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hoje às] LT',
-            nextDay: '[Amanhã às] LT',
-            nextWeek: 'dddd [às] LT',
-            lastDay: '[Ontem às] LT',
-            lastWeek: function () {
-                return this.day() === 0 || this.day() === 6
-                    ? '[Último] dddd [às] LT' // Saturday + Sunday
-                    : '[Última] dddd [às] LT'; // Monday - Friday
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'em %s',
-            past: 'há %s',
-            s: 'segundos',
-            ss: '%d segundos',
-            m: 'um minuto',
-            mm: '%d minutos',
-            h: 'uma hora',
-            hh: '%d horas',
-            d: 'um dia',
-            dd: '%d dias',
-            w: 'uma semana',
-            ww: '%d semanas',
-            M: 'um mês',
-            MM: '%d meses',
-            y: 'um ano',
-            yy: '%d anos',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}º/,
-        ordinal: '%dº',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
-        var format = {
-                ss: 'secunde',
-                mm: 'minute',
-                hh: 'ore',
-                dd: 'zile',
-                ww: 'săptămâni',
-                MM: 'luni',
-                yy: 'ani',
-            },
-            separator = ' ';
-        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
-            separator = ' de ';
-        }
-        return number + separator + format[key];
-    }
-
-    hooks.defineLocale('ro', {
-        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
-            '_'
-        ),
-        monthsShort:
-            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
-        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
-        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY H:mm',
-            LLLL: 'dddd, D MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[azi la] LT',
-            nextDay: '[mâine la] LT',
-            nextWeek: 'dddd [la] LT',
-            lastDay: '[ieri la] LT',
-            lastWeek: '[fosta] dddd [la] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'peste %s',
-            past: '%s în urmă',
-            s: 'câteva secunde',
-            ss: relativeTimeWithPlural$2,
-            m: 'un minut',
-            mm: relativeTimeWithPlural$2,
-            h: 'o oră',
-            hh: relativeTimeWithPlural$2,
-            d: 'o zi',
-            dd: relativeTimeWithPlural$2,
-            w: 'o săptămână',
-            ww: relativeTimeWithPlural$2,
-            M: 'o lună',
-            MM: relativeTimeWithPlural$2,
-            y: 'un an',
-            yy: relativeTimeWithPlural$2,
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$4(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
-            hh: 'час_часа_часов',
-            dd: 'день_дня_дней',
-            ww: 'неделя_недели_недель',
-            MM: 'месяц_месяца_месяцев',
-            yy: 'год_года_лет',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'минута' : 'минуту';
-        } else {
-            return number + ' ' + plural$4(format[key], +number);
-        }
-    }
-    var monthsParse$b = [
-        /^янв/i,
-        /^фев/i,
-        /^мар/i,
-        /^апр/i,
-        /^ма[йя]/i,
-        /^июн/i,
-        /^июл/i,
-        /^авг/i,
-        /^сен/i,
-        /^окт/i,
-        /^ноя/i,
-        /^дек/i,
-    ];
-
-    // http://new.gramota.ru/spravka/rules/139-prop : § 103
-    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-    hooks.defineLocale('ru', {
-        months: {
-            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
-                '_'
-            ),
-            standalone:
-                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-                    '_'
-                ),
-        },
-        monthsShort: {
-            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
-            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
-                '_'
-            ),
-            standalone:
-                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
-                    '_'
-                ),
-        },
-        weekdays: {
-            standalone:
-                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
-                    '_'
-                ),
-            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
-                '_'
-            ),
-            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
-        },
-        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-        monthsParse: monthsParse$b,
-        longMonthsParse: monthsParse$b,
-        shortMonthsParse: monthsParse$b,
-
-        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
-        monthsRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // копия предыдущего
-        monthsShortRegex:
-            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-        // полные названия с падежами
-        monthsStrictRegex:
-            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
-
-        // Выражение, которое соответствует только сокращённым формам
-        monthsShortStrictRegex:
-            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY г.',
-            LLL: 'D MMMM YYYY г., H:mm',
-            LLLL: 'dddd, D MMMM YYYY г., H:mm',
-        },
-        calendar: {
-            sameDay: '[Сегодня, в] LT',
-            nextDay: '[Завтра, в] LT',
-            lastDay: '[Вчера, в] LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В следующее] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В следующий] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В следующую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            lastWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    switch (this.day()) {
-                        case 0:
-                            return '[В прошлое] dddd, [в] LT';
-                        case 1:
-                        case 2:
-                        case 4:
-                            return '[В прошлый] dddd, [в] LT';
-                        case 3:
-                        case 5:
-                        case 6:
-                            return '[В прошлую] dddd, [в] LT';
-                    }
-                } else {
-                    if (this.day() === 2) {
-                        return '[Во] dddd, [в] LT';
-                    } else {
-                        return '[В] dddd, [в] LT';
-                    }
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'через %s',
-            past: '%s назад',
-            s: 'несколько секунд',
-            ss: relativeTimeWithPlural$3,
-            m: relativeTimeWithPlural$3,
-            mm: relativeTimeWithPlural$3,
-            h: 'час',
-            hh: relativeTimeWithPlural$3,
-            d: 'день',
-            dd: relativeTimeWithPlural$3,
-            w: 'неделя',
-            ww: relativeTimeWithPlural$3,
-            M: 'месяц',
-            MM: relativeTimeWithPlural$3,
-            y: 'год',
-            yy: relativeTimeWithPlural$3,
-        },
-        meridiemParse: /ночи|утра|дня|вечера/i,
-        isPM: function (input) {
-            return /^(дня|вечера)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночи';
-            } else if (hour < 12) {
-                return 'утра';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечера';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                case 'w':
-                case 'W':
-                    return number + '-я';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$9 = [
-            'جنوري',
-            'فيبروري',
-            'مارچ',
-            'اپريل',
-            'مئي',
-            'جون',
-            'جولاءِ',
-            'آگسٽ',
-            'سيپٽمبر',
-            'آڪٽوبر',
-            'نومبر',
-            'ڊسمبر',
-        ],
-        days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
-
-    hooks.defineLocale('sd', {
-        months: months$9,
-        monthsShort: months$9,
-        weekdays: days$1,
-        weekdaysShort: days$1,
-        weekdaysMin: days$1,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[اڄ] LT',
-            nextDay: '[سڀاڻي] LT',
-            nextWeek: 'dddd [اڳين هفتي تي] LT',
-            lastDay: '[ڪالهه] LT',
-            lastWeek: '[گزريل هفتي] dddd [تي] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s پوء',
-            past: '%s اڳ',
-            s: 'چند سيڪنڊ',
-            ss: '%d سيڪنڊ',
-            m: 'هڪ منٽ',
-            mm: '%d منٽ',
-            h: 'هڪ ڪلاڪ',
-            hh: '%d ڪلاڪ',
-            d: 'هڪ ڏينهن',
-            dd: '%d ڏينهن',
-            M: 'هڪ مهينو',
-            MM: '%d مهينا',
-            y: 'هڪ سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('se', {
-        months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
-            '_'
-        ),
-        monthsShort:
-            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
-        weekdays:
-            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
-                '_'
-            ),
-        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
-        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'MMMM D. [b.] YYYY',
-            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
-            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
-        },
-        calendar: {
-            sameDay: '[otne ti] LT',
-            nextDay: '[ihttin ti] LT',
-            nextWeek: 'dddd [ti] LT',
-            lastDay: '[ikte ti] LT',
-            lastWeek: '[ovddit] dddd [ti] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s geažes',
-            past: 'maŋit %s',
-            s: 'moadde sekunddat',
-            ss: '%d sekunddat',
-            m: 'okta minuhta',
-            mm: '%d minuhtat',
-            h: 'okta diimmu',
-            hh: '%d diimmut',
-            d: 'okta beaivi',
-            dd: '%d beaivvit',
-            M: 'okta mánnu',
-            MM: '%d mánut',
-            y: 'okta jahki',
-            yy: '%d jagit',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    /*jshint -W100*/
-    hooks.defineLocale('si', {
-        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
-            '_'
-        ),
-        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
-            '_'
-        ),
-        weekdays:
-            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
-                '_'
-            ),
-        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
-        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'a h:mm',
-            LTS: 'a h:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY MMMM D',
-            LLL: 'YYYY MMMM D, a h:mm',
-            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
-        },
-        calendar: {
-            sameDay: '[අද] LT[ට]',
-            nextDay: '[හෙට] LT[ට]',
-            nextWeek: 'dddd LT[ට]',
-            lastDay: '[ඊයේ] LT[ට]',
-            lastWeek: '[පසුගිය] dddd LT[ට]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%sකින්',
-            past: '%sකට පෙර',
-            s: 'තත්පර කිහිපය',
-            ss: 'තත්පර %d',
-            m: 'මිනිත්තුව',
-            mm: 'මිනිත්තු %d',
-            h: 'පැය',
-            hh: 'පැය %d',
-            d: 'දිනය',
-            dd: 'දින %d',
-            M: 'මාසය',
-            MM: 'මාස %d',
-            y: 'වසර',
-            yy: 'වසර %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
-        ordinal: function (number) {
-            return number + ' වැනි';
-        },
-        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
-        isPM: function (input) {
-            return input === 'ප.ව.' || input === 'පස් වරු';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? 'ප.ව.' : 'පස් වරු';
-            } else {
-                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
-            }
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$a =
-            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
-                '_'
-            ),
-        monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-    function plural$5(n) {
-        return n > 1 && n < 5;
-    }
-    function translate$9(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's': // a few seconds / in a few seconds / a few seconds ago
-                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
-            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
-                } else {
-                    return result + 'sekundami';
-                }
-            case 'm': // a minute / in a minute / a minute ago
-                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
-            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'minúty' : 'minút');
-                } else {
-                    return result + 'minútami';
-                }
-            case 'h': // an hour / in an hour / an hour ago
-                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-            case 'hh': // 9 hours / in 9 hours / 9 hours ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
-                } else {
-                    return result + 'hodinami';
-                }
-            case 'd': // a day / in a day / a day ago
-                return withoutSuffix || isFuture ? 'deň' : 'dňom';
-            case 'dd': // 9 days / in 9 days / 9 days ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'dni' : 'dní');
-                } else {
-                    return result + 'dňami';
-                }
-            case 'M': // a month / in a month / a month ago
-                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
-            case 'MM': // 9 months / in 9 months / 9 months ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
-                } else {
-                    return result + 'mesiacmi';
-                }
-            case 'y': // a year / in a year / a year ago
-                return withoutSuffix || isFuture ? 'rok' : 'rokom';
-            case 'yy': // 9 years / in 9 years / 9 years ago
-                if (withoutSuffix || isFuture) {
-                    return result + (plural$5(number) ? 'roky' : 'rokov');
-                } else {
-                    return result + 'rokmi';
-                }
-        }
-    }
-
-    hooks.defineLocale('sk', {
-        months: months$a,
-        monthsShort: monthsShort$7,
-        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
-        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
-        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[dnes o] LT',
-            nextDay: '[zajtra o] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[v] dddd [o] LT';
-                    case 3:
-                        return '[v stredu o] LT';
-                    case 4:
-                        return '[vo štvrtok o] LT';
-                    case 5:
-                        return '[v piatok o] LT';
-                    case 6:
-                        return '[v sobotu o] LT';
-                }
-            },
-            lastDay: '[včera o] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[minulú nedeľu o] LT';
-                    case 1:
-                    case 2:
-                        return '[minulý] dddd [o] LT';
-                    case 3:
-                        return '[minulú stredu o] LT';
-                    case 4:
-                    case 5:
-                        return '[minulý] dddd [o] LT';
-                    case 6:
-                        return '[minulú sobotu o] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pred %s',
-            s: translate$9,
-            ss: translate$9,
-            m: translate$9,
-            mm: translate$9,
-            h: translate$9,
-            hh: translate$9,
-            d: translate$9,
-            dd: translate$9,
-            M: translate$9,
-            MM: translate$9,
-            y: translate$9,
-            yy: translate$9,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function processRelativeTime$9(number, withoutSuffix, key, isFuture) {
-        var result = number + ' ';
-        switch (key) {
-            case 's':
-                return withoutSuffix || isFuture
-                    ? 'nekaj sekund'
-                    : 'nekaj sekundami';
-            case 'ss':
-                if (number === 1) {
-                    result += withoutSuffix ? 'sekundo' : 'sekundi';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
-                } else {
-                    result += 'sekund';
-                }
-                return result;
-            case 'm':
-                return withoutSuffix ? 'ena minuta' : 'eno minuto';
-            case 'mm':
-                if (number === 1) {
-                    result += withoutSuffix ? 'minuta' : 'minuto';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
-                }
-                return result;
-            case 'h':
-                return withoutSuffix ? 'ena ura' : 'eno uro';
-            case 'hh':
-                if (number === 1) {
-                    result += withoutSuffix ? 'ura' : 'uro';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
-                } else {
-                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
-                }
-                return result;
-            case 'd':
-                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
-            case 'dd':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
-                } else {
-                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
-                }
-                return result;
-            case 'M':
-                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
-            case 'MM':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
-                } else {
-                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
-                }
-                return result;
-            case 'y':
-                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
-            case 'yy':
-                if (number === 1) {
-                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
-                } else if (number === 2) {
-                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
-                } else if (number < 5) {
-                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
-                } else {
-                    result += withoutSuffix || isFuture ? 'let' : 'leti';
-                }
-                return result;
-        }
-    }
-
-    hooks.defineLocale('sl', {
-        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
-        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
-        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD. MM. YYYY',
-            LL: 'D. MMMM YYYY',
-            LLL: 'D. MMMM YYYY H:mm',
-            LLLL: 'dddd, D. MMMM YYYY H:mm',
-        },
-        calendar: {
-            sameDay: '[danes ob] LT',
-            nextDay: '[jutri ob] LT',
-
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[v] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[v] [sredo] [ob] LT';
-                    case 6:
-                        return '[v] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[v] dddd [ob] LT';
-                }
-            },
-            lastDay: '[včeraj ob] LT',
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[prejšnjo] [nedeljo] [ob] LT';
-                    case 3:
-                        return '[prejšnjo] [sredo] [ob] LT';
-                    case 6:
-                        return '[prejšnjo] [soboto] [ob] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[prejšnji] dddd [ob] LT';
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'čez %s',
-            past: 'pred %s',
-            s: processRelativeTime$9,
-            ss: processRelativeTime$9,
-            m: processRelativeTime$9,
-            mm: processRelativeTime$9,
-            h: processRelativeTime$9,
-            hh: processRelativeTime$9,
-            d: processRelativeTime$9,
-            dd: processRelativeTime$9,
-            M: processRelativeTime$9,
-            MM: processRelativeTime$9,
-            y: processRelativeTime$9,
-            yy: processRelativeTime$9,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('sq', {
-        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
-        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
-            '_'
-        ),
-        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
-        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /PD|MD/,
-        isPM: function (input) {
-            return input.charAt(0) === 'M';
-        },
-        meridiem: function (hours, minutes, isLower) {
-            return hours < 12 ? 'PD' : 'MD';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Sot në] LT',
-            nextDay: '[Nesër në] LT',
-            nextWeek: 'dddd [në] LT',
-            lastDay: '[Dje në] LT',
-            lastWeek: 'dddd [e kaluar në] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'në %s',
-            past: '%s më parë',
-            s: 'disa sekonda',
-            ss: '%d sekonda',
-            m: 'një minutë',
-            mm: '%d minuta',
-            h: 'një orë',
-            hh: '%d orë',
-            d: 'një ditë',
-            dd: '%d ditë',
-            M: 'një muaj',
-            MM: '%d muaj',
-            y: 'një vit',
-            yy: '%d vite',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator$1 = {
-        words: {
-            //Different grammatical cases
-            ss: ['секунда', 'секунде', 'секунди'],
-            m: ['један минут', 'једног минута'],
-            mm: ['минут', 'минута', 'минута'],
-            h: ['један сат', 'једног сата'],
-            hh: ['сат', 'сата', 'сати'],
-            d: ['један дан', 'једног дана'],
-            dd: ['дан', 'дана', 'дана'],
-            M: ['један месец', 'једног месеца'],
-            MM: ['месец', 'месеца', 'месеци'],
-            y: ['једну годину', 'једне године'],
-            yy: ['годину', 'године', 'година'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator$1.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'једна година';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator$1.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'годину') {
-                return number + ' година';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    hooks.defineLocale('sr-cyrl', {
-        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
-            '_'
-        ),
-        monthsShort:
-            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
-        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
-        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[данас у] LT',
-            nextDay: '[сутра у] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[у] [недељу] [у] LT';
-                    case 3:
-                        return '[у] [среду] [у] LT';
-                    case 6:
-                        return '[у] [суботу] [у] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[у] dddd [у] LT';
-                }
-            },
-            lastDay: '[јуче у] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[прошле] [недеље] [у] LT',
-                    '[прошлог] [понедељка] [у] LT',
-                    '[прошлог] [уторка] [у] LT',
-                    '[прошле] [среде] [у] LT',
-                    '[прошлог] [четвртка] [у] LT',
-                    '[прошлог] [петка] [у] LT',
-                    '[прошле] [суботе] [у] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: 'пре %s',
-            s: 'неколико секунди',
-            ss: translator$1.translate,
-            m: translator$1.translate,
-            mm: translator$1.translate,
-            h: translator$1.translate,
-            hh: translator$1.translate,
-            d: translator$1.translate,
-            dd: translator$1.translate,
-            M: translator$1.translate,
-            MM: translator$1.translate,
-            y: translator$1.translate,
-            yy: translator$1.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var translator$2 = {
-        words: {
-            //Different grammatical cases
-            ss: ['sekunda', 'sekunde', 'sekundi'],
-            m: ['jedan minut', 'jednog minuta'],
-            mm: ['minut', 'minuta', 'minuta'],
-            h: ['jedan sat', 'jednog sata'],
-            hh: ['sat', 'sata', 'sati'],
-            d: ['jedan dan', 'jednog dana'],
-            dd: ['dan', 'dana', 'dana'],
-            M: ['jedan mesec', 'jednog meseca'],
-            MM: ['mesec', 'meseca', 'meseci'],
-            y: ['jednu godinu', 'jedne godine'],
-            yy: ['godinu', 'godine', 'godina'],
-        },
-        correctGrammaticalCase: function (number, wordKey) {
-            if (
-                number % 10 >= 1 &&
-                number % 10 <= 4 &&
-                (number % 100 < 10 || number % 100 >= 20)
-            ) {
-                return number % 10 === 1 ? wordKey[0] : wordKey[1];
-            }
-            return wordKey[2];
-        },
-        translate: function (number, withoutSuffix, key, isFuture) {
-            var wordKey = translator$2.words[key],
-                word;
-
-            if (key.length === 1) {
-                // Nominativ
-                if (key === 'y' && withoutSuffix) return 'jedna godina';
-                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-            }
-
-            word = translator$2.correctGrammaticalCase(number, wordKey);
-            // Nominativ
-            if (key === 'yy' && withoutSuffix && word === 'godinu') {
-                return number + ' godina';
-            }
-
-            return number + ' ' + word;
-        },
-    };
-
-    hooks.defineLocale('sr', {
-        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-            '_'
-        ),
-        monthsShort:
-            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-        monthsParseExact: true,
-        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
-            '_'
-        ),
-        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
-        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'D. M. YYYY.',
-            LL: 'D. MMMM YYYY.',
-            LLL: 'D. MMMM YYYY. H:mm',
-            LLLL: 'dddd, D. MMMM YYYY. H:mm',
-        },
-        calendar: {
-            sameDay: '[danas u] LT',
-            nextDay: '[sutra u] LT',
-            nextWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                        return '[u] [nedelju] [u] LT';
-                    case 3:
-                        return '[u] [sredu] [u] LT';
-                    case 6:
-                        return '[u] [subotu] [u] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                    case 5:
-                        return '[u] dddd [u] LT';
-                }
-            },
-            lastDay: '[juče u] LT',
-            lastWeek: function () {
-                var lastWeekDays = [
-                    '[prošle] [nedelje] [u] LT',
-                    '[prošlog] [ponedeljka] [u] LT',
-                    '[prošlog] [utorka] [u] LT',
-                    '[prošle] [srede] [u] LT',
-                    '[prošlog] [četvrtka] [u] LT',
-                    '[prošlog] [petka] [u] LT',
-                    '[prošle] [subote] [u] LT',
-                ];
-                return lastWeekDays[this.day()];
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'za %s',
-            past: 'pre %s',
-            s: 'nekoliko sekundi',
-            ss: translator$2.translate,
-            m: translator$2.translate,
-            mm: translator$2.translate,
-            h: translator$2.translate,
-            hh: translator$2.translate,
-            d: translator$2.translate,
-            dd: translator$2.translate,
-            M: translator$2.translate,
-            MM: translator$2.translate,
-            y: translator$2.translate,
-            yy: translator$2.translate,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ss', {
-        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
-            '_'
-        ),
-        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
-        weekdays:
-            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
-                '_'
-            ),
-        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
-        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Namuhla nga] LT',
-            nextDay: '[Kusasa nga] LT',
-            nextWeek: 'dddd [nga] LT',
-            lastDay: '[Itolo nga] LT',
-            lastWeek: 'dddd [leliphelile] [nga] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'nga %s',
-            past: 'wenteka nga %s',
-            s: 'emizuzwana lomcane',
-            ss: '%d mzuzwana',
-            m: 'umzuzu',
-            mm: '%d emizuzu',
-            h: 'lihora',
-            hh: '%d emahora',
-            d: 'lilanga',
-            dd: '%d emalanga',
-            M: 'inyanga',
-            MM: '%d tinyanga',
-            y: 'umnyaka',
-            yy: '%d iminyaka',
-        },
-        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 11) {
-                return 'ekuseni';
-            } else if (hours < 15) {
-                return 'emini';
-            } else if (hours < 19) {
-                return 'entsambama';
-            } else {
-                return 'ebusuku';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'ekuseni') {
-                return hour;
-            } else if (meridiem === 'emini') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
-                if (hour === 0) {
-                    return 0;
-                }
-                return hour + 12;
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: '%d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('sv', {
-        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
-            '_'
-        ),
-        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
-        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
-        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY [kl.] HH:mm',
-            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Idag] LT',
-            nextDay: '[Imorgon] LT',
-            lastDay: '[Igår] LT',
-            nextWeek: '[På] dddd LT',
-            lastWeek: '[I] dddd[s] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'om %s',
-            past: 'för %s sedan',
-            s: 'några sekunder',
-            ss: '%d sekunder',
-            m: 'en minut',
-            mm: '%d minuter',
-            h: 'en timme',
-            hh: '%d timmar',
-            d: 'en dag',
-            dd: '%d dagar',
-            M: 'en månad',
-            MM: '%d månader',
-            y: 'ett år',
-            yy: '%d år',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? ':e'
-                        : b === 1
-                          ? ':a'
-                          : b === 2
-                            ? ':a'
-                            : b === 3
-                              ? ':e'
-                              : ':e';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('sw', {
-        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
-        weekdays:
-            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
-                '_'
-            ),
-        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
-        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'hh:mm A',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[leo saa] LT',
-            nextDay: '[kesho saa] LT',
-            nextWeek: '[wiki ijayo] dddd [saat] LT',
-            lastDay: '[jana] LT',
-            lastWeek: '[wiki iliyopita] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s baadaye',
-            past: 'tokea %s',
-            s: 'hivi punde',
-            ss: 'sekunde %d',
-            m: 'dakika moja',
-            mm: 'dakika %d',
-            h: 'saa limoja',
-            hh: 'masaa %d',
-            d: 'siku moja',
-            dd: 'siku %d',
-            M: 'mwezi mmoja',
-            MM: 'miezi %d',
-            y: 'mwaka mmoja',
-            yy: 'miaka %d',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var symbolMap$h = {
-            1: '௧',
-            2: '௨',
-            3: '௩',
-            4: '௪',
-            5: '௫',
-            6: '௬',
-            7: '௭',
-            8: '௮',
-            9: '௯',
-            0: '௦',
-        },
-        numberMap$g = {
-            '௧': '1',
-            '௨': '2',
-            '௩': '3',
-            '௪': '4',
-            '௫': '5',
-            '௬': '6',
-            '௭': '7',
-            '௮': '8',
-            '௯': '9',
-            '௦': '0',
-        };
-
-    hooks.defineLocale('ta', {
-        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-            '_'
-        ),
-        monthsShort:
-            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-                '_'
-            ),
-        weekdays:
-            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
-                '_'
-            ),
-        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
-            '_'
-        ),
-        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, HH:mm',
-            LLLL: 'dddd, D MMMM YYYY, HH:mm',
-        },
-        calendar: {
-            sameDay: '[இன்று] LT',
-            nextDay: '[நாளை] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[நேற்று] LT',
-            lastWeek: '[கடந்த வாரம்] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s இல்',
-            past: '%s முன்',
-            s: 'ஒரு சில விநாடிகள்',
-            ss: '%d விநாடிகள்',
-            m: 'ஒரு நிமிடம்',
-            mm: '%d நிமிடங்கள்',
-            h: 'ஒரு மணி நேரம்',
-            hh: '%d மணி நேரம்',
-            d: 'ஒரு நாள்',
-            dd: '%d நாட்கள்',
-            M: 'ஒரு மாதம்',
-            MM: '%d மாதங்கள்',
-            y: 'ஒரு வருடம்',
-            yy: '%d ஆண்டுகள்',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}வது/,
-        ordinal: function (number) {
-            return number + 'வது';
-        },
-        preparse: function (string) {
-            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
-                return numberMap$g[match];
-            });
-        },
-        postformat: function (string) {
-            return string.replace(/\d/g, function (match) {
-                return symbolMap$h[match];
-            });
-        },
-        // refer http://ta.wikipedia.org/s/1er1
-        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 2) {
-                return ' யாமம்';
-            } else if (hour < 6) {
-                return ' வைகறை'; // வைகறை
-            } else if (hour < 10) {
-                return ' காலை'; // காலை
-            } else if (hour < 14) {
-                return ' நண்பகல்'; // நண்பகல்
-            } else if (hour < 18) {
-                return ' எற்பாடு'; // எற்பாடு
-            } else if (hour < 22) {
-                return ' மாலை'; // மாலை
-            } else {
-                return ' யாமம்';
-            }
-        },
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'யாமம்') {
-                return hour < 2 ? hour : hour + 12;
-            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
-                return hour;
-            } else if (meridiem === 'நண்பகல்') {
-                return hour >= 10 ? hour : hour + 12;
-            } else {
-                return hour + 12;
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('te', {
-        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
-            '_'
-        ),
-        monthsShort:
-            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
-                '_'
-            ),
-        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
-        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
-        longDateFormat: {
-            LT: 'A h:mm',
-            LTS: 'A h:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY, A h:mm',
-            LLLL: 'dddd, D MMMM YYYY, A h:mm',
-        },
-        calendar: {
-            sameDay: '[నేడు] LT',
-            nextDay: '[రేపు] LT',
-            nextWeek: 'dddd, LT',
-            lastDay: '[నిన్న] LT',
-            lastWeek: '[గత] dddd, LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s లో',
-            past: '%s క్రితం',
-            s: 'కొన్ని క్షణాలు',
-            ss: '%d సెకన్లు',
-            m: 'ఒక నిమిషం',
-            mm: '%d నిమిషాలు',
-            h: 'ఒక గంట',
-            hh: '%d గంటలు',
-            d: 'ఒక రోజు',
-            dd: '%d రోజులు',
-            M: 'ఒక నెల',
-            MM: '%d నెలలు',
-            y: 'ఒక సంవత్సరం',
-            yy: '%d సంవత్సరాలు',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}వ/,
-        ordinal: '%dవ',
-        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'రాత్రి') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'ఉదయం') {
-                return hour;
-            } else if (meridiem === 'మధ్యాహ్నం') {
-                return hour >= 10 ? hour : hour + 12;
-            } else if (meridiem === 'సాయంత్రం') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'రాత్రి';
-            } else if (hour < 10) {
-                return 'ఉదయం';
-            } else if (hour < 17) {
-                return 'మధ్యాహ్నం';
-            } else if (hour < 20) {
-                return 'సాయంత్రం';
-            } else {
-                return 'రాత్రి';
-            }
-        },
-        week: {
-            dow: 0, // Sunday is the first day of the week.
-            doy: 6, // The week that contains Jan 6th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('tet', {
-        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
-        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
-        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
-        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Ohin iha] LT',
-            nextDay: '[Aban iha] LT',
-            nextWeek: 'dddd [iha] LT',
-            lastDay: '[Horiseik iha] LT',
-            lastWeek: 'dddd [semana kotuk] [iha] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'iha %s',
-            past: '%s liuba',
-            s: 'segundu balun',
-            ss: 'segundu %d',
-            m: 'minutu ida',
-            mm: 'minutu %d',
-            h: 'oras ida',
-            hh: 'oras %d',
-            d: 'loron ida',
-            dd: 'loron %d',
-            M: 'fulan ida',
-            MM: 'fulan %d',
-            y: 'tinan ida',
-            yy: 'tinan %d',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$3 = {
-        0: '-ум',
-        1: '-ум',
-        2: '-юм',
-        3: '-юм',
-        4: '-ум',
-        5: '-ум',
-        6: '-ум',
-        7: '-ум',
-        8: '-ум',
-        9: '-ум',
-        10: '-ум',
-        12: '-ум',
-        13: '-ум',
-        20: '-ум',
-        30: '-юм',
-        40: '-ум',
-        50: '-ум',
-        60: '-ум',
-        70: '-ум',
-        80: '-ум',
-        90: '-ум',
-        100: '-ум',
-    };
-
-    hooks.defineLocale('tg', {
-        months: {
-            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
-                '_'
-            ),
-            standalone:
-                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
-            '_'
-        ),
-        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
-        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Имрӯз соати] LT',
-            nextDay: '[Фардо соати] LT',
-            lastDay: '[Дирӯз соати] LT',
-            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
-            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'баъди %s',
-            past: '%s пеш',
-            s: 'якчанд сония',
-            m: 'як дақиқа',
-            mm: '%d дақиқа',
-            h: 'як соат',
-            hh: '%d соат',
-            d: 'як рӯз',
-            dd: '%d рӯз',
-            M: 'як моҳ',
-            MM: '%d моҳ',
-            y: 'як сол',
-            yy: '%d сол',
-        },
-        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === 'шаб') {
-                return hour < 4 ? hour : hour + 12;
-            } else if (meridiem === 'субҳ') {
-                return hour;
-            } else if (meridiem === 'рӯз') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === 'бегоҳ') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'шаб';
-            } else if (hour < 11) {
-                return 'субҳ';
-            } else if (hour < 16) {
-                return 'рӯз';
-            } else if (hour < 19) {
-                return 'бегоҳ';
-            } else {
-                return 'шаб';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
-        ordinal: function (number) {
-            var a = number % 10,
-                b = number >= 100 ? 100 : null;
-            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('th', {
-        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
-            '_'
-        ),
-        monthsShort:
-            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
-        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
-        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'H:mm',
-            LTS: 'H:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY เวลา H:mm',
-            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
-        },
-        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
-        isPM: function (input) {
-            return input === 'หลังเที่ยง';
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'ก่อนเที่ยง';
-            } else {
-                return 'หลังเที่ยง';
-            }
-        },
-        calendar: {
-            sameDay: '[วันนี้ เวลา] LT',
-            nextDay: '[พรุ่งนี้ เวลา] LT',
-            nextWeek: 'dddd[หน้า เวลา] LT',
-            lastDay: '[เมื่อวานนี้ เวลา] LT',
-            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'อีก %s',
-            past: '%sที่แล้ว',
-            s: 'ไม่กี่วินาที',
-            ss: '%d วินาที',
-            m: '1 นาที',
-            mm: '%d นาที',
-            h: '1 ชั่วโมง',
-            hh: '%d ชั่วโมง',
-            d: '1 วัน',
-            dd: '%d วัน',
-            w: '1 สัปดาห์',
-            ww: '%d สัปดาห์',
-            M: '1 เดือน',
-            MM: '%d เดือน',
-            y: '1 ปี',
-            yy: '%d ปี',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$4 = {
-        1: "'inji",
-        5: "'inji",
-        8: "'inji",
-        70: "'inji",
-        80: "'inji",
-        2: "'nji",
-        7: "'nji",
-        20: "'nji",
-        50: "'nji",
-        3: "'ünji",
-        4: "'ünji",
-        100: "'ünji",
-        6: "'njy",
-        9: "'unjy",
-        10: "'unjy",
-        30: "'unjy",
-        60: "'ynjy",
-        90: "'ynjy",
-    };
-
-    hooks.defineLocale('tk', {
-        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
-        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
-            '_'
-        ),
-        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
-        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün sagat] LT',
-            nextDay: '[ertir sagat] LT',
-            nextWeek: '[indiki] dddd [sagat] LT',
-            lastDay: '[düýn] LT',
-            lastWeek: '[geçen] dddd [sagat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s soň',
-            past: '%s öň',
-            s: 'birnäçe sekunt',
-            m: 'bir minut',
-            mm: '%d minut',
-            h: 'bir sagat',
-            hh: '%d sagat',
-            d: 'bir gün',
-            dd: '%d gün',
-            M: 'bir aý',
-            MM: '%d aý',
-            y: 'bir ýyl',
-            yy: '%d ýyl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'unjy";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('tl-ph', {
-        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-            '_'
-        ),
-        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-            '_'
-        ),
-        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'MM/D/YYYY',
-            LL: 'MMMM D, YYYY',
-            LLL: 'MMMM D, YYYY HH:mm',
-            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: 'LT [ngayong araw]',
-            nextDay: '[Bukas ng] LT',
-            nextWeek: 'LT [sa susunod na] dddd',
-            lastDay: 'LT [kahapon]',
-            lastWeek: 'LT [noong nakaraang] dddd',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'sa loob ng %s',
-            past: '%s ang nakalipas',
-            s: 'ilang segundo',
-            ss: '%d segundo',
-            m: 'isang minuto',
-            mm: '%d minuto',
-            h: 'isang oras',
-            hh: '%d oras',
-            d: 'isang araw',
-            dd: '%d araw',
-            M: 'isang buwan',
-            MM: '%d buwan',
-            y: 'isang taon',
-            yy: '%d taon',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
-
-    function translateFuture(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'leS'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'waQ'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'nem'
-                    : time + ' pIq';
-        return time;
-    }
-
-    function translatePast(output) {
-        var time = output;
-        time =
-            output.indexOf('jaj') !== -1
-                ? time.slice(0, -3) + 'Hu’'
-                : output.indexOf('jar') !== -1
-                  ? time.slice(0, -3) + 'wen'
-                  : output.indexOf('DIS') !== -1
-                    ? time.slice(0, -3) + 'ben'
-                    : time + ' ret';
-        return time;
-    }
-
-    function translate$a(number, withoutSuffix, string, isFuture) {
-        var numberNoun = numberAsNoun(number);
-        switch (string) {
-            case 'ss':
-                return numberNoun + ' lup';
-            case 'mm':
-                return numberNoun + ' tup';
-            case 'hh':
-                return numberNoun + ' rep';
-            case 'dd':
-                return numberNoun + ' jaj';
-            case 'MM':
-                return numberNoun + ' jar';
-            case 'yy':
-                return numberNoun + ' DIS';
-        }
-    }
-
-    function numberAsNoun(number) {
-        var hundred = Math.floor((number % 1000) / 100),
-            ten = Math.floor((number % 100) / 10),
-            one = number % 10,
-            word = '';
-        if (hundred > 0) {
-            word += numbersNouns[hundred] + 'vatlh';
-        }
-        if (ten > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
-        }
-        if (one > 0) {
-            word += (word !== '' ? ' ' : '') + numbersNouns[one];
-        }
-        return word === '' ? 'pagh' : word;
-    }
-
-    hooks.defineLocale('tlh', {
-        months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
-            '_'
-        ),
-        monthsShort:
-            'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
-            '_'
-        ),
-        weekdaysShort:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        weekdaysMin:
-            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[DaHjaj] LT',
-            nextDay: '[wa’leS] LT',
-            nextWeek: 'LLL',
-            lastDay: '[wa’Hu’] LT',
-            lastWeek: 'LLL',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: translateFuture,
-            past: translatePast,
-            s: 'puS lup',
-            ss: translate$a,
-            m: 'wa’ tup',
-            mm: translate$a,
-            h: 'wa’ rep',
-            hh: translate$a,
-            d: 'wa’ jaj',
-            dd: translate$a,
-            M: 'wa’ jar',
-            MM: translate$a,
-            y: 'wa’ DIS',
-            yy: translate$a,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var suffixes$5 = {
-        1: "'inci",
-        5: "'inci",
-        8: "'inci",
-        70: "'inci",
-        80: "'inci",
-        2: "'nci",
-        7: "'nci",
-        20: "'nci",
-        50: "'nci",
-        3: "'üncü",
-        4: "'üncü",
-        100: "'üncü",
-        6: "'ncı",
-        9: "'uncu",
-        10: "'uncu",
-        30: "'uncu",
-        60: "'ıncı",
-        90: "'ıncı",
-    };
-
-    hooks.defineLocale('tr', {
-        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
-            '_'
-        ),
-        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
-        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
-            '_'
-        ),
-        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
-        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'öö' : 'ÖÖ';
-            } else {
-                return isLower ? 'ös' : 'ÖS';
-            }
-        },
-        meridiemParse: /öö|ÖÖ|ös|ÖS/,
-        isPM: function (input) {
-            return input === 'ös' || input === 'ÖS';
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[bugün saat] LT',
-            nextDay: '[yarın saat] LT',
-            nextWeek: '[gelecek] dddd [saat] LT',
-            lastDay: '[dün] LT',
-            lastWeek: '[geçen] dddd [saat] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s sonra',
-            past: '%s önce',
-            s: 'birkaç saniye',
-            ss: '%d saniye',
-            m: 'bir dakika',
-            mm: '%d dakika',
-            h: 'bir saat',
-            hh: '%d saat',
-            d: 'bir gün',
-            dd: '%d gün',
-            w: 'bir hafta',
-            ww: '%d hafta',
-            M: 'bir ay',
-            MM: '%d ay',
-            y: 'bir yıl',
-            yy: '%d yıl',
-        },
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'Do':
-                case 'DD':
-                    return number;
-                default:
-                    if (number === 0) {
-                        // special case for zero
-                        return number + "'ıncı";
-                    }
-                    var a = number % 10,
-                        b = (number % 100) - a,
-                        c = number >= 100 ? 100 : null;
-                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-    // This is currently too difficult (maybe even impossible) to add.
-    hooks.defineLocale('tzl', {
-        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
-            '_'
-        ),
-        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
-        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
-        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
-        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
-        longDateFormat: {
-            LT: 'HH.mm',
-            LTS: 'HH.mm.ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D. MMMM [dallas] YYYY',
-            LLL: 'D. MMMM [dallas] YYYY HH.mm',
-            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
-        },
-        meridiemParse: /d\'o|d\'a/i,
-        isPM: function (input) {
-            return "d'o" === input.toLowerCase();
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours > 11) {
-                return isLower ? "d'o" : "D'O";
-            } else {
-                return isLower ? "d'a" : "D'A";
-            }
-        },
-        calendar: {
-            sameDay: '[oxhi à] LT',
-            nextDay: '[demà à] LT',
-            nextWeek: 'dddd [à] LT',
-            lastDay: '[ieiri à] LT',
-            lastWeek: '[sür el] dddd [lasteu à] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'osprei %s',
-            past: 'ja%s',
-            s: processRelativeTime$a,
-            ss: processRelativeTime$a,
-            m: processRelativeTime$a,
-            mm: processRelativeTime$a,
-            h: processRelativeTime$a,
-            hh: processRelativeTime$a,
-            d: processRelativeTime$a,
-            dd: processRelativeTime$a,
-            M: processRelativeTime$a,
-            MM: processRelativeTime$a,
-            y: processRelativeTime$a,
-            yy: processRelativeTime$a,
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}\./,
-        ordinal: '%d.',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    function processRelativeTime$a(number, withoutSuffix, key, isFuture) {
-        var format = {
-            s: ['viensas secunds', "'iensas secunds"],
-            ss: [number + ' secunds', '' + number + ' secunds'],
-            m: ["'n míut", "'iens míut"],
-            mm: [number + ' míuts', '' + number + ' míuts'],
-            h: ["'n þora", "'iensa þora"],
-            hh: [number + ' þoras', '' + number + ' þoras'],
-            d: ["'n ziua", "'iensa ziua"],
-            dd: [number + ' ziuas', '' + number + ' ziuas'],
-            M: ["'n mes", "'iens mes"],
-            MM: [number + ' mesen', '' + number + ' mesen'],
-            y: ["'n ar", "'iens ar"],
-            yy: [number + ' ars', '' + number + ' ars'],
-        };
-        return isFuture
-            ? format[key][0]
-            : withoutSuffix
-              ? format[key][0]
-              : format[key][1];
-    }
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('tzm-latn', {
-        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-            '_'
-        ),
-        monthsShort:
-            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-                '_'
-            ),
-        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[asdkh g] LT',
-            nextDay: '[aska g] LT',
-            nextWeek: 'dddd [g] LT',
-            lastDay: '[assant g] LT',
-            lastWeek: 'dddd [g] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'dadkh s yan %s',
-            past: 'yan %s',
-            s: 'imik',
-            ss: '%d imik',
-            m: 'minuḍ',
-            mm: '%d minuḍ',
-            h: 'saɛa',
-            hh: '%d tassaɛin',
-            d: 'ass',
-            dd: '%d ossan',
-            M: 'ayowr',
-            MM: '%d iyyirn',
-            y: 'asgas',
-            yy: '%d isgasn',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('tzm', {
-        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-            '_'
-        ),
-        monthsShort:
-            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-                '_'
-            ),
-        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
-            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
-            nextWeek: 'dddd [ⴴ] LT',
-            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
-            lastWeek: 'dddd [ⴴ] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
-            past: 'ⵢⴰⵏ %s',
-            s: 'ⵉⵎⵉⴽ',
-            ss: '%d ⵉⵎⵉⴽ',
-            m: 'ⵎⵉⵏⵓⴺ',
-            mm: '%d ⵎⵉⵏⵓⴺ',
-            h: 'ⵙⴰⵄⴰ',
-            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
-            d: 'ⴰⵙⵙ',
-            dd: '%d oⵙⵙⴰⵏ',
-            M: 'ⴰⵢoⵓⵔ',
-            MM: '%d ⵉⵢⵢⵉⵔⵏ',
-            y: 'ⴰⵙⴳⴰⵙ',
-            yy: '%d ⵉⵙⴳⴰⵙⵏ',
-        },
-        week: {
-            dow: 6, // Saturday is the first day of the week.
-            doy: 12, // The week that contains Jan 12th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('ug-cn', {
-        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-            '_'
-        ),
-        monthsShort:
-            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-                '_'
-            ),
-        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
-            '_'
-        ),
-        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY-MM-DD',
-            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
-            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-        },
-        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (
-                meridiem === 'يېرىم كېچە' ||
-                meridiem === 'سەھەر' ||
-                meridiem === 'چۈشتىن بۇرۇن'
-            ) {
-                return hour;
-            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
-                return hour + 12;
-            } else {
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return 'يېرىم كېچە';
-            } else if (hm < 900) {
-                return 'سەھەر';
-            } else if (hm < 1130) {
-                return 'چۈشتىن بۇرۇن';
-            } else if (hm < 1230) {
-                return 'چۈش';
-            } else if (hm < 1800) {
-                return 'چۈشتىن كېيىن';
-            } else {
-                return 'كەچ';
-            }
-        },
-        calendar: {
-            sameDay: '[بۈگۈن سائەت] LT',
-            nextDay: '[ئەتە سائەت] LT',
-            nextWeek: '[كېلەركى] dddd [سائەت] LT',
-            lastDay: '[تۆنۈگۈن] LT',
-            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s كېيىن',
-            past: '%s بۇرۇن',
-            s: 'نەچچە سېكونت',
-            ss: '%d سېكونت',
-            m: 'بىر مىنۇت',
-            mm: '%d مىنۇت',
-            h: 'بىر سائەت',
-            hh: '%d سائەت',
-            d: 'بىر كۈن',
-            dd: '%d كۈن',
-            M: 'بىر ئاي',
-            MM: '%d ئاي',
-            y: 'بىر يىل',
-            yy: '%d يىل',
-        },
-
-        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '-كۈنى';
-                case 'w':
-                case 'W':
-                    return number + '-ھەپتە';
-                default:
-                    return number;
-            }
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 1st is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    function plural$6(word, num) {
-        var forms = word.split('_');
-        return num % 10 === 1 && num % 100 !== 11
-            ? forms[0]
-            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-              ? forms[1]
-              : forms[2];
-    }
-    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
-        var format = {
-            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
-            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
-            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
-            dd: 'день_дні_днів',
-            MM: 'місяць_місяці_місяців',
-            yy: 'рік_роки_років',
-        };
-        if (key === 'm') {
-            return withoutSuffix ? 'хвилина' : 'хвилину';
-        } else if (key === 'h') {
-            return withoutSuffix ? 'година' : 'годину';
-        } else {
-            return number + ' ' + plural$6(format[key], +number);
-        }
-    }
-    function weekdaysCaseReplace(m, format) {
-        var weekdays = {
-                nominative:
-                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
-                        '_'
-                    ),
-                accusative:
-                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
-                        '_'
-                    ),
-                genitive:
-                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
-                        '_'
-                    ),
-            },
-            nounCase;
-
-        if (m === true) {
-            return weekdays['nominative']
-                .slice(1, 7)
-                .concat(weekdays['nominative'].slice(0, 1));
-        }
-        if (!m) {
-            return weekdays['nominative'];
-        }
-
-        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
-            ? 'accusative'
-            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
-              ? 'genitive'
-              : 'nominative';
-        return weekdays[nounCase][m.day()];
-    }
-    function processHoursFunction(str) {
-        return function () {
-            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
-        };
-    }
-
-    hooks.defineLocale('uk', {
-        months: {
-            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
-                '_'
-            ),
-            standalone:
-                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
-                    '_'
-                ),
-        },
-        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
-            '_'
-        ),
-        weekdays: weekdaysCaseReplace,
-        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD.MM.YYYY',
-            LL: 'D MMMM YYYY р.',
-            LLL: 'D MMMM YYYY р., HH:mm',
-            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
-        },
-        calendar: {
-            sameDay: processHoursFunction('[Сьогодні '),
-            nextDay: processHoursFunction('[Завтра '),
-            lastDay: processHoursFunction('[Вчора '),
-            nextWeek: processHoursFunction('[У] dddd ['),
-            lastWeek: function () {
-                switch (this.day()) {
-                    case 0:
-                    case 3:
-                    case 5:
-                    case 6:
-                        return processHoursFunction('[Минулої] dddd [').call(this);
-                    case 1:
-                    case 2:
-                    case 4:
-                        return processHoursFunction('[Минулого] dddd [').call(this);
-                }
-            },
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'за %s',
-            past: '%s тому',
-            s: 'декілька секунд',
-            ss: relativeTimeWithPlural$4,
-            m: relativeTimeWithPlural$4,
-            mm: relativeTimeWithPlural$4,
-            h: 'годину',
-            hh: relativeTimeWithPlural$4,
-            d: 'день',
-            dd: relativeTimeWithPlural$4,
-            M: 'місяць',
-            MM: relativeTimeWithPlural$4,
-            y: 'рік',
-            yy: relativeTimeWithPlural$4,
-        },
-        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-        meridiemParse: /ночі|ранку|дня|вечора/,
-        isPM: function (input) {
-            return /^(дня|вечора)$/.test(input);
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 4) {
-                return 'ночі';
-            } else if (hour < 12) {
-                return 'ранку';
-            } else if (hour < 17) {
-                return 'дня';
-            } else {
-                return 'вечора';
-            }
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'M':
-                case 'd':
-                case 'DDD':
-                case 'w':
-                case 'W':
-                    return number + '-й';
-                case 'D':
-                    return number + '-го';
-                default:
-                    return number;
-            }
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    var months$b = [
-            'جنوری',
-            'فروری',
-            'مارچ',
-            'اپریل',
-            'مئی',
-            'جون',
-            'جولائی',
-            'اگست',
-            'ستمبر',
-            'اکتوبر',
-            'نومبر',
-            'دسمبر',
-        ],
-        days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
-
-    hooks.defineLocale('ur', {
-        months: months$b,
-        monthsShort: months$b,
-        weekdays: days$2,
-        weekdaysShort: days$2,
-        weekdaysMin: days$2,
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd، D MMMM YYYY HH:mm',
-        },
-        meridiemParse: /صبح|شام/,
-        isPM: function (input) {
-            return 'شام' === input;
-        },
-        meridiem: function (hour, minute, isLower) {
-            if (hour < 12) {
-                return 'صبح';
-            }
-            return 'شام';
-        },
-        calendar: {
-            sameDay: '[آج بوقت] LT',
-            nextDay: '[کل بوقت] LT',
-            nextWeek: 'dddd [بوقت] LT',
-            lastDay: '[گذشتہ روز بوقت] LT',
-            lastWeek: '[گذشتہ] dddd [بوقت] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s بعد',
-            past: '%s قبل',
-            s: 'چند سیکنڈ',
-            ss: '%d سیکنڈ',
-            m: 'ایک منٹ',
-            mm: '%d منٹ',
-            h: 'ایک گھنٹہ',
-            hh: '%d گھنٹے',
-            d: 'ایک دن',
-            dd: '%d دن',
-            M: 'ایک ماہ',
-            MM: '%d ماہ',
-            y: 'ایک سال',
-            yy: '%d سال',
-        },
-        preparse: function (string) {
-            return string.replace(/،/g, ',');
-        },
-        postformat: function (string) {
-            return string.replace(/,/g, '،');
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('uz-latn', {
-        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
-            '_'
-        ),
-        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
-        weekdays:
-            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
-                '_'
-            ),
-        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
-        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Bugun soat] LT [da]',
-            nextDay: '[Ertaga] LT [da]',
-            nextWeek: 'dddd [kuni soat] LT [da]',
-            lastDay: '[Kecha soat] LT [da]',
-            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Yaqin %s ichida',
-            past: 'Bir necha %s oldin',
-            s: 'soniya',
-            ss: '%d soniya',
-            m: 'bir daqiqa',
-            mm: '%d daqiqa',
-            h: 'bir soat',
-            hh: '%d soat',
-            d: 'bir kun',
-            dd: '%d kun',
-            M: 'bir oy',
-            MM: '%d oy',
-            y: 'bir yil',
-            yy: '%d yil',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 7th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('uz', {
-        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-            '_'
-        ),
-        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
-        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
-        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'D MMMM YYYY, dddd HH:mm',
-        },
-        calendar: {
-            sameDay: '[Бугун соат] LT [да]',
-            nextDay: '[Эртага] LT [да]',
-            nextWeek: 'dddd [куни соат] LT [да]',
-            lastDay: '[Кеча соат] LT [да]',
-            lastWeek: '[Утган] dddd [куни соат] LT [да]',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'Якин %s ичида',
-            past: 'Бир неча %s олдин',
-            s: 'фурсат',
-            ss: '%d фурсат',
-            m: 'бир дакика',
-            mm: '%d дакика',
-            h: 'бир соат',
-            hh: '%d соат',
-            d: 'бир кун',
-            dd: '%d кун',
-            M: 'бир ой',
-            MM: '%d ой',
-            y: 'бир йил',
-            yy: '%d йил',
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 7, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('vi', {
-        months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
-            '_'
-        ),
-        monthsShort:
-            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
-            '_'
-        ),
-        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-        weekdaysParseExact: true,
-        meridiemParse: /sa|ch/i,
-        isPM: function (input) {
-            return /^ch$/i.test(input);
-        },
-        meridiem: function (hours, minutes, isLower) {
-            if (hours < 12) {
-                return isLower ? 'sa' : 'SA';
-            } else {
-                return isLower ? 'ch' : 'CH';
-            }
-        },
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM [năm] YYYY',
-            LLL: 'D MMMM [năm] YYYY HH:mm',
-            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
-            l: 'DD/M/YYYY',
-            ll: 'D MMM YYYY',
-            lll: 'D MMM YYYY HH:mm',
-            llll: 'ddd, D MMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[Hôm nay lúc] LT',
-            nextDay: '[Ngày mai lúc] LT',
-            nextWeek: 'dddd [tuần tới lúc] LT',
-            lastDay: '[Hôm qua lúc] LT',
-            lastWeek: 'dddd [tuần trước lúc] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: '%s tới',
-            past: '%s trước',
-            s: 'vài giây',
-            ss: '%d giây',
-            m: 'một phút',
-            mm: '%d phút',
-            h: 'một giờ',
-            hh: '%d giờ',
-            d: 'một ngày',
-            dd: '%d ngày',
-            w: 'một tuần',
-            ww: '%d tuần',
-            M: 'một tháng',
-            MM: '%d tháng',
-            y: 'một năm',
-            yy: '%d năm',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}/,
-        ordinal: function (number) {
-            return number;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('x-pseudo', {
-        months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
-            '_'
-        ),
-        monthsShort:
-            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
-                '_'
-            ),
-        monthsParseExact: true,
-        weekdays:
-            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
-                '_'
-            ),
-        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
-        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
-        weekdaysParseExact: true,
-        longDateFormat: {
-            LT: 'HH:mm',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY HH:mm',
-            LLLL: 'dddd, D MMMM YYYY HH:mm',
-        },
-        calendar: {
-            sameDay: '[T~ódá~ý át] LT',
-            nextDay: '[T~ómó~rró~w át] LT',
-            nextWeek: 'dddd [át] LT',
-            lastDay: '[Ý~ést~érdá~ý át] LT',
-            lastWeek: '[L~ást] dddd [át] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'í~ñ %s',
-            past: '%s á~gó',
-            s: 'á ~féw ~sécó~ñds',
-            ss: '%d s~écóñ~ds',
-            m: 'á ~míñ~úté',
-            mm: '%d m~íñú~tés',
-            h: 'á~ñ hó~úr',
-            hh: '%d h~óúrs',
-            d: 'á ~dáý',
-            dd: '%d d~áýs',
-            M: 'á ~móñ~th',
-            MM: '%d m~óñt~hs',
-            y: 'á ~ýéár',
-            yy: '%d ý~éárs',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    ~~((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('yo', {
-        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
-            '_'
-        ),
-        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
-        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
-        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
-        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
-        longDateFormat: {
-            LT: 'h:mm A',
-            LTS: 'h:mm:ss A',
-            L: 'DD/MM/YYYY',
-            LL: 'D MMMM YYYY',
-            LLL: 'D MMMM YYYY h:mm A',
-            LLLL: 'dddd, D MMMM YYYY h:mm A',
-        },
-        calendar: {
-            sameDay: '[Ònì ni] LT',
-            nextDay: '[Ọ̀la ni] LT',
-            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
-            lastDay: '[Àna ni] LT',
-            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
-            sameElse: 'L',
-        },
-        relativeTime: {
-            future: 'ní %s',
-            past: '%s kọjá',
-            s: 'ìsẹjú aayá die',
-            ss: 'aayá %d',
-            m: 'ìsẹjú kan',
-            mm: 'ìsẹjú %d',
-            h: 'wákati kan',
-            hh: 'wákati %d',
-            d: 'ọjọ́ kan',
-            dd: 'ọjọ́ %d',
-            M: 'osù kan',
-            MM: 'osù %d',
-            y: 'ọdún kan',
-            yy: 'ọdún %d',
-        },
-        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
-        ordinal: 'ọjọ́ %d',
-        week: {
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('zh-cn', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日Ah点mm分',
-            LLLL: 'YYYY年M月D日ddddAh点mm分',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            } else {
-                // '中午'
-                return hour >= 11 ? hour : hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: function (now) {
-                if (now.week() !== this.week()) {
-                    return '[下]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            lastDay: '[昨天]LT',
-            lastWeek: function (now) {
-                if (this.week() !== now.week()) {
-                    return '[上]dddLT';
-                } else {
-                    return '[本]dddLT';
-                }
-            },
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '周';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s后',
-            past: '%s前',
-            s: '几秒',
-            ss: '%d 秒',
-            m: '1 分钟',
-            mm: '%d 分钟',
-            h: '1 小时',
-            hh: '%d 小时',
-            d: '1 天',
-            dd: '%d 天',
-            w: '1 周',
-            ww: '%d 周',
-            M: '1 个月',
-            MM: '%d 个月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-        week: {
-            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-            dow: 1, // Monday is the first day of the week.
-            doy: 4, // The week that contains Jan 4th is the first week of the year.
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('zh-hk', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1200) {
-                return '上午';
-            } else if (hm === 1200) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天]LT',
-            nextDay: '[明天]LT',
-            nextWeek: '[下]ddddLT',
-            lastDay: '[昨天]LT',
-            lastWeek: '[上]ddddLT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('zh-mo', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'DD/MM/YYYY',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'D/M/YYYY',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s內',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    //! moment.js locale configuration
-
-    hooks.defineLocale('zh-tw', {
-        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-            '_'
-        ),
-        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-            '_'
-        ),
-        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-        longDateFormat: {
-            LT: 'HH:mm',
-            LTS: 'HH:mm:ss',
-            L: 'YYYY/MM/DD',
-            LL: 'YYYY年M月D日',
-            LLL: 'YYYY年M月D日 HH:mm',
-            LLLL: 'YYYY年M月D日dddd HH:mm',
-            l: 'YYYY/M/D',
-            ll: 'YYYY年M月D日',
-            lll: 'YYYY年M月D日 HH:mm',
-            llll: 'YYYY年M月D日dddd HH:mm',
-        },
-        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-        meridiemHour: function (hour, meridiem) {
-            if (hour === 12) {
-                hour = 0;
-            }
-            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-                return hour;
-            } else if (meridiem === '中午') {
-                return hour >= 11 ? hour : hour + 12;
-            } else if (meridiem === '下午' || meridiem === '晚上') {
-                return hour + 12;
-            }
-        },
-        meridiem: function (hour, minute, isLower) {
-            var hm = hour * 100 + minute;
-            if (hm < 600) {
-                return '凌晨';
-            } else if (hm < 900) {
-                return '早上';
-            } else if (hm < 1130) {
-                return '上午';
-            } else if (hm < 1230) {
-                return '中午';
-            } else if (hm < 1800) {
-                return '下午';
-            } else {
-                return '晚上';
-            }
-        },
-        calendar: {
-            sameDay: '[今天] LT',
-            nextDay: '[明天] LT',
-            nextWeek: '[下]dddd LT',
-            lastDay: '[昨天] LT',
-            lastWeek: '[上]dddd LT',
-            sameElse: 'L',
-        },
-        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-        ordinal: function (number, period) {
-            switch (period) {
-                case 'd':
-                case 'D':
-                case 'DDD':
-                    return number + '日';
-                case 'M':
-                    return number + '月';
-                case 'w':
-                case 'W':
-                    return number + '週';
-                default:
-                    return number;
-            }
-        },
-        relativeTime: {
-            future: '%s後',
-            past: '%s前',
-            s: '幾秒',
-            ss: '%d 秒',
-            m: '1 分鐘',
-            mm: '%d 分鐘',
-            h: '1 小時',
-            hh: '%d 小時',
-            d: '1 天',
-            dd: '%d 天',
-            M: '1 個月',
-            MM: '%d 個月',
-            y: '1 年',
-            yy: '%d 年',
-        },
-    });
-
-    hooks.locale('en');
-
-    return hooks;
-
-})));
Index: ckend/node_modules/moment/min/moment-with-locales.min.js
===================================================================
--- backend/node_modules/moment/min/moment-with-locales.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var E;function c(){return E.apply(null,arguments)}function F(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function z(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function N(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var a in e)if(l(e,a))return;return 1}function L(e){return void 0===e}function J(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function R(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function C(e,a){for(var t=[],s=e.length,n=0;n<s;++n)t.push(a(e[n],n));return t}function I(e,a){for(var t in a)l(a,t)&&(e[t]=a[t]);return l(a,"toString")&&(e.toString=a.toString),l(a,"valueOf")&&(e.valueOf=a.valueOf),e}function U(e,a,t,s){return Na(e,a,t,s,!0).utc()}function Y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function G(e){var a,t,s=e._d&&!isNaN(e._d.getTime());return s&&(a=Y(e),t=q.call(a.parsedDateParts,function(e){return null!=e}),s=a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t),e._strict)&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e)?s:(e._isValid=s,e._isValid)}function V(e){var a=U(NaN);return null!=e?I(Y(a),e):Y(a).userInvalidated=!0,a}var q=Array.prototype.some||function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1},B=c.momentProperties=[],K=!1;function Z(e,a){var t,s,n,r=B.length;if(L(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),L(a._i)||(e._i=a._i),L(a._f)||(e._f=a._f),L(a._l)||(e._l=a._l),L(a._strict)||(e._strict=a._strict),L(a._tzm)||(e._tzm=a._tzm),L(a._isUTC)||(e._isUTC=a._isUTC),L(a._offset)||(e._offset=a._offset),L(a._pf)||(e._pf=Y(a)),L(a._locale)||(e._locale=a._locale),0<r)for(t=0;t<r;t++)L(n=a[s=B[t]])||(e[s]=n);return e}function $(e){Z(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===K&&(K=!0,c.updateOffset(this),K=!1)}function Q(e){return e instanceof $||null!=e&&null!=e._isAMomentObject}function X(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,d){var _=!0;return I(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,r),_){for(var e,a,t=[],s=arguments.length,n=0;n<s;n++){if(e="","object"==typeof arguments[n]){for(a in e+="\n["+n+"] ",arguments[0])l(arguments[0],a)&&(e+=a+": "+arguments[0][a]+", ");e=e.slice(0,-2)}else e=arguments[n];t.push(e)}X(r+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),_=!1}return d.apply(this,arguments)},d)}var ee={};function ae(e,a){null!=c.deprecationHandler&&c.deprecationHandler(e,a),ee[e]||(X(a),ee[e]=!0)}function te(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function se(e,a){var t,s=I({},e);for(t in a)l(a,t)&&(z(e[t])&&z(a[t])?(s[t]={},I(s[t],e[t]),I(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)l(e,t)&&!l(a,t)&&z(e[t])&&(s[t]=I({},s[t]));return s}function ne(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null;var re=Object.keys||function(e){var a,t=[];for(a in e)l(e,a)&&t.push(a);return t};function de(e,a,t){var s=""+Math.abs(e);return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,a-s.length)).toString().substr(1)+s}var _e=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ie=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,oe={},me={};function s(e,a,t,s){var n="string"==typeof s?function(){return this[s]()}:s;e&&(me[e]=n),a&&(me[a[0]]=function(){return de(n.apply(this,arguments),a[1],a[2])}),t&&(me[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function ue(e,a){return e.isValid()?(a=le(a,e.localeData()),oe[a]=oe[a]||function(s){for(var e,n=s.match(_e),a=0,r=n.length;a<r;a++)me[n[a]]?n[a]=me[n[a]]:n[a]=(e=n[a]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var a="",t=0;t<r;t++)a+=te(n[t])?n[t].call(e,s):n[t];return a}}(a),oe[a](e)):e.localeData().invalidDate()}function le(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(ie.lastIndex=0;0<=t&&ie.test(e);)e=e.replace(ie,s),ie.lastIndex=0,--t;return e}var Me={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function d(e){return"string"==typeof e?Me[e]||Me[e.toLowerCase()]:void 0}function he(e){var a,t,s={};for(t in e)l(e,t)&&(a=d(t))&&(s[a]=e[t]);return s}var ce={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var Le=/\d/,a=/\d\d/,Ye=/\d{3}/,t=/\d{4}/,n=/[+-]?\d{6}/,r=/\d\d?/,ye=/\d\d\d\d?/,_=/\d\d\d\d\d\d?/,fe=/\d{1,3}/,i=/\d{1,4}/,o=/[+-]?\d{1,6}/,ke=/\d+/,pe=/[+-]?\d+/,De=/Z|[+-]\d\d:?\d\d/gi,Te=/Z|[+-]\d\d(?::?\d\d)?/gi,m=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,u=/^[1-9]\d?/,M=/^([1-9]\d|\d)/;function h(e,t,s){be[e]=te(t)?t:function(e,a){return e&&s?s:t}}function ge(e,a){return l(be,e)?be[e](a._strict,a._locale):new RegExp(we(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function we(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function y(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function f(e){var e=+e,a=0;return a=0!=e&&isFinite(e)?y(e):a}var be={},He={};function k(e,t){var a,s,n=t;for("string"==typeof e&&(e=[e]),J(t)&&(n=function(e,a){a[t]=f(e)}),s=e.length,a=0;a<s;a++)He[e[a]]=n}function Se(e,n){k(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}function ve(e){return e%4==0&&e%100!=0||e%400==0}var p=0,je=1,xe=2,D=3,Pe=4,Oe=5,We=6,Ae=7,Ee=8;function Fe(e){return ve(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?de(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),h("Y",pe),h("YY",r,a),h("YYYY",i,t),h("YYYYY",o,n),h("YYYYYY",o,n),k(["YYYYY","YYYYYY"],p),k("YYYY",function(e,a){a[p]=2===e.length?c.parseTwoDigitYear(e):f(e)}),k("YY",function(e,a){a[p]=c.parseTwoDigitYear(e)}),k("Y",function(e,a){a[p]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return f(e)+(68<f(e)?1900:2e3)};var T,ze=Ne("FullYear",!0);function Ne(a,t){return function(e){return null!=e?(Re(this,a,e),c.updateOffset(this,t),this):Je(this,a)}}function Je(e,a){if(!e.isValid())return NaN;var t=e._d,s=e._isUTC;switch(a){case"Milliseconds":return s?t.getUTCMilliseconds():t.getMilliseconds();case"Seconds":return s?t.getUTCSeconds():t.getSeconds();case"Minutes":return s?t.getUTCMinutes():t.getMinutes();case"Hours":return s?t.getUTCHours():t.getHours();case"Date":return s?t.getUTCDate():t.getDate();case"Day":return s?t.getUTCDay():t.getDay();case"Month":return s?t.getUTCMonth():t.getMonth();case"FullYear":return s?t.getUTCFullYear():t.getFullYear();default:return NaN}}function Re(e,a,t){var s,n,r;if(e.isValid()&&!isNaN(t)){switch(s=e._d,n=e._isUTC,a){case"Milliseconds":return n?s.setUTCMilliseconds(t):s.setMilliseconds(t);case"Seconds":return n?s.setUTCSeconds(t):s.setSeconds(t);case"Minutes":return n?s.setUTCMinutes(t):s.setMinutes(t);case"Hours":return n?s.setUTCHours(t):s.setHours(t);case"Date":return n?s.setUTCDate(t):s.setDate(t);case"FullYear":break;default:return}a=t,r=e.month(),e=29!==(e=e.date())||1!==r||ve(a)?e:28,n?s.setUTCFullYear(a,r,e):s.setFullYear(a,r,e)}}function Ce(e,a){var t;return isNaN(e)||isNaN(a)?NaN:(t=(a%(t=12)+t)%t,e+=(a-t)/12,1==t?ve(e)?29:28:31-t%7%2)}T=Array.prototype.indexOf||function(e){for(var a=0;a<this.length;++a)if(this[a]===e)return a;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),h("M",r,u),h("MM",r,a),h("MMM",function(e,a){return a.monthsShortRegex(e)}),h("MMMM",function(e,a){return a.monthsRegex(e)}),k(["M","MM"],function(e,a){a[je]=f(e)-1}),k(["MMM","MMMM"],function(e,a,t,s){s=t._locale.monthsParse(e,s,t._strict);null!=s?a[je]=s:Y(t).invalidMonth=e});var Ie="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ue="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ge=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ve=m,qe=m;function Be(e,a){if(e.isValid()){if("string"==typeof a)if(/^\d+$/.test(a))a=f(a);else if(!J(a=e.localeData().monthsParse(a)))return;var t=(t=e.date())<29?t:Math.min(t,Ce(e.year(),a));e._isUTC?e._d.setUTCMonth(a,t):e._d.setMonth(a,t)}}function Ke(e){return null!=e?(Be(this,e),c.updateOffset(this,!0),this):Je(this,"Month")}function Ze(){function e(e,a){return a.length-e.length}for(var a,t,s=[],n=[],r=[],d=0;d<12;d++)t=U([2e3,d]),a=we(this.monthsShort(t,"")),t=we(this.months(t,"")),s.push(a),n.push(t),r.push(t),r.push(a);s.sort(e),n.sort(e),r.sort(e),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function $e(e,a,t,s,n,r,d){var _;return e<100&&0<=e?(_=new Date(e+400,a,t,s,n,r,d),isFinite(_.getFullYear())&&_.setFullYear(e)):_=new Date(e,a,t,s,n,r,d),_}function Qe(e){var a;return e<100&&0<=e?((a=Array.prototype.slice.call(arguments))[0]=e+400,a=new Date(Date.UTC.apply(null,a)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Xe(e,a,t){t=7+a-t;return t-(7+Qe(e,0,t).getUTCDay()-a)%7-1}function ea(e,a,t,s,n){var r,a=1+7*(a-1)+(7+t-s)%7+Xe(e,s,n),t=a<=0?Fe(r=e-1)+a:a>Fe(e)?(r=e+1,a-Fe(e)):(r=e,a);return{year:r,dayOfYear:t}}function aa(e,a,t){var s,n,r=Xe(e.year(),a,t),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+ta(n=e.year()-1,a,t):r>ta(e.year(),a,t)?(s=r-ta(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function ta(e,a,t){var s=Xe(e,a,t),a=Xe(e+1,a,t);return(Fe(e)-s+a)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",r,u),h("ww",r,a),h("W",r,u),h("WW",r,a),Se(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=f(e)});function sa(e,a){return e.slice(a,7).concat(e.slice(0,a))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",r),h("e",r),h("E",r),h("dd",function(e,a){return a.weekdaysMinRegex(e)}),h("ddd",function(e,a){return a.weekdaysShortRegex(e)}),h("dddd",function(e,a){return a.weekdaysRegex(e)}),Se(["dd","ddd","dddd"],function(e,a,t,s){s=t._locale.weekdaysParse(e,s,t._strict);null!=s?a.d=s:Y(t).invalidWeekday=e}),Se(["d","e","E"],function(e,a,t,s){a[s]=f(e)});var na="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ra="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),da="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),_a=m,ia=m,oa=m;function ma(){function e(e,a){return a.length-e.length}for(var a,t,s,n=[],r=[],d=[],_=[],i=0;i<7;i++)s=U([2e3,1]).day(i),a=we(this.weekdaysMin(s,"")),t=we(this.weekdaysShort(s,"")),s=we(this.weekdays(s,"")),n.push(a),r.push(t),d.push(s),_.push(a),_.push(t),_.push(s);n.sort(e),r.sort(e),d.sort(e),_.sort(e),this._weekdaysRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+n.join("|")+")","i")}function ua(){return this.hours()%12||12}function la(e,a){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Ma(e,a){return a._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,ua),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)}),s("hmmss",0,0,function(){return""+ua.apply(this)+de(this.minutes(),2)+de(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+de(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+de(this.minutes(),2)+de(this.seconds(),2)}),la("a",!0),la("A",!1),h("a",Ma),h("A",Ma),h("H",r,M),h("h",r,u),h("k",r,u),h("HH",r,a),h("hh",r,a),h("kk",r,a),h("hmm",ye),h("hmmss",_),h("Hmm",ye),h("Hmmss",_),k(["H","HH"],D),k(["k","kk"],function(e,a,t){e=f(e);a[D]=24===e?0:e}),k(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),k(["h","hh"],function(e,a,t){a[D]=f(e),Y(t).bigHour=!0}),k("hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s)),Y(t).bigHour=!0}),k("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n)),Y(t).bigHour=!0}),k("Hmm",function(e,a,t){var s=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s))}),k("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[D]=f(e.substr(0,s)),a[Pe]=f(e.substr(s,2)),a[Oe]=f(e.substr(n))});m=Ne("Hours",!0);var ha,ca={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ie,monthsShort:Ue,week:{dow:0,doy:6},weekdays:na,weekdaysMin:da,weekdaysShort:ra,meridiemParse:/[ap]\.?m?\.?/i},g={},La={};function Ya(e){return e&&e.toLowerCase().replace("_","-")}function ya(e){for(var a,t,s,n,r=0;r<e.length;){for(a=(n=Ya(e[r]).split("-")).length,t=(t=Ya(e[r+1]))?t.split("-"):null;0<a;){if(s=fa(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&function(e,a){for(var t=Math.min(e.length,a.length),s=0;s<t;s+=1)if(e[s]!==a[s])return s;return t}(n,t)>=a-1)break;a--}r++}return ha}function fa(a){var e,t;if(void 0===g[a]&&"undefined"!=typeof module&&module&&module.exports&&(t=a)&&t.match("^[^/\\\\]*$"))try{e=ha._abbr,require("./locale/"+a),ka(e)}catch(e){g[a]=null}return g[a]}function ka(e,a){return e&&((a=L(a)?Da(e):pa(e,a))?ha=a:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ha._abbr}function pa(e,a){if(null===a)return delete g[e],null;var t,s=ca;if(a.abbr=e,null!=g[e])ae("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=g[e]._config;else if(null!=a.parentLocale)if(null!=g[a.parentLocale])s=g[a.parentLocale]._config;else{if(null==(t=fa(a.parentLocale)))return La[a.parentLocale]||(La[a.parentLocale]=[]),La[a.parentLocale].push({name:e,config:a}),null;s=t._config}return g[e]=new ne(se(s,a)),La[e]&&La[e].forEach(function(e){pa(e.name,e.config)}),ka(e),g[e]}function Da(e){var a;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ha;if(!F(e)){if(a=fa(e))return a;e=[e]}return ya(e)}function Ta(e){var a=e._a;return a&&-2===Y(e).overflow&&(a=a[je]<0||11<a[je]?je:a[xe]<1||a[xe]>Ce(a[p],a[je])?xe:a[D]<0||24<a[D]||24===a[D]&&(0!==a[Pe]||0!==a[Oe]||0!==a[We])?D:a[Pe]<0||59<a[Pe]?Pe:a[Oe]<0||59<a[Oe]?Oe:a[We]<0||999<a[We]?We:-1,Y(e)._overflowDayOfYear&&(a<p||xe<a)&&(a=xe),Y(e)._overflowWeeks&&-1===a&&(a=Ae),Y(e)._overflowWeekday&&-1===a&&(a=Ee),Y(e).overflow=a),e}var ga=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wa=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ba=/Z|[+-]\d\d(?::?\d\d)?/,Ha=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Sa=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],va=/^\/?Date\((-?\d+)/i,ja=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,xa={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Pa(e){var a,t,s,n,r,d,_=e._i,i=ga.exec(_)||wa.exec(_),_=Ha.length,o=Sa.length;if(i){for(Y(e).iso=!0,a=0,t=_;a<t;a++)if(Ha[a][1].exec(i[1])){n=Ha[a][0],s=!1!==Ha[a][2];break}if(null==n)e._isValid=!1;else{if(i[3]){for(a=0,t=o;a<t;a++)if(Sa[a][1].exec(i[3])){r=(i[2]||" ")+Sa[a][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(i[4]){if(!ba.exec(i[4]))return void(e._isValid=!1);d="Z"}e._f=n+(r||"")+(d||""),Fa(e)}else e._isValid=!1}}else e._isValid=!1}function Oa(e,a,t,s,n,r){e=[function(e){e=parseInt(e,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(e),Ue.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return r&&e.push(parseInt(r,10)),e}function Wa(e){var a,t,s=ja.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));s?(a=Oa(s[4],s[3],s[2],s[5],s[6],s[7]),function(e,a,t){if(!e||ra.indexOf(e)===new Date(a[0],a[1],a[2]).getDay())return 1;Y(t).weekdayMismatch=!0,t._isValid=!1}(s[1],a,e)&&(e._a=a,e._tzm=(a=s[8],t=s[9],s=s[10],a?xa[a]:t?0:60*(((a=parseInt(s,10))-(t=a%100))/100)+t),e._d=Qe.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Y(e).rfc2822=!0)):e._isValid=!1}function Aa(e,a,t){return null!=e?e:null!=a?a:t}function Ea(e){var a,t,s,n,r,d,_,i,o,m,u,l=[];if(!e._d){for(s=e,n=new Date(c.now()),t=s._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()],e._w&&null==e._a[xe]&&null==e._a[je]&&(null!=(n=(s=e)._w).GG||null!=n.W||null!=n.E?(i=1,o=4,r=Aa(n.GG,s._a[p],aa(w(),1,4).year),d=Aa(n.W,1),((_=Aa(n.E,1))<1||7<_)&&(m=!0)):(i=s._locale._week.dow,o=s._locale._week.doy,u=aa(w(),i,o),r=Aa(n.gg,s._a[p],u.year),d=Aa(n.w,u.week),null!=n.d?((_=n.d)<0||6<_)&&(m=!0):null!=n.e?(_=n.e+i,(n.e<0||6<n.e)&&(m=!0)):_=i),d<1||d>ta(r,i,o)?Y(s)._overflowWeeks=!0:null!=m?Y(s)._overflowWeekday=!0:(u=ea(r,d,_,i,o),s._a[p]=u.year,s._dayOfYear=u.dayOfYear)),null!=e._dayOfYear&&(n=Aa(e._a[p],t[p]),(e._dayOfYear>Fe(n)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),m=Qe(n,0,e._dayOfYear),e._a[je]=m.getUTCMonth(),e._a[xe]=m.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=l[a]=t[a];for(;a<7;a++)e._a[a]=l[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[D]&&0===e._a[Pe]&&0===e._a[Oe]&&0===e._a[We]&&(e._nextDay=!0,e._a[D]=0),e._d=(e._useUTC?Qe:$e).apply(null,l),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[D]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(Y(e).weekdayMismatch=!0)}}function Fa(e){if(e._f===c.ISO_8601)Pa(e);else if(e._f===c.RFC_2822)Wa(e);else{e._a=[],Y(e).empty=!0;for(var a,t,s,n,r,d=""+e._i,_=d.length,i=0,o=le(e._f,e._locale).match(_e)||[],m=o.length,u=0;u<m;u++)t=o[u],(a=(d.match(ge(t,e))||[])[0])&&(0<(s=d.substr(0,d.indexOf(a))).length&&Y(e).unusedInput.push(s),d=d.slice(d.indexOf(a)+a.length),i+=a.length),me[t]?(a?Y(e).empty=!1:Y(e).unusedTokens.push(t),s=t,r=e,null!=(n=a)&&l(He,s)&&He[s](n,r._a,r,s)):e._strict&&!a&&Y(e).unusedTokens.push(t);Y(e).charsLeftOver=_-i,0<d.length&&Y(e).unusedInput.push(d),e._a[D]<=12&&!0===Y(e).bigHour&&0<e._a[D]&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[D]=function(e,a,t){if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):null!=e.isPM?((e=e.isPM(t))&&a<12&&(a+=12),a=e||12!==a?a:0):a}(e._locale,e._a[D],e._meridiem),null!==(_=Y(e).era)&&(e._a[p]=e._locale.erasConvertYear(_,e._a[p])),Ea(e),Ta(e)}}function za(e){var a,t,s,n=e._i,r=e._f;if(e._locale=e._locale||Da(e._l),null===n||void 0===r&&""===n)return V({nullInput:!0});if("string"==typeof n&&(e._i=n=e._locale.preparse(n)),Q(n))return new $(Ta(n));if(R(n))e._d=n;else if(F(r)){var d,_,i,o,m,u,l=e,M=!1,h=l._f.length;if(0===h)Y(l).invalidFormat=!0,l._d=new Date(NaN);else{for(o=0;o<h;o++)m=0,u=!1,d=Z({},l),null!=l._useUTC&&(d._useUTC=l._useUTC),d._f=l._f[o],Fa(d),G(d)&&(u=!0),m=(m+=Y(d).charsLeftOver)+10*Y(d).unusedTokens.length,Y(d).score=m,M?m<i&&(i=m,_=d):(null==i||m<i||u)&&(i=m,_=d,u)&&(M=!0);I(l,_||d)}}else if(r)Fa(e);else if(L(r=(n=e)._i))n._d=new Date(c.now());else R(r)?n._d=new Date(r.valueOf()):"string"==typeof r?(t=n,null!==(a=va.exec(t._i))?t._d=new Date(+a[1]):(Pa(t),!1===t._isValid&&(delete t._isValid,Wa(t),!1===t._isValid)&&(delete t._isValid,t._strict?t._isValid=!1:c.createFromInputFallback(t)))):F(r)?(n._a=C(r.slice(0),function(e){return parseInt(e,10)}),Ea(n)):z(r)?(a=n)._d||(s=void 0===(t=he(a._i)).day?t.date:t.day,a._a=C([t.year,t.month,s,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),Ea(a)):J(r)?n._d=new Date(r):c.createFromInputFallback(n);return G(e)||(e._d=null),e}function Na(e,a,t,s,n){var r={};return!0!==a&&!1!==a||(s=a,a=void 0),!0!==t&&!1!==t||(s=t,t=void 0),(z(e)&&N(e)||F(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=t,r._i=e,r._f=a,r._strict=s,(n=new $(Ta(za(n=r))))._nextDay&&(n.add(1,"d"),n._nextDay=void 0),n}function w(e,a,t,s){return Na(e,a,t,s,!1)}c.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};ye=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=w.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:V()}),_=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=w.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:V()});function Ja(e,a){var t,s;if(!(a=1===a.length&&F(a[0])?a[0]:a).length)return w();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var Ra=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ca(e){var e=he(e),a=e.year||0,t=e.quarter||0,s=e.month||0,n=e.week||e.isoWeek||0,r=e.day||0,d=e.hour||0,_=e.minute||0,i=e.second||0,o=e.millisecond||0;this._isValid=function(e){var a,t,s=!1,n=Ra.length;for(a in e)if(l(e,a)&&(-1===T.call(Ra,a)||null!=e[a]&&isNaN(e[a])))return!1;for(t=0;t<n;++t)if(e[Ra[t]]){if(s)return!1;parseFloat(e[Ra[t]])!==f(e[Ra[t]])&&(s=!0)}return!0}(e),this._milliseconds=+o+1e3*i+6e4*_+1e3*d*60*60,this._days=+r+7*n,this._months=+s+3*t+12*a,this._data={},this._locale=Da(),this._bubble()}function Ia(e){return e instanceof Ca}function Ua(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ga(e,t){s(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+de(~~(e/60),2)+t+de(~~e%60,2)})}Ga("Z",":"),Ga("ZZ",""),h("Z",Te),h("ZZ",Te),k(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=qa(Te,e)});var Va=/([\+\-]|\d\d)/gi;function qa(e,a){var a=(a||"").match(e);return null===a?null:0===(a=60*(e=((a[a.length-1]||[])+"").match(Va)||["-",0,0])[1]+f(e[2]))?0:"+"===e[0]?a:-a}function Ba(e,a){var t;return a._isUTC?(a=a.clone(),t=(Q(e)||R(e)?e:w(e)).valueOf()-a.valueOf(),a._d.setTime(a._d.valueOf()+t),c.updateOffset(a,!1),a):w(e).local()}function Ka(e){return-Math.round(e._d.getTimezoneOffset())}function Za(){return!!this.isValid()&&this._isUTC&&0===this._offset}c.updateOffset=function(){};var $a=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Qa=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Xa(e,a){var t,s=e;return Ia(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:J(e)||!isNaN(+e)?(s={},a?s[a]=+e:s.milliseconds=+e):(a=$a.exec(e))?(t="-"===a[1]?-1:1,s={y:0,d:f(a[xe])*t,h:f(a[D])*t,m:f(a[Pe])*t,s:f(a[Oe])*t,ms:f(Ua(1e3*a[We]))*t}):(a=Qa.exec(e))?(t="-"===a[1]?-1:1,s={y:et(a[2],t),M:et(a[3],t),w:et(a[4],t),d:et(a[5],t),h:et(a[6],t),m:et(a[7],t),s:et(a[8],t)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(a=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=Ba(a,e),e.isBefore(a)?t=at(e,a):((t=at(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(w(s.from),w(s.to)),(s={}).ms=a.milliseconds,s.M=a.months),t=new Ca(s),Ia(e)&&l(e,"_locale")&&(t._locale=e._locale),Ia(e)&&l(e,"_isValid")&&(t._isValid=e._isValid),t}function et(e,a){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*a}function at(e,a){var t={};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=+a-+e.clone().add(t.months,"M"),t}function tt(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(ae(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),st(this,Xa(e,a),s),this}}function st(e,a,t,s){var n=a._milliseconds,r=Ua(a._days),a=Ua(a._months);e.isValid()&&(s=null==s||s,a&&Be(e,Je(e,"Month")+a*t),r&&Re(e,"Date",Je(e,"Date")+r*t),n&&e._d.setTime(e._d.valueOf()+n*t),s)&&c.updateOffset(e,r||a)}Xa.fn=Ca.prototype,Xa.invalid=function(){return Xa(NaN)};Ie=tt(1,"add"),na=tt(-1,"subtract");function nt(e){return"string"==typeof e||e instanceof String}function rt(e){return Q(e)||R(e)||nt(e)||J(e)||function(a){var e=F(a),t=!1;e&&(t=0===a.filter(function(e){return!J(e)&&nt(a)}).length);return e&&t}(e)||function(e){var a,t,s=z(e)&&!N(e),n=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],d=r.length;for(a=0;a<d;a+=1)t=r[a],n=n||l(e,t);return s&&n}(e)||null==e}function dt(e,a){var t,s;return e.date()<a.date()?-dt(a,e):-((t=12*(a.year()-e.year())+(a.month()-e.month()))+(a-(s=e.clone().add(t,"months"))<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(1+t,"months")-s)))||0}function _t(e){return void 0===e?this._locale._abbr:(null!=(e=Da(e))&&(this._locale=e),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";da=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function it(){return this._locale}var ot=126227808e5;function mt(e,a){return(e%a+a)%a}function ut(e,a,t){return e<100&&0<=e?new Date(e+400,a,t)-ot:new Date(e,a,t).valueOf()}function lt(e,a,t){return e<100&&0<=e?Date.UTC(e+400,a,t)-ot:Date.UTC(e,a,t)}function Mt(e,a){return a.erasAbbrRegex(e)}function ht(){for(var e,a,t,s=[],n=[],r=[],d=[],_=this.eras(),i=0,o=_.length;i<o;++i)e=we(_[i].name),a=we(_[i].abbr),t=we(_[i].narrow),n.push(e),s.push(a),r.push(t),d.push(e),d.push(a),d.push(t);this._erasRegex=new RegExp("^("+d.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+n.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function ct(e,a){s(0,[e,e.length],0,a)}function Lt(e,a,t,s,n){var r;return null==e?aa(this,s,n).year:(r=ta(e,s,n),function(e,a,t,s,n){e=ea(e,a,t,s,n),a=Qe(e.year,0,e.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,a=r<a?r:a,t,s,n))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),h("N",Mt),h("NN",Mt),h("NNN",Mt),h("NNNN",function(e,a){return a.erasNameRegex(e)}),h("NNNNN",function(e,a){return a.erasNarrowRegex(e)}),k(["N","NN","NNN","NNNN","NNNNN"],function(e,a,t,s){s=t._locale.erasParse(e,s,t._strict);s?Y(t).era=s:Y(t).invalidEra=e}),h("y",ke),h("yy",ke),h("yyy",ke),h("yyyy",ke),h("yo",function(e,a){return a._eraYearOrdinalRegex||ke}),k(["y","yy","yyy","yyyy"],p),k(["yo"],function(e,a,t,s){var n;t._locale._eraYearOrdinalRegex&&(n=e.match(t._locale._eraYearOrdinalRegex)),t._locale.eraYearOrdinalParse?a[p]=t._locale.eraYearOrdinalParse(e,n):a[p]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ct("gggg","weekYear"),ct("ggggg","weekYear"),ct("GGGG","isoWeekYear"),ct("GGGGG","isoWeekYear"),h("G",pe),h("g",pe),h("GG",r,a),h("gg",r,a),h("GGGG",i,t),h("gggg",i,t),h("GGGGG",o,n),h("ggggg",o,n),Se(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=f(e)}),Se(["gg","GG"],function(e,a,t,s){a[s]=c.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),h("Q",Le),k("Q",function(e,a){a[je]=3*(f(e)-1)}),s("D",["DD",2],"Do","date"),h("D",r,u),h("DD",r,a),h("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),k(["D","DD"],xe),k("Do",function(e,a){a[xe]=f(e.match(r)[0])});i=Ne("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),h("DDD",fe),h("DDDD",Ye),k(["DDD","DDDD"],function(e,a,t){t._dayOfYear=f(e)}),s("m",["mm",2],0,"minute"),h("m",r,M),h("mm",r,a),k(["m","mm"],Pe);var Yt,t=Ne("Minutes",!1),o=(s("s",["ss",2],0,"second"),h("s",r,M),h("ss",r,a),k(["s","ss"],Oe),Ne("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),h("S",fe,Le),h("SS",fe,a),h("SSS",fe,Ye),Yt="SSSS";Yt.length<=9;Yt+="S")h(Yt,ke);function yt(e,a){a[We]=f(1e3*("0."+e))}for(Yt="S";Yt.length<=9;Yt+="S")k(Yt,yt);n=Ne("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");u=$.prototype;function ft(e){return e}u.add=Ie,u.calendar=function(e,a){1===arguments.length&&(arguments[0]?rt(arguments[0])?(e=arguments[0],a=void 0):function(e){for(var a=z(e)&&!N(e),t=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],n=0;n<s.length;n+=1)t=t||l(e,s[n]);return a&&t}(arguments[0])&&(a=arguments[0],e=void 0):a=e=void 0);var e=e||w(),t=Ba(e,this).startOf("day"),t=c.calendarFormat(this,t)||"sameElse",a=a&&(te(a[t])?a[t].call(this,e):a[t]);return this.format(a||this.localeData().calendar(t,this,w(e)))},u.clone=function(){return new $(this)},u.diff=function(e,a,t){var s,n,r;if(!this.isValid())return NaN;if(!(s=Ba(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=d(a)){case"year":r=dt(this,s)/12;break;case"month":r=dt(this,s);break;case"quarter":r=dt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-n)/864e5;break;case"week":r=(this-s-n)/6048e5;break;default:r=this-s}return t?r:y(r)},u.endOf=function(e){var a,t;if(void 0!==(e=d(e))&&"millisecond"!==e&&this.isValid()){switch(t=this._isUTC?lt:ut,e){case"year":a=t(this.year()+1,0,1)-1;break;case"quarter":a=t(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":a=t(this.year(),this.month()+1,1)-1;break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":a=t(this.year(),this.month(),this.date()+1)-1;break;case"hour":a=this._d.valueOf(),a+=36e5-mt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":a=this._d.valueOf(),a+=6e4-mt(a,6e4)-1;break;case"second":a=this._d.valueOf(),a+=1e3-mt(a,1e3)-1;break}this._d.setTime(a),c.updateOffset(this,!0)}return this},u.format=function(e){return e=e||(this.isUtc()?c.defaultFormatUtc:c.defaultFormat),e=ue(this,e),this.localeData().postformat(e)},u.from=function(e,a){return this.isValid()&&(Q(e)&&e.isValid()||w(e).isValid())?Xa({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},u.fromNow=function(e){return this.from(w(),e)},u.to=function(e,a){return this.isValid()&&(Q(e)&&e.isValid()||w(e).isValid())?Xa({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},u.toNow=function(e){return this.to(w(),e)},u.get=function(e){return te(this[e=d(e)])?this[e]():this},u.invalidAt=function(){return Y(this).overflow},u.isAfter=function(e,a){return e=Q(e)?e:w(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(a).valueOf())},u.isBefore=function(e,a){return e=Q(e)?e:w(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(a).valueOf()<e.valueOf())},u.isBetween=function(e,a,t,s){return e=Q(e)?e:w(e),a=Q(a)?a:w(a),!!(this.isValid()&&e.isValid()&&a.isValid())&&("("===(s=s||"()")[0]?this.isAfter(e,t):!this.isBefore(e,t))&&(")"===s[1]?this.isBefore(a,t):!this.isAfter(a,t))},u.isSame=function(e,a){var e=Q(e)?e:w(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(a=d(a)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(a).valueOf()<=e&&e<=this.clone().endOf(a).valueOf()))},u.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},u.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},u.isValid=function(){return G(this)},u.lang=da,u.locale=_t,u.localeData=it,u.max=_,u.min=ye,u.parsingFlags=function(){return I({},Y(this))},u.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a,t=[];for(a in e)l(e,a)&&t.push({unit:a,priority:ce[a]});return t.sort(function(e,a){return e.priority-a.priority}),t}(e=he(e)),s=t.length,n=0;n<s;n++)this[t[n].unit](e[t[n].unit]);else if(te(this[e=d(e)]))return this[e](a);return this},u.startOf=function(e){var a,t;if(void 0!==(e=d(e))&&"millisecond"!==e&&this.isValid()){switch(t=this._isUTC?lt:ut,e){case"year":a=t(this.year(),0,1);break;case"quarter":a=t(this.year(),this.month()-this.month()%3,1);break;case"month":a=t(this.year(),this.month(),1);break;case"week":a=t(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":a=t(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":a=t(this.year(),this.month(),this.date());break;case"hour":a=this._d.valueOf(),a-=mt(a+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":a=this._d.valueOf(),a-=mt(a,6e4);break;case"second":a=this._d.valueOf(),a-=mt(a,1e3);break}this._d.setTime(a),c.updateOffset(this,!0)}return this},u.subtract=na,u.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},u.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},u.toDate=function(){return new Date(this.valueOf())},u.toISOString=function(e){var a;return this.isValid()?(a=(e=!0!==e)?this.clone().utc():this).year()<0||9999<a.year()?ue(a,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):te(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",ue(a,"Z")):ue(a,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ"):null},u.inspect=function(){var e,a,t;return this.isValid()?(a="moment",e="",this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z"),a="["+a+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(a+t+"-MM-DD[T]HH:mm:ss.SSS"+(e+'[")]'))):"moment.invalid(/* "+this._i+" */)"},"undefined"!=typeof Symbol&&null!=Symbol.for&&(u[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].name;if(a[t].until<=e&&e<=a[t].since)return a[t].name}return""},u.eraNarrow=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].narrow;if(a[t].until<=e&&e<=a[t].since)return a[t].narrow}return""},u.eraAbbr=function(){for(var e,a=this.localeData().eras(),t=0,s=a.length;t<s;++t){if(e=this.clone().startOf("day").valueOf(),a[t].since<=e&&e<=a[t].until)return a[t].abbr;if(a[t].until<=e&&e<=a[t].since)return a[t].abbr}return""},u.eraYear=function(){for(var e,a,t=this.localeData().eras(),s=0,n=t.length;s<n;++s)if(e=t[s].since<=t[s].until?1:-1,a=this.clone().startOf("day").valueOf(),t[s].since<=a&&a<=t[s].until||t[s].until<=a&&a<=t[s].since)return(this.year()-c(t[s].since).year())*e+t[s].offset;return this.year()},u.year=ze,u.isLeapYear=function(){return ve(this.year())},u.weekYear=function(e){return Lt.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},u.isoWeekYear=function(e){return Lt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},u.quarter=u.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},u.month=Ke,u.daysInMonth=function(){return Ce(this.year(),this.month())},u.week=u.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},u.isoWeek=u.isoWeeks=function(e){var a=aa(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},u.weeksInYear=function(){var e=this.localeData()._week;return ta(this.year(),e.dow,e.doy)},u.weeksInWeekYear=function(){var e=this.localeData()._week;return ta(this.weekYear(),e.dow,e.doy)},u.isoWeeksInYear=function(){return ta(this.year(),1,4)},u.isoWeeksInISOWeekYear=function(){return ta(this.isoWeekYear(),1,4)},u.date=i,u.day=u.days=function(e){var a,t,s;return this.isValid()?(a=Je(this,"Day"),null!=e?(t=e,s=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=s.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-a,"d")):a):null!=e?this:NaN},u.weekday=function(e){var a;return this.isValid()?(a=(this.day()+7-this.localeData()._week.dow)%7,null==e?a:this.add(e-a,"d")):null!=e?this:NaN},u.isoWeekday=function(e){var a,t;return this.isValid()?null!=e?(a=e,t=this.localeData(),t="string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a,this.day(this.day()%7?t:t-7)):this.day()||7:null!=e?this:NaN},u.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},u.hour=u.hours=m,u.minute=u.minutes=t,u.second=u.seconds=o,u.millisecond=u.milliseconds=n,u.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ka(this);if("string"==typeof e){if(null===(e=qa(Te,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ka(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?st(this,Xa(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},u.utc=function(e){return this.utcOffset(0,e)},u.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e)&&this.subtract(Ka(this),"m"),this},u.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=qa(De,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},u.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?w(e).utcOffset():0,(this.utcOffset()-e)%60==0)},u.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=Za,u.isUTC=Za,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",i),u.months=e("months accessor is deprecated. Use month instead",Ke),u.years=e("years accessor is deprecated. Use year instead",ze),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,a),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,a;return L(this._isDSTShifted)&&(Z(e={},this),(e=za(e))._a?(a=(e._isUTC?U:w)(e._a),this._isDSTShifted=this.isValid()&&0<function(e,a,t){for(var s=Math.min(e.length,a.length),n=Math.abs(e.length-a.length),r=0,d=0;d<s;d++)(t&&e[d]!==a[d]||!t&&f(e[d])!==f(a[d]))&&r++;return r+n}(e._a,a.toArray())):this._isDSTShifted=!1),this._isDSTShifted});M=ne.prototype;function kt(e,a,t,s){var n=Da(),s=U().set(s,a);return n[t](s,e)}function pt(e,a,t){if(J(e)&&(a=e,e=void 0),e=e||"",null!=a)return kt(e,a,t,"month");for(var s=[],n=0;n<12;n++)s[n]=kt(e,n,t,"month");return s}function Dt(e,a,t,s){a=("boolean"==typeof e?J(a)&&(t=a,a=void 0):(a=e,e=!1,J(t=a)&&(t=a,a=void 0)),a||"");var n,r=Da(),d=e?r._week.dow:0,_=[];if(null!=t)return kt(a,(t+d)%7,s,"day");for(n=0;n<7;n++)_[n]=kt(a,(n+d)%7,s,"day");return _}M.calendar=function(e,a,t){return te(e=this._calendar[e]||this._calendar.sameElse)?e.call(a,t):e},M.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.match(_e).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},M.invalidDate=function(){return this._invalidDate},M.ordinal=function(e){return this._ordinal.replace("%d",e)},M.preparse=ft,M.postformat=ft,M.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return te(n)?n(e,a,t,s):n.replace(/%d/i,e)},M.pastFuture=function(e,a){return te(e=this._relativeTime[0<e?"future":"past"])?e(a):e.replace(/%s/i,a)},M.set=function(e){var a,t;for(t in e)l(e,t)&&(te(a=e[t])?this[t]=a:this["_"+t]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},M.eras=function(e,a){for(var t,s=this._eras||Da("en")._eras,n=0,r=s.length;n<r;++n){switch(typeof s[n].since){case"string":t=c(s[n].since).startOf("day"),s[n].since=t.valueOf();break}switch(typeof s[n].until){case"undefined":s[n].until=1/0;break;case"string":t=c(s[n].until).startOf("day").valueOf(),s[n].until=t.valueOf();break}}return s},M.erasParse=function(e,a,t){var s,n,r,d,_,i=this.eras();for(e=e.toUpperCase(),s=0,n=i.length;s<n;++s)if(r=i[s].name.toUpperCase(),d=i[s].abbr.toUpperCase(),_=i[s].narrow.toUpperCase(),t)switch(a){case"N":case"NN":case"NNN":if(d===e)return i[s];break;case"NNNN":if(r===e)return i[s];break;case"NNNNN":if(_===e)return i[s];break}else if(0<=[r,d,_].indexOf(e))return i[s]},M.erasConvertYear=function(e,a){var t=e.since<=e.until?1:-1;return void 0===a?c(e.since).year():c(e.since).year()+(a-e.offset)*t},M.erasAbbrRegex=function(e){return l(this,"_erasAbbrRegex")||ht.call(this),e?this._erasAbbrRegex:this._erasRegex},M.erasNameRegex=function(e){return l(this,"_erasNameRegex")||ht.call(this),e?this._erasNameRegex:this._erasRegex},M.erasNarrowRegex=function(e){return l(this,"_erasNarrowRegex")||ht.call(this),e?this._erasNarrowRegex:this._erasRegex},M.months=function(e,a){return e?(F(this._months)?this._months:this._months[(this._months.isFormat||Ge).test(a)?"format":"standalone"])[e.month()]:F(this._months)?this._months:this._months.standalone},M.monthsShort=function(e,a){return e?(F(this._monthsShort)?this._monthsShort:this._monthsShort[Ge.test(a)?"format":"standalone"])[e.month()]:F(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},M.monthsParse=function(e,a,t){var s,n;if(this._monthsParseExact)return function(e,a,t){var s,n,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=U([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=T.call(this._shortMonthsParse,e))?n:null:-1!==(n=T.call(this._longMonthsParse,e))?n:null:"MMM"===a?-1!==(n=T.call(this._shortMonthsParse,e))||-1!==(n=T.call(this._longMonthsParse,e))?n:null:-1!==(n=T.call(this._longMonthsParse,e))||-1!==(n=T.call(this._shortMonthsParse,e))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=U([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(n="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},M.monthsRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(l(this,"_monthsRegex")||(this._monthsRegex=qe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},M.monthsShortRegex=function(e){return this._monthsParseExact?(l(this,"_monthsRegex")||Ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(l(this,"_monthsShortRegex")||(this._monthsShortRegex=Ve),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},M.week=function(e){return aa(e,this._week.dow,this._week.doy).week},M.firstDayOfYear=function(){return this._week.doy},M.firstDayOfWeek=function(){return this._week.dow},M.weekdays=function(e,a){return a=F(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(a)?"format":"standalone"],!0===e?sa(a,this._week.dow):e?a[e.day()]:a},M.weekdaysMin=function(e){return!0===e?sa(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},M.weekdaysShort=function(e){return!0===e?sa(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},M.weekdaysParse=function(e,a,t){var s,n;if(this._weekdaysParseExact)return function(e,a,t){var s,n,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=U([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=T.call(this._weekdaysParse,e))?n:null:"ddd"===a?-1!==(n=T.call(this._shortWeekdaysParse,e))?n:null:-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:"dddd"===a?-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._shortWeekdaysParse,e))||-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:"ddd"===a?-1!==(n=T.call(this._shortWeekdaysParse,e))||-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._minWeekdaysParse,e))?n:null:-1!==(n=T.call(this._minWeekdaysParse,e))||-1!==(n=T.call(this._weekdaysParse,e))||-1!==(n=T.call(this._shortWeekdaysParse,e))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=U([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(n="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(n.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},M.weekdaysRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=_a),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},M.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=ia),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},M.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||ma.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=oa),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},M.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},M.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},ka("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===f(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.lang=e("moment.lang is deprecated. Use moment.locale instead.",ka),c.langData=e("moment.langData is deprecated. Use moment.localeData instead.",Da);var Tt=Math.abs;function gt(e,a,t,s){a=Xa(a,t);return e._milliseconds+=s*a._milliseconds,e._days+=s*a._days,e._months+=s*a._months,e._bubble()}function wt(e){return e<0?Math.floor(e):Math.ceil(e)}function bt(e){return 4800*e/146097}function Ht(e){return 146097*e/4800}function St(e){return function(){return this.as(e)}}Le=St("ms"),a=St("s"),fe=St("m"),Ye=St("h"),Ie=St("d"),_=St("w"),ye=St("M"),na=St("Q"),m=St("y"),t=Le;function vt(e){return function(){return this.isValid()?this._data[e]:NaN}}var o=vt("milliseconds"),n=vt("seconds"),i=vt("minutes"),ze=vt("hours"),M=vt("days"),jt=vt("months"),xt=vt("years");var Pt=Math.round,Ot={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Wt(e,a,t,s){var n=Xa(e).abs(),r=Pt(n.as("s")),d=Pt(n.as("m")),_=Pt(n.as("h")),i=Pt(n.as("d")),o=Pt(n.as("M")),m=Pt(n.as("w")),n=Pt(n.as("y")),r=(r<=t.ss?["s",r]:r<t.s&&["ss",r])||(d<=1?["m"]:d<t.m&&["mm",d])||(_<=1?["h"]:_<t.h&&["hh",_])||(i<=1?["d"]:i<t.d&&["dd",i]);return(r=(r=null!=t.w?r||(m<=1?["w"]:m<t.w&&["ww",m]):r)||(o<=1?["M"]:o<t.M&&["MM",o])||(n<=1?["y"]:["yy",n]))[2]=a,r[3]=0<+e,r[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,r)}var At=Math.abs;function Et(e){return(0<e)-(e<0)||+e}function Ft(){var e,a,t,s,n,r,d,_,i,o,m;return this.isValid()?(e=At(this._milliseconds)/1e3,a=At(this._days),t=At(this._months),(_=this.asSeconds())?(s=y(e/60),n=y(s/60),e%=60,s%=60,r=y(t/12),t%=12,d=e?e.toFixed(3).replace(/\.?0+$/,""):"",i=Et(this._months)!==Et(_)?"-":"",o=Et(this._days)!==Et(_)?"-":"",m=Et(this._milliseconds)!==Et(_)?"-":"",(_<0?"-":"")+"P"+(r?i+r+"Y":"")+(t?i+t+"M":"")+(a?o+a+"D":"")+(n||s||e?"T":"")+(n?m+n+"H":"")+(s?m+s+"M":"")+(e?m+d+"S":"")):"P0D"):this.localeData().invalidDate()}function zt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function b(d){return function(e,a,t,s){var n=zt(e),r=Rt[d][zt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}function Nt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function H(d){return function(e,a,t,s){var n=Nt(e),r=It[d][Nt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}function Jt(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5}function S(d){return function(e,a,t,s){var n=Jt(e),r=Zt[d][Jt(e)];return(r=2===n?r[a?0:1]:r).replace(/%d/i,e)}}var v=Ca.prototype,Rt=(v.isValid=function(){return this._isValid},v.abs=function(){var e=this._data;return this._milliseconds=Tt(this._milliseconds),this._days=Tt(this._days),this._months=Tt(this._months),e.milliseconds=Tt(e.milliseconds),e.seconds=Tt(e.seconds),e.minutes=Tt(e.minutes),e.hours=Tt(e.hours),e.months=Tt(e.months),e.years=Tt(e.years),this},v.add=function(e,a){return gt(this,e,a,1)},v.subtract=function(e,a){return gt(this,e,a,-1)},v.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=d(e))||"quarter"===e||"year"===e)switch(a=this._days+s/864e5,t=this._months+bt(a),e){case"month":return t;case"quarter":return t/3;case"year":return t/12}else switch(a=this._days+Math.round(Ht(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},v.asMilliseconds=Le,v.asSeconds=a,v.asMinutes=fe,v.asHours=Ye,v.asDays=Ie,v.asWeeks=_,v.asMonths=ye,v.asQuarters=na,v.asYears=m,v.valueOf=t,v._bubble=function(){var e=this._milliseconds,a=this._days,t=this._months,s=this._data;return 0<=e&&0<=a&&0<=t||e<=0&&a<=0&&t<=0||(e+=864e5*wt(Ht(t)+a),t=a=0),s.milliseconds=e%1e3,e=y(e/1e3),s.seconds=e%60,e=y(e/60),s.minutes=e%60,e=y(e/60),s.hours=e%24,a+=y(e/24),t+=e=y(bt(a)),a-=wt(Ht(e)),e=y(t/12),t%=12,s.days=a,s.months=t,s.years=e,this},v.clone=function(){return Xa(this)},v.get=function(e){return e=d(e),this.isValid()?this[e+"s"]():NaN},v.milliseconds=o,v.seconds=n,v.minutes=i,v.hours=ze,v.days=M,v.weeks=function(){return y(this.days()/7)},v.months=jt,v.years=xt,v.humanize=function(e,a){var t,s;return this.isValid()?(t=!1,s=Ot,"object"==typeof e&&(a=e,e=!1),"boolean"==typeof e&&(t=e),"object"==typeof a&&(s=Object.assign({},Ot,a),null!=a.s)&&null==a.ss&&(s.ss=a.s-1),e=this.localeData(),a=Wt(this,!t,s,e),t&&(a=e.pastFuture(+this,a)),e.postformat(a)):this.localeData().invalidDate()},v.toISOString=Ft,v.toString=Ft,v.toJSON=Ft,v.locale=_t,v.localeData=it,v.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ft),v.lang=da,s("X",0,0,"unix"),s("x",0,0,"valueOf"),h("x",pe),h("X",/[+-]?\d+(\.\d{1,3})?/),k("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e))}),k("x",function(e,a,t){t._d=new Date(f(e))}),c.version="2.30.1",E=w,c.fn=u,c.min=function(){return Ja("isBefore",[].slice.call(arguments,0))},c.max=function(){return Ja("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=U,c.unix=function(e){return w(1e3*e)},c.months=function(e,a){return pt(e,a,"months")},c.isDate=R,c.locale=ka,c.invalid=V,c.duration=Xa,c.isMoment=Q,c.weekdays=function(e,a,t){return Dt(e,a,t,"weekdays")},c.parseZone=function(){return w.apply(null,arguments).parseZone()},c.localeData=Da,c.isDuration=Ia,c.monthsShort=function(e,a){return pt(e,a,"monthsShort")},c.weekdaysMin=function(e,a,t){return Dt(e,a,t,"weekdaysMin")},c.defineLocale=pa,c.updateLocale=function(e,a){var t,s;return null!=a?(s=ca,null!=g[e]&&null!=g[e].parentLocale?g[e].set(se(g[e]._config,a)):(a=se(s=null!=(t=fa(e))?t._config:s,a),null==t&&(a.abbr=e),(s=new ne(a)).parentLocale=g[e],g[e]=s),ka(e)):null!=g[e]&&(null!=g[e].parentLocale?(g[e]=g[e].parentLocale,e===ka()&&ka(e)):null!=g[e]&&delete g[e]),g[e]},c.locales=function(){return re(g)},c.weekdaysShort=function(e,a,t){return Dt(e,a,t,"weekdaysShort")},c.normalizeUnits=d,c.relativeTimeRounding=function(e){return void 0===e?Pt:"function"==typeof e&&(Pt=e,!0)},c.relativeTimeThreshold=function(e,a){return void 0!==Ot[e]&&(void 0===a?Ot[e]:(Ot[e]=a,"s"===e&&(Ot.ss=a-1),!0))},c.calendarFormat=function(e,a){return(e=e.diff(a,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},c.prototype=u,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),{s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]}),Le=["\u062c\u0627\u0646\u0641\u064a","\u0641\u064a\u0641\u0631\u064a","\u0645\u0627\u0631\u0633","\u0623\u0641\u0631\u064a\u0644","\u0645\u0627\u064a","\u062c\u0648\u0627\u0646","\u062c\u0648\u064a\u0644\u064a\u0629","\u0623\u0648\u062a","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],Ct=(c.defineLocale("ar-dz",{months:Le,monthsShort:Le,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:b("s"),ss:b("s"),m:b("m"),mm:b("m"),h:b("h"),hh:b("h"),d:b("d"),dd:b("d"),M:b("M"),MM:b("M"),y:b("y"),yy:b("y")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:0,doy:4}}),c.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}}),{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"}),It={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},a=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],Ut=(c.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:H("s"),ss:H("s"),m:H("m"),mm:H("m"),h:H("h"),hh:H("h"),d:H("d"),dd:H("d"),M:H("M"),MM:H("M"),y:H("y"),yy:H("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ct[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),c.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),Gt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Vt=(c.defineLocale("ar-ps",{months:"\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0634\u0631\u064a \u0627\u0644\u0623\u0648\u0651\u0644_\u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u062b\u0627\u0646\u064a_\u0643\u0627\u0646\u0648\u0646 \u0627\u0644\u0623\u0648\u0651\u0644".split("_"),monthsShort:"\u0643\u0662_\u0634\u0628\u0627\u0637_\u0622\u0630\u0627\u0631_\u0646\u064a\u0633\u0627\u0646_\u0623\u064a\u0651\u0627\u0631_\u062d\u0632\u064a\u0631\u0627\u0646_\u062a\u0645\u0651\u0648\u0632_\u0622\u0628_\u0623\u064a\u0644\u0648\u0644_\u062a\u0661_\u062a\u0662_\u0643\u0661".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Gt[e]}).split("").reverse().join("").replace(/[\u0661\u0662](?![\u062a\u0643])/g,function(e){return Gt[e]}).split("").reverse().join("").replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Ut[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),qt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Bt=(c.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return qt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Vt[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),c.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}}),{1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"}),Kt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},Zt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},fe=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],$t=(c.defineLocale("ar",{months:fe,monthsShort:fe,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:S("s"),ss:S("s"),m:S("m"),mm:S("m"),h:S("h"),hh:S("h"),d:S("d"),dd:S("d"),M:S("M"),MM:S("M"),y:S("y"),yy:S("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Kt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Bt[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"});function Qt(e,a,t){return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}c.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"bir ne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){var a;return 0===e?e+"-\u0131nc\u0131":e+($t[a=e%10]||$t[e%100-a]||$t[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:Qt,mm:Qt,h:Qt,hh:Qt,d:"\u0434\u0437\u0435\u043d\u044c",dd:Qt,M:"\u043c\u0435\u0441\u044f\u0446",MM:Qt,y:"\u0433\u043e\u0434",yy:Qt},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),c.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0443_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u041c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u041c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",w:"\u0441\u0435\u0434\u043c\u0438\u0446\u0430",ww:"%d \u0441\u0435\u0434\u043c\u0438\u0446\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),c.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var Xt={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},es={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},as=(c.defineLocale("bn-bd",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return es[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Xt[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09ad\u09cb\u09b0|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a?e<4?e:e+12:"\u09ad\u09cb\u09b0"===a||"\u09b8\u0995\u09be\u09b2"===a?e:"\u09a6\u09c1\u09aa\u09c1\u09b0"===a?3<=e?e:e+12:"\u09ac\u09bf\u0995\u09be\u09b2"===a||"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<6?"\u09ad\u09cb\u09b0":e<12?"\u09b8\u0995\u09be\u09b2":e<15?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<18?"\u09ac\u09bf\u0995\u09be\u09b2":e<20?"\u09b8\u09a8\u09cd\u09a7\u09cd\u09af\u09be":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"}),ts={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"},ss=(c.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09bf_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ts[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return as[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}}),{1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"}),ns={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function rs(e,a,t){return e+" "+(t={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==(e=e)?t:void 0!==(e={m:"v",b:"v",d:"z"})[(t=t).charAt(0)]?e[t.charAt(0)]+t.substring(1):t)}c.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b1_\u0f5f\u0fb3\u0f0b2_\u0f5f\u0fb3\u0f0b3_\u0f5f\u0fb3\u0f0b4_\u0f5f\u0fb3\u0f0b5_\u0f5f\u0fb3\u0f0b6_\u0f5f\u0fb3\u0f0b7_\u0f5f\u0fb3\u0f0b8_\u0f5f\u0fb3\u0f0b9_\u0f5f\u0fb3\u0f0b10_\u0f5f\u0fb3\u0f0b11_\u0f5f\u0fb3\u0f0b12".split("_"),monthsShortRegex:/^(\u0f5f\u0fb3\u0f0b\d{1,2})/,monthsParseExact:!0,weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72_\u0f5f\u0fb3_\u0f58\u0f72\u0f42_\u0f63\u0fb7\u0f42_\u0f55\u0f74\u0f62_\u0f66\u0f44\u0f66_\u0f66\u0fa4\u0f7a\u0f53".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ss[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}});Ye=[/^gen/i,/^c[\u02bc\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],Ie=/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,_=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];function ds(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return"jedan sat";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}c.defineLocale("br",{months:"Genver_C\u02bchwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C\u02bchwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc\u02bcher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:_,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[\u02bc\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:_,monthsRegex:Ie,monthsShortRegex:Ie,monthsStrictRegex:/^(genver|c[\u02bc\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[\u02bc\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:Ye,longMonthsParse:Ye,shortMonthsParse:Ye,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc\u02bchoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec\u02bch da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s \u02bczo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:rs,h:"un eur",hh:"%d eur",d:"un devezh",dd:rs,M:"ur miz",MM:rs,y:"ur bloaz",yy:function(e){switch(function e(a){if(9<a)return e(a%10);return a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,a,t){return e<12?"a.m.":"g.m."}}),c.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:ds,m:function(e,a,t,s){switch(t){case"m":return a?"jedna minuta":s?"jednu minutu":"jedne minute"}},mm:ds,h:ds,hh:ds,d:"dan",dd:ds,M:"mjesec",MM:ds,y:"godinu",yy:ds},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}});ye={standalone:"leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),format:"ledna_\xfanora_b\u0159ezna_dubna_kv\u011btna_\u010dervna_\u010dervence_srpna_z\xe1\u0159\xed_\u0159\xedjna_listopadu_prosince".split("_"),isFormat:/DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/},na="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_"),m=[/^led/i,/^\xfano/i,/^b\u0159e/i,/^dub/i,/^kv\u011b/i,/^(\u010dvn|\u010derven$|\u010dervna)/i,/^(\u010dvc|\u010dervenec|\u010dervence)/i,/^srp/i,/^z\xe1\u0159/i,/^\u0159\xedj/i,/^lis/i,/^pro/i],t=/^(leden|\xfanor|b\u0159ezen|duben|kv\u011bten|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|z\xe1\u0159\xed|\u0159\xedjen|listopad|prosinec|led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i;function _s(e){return 1<e&&e<5&&1!=~~(e/10)}function j(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(_s(e)?"sekundy":"sekund"):n+"sekundami";case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(_s(e)?"minuty":"minut"):n+"minutami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(_s(e)?"hodiny":"hodin"):n+"hodinami";case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(_s(e)?"dny":"dn\xed"):n+"dny";case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(_s(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(_s(e)?"roky":"let"):n+"lety"}}function is(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}function os(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}function ms(e,a,t,s){e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?e[t][0]:e[t][1]}c.defineLocale("cs",{months:ye,monthsShort:na,monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(leden|ledna|\xfanora|\xfanor|b\u0159ezen|b\u0159ezna|duben|dubna|kv\u011bten|kv\u011btna|\u010dervenec|\u010dervence|\u010derven|\u010dervna|srpen|srpna|z\xe1\u0159\xed|\u0159\xedjen|\u0159\xedjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|\xfano|b\u0159e|dub|kv\u011b|\u010dvn|\u010dvc|srp|z\xe1\u0159|\u0159\xedj|lis|pro)/i,monthsParse:m,longMonthsParse:m,shortMonthsParse:m,weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:j,ss:j,m:j,mm:j,h:j,hh:j,d:j,dd:j,M:j,MM:j,y:j,yy:j},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),c.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),c.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:is,mm:"%d Minuten",h:is,hh:"%d Stunden",d:is,dd:is,w:is,ww:"%d Wochen",M:is,MM:is,y:is,yy:is},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:os,mm:"%d Minuten",h:os,hh:"%d Stunden",d:os,dd:os,w:os,ww:"%d Wochen",M:os,MM:os,y:os,yy:os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:ms,mm:"%d Minuten",h:ms,hh:"%d Stunden",d:ms,dd:ms,w:ms,ww:"%d Wochen",M:ms,MM:ms,y:ms,yy:ms},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});o=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],n=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];c.defineLocale("dv",{months:o,monthsShort:o,weekdays:n,weekdaysShort:n,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),c.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?("string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl:this._monthsNominativeEl)[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t,e=this._calendarEl[e],s=a&&a.hours();return t=e,(e="undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)?e.apply(a):e).replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),c.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:4}}),c.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")}}),c.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:0,doy:6}}),c.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_a\u016dg_sept_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var us="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ls="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ze=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,Ms=(c.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ls:us)[e.month()]:us},monthsRegex:ze,monthsShortRegex:ze,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),hs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),M=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],jt=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,cs=(c.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?hs:Ms)[e.month()]:Ms},monthsRegex:jt,monthsShortRegex:jt,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:M,longMonthsParse:M,shortMonthsParse:M,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:4},invalidDate:"Fecha inv\xe1lida"}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),Ls="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),xt=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],v=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,Ys=(c.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?Ls:cs)[e.month()]:cs},monthsRegex:v,monthsShortRegex:v,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:xt,longMonthsParse:xt,shortMonthsParse:xt,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}}),"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_")),ys="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),da=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],pe=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function fs(e,a,t,s){e={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?e[t][2]||e[t][1]:s?e[t][0]:e[t][1]}c.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ys:Ys)[e.month()]:Ys},monthsRegex:pe,monthsShortRegex:pe,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:da,longMonthsParse:da,shortMonthsParse:da,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4},invalidDate:"Fecha inv\xe1lida"}),c.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:fs,ss:fs,m:fs,mm:fs,h:fs,hh:fs,d:fs,dd:"%d p\xe4eva",M:fs,MM:fs,y:fs,yy:fs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var ks={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},ps={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"},Ds=(c.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"%d \u062b\u0627\u0646\u06cc\u0647",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return ps[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return ks[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}}),"nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" ")),Ts=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",Ds[7],Ds[8],Ds[9]];function x(e,a,t,s){var n="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":n=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":n=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":n=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":n=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":n=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":n=s?"vuoden":"vuotta";break}return t=s,n=((e=e)<10?(t?Ts:Ds)[e]:e)+" "+n}c.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:x,ss:x,m:x,mm:x,h:x,hh:x,d:x,dd:x,M:x,MM:x,y:x,yy:x},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),c.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0ur",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),c.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var u=/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?|janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,Le=[/^janv/i,/^f\xe9vr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^ao\xfbt/i,/^sept/i,/^oct/i,/^nov/i,/^d\xe9c/i],gs=(c.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsRegex:u,monthsShortRegex:u,monthsStrictRegex:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i,monthsShortStrictRegex:/(janv\.?|f\xe9vr\.?|mars|avr\.?|mai|juin|juil\.?|ao\xfbt|sept\.?|oct\.?|nov\.?|d\xe9c\.?)/i,monthsParse:Le,longMonthsParse:Le,shortMonthsParse:Le,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_")),ws="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");c.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?ws:gs)[e.month()]:gs},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),c.defineLocale("ga",{months:["Ean\xe1ir","Feabhra","M\xe1rta","Aibre\xe1n","Bealtaine","Meitheamh","I\xfail","L\xfanasa","Me\xe1n F\xf3mhair","Deireadh F\xf3mhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","M\xe1rt","Aib","Beal","Meith","I\xfail","L\xfan","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["D\xe9 Domhnaigh","D\xe9 Luain","D\xe9 M\xe1irt","D\xe9 C\xe9adaoin","D\xe9ardaoin","D\xe9 hAoine","D\xe9 Sathairn"],weekdaysShort:["Domh","Luan","M\xe1irt","C\xe9ad","D\xe9ar","Aoine","Sath"],weekdaysMin:["Do","Lu","M\xe1","C\xe9","D\xe9","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Am\xe1rach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inn\xe9 ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s \xf3 shin",s:"c\xfapla soicind",ss:"%d soicind",m:"n\xf3im\xe9ad",mm:"%d n\xf3im\xe9ad",h:"uair an chloig",hh:"%d uair an chloig",d:"l\xe1",dd:"%d l\xe1",M:"m\xed",MM:"%d m\xedonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}});function P(e,a,t,s){e={s:["\u0925\u094b\u0921\u092f\u093e \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940","\u0925\u094b\u0921\u0947 \u0938\u0945\u0915\u0902\u0921"],ss:[e+" \u0938\u0945\u0915\u0902\u0921\u093e\u0902\u0928\u0940",e+" \u0938\u0945\u0915\u0902\u0921"],m:["\u090f\u0915\u093e \u092e\u093f\u0923\u091f\u093e\u0928","\u090f\u0915 \u092e\u093f\u0928\u0942\u091f"],mm:[e+" \u092e\u093f\u0923\u091f\u093e\u0902\u0928\u0940",e+" \u092e\u093f\u0923\u091f\u093e\u0902"],h:["\u090f\u0915\u093e \u0935\u0930\u093e\u0928","\u090f\u0915 \u0935\u0930"],hh:[e+" \u0935\u0930\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u093e\u0902"],d:["\u090f\u0915\u093e \u0926\u093f\u0938\u093e\u0928","\u090f\u0915 \u0926\u0940\u0938"],dd:[e+" \u0926\u093f\u0938\u093e\u0902\u0928\u0940",e+" \u0926\u0940\u0938"],M:["\u090f\u0915\u093e \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928","\u090f\u0915 \u092e\u094d\u0939\u092f\u0928\u094b"],MM:[e+" \u092e\u094d\u0939\u092f\u0928\u094d\u092f\u093e\u0928\u0940",e+" \u092e\u094d\u0939\u092f\u0928\u0947"],y:["\u090f\u0915\u093e \u0935\u0930\u094d\u0938\u093e\u0928","\u090f\u0915 \u0935\u0930\u094d\u0938"],yy:[e+" \u0935\u0930\u094d\u0938\u093e\u0902\u0928\u0940",e+" \u0935\u0930\u094d\u0938\u093e\u0902"]};return s?e[t][0]:e[t][1]}function bs(e,a,t,s){e={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return s?e[t][0]:e[t][1]}c.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),c.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("gom-deva",{months:{standalone:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u092f_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),format:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940\u091a\u094d\u092f\u093e_\u092e\u093e\u0930\u094d\u091a\u093e\u091a\u094d\u092f\u093e_\u090f\u092a\u094d\u0930\u0940\u0932\u093e\u091a\u094d\u092f\u093e_\u092e\u0947\u092f\u093e\u091a\u094d\u092f\u093e_\u091c\u0942\u0928\u093e\u091a\u094d\u092f\u093e_\u091c\u0941\u0932\u092f\u093e\u091a\u094d\u092f\u093e_\u0911\u0917\u0938\u094d\u091f\u093e\u091a\u094d\u092f\u093e_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0911\u0915\u094d\u091f\u094b\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e_\u0921\u093f\u0938\u0947\u0902\u092c\u0930\u093e\u091a\u094d\u092f\u093e".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u0940._\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u092f\u0924\u093e\u0930_\u0938\u094b\u092e\u093e\u0930_\u092e\u0902\u0917\u0933\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u092c\u093f\u0930\u0947\u0938\u094d\u0924\u093e\u0930_\u0938\u0941\u0915\u094d\u0930\u093e\u0930_\u0936\u0947\u0928\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0906\u092f\u0924._\u0938\u094b\u092e._\u092e\u0902\u0917\u0933._\u092c\u0941\u0927._\u092c\u094d\u0930\u0947\u0938\u094d\u0924._\u0938\u0941\u0915\u094d\u0930._\u0936\u0947\u0928.".split("_"),weekdaysMin:"\u0906_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u092c\u094d\u0930\u0947_\u0938\u0941_\u0936\u0947".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LTS:"A h:mm:ss [\u0935\u093e\u091c\u0924\u093e\u0902]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]",llll:"ddd, D MMM YYYY, A h:mm [\u0935\u093e\u091c\u0924\u093e\u0902]"},calendar:{sameDay:"[\u0906\u092f\u091c] LT",nextDay:"[\u092b\u093e\u0932\u094d\u092f\u093e\u0902] LT",nextWeek:"[\u092b\u0941\u0921\u0932\u094b] dddd[,] LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092b\u093e\u091f\u0932\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s \u0906\u0926\u0940\u0902",s:P,ss:P,m:P,mm:P,h:P,hh:P,d:P,dd:P,M:P,MM:P,y:P,yy:P},dayOfMonthOrdinalParse:/\d{1,2}(\u0935\u0947\u0930)/,ordinal:function(e,a){switch(a){case"D":return e+"\u0935\u0947\u0930";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/\u0930\u093e\u0924\u0940|\u0938\u0915\u093e\u0933\u0940\u0902|\u0926\u0928\u092a\u093e\u0930\u093e\u0902|\u0938\u093e\u0902\u091c\u0947/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940\u0902"===a?e:"\u0926\u0928\u092a\u093e\u0930\u093e\u0902"===a?12<e?e:e+12:"\u0938\u093e\u0902\u091c\u0947"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u0940":e<12?"\u0938\u0915\u093e\u0933\u0940\u0902":e<16?"\u0926\u0928\u092a\u093e\u0930\u093e\u0902":e<20?"\u0938\u093e\u0902\u091c\u0947":"\u0930\u093e\u0924\u0940"}}),c.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:bs,ss:bs,m:bs,mm:bs,h:bs,hh:bs,d:bs,dd:bs,M:bs,MM:bs,y:bs,yy:bs},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokallim"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}});var Hs={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},Ss={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"},vs=(c.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ab9\u0ac7\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return Ss[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Hs[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),c.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),js={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},a=[/^\u091c\u0928/i,/^\u092b\u093c\u0930|\u092b\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924\u0902|\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935|\u0928\u0935\u0902/i,/^\u0926\u093f\u0938\u0902|\u0926\u093f\u0938/i];function xs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1!==e&&(2===e||3===e||4===e)?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1!==e&&(2===e||3===e||4===e)?"godine":"godina"}}c.defineLocale("hi",{months:{format:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),standalone:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u0902\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u0902\u092c\u0930_\u0926\u093f\u0938\u0902\u092c\u0930".split("_")},monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},monthsParse:a,longMonthsParse:a,shortMonthsParse:[/^\u091c\u0928/i,/^\u092b\u093c\u0930/i,/^\u092e\u093e\u0930\u094d\u091a/i,/^\u0905\u092a\u094d\u0930\u0948/i,/^\u092e\u0908/i,/^\u091c\u0942\u0928/i,/^\u091c\u0941\u0932/i,/^\u0905\u0917/i,/^\u0938\u093f\u0924/i,/^\u0905\u0915\u094d\u091f\u0942/i,/^\u0928\u0935/i,/^\u0926\u093f\u0938/i],monthsRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsShortRegex:/^(\u091c\u0928\u0935\u0930\u0940|\u091c\u0928\.?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908|\u091c\u0941\u0932\.?|\u0905\u0917\u0938\u094d\u0924|\u0905\u0917\.?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930|\u0928\u0935\.?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930|\u0926\u093f\u0938\.?)/i,monthsStrictRegex:/^(\u091c\u0928\u0935\u0930\u0940?|\u092b\u093c\u0930\u0935\u0930\u0940|\u092b\u0930\u0935\u0930\u0940?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\u0932?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\u093e\u0908?|\u0905\u0917\u0938\u094d\u0924?|\u0938\u093f\u0924\u092e\u094d\u092c\u0930|\u0938\u093f\u0924\u0902\u092c\u0930|\u0938\u093f\u0924?\.?|\u0905\u0915\u094d\u091f\u0942\u092c\u0930|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\u092e\u094d\u092c\u0930|\u0928\u0935\u0902\u092c\u0930?|\u0926\u093f\u0938\u092e\u094d\u092c\u0930|\u0926\u093f\u0938\u0902\u092c\u0930?)/i,monthsShortStrictRegex:/^(\u091c\u0928\.?|\u092b\u093c\u0930\.?|\u092e\u093e\u0930\u094d\u091a?|\u0905\u092a\u094d\u0930\u0948\.?|\u092e\u0908?|\u091c\u0942\u0928?|\u091c\u0941\u0932\.?|\u0905\u0917\.?|\u0938\u093f\u0924\.?|\u0905\u0915\u094d\u091f\u0942\.?|\u0928\u0935\.?|\u0926\u093f\u0938\.?)/i,calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return js[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return vs[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),c.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:return"[pro\u0161lu] [nedjelju] [u] LT";case 3:return"[pro\u0161lu] [srijedu] [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:xs,m:xs,mm:xs,h:xs,hh:xs,d:"dan",dd:xs,M:"mjesec",MM:xs,y:"godinu",yy:xs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Ps="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Os(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Ws(e){return(e?"":"[m\xfalt] ")+"["+Ps[this.day()]+"] LT[-kor]"}function As(e){return e%100==11||e%10!=1}function Es(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return As(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return As(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return As(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return As(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return As(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return As(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}c.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan._feb._m\xe1rc._\xe1pr._m\xe1j._j\xfan._j\xfal._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Ws.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Ws.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Os,ss:Os,m:Os,mm:Os,h:Os,hh:Os,d:Os,dd:Os,M:Os,MM:Os,y:Os,yy:Os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),c.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}}),c.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:Es,ss:Es,m:Es,mm:Es,h:"klukkustund",hh:Es,d:Es,dd:Es,M:Es,MM:Es,y:Es,yy:Es},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(1<this.hours()?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"\u4ee4\u548c",narrow:"\u32ff",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"\u5e73\u6210",narrow:"\u337b",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"\u662d\u548c",narrow:"\u337c",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"\u5927\u6b63",narrow:"\u337d",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"\u660e\u6cbb",narrow:"\u337e",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"\u897f\u66a6",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"\u7d00\u5143\u524d",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(\u5143|\d+)\u5e74/,eraYearOrdinalParse:function(e,a){return"\u5143"===a[1]?1:parseInt(a[1]||e,10)},months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()!==this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()!==e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"y":return 1===e?"\u5143\u5e74":e+"\u5e74";case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),c.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),c.defineLocale("ka",{months:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(\u10ec\u10d0\u10db|\u10ec\u10e3\u10d7|\u10e1\u10d0\u10d0\u10d7|\u10ec\u10d4\u10da|\u10d3\u10e6|\u10d7\u10d5)(\u10d8|\u10d4)/,function(e,a,t){return"\u10d8"===t?a+"\u10e8\u10d8":a+t+"\u10e8\u10d8"})},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):e},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var Fs={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"},zs=(c.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(Fs[e]||Fs[e%10]||Fs[100<=e?100:null])},week:{dow:1,doy:7}}),{1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"}),Ns={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"},Js=(c.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return zs[e]})},week:{dow:1,doy:4}}),{1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"}),Rs={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};function O(e,a,t,s){e={s:["\xe7end san\xeeye","\xe7end san\xeeyeyan"],ss:[e+" san\xeeye",e+" san\xeeyeyan"],m:["deq\xeeqeyek","deq\xeeqeyek\xea"],mm:[e+" deq\xeeqe",e+" deq\xeeqeyan"],h:["saetek","saetek\xea"],hh:[e+" saet",e+" saetan"],d:["rojek","rojek\xea"],dd:[e+" roj",e+" rojan"],w:["hefteyek","hefteyek\xea"],ww:[e+" hefte",e+" hefteyan"],M:["mehek","mehek\xea"],MM:[e+" meh",e+" mehan"],y:["salek","salek\xea"],yy:[e+" sal",e+" salan"]};return a?e[t][0]:e[t][1]}c.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return Rs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Js[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),c.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}}),c.defineLocale("ku-kmr",{months:"R\xeabendan_Sibat_Adar_N\xeesan_Gulan_Hez\xeeran_T\xeermeh_Tebax_\xcelon_Cotmeh_Mijdar_Berfanbar".split("_"),monthsShort:"R\xeab_Sib_Ada_N\xees_Gul_Hez_T\xeer_Teb_\xcelo_Cot_Mij_Ber".split("_"),monthsParseExact:!0,weekdays:"Yek\u015fem_Du\u015fem_S\xea\u015fem_\xc7ar\u015fem_P\xeanc\u015fem_\xcen_\u015eem\xee".split("_"),weekdaysShort:"Yek_Du_S\xea_\xc7ar_P\xean_\xcen_\u015eem".split("_"),weekdaysMin:"Ye_Du_S\xea_\xc7a_P\xea_\xcen_\u015ee".split("_"),meridiem:function(e,a,t){return e<12?t?"bn":"BN":t?"pn":"PN"},meridiemParse:/bn|BN|pn|PN/,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM[a] YYYY[an]",LLL:"Do MMMM[a] YYYY[an] HH:mm",LLLL:"dddd, Do MMMM[a] YYYY[an] HH:mm",ll:"Do MMM[.] YYYY[an]",lll:"Do MMM[.] YYYY[an] HH:mm",llll:"ddd[.], Do MMM[.] YYYY[an] HH:mm"},calendar:{sameDay:"[\xcero di saet] LT [de]",nextDay:"[Sib\xea di saet] LT [de]",nextWeek:"dddd [di saet] LT [de]",lastDay:"[Duh di saet] LT [de]",lastWeek:"dddd[a bor\xee di saet] LT [de]",sameElse:"L"},relativeTime:{future:"di %s de",past:"ber\xee %s",s:O,ss:O,m:O,mm:O,h:O,hh:O,d:O,dd:O,w:O,ww:O,M:O,MM:O,y:O,yy:O},dayOfMonthOrdinalParse:/\d{1,2}(?:y\xea|\xea|\.)/,ordinal:function(e,a){var a=a.toLowerCase();return a.includes("w")||a.includes("m")?e+".":e+(e=(a=""+(a=e)).substring(a.length-1),12==(a=1<a.length?a.substring(a.length-2):"")||13==a||"2"!=e&&"3"!=e&&"50"!=a&&"70"!=e&&"80"!=e?"\xea":"y\xea")},week:{dow:1,doy:4}});var Cs={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Is={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},fe=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"],Us=(c.defineLocale("ku",{months:fe,monthsShort:fe,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Is[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Cs[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),{0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"});function Gs(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function Vs(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;var a;if(e<100)return Vs(0==(a=e%10)?e/10:a);if(e<1e4){for(;10<=e;)e/=10;return Vs(e)}return Vs(e/=1e3)}c.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(Us[e]||Us[e%10]||Us[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return Vs(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return Vs(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:Gs,mm:"%d Minutten",h:Gs,hh:"%d Stonnen",d:Gs,dd:"%d Deeg",M:Gs,MM:"%d M\xe9int",y:Gs,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var qs={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function Bs(e,a,t,s){return a?Zs(t)[0]:s?Zs(t)[1]:Zs(t)[2]}function Ks(e){return e%10==0||10<e&&e<20}function Zs(e){return qs[e].split("_")}function $s(e,a,t,s){var n=e+" ";return 1===e?n+Bs(0,a,t[0],s):a?n+(Ks(e)?Zs(t)[1]:Zs(t)[0]):s?n+Zs(t)[1]:n+(Ks(e)?Zs(t)[1]:Zs(t)[2])}c.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:$s,m:Bs,mm:$s,h:Bs,hh:$s,d:Bs,dd:$s,M:Bs,MM:$s,y:Bs,yy:$s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var Qs={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function Xs(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function en(e,a,t){return e+" "+Xs(Qs[t],e,a)}function an(e,a,t){return Xs(Qs[t],e,a)}c.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:en,m:an,mm:en,h:an,hh:en,d:an,dd:en,M:an,MM:en,y:an,yy:en},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var tn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=tn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+tn.correctGrammaticalCase(e,s)}};function sn(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}c.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:tn.translate,m:tn.translate,mm:tn.translate,h:tn.translate,hh:tn.translate,d:"dan",dd:tn.translate,M:"mjesec",MM:tn.translate,y:"godinu",yy:tn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u0435\u0434\u043d\u0430 \u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0435\u0434\u0435\u043d \u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0435\u0434\u0435\u043d \u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u0435\u0434\u0435\u043d \u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0==t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1==a?e+"-\u0432\u0438":2==a?e+"-\u0440\u0438":7==a||8==a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),c.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),c.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:sn,ss:sn,m:sn,mm:sn,h:sn,hh:sn,d:sn,dd:sn,M:sn,MM:sn,y:sn,yy:sn},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var nn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},rn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function dn(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}c.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:dn,ss:dn,m:dn,mm:dn,h:dn,hh:dn,d:dn,dd:dn,M:dn,MM:dn,y:dn,yy:dn},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return rn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return nn[e]})},meridiemParse:/\u092a\u0939\u093e\u091f\u0947|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940|\u0930\u093e\u0924\u094d\u0930\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u092a\u0939\u093e\u091f\u0947"===a||"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a||"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a||"\u0930\u093e\u0924\u094d\u0930\u0940"===a?12<=e?e:e+12:void 0},meridiem:function(e,a,t){return 0<=e&&e<6?"\u092a\u0939\u093e\u091f\u0947":e<12?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),c.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),c.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),c.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var _n={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},on={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"},mn=(c.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return on[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return _n[e]})},week:{dow:1,doy:4}}),c.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"\xe9n time",hh:"%d timer",d:"\xe9n dag",dd:"%d dager",w:"\xe9n uke",ww:"%d uker",M:"\xe9n m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),{1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"}),un={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"},ln=(c.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return un[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return mn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),Mn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),_=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Ie=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,hn=(c.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?Mn:ln)[e.month()]:ln},monthsRegex:Ie,monthsShortRegex:Ie,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:_,longMonthsParse:_,shortMonthsParse:_,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_")),cn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Ye=[/^jan/i,/^feb/i,/^(maart|mrt\.?)$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],ye=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,Ln=(c.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?(/-MMM-/.test(a)?cn:hn)[e.month()]:hn},monthsRegex:ye,monthsShortRegex:ye,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Ye,longMonthsParse:Ye,shortMonthsParse:Ye,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",w:"\xe9\xe9n week",ww:"%d weken",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),c.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._m\xe5._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("oc-lnc",{months:{standalone:"geni\xe8r_febri\xe8r_mar\xe7_abril_mai_junh_julhet_agost_setembre_oct\xf2bre_novembre_decembre".split("_"),format:"de geni\xe8r_de febri\xe8r_de mar\xe7_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'oct\xf2bre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dim\xe8cres_dij\xf2us_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[u\xe8i a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[i\xe8r a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){return e+("w"!==a&&"W"!==a?1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8":"a")},week:{dow:1,doy:4}}),{1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"}),Yn={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"},yn=(c.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Ln[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}}),"stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_")),fn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_"),na=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^pa\u017a/i,/^lis/i,/^gru/i];function kn(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function pn(e,a,t){var s=e+" ";switch(t){case"ss":return s+(kn(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(kn(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(kn(e)?"godziny":"godzin");case"ww":return s+(kn(e)?"tygodnie":"tygodni");case"MM":return s+(kn(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(kn(e)?"lata":"lat")}}function Dn(e,a,t){return e+(20<=e%100||100<=e&&e%100==0?" de ":" ")+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"s\u0103pt\u0103m\xe2ni",MM:"luni",yy:"ani"}[t]}function Tn(e,a,t){return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",ww:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043d\u0435\u0434\u0435\u043b\u0438_\u043d\u0435\u0434\u0435\u043b\u044c",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}c.defineLocale("pl",{months:function(e,a){return e?(/D MMMM/.test(a)?fn:yn)[e.month()]:yn},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),monthsParse:na,longMonthsParse:na,shortMonthsParse:na,weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:pn,m:pn,mm:pn,h:pn,hh:pn,d:"1 dzie\u0144",dd:"%d dni",w:"tydzie\u0144",ww:pn,M:"miesi\u0105c",MM:pn,y:"rok",yy:pn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_ter\xe7a-feira_quarta-feira_quinta-feira_sexta-feira_s\xe1bado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_s\xe1b".split("_"),weekdaysMin:"do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",invalidDate:"Data inv\xe1lida"}),c.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),c.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Dn,m:"un minut",mm:Dn,h:"o or\u0103",hh:Dn,d:"o zi",dd:Dn,w:"o s\u0103pt\u0103m\xe2n\u0103",ww:Dn,M:"o lun\u0103",MM:Dn,y:"un an",yy:Dn},week:{dow:1,doy:7}});t=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i],c.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:t,longMonthsParse:t,shortMonthsParse:t,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:Tn,m:Tn,mm:Tn,h:"\u0447\u0430\u0441",hh:Tn,d:"\u0434\u0435\u043d\u044c",dd:Tn,w:"\u043d\u0435\u0434\u0435\u043b\u044f",ww:Tn,M:"\u043c\u0435\u0441\u044f\u0446",MM:Tn,y:"\u0433\u043e\u0434",yy:Tn},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}}),m=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],o=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"],c.defineLocale("sd",{months:m,monthsShort:m,weekdays:o,weekdaysShort:o,weekdaysMin:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),c.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}}),n="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),ze="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function gn(e){return 1<e&&e<5}function wn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(gn(e)?"sekundy":"sek\xfand"):n+"sekundami";case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(gn(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(gn(e)?"hodiny":"hod\xedn"):n+"hodinami";case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(gn(e)?"dni":"dn\xed"):n+"d\u0148ami";case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(gn(e)?"mesiace":"mesiacov"):n+"mesiacmi";case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(gn(e)?"roky":"rokov"):n+"rokmi"}}function bn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}c.defineLocale("sk",{months:n,monthsShort:ze,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:wn,ss:wn,m:wn,mm:wn,h:wn,hh:wn,d:wn,dd:wn,M:wn,MM:wn,y:wn,yy:wn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:bn,ss:bn,m:bn,mm:bn,h:bn,hh:bn,d:bn,dd:bn,M:bn,MM:bn,y:bn,yy:bn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var W={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0438\u043d\u0443\u0442\u0430"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],d:["\u0458\u0435\u0434\u0430\u043d \u0434\u0430\u043d","\u0458\u0435\u0434\u043d\u043e\u0433 \u0434\u0430\u043d\u0430"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],M:["\u0458\u0435\u0434\u0430\u043d \u043c\u0435\u0441\u0435\u0446","\u0458\u0435\u0434\u043d\u043e\u0433 \u043c\u0435\u0441\u0435\u0446\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],y:["\u0458\u0435\u0434\u043d\u0443 \u0433\u043e\u0434\u0438\u043d\u0443","\u0458\u0435\u0434\u043d\u0435 \u0433\u043e\u0434\u0438\u043d\u0435"],yy:["\u0433\u043e\u0434\u0438\u043d\u0443","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,t,s){var n=W.words[t];return 1===t.length?"y"===t&&a?"\u0458\u0435\u0434\u043d\u0430 \u0433\u043e\u0434\u0438\u043d\u0430":s||a?n[0]:n[1]:(s=W.correctGrammaticalCase(e,n),"yy"===t&&a&&"\u0433\u043e\u0434\u0438\u043d\u0443"===s?e+" \u0433\u043e\u0434\u0438\u043d\u0430":e+" "+s)}},A=(c.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:W.translate,m:W.translate,mm:W.translate,h:W.translate,hh:W.translate,d:W.translate,dd:W.translate,M:W.translate,MM:W.translate,y:W.translate,yy:W.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),{words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],d:["jedan dan","jednog dana"],dd:["dan","dana","dana"],M:["jedan mesec","jednog meseca"],MM:["mesec","meseca","meseci"],y:["jednu godinu","jedne godine"],yy:["godinu","godine","godina"]},correctGrammaticalCase:function(e,a){return 1<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?e%10==1?a[0]:a[1]:a[2]},translate:function(e,a,t,s){var n=A.words[t];return 1===t.length?"y"===t&&a?"jedna godina":s||a?n[0]:n[1]:(s=A.correctGrammaticalCase(e,n),"yy"===t&&a&&"godinu"===s?e+" godina":e+" "+s)}}),Hn=(c.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:A.translate,m:A.translate,mm:A.translate,h:A.translate,hh:A.translate,d:A.translate,dd:A.translate,M:A.translate,MM:A.translate,y:A.translate,yy:A.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),c.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),c.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1!=~~(e%100/10)&&(1==a||2==a)?":a":":e")},week:{dow:1,doy:4}}),c.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}}),{1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"}),Sn={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"},vn=(c.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Sn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Hn[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),c.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c41\u0c32\u0c48_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),c.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),{0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"}),jn=(c.defineLocale("tg",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0430\u043b\u0438_\u043c\u0430\u0440\u0442\u0438_\u0430\u043f\u0440\u0435\u043b\u0438_\u043c\u0430\u0439\u0438_\u0438\u044e\u043d\u0438_\u0438\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442\u0438_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u0438_\u043e\u043a\u0442\u044f\u0431\u0440\u0438_\u043d\u043e\u044f\u0431\u0440\u0438_\u0434\u0435\u043a\u0430\u0431\u0440\u0438".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_")},monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u0424\u0430\u0440\u0434\u043e \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(vn[e]||vn[e%10]||vn[100<=e?100:null])},week:{dow:1,doy:7}}),c.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",w:"1 \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",ww:"%d \u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),{1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'\xfcnji",4:"'\xfcnji",100:"'\xfcnji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"}),xn=(c.defineLocale("tk",{months:"\xddanwar_Fewral_Mart_Aprel_Ma\xfd_I\xfdun_I\xfdul_Awgust_Sent\xfdabr_Okt\xfdabr_No\xfdabr_Dekabr".split("_"),monthsShort:"\xddan_Few_Mar_Apr_Ma\xfd_I\xfdn_I\xfdl_Awg_Sen_Okt_No\xfd_Dek".split("_"),weekdays:"\xddek\u015fenbe_Du\u015fenbe_Si\u015fenbe_\xc7ar\u015fenbe_Pen\u015fenbe_Anna_\u015eenbe".split("_"),weekdaysShort:"\xddek_Du\u015f_Si\u015f_\xc7ar_Pen_Ann_\u015een".split("_"),weekdaysMin:"\xddk_D\u015f_S\u015f_\xc7r_Pn_An_\u015en".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[d\xfc\xfdn] LT",lastWeek:"[ge\xe7en] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s so\u0148",past:"%s \xf6\u0148",s:"birn\xe4\xe7e sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir a\xfd",MM:"%d a\xfd",y:"bir \xfdyl",yy:"%d \xfdyl"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var t;return 0===e?e+"'unjy":e+(jn[t=e%10]||jn[e%100-t]||jn[100<=e?100:null])}},week:{dow:1,doy:7}}),c.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),"pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_"));function Pn(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),e=e%10,s="";0<a&&(s+=xn[a]+"vatlh");0<t&&(s+=(""!==s?" ":"")+xn[t]+"maH");0<e&&(s+=(""!==s?" ":"")+xn[e]);return""===s?"pagh":s}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}c.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Pn,m:"wa\u2019 tup",mm:Pn,h:"wa\u2019 rep",hh:Pn,d:"wa\u2019 jaj",dd:Pn,M:"wa\u2019 jar",MM:Pn,y:"wa\u2019 DIS",yy:Pn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var On={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function Wn(e,a,t,s){e={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s||a?e[t][0]:e[t][1]}function An(e,a,t){return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(e=+e,a=(a={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t]).split("_"),e%10==1&&e%100!=11?a[0]:2<=e%10&&e%10<=4&&(e%100<10||20<=e%100)?a[1]:a[2])}function En(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}c.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pzt_Sal_\xc7ar_Per_Cum_Cmt".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),meridiem:function(e,a,t){return e<12?t?"\xf6\xf6":"\xd6\xd6":t?"\xf6s":"\xd6S"},meridiemParse:/\xf6\xf6|\xd6\xd6|\xf6s|\xd6S/,isPM:function(e){return"\xf6s"===e||"\xd6S"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:var t;return 0===e?e+"'\u0131nc\u0131":e+(On[t=e%10]||On[e%100-t]||On[100<=e?100:null])}},week:{dow:1,doy:7}}),c.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:Wn,ss:Wn,m:Wn,mm:Wn,h:Wn,hh:Wn,d:Wn,dd:Wn,M:Wn,MM:Wn,y:Wn,yy:Wn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),c.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),c.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),c.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"!==a&&"\u0643\u06d5\u0686"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":e<900?"\u0633\u06d5\u06be\u06d5\u0631":e<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":e<1230?"\u0686\u06c8\u0634":e<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),c.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return!0===e?t.nominative.slice(1,7).concat(t.nominative.slice(0,1)):e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:En("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:En("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:En("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:En("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return En("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return En("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:An,m:An,mm:An,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:An,d:"\u0434\u0435\u043d\u044c",dd:An,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:An,y:"\u0440\u0456\u043a",yy:An},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});i=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],jt=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return c.defineLocale("ur",{months:i,monthsShort:i,weekdays:jt,weekdaysShort:jt,weekdaysMin:jt,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),c.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),c.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),c.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n tr\u01b0\u1edbc l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",w:"m\u1ed9t tu\u1ea7n",ww:"%d tu\u1ea7n",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),c.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1==a?"st":2==a?"nd":3==a?"rd":"th")},week:{dow:1,doy:4}}),c.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),c.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a||"\u4e0b\u5348"!==a&&"\u665a\u4e0a"!==a&&11<=e?e:e+12},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:function(e){return e.week()!==this.week()?"[\u4e0b]dddLT":"[\u672c]dddLT"},lastDay:"[\u6628\u5929]LT",lastWeek:function(e){return this.week()!==e.week()?"[\u4e0a]dddLT":"[\u672c]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u540e",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",w:"1 \u5468",ww:"%d \u5468",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),c.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1200?"\u4e0a\u5348":1200===e?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.defineLocale("zh-mo",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"D/M/YYYY",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){e=100*e+a;return e<600?"\u51cc\u6668":e<900?"\u65e9\u4e0a":e<1130?"\u4e0a\u5348":e<1230?"\u4e2d\u5348":e<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),c.locale("en"),c});
-//# sourceMappingURL=moment-with-locales.min.js.map
Index: ckend/node_modules/moment/min/moment-with-locales.min.js.map
===================================================================
--- backend/node_modules/moment/min/moment-with-locales.min.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"moment-with-locales.min.js","sources":["moment-with-locales.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","some","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","argLen","slice","join","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","keys","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","D","dates","date","d","days","day","e","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","h","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","Q","quarters","quarter","s","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","week","W","isoweeks","isoweek","y","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","unit","keepTime","set$1","get","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","x","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","min","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","oldLocale","_abbr","require","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","configFromRFC2822","obsOffset","militaryOffset","parsedArray","weekdayStr","parsedInput","numOffset","hm","defaults","c","configFromArray","currentDate","weekdayOverflow","curWeek","nowValue","now","_useUTC","createLocal","_week","temp","_dayOfYear","yearToUse","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","meridiemHour","isPm","erasConvertYear","prepareConfig","dayOrDate","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","createFromInputFallback","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","unitHasDecimal","orderLen","parseFloat","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","parseIso","diffRes","base","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","property","objectTest","propertyTest","properties","propertyLen","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","prefix","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","total","ymSign","daysSign","hmsSign","toFixed","pluralForm","pluralize","f","str","plurals","pluralForm$1","pluralize$1","plurals$1","pluralForm$2","pluralize$2","plurals$2","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","months$1","symbolMap","weekdaysParseExact","1","2","3","4","5","6","7","8","9","0","months$2","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","symbolMap$2","reverse","numberMap$1","symbolMap$3","numberMap$2","months$3","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","num","forms","word","standalone","lastDigit","last2Digits","symbolMap$4","numberMap$3","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","text","mutationTable","substring","monthsParseExact","monthsRegex$1","minWeekdaysParse","translate","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","months$4","monthsParse$1","monthsRegex$2","plural$1","translate$1","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$5","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$6","processRelativeTime$4","symbolMap$7","numberMap$6","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$7","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$9","numberMap$8","१","२","३","४","५","६","७","८","९","०","monthsParse$7","translate$3","weekEndings","translate$4","plural$2","translate$5","eraYearOrdinalRegex","$0","$1","$2","suffixes$1","40","symbolMap$a","numberMap$9","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$b","numberMap$a","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","processRelativeTime$7","isUpper","p","includes","symbolMap$c","numberMap$b","months$8","suffixes$2","processRelativeTime$8","eifelerRegelAppliesToNumber","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$8","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$9","symbolMap$g","numberMap$f","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$b","months$9","days$1","months$a","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","ten","one","suffixes$5","processRelativeTime$a","relativeTimeWithPlural$4","processHoursFunction","nominative","accusative","genitive","months$b","days$2"],"mappings":"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"}
Index: ckend/node_modules/moment/min/moment.min.js
===================================================================
--- backend/node_modules/moment/min/moment.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var H;function _(){return H.apply(null,arguments)}function y(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function g(e){return void 0===e}function w(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i<s;++i)n.push(t(e[i],i));return n}function E(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return Wt(e,t,n,s,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function A(e){var t,n,s=e._d&&!isNaN(e._d.getTime());return s&&(t=p(e),n=j.call(t.parsedDateParts,function(e){return null!=e}),s=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n),e._strict)&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e)?s:(e._isValid=s,e._isValid)}function I(e){var t=l(NaN);return null!=e?E(p(t),e):p(t).userInvalidated=!0,t}var j=Array.prototype.some||function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1},Z=_.momentProperties=[],z=!1;function q(e,t){var n,s,i,r=Z.length;if(g(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),g(t._i)||(e._i=t._i),g(t._f)||(e._f=t._f),g(t._l)||(e._l=t._l),g(t._strict)||(e._strict=t._strict),g(t._tzm)||(e._tzm=t._tzm),g(t._isUTC)||(e._isUTC=t._isUTC),g(t._offset)||(e._offset=t._offset),g(t._pf)||(e._pf=p(t)),g(t._locale)||(e._locale=t._locale),0<r)for(n=0;n<r;n++)g(i=t[s=Z[n]])||(e[s]=i);return e}function $(e){q(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===z&&(z=!0,_.updateOffset(this),z=!1)}function k(e){return e instanceof $||null!=e&&null!=e._isAMomentObject}function B(e){!1===_.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,a){var o=!0;return E(function(){if(null!=_.deprecationHandler&&_.deprecationHandler(null,r),o){for(var e,t,n=[],s=arguments.length,i=0;i<s;i++){if(e="","object"==typeof arguments[i]){for(t in e+="\n["+i+"] ",arguments[0])c(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[i];n.push(e)}B(r+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),o=!1}return a.apply(this,arguments)},a)}var J={};function Q(e,t){null!=_.deprecationHandler&&_.deprecationHandler(e,t),J[e]||(B(t),J[e]=!0)}function a(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function X(e,t){var n,s=E({},e);for(n in t)c(t,n)&&(F(e[n])&&F(t[n])?(s[n]={},E(s[n],e[n]),E(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)c(e,n)&&!c(t,n)&&F(e[n])&&(s[n]=E({},s[n]));return s}function K(e){null!=e&&this.set(e)}_.suppressDeprecationWarnings=!1,_.deprecationHandler=null;var ee=Object.keys||function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};function r(e,t,n){var s=""+Math.abs(e);return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}var te=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ne=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,se={},ie={};function s(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(ie[e]=i),t&&(ie[t[0]]=function(){return r(i.apply(this,arguments),t[1],t[2])}),n&&(ie[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function re(e,t){return e.isValid()?(t=ae(t,e.localeData()),se[t]=se[t]||function(s){for(var e,i=s.match(te),t=0,r=i.length;t<r;t++)ie[i[t]]?i[t]=ie[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=a(i[n])?i[n].call(e,s):i[n];return t}}(t),se[t](e)):e.localeData().invalidDate()}function ae(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(ne.lastIndex=0;0<=n&&ne.test(e);)e=e.replace(ne,s),ne.lastIndex=0,--n;return e}var oe={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function o(e){return"string"==typeof e?oe[e]||oe[e.toLowerCase()]:void 0}function ue(e){var t,n,s={};for(n in e)c(e,n)&&(t=o(n))&&(s[t]=e[n]);return s}var le={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};var de=/\d/,t=/\d\d/,he=/\d{3}/,ce=/\d{4}/,fe=/[+-]?\d{6}/,n=/\d\d?/,me=/\d\d\d\d?/,_e=/\d\d\d\d\d\d?/,ye=/\d{1,3}/,ge=/\d{1,4}/,we=/[+-]?\d{1,6}/,pe=/\d+/,ke=/[+-]?\d+/,Me=/Z|[+-]\d\d:?\d\d/gi,ve=/Z|[+-]\d\d(?::?\d\d)?/gi,i=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,u=/^[1-9]\d?/,d=/^([1-9]\d|\d)/;function h(e,n,s){Ye[e]=a(n)?n:function(e,t){return e&&s?s:n}}function De(e,t){return c(Ye,e)?Ye[e](t._strict,t._locale):new RegExp(f(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function f(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function m(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function M(e){var e=+e,t=0;return t=0!=e&&isFinite(e)?m(e):t}var Ye={},Se={};function v(e,n){var t,s,i=n;for("string"==typeof e&&(e=[e]),w(n)&&(i=function(e,t){t[n]=M(e)}),s=e.length,t=0;t<s;t++)Se[e[t]]=i}function Oe(e,i){v(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}function be(e){return e%4==0&&e%100!=0||e%400==0}var D=0,Y=1,S=2,O=3,b=4,T=5,Te=6,xe=7,Ne=8;function We(e){return be(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?r(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),h("Y",ke),h("YY",n,t),h("YYYY",ge,ce),h("YYYYY",we,fe),h("YYYYYY",we,fe),v(["YYYYY","YYYYYY"],D),v("YYYY",function(e,t){t[D]=2===e.length?_.parseTwoDigitYear(e):M(e)}),v("YY",function(e,t){t[D]=_.parseTwoDigitYear(e)}),v("Y",function(e,t){t[D]=parseInt(e,10)}),_.parseTwoDigitYear=function(e){return M(e)+(68<M(e)?1900:2e3)};var x,Pe=Re("FullYear",!0);function Re(t,n){return function(e){return null!=e?(Ue(this,t,e),_.updateOffset(this,n),this):Ce(this,t)}}function Ce(e,t){if(!e.isValid())return NaN;var n=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return s?n.getUTCSeconds():n.getSeconds();case"Minutes":return s?n.getUTCMinutes():n.getMinutes();case"Hours":return s?n.getUTCHours():n.getHours();case"Date":return s?n.getUTCDate():n.getDate();case"Day":return s?n.getUTCDay():n.getDay();case"Month":return s?n.getUTCMonth():n.getMonth();case"FullYear":return s?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Ue(e,t,n){var s,i,r;if(e.isValid()&&!isNaN(n)){switch(s=e._d,i=e._isUTC,t){case"Milliseconds":return i?s.setUTCMilliseconds(n):s.setMilliseconds(n);case"Seconds":return i?s.setUTCSeconds(n):s.setSeconds(n);case"Minutes":return i?s.setUTCMinutes(n):s.setMinutes(n);case"Hours":return i?s.setUTCHours(n):s.setHours(n);case"Date":return i?s.setUTCDate(n):s.setDate(n);case"FullYear":break;default:return}t=n,r=e.month(),e=29!==(e=e.date())||1!==r||be(t)?e:28,i?s.setUTCFullYear(t,r,e):s.setFullYear(t,r,e)}}function He(e,t){var n;return isNaN(e)||isNaN(t)?NaN:(n=(t%(n=12)+n)%n,e+=(t-n)/12,1==n?be(e)?29:28:31-n%7%2)}x=Array.prototype.indexOf||function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),h("M",n,u),h("MM",n,t),h("MMM",function(e,t){return t.monthsShortRegex(e)}),h("MMMM",function(e,t){return t.monthsRegex(e)}),v(["M","MM"],function(e,t){t[Y]=M(e)-1}),v(["MMM","MMMM"],function(e,t,n,s){s=n._locale.monthsParse(e,s,n._strict);null!=s?t[Y]=s:p(n).invalidMonth=e});var Fe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Le="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ve=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ge=i,Ee=i;function Ae(e,t){if(e.isValid()){if("string"==typeof t)if(/^\d+$/.test(t))t=M(t);else if(!w(t=e.localeData().monthsParse(t)))return;var n=(n=e.date())<29?n:Math.min(n,He(e.year(),t));e._isUTC?e._d.setUTCMonth(t,n):e._d.setMonth(t,n)}}function Ie(e){return null!=e?(Ae(this,e),_.updateOffset(this,!0),this):Ce(this,"Month")}function je(){function e(e,t){return t.length-e.length}for(var t,n,s=[],i=[],r=[],a=0;a<12;a++)n=l([2e3,a]),t=f(this.monthsShort(n,"")),n=f(this.months(n,"")),s.push(t),i.push(n),r.push(n),r.push(t);s.sort(e),i.sort(e),r.sort(e),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ze(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function ze(e){var t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,t)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function qe(e,t,n){n=7+t-n;return n-(7+ze(e,0,n).getUTCDay()-t)%7-1}function $e(e,t,n,s,i){var r,t=1+7*(t-1)+(7+n-s)%7+qe(e,s,i),n=t<=0?We(r=e-1)+t:t>We(e)?(r=e+1,t-We(e)):(r=e,t);return{year:r,dayOfYear:n}}function Be(e,t,n){var s,i,r=qe(e.year(),t,n),r=Math.floor((e.dayOfYear()-r-1)/7)+1;return r<1?s=r+N(i=e.year()-1,t,n):r>N(e.year(),t,n)?(s=r-N(e.year(),t,n),i=e.year()+1):(i=e.year(),s=r),{week:s,year:i}}function N(e,t,n){var s=qe(e,t,n),t=qe(e+1,t,n);return(We(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),h("w",n,u),h("ww",n,t),h("W",n,u),h("WW",n,t),Oe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=M(e)});function Je(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),h("d",n),h("e",n),h("E",n),h("dd",function(e,t){return t.weekdaysMinRegex(e)}),h("ddd",function(e,t){return t.weekdaysShortRegex(e)}),h("dddd",function(e,t){return t.weekdaysRegex(e)}),Oe(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:p(n).invalidWeekday=e}),Oe(["d","e","E"],function(e,t,n,s){t[s]=M(e)});var Qe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Xe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ke="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),et=i,tt=i,nt=i;function st(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,"")),n=f(this.weekdaysShort(s,"")),s=f(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function it(){return this.hours()%12||12}function rt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function at(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,it),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+it.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),rt("a",!0),rt("A",!1),h("a",at),h("A",at),h("H",n,d),h("h",n,u),h("k",n,u),h("HH",n,t),h("hh",n,t),h("kk",n,t),h("hmm",me),h("hmmss",_e),h("Hmm",me),h("Hmmss",_e),v(["H","HH"],O),v(["k","kk"],function(e,t,n){e=M(e);t[O]=24===e?0:e}),v(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v(["h","hh"],function(e,t,n){t[O]=M(e),p(n).bigHour=!0}),v("hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s)),p(n).bigHour=!0}),v("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i)),p(n).bigHour=!0}),v("Hmm",function(e,t,n){var s=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s))}),v("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[O]=M(e.substr(0,s)),t[b]=M(e.substr(s,2)),t[T]=M(e.substr(i))});i=Re("Hours",!0);var ot,ut={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Fe,monthsShort:Le,week:{dow:0,doy:6},weekdays:Qe,weekdaysMin:Ke,weekdaysShort:Xe,meridiemParse:/[ap]\.?m?\.?/i},W={},lt={};function dt(e){return e&&e.toLowerCase().replace("_","-")}function ht(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=dt(e[r]).split("-")).length,n=(n=dt(e[r+1]))?n.split("-"):null;0<t;){if(s=ct(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&function(e,t){for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n}(i,n)>=t-1)break;t--}r++}return ot}function ct(t){var e,n;if(void 0===W[t]&&"undefined"!=typeof module&&module&&module.exports&&(n=t)&&n.match("^[^/\\\\]*$"))try{e=ot._abbr,require("./locale/"+t),ft(e)}catch(e){W[t]=null}return W[t]}function ft(e,t){return e&&((t=g(t)?P(e):mt(e,t))?ot=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ot._abbr}function mt(e,t){if(null===t)return delete W[e],null;var n,s=ut;if(t.abbr=e,null!=W[e])Q("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=ct(t.parentLocale)))return lt[t.parentLocale]||(lt[t.parentLocale]=[]),lt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new K(X(s,t)),lt[e]&&lt[e].forEach(function(e){mt(e.name,e.config)}),ft(e),W[e]}function P(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ot;if(!y(e)){if(t=ct(e))return t;e=[e]}return ht(e)}function _t(e){var t=e._a;return t&&-2===p(e).overflow&&(t=t[Y]<0||11<t[Y]?Y:t[S]<1||t[S]>He(t[D],t[Y])?S:t[O]<0||24<t[O]||24===t[O]&&(0!==t[b]||0!==t[T]||0!==t[Te])?O:t[b]<0||59<t[b]?b:t[T]<0||59<t[T]?T:t[Te]<0||999<t[Te]?Te:-1,p(e)._overflowDayOfYear&&(t<D||S<t)&&(t=S),p(e)._overflowWeeks&&-1===t&&(t=xe),p(e)._overflowWeekday&&-1===t&&(t=Ne),p(e).overflow=t),e}var yt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,gt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/Z|[+-]\d\d(?::?\d\d)?/,pt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],kt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Mt=/^\/?Date\((-?\d+)/i,vt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Dt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Yt(e){var t,n,s,i,r,a,o=e._i,u=yt.exec(o)||gt.exec(o),o=pt.length,l=kt.length;if(u){for(p(e).iso=!0,t=0,n=o;t<n;t++)if(pt[t][1].exec(u[1])){i=pt[t][0],s=!1!==pt[t][2];break}if(null==i)e._isValid=!1;else{if(u[3]){for(t=0,n=l;t<n;t++)if(kt[t][1].exec(u[3])){r=(u[2]||" ")+kt[t][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(u[4]){if(!wt.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),xt(e)}else e._isValid=!1}}else e._isValid=!1}function St(e,t,n,s,i,r){e=[function(e){e=parseInt(e,10);{if(e<=49)return 2e3+e;if(e<=999)return 1900+e}return e}(e),Le.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&e.push(parseInt(r,10)),e}function Ot(e){var t,n,s=vt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));s?(t=St(s[4],s[3],s[2],s[5],s[6],s[7]),function(e,t,n){if(!e||Xe.indexOf(e)===new Date(t[0],t[1],t[2]).getDay())return 1;p(n).weekdayMismatch=!0,n._isValid=!1}(s[1],t,e)&&(e._a=t,e._tzm=(t=s[8],n=s[9],s=s[10],t?Dt[t]:n?0:60*(((t=parseInt(s,10))-(n=t%100))/100)+n),e._d=ze.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0)):e._isValid=!1}function bt(e,t,n){return null!=e?e:null!=t?t:n}function Tt(e){var t,n,s,i,r,a,o,u,l,d,h,c=[];if(!e._d){for(s=e,i=new Date(_.now()),n=s._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[S]&&null==e._a[Y]&&(null!=(i=(s=e)._w).GG||null!=i.W||null!=i.E?(u=1,l=4,r=bt(i.GG,s._a[D],Be(R(),1,4).year),a=bt(i.W,1),((o=bt(i.E,1))<1||7<o)&&(d=!0)):(u=s._locale._week.dow,l=s._locale._week.doy,h=Be(R(),u,l),r=bt(i.gg,s._a[D],h.year),a=bt(i.w,h.week),null!=i.d?((o=i.d)<0||6<o)&&(d=!0):null!=i.e?(o=i.e+u,(i.e<0||6<i.e)&&(d=!0)):o=u),a<1||a>N(r,u,l)?p(s)._overflowWeeks=!0:null!=d?p(s)._overflowWeekday=!0:(h=$e(r,a,o,u,l),s._a[D]=h.year,s._dayOfYear=h.dayOfYear)),null!=e._dayOfYear&&(i=bt(e._a[D],n[D]),(e._dayOfYear>We(i)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),d=ze(i,0,e._dayOfYear),e._a[Y]=d.getUTCMonth(),e._a[S]=d.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=c[t]=n[t];for(;t<7;t++)e._a[t]=c[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[O]&&0===e._a[b]&&0===e._a[T]&&0===e._a[Te]&&(e._nextDay=!0,e._a[O]=0),e._d=(e._useUTC?ze:Ze).apply(null,c),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[O]=24),e._w&&void 0!==e._w.d&&e._w.d!==r&&(p(e).weekdayMismatch=!0)}}function xt(e){if(e._f===_.ISO_8601)Yt(e);else if(e._f===_.RFC_2822)Ot(e);else{e._a=[],p(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=ae(e._f,e._locale).match(te)||[],d=l.length,h=0;h<d;h++)n=l[h],(t=(a.match(De(n,e))||[])[0])&&(0<(s=a.substr(0,a.indexOf(t))).length&&p(e).unusedInput.push(s),a=a.slice(a.indexOf(t)+t.length),u+=t.length),ie[n]?(t?p(e).empty=!1:p(e).unusedTokens.push(n),s=n,r=e,null!=(i=t)&&c(Se,s)&&Se[s](i,r._a,r,s)):e._strict&&!t&&p(e).unusedTokens.push(n);p(e).charsLeftOver=o-u,0<a.length&&p(e).unusedInput.push(a),e._a[O]<=12&&!0===p(e).bigHour&&0<e._a[O]&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[O]=function(e,t,n){if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((e=e.isPM(n))&&t<12&&(t+=12),t=e||12!==t?t:0):t}(e._locale,e._a[O],e._meridiem),null!==(o=p(e).era)&&(e._a[D]=e._locale.erasConvertYear(o,e._a[D])),Tt(e),_t(e)}}function Nt(e){var t,n,s,i=e._i,r=e._f;if(e._locale=e._locale||P(e._l),null===i||void 0===r&&""===i)return I({nullInput:!0});if("string"==typeof i&&(e._i=i=e._locale.preparse(i)),k(i))return new $(_t(i));if(V(i))e._d=i;else if(y(r)){var a,o,u,l,d,h,c=e,f=!1,m=c._f.length;if(0===m)p(c).invalidFormat=!0,c._d=new Date(NaN);else{for(l=0;l<m;l++)d=0,h=!1,a=q({},c),null!=c._useUTC&&(a._useUTC=c._useUTC),a._f=c._f[l],xt(a),A(a)&&(h=!0),d=(d+=p(a).charsLeftOver)+10*p(a).unusedTokens.length,p(a).score=d,f?d<u&&(u=d,o=a):(null==u||d<u||h)&&(u=d,o=a,h)&&(f=!0);E(c,o||a)}}else if(r)xt(e);else if(g(r=(i=e)._i))i._d=new Date(_.now());else V(r)?i._d=new Date(r.valueOf()):"string"==typeof r?(n=i,null!==(t=Mt.exec(n._i))?n._d=new Date(+t[1]):(Yt(n),!1===n._isValid&&(delete n._isValid,Ot(n),!1===n._isValid)&&(delete n._isValid,n._strict?n._isValid=!1:_.createFromInputFallback(n)))):y(r)?(i._a=G(r.slice(0),function(e){return parseInt(e,10)}),Tt(i)):F(r)?(t=i)._d||(s=void 0===(n=ue(t._i)).day?n.date:n.day,t._a=G([n.year,n.month,s,n.hour,n.minute,n.second,n.millisecond],function(e){return e&&parseInt(e,10)}),Tt(t)):w(r)?i._d=new Date(r):_.createFromInputFallback(i);return A(e)||(e._d=null),e}function Wt(e,t,n,s,i){var r={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(F(e)&&L(e)||y(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=t,r._strict=s,(i=new $(_t(Nt(i=r))))._nextDay&&(i.add(1,"d"),i._nextDay=void 0),i}function R(e,t,n,s){return Wt(e,t,n,s,!1)}_.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),_.ISO_8601=function(){},_.RFC_2822=function(){};me=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:I()}),_e=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:I()});function Pt(e,t){var n,s;if(!(t=1===t.length&&y(t[0])?t[0]:t).length)return R();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Rt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ct(e){var e=ue(e),t=e.year||0,n=e.quarter||0,s=e.month||0,i=e.week||e.isoWeek||0,r=e.day||0,a=e.hour||0,o=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=function(e){var t,n,s=!1,i=Rt.length;for(t in e)if(c(e,t)&&(-1===x.call(Rt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Rt[n]]){if(s)return!1;parseFloat(e[Rt[n]])!==M(e[Rt[n]])&&(s=!0)}return!0}(e),this._milliseconds=+l+1e3*u+6e4*o+1e3*a*60*60,this._days=+r+7*i,this._months=+s+3*n+12*t,this._data={},this._locale=P(),this._bubble()}function Ut(e){return e instanceof Ct}function Ht(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){s(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+r(~~(e/60),2)+n+r(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),h("Z",ve),h("ZZ",ve),v(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Vt(ve,e)});var Lt=/([\+\-]|\d\d)/gi;function Vt(e,t){var t=(t||"").match(e);return null===t?null:0===(t=60*(e=((t[t.length-1]||[])+"").match(Lt)||["-",0,0])[1]+M(e[2]))?0:"+"===e[0]?t:-t}function Gt(e,t){var n;return t._isUTC?(t=t.clone(),n=(k(e)||V(e)?e:R(e)).valueOf()-t.valueOf(),t._d.setTime(t._d.valueOf()+n),_.updateOffset(t,!1),t):R(e).local()}function Et(e){return-Math.round(e._d.getTimezoneOffset())}function At(){return!!this.isValid()&&this._isUTC&&0===this._offset}_.updateOffset=function(){};var It=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,jt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function C(e,t){var n,s=e;return Ut(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:w(e)||!isNaN(+e)?(s={},t?s[t]=+e:s.milliseconds=+e):(t=It.exec(e))?(n="-"===t[1]?-1:1,s={y:0,d:M(t[S])*n,h:M(t[O])*n,m:M(t[b])*n,s:M(t[T])*n,ms:M(Ht(1e3*t[Te]))*n}):(t=jt.exec(e))?(n="-"===t[1]?-1:1,s={y:Zt(t[2],n),M:Zt(t[3],n),w:Zt(t[4],n),d:Zt(t[5],n),h:Zt(t[6],n),m:Zt(t[7],n),s:Zt(t[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(t=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Gt(t,e),e.isBefore(t)?n=zt(e,t):((n=zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(R(s.from),R(s.to)),(s={}).ms=t.milliseconds,s.M=t.months),n=new Ct(s),Ut(e)&&c(e,"_locale")&&(n._locale=e._locale),Ut(e)&&c(e,"_isValid")&&(n._isValid=e._isValid),n}function Zt(e,t){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*t}function zt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function qt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(Q(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,C(e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ht(t._days),t=Ht(t._months);e.isValid()&&(s=null==s||s,t&&Ae(e,Ce(e,"Month")+t*n),r&&Ue(e,"Date",Ce(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s)&&_.updateOffset(e,r||t)}C.fn=Ct.prototype,C.invalid=function(){return C(NaN)};Fe=qt(1,"add"),Qe=qt(-1,"subtract");function Bt(e){return"string"==typeof e||e instanceof String}function Jt(e){return k(e)||V(e)||Bt(e)||w(e)||function(t){var e=y(t),n=!1;e&&(n=0===t.filter(function(e){return!w(e)&&Bt(t)}).length);return e&&n}(e)||function(e){var t,n,s=F(e)&&!L(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a=r.length;for(t=0;t<a;t+=1)n=r[t],i=i||c(e,n);return s&&i}(e)||null==e}function Qt(e,t){var n,s;return e.date()<t.date()?-Qt(t,e):-((n=12*(t.year()-e.year())+(t.month()-e.month()))+(t-(s=e.clone().add(n,"months"))<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s)))||0}function Xt(e){return void 0===e?this._locale._abbr:(null!=(e=P(e))&&(this._locale=e),this)}_.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",_.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";Ke=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}var en=126227808e5;function tn(e,t){return(e%t+t)%t}function nn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-en:new Date(e,t,n).valueOf()}function sn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-en:Date.UTC(e,t,n)}function rn(e,t){return t.erasAbbrRegex(e)}function an(){for(var e,t,n,s=[],i=[],r=[],a=[],o=this.eras(),u=0,l=o.length;u<l;++u)e=f(o[u].name),t=f(o[u].abbr),n=f(o[u].narrow),i.push(e),s.push(t),r.push(n),a.push(e),a.push(t),a.push(n);this._erasRegex=new RegExp("^("+a.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+i.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function on(e,t){s(0,[e,e.length],0,t)}function un(e,t,n,s,i){var r;return null==e?Be(this,s,i).year:(r=N(e,s,i),function(e,t,n,s,i){e=$e(e,t,n,s,i),t=ze(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t=r<t?r:t,n,s,i))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),h("N",rn),h("NN",rn),h("NNN",rn),h("NNNN",function(e,t){return t.erasNameRegex(e)}),h("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),v(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){s=n._locale.erasParse(e,s,n._strict);s?p(n).era=s:p(n).invalidEra=e}),h("y",pe),h("yy",pe),h("yyy",pe),h("yyyy",pe),h("yo",function(e,t){return t._eraYearOrdinalRegex||pe}),v(["y","yy","yyy","yyyy"],D),v(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[D]=n._locale.eraYearOrdinalParse(e,i):t[D]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),on("gggg","weekYear"),on("ggggg","weekYear"),on("GGGG","isoWeekYear"),on("GGGGG","isoWeekYear"),h("G",ke),h("g",ke),h("GG",n,t),h("gg",n,t),h("GGGG",ge,ce),h("gggg",ge,ce),h("GGGGG",we,fe),h("ggggg",we,fe),Oe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=M(e)}),Oe(["gg","GG"],function(e,t,n,s){t[s]=_.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),h("Q",de),v("Q",function(e,t){t[Y]=3*(M(e)-1)}),s("D",["DD",2],"Do","date"),h("D",n,u),h("DD",n,t),h("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),v(["D","DD"],S),v("Do",function(e,t){t[S]=M(e.match(n)[0])});ge=Re("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),h("DDD",ye),h("DDDD",he),v(["DDD","DDDD"],function(e,t,n){n._dayOfYear=M(e)}),s("m",["mm",2],0,"minute"),h("m",n,d),h("mm",n,t),v(["m","mm"],b);var ln,ce=Re("Minutes",!1),we=(s("s",["ss",2],0,"second"),h("s",n,d),h("ss",n,t),v(["s","ss"],T),Re("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),h("S",ye,de),h("SS",ye,t),h("SSS",ye,he),ln="SSSS";ln.length<=9;ln+="S")h(ln,pe);function dn(e,t){t[Te]=M(1e3*("0."+e))}for(ln="S";ln.length<=9;ln+="S")v(ln,dn);fe=Re("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");u=$.prototype;function hn(e){return e}u.add=Fe,u.calendar=function(e,t){1===arguments.length&&(arguments[0]?Jt(arguments[0])?(e=arguments[0],t=void 0):function(e){for(var t=F(e)&&!L(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||c(e,s[i]);return t&&n}(arguments[0])&&(t=arguments[0],e=void 0):t=e=void 0);var e=e||R(),n=Gt(e,this).startOf("day"),n=_.calendarFormat(this,n)||"sameElse",t=t&&(a(t[n])?t[n].call(this,e):t[n]);return this.format(t||this.localeData().calendar(n,this,R(e)))},u.clone=function(){return new $(this)},u.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Gt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=o(t)){case"year":r=Qt(this,s)/12;break;case"month":r=Qt(this,s);break;case"quarter":r=Qt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:m(r)},u.endOf=function(e){var t,n;if(void 0!==(e=o(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-tn(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-tn(t,1e3)-1;break}this._d.setTime(t),_.updateOffset(this,!0)}return this},u.format=function(e){return e=e||(this.isUtc()?_.defaultFormatUtc:_.defaultFormat),e=re(this,e),this.localeData().postformat(e)},u.from=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||R(e).isValid())?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},u.fromNow=function(e){return this.from(R(),e)},u.to=function(e,t){return this.isValid()&&(k(e)&&e.isValid()||R(e).isValid())?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},u.toNow=function(e){return this.to(R(),e)},u.get=function(e){return a(this[e=o(e)])?this[e]():this},u.invalidAt=function(){return p(this).overflow},u.isAfter=function(e,t){return e=k(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=o(t)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(t).valueOf())},u.isBefore=function(e,t){return e=k(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=o(t)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(t).valueOf()<e.valueOf())},u.isBetween=function(e,t,n,s){return e=k(e)?e:R(e),t=k(t)?t:R(t),!!(this.isValid()&&e.isValid()&&t.isValid())&&("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},u.isSame=function(e,t){var e=k(e)?e:R(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=o(t)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(t).valueOf()<=e&&e<=this.clone().endOf(t).valueOf()))},u.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},u.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},u.isValid=function(){return A(this)},u.lang=Ke,u.locale=Xt,u.localeData=Kt,u.max=_e,u.min=me,u.parsingFlags=function(){return E({},p(this))},u.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:le[t]});return n.sort(function(e,t){return e.priority-t.priority}),n}(e=ue(e)),s=n.length,i=0;i<s;i++)this[n[i].unit](e[n[i].unit]);else if(a(this[e=o(e)]))return this[e](t);return this},u.startOf=function(e){var t,n;if(void 0!==(e=o(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?sn:nn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=tn(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=tn(t,6e4);break;case"second":t=this._d.valueOf(),t-=tn(t,1e3);break}this._d.setTime(t),_.updateOffset(this,!0)}return this},u.subtract=Qe,u.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},u.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},u.toDate=function(){return new Date(this.valueOf())},u.toISOString=function(e){var t;return this.isValid()?(t=(e=!0!==e)?this.clone().utc():this).year()<0||9999<t.year()?re(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):a(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",re(t,"Z")):re(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ"):null},u.inspect=function(){var e,t,n;return this.isValid()?(t="moment",e="",this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z"),t="["+t+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(t+n+"-MM-DD[T]HH:mm:ss.SSS"+(e+'[")]'))):"moment.invalid(/* "+this._i+" */)"},"undefined"!=typeof Symbol&&null!=Symbol.for&&(u[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),u.toJSON=function(){return this.isValid()?this.toISOString():null},u.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},u.unix=function(){return Math.floor(this.valueOf()/1e3)},u.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},u.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},u.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},u.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},u.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},u.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-_(n[s].since).year())*e+n[s].offset;return this.year()},u.year=Pe,u.isLeapYear=function(){return be(this.year())},u.weekYear=function(e){return un.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},u.isoWeekYear=function(e){return un.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},u.quarter=u.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},u.month=Ie,u.daysInMonth=function(){return He(this.year(),this.month())},u.week=u.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},u.isoWeek=u.isoWeeks=function(e){var t=Be(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},u.weeksInYear=function(){var e=this.localeData()._week;return N(this.year(),e.dow,e.doy)},u.weeksInWeekYear=function(){var e=this.localeData()._week;return N(this.weekYear(),e.dow,e.doy)},u.isoWeeksInYear=function(){return N(this.year(),1,4)},u.isoWeeksInISOWeekYear=function(){return N(this.isoWeekYear(),1,4)},u.date=ge,u.day=u.days=function(e){var t,n,s;return this.isValid()?(t=Ce(this,"Day"),null!=e?(n=e,s=this.localeData(),e="string"!=typeof n?n:isNaN(n)?"number"==typeof(n=s.weekdaysParse(n))?n:null:parseInt(n,10),this.add(e-t,"d")):t):null!=e?this:NaN},u.weekday=function(e){var t;return this.isValid()?(t=(this.day()+7-this.localeData()._week.dow)%7,null==e?t:this.add(e-t,"d")):null!=e?this:NaN},u.isoWeekday=function(e){var t,n;return this.isValid()?null!=e?(t=e,n=this.localeData(),n="string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t,this.day(this.day()%7?n:n-7)):this.day()||7:null!=e?this:NaN},u.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},u.hour=u.hours=i,u.minute=u.minutes=ce,u.second=u.seconds=we,u.millisecond=u.milliseconds=fe,u.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Et(this);if("string"==typeof e){if(null===(e=Vt(ve,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Et(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,C(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,_.updateOffset(this,!0),this._changeInProgress=null)),this},u.utc=function(e){return this.utcOffset(0,e)},u.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e)&&this.subtract(Et(this),"m"),this},u.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Vt(Me,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},u.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?R(e).utcOffset():0,(this.utcOffset()-e)%60==0)},u.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},u.isLocal=function(){return!!this.isValid()&&!this._isUTC},u.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},u.isUtc=At,u.isUTC=At,u.zoneAbbr=function(){return this._isUTC?"UTC":""},u.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},u.dates=e("dates accessor is deprecated. Use date instead.",ge),u.months=e("months accessor is deprecated. Use month instead",Ie),u.years=e("years accessor is deprecated. Use year instead",Pe),u.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),u.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return g(this._isDSTShifted)&&(q(e={},this),(e=Nt(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0<function(e,t,n){for(var s=Math.min(e.length,t.length),i=Math.abs(e.length-t.length),r=0,a=0;a<s;a++)(n&&e[a]!==t[a]||!n&&M(e[a])!==M(t[a]))&&r++;return r+i}(e._a,t.toArray())):this._isDSTShifted=!1),this._isDSTShifted});d=K.prototype;function cn(e,t,n,s){var i=P(),s=l().set(s,t);return i[n](s,e)}function fn(e,t,n){if(w(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=cn(e,i,n,"month");return s}function mn(e,t,n,s){t=("boolean"==typeof e?w(t)&&(n=t,t=void 0):(t=e,e=!1,w(n=t)&&(n=t,t=void 0)),t||"");var i,r=P(),a=e?r._week.dow:0,o=[];if(null!=n)return cn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}d.calendar=function(e,t,n){return a(e=this._calendar[e]||this._calendar.sameElse)?e.call(t,n):e},d.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(te).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),this._longDateFormat[e])},d.invalidDate=function(){return this._invalidDate},d.ordinal=function(e){return this._ordinal.replace("%d",e)},d.preparse=hn,d.postformat=hn,d.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return a(i)?i(e,t,n,s):i.replace(/%d/i,e)},d.pastFuture=function(e,t){return a(e=this._relativeTime[0<e?"future":"past"])?e(t):e.replace(/%s/i,t)},d.set=function(e){var t,n;for(n in e)c(e,n)&&(a(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},d.eras=function(e,t){for(var n,s=this._eras||P("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=_(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=_(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},d.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},d.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?_(e.since).year():_(e.since).year()+(t-e.offset)*n},d.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||an.call(this),e?this._erasAbbrRegex:this._erasRegex},d.erasNameRegex=function(e){return c(this,"_erasNameRegex")||an.call(this),e?this._erasNameRegex:this._erasRegex},d.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||an.call(this),e?this._erasNarrowRegex:this._erasRegex},d.months=function(e,t){return e?(y(this._months)?this._months:this._months[(this._months.isFormat||Ve).test(t)?"format":"standalone"])[e.month()]:y(this._months)?this._months:this._months.standalone},d.monthsShort=function(e,t){return e?(y(this._monthsShort)?this._monthsShort:this._monthsShort[Ve.test(t)?"format":"standalone"])[e.month()]:y(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},d.monthsParse=function(e,t,n){var s,i;if(this._monthsParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=x.call(this._shortMonthsParse,e))?i:null:-1!==(i=x.call(this._longMonthsParse,e))?i:null:"MMM"===t?-1!==(i=x.call(this._shortMonthsParse,e))||-1!==(i=x.call(this._longMonthsParse,e))?i:null:-1!==(i=x.call(this._longMonthsParse,e))||-1!==(i=x.call(this._shortMonthsParse,e))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(i="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},d.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||je.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Ee),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},d.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||je.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Ge),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},d.week=function(e){return Be(e,this._week.dow,this._week.doy).week},d.firstDayOfYear=function(){return this._week.doy},d.firstDayOfWeek=function(){return this._week.dow},d.weekdays=function(e,t){return t=y(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"],!0===e?Je(t,this._week.dow):e?t[e.day()]:t},d.weekdaysMin=function(e){return!0===e?Je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},d.weekdaysShort=function(e){return!0===e?Je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},d.weekdaysParse=function(e,t,n){var s,i;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=x.call(this._weekdaysParse,e))?i:null:"ddd"===t?-1!==(i=x.call(this._shortWeekdaysParse,e))?i:null:-1!==(i=x.call(this._minWeekdaysParse,e))?i:null:"dddd"===t?-1!==(i=x.call(this._weekdaysParse,e))||-1!==(i=x.call(this._shortWeekdaysParse,e))||-1!==(i=x.call(this._minWeekdaysParse,e))?i:null:"ddd"===t?-1!==(i=x.call(this._shortWeekdaysParse,e))||-1!==(i=x.call(this._weekdaysParse,e))||-1!==(i=x.call(this._minWeekdaysParse,e))?i:null:-1!==(i=x.call(this._minWeekdaysParse,e))||-1!==(i=x.call(this._weekdaysParse,e))||-1!==(i=x.call(this._shortWeekdaysParse,e))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},d.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||st.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=et),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},d.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||st.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=tt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},d.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||st.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=nt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},d.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},d.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ft("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===M(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),_.lang=e("moment.lang is deprecated. Use moment.locale instead.",ft),_.langData=e("moment.langData is deprecated. Use moment.localeData instead.",P);var _n=Math.abs;function yn(e,t,n,s){t=C(t,n);return e._milliseconds+=s*t._milliseconds,e._days+=s*t._days,e._months+=s*t._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function wn(e){return 4800*e/146097}function pn(e){return 146097*e/4800}function kn(e){return function(){return this.as(e)}}de=kn("ms"),t=kn("s"),ye=kn("m"),he=kn("h"),Fe=kn("d"),_e=kn("w"),me=kn("M"),Qe=kn("Q"),i=kn("y"),ce=de;function Mn(e){return function(){return this.isValid()?this._data[e]:NaN}}var we=Mn("milliseconds"),fe=Mn("seconds"),ge=Mn("minutes"),Pe=Mn("hours"),d=Mn("days"),vn=Mn("months"),Dn=Mn("years");var Yn=Math.round,Sn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function On(e,t,n,s){var i=C(e).abs(),r=Yn(i.as("s")),a=Yn(i.as("m")),o=Yn(i.as("h")),u=Yn(i.as("d")),l=Yn(i.as("M")),d=Yn(i.as("w")),i=Yn(i.as("y")),r=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||(a<=1?["m"]:a<n.m&&["mm",a])||(o<=1?["h"]:o<n.h&&["hh",o])||(u<=1?["d"]:u<n.d&&["dd",u]);return(r=(r=null!=n.w?r||(d<=1?["w"]:d<n.w&&["ww",d]):r)||(l<=1?["M"]:l<n.M&&["MM",l])||(i<=1?["y"]:["yy",i]))[2]=t,r[3]=0<+e,r[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,r)}var bn=Math.abs;function Tn(e){return(0<e)-(e<0)||+e}function xn(){var e,t,n,s,i,r,a,o,u,l,d;return this.isValid()?(e=bn(this._milliseconds)/1e3,t=bn(this._days),n=bn(this._months),(o=this.asSeconds())?(s=m(e/60),i=m(s/60),e%=60,s%=60,r=m(n/12),n%=12,a=e?e.toFixed(3).replace(/\.?0+$/,""):"",u=Tn(this._months)!==Tn(o)?"-":"",l=Tn(this._days)!==Tn(o)?"-":"",d=Tn(this._milliseconds)!==Tn(o)?"-":"",(o<0?"-":"")+"P"+(r?u+r+"Y":"")+(n?u+n+"M":"")+(t?l+t+"D":"")+(i||s||e?"T":"")+(i?d+i+"H":"")+(s?d+s+"M":"")+(e?d+a+"S":"")):"P0D"):this.localeData().invalidDate()}var U=Ct.prototype;return U.isValid=function(){return this._isValid},U.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},U.add=function(e,t){return yn(this,e,t,1)},U.subtract=function(e,t){return yn(this,e,t,-1)},U.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=o(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+wn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(pn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},U.asMilliseconds=de,U.asSeconds=t,U.asMinutes=ye,U.asHours=he,U.asDays=Fe,U.asWeeks=_e,U.asMonths=me,U.asQuarters=Qe,U.asYears=i,U.valueOf=ce,U._bubble=function(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data;return 0<=e&&0<=t&&0<=n||e<=0&&t<=0&&n<=0||(e+=864e5*gn(pn(n)+t),n=t=0),s.milliseconds=e%1e3,e=m(e/1e3),s.seconds=e%60,e=m(e/60),s.minutes=e%60,e=m(e/60),s.hours=e%24,t+=m(e/24),n+=e=m(wn(t)),t-=gn(pn(e)),e=m(n/12),n%=12,s.days=t,s.months=n,s.years=e,this},U.clone=function(){return C(this)},U.get=function(e){return e=o(e),this.isValid()?this[e+"s"]():NaN},U.milliseconds=we,U.seconds=fe,U.minutes=ge,U.hours=Pe,U.days=d,U.weeks=function(){return m(this.days()/7)},U.months=vn,U.years=Dn,U.humanize=function(e,t){var n,s;return this.isValid()?(n=!1,s=Sn,"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(s=Object.assign({},Sn,t),null!=t.s)&&null==t.ss&&(s.ss=t.s-1),e=this.localeData(),t=On(this,!n,s,e),n&&(t=e.pastFuture(+this,t)),e.postformat(t)):this.localeData().invalidDate()},U.toISOString=xn,U.toString=xn,U.toJSON=xn,U.locale=Xt,U.localeData=Kt,U.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",xn),U.lang=Ke,s("X",0,0,"unix"),s("x",0,0,"valueOf"),h("x",ke),h("X",/[+-]?\d+(\.\d{1,3})?/),v("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),v("x",function(e,t,n){n._d=new Date(M(e))}),_.version="2.30.1",H=R,_.fn=u,_.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},_.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},_.now=function(){return Date.now?Date.now():+new Date},_.utc=l,_.unix=function(e){return R(1e3*e)},_.months=function(e,t){return fn(e,t,"months")},_.isDate=V,_.locale=ft,_.invalid=I,_.duration=C,_.isMoment=k,_.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},_.parseZone=function(){return R.apply(null,arguments).parseZone()},_.localeData=P,_.isDuration=Ut,_.monthsShort=function(e,t){return fn(e,t,"monthsShort")},_.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},_.defineLocale=mt,_.updateLocale=function(e,t){var n,s;return null!=t?(s=ut,null!=W[e]&&null!=W[e].parentLocale?W[e].set(X(W[e]._config,t)):(t=X(s=null!=(n=ct(e))?n._config:s,t),null==n&&(t.abbr=e),(s=new K(t)).parentLocale=W[e],W[e]=s),ft(e)):null!=W[e]&&(null!=W[e].parentLocale?(W[e]=W[e].parentLocale,e===ft()&&ft(e)):null!=W[e]&&delete W[e]),W[e]},_.locales=function(){return ee(W)},_.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},_.normalizeUnits=o,_.relativeTimeRounding=function(e){return void 0===e?Yn:"function"==typeof e&&(Yn=e,!0)},_.relativeTimeThreshold=function(e,t){return void 0!==Sn[e]&&(void 0===t?Sn[e]:(Sn[e]=t,"s"===e&&(Sn.ss=t-1),!0))},_.calendarFormat=function(e,t){return(e=e.diff(t,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},_.prototype=u,_.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},_});
-//# sourceMappingURL=moment.min.js.map
Index: ckend/node_modules/moment/min/moment.min.js.map
===================================================================
--- backend/node_modules/moment/min/moment.min.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"moment.min.js","sources":["../moment.js"],"names":["global","factory","exports","module","define","amd","moment","this","hookCallback","hooks","apply","arguments","isArray","input","Array","Object","prototype","toString","call","isObject","hasOwnProp","a","b","hasOwnProperty","isObjectEmpty","obj","getOwnPropertyNames","length","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","i","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","getParsingFlags","m","_pf","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","some","invalidWeekday","_strict","undefined","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","key","args","argLen","slice","join","Error","stack","deprecations","deprecateSimple","name","isFunction","Function","mergeConfigs","parentConfig","childConfig","Locale","set","keys","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","callback","func","localeData","formatMoment","expandFormat","array","match","replace","mom","output","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","aliases","D","dates","date","d","days","day","e","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","h","hours","hour","ms","milliseconds","millisecond","minutes","minute","M","months","month","Q","quarters","quarter","s","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","w","weeks","week","W","isoweeks","isoweek","y","years","year","normalizeUnits","units","toLowerCase","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","RegExp","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","unit","keepTime","set$1","get","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","x","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","min","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","sort","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","n","concat","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","L","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","j","next","loadLocale","arr1","arr2","minl","oldLocale","_abbr","require","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","_config","parentLocale","forEach","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","string","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","configFromRFC2822","obsOffset","militaryOffset","parsedArray","weekdayStr","parsedInput","numOffset","hm","defaults","c","configFromArray","currentDate","weekdayOverflow","curWeek","nowValue","now","_useUTC","createLocal","_week","temp","_dayOfYear","yearToUse","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","meridiemHour","isPm","erasConvertYear","prepareConfig","dayOrDate","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","createFromInputFallback","add","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","unitHasDecimal","orderLen","parseFloat","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","round","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","matches","parts","cloneWithOffset","model","diff","clone","setTime","local","getDateOffset","getTimezoneOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","parseIso","diffRes","base","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","tmp","addSubtract","isAdding","invalid","subtract","isString","String","isMomentInput","arrayTest","dataTypeTest","filter","item","property","objectTest","propertyTest","properties","propertyLen","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getter","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","proto","preParsePostFormat","time","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","prefix","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","toUpperCase","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","total","ymSign","daysSign","hmsSign","toFixed","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","version","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","limit","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS"],"mappings":"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"}
Index: ckend/node_modules/moment/moment.d.ts
===================================================================
--- backend/node_modules/moment/moment.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,796 +1,0 @@
-/**
- * @param strict Strict parsing disables the deprecated fallback to the native Date constructor when
- * parsing a string.
- */
-declare function moment(inp?: moment.MomentInput, strict?: boolean): moment.Moment;
-/**
- * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
- * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
- * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
- */
-declare function moment(inp?: moment.MomentInput, format?: moment.MomentFormatSpecification, strict?: boolean): moment.Moment;
-/**
- * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
- * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
- * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
- */
-declare function moment(inp?: moment.MomentInput, format?: moment.MomentFormatSpecification, language?: string, strict?: boolean): moment.Moment;
-
-declare namespace moment {
-  type RelativeTimeKey = 's' | 'ss' | 'm' | 'mm' | 'h' | 'hh' | 'd' | 'dd' | 'w' | 'ww' | 'M' | 'MM' | 'y' | 'yy';
-  type CalendarKey = 'sameDay' | 'nextDay' | 'lastDay' | 'nextWeek' | 'lastWeek' | 'sameElse' | string;
-  type LongDateFormatKey = 'LTS' | 'LT' | 'L' | 'LL' | 'LLL' | 'LLLL' | 'lts' | 'lt' | 'l' | 'll' | 'lll' | 'llll';
-
-  interface Locale {
-    calendar(key?: CalendarKey, m?: Moment, now?: Moment): string;
-
-    longDateFormat(key: LongDateFormatKey): string;
-    invalidDate(): string;
-    ordinal(n: number): string;
-
-    preparse(inp: string): string;
-    postformat(inp: string): string;
-    relativeTime(n: number, withoutSuffix: boolean,
-                 key: RelativeTimeKey, isFuture: boolean): string;
-    pastFuture(diff: number, absRelTime: string): string;
-    set(config: Object): void;
-
-    months(): string[];
-    months(m: Moment, format?: string): string;
-    monthsShort(): string[];
-    monthsShort(m: Moment, format?: string): string;
-    monthsParse(monthName: string, format: string, strict: boolean): number;
-    monthsRegex(strict: boolean): RegExp;
-    monthsShortRegex(strict: boolean): RegExp;
-
-    week(m: Moment): number;
-    firstDayOfYear(): number;
-    firstDayOfWeek(): number;
-
-    weekdays(): string[];
-    weekdays(m: Moment, format?: string): string;
-    weekdaysMin(): string[];
-    weekdaysMin(m: Moment): string;
-    weekdaysShort(): string[];
-    weekdaysShort(m: Moment): string;
-    weekdaysParse(weekdayName: string, format: string, strict: boolean): number;
-    weekdaysRegex(strict: boolean): RegExp;
-    weekdaysShortRegex(strict: boolean): RegExp;
-    weekdaysMinRegex(strict: boolean): RegExp;
-
-    isPM(input: string): boolean;
-    meridiem(hour: number, minute: number, isLower: boolean): string;
-  }
-
-  interface StandaloneFormatSpec {
-    format: string[];
-    standalone: string[];
-    isFormat?: RegExp;
-  }
-
-  interface WeekSpec {
-    dow: number;
-    doy?: number;
-  }
-
-  type CalendarSpecVal = string | ((m?: MomentInput, now?: Moment) => string);
-  interface CalendarSpec {
-    sameDay?: CalendarSpecVal;
-    nextDay?: CalendarSpecVal;
-    lastDay?: CalendarSpecVal;
-    nextWeek?: CalendarSpecVal;
-    lastWeek?: CalendarSpecVal;
-    sameElse?: CalendarSpecVal;
-
-    // any additional properties might be used with moment.calendarFormat
-    [x: string]: CalendarSpecVal | void; // undefined
-  }
-
-  type RelativeTimeSpecVal = (
-    string |
-    ((n: number, withoutSuffix: boolean,
-      key: RelativeTimeKey, isFuture: boolean) => string)
-  );
-  type RelativeTimeFuturePastVal = string | ((relTime: string) => string);
-
-  interface RelativeTimeSpec {
-    future?: RelativeTimeFuturePastVal;
-    past?: RelativeTimeFuturePastVal;
-    s?: RelativeTimeSpecVal;
-    ss?: RelativeTimeSpecVal;
-    m?: RelativeTimeSpecVal;
-    mm?: RelativeTimeSpecVal;
-    h?: RelativeTimeSpecVal;
-    hh?: RelativeTimeSpecVal;
-    d?: RelativeTimeSpecVal;
-    dd?: RelativeTimeSpecVal;
-    w?: RelativeTimeSpecVal
-    ww?: RelativeTimeSpecVal;
-    M?: RelativeTimeSpecVal;
-    MM?: RelativeTimeSpecVal;
-    y?: RelativeTimeSpecVal;
-    yy?: RelativeTimeSpecVal;
-  }
-
-  interface LongDateFormatSpec {
-    LTS: string;
-    LT: string;
-    L: string;
-    LL: string;
-    LLL: string;
-    LLLL: string;
-
-    // lets forget for a sec that any upper/lower permutation will also work
-    lts?: string;
-    lt?: string;
-    l?: string;
-    ll?: string;
-    lll?: string;
-    llll?: string;
-  }
-
-  type MonthWeekdayFn = (momentToFormat: Moment, format?: string) => string;
-  type WeekdaySimpleFn = (momentToFormat: Moment) => string;
-  interface EraSpec {
-    since: string | number;
-    until: string | number;
-    offset: number;
-    name: string;
-    narrow: string;
-    abbr: string;
-  }
-
-  interface LocaleSpecification {
-    months?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-    monthsShort?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-
-    weekdays?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-    weekdaysShort?: string[] | StandaloneFormatSpec | WeekdaySimpleFn;
-    weekdaysMin?: string[] | StandaloneFormatSpec | WeekdaySimpleFn;
-
-    meridiemParse?: RegExp;
-    meridiem?: (hour: number, minute:number, isLower: boolean) => string;
-
-    isPM?: (input: string) => boolean;
-
-    longDateFormat?: LongDateFormatSpec;
-    calendar?: CalendarSpec;
-    relativeTime?: RelativeTimeSpec;
-    invalidDate?: string;
-    ordinal?: (n: number) => string;
-    ordinalParse?: RegExp;
-
-    week?: WeekSpec;
-    eras?: EraSpec[];
-
-    // Allow anything: in general any property that is passed as locale spec is
-    // put in the locale object so it can be used by locale functions
-    [x: string]: any;
-  }
-
-  interface MomentObjectOutput {
-    years: number;
-    /* One digit */
-    months: number;
-    /* Day of the month */
-    date: number;
-    hours: number;
-    minutes: number;
-    seconds: number;
-    milliseconds: number;
-  }
-
-  interface argThresholdOpts {
-    ss?: number;
-    s?: number;
-    m?: number;
-    h?: number;
-    d?: number;
-    w?: number | void;
-    M?: number;
-  }
-
-  interface Duration {
-    clone(): Duration;
-
-    humanize(argWithSuffix?: boolean, argThresholds?: argThresholdOpts): string;
-    
-    humanize(argThresholds?: argThresholdOpts): string;
-
-    abs(): Duration;
-
-    as(units: unitOfTime.Base): number;
-    get(units: unitOfTime.Base): number;
-
-    milliseconds(): number;
-    asMilliseconds(): number;
-
-    seconds(): number;
-    asSeconds(): number;
-
-    minutes(): number;
-    asMinutes(): number;
-
-    hours(): number;
-    asHours(): number;
-
-    days(): number;
-    asDays(): number;
-
-    weeks(): number;
-    asWeeks(): number;
-
-    months(): number;
-    asMonths(): number;
-
-    years(): number;
-    asYears(): number;
-
-    add(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-    subtract(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-
-    locale(): string;
-    locale(locale: LocaleSpecifier): Duration;
-    localeData(): Locale;
-
-    toISOString(): string;
-    toJSON(): string;
-
-    isValid(): boolean;
-
-    /**
-     * @deprecated since version 2.8.0
-     */
-    lang(locale: LocaleSpecifier): Moment;
-    /**
-     * @deprecated since version 2.8.0
-     */
-    lang(): Locale;
-    /**
-     * @deprecated
-     */
-    toIsoString(): string;
-  }
-
-  interface MomentRelativeTime {
-    future: any;
-    past: any;
-    s: any;
-    ss: any;
-    m: any;
-    mm: any;
-    h: any;
-    hh: any;
-    d: any;
-    dd: any;
-    M: any;
-    MM: any;
-    y: any;
-    yy: any;
-  }
-
-  interface MomentLongDateFormat {
-    L: string;
-    LL: string;
-    LLL: string;
-    LLLL: string;
-    LT: string;
-    LTS: string;
-
-    l?: string;
-    ll?: string;
-    lll?: string;
-    llll?: string;
-    lt?: string;
-    lts?: string;
-  }
-
-  interface MomentParsingFlags {
-    empty: boolean;
-    unusedTokens: string[];
-    unusedInput: string[];
-    overflow: number;
-    charsLeftOver: number;
-    nullInput: boolean;
-    invalidMonth: string | void; // null
-    invalidFormat: boolean;
-    userInvalidated: boolean;
-    iso: boolean;
-    parsedDateParts: any[];
-    meridiem: string | void; // null
-  }
-
-  interface MomentParsingFlagsOpt {
-    empty?: boolean;
-    unusedTokens?: string[];
-    unusedInput?: string[];
-    overflow?: number;
-    charsLeftOver?: number;
-    nullInput?: boolean;
-    invalidMonth?: string;
-    invalidFormat?: boolean;
-    userInvalidated?: boolean;
-    iso?: boolean;
-    parsedDateParts?: any[];
-    meridiem?: string;
-  }
-
-  interface MomentBuiltinFormat {
-    __momentBuiltinFormatBrand: any;
-  }
-
-  type MomentFormatSpecification = string | MomentBuiltinFormat | (string | MomentBuiltinFormat)[];
-
-  export namespace unitOfTime {
-    type Base = (
-      "year" | "years" | "y" |
-      "month" | "months" | "M" |
-      "week" | "weeks" | "w" |
-      "day" | "days" | "d" |
-      "hour" | "hours" | "h" |
-      "minute" | "minutes" | "m" |
-      "second" | "seconds" | "s" |
-      "millisecond" | "milliseconds" | "ms"
-    );
-
-    type _quarter = "quarter" | "quarters" | "Q";
-    type _isoWeek = "isoWeek" | "isoWeeks" | "W";
-    type _date = "date" | "dates" | "D";
-    type DurationConstructor = Base | _quarter | _isoWeek;
-
-    export type DurationAs = Base;
-
-    export type StartOf = Base | _quarter | _isoWeek | _date | void; // null
-
-    export type Diff = Base | _quarter;
-
-    export type MomentConstructor = Base | _date;
-
-    export type All = Base | _quarter | _isoWeek | _date |
-      "weekYear" | "weekYears" | "gg" |
-      "isoWeekYear" | "isoWeekYears" | "GG" |
-      "dayOfYear" | "dayOfYears" | "DDD" |
-      "weekday" | "weekdays" | "e" |
-      "isoWeekday" | "isoWeekdays" | "E";
-  }
-
-  type numberlike = number | string;
-  interface MomentInputObject {
-    years?: numberlike;
-    year?: numberlike;
-    y?: numberlike;
-
-    months?: numberlike;
-    month?: numberlike;
-    M?: numberlike;
-
-    days?: numberlike;
-    day?: numberlike;
-    d?: numberlike;
-
-    dates?: numberlike;
-    date?: numberlike;
-    D?: numberlike;
-
-    hours?: numberlike;
-    hour?: numberlike;
-    h?: numberlike;
-
-    minutes?: numberlike;
-    minute?: numberlike;
-    m?: numberlike;
-
-    seconds?: numberlike;
-    second?: numberlike;
-    s?: numberlike;
-
-    milliseconds?: numberlike;
-    millisecond?: numberlike;
-    ms?: numberlike;
-  }
-
-  interface DurationInputObject extends MomentInputObject {
-    quarters?: numberlike;
-    quarter?: numberlike;
-    Q?: numberlike;
-
-    weeks?: numberlike;
-    week?: numberlike;
-    w?: numberlike;
-  }
-
-  interface MomentSetObject extends MomentInputObject {
-    weekYears?: numberlike;
-    weekYear?: numberlike;
-    gg?: numberlike;
-
-    isoWeekYears?: numberlike;
-    isoWeekYear?: numberlike;
-    GG?: numberlike;
-
-    quarters?: numberlike;
-    quarter?: numberlike;
-    Q?: numberlike;
-
-    weeks?: numberlike;
-    week?: numberlike;
-    w?: numberlike;
-
-    isoWeeks?: numberlike;
-    isoWeek?: numberlike;
-    W?: numberlike;
-
-    dayOfYears?: numberlike;
-    dayOfYear?: numberlike;
-    DDD?: numberlike;
-
-    weekdays?: numberlike;
-    weekday?: numberlike;
-    e?: numberlike;
-
-    isoWeekdays?: numberlike;
-    isoWeekday?: numberlike;
-    E?: numberlike;
-  }
-
-  interface FromTo {
-    from: MomentInput;
-    to: MomentInput;
-  }
-
-  type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
-  type DurationInputArg1 = Duration | number | string | FromTo | DurationInputObject | void; // null | undefined
-  type DurationInputArg2 = unitOfTime.DurationConstructor;
-  type LocaleSpecifier = string | Moment | Duration | string[] | boolean;
-
-  interface MomentCreationData {
-    input: MomentInput;
-    format?: MomentFormatSpecification;
-    locale: Locale;
-    isUTC: boolean;
-    strict?: boolean;
-  }
-
-  interface Moment extends Object {
-    format(format?: string): string;
-
-    startOf(unitOfTime: unitOfTime.StartOf): Moment;
-    endOf(unitOfTime: unitOfTime.StartOf): Moment;
-
-    add(amount?: DurationInputArg1, unit?: DurationInputArg2): Moment;
-    /**
-     * @deprecated reverse syntax
-     */
-    add(unit: unitOfTime.DurationConstructor, amount: number|string): Moment;
-
-    subtract(amount?: DurationInputArg1, unit?: DurationInputArg2): Moment;
-    /**
-     * @deprecated reverse syntax
-     */
-    subtract(unit: unitOfTime.DurationConstructor, amount: number|string): Moment;
-
-    calendar(): string;
-    calendar(formats: CalendarSpec): string;
-    calendar(time: MomentInput, formats?: CalendarSpec): string;
-
-    clone(): Moment;
-
-    /**
-     * @return Unix timestamp in milliseconds
-     */
-    valueOf(): number;
-
-    // current date/time in local mode
-    local(keepLocalTime?: boolean): Moment;
-    isLocal(): boolean;
-
-    // current date/time in UTC mode
-    utc(keepLocalTime?: boolean): Moment;
-    isUTC(): boolean;
-    /**
-     * @deprecated use isUTC
-     */
-    isUtc(): boolean;
-
-    parseZone(): Moment;
-    isValid(): boolean;
-    invalidAt(): number;
-
-    hasAlignedHourOffset(other?: MomentInput): boolean;
-
-    creationData(): MomentCreationData;
-    parsingFlags(): MomentParsingFlags;
-
-    year(y: number): Moment;
-    year(): number;
-    /**
-     * @deprecated use year(y)
-     */
-    years(y: number): Moment;
-    /**
-     * @deprecated use year()
-     */
-    years(): number;
-    quarter(): number;
-    quarter(q: number): Moment;
-    quarters(): number;
-    quarters(q: number): Moment;
-    month(M: number|string): Moment;
-    month(): number;
-    /**
-     * @deprecated use month(M)
-     */
-    months(M: number|string): Moment;
-    /**
-     * @deprecated use month()
-     */
-    months(): number;
-    day(d: number|string): Moment;
-    day(): number;
-    days(d: number|string): Moment;
-    days(): number;
-    date(d: number): Moment;
-    date(): number;
-    /**
-     * @deprecated use date(d)
-     */
-    dates(d: number): Moment;
-    /**
-     * @deprecated use date()
-     */
-    dates(): number;
-    hour(h: number): Moment;
-    hour(): number;
-    hours(h: number): Moment;
-    hours(): number;
-    minute(m: number): Moment;
-    minute(): number;
-    minutes(m: number): Moment;
-    minutes(): number;
-    second(s: number): Moment;
-    second(): number;
-    seconds(s: number): Moment;
-    seconds(): number;
-    millisecond(ms: number): Moment;
-    millisecond(): number;
-    milliseconds(ms: number): Moment;
-    milliseconds(): number;
-    weekday(): number;
-    weekday(d: number): Moment;
-    isoWeekday(): number;
-    isoWeekday(d: number|string): Moment;
-    weekYear(): number;
-    weekYear(d: number): Moment;
-    isoWeekYear(): number;
-    isoWeekYear(d: number): Moment;
-    week(): number;
-    week(d: number): Moment;
-    weeks(): number;
-    weeks(d: number): Moment;
-    isoWeek(): number;
-    isoWeek(d: number): Moment;
-    isoWeeks(): number;
-    isoWeeks(d: number): Moment;
-    weeksInYear(): number;
-    weeksInWeekYear(): number;
-    isoWeeksInYear(): number;
-    isoWeeksInISOWeekYear(): number;
-    dayOfYear(): number;
-    dayOfYear(d: number): Moment;
-
-    from(inp: MomentInput, suffix?: boolean): string;
-    to(inp: MomentInput, suffix?: boolean): string;
-    fromNow(withoutSuffix?: boolean): string;
-    toNow(withoutPrefix?: boolean): string;
-
-    diff(b: MomentInput, unitOfTime?: unitOfTime.Diff, precise?: boolean): number;
-
-    toArray(): number[];
-    toDate(): Date;
-    toISOString(keepOffset?: boolean): string;
-    inspect(): string;
-    toJSON(): string;
-    unix(): number;
-
-    isLeapYear(): boolean;
-    /**
-     * @deprecated in favor of utcOffset
-     */
-    zone(): number;
-    zone(b: number|string): Moment;
-    utcOffset(): number;
-    utcOffset(b: number|string, keepLocalTime?: boolean): Moment;
-    isUtcOffset(): boolean;
-    daysInMonth(): number;
-    isDST(): boolean;
-
-    zoneAbbr(): string;
-    zoneName(): string;
-
-    isBefore(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isAfter(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSame(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSameOrAfter(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSameOrBefore(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isBetween(a: MomentInput, b: MomentInput, granularity?: unitOfTime.StartOf, inclusivity?: "()" | "[)" | "(]" | "[]"): boolean;
-
-    /**
-     * @deprecated as of 2.8.0, use locale
-     */
-    lang(language: LocaleSpecifier): Moment;
-    /**
-     * @deprecated as of 2.8.0, use locale
-     */
-    lang(): Locale;
-
-    locale(): string;
-    locale(locale: LocaleSpecifier): Moment;
-
-    localeData(): Locale;
-
-    /**
-     * @deprecated no reliable implementation
-     */
-    isDSTShifted(): boolean;
-
-    // NOTE(constructor): Same as moment constructor
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    max(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    max(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-    // NOTE(constructor): Same as moment constructor
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    min(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    min(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-    get(unit: unitOfTime.All): number;
-    set(unit: unitOfTime.All, value: number): Moment;
-    set(objectLiteral: MomentSetObject): Moment;
-
-    toObject(): MomentObjectOutput;
-  }
-
-  export var version: string;
-  export var fn: Moment;
-
-  // NOTE(constructor): Same as moment constructor
-  /**
-   * @param strict Strict parsing disables the deprecated fallback to the native Date constructor when
-   * parsing a string.
-   */
-  export function utc(inp?: MomentInput, strict?: boolean): Moment;
-  /**
-   * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
-   * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
-   * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
-   */
-  export function utc(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-  /**
-   * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
-   * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
-   * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
-   */
-  export function utc(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-  export function unix(timestamp: number): Moment;
-
-  export function invalid(flags?: MomentParsingFlagsOpt): Moment;
-  export function isMoment(m: any): m is Moment;
-  export function isDate(m: any): m is Date;
-  export function isDuration(d: any): d is Duration;
-
-  /**
-   * @deprecated in 2.8.0
-   */
-  export function lang(language?: string): string;
-  /**
-   * @deprecated in 2.8.0
-   */
-  export function lang(language?: string, definition?: Locale): string;
-
-  export function locale(language?: string): string;
-  export function locale(language?: string[]): string;
-  export function locale(language?: string, definition?: LocaleSpecification | void): string; // null | undefined
-
-  export function localeData(key?: string | string[]): Locale;
-
-  export function duration(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-
-  // NOTE(constructor): Same as moment constructor
-  export function parseZone(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-  export function parseZone(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-  export function months(): string[];
-  export function months(index: number): string;
-  export function months(format: string): string[];
-  export function months(format: string, index: number): string;
-  export function monthsShort(): string[];
-  export function monthsShort(index: number): string;
-  export function monthsShort(format: string): string[];
-  export function monthsShort(format: string, index: number): string;
-
-  export function weekdays(): string[];
-  export function weekdays(index: number): string;
-  export function weekdays(format: string): string[];
-  export function weekdays(format: string, index: number): string;
-  export function weekdays(localeSorted: boolean): string[];
-  export function weekdays(localeSorted: boolean, index: number): string;
-  export function weekdays(localeSorted: boolean, format: string): string[];
-  export function weekdays(localeSorted: boolean, format: string, index: number): string;
-  export function weekdaysShort(): string[];
-  export function weekdaysShort(index: number): string;
-  export function weekdaysShort(format: string): string[];
-  export function weekdaysShort(format: string, index: number): string;
-  export function weekdaysShort(localeSorted: boolean): string[];
-  export function weekdaysShort(localeSorted: boolean, index: number): string;
-  export function weekdaysShort(localeSorted: boolean, format: string): string[];
-  export function weekdaysShort(localeSorted: boolean, format: string, index: number): string;
-  export function weekdaysMin(): string[];
-  export function weekdaysMin(index: number): string;
-  export function weekdaysMin(format: string): string[];
-  export function weekdaysMin(format: string, index: number): string;
-  export function weekdaysMin(localeSorted: boolean): string[];
-  export function weekdaysMin(localeSorted: boolean, index: number): string;
-  export function weekdaysMin(localeSorted: boolean, format: string): string[];
-  export function weekdaysMin(localeSorted: boolean, format: string, index: number): string;
-
-  export function min(moments: Moment[]): Moment;
-  export function min(...moments: Moment[]): Moment;
-  export function max(moments: Moment[]): Moment;
-  export function max(...moments: Moment[]): Moment;
-
-  /**
-   * Returns unix time in milliseconds. Overwrite for profit.
-   */
-  export function now(): number;
-
-  export function defineLocale(language: string, localeSpec: LocaleSpecification | void): Locale; // null
-  export function updateLocale(language: string, localeSpec: LocaleSpecification | void): Locale; // null
-
-  export function locales(): string[];
-
-  export function normalizeUnits(unit: unitOfTime.All): string;
-  export function relativeTimeThreshold(threshold: string): number | boolean;
-  export function relativeTimeThreshold(threshold: string, limit: number): boolean;
-  export function relativeTimeRounding(fn: (num: number) => number): boolean;
-  export function relativeTimeRounding(): (num: number) => number;
-  export function calendarFormat(m: Moment, now: Moment): string;
-
-  export function parseTwoDigitYear(input: string): number;
-
-  /**
-   * Constant used to enable explicit ISO_8601 format parsing.
-   */
-  export var ISO_8601: MomentBuiltinFormat;
-  export var RFC_2822: MomentBuiltinFormat;
-
-  export var defaultFormat: string;
-  export var defaultFormatUtc: string;
-  export var suppressDeprecationWarnings: boolean;
-  export var deprecationHandler: ((name: string | void, msg: string) => void) | void;
-
-  export var HTML5_FMT: {
-    DATETIME_LOCAL: string,
-    DATETIME_LOCAL_SECONDS: string,
-    DATETIME_LOCAL_MS: string,
-    DATE: string,
-    TIME: string,
-    TIME_SECONDS: string,
-    TIME_MS: string,
-    WEEK: string,
-    MONTH: string
-  };
-
-}
-
-export = moment;
Index: ckend/node_modules/moment/moment.js
===================================================================
--- backend/node_modules/moment/moment.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5688 +1,0 @@
-//! moment.js
-//! version : 2.30.1
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-;(function (global, factory) {
-    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-    typeof define === 'function' && define.amd ? define(factory) :
-    global.moment = factory()
-}(this, (function () { 'use strict';
-
-    var hookCallback;
-
-    function hooks() {
-        return hookCallback.apply(null, arguments);
-    }
-
-    // This is done to register the method called with moment()
-    // without creating circular dependencies.
-    function setHookCallback(callback) {
-        hookCallback = callback;
-    }
-
-    function isArray(input) {
-        return (
-            input instanceof Array ||
-            Object.prototype.toString.call(input) === '[object Array]'
-        );
-    }
-
-    function isObject(input) {
-        // IE8 will treat undefined and null as object if it wasn't for
-        // input != null
-        return (
-            input != null &&
-            Object.prototype.toString.call(input) === '[object Object]'
-        );
-    }
-
-    function hasOwnProp(a, b) {
-        return Object.prototype.hasOwnProperty.call(a, b);
-    }
-
-    function isObjectEmpty(obj) {
-        if (Object.getOwnPropertyNames) {
-            return Object.getOwnPropertyNames(obj).length === 0;
-        } else {
-            var k;
-            for (k in obj) {
-                if (hasOwnProp(obj, k)) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-
-    function isUndefined(input) {
-        return input === void 0;
-    }
-
-    function isNumber(input) {
-        return (
-            typeof input === 'number' ||
-            Object.prototype.toString.call(input) === '[object Number]'
-        );
-    }
-
-    function isDate(input) {
-        return (
-            input instanceof Date ||
-            Object.prototype.toString.call(input) === '[object Date]'
-        );
-    }
-
-    function map(arr, fn) {
-        var res = [],
-            i,
-            arrLen = arr.length;
-        for (i = 0; i < arrLen; ++i) {
-            res.push(fn(arr[i], i));
-        }
-        return res;
-    }
-
-    function extend(a, b) {
-        for (var i in b) {
-            if (hasOwnProp(b, i)) {
-                a[i] = b[i];
-            }
-        }
-
-        if (hasOwnProp(b, 'toString')) {
-            a.toString = b.toString;
-        }
-
-        if (hasOwnProp(b, 'valueOf')) {
-            a.valueOf = b.valueOf;
-        }
-
-        return a;
-    }
-
-    function createUTC(input, format, locale, strict) {
-        return createLocalOrUTC(input, format, locale, strict, true).utc();
-    }
-
-    function defaultParsingFlags() {
-        // We need to deep clone this object.
-        return {
-            empty: false,
-            unusedTokens: [],
-            unusedInput: [],
-            overflow: -2,
-            charsLeftOver: 0,
-            nullInput: false,
-            invalidEra: null,
-            invalidMonth: null,
-            invalidFormat: false,
-            userInvalidated: false,
-            iso: false,
-            parsedDateParts: [],
-            era: null,
-            meridiem: null,
-            rfc2822: false,
-            weekdayMismatch: false,
-        };
-    }
-
-    function getParsingFlags(m) {
-        if (m._pf == null) {
-            m._pf = defaultParsingFlags();
-        }
-        return m._pf;
-    }
-
-    var some;
-    if (Array.prototype.some) {
-        some = Array.prototype.some;
-    } else {
-        some = function (fun) {
-            var t = Object(this),
-                len = t.length >>> 0,
-                i;
-
-            for (i = 0; i < len; i++) {
-                if (i in t && fun.call(this, t[i], i, t)) {
-                    return true;
-                }
-            }
-
-            return false;
-        };
-    }
-
-    function isValid(m) {
-        var flags = null,
-            parsedParts = false,
-            isNowValid = m._d && !isNaN(m._d.getTime());
-        if (isNowValid) {
-            flags = getParsingFlags(m);
-            parsedParts = some.call(flags.parsedDateParts, function (i) {
-                return i != null;
-            });
-            isNowValid =
-                flags.overflow < 0 &&
-                !flags.empty &&
-                !flags.invalidEra &&
-                !flags.invalidMonth &&
-                !flags.invalidWeekday &&
-                !flags.weekdayMismatch &&
-                !flags.nullInput &&
-                !flags.invalidFormat &&
-                !flags.userInvalidated &&
-                (!flags.meridiem || (flags.meridiem && parsedParts));
-            if (m._strict) {
-                isNowValid =
-                    isNowValid &&
-                    flags.charsLeftOver === 0 &&
-                    flags.unusedTokens.length === 0 &&
-                    flags.bigHour === undefined;
-            }
-        }
-        if (Object.isFrozen == null || !Object.isFrozen(m)) {
-            m._isValid = isNowValid;
-        } else {
-            return isNowValid;
-        }
-        return m._isValid;
-    }
-
-    function createInvalid(flags) {
-        var m = createUTC(NaN);
-        if (flags != null) {
-            extend(getParsingFlags(m), flags);
-        } else {
-            getParsingFlags(m).userInvalidated = true;
-        }
-
-        return m;
-    }
-
-    // Plugins that add properties should also add the key here (null value),
-    // so we can properly clone ourselves.
-    var momentProperties = (hooks.momentProperties = []),
-        updateInProgress = false;
-
-    function copyConfig(to, from) {
-        var i,
-            prop,
-            val,
-            momentPropertiesLen = momentProperties.length;
-
-        if (!isUndefined(from._isAMomentObject)) {
-            to._isAMomentObject = from._isAMomentObject;
-        }
-        if (!isUndefined(from._i)) {
-            to._i = from._i;
-        }
-        if (!isUndefined(from._f)) {
-            to._f = from._f;
-        }
-        if (!isUndefined(from._l)) {
-            to._l = from._l;
-        }
-        if (!isUndefined(from._strict)) {
-            to._strict = from._strict;
-        }
-        if (!isUndefined(from._tzm)) {
-            to._tzm = from._tzm;
-        }
-        if (!isUndefined(from._isUTC)) {
-            to._isUTC = from._isUTC;
-        }
-        if (!isUndefined(from._offset)) {
-            to._offset = from._offset;
-        }
-        if (!isUndefined(from._pf)) {
-            to._pf = getParsingFlags(from);
-        }
-        if (!isUndefined(from._locale)) {
-            to._locale = from._locale;
-        }
-
-        if (momentPropertiesLen > 0) {
-            for (i = 0; i < momentPropertiesLen; i++) {
-                prop = momentProperties[i];
-                val = from[prop];
-                if (!isUndefined(val)) {
-                    to[prop] = val;
-                }
-            }
-        }
-
-        return to;
-    }
-
-    // Moment prototype object
-    function Moment(config) {
-        copyConfig(this, config);
-        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
-        if (!this.isValid()) {
-            this._d = new Date(NaN);
-        }
-        // Prevent infinite loop in case updateOffset creates new moment
-        // objects.
-        if (updateInProgress === false) {
-            updateInProgress = true;
-            hooks.updateOffset(this);
-            updateInProgress = false;
-        }
-    }
-
-    function isMoment(obj) {
-        return (
-            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
-        );
-    }
-
-    function warn(msg) {
-        if (
-            hooks.suppressDeprecationWarnings === false &&
-            typeof console !== 'undefined' &&
-            console.warn
-        ) {
-            console.warn('Deprecation warning: ' + msg);
-        }
-    }
-
-    function deprecate(msg, fn) {
-        var firstTime = true;
-
-        return extend(function () {
-            if (hooks.deprecationHandler != null) {
-                hooks.deprecationHandler(null, msg);
-            }
-            if (firstTime) {
-                var args = [],
-                    arg,
-                    i,
-                    key,
-                    argLen = arguments.length;
-                for (i = 0; i < argLen; i++) {
-                    arg = '';
-                    if (typeof arguments[i] === 'object') {
-                        arg += '\n[' + i + '] ';
-                        for (key in arguments[0]) {
-                            if (hasOwnProp(arguments[0], key)) {
-                                arg += key + ': ' + arguments[0][key] + ', ';
-                            }
-                        }
-                        arg = arg.slice(0, -2); // Remove trailing comma and space
-                    } else {
-                        arg = arguments[i];
-                    }
-                    args.push(arg);
-                }
-                warn(
-                    msg +
-                        '\nArguments: ' +
-                        Array.prototype.slice.call(args).join('') +
-                        '\n' +
-                        new Error().stack
-                );
-                firstTime = false;
-            }
-            return fn.apply(this, arguments);
-        }, fn);
-    }
-
-    var deprecations = {};
-
-    function deprecateSimple(name, msg) {
-        if (hooks.deprecationHandler != null) {
-            hooks.deprecationHandler(name, msg);
-        }
-        if (!deprecations[name]) {
-            warn(msg);
-            deprecations[name] = true;
-        }
-    }
-
-    hooks.suppressDeprecationWarnings = false;
-    hooks.deprecationHandler = null;
-
-    function isFunction(input) {
-        return (
-            (typeof Function !== 'undefined' && input instanceof Function) ||
-            Object.prototype.toString.call(input) === '[object Function]'
-        );
-    }
-
-    function set(config) {
-        var prop, i;
-        for (i in config) {
-            if (hasOwnProp(config, i)) {
-                prop = config[i];
-                if (isFunction(prop)) {
-                    this[i] = prop;
-                } else {
-                    this['_' + i] = prop;
-                }
-            }
-        }
-        this._config = config;
-        // Lenient ordinal parsing accepts just a number in addition to
-        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
-        // TODO: Remove "ordinalParse" fallback in next major release.
-        this._dayOfMonthOrdinalParseLenient = new RegExp(
-            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
-                '|' +
-                /\d{1,2}/.source
-        );
-    }
-
-    function mergeConfigs(parentConfig, childConfig) {
-        var res = extend({}, parentConfig),
-            prop;
-        for (prop in childConfig) {
-            if (hasOwnProp(childConfig, prop)) {
-                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
-                    res[prop] = {};
-                    extend(res[prop], parentConfig[prop]);
-                    extend(res[prop], childConfig[prop]);
-                } else if (childConfig[prop] != null) {
-                    res[prop] = childConfig[prop];
-                } else {
-                    delete res[prop];
-                }
-            }
-        }
-        for (prop in parentConfig) {
-            if (
-                hasOwnProp(parentConfig, prop) &&
-                !hasOwnProp(childConfig, prop) &&
-                isObject(parentConfig[prop])
-            ) {
-                // make sure changes to properties don't modify parent config
-                res[prop] = extend({}, res[prop]);
-            }
-        }
-        return res;
-    }
-
-    function Locale(config) {
-        if (config != null) {
-            this.set(config);
-        }
-    }
-
-    var keys;
-
-    if (Object.keys) {
-        keys = Object.keys;
-    } else {
-        keys = function (obj) {
-            var i,
-                res = [];
-            for (i in obj) {
-                if (hasOwnProp(obj, i)) {
-                    res.push(i);
-                }
-            }
-            return res;
-        };
-    }
-
-    var defaultCalendar = {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    };
-
-    function calendar(key, mom, now) {
-        var output = this._calendar[key] || this._calendar['sameElse'];
-        return isFunction(output) ? output.call(mom, now) : output;
-    }
-
-    function zeroFill(number, targetLength, forceSign) {
-        var absNumber = '' + Math.abs(number),
-            zerosToFill = targetLength - absNumber.length,
-            sign = number >= 0;
-        return (
-            (sign ? (forceSign ? '+' : '') : '-') +
-            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
-            absNumber
-        );
-    }
-
-    var formattingTokens =
-            /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
-        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
-        formatFunctions = {},
-        formatTokenFunctions = {};
-
-    // token:    'M'
-    // padded:   ['MM', 2]
-    // ordinal:  'Mo'
-    // callback: function () { this.month() + 1 }
-    function addFormatToken(token, padded, ordinal, callback) {
-        var func = callback;
-        if (typeof callback === 'string') {
-            func = function () {
-                return this[callback]();
-            };
-        }
-        if (token) {
-            formatTokenFunctions[token] = func;
-        }
-        if (padded) {
-            formatTokenFunctions[padded[0]] = function () {
-                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
-            };
-        }
-        if (ordinal) {
-            formatTokenFunctions[ordinal] = function () {
-                return this.localeData().ordinal(
-                    func.apply(this, arguments),
-                    token
-                );
-            };
-        }
-    }
-
-    function removeFormattingTokens(input) {
-        if (input.match(/\[[\s\S]/)) {
-            return input.replace(/^\[|\]$/g, '');
-        }
-        return input.replace(/\\/g, '');
-    }
-
-    function makeFormatFunction(format) {
-        var array = format.match(formattingTokens),
-            i,
-            length;
-
-        for (i = 0, length = array.length; i < length; i++) {
-            if (formatTokenFunctions[array[i]]) {
-                array[i] = formatTokenFunctions[array[i]];
-            } else {
-                array[i] = removeFormattingTokens(array[i]);
-            }
-        }
-
-        return function (mom) {
-            var output = '',
-                i;
-            for (i = 0; i < length; i++) {
-                output += isFunction(array[i])
-                    ? array[i].call(mom, format)
-                    : array[i];
-            }
-            return output;
-        };
-    }
-
-    // format date using native date object
-    function formatMoment(m, format) {
-        if (!m.isValid()) {
-            return m.localeData().invalidDate();
-        }
-
-        format = expandFormat(format, m.localeData());
-        formatFunctions[format] =
-            formatFunctions[format] || makeFormatFunction(format);
-
-        return formatFunctions[format](m);
-    }
-
-    function expandFormat(format, locale) {
-        var i = 5;
-
-        function replaceLongDateFormatTokens(input) {
-            return locale.longDateFormat(input) || input;
-        }
-
-        localFormattingTokens.lastIndex = 0;
-        while (i >= 0 && localFormattingTokens.test(format)) {
-            format = format.replace(
-                localFormattingTokens,
-                replaceLongDateFormatTokens
-            );
-            localFormattingTokens.lastIndex = 0;
-            i -= 1;
-        }
-
-        return format;
-    }
-
-    var defaultLongDateFormat = {
-        LTS: 'h:mm:ss A',
-        LT: 'h:mm A',
-        L: 'MM/DD/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY h:mm A',
-        LLLL: 'dddd, MMMM D, YYYY h:mm A',
-    };
-
-    function longDateFormat(key) {
-        var format = this._longDateFormat[key],
-            formatUpper = this._longDateFormat[key.toUpperCase()];
-
-        if (format || !formatUpper) {
-            return format;
-        }
-
-        this._longDateFormat[key] = formatUpper
-            .match(formattingTokens)
-            .map(function (tok) {
-                if (
-                    tok === 'MMMM' ||
-                    tok === 'MM' ||
-                    tok === 'DD' ||
-                    tok === 'dddd'
-                ) {
-                    return tok.slice(1);
-                }
-                return tok;
-            })
-            .join('');
-
-        return this._longDateFormat[key];
-    }
-
-    var defaultInvalidDate = 'Invalid date';
-
-    function invalidDate() {
-        return this._invalidDate;
-    }
-
-    var defaultOrdinal = '%d',
-        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
-
-    function ordinal(number) {
-        return this._ordinal.replace('%d', number);
-    }
-
-    var defaultRelativeTime = {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        w: 'a week',
-        ww: '%d weeks',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    };
-
-    function relativeTime(number, withoutSuffix, string, isFuture) {
-        var output = this._relativeTime[string];
-        return isFunction(output)
-            ? output(number, withoutSuffix, string, isFuture)
-            : output.replace(/%d/i, number);
-    }
-
-    function pastFuture(diff, output) {
-        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
-    }
-
-    var aliases = {
-        D: 'date',
-        dates: 'date',
-        date: 'date',
-        d: 'day',
-        days: 'day',
-        day: 'day',
-        e: 'weekday',
-        weekdays: 'weekday',
-        weekday: 'weekday',
-        E: 'isoWeekday',
-        isoweekdays: 'isoWeekday',
-        isoweekday: 'isoWeekday',
-        DDD: 'dayOfYear',
-        dayofyears: 'dayOfYear',
-        dayofyear: 'dayOfYear',
-        h: 'hour',
-        hours: 'hour',
-        hour: 'hour',
-        ms: 'millisecond',
-        milliseconds: 'millisecond',
-        millisecond: 'millisecond',
-        m: 'minute',
-        minutes: 'minute',
-        minute: 'minute',
-        M: 'month',
-        months: 'month',
-        month: 'month',
-        Q: 'quarter',
-        quarters: 'quarter',
-        quarter: 'quarter',
-        s: 'second',
-        seconds: 'second',
-        second: 'second',
-        gg: 'weekYear',
-        weekyears: 'weekYear',
-        weekyear: 'weekYear',
-        GG: 'isoWeekYear',
-        isoweekyears: 'isoWeekYear',
-        isoweekyear: 'isoWeekYear',
-        w: 'week',
-        weeks: 'week',
-        week: 'week',
-        W: 'isoWeek',
-        isoweeks: 'isoWeek',
-        isoweek: 'isoWeek',
-        y: 'year',
-        years: 'year',
-        year: 'year',
-    };
-
-    function normalizeUnits(units) {
-        return typeof units === 'string'
-            ? aliases[units] || aliases[units.toLowerCase()]
-            : undefined;
-    }
-
-    function normalizeObjectUnits(inputObject) {
-        var normalizedInput = {},
-            normalizedProp,
-            prop;
-
-        for (prop in inputObject) {
-            if (hasOwnProp(inputObject, prop)) {
-                normalizedProp = normalizeUnits(prop);
-                if (normalizedProp) {
-                    normalizedInput[normalizedProp] = inputObject[prop];
-                }
-            }
-        }
-
-        return normalizedInput;
-    }
-
-    var priorities = {
-        date: 9,
-        day: 11,
-        weekday: 11,
-        isoWeekday: 11,
-        dayOfYear: 4,
-        hour: 13,
-        millisecond: 16,
-        minute: 14,
-        month: 8,
-        quarter: 7,
-        second: 15,
-        weekYear: 1,
-        isoWeekYear: 1,
-        week: 5,
-        isoWeek: 5,
-        year: 1,
-    };
-
-    function getPrioritizedUnits(unitsObj) {
-        var units = [],
-            u;
-        for (u in unitsObj) {
-            if (hasOwnProp(unitsObj, u)) {
-                units.push({ unit: u, priority: priorities[u] });
-            }
-        }
-        units.sort(function (a, b) {
-            return a.priority - b.priority;
-        });
-        return units;
-    }
-
-    var match1 = /\d/, //       0 - 9
-        match2 = /\d\d/, //      00 - 99
-        match3 = /\d{3}/, //     000 - 999
-        match4 = /\d{4}/, //    0000 - 9999
-        match6 = /[+-]?\d{6}/, // -999999 - 999999
-        match1to2 = /\d\d?/, //       0 - 99
-        match3to4 = /\d\d\d\d?/, //     999 - 9999
-        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
-        match1to3 = /\d{1,3}/, //       0 - 999
-        match1to4 = /\d{1,4}/, //       0 - 9999
-        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
-        matchUnsigned = /\d+/, //       0 - inf
-        matchSigned = /[+-]?\d+/, //    -inf - inf
-        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
-        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
-        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-        // any word (or two) characters or numbers including two/three word month in arabic.
-        // includes scottish gaelic two word and hyphenated months
-        matchWord =
-            /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
-        match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
-        match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
-        regexes;
-
-    regexes = {};
-
-    function addRegexToken(token, regex, strictRegex) {
-        regexes[token] = isFunction(regex)
-            ? regex
-            : function (isStrict, localeData) {
-                  return isStrict && strictRegex ? strictRegex : regex;
-              };
-    }
-
-    function getParseRegexForToken(token, config) {
-        if (!hasOwnProp(regexes, token)) {
-            return new RegExp(unescapeFormat(token));
-        }
-
-        return regexes[token](config._strict, config._locale);
-    }
-
-    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-    function unescapeFormat(s) {
-        return regexEscape(
-            s
-                .replace('\\', '')
-                .replace(
-                    /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
-                    function (matched, p1, p2, p3, p4) {
-                        return p1 || p2 || p3 || p4;
-                    }
-                )
-        );
-    }
-
-    function regexEscape(s) {
-        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-    }
-
-    function absFloor(number) {
-        if (number < 0) {
-            // -0 -> 0
-            return Math.ceil(number) || 0;
-        } else {
-            return Math.floor(number);
-        }
-    }
-
-    function toInt(argumentForCoercion) {
-        var coercedNumber = +argumentForCoercion,
-            value = 0;
-
-        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-            value = absFloor(coercedNumber);
-        }
-
-        return value;
-    }
-
-    var tokens = {};
-
-    function addParseToken(token, callback) {
-        var i,
-            func = callback,
-            tokenLen;
-        if (typeof token === 'string') {
-            token = [token];
-        }
-        if (isNumber(callback)) {
-            func = function (input, array) {
-                array[callback] = toInt(input);
-            };
-        }
-        tokenLen = token.length;
-        for (i = 0; i < tokenLen; i++) {
-            tokens[token[i]] = func;
-        }
-    }
-
-    function addWeekParseToken(token, callback) {
-        addParseToken(token, function (input, array, config, token) {
-            config._w = config._w || {};
-            callback(input, config._w, config, token);
-        });
-    }
-
-    function addTimeToArrayFromToken(token, input, config) {
-        if (input != null && hasOwnProp(tokens, token)) {
-            tokens[token](input, config._a, config, token);
-        }
-    }
-
-    function isLeapYear(year) {
-        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-    }
-
-    var YEAR = 0,
-        MONTH = 1,
-        DATE = 2,
-        HOUR = 3,
-        MINUTE = 4,
-        SECOND = 5,
-        MILLISECOND = 6,
-        WEEK = 7,
-        WEEKDAY = 8;
-
-    // FORMATTING
-
-    addFormatToken('Y', 0, 0, function () {
-        var y = this.year();
-        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
-    });
-
-    addFormatToken(0, ['YY', 2], 0, function () {
-        return this.year() % 100;
-    });
-
-    addFormatToken(0, ['YYYY', 4], 0, 'year');
-    addFormatToken(0, ['YYYYY', 5], 0, 'year');
-    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
-    // PARSING
-
-    addRegexToken('Y', matchSigned);
-    addRegexToken('YY', match1to2, match2);
-    addRegexToken('YYYY', match1to4, match4);
-    addRegexToken('YYYYY', match1to6, match6);
-    addRegexToken('YYYYYY', match1to6, match6);
-
-    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
-    addParseToken('YYYY', function (input, array) {
-        array[YEAR] =
-            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
-    });
-    addParseToken('YY', function (input, array) {
-        array[YEAR] = hooks.parseTwoDigitYear(input);
-    });
-    addParseToken('Y', function (input, array) {
-        array[YEAR] = parseInt(input, 10);
-    });
-
-    // HELPERS
-
-    function daysInYear(year) {
-        return isLeapYear(year) ? 366 : 365;
-    }
-
-    // HOOKS
-
-    hooks.parseTwoDigitYear = function (input) {
-        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-    };
-
-    // MOMENTS
-
-    var getSetYear = makeGetSet('FullYear', true);
-
-    function getIsLeapYear() {
-        return isLeapYear(this.year());
-    }
-
-    function makeGetSet(unit, keepTime) {
-        return function (value) {
-            if (value != null) {
-                set$1(this, unit, value);
-                hooks.updateOffset(this, keepTime);
-                return this;
-            } else {
-                return get(this, unit);
-            }
-        };
-    }
-
-    function get(mom, unit) {
-        if (!mom.isValid()) {
-            return NaN;
-        }
-
-        var d = mom._d,
-            isUTC = mom._isUTC;
-
-        switch (unit) {
-            case 'Milliseconds':
-                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
-            case 'Seconds':
-                return isUTC ? d.getUTCSeconds() : d.getSeconds();
-            case 'Minutes':
-                return isUTC ? d.getUTCMinutes() : d.getMinutes();
-            case 'Hours':
-                return isUTC ? d.getUTCHours() : d.getHours();
-            case 'Date':
-                return isUTC ? d.getUTCDate() : d.getDate();
-            case 'Day':
-                return isUTC ? d.getUTCDay() : d.getDay();
-            case 'Month':
-                return isUTC ? d.getUTCMonth() : d.getMonth();
-            case 'FullYear':
-                return isUTC ? d.getUTCFullYear() : d.getFullYear();
-            default:
-                return NaN; // Just in case
-        }
-    }
-
-    function set$1(mom, unit, value) {
-        var d, isUTC, year, month, date;
-
-        if (!mom.isValid() || isNaN(value)) {
-            return;
-        }
-
-        d = mom._d;
-        isUTC = mom._isUTC;
-
-        switch (unit) {
-            case 'Milliseconds':
-                return void (isUTC
-                    ? d.setUTCMilliseconds(value)
-                    : d.setMilliseconds(value));
-            case 'Seconds':
-                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
-            case 'Minutes':
-                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
-            case 'Hours':
-                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
-            case 'Date':
-                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
-            // case 'Day': // Not real
-            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
-            // case 'Month': // Not used because we need to pass two variables
-            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
-            case 'FullYear':
-                break; // See below ...
-            default:
-                return; // Just in case
-        }
-
-        year = value;
-        month = mom.month();
-        date = mom.date();
-        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
-        void (isUTC
-            ? d.setUTCFullYear(year, month, date)
-            : d.setFullYear(year, month, date));
-    }
-
-    // MOMENTS
-
-    function stringGet(units) {
-        units = normalizeUnits(units);
-        if (isFunction(this[units])) {
-            return this[units]();
-        }
-        return this;
-    }
-
-    function stringSet(units, value) {
-        if (typeof units === 'object') {
-            units = normalizeObjectUnits(units);
-            var prioritized = getPrioritizedUnits(units),
-                i,
-                prioritizedLen = prioritized.length;
-            for (i = 0; i < prioritizedLen; i++) {
-                this[prioritized[i].unit](units[prioritized[i].unit]);
-            }
-        } else {
-            units = normalizeUnits(units);
-            if (isFunction(this[units])) {
-                return this[units](value);
-            }
-        }
-        return this;
-    }
-
-    function mod(n, x) {
-        return ((n % x) + x) % x;
-    }
-
-    var indexOf;
-
-    if (Array.prototype.indexOf) {
-        indexOf = Array.prototype.indexOf;
-    } else {
-        indexOf = function (o) {
-            // I know
-            var i;
-            for (i = 0; i < this.length; ++i) {
-                if (this[i] === o) {
-                    return i;
-                }
-            }
-            return -1;
-        };
-    }
-
-    function daysInMonth(year, month) {
-        if (isNaN(year) || isNaN(month)) {
-            return NaN;
-        }
-        var modMonth = mod(month, 12);
-        year += (month - modMonth) / 12;
-        return modMonth === 1
-            ? isLeapYear(year)
-                ? 29
-                : 28
-            : 31 - ((modMonth % 7) % 2);
-    }
-
-    // FORMATTING
-
-    addFormatToken('M', ['MM', 2], 'Mo', function () {
-        return this.month() + 1;
-    });
-
-    addFormatToken('MMM', 0, 0, function (format) {
-        return this.localeData().monthsShort(this, format);
-    });
-
-    addFormatToken('MMMM', 0, 0, function (format) {
-        return this.localeData().months(this, format);
-    });
-
-    // PARSING
-
-    addRegexToken('M', match1to2, match1to2NoLeadingZero);
-    addRegexToken('MM', match1to2, match2);
-    addRegexToken('MMM', function (isStrict, locale) {
-        return locale.monthsShortRegex(isStrict);
-    });
-    addRegexToken('MMMM', function (isStrict, locale) {
-        return locale.monthsRegex(isStrict);
-    });
-
-    addParseToken(['M', 'MM'], function (input, array) {
-        array[MONTH] = toInt(input) - 1;
-    });
-
-    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
-        var month = config._locale.monthsParse(input, token, config._strict);
-        // if we didn't find a month name, mark the date as invalid.
-        if (month != null) {
-            array[MONTH] = month;
-        } else {
-            getParsingFlags(config).invalidMonth = input;
-        }
-    });
-
-    // LOCALES
-
-    var defaultLocaleMonths =
-            'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-                '_'
-            ),
-        defaultLocaleMonthsShort =
-            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
-        defaultMonthsShortRegex = matchWord,
-        defaultMonthsRegex = matchWord;
-
-    function localeMonths(m, format) {
-        if (!m) {
-            return isArray(this._months)
-                ? this._months
-                : this._months['standalone'];
-        }
-        return isArray(this._months)
-            ? this._months[m.month()]
-            : this._months[
-                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
-                      ? 'format'
-                      : 'standalone'
-              ][m.month()];
-    }
-
-    function localeMonthsShort(m, format) {
-        if (!m) {
-            return isArray(this._monthsShort)
-                ? this._monthsShort
-                : this._monthsShort['standalone'];
-        }
-        return isArray(this._monthsShort)
-            ? this._monthsShort[m.month()]
-            : this._monthsShort[
-                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
-              ][m.month()];
-    }
-
-    function handleStrictParse(monthName, format, strict) {
-        var i,
-            ii,
-            mom,
-            llc = monthName.toLocaleLowerCase();
-        if (!this._monthsParse) {
-            // this is not used
-            this._monthsParse = [];
-            this._longMonthsParse = [];
-            this._shortMonthsParse = [];
-            for (i = 0; i < 12; ++i) {
-                mom = createUTC([2000, i]);
-                this._shortMonthsParse[i] = this.monthsShort(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
-            }
-        }
-
-        if (strict) {
-            if (format === 'MMM') {
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._longMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        } else {
-            if (format === 'MMM') {
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._longMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._longMonthsParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortMonthsParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        }
-    }
-
-    function localeMonthsParse(monthName, format, strict) {
-        var i, mom, regex;
-
-        if (this._monthsParseExact) {
-            return handleStrictParse.call(this, monthName, format, strict);
-        }
-
-        if (!this._monthsParse) {
-            this._monthsParse = [];
-            this._longMonthsParse = [];
-            this._shortMonthsParse = [];
-        }
-
-        // TODO: add sorting
-        // Sorting makes sure if one month (or abbr) is a prefix of another
-        // see sorting in computeMonthsParse
-        for (i = 0; i < 12; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, i]);
-            if (strict && !this._longMonthsParse[i]) {
-                this._longMonthsParse[i] = new RegExp(
-                    '^' + this.months(mom, '').replace('.', '') + '$',
-                    'i'
-                );
-                this._shortMonthsParse[i] = new RegExp(
-                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
-                    'i'
-                );
-            }
-            if (!strict && !this._monthsParse[i]) {
-                regex =
-                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-            }
-            // test the regex
-            if (
-                strict &&
-                format === 'MMMM' &&
-                this._longMonthsParse[i].test(monthName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'MMM' &&
-                this._shortMonthsParse[i].test(monthName)
-            ) {
-                return i;
-            } else if (!strict && this._monthsParse[i].test(monthName)) {
-                return i;
-            }
-        }
-    }
-
-    // MOMENTS
-
-    function setMonth(mom, value) {
-        if (!mom.isValid()) {
-            // No op
-            return mom;
-        }
-
-        if (typeof value === 'string') {
-            if (/^\d+$/.test(value)) {
-                value = toInt(value);
-            } else {
-                value = mom.localeData().monthsParse(value);
-                // TODO: Another silent failure?
-                if (!isNumber(value)) {
-                    return mom;
-                }
-            }
-        }
-
-        var month = value,
-            date = mom.date();
-
-        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
-        void (mom._isUTC
-            ? mom._d.setUTCMonth(month, date)
-            : mom._d.setMonth(month, date));
-        return mom;
-    }
-
-    function getSetMonth(value) {
-        if (value != null) {
-            setMonth(this, value);
-            hooks.updateOffset(this, true);
-            return this;
-        } else {
-            return get(this, 'Month');
-        }
-    }
-
-    function getDaysInMonth() {
-        return daysInMonth(this.year(), this.month());
-    }
-
-    function monthsShortRegex(isStrict) {
-        if (this._monthsParseExact) {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                computeMonthsParse.call(this);
-            }
-            if (isStrict) {
-                return this._monthsShortStrictRegex;
-            } else {
-                return this._monthsShortRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_monthsShortRegex')) {
-                this._monthsShortRegex = defaultMonthsShortRegex;
-            }
-            return this._monthsShortStrictRegex && isStrict
-                ? this._monthsShortStrictRegex
-                : this._monthsShortRegex;
-        }
-    }
-
-    function monthsRegex(isStrict) {
-        if (this._monthsParseExact) {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                computeMonthsParse.call(this);
-            }
-            if (isStrict) {
-                return this._monthsStrictRegex;
-            } else {
-                return this._monthsRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_monthsRegex')) {
-                this._monthsRegex = defaultMonthsRegex;
-            }
-            return this._monthsStrictRegex && isStrict
-                ? this._monthsStrictRegex
-                : this._monthsRegex;
-        }
-    }
-
-    function computeMonthsParse() {
-        function cmpLenRev(a, b) {
-            return b.length - a.length;
-        }
-
-        var shortPieces = [],
-            longPieces = [],
-            mixedPieces = [],
-            i,
-            mom,
-            shortP,
-            longP;
-        for (i = 0; i < 12; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, i]);
-            shortP = regexEscape(this.monthsShort(mom, ''));
-            longP = regexEscape(this.months(mom, ''));
-            shortPieces.push(shortP);
-            longPieces.push(longP);
-            mixedPieces.push(longP);
-            mixedPieces.push(shortP);
-        }
-        // Sorting makes sure if one month (or abbr) is a prefix of another it
-        // will match the longer piece.
-        shortPieces.sort(cmpLenRev);
-        longPieces.sort(cmpLenRev);
-        mixedPieces.sort(cmpLenRev);
-
-        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._monthsShortRegex = this._monthsRegex;
-        this._monthsStrictRegex = new RegExp(
-            '^(' + longPieces.join('|') + ')',
-            'i'
-        );
-        this._monthsShortStrictRegex = new RegExp(
-            '^(' + shortPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    function createDate(y, m, d, h, M, s, ms) {
-        // can't just apply() to create a date:
-        // https://stackoverflow.com/q/181348
-        var date;
-        // the date constructor remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            date = new Date(y + 400, m, d, h, M, s, ms);
-            if (isFinite(date.getFullYear())) {
-                date.setFullYear(y);
-            }
-        } else {
-            date = new Date(y, m, d, h, M, s, ms);
-        }
-
-        return date;
-    }
-
-    function createUTCDate(y) {
-        var date, args;
-        // the Date.UTC function remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            args = Array.prototype.slice.call(arguments);
-            // preserve leap years using a full 400 year cycle, then reset
-            args[0] = y + 400;
-            date = new Date(Date.UTC.apply(null, args));
-            if (isFinite(date.getUTCFullYear())) {
-                date.setUTCFullYear(y);
-            }
-        } else {
-            date = new Date(Date.UTC.apply(null, arguments));
-        }
-
-        return date;
-    }
-
-    // start-of-first-week - start-of-year
-    function firstWeekOffset(year, dow, doy) {
-        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
-            fwd = 7 + dow - doy,
-            // first-week day local weekday -- which local weekday is fwd
-            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
-
-        return -fwdlw + fwd - 1;
-    }
-
-    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
-        var localWeekday = (7 + weekday - dow) % 7,
-            weekOffset = firstWeekOffset(year, dow, doy),
-            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
-            resYear,
-            resDayOfYear;
-
-        if (dayOfYear <= 0) {
-            resYear = year - 1;
-            resDayOfYear = daysInYear(resYear) + dayOfYear;
-        } else if (dayOfYear > daysInYear(year)) {
-            resYear = year + 1;
-            resDayOfYear = dayOfYear - daysInYear(year);
-        } else {
-            resYear = year;
-            resDayOfYear = dayOfYear;
-        }
-
-        return {
-            year: resYear,
-            dayOfYear: resDayOfYear,
-        };
-    }
-
-    function weekOfYear(mom, dow, doy) {
-        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
-            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
-            resWeek,
-            resYear;
-
-        if (week < 1) {
-            resYear = mom.year() - 1;
-            resWeek = week + weeksInYear(resYear, dow, doy);
-        } else if (week > weeksInYear(mom.year(), dow, doy)) {
-            resWeek = week - weeksInYear(mom.year(), dow, doy);
-            resYear = mom.year() + 1;
-        } else {
-            resYear = mom.year();
-            resWeek = week;
-        }
-
-        return {
-            week: resWeek,
-            year: resYear,
-        };
-    }
-
-    function weeksInYear(year, dow, doy) {
-        var weekOffset = firstWeekOffset(year, dow, doy),
-            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
-        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
-    }
-
-    // FORMATTING
-
-    addFormatToken('w', ['ww', 2], 'wo', 'week');
-    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
-    // PARSING
-
-    addRegexToken('w', match1to2, match1to2NoLeadingZero);
-    addRegexToken('ww', match1to2, match2);
-    addRegexToken('W', match1to2, match1to2NoLeadingZero);
-    addRegexToken('WW', match1to2, match2);
-
-    addWeekParseToken(
-        ['w', 'ww', 'W', 'WW'],
-        function (input, week, config, token) {
-            week[token.substr(0, 1)] = toInt(input);
-        }
-    );
-
-    // HELPERS
-
-    // LOCALES
-
-    function localeWeek(mom) {
-        return weekOfYear(mom, this._week.dow, this._week.doy).week;
-    }
-
-    var defaultLocaleWeek = {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    };
-
-    function localeFirstDayOfWeek() {
-        return this._week.dow;
-    }
-
-    function localeFirstDayOfYear() {
-        return this._week.doy;
-    }
-
-    // MOMENTS
-
-    function getSetWeek(input) {
-        var week = this.localeData().week(this);
-        return input == null ? week : this.add((input - week) * 7, 'd');
-    }
-
-    function getSetISOWeek(input) {
-        var week = weekOfYear(this, 1, 4).week;
-        return input == null ? week : this.add((input - week) * 7, 'd');
-    }
-
-    // FORMATTING
-
-    addFormatToken('d', 0, 'do', 'day');
-
-    addFormatToken('dd', 0, 0, function (format) {
-        return this.localeData().weekdaysMin(this, format);
-    });
-
-    addFormatToken('ddd', 0, 0, function (format) {
-        return this.localeData().weekdaysShort(this, format);
-    });
-
-    addFormatToken('dddd', 0, 0, function (format) {
-        return this.localeData().weekdays(this, format);
-    });
-
-    addFormatToken('e', 0, 0, 'weekday');
-    addFormatToken('E', 0, 0, 'isoWeekday');
-
-    // PARSING
-
-    addRegexToken('d', match1to2);
-    addRegexToken('e', match1to2);
-    addRegexToken('E', match1to2);
-    addRegexToken('dd', function (isStrict, locale) {
-        return locale.weekdaysMinRegex(isStrict);
-    });
-    addRegexToken('ddd', function (isStrict, locale) {
-        return locale.weekdaysShortRegex(isStrict);
-    });
-    addRegexToken('dddd', function (isStrict, locale) {
-        return locale.weekdaysRegex(isStrict);
-    });
-
-    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
-        var weekday = config._locale.weekdaysParse(input, token, config._strict);
-        // if we didn't get a weekday name, mark the date as invalid
-        if (weekday != null) {
-            week.d = weekday;
-        } else {
-            getParsingFlags(config).invalidWeekday = input;
-        }
-    });
-
-    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
-        week[token] = toInt(input);
-    });
-
-    // HELPERS
-
-    function parseWeekday(input, locale) {
-        if (typeof input !== 'string') {
-            return input;
-        }
-
-        if (!isNaN(input)) {
-            return parseInt(input, 10);
-        }
-
-        input = locale.weekdaysParse(input);
-        if (typeof input === 'number') {
-            return input;
-        }
-
-        return null;
-    }
-
-    function parseIsoWeekday(input, locale) {
-        if (typeof input === 'string') {
-            return locale.weekdaysParse(input) % 7 || 7;
-        }
-        return isNaN(input) ? null : input;
-    }
-
-    // LOCALES
-    function shiftWeekdays(ws, n) {
-        return ws.slice(n, 7).concat(ws.slice(0, n));
-    }
-
-    var defaultLocaleWeekdays =
-            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
-        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-        defaultWeekdaysRegex = matchWord,
-        defaultWeekdaysShortRegex = matchWord,
-        defaultWeekdaysMinRegex = matchWord;
-
-    function localeWeekdays(m, format) {
-        var weekdays = isArray(this._weekdays)
-            ? this._weekdays
-            : this._weekdays[
-                  m && m !== true && this._weekdays.isFormat.test(format)
-                      ? 'format'
-                      : 'standalone'
-              ];
-        return m === true
-            ? shiftWeekdays(weekdays, this._week.dow)
-            : m
-              ? weekdays[m.day()]
-              : weekdays;
-    }
-
-    function localeWeekdaysShort(m) {
-        return m === true
-            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
-            : m
-              ? this._weekdaysShort[m.day()]
-              : this._weekdaysShort;
-    }
-
-    function localeWeekdaysMin(m) {
-        return m === true
-            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
-            : m
-              ? this._weekdaysMin[m.day()]
-              : this._weekdaysMin;
-    }
-
-    function handleStrictParse$1(weekdayName, format, strict) {
-        var i,
-            ii,
-            mom,
-            llc = weekdayName.toLocaleLowerCase();
-        if (!this._weekdaysParse) {
-            this._weekdaysParse = [];
-            this._shortWeekdaysParse = [];
-            this._minWeekdaysParse = [];
-
-            for (i = 0; i < 7; ++i) {
-                mom = createUTC([2000, 1]).day(i);
-                this._minWeekdaysParse[i] = this.weekdaysMin(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._shortWeekdaysParse[i] = this.weekdaysShort(
-                    mom,
-                    ''
-                ).toLocaleLowerCase();
-                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
-            }
-        }
-
-        if (strict) {
-            if (format === 'dddd') {
-                ii = indexOf.call(this._weekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else if (format === 'ddd') {
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        } else {
-            if (format === 'dddd') {
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else if (format === 'ddd') {
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            } else {
-                ii = indexOf.call(this._minWeekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._weekdaysParse, llc);
-                if (ii !== -1) {
-                    return ii;
-                }
-                ii = indexOf.call(this._shortWeekdaysParse, llc);
-                return ii !== -1 ? ii : null;
-            }
-        }
-    }
-
-    function localeWeekdaysParse(weekdayName, format, strict) {
-        var i, mom, regex;
-
-        if (this._weekdaysParseExact) {
-            return handleStrictParse$1.call(this, weekdayName, format, strict);
-        }
-
-        if (!this._weekdaysParse) {
-            this._weekdaysParse = [];
-            this._minWeekdaysParse = [];
-            this._shortWeekdaysParse = [];
-            this._fullWeekdaysParse = [];
-        }
-
-        for (i = 0; i < 7; i++) {
-            // make the regex if we don't have it already
-
-            mom = createUTC([2000, 1]).day(i);
-            if (strict && !this._fullWeekdaysParse[i]) {
-                this._fullWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-                this._shortWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-                this._minWeekdaysParse[i] = new RegExp(
-                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
-                    'i'
-                );
-            }
-            if (!this._weekdaysParse[i]) {
-                regex =
-                    '^' +
-                    this.weekdays(mom, '') +
-                    '|^' +
-                    this.weekdaysShort(mom, '') +
-                    '|^' +
-                    this.weekdaysMin(mom, '');
-                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-            }
-            // test the regex
-            if (
-                strict &&
-                format === 'dddd' &&
-                this._fullWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'ddd' &&
-                this._shortWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (
-                strict &&
-                format === 'dd' &&
-                this._minWeekdaysParse[i].test(weekdayName)
-            ) {
-                return i;
-            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
-                return i;
-            }
-        }
-    }
-
-    // MOMENTS
-
-    function getSetDayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-
-        var day = get(this, 'Day');
-        if (input != null) {
-            input = parseWeekday(input, this.localeData());
-            return this.add(input - day, 'd');
-        } else {
-            return day;
-        }
-    }
-
-    function getSetLocaleDayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
-        return input == null ? weekday : this.add(input - weekday, 'd');
-    }
-
-    function getSetISODayOfWeek(input) {
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-
-        // behaves the same as moment#day except
-        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-        // as a setter, sunday should belong to the previous week.
-
-        if (input != null) {
-            var weekday = parseIsoWeekday(input, this.localeData());
-            return this.day(this.day() % 7 ? weekday : weekday - 7);
-        } else {
-            return this.day() || 7;
-        }
-    }
-
-    function weekdaysRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysStrictRegex;
-            } else {
-                return this._weekdaysRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                this._weekdaysRegex = defaultWeekdaysRegex;
-            }
-            return this._weekdaysStrictRegex && isStrict
-                ? this._weekdaysStrictRegex
-                : this._weekdaysRegex;
-        }
-    }
-
-    function weekdaysShortRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysShortStrictRegex;
-            } else {
-                return this._weekdaysShortRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
-                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
-            }
-            return this._weekdaysShortStrictRegex && isStrict
-                ? this._weekdaysShortStrictRegex
-                : this._weekdaysShortRegex;
-        }
-    }
-
-    function weekdaysMinRegex(isStrict) {
-        if (this._weekdaysParseExact) {
-            if (!hasOwnProp(this, '_weekdaysRegex')) {
-                computeWeekdaysParse.call(this);
-            }
-            if (isStrict) {
-                return this._weekdaysMinStrictRegex;
-            } else {
-                return this._weekdaysMinRegex;
-            }
-        } else {
-            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
-                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
-            }
-            return this._weekdaysMinStrictRegex && isStrict
-                ? this._weekdaysMinStrictRegex
-                : this._weekdaysMinRegex;
-        }
-    }
-
-    function computeWeekdaysParse() {
-        function cmpLenRev(a, b) {
-            return b.length - a.length;
-        }
-
-        var minPieces = [],
-            shortPieces = [],
-            longPieces = [],
-            mixedPieces = [],
-            i,
-            mom,
-            minp,
-            shortp,
-            longp;
-        for (i = 0; i < 7; i++) {
-            // make the regex if we don't have it already
-            mom = createUTC([2000, 1]).day(i);
-            minp = regexEscape(this.weekdaysMin(mom, ''));
-            shortp = regexEscape(this.weekdaysShort(mom, ''));
-            longp = regexEscape(this.weekdays(mom, ''));
-            minPieces.push(minp);
-            shortPieces.push(shortp);
-            longPieces.push(longp);
-            mixedPieces.push(minp);
-            mixedPieces.push(shortp);
-            mixedPieces.push(longp);
-        }
-        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
-        // will match the longer piece.
-        minPieces.sort(cmpLenRev);
-        shortPieces.sort(cmpLenRev);
-        longPieces.sort(cmpLenRev);
-        mixedPieces.sort(cmpLenRev);
-
-        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._weekdaysShortRegex = this._weekdaysRegex;
-        this._weekdaysMinRegex = this._weekdaysRegex;
-
-        this._weekdaysStrictRegex = new RegExp(
-            '^(' + longPieces.join('|') + ')',
-            'i'
-        );
-        this._weekdaysShortStrictRegex = new RegExp(
-            '^(' + shortPieces.join('|') + ')',
-            'i'
-        );
-        this._weekdaysMinStrictRegex = new RegExp(
-            '^(' + minPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    // FORMATTING
-
-    function hFormat() {
-        return this.hours() % 12 || 12;
-    }
-
-    function kFormat() {
-        return this.hours() || 24;
-    }
-
-    addFormatToken('H', ['HH', 2], 0, 'hour');
-    addFormatToken('h', ['hh', 2], 0, hFormat);
-    addFormatToken('k', ['kk', 2], 0, kFormat);
-
-    addFormatToken('hmm', 0, 0, function () {
-        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
-    });
-
-    addFormatToken('hmmss', 0, 0, function () {
-        return (
-            '' +
-            hFormat.apply(this) +
-            zeroFill(this.minutes(), 2) +
-            zeroFill(this.seconds(), 2)
-        );
-    });
-
-    addFormatToken('Hmm', 0, 0, function () {
-        return '' + this.hours() + zeroFill(this.minutes(), 2);
-    });
-
-    addFormatToken('Hmmss', 0, 0, function () {
-        return (
-            '' +
-            this.hours() +
-            zeroFill(this.minutes(), 2) +
-            zeroFill(this.seconds(), 2)
-        );
-    });
-
-    function meridiem(token, lowercase) {
-        addFormatToken(token, 0, 0, function () {
-            return this.localeData().meridiem(
-                this.hours(),
-                this.minutes(),
-                lowercase
-            );
-        });
-    }
-
-    meridiem('a', true);
-    meridiem('A', false);
-
-    // PARSING
-
-    function matchMeridiem(isStrict, locale) {
-        return locale._meridiemParse;
-    }
-
-    addRegexToken('a', matchMeridiem);
-    addRegexToken('A', matchMeridiem);
-    addRegexToken('H', match1to2, match1to2HasZero);
-    addRegexToken('h', match1to2, match1to2NoLeadingZero);
-    addRegexToken('k', match1to2, match1to2NoLeadingZero);
-    addRegexToken('HH', match1to2, match2);
-    addRegexToken('hh', match1to2, match2);
-    addRegexToken('kk', match1to2, match2);
-
-    addRegexToken('hmm', match3to4);
-    addRegexToken('hmmss', match5to6);
-    addRegexToken('Hmm', match3to4);
-    addRegexToken('Hmmss', match5to6);
-
-    addParseToken(['H', 'HH'], HOUR);
-    addParseToken(['k', 'kk'], function (input, array, config) {
-        var kInput = toInt(input);
-        array[HOUR] = kInput === 24 ? 0 : kInput;
-    });
-    addParseToken(['a', 'A'], function (input, array, config) {
-        config._isPm = config._locale.isPM(input);
-        config._meridiem = input;
-    });
-    addParseToken(['h', 'hh'], function (input, array, config) {
-        array[HOUR] = toInt(input);
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('hmm', function (input, array, config) {
-        var pos = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos));
-        array[MINUTE] = toInt(input.substr(pos));
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('hmmss', function (input, array, config) {
-        var pos1 = input.length - 4,
-            pos2 = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos1));
-        array[MINUTE] = toInt(input.substr(pos1, 2));
-        array[SECOND] = toInt(input.substr(pos2));
-        getParsingFlags(config).bigHour = true;
-    });
-    addParseToken('Hmm', function (input, array, config) {
-        var pos = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos));
-        array[MINUTE] = toInt(input.substr(pos));
-    });
-    addParseToken('Hmmss', function (input, array, config) {
-        var pos1 = input.length - 4,
-            pos2 = input.length - 2;
-        array[HOUR] = toInt(input.substr(0, pos1));
-        array[MINUTE] = toInt(input.substr(pos1, 2));
-        array[SECOND] = toInt(input.substr(pos2));
-    });
-
-    // LOCALES
-
-    function localeIsPM(input) {
-        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-        // Using charAt should be more compatible.
-        return (input + '').toLowerCase().charAt(0) === 'p';
-    }
-
-    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
-        // Setting the hour should keep the time, because the user explicitly
-        // specified which hour they want. So trying to maintain the same hour (in
-        // a new timezone) makes sense. Adding/subtracting hours does not follow
-        // this rule.
-        getSetHour = makeGetSet('Hours', true);
-
-    function localeMeridiem(hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'pm' : 'PM';
-        } else {
-            return isLower ? 'am' : 'AM';
-        }
-    }
-
-    var baseConfig = {
-        calendar: defaultCalendar,
-        longDateFormat: defaultLongDateFormat,
-        invalidDate: defaultInvalidDate,
-        ordinal: defaultOrdinal,
-        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
-        relativeTime: defaultRelativeTime,
-
-        months: defaultLocaleMonths,
-        monthsShort: defaultLocaleMonthsShort,
-
-        week: defaultLocaleWeek,
-
-        weekdays: defaultLocaleWeekdays,
-        weekdaysMin: defaultLocaleWeekdaysMin,
-        weekdaysShort: defaultLocaleWeekdaysShort,
-
-        meridiemParse: defaultLocaleMeridiemParse,
-    };
-
-    // internal storage for locale config files
-    var locales = {},
-        localeFamilies = {},
-        globalLocale;
-
-    function commonPrefix(arr1, arr2) {
-        var i,
-            minl = Math.min(arr1.length, arr2.length);
-        for (i = 0; i < minl; i += 1) {
-            if (arr1[i] !== arr2[i]) {
-                return i;
-            }
-        }
-        return minl;
-    }
-
-    function normalizeLocale(key) {
-        return key ? key.toLowerCase().replace('_', '-') : key;
-    }
-
-    // pick the locale from the array
-    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-    function chooseLocale(names) {
-        var i = 0,
-            j,
-            next,
-            locale,
-            split;
-
-        while (i < names.length) {
-            split = normalizeLocale(names[i]).split('-');
-            j = split.length;
-            next = normalizeLocale(names[i + 1]);
-            next = next ? next.split('-') : null;
-            while (j > 0) {
-                locale = loadLocale(split.slice(0, j).join('-'));
-                if (locale) {
-                    return locale;
-                }
-                if (
-                    next &&
-                    next.length >= j &&
-                    commonPrefix(split, next) >= j - 1
-                ) {
-                    //the next array item is better than a shallower substring of this one
-                    break;
-                }
-                j--;
-            }
-            i++;
-        }
-        return globalLocale;
-    }
-
-    function isLocaleNameSane(name) {
-        // Prevent names that look like filesystem paths, i.e contain '/' or '\'
-        // Ensure name is available and function returns boolean
-        return !!(name && name.match('^[^/\\\\]*$'));
-    }
-
-    function loadLocale(name) {
-        var oldLocale = null,
-            aliasedRequire;
-        // TODO: Find a better way to register and load all the locales in Node
-        if (
-            locales[name] === undefined &&
-            typeof module !== 'undefined' &&
-            module &&
-            module.exports &&
-            isLocaleNameSane(name)
-        ) {
-            try {
-                oldLocale = globalLocale._abbr;
-                aliasedRequire = require;
-                aliasedRequire('./locale/' + name);
-                getSetGlobalLocale(oldLocale);
-            } catch (e) {
-                // mark as not found to avoid repeating expensive file require call causing high CPU
-                // when trying to find en-US, en_US, en-us for every format call
-                locales[name] = null; // null means not found
-            }
-        }
-        return locales[name];
-    }
-
-    // This function will load locale and then set the global locale.  If
-    // no arguments are passed in, it will simply return the current global
-    // locale key.
-    function getSetGlobalLocale(key, values) {
-        var data;
-        if (key) {
-            if (isUndefined(values)) {
-                data = getLocale(key);
-            } else {
-                data = defineLocale(key, values);
-            }
-
-            if (data) {
-                // moment.duration._locale = moment._locale = data;
-                globalLocale = data;
-            } else {
-                if (typeof console !== 'undefined' && console.warn) {
-                    //warn user if arguments are passed but the locale could not be set
-                    console.warn(
-                        'Locale ' + key + ' not found. Did you forget to load it?'
-                    );
-                }
-            }
-        }
-
-        return globalLocale._abbr;
-    }
-
-    function defineLocale(name, config) {
-        if (config !== null) {
-            var locale,
-                parentConfig = baseConfig;
-            config.abbr = name;
-            if (locales[name] != null) {
-                deprecateSimple(
-                    'defineLocaleOverride',
-                    'use moment.updateLocale(localeName, config) to change ' +
-                        'an existing locale. moment.defineLocale(localeName, ' +
-                        'config) should only be used for creating a new locale ' +
-                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
-                );
-                parentConfig = locales[name]._config;
-            } else if (config.parentLocale != null) {
-                if (locales[config.parentLocale] != null) {
-                    parentConfig = locales[config.parentLocale]._config;
-                } else {
-                    locale = loadLocale(config.parentLocale);
-                    if (locale != null) {
-                        parentConfig = locale._config;
-                    } else {
-                        if (!localeFamilies[config.parentLocale]) {
-                            localeFamilies[config.parentLocale] = [];
-                        }
-                        localeFamilies[config.parentLocale].push({
-                            name: name,
-                            config: config,
-                        });
-                        return null;
-                    }
-                }
-            }
-            locales[name] = new Locale(mergeConfigs(parentConfig, config));
-
-            if (localeFamilies[name]) {
-                localeFamilies[name].forEach(function (x) {
-                    defineLocale(x.name, x.config);
-                });
-            }
-
-            // backwards compat for now: also set the locale
-            // make sure we set the locale AFTER all child locales have been
-            // created, so we won't end up with the child locale set.
-            getSetGlobalLocale(name);
-
-            return locales[name];
-        } else {
-            // useful for testing
-            delete locales[name];
-            return null;
-        }
-    }
-
-    function updateLocale(name, config) {
-        if (config != null) {
-            var locale,
-                tmpLocale,
-                parentConfig = baseConfig;
-
-            if (locales[name] != null && locales[name].parentLocale != null) {
-                // Update existing child locale in-place to avoid memory-leaks
-                locales[name].set(mergeConfigs(locales[name]._config, config));
-            } else {
-                // MERGE
-                tmpLocale = loadLocale(name);
-                if (tmpLocale != null) {
-                    parentConfig = tmpLocale._config;
-                }
-                config = mergeConfigs(parentConfig, config);
-                if (tmpLocale == null) {
-                    // updateLocale is called for creating a new locale
-                    // Set abbr so it will have a name (getters return
-                    // undefined otherwise).
-                    config.abbr = name;
-                }
-                locale = new Locale(config);
-                locale.parentLocale = locales[name];
-                locales[name] = locale;
-            }
-
-            // backwards compat for now: also set the locale
-            getSetGlobalLocale(name);
-        } else {
-            // pass null for config to unupdate, useful for tests
-            if (locales[name] != null) {
-                if (locales[name].parentLocale != null) {
-                    locales[name] = locales[name].parentLocale;
-                    if (name === getSetGlobalLocale()) {
-                        getSetGlobalLocale(name);
-                    }
-                } else if (locales[name] != null) {
-                    delete locales[name];
-                }
-            }
-        }
-        return locales[name];
-    }
-
-    // returns locale data
-    function getLocale(key) {
-        var locale;
-
-        if (key && key._locale && key._locale._abbr) {
-            key = key._locale._abbr;
-        }
-
-        if (!key) {
-            return globalLocale;
-        }
-
-        if (!isArray(key)) {
-            //short-circuit everything else
-            locale = loadLocale(key);
-            if (locale) {
-                return locale;
-            }
-            key = [key];
-        }
-
-        return chooseLocale(key);
-    }
-
-    function listLocales() {
-        return keys(locales);
-    }
-
-    function checkOverflow(m) {
-        var overflow,
-            a = m._a;
-
-        if (a && getParsingFlags(m).overflow === -2) {
-            overflow =
-                a[MONTH] < 0 || a[MONTH] > 11
-                    ? MONTH
-                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
-                      ? DATE
-                      : a[HOUR] < 0 ||
-                          a[HOUR] > 24 ||
-                          (a[HOUR] === 24 &&
-                              (a[MINUTE] !== 0 ||
-                                  a[SECOND] !== 0 ||
-                                  a[MILLISECOND] !== 0))
-                        ? HOUR
-                        : a[MINUTE] < 0 || a[MINUTE] > 59
-                          ? MINUTE
-                          : a[SECOND] < 0 || a[SECOND] > 59
-                            ? SECOND
-                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
-                              ? MILLISECOND
-                              : -1;
-
-            if (
-                getParsingFlags(m)._overflowDayOfYear &&
-                (overflow < YEAR || overflow > DATE)
-            ) {
-                overflow = DATE;
-            }
-            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
-                overflow = WEEK;
-            }
-            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
-                overflow = WEEKDAY;
-            }
-
-            getParsingFlags(m).overflow = overflow;
-        }
-
-        return m;
-    }
-
-    // iso 8601 regex
-    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
-    var extendedIsoRegex =
-            /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-        basicIsoRegex =
-            /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
-        isoDates = [
-            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
-            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
-            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
-            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
-            ['YYYY-DDD', /\d{4}-\d{3}/],
-            ['YYYY-MM', /\d{4}-\d\d/, false],
-            ['YYYYYYMMDD', /[+-]\d{10}/],
-            ['YYYYMMDD', /\d{8}/],
-            ['GGGG[W]WWE', /\d{4}W\d{3}/],
-            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
-            ['YYYYDDD', /\d{7}/],
-            ['YYYYMM', /\d{6}/, false],
-            ['YYYY', /\d{4}/, false],
-        ],
-        // iso time formats and regexes
-        isoTimes = [
-            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
-            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
-            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
-            ['HH:mm', /\d\d:\d\d/],
-            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
-            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
-            ['HHmmss', /\d\d\d\d\d\d/],
-            ['HHmm', /\d\d\d\d/],
-            ['HH', /\d\d/],
-        ],
-        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
-        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
-        rfc2822 =
-            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
-        obsOffsets = {
-            UT: 0,
-            GMT: 0,
-            EDT: -4 * 60,
-            EST: -5 * 60,
-            CDT: -5 * 60,
-            CST: -6 * 60,
-            MDT: -6 * 60,
-            MST: -7 * 60,
-            PDT: -7 * 60,
-            PST: -8 * 60,
-        };
-
-    // date from iso format
-    function configFromISO(config) {
-        var i,
-            l,
-            string = config._i,
-            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
-            allowTime,
-            dateFormat,
-            timeFormat,
-            tzFormat,
-            isoDatesLen = isoDates.length,
-            isoTimesLen = isoTimes.length;
-
-        if (match) {
-            getParsingFlags(config).iso = true;
-            for (i = 0, l = isoDatesLen; i < l; i++) {
-                if (isoDates[i][1].exec(match[1])) {
-                    dateFormat = isoDates[i][0];
-                    allowTime = isoDates[i][2] !== false;
-                    break;
-                }
-            }
-            if (dateFormat == null) {
-                config._isValid = false;
-                return;
-            }
-            if (match[3]) {
-                for (i = 0, l = isoTimesLen; i < l; i++) {
-                    if (isoTimes[i][1].exec(match[3])) {
-                        // match[2] should be 'T' or space
-                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
-                        break;
-                    }
-                }
-                if (timeFormat == null) {
-                    config._isValid = false;
-                    return;
-                }
-            }
-            if (!allowTime && timeFormat != null) {
-                config._isValid = false;
-                return;
-            }
-            if (match[4]) {
-                if (tzRegex.exec(match[4])) {
-                    tzFormat = 'Z';
-                } else {
-                    config._isValid = false;
-                    return;
-                }
-            }
-            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
-            configFromStringAndFormat(config);
-        } else {
-            config._isValid = false;
-        }
-    }
-
-    function extractFromRFC2822Strings(
-        yearStr,
-        monthStr,
-        dayStr,
-        hourStr,
-        minuteStr,
-        secondStr
-    ) {
-        var result = [
-            untruncateYear(yearStr),
-            defaultLocaleMonthsShort.indexOf(monthStr),
-            parseInt(dayStr, 10),
-            parseInt(hourStr, 10),
-            parseInt(minuteStr, 10),
-        ];
-
-        if (secondStr) {
-            result.push(parseInt(secondStr, 10));
-        }
-
-        return result;
-    }
-
-    function untruncateYear(yearStr) {
-        var year = parseInt(yearStr, 10);
-        if (year <= 49) {
-            return 2000 + year;
-        } else if (year <= 999) {
-            return 1900 + year;
-        }
-        return year;
-    }
-
-    function preprocessRFC2822(s) {
-        // Remove comments and folding whitespace and replace multiple-spaces with a single space
-        return s
-            .replace(/\([^()]*\)|[\n\t]/g, ' ')
-            .replace(/(\s\s+)/g, ' ')
-            .replace(/^\s\s*/, '')
-            .replace(/\s\s*$/, '');
-    }
-
-    function checkWeekday(weekdayStr, parsedInput, config) {
-        if (weekdayStr) {
-            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
-            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
-                weekdayActual = new Date(
-                    parsedInput[0],
-                    parsedInput[1],
-                    parsedInput[2]
-                ).getDay();
-            if (weekdayProvided !== weekdayActual) {
-                getParsingFlags(config).weekdayMismatch = true;
-                config._isValid = false;
-                return false;
-            }
-        }
-        return true;
-    }
-
-    function calculateOffset(obsOffset, militaryOffset, numOffset) {
-        if (obsOffset) {
-            return obsOffsets[obsOffset];
-        } else if (militaryOffset) {
-            // the only allowed military tz is Z
-            return 0;
-        } else {
-            var hm = parseInt(numOffset, 10),
-                m = hm % 100,
-                h = (hm - m) / 100;
-            return h * 60 + m;
-        }
-    }
-
-    // date and time from ref 2822 format
-    function configFromRFC2822(config) {
-        var match = rfc2822.exec(preprocessRFC2822(config._i)),
-            parsedArray;
-        if (match) {
-            parsedArray = extractFromRFC2822Strings(
-                match[4],
-                match[3],
-                match[2],
-                match[5],
-                match[6],
-                match[7]
-            );
-            if (!checkWeekday(match[1], parsedArray, config)) {
-                return;
-            }
-
-            config._a = parsedArray;
-            config._tzm = calculateOffset(match[8], match[9], match[10]);
-
-            config._d = createUTCDate.apply(null, config._a);
-            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-
-            getParsingFlags(config).rfc2822 = true;
-        } else {
-            config._isValid = false;
-        }
-    }
-
-    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
-    function configFromString(config) {
-        var matched = aspNetJsonRegex.exec(config._i);
-        if (matched !== null) {
-            config._d = new Date(+matched[1]);
-            return;
-        }
-
-        configFromISO(config);
-        if (config._isValid === false) {
-            delete config._isValid;
-        } else {
-            return;
-        }
-
-        configFromRFC2822(config);
-        if (config._isValid === false) {
-            delete config._isValid;
-        } else {
-            return;
-        }
-
-        if (config._strict) {
-            config._isValid = false;
-        } else {
-            // Final attempt, use Input Fallback
-            hooks.createFromInputFallback(config);
-        }
-    }
-
-    hooks.createFromInputFallback = deprecate(
-        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
-            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
-            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
-        function (config) {
-            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
-        }
-    );
-
-    // Pick the first defined of two or three arguments.
-    function defaults(a, b, c) {
-        if (a != null) {
-            return a;
-        }
-        if (b != null) {
-            return b;
-        }
-        return c;
-    }
-
-    function currentDateArray(config) {
-        // hooks is actually the exported moment object
-        var nowValue = new Date(hooks.now());
-        if (config._useUTC) {
-            return [
-                nowValue.getUTCFullYear(),
-                nowValue.getUTCMonth(),
-                nowValue.getUTCDate(),
-            ];
-        }
-        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
-    }
-
-    // convert an array to a date.
-    // the array should mirror the parameters below
-    // note: all values past the year are optional and will default to the lowest possible value.
-    // [year, month, day , hour, minute, second, millisecond]
-    function configFromArray(config) {
-        var i,
-            date,
-            input = [],
-            currentDate,
-            expectedWeekday,
-            yearToUse;
-
-        if (config._d) {
-            return;
-        }
-
-        currentDate = currentDateArray(config);
-
-        //compute day of the year from weeks and weekdays
-        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-            dayOfYearFromWeekInfo(config);
-        }
-
-        //if the day of the year is set, figure out what it is
-        if (config._dayOfYear != null) {
-            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
-            if (
-                config._dayOfYear > daysInYear(yearToUse) ||
-                config._dayOfYear === 0
-            ) {
-                getParsingFlags(config)._overflowDayOfYear = true;
-            }
-
-            date = createUTCDate(yearToUse, 0, config._dayOfYear);
-            config._a[MONTH] = date.getUTCMonth();
-            config._a[DATE] = date.getUTCDate();
-        }
-
-        // Default to current date.
-        // * if no year, month, day of month are given, default to today
-        // * if day of month is given, default month and year
-        // * if month is given, default only year
-        // * if year is given, don't default anything
-        for (i = 0; i < 3 && config._a[i] == null; ++i) {
-            config._a[i] = input[i] = currentDate[i];
-        }
-
-        // Zero out whatever was not defaulted, including time
-        for (; i < 7; i++) {
-            config._a[i] = input[i] =
-                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
-        }
-
-        // Check for 24:00:00.000
-        if (
-            config._a[HOUR] === 24 &&
-            config._a[MINUTE] === 0 &&
-            config._a[SECOND] === 0 &&
-            config._a[MILLISECOND] === 0
-        ) {
-            config._nextDay = true;
-            config._a[HOUR] = 0;
-        }
-
-        config._d = (config._useUTC ? createUTCDate : createDate).apply(
-            null,
-            input
-        );
-        expectedWeekday = config._useUTC
-            ? config._d.getUTCDay()
-            : config._d.getDay();
-
-        // Apply timezone offset from input. The actual utcOffset can be changed
-        // with parseZone.
-        if (config._tzm != null) {
-            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-        }
-
-        if (config._nextDay) {
-            config._a[HOUR] = 24;
-        }
-
-        // check for mismatching day of week
-        if (
-            config._w &&
-            typeof config._w.d !== 'undefined' &&
-            config._w.d !== expectedWeekday
-        ) {
-            getParsingFlags(config).weekdayMismatch = true;
-        }
-    }
-
-    function dayOfYearFromWeekInfo(config) {
-        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
-
-        w = config._w;
-        if (w.GG != null || w.W != null || w.E != null) {
-            dow = 1;
-            doy = 4;
-
-            // TODO: We need to take the current isoWeekYear, but that depends on
-            // how we interpret now (local, utc, fixed offset). So create
-            // a now version of current config (take local/utc/offset flags, and
-            // create now).
-            weekYear = defaults(
-                w.GG,
-                config._a[YEAR],
-                weekOfYear(createLocal(), 1, 4).year
-            );
-            week = defaults(w.W, 1);
-            weekday = defaults(w.E, 1);
-            if (weekday < 1 || weekday > 7) {
-                weekdayOverflow = true;
-            }
-        } else {
-            dow = config._locale._week.dow;
-            doy = config._locale._week.doy;
-
-            curWeek = weekOfYear(createLocal(), dow, doy);
-
-            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
-
-            // Default to current week.
-            week = defaults(w.w, curWeek.week);
-
-            if (w.d != null) {
-                // weekday -- low day numbers are considered next week
-                weekday = w.d;
-                if (weekday < 0 || weekday > 6) {
-                    weekdayOverflow = true;
-                }
-            } else if (w.e != null) {
-                // local weekday -- counting starts from beginning of week
-                weekday = w.e + dow;
-                if (w.e < 0 || w.e > 6) {
-                    weekdayOverflow = true;
-                }
-            } else {
-                // default to beginning of week
-                weekday = dow;
-            }
-        }
-        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
-            getParsingFlags(config)._overflowWeeks = true;
-        } else if (weekdayOverflow != null) {
-            getParsingFlags(config)._overflowWeekday = true;
-        } else {
-            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
-            config._a[YEAR] = temp.year;
-            config._dayOfYear = temp.dayOfYear;
-        }
-    }
-
-    // constant that refers to the ISO standard
-    hooks.ISO_8601 = function () {};
-
-    // constant that refers to the RFC 2822 form
-    hooks.RFC_2822 = function () {};
-
-    // date from string and format string
-    function configFromStringAndFormat(config) {
-        // TODO: Move this to another part of the creation flow to prevent circular deps
-        if (config._f === hooks.ISO_8601) {
-            configFromISO(config);
-            return;
-        }
-        if (config._f === hooks.RFC_2822) {
-            configFromRFC2822(config);
-            return;
-        }
-        config._a = [];
-        getParsingFlags(config).empty = true;
-
-        // This array is used to make a Date, either with `new Date` or `Date.UTC`
-        var string = '' + config._i,
-            i,
-            parsedInput,
-            tokens,
-            token,
-            skipped,
-            stringLength = string.length,
-            totalParsedInputLength = 0,
-            era,
-            tokenLen;
-
-        tokens =
-            expandFormat(config._f, config._locale).match(formattingTokens) || [];
-        tokenLen = tokens.length;
-        for (i = 0; i < tokenLen; i++) {
-            token = tokens[i];
-            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
-                [])[0];
-            if (parsedInput) {
-                skipped = string.substr(0, string.indexOf(parsedInput));
-                if (skipped.length > 0) {
-                    getParsingFlags(config).unusedInput.push(skipped);
-                }
-                string = string.slice(
-                    string.indexOf(parsedInput) + parsedInput.length
-                );
-                totalParsedInputLength += parsedInput.length;
-            }
-            // don't parse if it's not a known token
-            if (formatTokenFunctions[token]) {
-                if (parsedInput) {
-                    getParsingFlags(config).empty = false;
-                } else {
-                    getParsingFlags(config).unusedTokens.push(token);
-                }
-                addTimeToArrayFromToken(token, parsedInput, config);
-            } else if (config._strict && !parsedInput) {
-                getParsingFlags(config).unusedTokens.push(token);
-            }
-        }
-
-        // add remaining unparsed input length to the string
-        getParsingFlags(config).charsLeftOver =
-            stringLength - totalParsedInputLength;
-        if (string.length > 0) {
-            getParsingFlags(config).unusedInput.push(string);
-        }
-
-        // clear _12h flag if hour is <= 12
-        if (
-            config._a[HOUR] <= 12 &&
-            getParsingFlags(config).bigHour === true &&
-            config._a[HOUR] > 0
-        ) {
-            getParsingFlags(config).bigHour = undefined;
-        }
-
-        getParsingFlags(config).parsedDateParts = config._a.slice(0);
-        getParsingFlags(config).meridiem = config._meridiem;
-        // handle meridiem
-        config._a[HOUR] = meridiemFixWrap(
-            config._locale,
-            config._a[HOUR],
-            config._meridiem
-        );
-
-        // handle era
-        era = getParsingFlags(config).era;
-        if (era !== null) {
-            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
-        }
-
-        configFromArray(config);
-        checkOverflow(config);
-    }
-
-    function meridiemFixWrap(locale, hour, meridiem) {
-        var isPm;
-
-        if (meridiem == null) {
-            // nothing to do
-            return hour;
-        }
-        if (locale.meridiemHour != null) {
-            return locale.meridiemHour(hour, meridiem);
-        } else if (locale.isPM != null) {
-            // Fallback
-            isPm = locale.isPM(meridiem);
-            if (isPm && hour < 12) {
-                hour += 12;
-            }
-            if (!isPm && hour === 12) {
-                hour = 0;
-            }
-            return hour;
-        } else {
-            // this is not supposed to happen
-            return hour;
-        }
-    }
-
-    // date from string and array of format strings
-    function configFromStringAndArray(config) {
-        var tempConfig,
-            bestMoment,
-            scoreToBeat,
-            i,
-            currentScore,
-            validFormatFound,
-            bestFormatIsValid = false,
-            configfLen = config._f.length;
-
-        if (configfLen === 0) {
-            getParsingFlags(config).invalidFormat = true;
-            config._d = new Date(NaN);
-            return;
-        }
-
-        for (i = 0; i < configfLen; i++) {
-            currentScore = 0;
-            validFormatFound = false;
-            tempConfig = copyConfig({}, config);
-            if (config._useUTC != null) {
-                tempConfig._useUTC = config._useUTC;
-            }
-            tempConfig._f = config._f[i];
-            configFromStringAndFormat(tempConfig);
-
-            if (isValid(tempConfig)) {
-                validFormatFound = true;
-            }
-
-            // if there is any input that was not parsed add a penalty for that format
-            currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
-            //or tokens
-            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
-            getParsingFlags(tempConfig).score = currentScore;
-
-            if (!bestFormatIsValid) {
-                if (
-                    scoreToBeat == null ||
-                    currentScore < scoreToBeat ||
-                    validFormatFound
-                ) {
-                    scoreToBeat = currentScore;
-                    bestMoment = tempConfig;
-                    if (validFormatFound) {
-                        bestFormatIsValid = true;
-                    }
-                }
-            } else {
-                if (currentScore < scoreToBeat) {
-                    scoreToBeat = currentScore;
-                    bestMoment = tempConfig;
-                }
-            }
-        }
-
-        extend(config, bestMoment || tempConfig);
-    }
-
-    function configFromObject(config) {
-        if (config._d) {
-            return;
-        }
-
-        var i = normalizeObjectUnits(config._i),
-            dayOrDate = i.day === undefined ? i.date : i.day;
-        config._a = map(
-            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
-            function (obj) {
-                return obj && parseInt(obj, 10);
-            }
-        );
-
-        configFromArray(config);
-    }
-
-    function createFromConfig(config) {
-        var res = new Moment(checkOverflow(prepareConfig(config)));
-        if (res._nextDay) {
-            // Adding is smart enough around DST
-            res.add(1, 'd');
-            res._nextDay = undefined;
-        }
-
-        return res;
-    }
-
-    function prepareConfig(config) {
-        var input = config._i,
-            format = config._f;
-
-        config._locale = config._locale || getLocale(config._l);
-
-        if (input === null || (format === undefined && input === '')) {
-            return createInvalid({ nullInput: true });
-        }
-
-        if (typeof input === 'string') {
-            config._i = input = config._locale.preparse(input);
-        }
-
-        if (isMoment(input)) {
-            return new Moment(checkOverflow(input));
-        } else if (isDate(input)) {
-            config._d = input;
-        } else if (isArray(format)) {
-            configFromStringAndArray(config);
-        } else if (format) {
-            configFromStringAndFormat(config);
-        } else {
-            configFromInput(config);
-        }
-
-        if (!isValid(config)) {
-            config._d = null;
-        }
-
-        return config;
-    }
-
-    function configFromInput(config) {
-        var input = config._i;
-        if (isUndefined(input)) {
-            config._d = new Date(hooks.now());
-        } else if (isDate(input)) {
-            config._d = new Date(input.valueOf());
-        } else if (typeof input === 'string') {
-            configFromString(config);
-        } else if (isArray(input)) {
-            config._a = map(input.slice(0), function (obj) {
-                return parseInt(obj, 10);
-            });
-            configFromArray(config);
-        } else if (isObject(input)) {
-            configFromObject(config);
-        } else if (isNumber(input)) {
-            // from milliseconds
-            config._d = new Date(input);
-        } else {
-            hooks.createFromInputFallback(config);
-        }
-    }
-
-    function createLocalOrUTC(input, format, locale, strict, isUTC) {
-        var c = {};
-
-        if (format === true || format === false) {
-            strict = format;
-            format = undefined;
-        }
-
-        if (locale === true || locale === false) {
-            strict = locale;
-            locale = undefined;
-        }
-
-        if (
-            (isObject(input) && isObjectEmpty(input)) ||
-            (isArray(input) && input.length === 0)
-        ) {
-            input = undefined;
-        }
-        // object construction must be done this way.
-        // https://github.com/moment/moment/issues/1423
-        c._isAMomentObject = true;
-        c._useUTC = c._isUTC = isUTC;
-        c._l = locale;
-        c._i = input;
-        c._f = format;
-        c._strict = strict;
-
-        return createFromConfig(c);
-    }
-
-    function createLocal(input, format, locale, strict) {
-        return createLocalOrUTC(input, format, locale, strict, false);
-    }
-
-    var prototypeMin = deprecate(
-            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
-            function () {
-                var other = createLocal.apply(null, arguments);
-                if (this.isValid() && other.isValid()) {
-                    return other < this ? this : other;
-                } else {
-                    return createInvalid();
-                }
-            }
-        ),
-        prototypeMax = deprecate(
-            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
-            function () {
-                var other = createLocal.apply(null, arguments);
-                if (this.isValid() && other.isValid()) {
-                    return other > this ? this : other;
-                } else {
-                    return createInvalid();
-                }
-            }
-        );
-
-    // Pick a moment m from moments so that m[fn](other) is true for all
-    // other. This relies on the function fn to be transitive.
-    //
-    // moments should either be an array of moment objects or an array, whose
-    // first element is an array of moment objects.
-    function pickBy(fn, moments) {
-        var res, i;
-        if (moments.length === 1 && isArray(moments[0])) {
-            moments = moments[0];
-        }
-        if (!moments.length) {
-            return createLocal();
-        }
-        res = moments[0];
-        for (i = 1; i < moments.length; ++i) {
-            if (!moments[i].isValid() || moments[i][fn](res)) {
-                res = moments[i];
-            }
-        }
-        return res;
-    }
-
-    // TODO: Use [].sort instead?
-    function min() {
-        var args = [].slice.call(arguments, 0);
-
-        return pickBy('isBefore', args);
-    }
-
-    function max() {
-        var args = [].slice.call(arguments, 0);
-
-        return pickBy('isAfter', args);
-    }
-
-    var now = function () {
-        return Date.now ? Date.now() : +new Date();
-    };
-
-    var ordering = [
-        'year',
-        'quarter',
-        'month',
-        'week',
-        'day',
-        'hour',
-        'minute',
-        'second',
-        'millisecond',
-    ];
-
-    function isDurationValid(m) {
-        var key,
-            unitHasDecimal = false,
-            i,
-            orderLen = ordering.length;
-        for (key in m) {
-            if (
-                hasOwnProp(m, key) &&
-                !(
-                    indexOf.call(ordering, key) !== -1 &&
-                    (m[key] == null || !isNaN(m[key]))
-                )
-            ) {
-                return false;
-            }
-        }
-
-        for (i = 0; i < orderLen; ++i) {
-            if (m[ordering[i]]) {
-                if (unitHasDecimal) {
-                    return false; // only allow non-integers for smallest unit
-                }
-                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
-                    unitHasDecimal = true;
-                }
-            }
-        }
-
-        return true;
-    }
-
-    function isValid$1() {
-        return this._isValid;
-    }
-
-    function createInvalid$1() {
-        return createDuration(NaN);
-    }
-
-    function Duration(duration) {
-        var normalizedInput = normalizeObjectUnits(duration),
-            years = normalizedInput.year || 0,
-            quarters = normalizedInput.quarter || 0,
-            months = normalizedInput.month || 0,
-            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
-            days = normalizedInput.day || 0,
-            hours = normalizedInput.hour || 0,
-            minutes = normalizedInput.minute || 0,
-            seconds = normalizedInput.second || 0,
-            milliseconds = normalizedInput.millisecond || 0;
-
-        this._isValid = isDurationValid(normalizedInput);
-
-        // representation for dateAddRemove
-        this._milliseconds =
-            +milliseconds +
-            seconds * 1e3 + // 1000
-            minutes * 6e4 + // 1000 * 60
-            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
-        // Because of dateAddRemove treats 24 hours as different from a
-        // day when working around DST, we need to store them separately
-        this._days = +days + weeks * 7;
-        // It is impossible to translate months into days without knowing
-        // which months you are are talking about, so we have to store
-        // it separately.
-        this._months = +months + quarters * 3 + years * 12;
-
-        this._data = {};
-
-        this._locale = getLocale();
-
-        this._bubble();
-    }
-
-    function isDuration(obj) {
-        return obj instanceof Duration;
-    }
-
-    function absRound(number) {
-        if (number < 0) {
-            return Math.round(-1 * number) * -1;
-        } else {
-            return Math.round(number);
-        }
-    }
-
-    // compare two arrays, return the number of differences
-    function compareArrays(array1, array2, dontConvert) {
-        var len = Math.min(array1.length, array2.length),
-            lengthDiff = Math.abs(array1.length - array2.length),
-            diffs = 0,
-            i;
-        for (i = 0; i < len; i++) {
-            if (
-                (dontConvert && array1[i] !== array2[i]) ||
-                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
-            ) {
-                diffs++;
-            }
-        }
-        return diffs + lengthDiff;
-    }
-
-    // FORMATTING
-
-    function offset(token, separator) {
-        addFormatToken(token, 0, 0, function () {
-            var offset = this.utcOffset(),
-                sign = '+';
-            if (offset < 0) {
-                offset = -offset;
-                sign = '-';
-            }
-            return (
-                sign +
-                zeroFill(~~(offset / 60), 2) +
-                separator +
-                zeroFill(~~offset % 60, 2)
-            );
-        });
-    }
-
-    offset('Z', ':');
-    offset('ZZ', '');
-
-    // PARSING
-
-    addRegexToken('Z', matchShortOffset);
-    addRegexToken('ZZ', matchShortOffset);
-    addParseToken(['Z', 'ZZ'], function (input, array, config) {
-        config._useUTC = true;
-        config._tzm = offsetFromString(matchShortOffset, input);
-    });
-
-    // HELPERS
-
-    // timezone chunker
-    // '+10:00' > ['10',  '00']
-    // '-1530'  > ['-15', '30']
-    var chunkOffset = /([\+\-]|\d\d)/gi;
-
-    function offsetFromString(matcher, string) {
-        var matches = (string || '').match(matcher),
-            chunk,
-            parts,
-            minutes;
-
-        if (matches === null) {
-            return null;
-        }
-
-        chunk = matches[matches.length - 1] || [];
-        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
-        minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
-    }
-
-    // Return a moment from input, that is local/utc/zone equivalent to model.
-    function cloneWithOffset(input, model) {
-        var res, diff;
-        if (model._isUTC) {
-            res = model.clone();
-            diff =
-                (isMoment(input) || isDate(input)
-                    ? input.valueOf()
-                    : createLocal(input).valueOf()) - res.valueOf();
-            // Use low-level api, because this fn is low-level api.
-            res._d.setTime(res._d.valueOf() + diff);
-            hooks.updateOffset(res, false);
-            return res;
-        } else {
-            return createLocal(input).local();
-        }
-    }
-
-    function getDateOffset(m) {
-        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
-        // https://github.com/moment/moment/pull/1871
-        return -Math.round(m._d.getTimezoneOffset());
-    }
-
-    // HOOKS
-
-    // This function will be called whenever a moment is mutated.
-    // It is intended to keep the offset in sync with the timezone.
-    hooks.updateOffset = function () {};
-
-    // MOMENTS
-
-    // keepLocalTime = true means only change the timezone, without
-    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-    // +0200, so we adjust the time as needed, to be valid.
-    //
-    // Keeping the time actually adds/subtracts (one hour)
-    // from the actual represented time. That is why we call updateOffset
-    // a second time. In case it wants us to change the offset again
-    // _changeInProgress == true case, then we have to adjust, because
-    // there is no such time in the given timezone.
-    function getSetOffset(input, keepLocalTime, keepMinutes) {
-        var offset = this._offset || 0,
-            localAdjust;
-        if (!this.isValid()) {
-            return input != null ? this : NaN;
-        }
-        if (input != null) {
-            if (typeof input === 'string') {
-                input = offsetFromString(matchShortOffset, input);
-                if (input === null) {
-                    return this;
-                }
-            } else if (Math.abs(input) < 16 && !keepMinutes) {
-                input = input * 60;
-            }
-            if (!this._isUTC && keepLocalTime) {
-                localAdjust = getDateOffset(this);
-            }
-            this._offset = input;
-            this._isUTC = true;
-            if (localAdjust != null) {
-                this.add(localAdjust, 'm');
-            }
-            if (offset !== input) {
-                if (!keepLocalTime || this._changeInProgress) {
-                    addSubtract(
-                        this,
-                        createDuration(input - offset, 'm'),
-                        1,
-                        false
-                    );
-                } else if (!this._changeInProgress) {
-                    this._changeInProgress = true;
-                    hooks.updateOffset(this, true);
-                    this._changeInProgress = null;
-                }
-            }
-            return this;
-        } else {
-            return this._isUTC ? offset : getDateOffset(this);
-        }
-    }
-
-    function getSetZone(input, keepLocalTime) {
-        if (input != null) {
-            if (typeof input !== 'string') {
-                input = -input;
-            }
-
-            this.utcOffset(input, keepLocalTime);
-
-            return this;
-        } else {
-            return -this.utcOffset();
-        }
-    }
-
-    function setOffsetToUTC(keepLocalTime) {
-        return this.utcOffset(0, keepLocalTime);
-    }
-
-    function setOffsetToLocal(keepLocalTime) {
-        if (this._isUTC) {
-            this.utcOffset(0, keepLocalTime);
-            this._isUTC = false;
-
-            if (keepLocalTime) {
-                this.subtract(getDateOffset(this), 'm');
-            }
-        }
-        return this;
-    }
-
-    function setOffsetToParsedOffset() {
-        if (this._tzm != null) {
-            this.utcOffset(this._tzm, false, true);
-        } else if (typeof this._i === 'string') {
-            var tZone = offsetFromString(matchOffset, this._i);
-            if (tZone != null) {
-                this.utcOffset(tZone);
-            } else {
-                this.utcOffset(0, true);
-            }
-        }
-        return this;
-    }
-
-    function hasAlignedHourOffset(input) {
-        if (!this.isValid()) {
-            return false;
-        }
-        input = input ? createLocal(input).utcOffset() : 0;
-
-        return (this.utcOffset() - input) % 60 === 0;
-    }
-
-    function isDaylightSavingTime() {
-        return (
-            this.utcOffset() > this.clone().month(0).utcOffset() ||
-            this.utcOffset() > this.clone().month(5).utcOffset()
-        );
-    }
-
-    function isDaylightSavingTimeShifted() {
-        if (!isUndefined(this._isDSTShifted)) {
-            return this._isDSTShifted;
-        }
-
-        var c = {},
-            other;
-
-        copyConfig(c, this);
-        c = prepareConfig(c);
-
-        if (c._a) {
-            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
-            this._isDSTShifted =
-                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
-        } else {
-            this._isDSTShifted = false;
-        }
-
-        return this._isDSTShifted;
-    }
-
-    function isLocal() {
-        return this.isValid() ? !this._isUTC : false;
-    }
-
-    function isUtcOffset() {
-        return this.isValid() ? this._isUTC : false;
-    }
-
-    function isUtc() {
-        return this.isValid() ? this._isUTC && this._offset === 0 : false;
-    }
-
-    // ASP.NET json date format regex
-    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
-        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-        // and further modified to allow for strings containing both week and day
-        isoRegex =
-            /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
-
-    function createDuration(input, key) {
-        var duration = input,
-            // matching against regexp is expensive, do it on demand
-            match = null,
-            sign,
-            ret,
-            diffRes;
-
-        if (isDuration(input)) {
-            duration = {
-                ms: input._milliseconds,
-                d: input._days,
-                M: input._months,
-            };
-        } else if (isNumber(input) || !isNaN(+input)) {
-            duration = {};
-            if (key) {
-                duration[key] = +input;
-            } else {
-                duration.milliseconds = +input;
-            }
-        } else if ((match = aspNetRegex.exec(input))) {
-            sign = match[1] === '-' ? -1 : 1;
-            duration = {
-                y: 0,
-                d: toInt(match[DATE]) * sign,
-                h: toInt(match[HOUR]) * sign,
-                m: toInt(match[MINUTE]) * sign,
-                s: toInt(match[SECOND]) * sign,
-                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
-            };
-        } else if ((match = isoRegex.exec(input))) {
-            sign = match[1] === '-' ? -1 : 1;
-            duration = {
-                y: parseIso(match[2], sign),
-                M: parseIso(match[3], sign),
-                w: parseIso(match[4], sign),
-                d: parseIso(match[5], sign),
-                h: parseIso(match[6], sign),
-                m: parseIso(match[7], sign),
-                s: parseIso(match[8], sign),
-            };
-        } else if (duration == null) {
-            // checks for null or undefined
-            duration = {};
-        } else if (
-            typeof duration === 'object' &&
-            ('from' in duration || 'to' in duration)
-        ) {
-            diffRes = momentsDifference(
-                createLocal(duration.from),
-                createLocal(duration.to)
-            );
-
-            duration = {};
-            duration.ms = diffRes.milliseconds;
-            duration.M = diffRes.months;
-        }
-
-        ret = new Duration(duration);
-
-        if (isDuration(input) && hasOwnProp(input, '_locale')) {
-            ret._locale = input._locale;
-        }
-
-        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
-            ret._isValid = input._isValid;
-        }
-
-        return ret;
-    }
-
-    createDuration.fn = Duration.prototype;
-    createDuration.invalid = createInvalid$1;
-
-    function parseIso(inp, sign) {
-        // We'd normally use ~~inp for this, but unfortunately it also
-        // converts floats to ints.
-        // inp may be undefined, so careful calling replace on it.
-        var res = inp && parseFloat(inp.replace(',', '.'));
-        // apply sign while we're at it
-        return (isNaN(res) ? 0 : res) * sign;
-    }
-
-    function positiveMomentsDifference(base, other) {
-        var res = {};
-
-        res.months =
-            other.month() - base.month() + (other.year() - base.year()) * 12;
-        if (base.clone().add(res.months, 'M').isAfter(other)) {
-            --res.months;
-        }
-
-        res.milliseconds = +other - +base.clone().add(res.months, 'M');
-
-        return res;
-    }
-
-    function momentsDifference(base, other) {
-        var res;
-        if (!(base.isValid() && other.isValid())) {
-            return { milliseconds: 0, months: 0 };
-        }
-
-        other = cloneWithOffset(other, base);
-        if (base.isBefore(other)) {
-            res = positiveMomentsDifference(base, other);
-        } else {
-            res = positiveMomentsDifference(other, base);
-            res.milliseconds = -res.milliseconds;
-            res.months = -res.months;
-        }
-
-        return res;
-    }
-
-    // TODO: remove 'name' arg after deprecation is removed
-    function createAdder(direction, name) {
-        return function (val, period) {
-            var dur, tmp;
-            //invert the arguments, but complain about it
-            if (period !== null && !isNaN(+period)) {
-                deprecateSimple(
-                    name,
-                    'moment().' +
-                        name +
-                        '(period, number) is deprecated. Please use moment().' +
-                        name +
-                        '(number, period). ' +
-                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
-                );
-                tmp = val;
-                val = period;
-                period = tmp;
-            }
-
-            dur = createDuration(val, period);
-            addSubtract(this, dur, direction);
-            return this;
-        };
-    }
-
-    function addSubtract(mom, duration, isAdding, updateOffset) {
-        var milliseconds = duration._milliseconds,
-            days = absRound(duration._days),
-            months = absRound(duration._months);
-
-        if (!mom.isValid()) {
-            // No op
-            return;
-        }
-
-        updateOffset = updateOffset == null ? true : updateOffset;
-
-        if (months) {
-            setMonth(mom, get(mom, 'Month') + months * isAdding);
-        }
-        if (days) {
-            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
-        }
-        if (milliseconds) {
-            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
-        }
-        if (updateOffset) {
-            hooks.updateOffset(mom, days || months);
-        }
-    }
-
-    var add = createAdder(1, 'add'),
-        subtract = createAdder(-1, 'subtract');
-
-    function isString(input) {
-        return typeof input === 'string' || input instanceof String;
-    }
-
-    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
-    function isMomentInput(input) {
-        return (
-            isMoment(input) ||
-            isDate(input) ||
-            isString(input) ||
-            isNumber(input) ||
-            isNumberOrStringArray(input) ||
-            isMomentInputObject(input) ||
-            input === null ||
-            input === undefined
-        );
-    }
-
-    function isMomentInputObject(input) {
-        var objectTest = isObject(input) && !isObjectEmpty(input),
-            propertyTest = false,
-            properties = [
-                'years',
-                'year',
-                'y',
-                'months',
-                'month',
-                'M',
-                'days',
-                'day',
-                'd',
-                'dates',
-                'date',
-                'D',
-                'hours',
-                'hour',
-                'h',
-                'minutes',
-                'minute',
-                'm',
-                'seconds',
-                'second',
-                's',
-                'milliseconds',
-                'millisecond',
-                'ms',
-            ],
-            i,
-            property,
-            propertyLen = properties.length;
-
-        for (i = 0; i < propertyLen; i += 1) {
-            property = properties[i];
-            propertyTest = propertyTest || hasOwnProp(input, property);
-        }
-
-        return objectTest && propertyTest;
-    }
-
-    function isNumberOrStringArray(input) {
-        var arrayTest = isArray(input),
-            dataTypeTest = false;
-        if (arrayTest) {
-            dataTypeTest =
-                input.filter(function (item) {
-                    return !isNumber(item) && isString(input);
-                }).length === 0;
-        }
-        return arrayTest && dataTypeTest;
-    }
-
-    function isCalendarSpec(input) {
-        var objectTest = isObject(input) && !isObjectEmpty(input),
-            propertyTest = false,
-            properties = [
-                'sameDay',
-                'nextDay',
-                'lastDay',
-                'nextWeek',
-                'lastWeek',
-                'sameElse',
-            ],
-            i,
-            property;
-
-        for (i = 0; i < properties.length; i += 1) {
-            property = properties[i];
-            propertyTest = propertyTest || hasOwnProp(input, property);
-        }
-
-        return objectTest && propertyTest;
-    }
-
-    function getCalendarFormat(myMoment, now) {
-        var diff = myMoment.diff(now, 'days', true);
-        return diff < -6
-            ? 'sameElse'
-            : diff < -1
-              ? 'lastWeek'
-              : diff < 0
-                ? 'lastDay'
-                : diff < 1
-                  ? 'sameDay'
-                  : diff < 2
-                    ? 'nextDay'
-                    : diff < 7
-                      ? 'nextWeek'
-                      : 'sameElse';
-    }
-
-    function calendar$1(time, formats) {
-        // Support for single parameter, formats only overload to the calendar function
-        if (arguments.length === 1) {
-            if (!arguments[0]) {
-                time = undefined;
-                formats = undefined;
-            } else if (isMomentInput(arguments[0])) {
-                time = arguments[0];
-                formats = undefined;
-            } else if (isCalendarSpec(arguments[0])) {
-                formats = arguments[0];
-                time = undefined;
-            }
-        }
-        // We want to compare the start of today, vs this.
-        // Getting start-of-today depends on whether we're local/utc/offset or not.
-        var now = time || createLocal(),
-            sod = cloneWithOffset(now, this).startOf('day'),
-            format = hooks.calendarFormat(this, sod) || 'sameElse',
-            output =
-                formats &&
-                (isFunction(formats[format])
-                    ? formats[format].call(this, now)
-                    : formats[format]);
-
-        return this.format(
-            output || this.localeData().calendar(format, this, createLocal(now))
-        );
-    }
-
-    function clone() {
-        return new Moment(this);
-    }
-
-    function isAfter(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input);
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() > localInput.valueOf();
-        } else {
-            return localInput.valueOf() < this.clone().startOf(units).valueOf();
-        }
-    }
-
-    function isBefore(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input);
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() < localInput.valueOf();
-        } else {
-            return this.clone().endOf(units).valueOf() < localInput.valueOf();
-        }
-    }
-
-    function isBetween(from, to, units, inclusivity) {
-        var localFrom = isMoment(from) ? from : createLocal(from),
-            localTo = isMoment(to) ? to : createLocal(to);
-        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
-            return false;
-        }
-        inclusivity = inclusivity || '()';
-        return (
-            (inclusivity[0] === '('
-                ? this.isAfter(localFrom, units)
-                : !this.isBefore(localFrom, units)) &&
-            (inclusivity[1] === ')'
-                ? this.isBefore(localTo, units)
-                : !this.isAfter(localTo, units))
-        );
-    }
-
-    function isSame(input, units) {
-        var localInput = isMoment(input) ? input : createLocal(input),
-            inputMs;
-        if (!(this.isValid() && localInput.isValid())) {
-            return false;
-        }
-        units = normalizeUnits(units) || 'millisecond';
-        if (units === 'millisecond') {
-            return this.valueOf() === localInput.valueOf();
-        } else {
-            inputMs = localInput.valueOf();
-            return (
-                this.clone().startOf(units).valueOf() <= inputMs &&
-                inputMs <= this.clone().endOf(units).valueOf()
-            );
-        }
-    }
-
-    function isSameOrAfter(input, units) {
-        return this.isSame(input, units) || this.isAfter(input, units);
-    }
-
-    function isSameOrBefore(input, units) {
-        return this.isSame(input, units) || this.isBefore(input, units);
-    }
-
-    function diff(input, units, asFloat) {
-        var that, zoneDelta, output;
-
-        if (!this.isValid()) {
-            return NaN;
-        }
-
-        that = cloneWithOffset(input, this);
-
-        if (!that.isValid()) {
-            return NaN;
-        }
-
-        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
-
-        units = normalizeUnits(units);
-
-        switch (units) {
-            case 'year':
-                output = monthDiff(this, that) / 12;
-                break;
-            case 'month':
-                output = monthDiff(this, that);
-                break;
-            case 'quarter':
-                output = monthDiff(this, that) / 3;
-                break;
-            case 'second':
-                output = (this - that) / 1e3;
-                break; // 1000
-            case 'minute':
-                output = (this - that) / 6e4;
-                break; // 1000 * 60
-            case 'hour':
-                output = (this - that) / 36e5;
-                break; // 1000 * 60 * 60
-            case 'day':
-                output = (this - that - zoneDelta) / 864e5;
-                break; // 1000 * 60 * 60 * 24, negate dst
-            case 'week':
-                output = (this - that - zoneDelta) / 6048e5;
-                break; // 1000 * 60 * 60 * 24 * 7, negate dst
-            default:
-                output = this - that;
-        }
-
-        return asFloat ? output : absFloor(output);
-    }
-
-    function monthDiff(a, b) {
-        if (a.date() < b.date()) {
-            // end-of-month calculations work correct when the start month has more
-            // days than the end month.
-            return -monthDiff(b, a);
-        }
-        // difference in months
-        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
-            // b is in (anchor - 1 month, anchor + 1 month)
-            anchor = a.clone().add(wholeMonthDiff, 'months'),
-            anchor2,
-            adjust;
-
-        if (b - anchor < 0) {
-            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
-            // linear across the month
-            adjust = (b - anchor) / (anchor - anchor2);
-        } else {
-            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
-            // linear across the month
-            adjust = (b - anchor) / (anchor2 - anchor);
-        }
-
-        //check for negative zero, return zero if negative zero
-        return -(wholeMonthDiff + adjust) || 0;
-    }
-
-    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
-
-    function toString() {
-        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
-    }
-
-    function toISOString(keepOffset) {
-        if (!this.isValid()) {
-            return null;
-        }
-        var utc = keepOffset !== true,
-            m = utc ? this.clone().utc() : this;
-        if (m.year() < 0 || m.year() > 9999) {
-            return formatMoment(
-                m,
-                utc
-                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
-                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
-            );
-        }
-        if (isFunction(Date.prototype.toISOString)) {
-            // native implementation is ~50x faster, use it when we can
-            if (utc) {
-                return this.toDate().toISOString();
-            } else {
-                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
-                    .toISOString()
-                    .replace('Z', formatMoment(m, 'Z'));
-            }
-        }
-        return formatMoment(
-            m,
-            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
-        );
-    }
-
-    /**
-     * Return a human readable representation of a moment that can
-     * also be evaluated to get a new moment which is the same
-     *
-     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
-     */
-    function inspect() {
-        if (!this.isValid()) {
-            return 'moment.invalid(/* ' + this._i + ' */)';
-        }
-        var func = 'moment',
-            zone = '',
-            prefix,
-            year,
-            datetime,
-            suffix;
-        if (!this.isLocal()) {
-            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
-            zone = 'Z';
-        }
-        prefix = '[' + func + '("]';
-        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
-        datetime = '-MM-DD[T]HH:mm:ss.SSS';
-        suffix = zone + '[")]';
-
-        return this.format(prefix + year + datetime + suffix);
-    }
-
-    function format(inputString) {
-        if (!inputString) {
-            inputString = this.isUtc()
-                ? hooks.defaultFormatUtc
-                : hooks.defaultFormat;
-        }
-        var output = formatMoment(this, inputString);
-        return this.localeData().postformat(output);
-    }
-
-    function from(time, withoutSuffix) {
-        if (
-            this.isValid() &&
-            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-        ) {
-            return createDuration({ to: this, from: time })
-                .locale(this.locale())
-                .humanize(!withoutSuffix);
-        } else {
-            return this.localeData().invalidDate();
-        }
-    }
-
-    function fromNow(withoutSuffix) {
-        return this.from(createLocal(), withoutSuffix);
-    }
-
-    function to(time, withoutSuffix) {
-        if (
-            this.isValid() &&
-            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-        ) {
-            return createDuration({ from: this, to: time })
-                .locale(this.locale())
-                .humanize(!withoutSuffix);
-        } else {
-            return this.localeData().invalidDate();
-        }
-    }
-
-    function toNow(withoutSuffix) {
-        return this.to(createLocal(), withoutSuffix);
-    }
-
-    // If passed a locale key, it will set the locale for this
-    // instance.  Otherwise, it will return the locale configuration
-    // variables for this instance.
-    function locale(key) {
-        var newLocaleData;
-
-        if (key === undefined) {
-            return this._locale._abbr;
-        } else {
-            newLocaleData = getLocale(key);
-            if (newLocaleData != null) {
-                this._locale = newLocaleData;
-            }
-            return this;
-        }
-    }
-
-    var lang = deprecate(
-        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
-        function (key) {
-            if (key === undefined) {
-                return this.localeData();
-            } else {
-                return this.locale(key);
-            }
-        }
-    );
-
-    function localeData() {
-        return this._locale;
-    }
-
-    var MS_PER_SECOND = 1000,
-        MS_PER_MINUTE = 60 * MS_PER_SECOND,
-        MS_PER_HOUR = 60 * MS_PER_MINUTE,
-        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
-
-    // actual modulo - handles negative numbers (for dates before 1970):
-    function mod$1(dividend, divisor) {
-        return ((dividend % divisor) + divisor) % divisor;
-    }
-
-    function localStartOfDate(y, m, d) {
-        // the date constructor remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
-        } else {
-            return new Date(y, m, d).valueOf();
-        }
-    }
-
-    function utcStartOfDate(y, m, d) {
-        // Date.UTC remaps years 0-99 to 1900-1999
-        if (y < 100 && y >= 0) {
-            // preserve leap years using a full 400 year cycle, then reset
-            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
-        } else {
-            return Date.UTC(y, m, d);
-        }
-    }
-
-    function startOf(units) {
-        var time, startOfDate;
-        units = normalizeUnits(units);
-        if (units === undefined || units === 'millisecond' || !this.isValid()) {
-            return this;
-        }
-
-        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-        switch (units) {
-            case 'year':
-                time = startOfDate(this.year(), 0, 1);
-                break;
-            case 'quarter':
-                time = startOfDate(
-                    this.year(),
-                    this.month() - (this.month() % 3),
-                    1
-                );
-                break;
-            case 'month':
-                time = startOfDate(this.year(), this.month(), 1);
-                break;
-            case 'week':
-                time = startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - this.weekday()
-                );
-                break;
-            case 'isoWeek':
-                time = startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - (this.isoWeekday() - 1)
-                );
-                break;
-            case 'day':
-            case 'date':
-                time = startOfDate(this.year(), this.month(), this.date());
-                break;
-            case 'hour':
-                time = this._d.valueOf();
-                time -= mod$1(
-                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                    MS_PER_HOUR
-                );
-                break;
-            case 'minute':
-                time = this._d.valueOf();
-                time -= mod$1(time, MS_PER_MINUTE);
-                break;
-            case 'second':
-                time = this._d.valueOf();
-                time -= mod$1(time, MS_PER_SECOND);
-                break;
-        }
-
-        this._d.setTime(time);
-        hooks.updateOffset(this, true);
-        return this;
-    }
-
-    function endOf(units) {
-        var time, startOfDate;
-        units = normalizeUnits(units);
-        if (units === undefined || units === 'millisecond' || !this.isValid()) {
-            return this;
-        }
-
-        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-        switch (units) {
-            case 'year':
-                time = startOfDate(this.year() + 1, 0, 1) - 1;
-                break;
-            case 'quarter':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month() - (this.month() % 3) + 3,
-                        1
-                    ) - 1;
-                break;
-            case 'month':
-                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
-                break;
-            case 'week':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month(),
-                        this.date() - this.weekday() + 7
-                    ) - 1;
-                break;
-            case 'isoWeek':
-                time =
-                    startOfDate(
-                        this.year(),
-                        this.month(),
-                        this.date() - (this.isoWeekday() - 1) + 7
-                    ) - 1;
-                break;
-            case 'day':
-            case 'date':
-                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
-                break;
-            case 'hour':
-                time = this._d.valueOf();
-                time +=
-                    MS_PER_HOUR -
-                    mod$1(
-                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                        MS_PER_HOUR
-                    ) -
-                    1;
-                break;
-            case 'minute':
-                time = this._d.valueOf();
-                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
-                break;
-            case 'second':
-                time = this._d.valueOf();
-                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
-                break;
-        }
-
-        this._d.setTime(time);
-        hooks.updateOffset(this, true);
-        return this;
-    }
-
-    function valueOf() {
-        return this._d.valueOf() - (this._offset || 0) * 60000;
-    }
-
-    function unix() {
-        return Math.floor(this.valueOf() / 1000);
-    }
-
-    function toDate() {
-        return new Date(this.valueOf());
-    }
-
-    function toArray() {
-        var m = this;
-        return [
-            m.year(),
-            m.month(),
-            m.date(),
-            m.hour(),
-            m.minute(),
-            m.second(),
-            m.millisecond(),
-        ];
-    }
-
-    function toObject() {
-        var m = this;
-        return {
-            years: m.year(),
-            months: m.month(),
-            date: m.date(),
-            hours: m.hours(),
-            minutes: m.minutes(),
-            seconds: m.seconds(),
-            milliseconds: m.milliseconds(),
-        };
-    }
-
-    function toJSON() {
-        // new Date(NaN).toJSON() === null
-        return this.isValid() ? this.toISOString() : null;
-    }
-
-    function isValid$2() {
-        return isValid(this);
-    }
-
-    function parsingFlags() {
-        return extend({}, getParsingFlags(this));
-    }
-
-    function invalidAt() {
-        return getParsingFlags(this).overflow;
-    }
-
-    function creationData() {
-        return {
-            input: this._i,
-            format: this._f,
-            locale: this._locale,
-            isUTC: this._isUTC,
-            strict: this._strict,
-        };
-    }
-
-    addFormatToken('N', 0, 0, 'eraAbbr');
-    addFormatToken('NN', 0, 0, 'eraAbbr');
-    addFormatToken('NNN', 0, 0, 'eraAbbr');
-    addFormatToken('NNNN', 0, 0, 'eraName');
-    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
-
-    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
-    addFormatToken('y', ['yy', 2], 0, 'eraYear');
-    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
-    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
-
-    addRegexToken('N', matchEraAbbr);
-    addRegexToken('NN', matchEraAbbr);
-    addRegexToken('NNN', matchEraAbbr);
-    addRegexToken('NNNN', matchEraName);
-    addRegexToken('NNNNN', matchEraNarrow);
-
-    addParseToken(
-        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
-        function (input, array, config, token) {
-            var era = config._locale.erasParse(input, token, config._strict);
-            if (era) {
-                getParsingFlags(config).era = era;
-            } else {
-                getParsingFlags(config).invalidEra = input;
-            }
-        }
-    );
-
-    addRegexToken('y', matchUnsigned);
-    addRegexToken('yy', matchUnsigned);
-    addRegexToken('yyy', matchUnsigned);
-    addRegexToken('yyyy', matchUnsigned);
-    addRegexToken('yo', matchEraYearOrdinal);
-
-    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
-    addParseToken(['yo'], function (input, array, config, token) {
-        var match;
-        if (config._locale._eraYearOrdinalRegex) {
-            match = input.match(config._locale._eraYearOrdinalRegex);
-        }
-
-        if (config._locale.eraYearOrdinalParse) {
-            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
-        } else {
-            array[YEAR] = parseInt(input, 10);
-        }
-    });
-
-    function localeEras(m, format) {
-        var i,
-            l,
-            date,
-            eras = this._eras || getLocale('en')._eras;
-        for (i = 0, l = eras.length; i < l; ++i) {
-            switch (typeof eras[i].since) {
-                case 'string':
-                    // truncate time
-                    date = hooks(eras[i].since).startOf('day');
-                    eras[i].since = date.valueOf();
-                    break;
-            }
-
-            switch (typeof eras[i].until) {
-                case 'undefined':
-                    eras[i].until = +Infinity;
-                    break;
-                case 'string':
-                    // truncate time
-                    date = hooks(eras[i].until).startOf('day').valueOf();
-                    eras[i].until = date.valueOf();
-                    break;
-            }
-        }
-        return eras;
-    }
-
-    function localeErasParse(eraName, format, strict) {
-        var i,
-            l,
-            eras = this.eras(),
-            name,
-            abbr,
-            narrow;
-        eraName = eraName.toUpperCase();
-
-        for (i = 0, l = eras.length; i < l; ++i) {
-            name = eras[i].name.toUpperCase();
-            abbr = eras[i].abbr.toUpperCase();
-            narrow = eras[i].narrow.toUpperCase();
-
-            if (strict) {
-                switch (format) {
-                    case 'N':
-                    case 'NN':
-                    case 'NNN':
-                        if (abbr === eraName) {
-                            return eras[i];
-                        }
-                        break;
-
-                    case 'NNNN':
-                        if (name === eraName) {
-                            return eras[i];
-                        }
-                        break;
-
-                    case 'NNNNN':
-                        if (narrow === eraName) {
-                            return eras[i];
-                        }
-                        break;
-                }
-            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
-                return eras[i];
-            }
-        }
-    }
-
-    function localeErasConvertYear(era, year) {
-        var dir = era.since <= era.until ? +1 : -1;
-        if (year === undefined) {
-            return hooks(era.since).year();
-        } else {
-            return hooks(era.since).year() + (year - era.offset) * dir;
-        }
-    }
-
-    function getEraName() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].name;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].name;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraNarrow() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].narrow;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].narrow;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraAbbr() {
-        var i,
-            l,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (eras[i].since <= val && val <= eras[i].until) {
-                return eras[i].abbr;
-            }
-            if (eras[i].until <= val && val <= eras[i].since) {
-                return eras[i].abbr;
-            }
-        }
-
-        return '';
-    }
-
-    function getEraYear() {
-        var i,
-            l,
-            dir,
-            val,
-            eras = this.localeData().eras();
-        for (i = 0, l = eras.length; i < l; ++i) {
-            dir = eras[i].since <= eras[i].until ? +1 : -1;
-
-            // truncate time
-            val = this.clone().startOf('day').valueOf();
-
-            if (
-                (eras[i].since <= val && val <= eras[i].until) ||
-                (eras[i].until <= val && val <= eras[i].since)
-            ) {
-                return (
-                    (this.year() - hooks(eras[i].since).year()) * dir +
-                    eras[i].offset
-                );
-            }
-        }
-
-        return this.year();
-    }
-
-    function erasNameRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasNameRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasNameRegex : this._erasRegex;
-    }
-
-    function erasAbbrRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasAbbrRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasAbbrRegex : this._erasRegex;
-    }
-
-    function erasNarrowRegex(isStrict) {
-        if (!hasOwnProp(this, '_erasNarrowRegex')) {
-            computeErasParse.call(this);
-        }
-        return isStrict ? this._erasNarrowRegex : this._erasRegex;
-    }
-
-    function matchEraAbbr(isStrict, locale) {
-        return locale.erasAbbrRegex(isStrict);
-    }
-
-    function matchEraName(isStrict, locale) {
-        return locale.erasNameRegex(isStrict);
-    }
-
-    function matchEraNarrow(isStrict, locale) {
-        return locale.erasNarrowRegex(isStrict);
-    }
-
-    function matchEraYearOrdinal(isStrict, locale) {
-        return locale._eraYearOrdinalRegex || matchUnsigned;
-    }
-
-    function computeErasParse() {
-        var abbrPieces = [],
-            namePieces = [],
-            narrowPieces = [],
-            mixedPieces = [],
-            i,
-            l,
-            erasName,
-            erasAbbr,
-            erasNarrow,
-            eras = this.eras();
-
-        for (i = 0, l = eras.length; i < l; ++i) {
-            erasName = regexEscape(eras[i].name);
-            erasAbbr = regexEscape(eras[i].abbr);
-            erasNarrow = regexEscape(eras[i].narrow);
-
-            namePieces.push(erasName);
-            abbrPieces.push(erasAbbr);
-            narrowPieces.push(erasNarrow);
-            mixedPieces.push(erasName);
-            mixedPieces.push(erasAbbr);
-            mixedPieces.push(erasNarrow);
-        }
-
-        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
-        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
-        this._erasNarrowRegex = new RegExp(
-            '^(' + narrowPieces.join('|') + ')',
-            'i'
-        );
-    }
-
-    // FORMATTING
-
-    addFormatToken(0, ['gg', 2], 0, function () {
-        return this.weekYear() % 100;
-    });
-
-    addFormatToken(0, ['GG', 2], 0, function () {
-        return this.isoWeekYear() % 100;
-    });
-
-    function addWeekYearFormatToken(token, getter) {
-        addFormatToken(0, [token, token.length], 0, getter);
-    }
-
-    addWeekYearFormatToken('gggg', 'weekYear');
-    addWeekYearFormatToken('ggggg', 'weekYear');
-    addWeekYearFormatToken('GGGG', 'isoWeekYear');
-    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
-    // ALIASES
-
-    // PARSING
-
-    addRegexToken('G', matchSigned);
-    addRegexToken('g', matchSigned);
-    addRegexToken('GG', match1to2, match2);
-    addRegexToken('gg', match1to2, match2);
-    addRegexToken('GGGG', match1to4, match4);
-    addRegexToken('gggg', match1to4, match4);
-    addRegexToken('GGGGG', match1to6, match6);
-    addRegexToken('ggggg', match1to6, match6);
-
-    addWeekParseToken(
-        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
-        function (input, week, config, token) {
-            week[token.substr(0, 2)] = toInt(input);
-        }
-    );
-
-    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
-        week[token] = hooks.parseTwoDigitYear(input);
-    });
-
-    // MOMENTS
-
-    function getSetWeekYear(input) {
-        return getSetWeekYearHelper.call(
-            this,
-            input,
-            this.week(),
-            this.weekday() + this.localeData()._week.dow,
-            this.localeData()._week.dow,
-            this.localeData()._week.doy
-        );
-    }
-
-    function getSetISOWeekYear(input) {
-        return getSetWeekYearHelper.call(
-            this,
-            input,
-            this.isoWeek(),
-            this.isoWeekday(),
-            1,
-            4
-        );
-    }
-
-    function getISOWeeksInYear() {
-        return weeksInYear(this.year(), 1, 4);
-    }
-
-    function getISOWeeksInISOWeekYear() {
-        return weeksInYear(this.isoWeekYear(), 1, 4);
-    }
-
-    function getWeeksInYear() {
-        var weekInfo = this.localeData()._week;
-        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
-    }
-
-    function getWeeksInWeekYear() {
-        var weekInfo = this.localeData()._week;
-        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
-    }
-
-    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
-        var weeksTarget;
-        if (input == null) {
-            return weekOfYear(this, dow, doy).year;
-        } else {
-            weeksTarget = weeksInYear(input, dow, doy);
-            if (week > weeksTarget) {
-                week = weeksTarget;
-            }
-            return setWeekAll.call(this, input, week, weekday, dow, doy);
-        }
-    }
-
-    function setWeekAll(weekYear, week, weekday, dow, doy) {
-        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
-            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
-
-        this.year(date.getUTCFullYear());
-        this.month(date.getUTCMonth());
-        this.date(date.getUTCDate());
-        return this;
-    }
-
-    // FORMATTING
-
-    addFormatToken('Q', 0, 'Qo', 'quarter');
-
-    // PARSING
-
-    addRegexToken('Q', match1);
-    addParseToken('Q', function (input, array) {
-        array[MONTH] = (toInt(input) - 1) * 3;
-    });
-
-    // MOMENTS
-
-    function getSetQuarter(input) {
-        return input == null
-            ? Math.ceil((this.month() + 1) / 3)
-            : this.month((input - 1) * 3 + (this.month() % 3));
-    }
-
-    // FORMATTING
-
-    addFormatToken('D', ['DD', 2], 'Do', 'date');
-
-    // PARSING
-
-    addRegexToken('D', match1to2, match1to2NoLeadingZero);
-    addRegexToken('DD', match1to2, match2);
-    addRegexToken('Do', function (isStrict, locale) {
-        // TODO: Remove "ordinalParse" fallback in next major release.
-        return isStrict
-            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
-            : locale._dayOfMonthOrdinalParseLenient;
-    });
-
-    addParseToken(['D', 'DD'], DATE);
-    addParseToken('Do', function (input, array) {
-        array[DATE] = toInt(input.match(match1to2)[0]);
-    });
-
-    // MOMENTS
-
-    var getSetDayOfMonth = makeGetSet('Date', true);
-
-    // FORMATTING
-
-    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
-    // PARSING
-
-    addRegexToken('DDD', match1to3);
-    addRegexToken('DDDD', match3);
-    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
-        config._dayOfYear = toInt(input);
-    });
-
-    // HELPERS
-
-    // MOMENTS
-
-    function getSetDayOfYear(input) {
-        var dayOfYear =
-            Math.round(
-                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
-            ) + 1;
-        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
-    }
-
-    // FORMATTING
-
-    addFormatToken('m', ['mm', 2], 0, 'minute');
-
-    // PARSING
-
-    addRegexToken('m', match1to2, match1to2HasZero);
-    addRegexToken('mm', match1to2, match2);
-    addParseToken(['m', 'mm'], MINUTE);
-
-    // MOMENTS
-
-    var getSetMinute = makeGetSet('Minutes', false);
-
-    // FORMATTING
-
-    addFormatToken('s', ['ss', 2], 0, 'second');
-
-    // PARSING
-
-    addRegexToken('s', match1to2, match1to2HasZero);
-    addRegexToken('ss', match1to2, match2);
-    addParseToken(['s', 'ss'], SECOND);
-
-    // MOMENTS
-
-    var getSetSecond = makeGetSet('Seconds', false);
-
-    // FORMATTING
-
-    addFormatToken('S', 0, 0, function () {
-        return ~~(this.millisecond() / 100);
-    });
-
-    addFormatToken(0, ['SS', 2], 0, function () {
-        return ~~(this.millisecond() / 10);
-    });
-
-    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
-    addFormatToken(0, ['SSSS', 4], 0, function () {
-        return this.millisecond() * 10;
-    });
-    addFormatToken(0, ['SSSSS', 5], 0, function () {
-        return this.millisecond() * 100;
-    });
-    addFormatToken(0, ['SSSSSS', 6], 0, function () {
-        return this.millisecond() * 1000;
-    });
-    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
-        return this.millisecond() * 10000;
-    });
-    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
-        return this.millisecond() * 100000;
-    });
-    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
-        return this.millisecond() * 1000000;
-    });
-
-    // PARSING
-
-    addRegexToken('S', match1to3, match1);
-    addRegexToken('SS', match1to3, match2);
-    addRegexToken('SSS', match1to3, match3);
-
-    var token, getSetMillisecond;
-    for (token = 'SSSS'; token.length <= 9; token += 'S') {
-        addRegexToken(token, matchUnsigned);
-    }
-
-    function parseMs(input, array) {
-        array[MILLISECOND] = toInt(('0.' + input) * 1000);
-    }
-
-    for (token = 'S'; token.length <= 9; token += 'S') {
-        addParseToken(token, parseMs);
-    }
-
-    getSetMillisecond = makeGetSet('Milliseconds', false);
-
-    // FORMATTING
-
-    addFormatToken('z', 0, 0, 'zoneAbbr');
-    addFormatToken('zz', 0, 0, 'zoneName');
-
-    // MOMENTS
-
-    function getZoneAbbr() {
-        return this._isUTC ? 'UTC' : '';
-    }
-
-    function getZoneName() {
-        return this._isUTC ? 'Coordinated Universal Time' : '';
-    }
-
-    var proto = Moment.prototype;
-
-    proto.add = add;
-    proto.calendar = calendar$1;
-    proto.clone = clone;
-    proto.diff = diff;
-    proto.endOf = endOf;
-    proto.format = format;
-    proto.from = from;
-    proto.fromNow = fromNow;
-    proto.to = to;
-    proto.toNow = toNow;
-    proto.get = stringGet;
-    proto.invalidAt = invalidAt;
-    proto.isAfter = isAfter;
-    proto.isBefore = isBefore;
-    proto.isBetween = isBetween;
-    proto.isSame = isSame;
-    proto.isSameOrAfter = isSameOrAfter;
-    proto.isSameOrBefore = isSameOrBefore;
-    proto.isValid = isValid$2;
-    proto.lang = lang;
-    proto.locale = locale;
-    proto.localeData = localeData;
-    proto.max = prototypeMax;
-    proto.min = prototypeMin;
-    proto.parsingFlags = parsingFlags;
-    proto.set = stringSet;
-    proto.startOf = startOf;
-    proto.subtract = subtract;
-    proto.toArray = toArray;
-    proto.toObject = toObject;
-    proto.toDate = toDate;
-    proto.toISOString = toISOString;
-    proto.inspect = inspect;
-    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
-        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
-            return 'Moment<' + this.format() + '>';
-        };
-    }
-    proto.toJSON = toJSON;
-    proto.toString = toString;
-    proto.unix = unix;
-    proto.valueOf = valueOf;
-    proto.creationData = creationData;
-    proto.eraName = getEraName;
-    proto.eraNarrow = getEraNarrow;
-    proto.eraAbbr = getEraAbbr;
-    proto.eraYear = getEraYear;
-    proto.year = getSetYear;
-    proto.isLeapYear = getIsLeapYear;
-    proto.weekYear = getSetWeekYear;
-    proto.isoWeekYear = getSetISOWeekYear;
-    proto.quarter = proto.quarters = getSetQuarter;
-    proto.month = getSetMonth;
-    proto.daysInMonth = getDaysInMonth;
-    proto.week = proto.weeks = getSetWeek;
-    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
-    proto.weeksInYear = getWeeksInYear;
-    proto.weeksInWeekYear = getWeeksInWeekYear;
-    proto.isoWeeksInYear = getISOWeeksInYear;
-    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
-    proto.date = getSetDayOfMonth;
-    proto.day = proto.days = getSetDayOfWeek;
-    proto.weekday = getSetLocaleDayOfWeek;
-    proto.isoWeekday = getSetISODayOfWeek;
-    proto.dayOfYear = getSetDayOfYear;
-    proto.hour = proto.hours = getSetHour;
-    proto.minute = proto.minutes = getSetMinute;
-    proto.second = proto.seconds = getSetSecond;
-    proto.millisecond = proto.milliseconds = getSetMillisecond;
-    proto.utcOffset = getSetOffset;
-    proto.utc = setOffsetToUTC;
-    proto.local = setOffsetToLocal;
-    proto.parseZone = setOffsetToParsedOffset;
-    proto.hasAlignedHourOffset = hasAlignedHourOffset;
-    proto.isDST = isDaylightSavingTime;
-    proto.isLocal = isLocal;
-    proto.isUtcOffset = isUtcOffset;
-    proto.isUtc = isUtc;
-    proto.isUTC = isUtc;
-    proto.zoneAbbr = getZoneAbbr;
-    proto.zoneName = getZoneName;
-    proto.dates = deprecate(
-        'dates accessor is deprecated. Use date instead.',
-        getSetDayOfMonth
-    );
-    proto.months = deprecate(
-        'months accessor is deprecated. Use month instead',
-        getSetMonth
-    );
-    proto.years = deprecate(
-        'years accessor is deprecated. Use year instead',
-        getSetYear
-    );
-    proto.zone = deprecate(
-        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
-        getSetZone
-    );
-    proto.isDSTShifted = deprecate(
-        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
-        isDaylightSavingTimeShifted
-    );
-
-    function createUnix(input) {
-        return createLocal(input * 1000);
-    }
-
-    function createInZone() {
-        return createLocal.apply(null, arguments).parseZone();
-    }
-
-    function preParsePostFormat(string) {
-        return string;
-    }
-
-    var proto$1 = Locale.prototype;
-
-    proto$1.calendar = calendar;
-    proto$1.longDateFormat = longDateFormat;
-    proto$1.invalidDate = invalidDate;
-    proto$1.ordinal = ordinal;
-    proto$1.preparse = preParsePostFormat;
-    proto$1.postformat = preParsePostFormat;
-    proto$1.relativeTime = relativeTime;
-    proto$1.pastFuture = pastFuture;
-    proto$1.set = set;
-    proto$1.eras = localeEras;
-    proto$1.erasParse = localeErasParse;
-    proto$1.erasConvertYear = localeErasConvertYear;
-    proto$1.erasAbbrRegex = erasAbbrRegex;
-    proto$1.erasNameRegex = erasNameRegex;
-    proto$1.erasNarrowRegex = erasNarrowRegex;
-
-    proto$1.months = localeMonths;
-    proto$1.monthsShort = localeMonthsShort;
-    proto$1.monthsParse = localeMonthsParse;
-    proto$1.monthsRegex = monthsRegex;
-    proto$1.monthsShortRegex = monthsShortRegex;
-    proto$1.week = localeWeek;
-    proto$1.firstDayOfYear = localeFirstDayOfYear;
-    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
-
-    proto$1.weekdays = localeWeekdays;
-    proto$1.weekdaysMin = localeWeekdaysMin;
-    proto$1.weekdaysShort = localeWeekdaysShort;
-    proto$1.weekdaysParse = localeWeekdaysParse;
-
-    proto$1.weekdaysRegex = weekdaysRegex;
-    proto$1.weekdaysShortRegex = weekdaysShortRegex;
-    proto$1.weekdaysMinRegex = weekdaysMinRegex;
-
-    proto$1.isPM = localeIsPM;
-    proto$1.meridiem = localeMeridiem;
-
-    function get$1(format, index, field, setter) {
-        var locale = getLocale(),
-            utc = createUTC().set(setter, index);
-        return locale[field](utc, format);
-    }
-
-    function listMonthsImpl(format, index, field) {
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-
-        if (index != null) {
-            return get$1(format, index, field, 'month');
-        }
-
-        var i,
-            out = [];
-        for (i = 0; i < 12; i++) {
-            out[i] = get$1(format, i, field, 'month');
-        }
-        return out;
-    }
-
-    // ()
-    // (5)
-    // (fmt, 5)
-    // (fmt)
-    // (true)
-    // (true, 5)
-    // (true, fmt, 5)
-    // (true, fmt)
-    function listWeekdaysImpl(localeSorted, format, index, field) {
-        if (typeof localeSorted === 'boolean') {
-            if (isNumber(format)) {
-                index = format;
-                format = undefined;
-            }
-
-            format = format || '';
-        } else {
-            format = localeSorted;
-            index = format;
-            localeSorted = false;
-
-            if (isNumber(format)) {
-                index = format;
-                format = undefined;
-            }
-
-            format = format || '';
-        }
-
-        var locale = getLocale(),
-            shift = localeSorted ? locale._week.dow : 0,
-            i,
-            out = [];
-
-        if (index != null) {
-            return get$1(format, (index + shift) % 7, field, 'day');
-        }
-
-        for (i = 0; i < 7; i++) {
-            out[i] = get$1(format, (i + shift) % 7, field, 'day');
-        }
-        return out;
-    }
-
-    function listMonths(format, index) {
-        return listMonthsImpl(format, index, 'months');
-    }
-
-    function listMonthsShort(format, index) {
-        return listMonthsImpl(format, index, 'monthsShort');
-    }
-
-    function listWeekdays(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
-    }
-
-    function listWeekdaysShort(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
-    }
-
-    function listWeekdaysMin(localeSorted, format, index) {
-        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
-    }
-
-    getSetGlobalLocale('en', {
-        eras: [
-            {
-                since: '0001-01-01',
-                until: +Infinity,
-                offset: 1,
-                name: 'Anno Domini',
-                narrow: 'AD',
-                abbr: 'AD',
-            },
-            {
-                since: '0000-12-31',
-                until: -Infinity,
-                offset: 1,
-                name: 'Before Christ',
-                narrow: 'BC',
-                abbr: 'BC',
-            },
-        ],
-        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-        ordinal: function (number) {
-            var b = number % 10,
-                output =
-                    toInt((number % 100) / 10) === 1
-                        ? 'th'
-                        : b === 1
-                          ? 'st'
-                          : b === 2
-                            ? 'nd'
-                            : b === 3
-                              ? 'rd'
-                              : 'th';
-            return number + output;
-        },
-    });
-
-    // Side effect imports
-
-    hooks.lang = deprecate(
-        'moment.lang is deprecated. Use moment.locale instead.',
-        getSetGlobalLocale
-    );
-    hooks.langData = deprecate(
-        'moment.langData is deprecated. Use moment.localeData instead.',
-        getLocale
-    );
-
-    var mathAbs = Math.abs;
-
-    function abs() {
-        var data = this._data;
-
-        this._milliseconds = mathAbs(this._milliseconds);
-        this._days = mathAbs(this._days);
-        this._months = mathAbs(this._months);
-
-        data.milliseconds = mathAbs(data.milliseconds);
-        data.seconds = mathAbs(data.seconds);
-        data.minutes = mathAbs(data.minutes);
-        data.hours = mathAbs(data.hours);
-        data.months = mathAbs(data.months);
-        data.years = mathAbs(data.years);
-
-        return this;
-    }
-
-    function addSubtract$1(duration, input, value, direction) {
-        var other = createDuration(input, value);
-
-        duration._milliseconds += direction * other._milliseconds;
-        duration._days += direction * other._days;
-        duration._months += direction * other._months;
-
-        return duration._bubble();
-    }
-
-    // supports only 2.0-style add(1, 's') or add(duration)
-    function add$1(input, value) {
-        return addSubtract$1(this, input, value, 1);
-    }
-
-    // supports only 2.0-style subtract(1, 's') or subtract(duration)
-    function subtract$1(input, value) {
-        return addSubtract$1(this, input, value, -1);
-    }
-
-    function absCeil(number) {
-        if (number < 0) {
-            return Math.floor(number);
-        } else {
-            return Math.ceil(number);
-        }
-    }
-
-    function bubble() {
-        var milliseconds = this._milliseconds,
-            days = this._days,
-            months = this._months,
-            data = this._data,
-            seconds,
-            minutes,
-            hours,
-            years,
-            monthsFromDays;
-
-        // if we have a mix of positive and negative values, bubble down first
-        // check: https://github.com/moment/moment/issues/2166
-        if (
-            !(
-                (milliseconds >= 0 && days >= 0 && months >= 0) ||
-                (milliseconds <= 0 && days <= 0 && months <= 0)
-            )
-        ) {
-            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
-            days = 0;
-            months = 0;
-        }
-
-        // The following code bubbles up values, see the tests for
-        // examples of what that means.
-        data.milliseconds = milliseconds % 1000;
-
-        seconds = absFloor(milliseconds / 1000);
-        data.seconds = seconds % 60;
-
-        minutes = absFloor(seconds / 60);
-        data.minutes = minutes % 60;
-
-        hours = absFloor(minutes / 60);
-        data.hours = hours % 24;
-
-        days += absFloor(hours / 24);
-
-        // convert days to months
-        monthsFromDays = absFloor(daysToMonths(days));
-        months += monthsFromDays;
-        days -= absCeil(monthsToDays(monthsFromDays));
-
-        // 12 months -> 1 year
-        years = absFloor(months / 12);
-        months %= 12;
-
-        data.days = days;
-        data.months = months;
-        data.years = years;
-
-        return this;
-    }
-
-    function daysToMonths(days) {
-        // 400 years have 146097 days (taking into account leap year rules)
-        // 400 years have 12 months === 4800
-        return (days * 4800) / 146097;
-    }
-
-    function monthsToDays(months) {
-        // the reverse of daysToMonths
-        return (months * 146097) / 4800;
-    }
-
-    function as(units) {
-        if (!this.isValid()) {
-            return NaN;
-        }
-        var days,
-            months,
-            milliseconds = this._milliseconds;
-
-        units = normalizeUnits(units);
-
-        if (units === 'month' || units === 'quarter' || units === 'year') {
-            days = this._days + milliseconds / 864e5;
-            months = this._months + daysToMonths(days);
-            switch (units) {
-                case 'month':
-                    return months;
-                case 'quarter':
-                    return months / 3;
-                case 'year':
-                    return months / 12;
-            }
-        } else {
-            // handle milliseconds separately because of floating point math errors (issue #1867)
-            days = this._days + Math.round(monthsToDays(this._months));
-            switch (units) {
-                case 'week':
-                    return days / 7 + milliseconds / 6048e5;
-                case 'day':
-                    return days + milliseconds / 864e5;
-                case 'hour':
-                    return days * 24 + milliseconds / 36e5;
-                case 'minute':
-                    return days * 1440 + milliseconds / 6e4;
-                case 'second':
-                    return days * 86400 + milliseconds / 1000;
-                // Math.floor prevents floating point math errors here
-                case 'millisecond':
-                    return Math.floor(days * 864e5) + milliseconds;
-                default:
-                    throw new Error('Unknown unit ' + units);
-            }
-        }
-    }
-
-    function makeAs(alias) {
-        return function () {
-            return this.as(alias);
-        };
-    }
-
-    var asMilliseconds = makeAs('ms'),
-        asSeconds = makeAs('s'),
-        asMinutes = makeAs('m'),
-        asHours = makeAs('h'),
-        asDays = makeAs('d'),
-        asWeeks = makeAs('w'),
-        asMonths = makeAs('M'),
-        asQuarters = makeAs('Q'),
-        asYears = makeAs('y'),
-        valueOf$1 = asMilliseconds;
-
-    function clone$1() {
-        return createDuration(this);
-    }
-
-    function get$2(units) {
-        units = normalizeUnits(units);
-        return this.isValid() ? this[units + 's']() : NaN;
-    }
-
-    function makeGetter(name) {
-        return function () {
-            return this.isValid() ? this._data[name] : NaN;
-        };
-    }
-
-    var milliseconds = makeGetter('milliseconds'),
-        seconds = makeGetter('seconds'),
-        minutes = makeGetter('minutes'),
-        hours = makeGetter('hours'),
-        days = makeGetter('days'),
-        months = makeGetter('months'),
-        years = makeGetter('years');
-
-    function weeks() {
-        return absFloor(this.days() / 7);
-    }
-
-    var round = Math.round,
-        thresholds = {
-            ss: 44, // a few seconds to seconds
-            s: 45, // seconds to minute
-            m: 45, // minutes to hour
-            h: 22, // hours to day
-            d: 26, // days to month/week
-            w: null, // weeks to month
-            M: 11, // months to year
-        };
-
-    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
-        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
-    }
-
-    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
-        var duration = createDuration(posNegDuration).abs(),
-            seconds = round(duration.as('s')),
-            minutes = round(duration.as('m')),
-            hours = round(duration.as('h')),
-            days = round(duration.as('d')),
-            months = round(duration.as('M')),
-            weeks = round(duration.as('w')),
-            years = round(duration.as('y')),
-            a =
-                (seconds <= thresholds.ss && ['s', seconds]) ||
-                (seconds < thresholds.s && ['ss', seconds]) ||
-                (minutes <= 1 && ['m']) ||
-                (minutes < thresholds.m && ['mm', minutes]) ||
-                (hours <= 1 && ['h']) ||
-                (hours < thresholds.h && ['hh', hours]) ||
-                (days <= 1 && ['d']) ||
-                (days < thresholds.d && ['dd', days]);
-
-        if (thresholds.w != null) {
-            a =
-                a ||
-                (weeks <= 1 && ['w']) ||
-                (weeks < thresholds.w && ['ww', weeks]);
-        }
-        a = a ||
-            (months <= 1 && ['M']) ||
-            (months < thresholds.M && ['MM', months]) ||
-            (years <= 1 && ['y']) || ['yy', years];
-
-        a[2] = withoutSuffix;
-        a[3] = +posNegDuration > 0;
-        a[4] = locale;
-        return substituteTimeAgo.apply(null, a);
-    }
-
-    // This function allows you to set the rounding function for relative time strings
-    function getSetRelativeTimeRounding(roundingFunction) {
-        if (roundingFunction === undefined) {
-            return round;
-        }
-        if (typeof roundingFunction === 'function') {
-            round = roundingFunction;
-            return true;
-        }
-        return false;
-    }
-
-    // This function allows you to set a threshold for relative time strings
-    function getSetRelativeTimeThreshold(threshold, limit) {
-        if (thresholds[threshold] === undefined) {
-            return false;
-        }
-        if (limit === undefined) {
-            return thresholds[threshold];
-        }
-        thresholds[threshold] = limit;
-        if (threshold === 's') {
-            thresholds.ss = limit - 1;
-        }
-        return true;
-    }
-
-    function humanize(argWithSuffix, argThresholds) {
-        if (!this.isValid()) {
-            return this.localeData().invalidDate();
-        }
-
-        var withSuffix = false,
-            th = thresholds,
-            locale,
-            output;
-
-        if (typeof argWithSuffix === 'object') {
-            argThresholds = argWithSuffix;
-            argWithSuffix = false;
-        }
-        if (typeof argWithSuffix === 'boolean') {
-            withSuffix = argWithSuffix;
-        }
-        if (typeof argThresholds === 'object') {
-            th = Object.assign({}, thresholds, argThresholds);
-            if (argThresholds.s != null && argThresholds.ss == null) {
-                th.ss = argThresholds.s - 1;
-            }
-        }
-
-        locale = this.localeData();
-        output = relativeTime$1(this, !withSuffix, th, locale);
-
-        if (withSuffix) {
-            output = locale.pastFuture(+this, output);
-        }
-
-        return locale.postformat(output);
-    }
-
-    var abs$1 = Math.abs;
-
-    function sign(x) {
-        return (x > 0) - (x < 0) || +x;
-    }
-
-    function toISOString$1() {
-        // for ISO strings we do not use the normal bubbling rules:
-        //  * milliseconds bubble up until they become hours
-        //  * days do not bubble at all
-        //  * months bubble up until they become years
-        // This is because there is no context-free conversion between hours and days
-        // (think of clock changes)
-        // and also not between days and months (28-31 days per month)
-        if (!this.isValid()) {
-            return this.localeData().invalidDate();
-        }
-
-        var seconds = abs$1(this._milliseconds) / 1000,
-            days = abs$1(this._days),
-            months = abs$1(this._months),
-            minutes,
-            hours,
-            years,
-            s,
-            total = this.asSeconds(),
-            totalSign,
-            ymSign,
-            daysSign,
-            hmsSign;
-
-        if (!total) {
-            // this is the same as C#'s (Noda) and python (isodate)...
-            // but not other JS (goog.date)
-            return 'P0D';
-        }
-
-        // 3600 seconds -> 60 minutes -> 1 hour
-        minutes = absFloor(seconds / 60);
-        hours = absFloor(minutes / 60);
-        seconds %= 60;
-        minutes %= 60;
-
-        // 12 months -> 1 year
-        years = absFloor(months / 12);
-        months %= 12;
-
-        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
-
-        totalSign = total < 0 ? '-' : '';
-        ymSign = sign(this._months) !== sign(total) ? '-' : '';
-        daysSign = sign(this._days) !== sign(total) ? '-' : '';
-        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
-
-        return (
-            totalSign +
-            'P' +
-            (years ? ymSign + years + 'Y' : '') +
-            (months ? ymSign + months + 'M' : '') +
-            (days ? daysSign + days + 'D' : '') +
-            (hours || minutes || seconds ? 'T' : '') +
-            (hours ? hmsSign + hours + 'H' : '') +
-            (minutes ? hmsSign + minutes + 'M' : '') +
-            (seconds ? hmsSign + s + 'S' : '')
-        );
-    }
-
-    var proto$2 = Duration.prototype;
-
-    proto$2.isValid = isValid$1;
-    proto$2.abs = abs;
-    proto$2.add = add$1;
-    proto$2.subtract = subtract$1;
-    proto$2.as = as;
-    proto$2.asMilliseconds = asMilliseconds;
-    proto$2.asSeconds = asSeconds;
-    proto$2.asMinutes = asMinutes;
-    proto$2.asHours = asHours;
-    proto$2.asDays = asDays;
-    proto$2.asWeeks = asWeeks;
-    proto$2.asMonths = asMonths;
-    proto$2.asQuarters = asQuarters;
-    proto$2.asYears = asYears;
-    proto$2.valueOf = valueOf$1;
-    proto$2._bubble = bubble;
-    proto$2.clone = clone$1;
-    proto$2.get = get$2;
-    proto$2.milliseconds = milliseconds;
-    proto$2.seconds = seconds;
-    proto$2.minutes = minutes;
-    proto$2.hours = hours;
-    proto$2.days = days;
-    proto$2.weeks = weeks;
-    proto$2.months = months;
-    proto$2.years = years;
-    proto$2.humanize = humanize;
-    proto$2.toISOString = toISOString$1;
-    proto$2.toString = toISOString$1;
-    proto$2.toJSON = toISOString$1;
-    proto$2.locale = locale;
-    proto$2.localeData = localeData;
-
-    proto$2.toIsoString = deprecate(
-        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
-        toISOString$1
-    );
-    proto$2.lang = lang;
-
-    // FORMATTING
-
-    addFormatToken('X', 0, 0, 'unix');
-    addFormatToken('x', 0, 0, 'valueOf');
-
-    // PARSING
-
-    addRegexToken('x', matchSigned);
-    addRegexToken('X', matchTimestamp);
-    addParseToken('X', function (input, array, config) {
-        config._d = new Date(parseFloat(input) * 1000);
-    });
-    addParseToken('x', function (input, array, config) {
-        config._d = new Date(toInt(input));
-    });
-
-    //! moment.js
-
-    hooks.version = '2.30.1';
-
-    setHookCallback(createLocal);
-
-    hooks.fn = proto;
-    hooks.min = min;
-    hooks.max = max;
-    hooks.now = now;
-    hooks.utc = createUTC;
-    hooks.unix = createUnix;
-    hooks.months = listMonths;
-    hooks.isDate = isDate;
-    hooks.locale = getSetGlobalLocale;
-    hooks.invalid = createInvalid;
-    hooks.duration = createDuration;
-    hooks.isMoment = isMoment;
-    hooks.weekdays = listWeekdays;
-    hooks.parseZone = createInZone;
-    hooks.localeData = getLocale;
-    hooks.isDuration = isDuration;
-    hooks.monthsShort = listMonthsShort;
-    hooks.weekdaysMin = listWeekdaysMin;
-    hooks.defineLocale = defineLocale;
-    hooks.updateLocale = updateLocale;
-    hooks.locales = listLocales;
-    hooks.weekdaysShort = listWeekdaysShort;
-    hooks.normalizeUnits = normalizeUnits;
-    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
-    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
-    hooks.calendarFormat = getCalendarFormat;
-    hooks.prototype = proto;
-
-    // currently HTML5 input type only supports 24-hour formats
-    hooks.HTML5_FMT = {
-        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
-        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
-        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
-        DATE: 'YYYY-MM-DD', // <input type="date" />
-        TIME: 'HH:mm', // <input type="time" />
-        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
-        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
-        WEEK: 'GGGG-[W]WW', // <input type="week" />
-        MONTH: 'YYYY-MM', // <input type="month" />
-    };
-
-    return hooks;
-
-})));
Index: ckend/node_modules/moment/package.js
===================================================================
--- backend/node_modules/moment/package.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-var profile = {
-    resourceTags: {
-        ignore: function(filename, mid){
-            // only include moment/moment
-            return mid != "moment/moment";
-        },
-        amd: function(filename, mid){
-            return /\.js$/.test(filename);
-        }
-    }
-};
Index: ckend/node_modules/moment/package.json
===================================================================
--- backend/node_modules/moment/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,116 +1,0 @@
-{
-    "name": "moment",
-    "version": "2.30.1",
-    "description": "Parse, validate, manipulate, and display dates",
-    "homepage": "https://momentjs.com",
-    "author": "Iskren Ivov Chernev <iskren.chernev@gmail.com> (https://github.com/ichernev)",
-    "contributors": [
-        "Tim Wood <washwithcare@gmail.com> (http://timwoodcreates.com/)",
-        "Rocky Meza (http://rockymeza.com)",
-        "Matt Johnson <mj1856@hotmail.com> (http://codeofmatt.com)",
-        "Isaac Cambron <isaac@isaaccambron.com> (http://isaaccambron.com)",
-        "Andre Polykanine <andre@oire.org> (https://github.com/oire)"
-    ],
-    "keywords": [
-        "moment",
-        "date",
-        "time",
-        "parse",
-        "format",
-        "validate",
-        "i18n",
-        "l10n",
-        "ender"
-    ],
-    "main": "./moment.js",
-    "jsnext:main": "./dist/moment.js",
-    "typings": "./moment.d.ts",
-    "typesVersions": {
-        ">=3.1": {
-            "*": [
-                "ts3.1-typings/*"
-            ],
-            "min/moment-with-locales": [
-                "ts3.1-typings/moment.d.ts"
-            ]
-        }
-    },
-    "engines": {
-        "node": "*"
-    },
-    "repository": {
-        "type": "git",
-        "url": "https://github.com/moment/moment.git"
-    },
-    "bugs": {
-        "url": "https://github.com/moment/moment/issues"
-    },
-    "license": "MIT",
-    "devDependencies": {
-        "benchmark": "latest",
-        "coveralls": "latest",
-        "cross-env": "^6.0.3",
-        "es6-promise": "latest",
-        "eslint": "latest",
-        "grunt": "latest",
-        "grunt-benchmark": "latest",
-        "grunt-cli": "latest",
-        "grunt-contrib-clean": "latest",
-        "grunt-contrib-concat": "latest",
-        "grunt-contrib-copy": "latest",
-        "grunt-contrib-uglify": "latest",
-        "grunt-contrib-watch": "latest",
-        "grunt-env": "latest",
-        "grunt-exec": "latest",
-        "grunt-karma": "latest",
-        "grunt-nuget": "latest",
-        "grunt-string-replace": "latest",
-        "karma": "latest",
-        "karma-chrome-launcher": "latest",
-        "karma-firefox-launcher": "latest",
-        "karma-qunit": "latest",
-        "karma-sauce-launcher": "4.1.4",
-        "load-grunt-tasks": "latest",
-        "lodash": ">=4.17.19",
-        "node-qunit": "latest",
-        "nyc": "latest",
-        "prettier": "latest",
-        "qunit": "^2.10.0",
-        "rollup": "2.17.1",
-        "typescript": "^1.8.10",
-        "typescript3": "npm:typescript@^3.1.6",
-        "uglify-js": "latest",
-        "@types/node": "17.0.21"
-    },
-    "ender": "./ender.js",
-    "dojoBuild": "package.js",
-    "jspm": {
-        "files": [
-            "moment.js",
-            "moment.d.ts",
-            "locale"
-        ],
-        "map": {
-            "moment": "./moment"
-        },
-        "buildConfig": {
-            "uglify": true
-        }
-    },
-    "scripts": {
-        "ts3.1-typescript-test": "cross-env node_modules/typescript3/bin/tsc --project ts3.1-typing-tests",
-        "typescript-test": "cross-env node_modules/typescript/bin/tsc --project typing-tests",
-        "test": "grunt test",
-        "eslint": "eslint Gruntfile.js tasks src",
-        "prettier-check": "prettier --check Gruntfile.js tasks src",
-        "prettier-fmt": "prettier --write Gruntfile.js tasks src",
-        "coverage": "nyc npm test && nyc report",
-        "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls"
-    },
-    "spm": {
-        "main": "moment.js",
-        "output": [
-            "locale/*.js"
-        ]
-    }
-}
Index: ckend/node_modules/moment/src/lib/create/check-overflow.js
===================================================================
--- backend/node_modules/moment/src/lib/create/check-overflow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-import { daysInMonth } from '../units/month';
-import {
-    YEAR,
-    MONTH,
-    DATE,
-    HOUR,
-    MINUTE,
-    SECOND,
-    MILLISECOND,
-    WEEK,
-    WEEKDAY,
-} from '../units/constants';
-import getParsingFlags from '../create/parsing-flags';
-
-export default function checkOverflow(m) {
-    var overflow,
-        a = m._a;
-
-    if (a && getParsingFlags(m).overflow === -2) {
-        overflow =
-            a[MONTH] < 0 || a[MONTH] > 11
-                ? MONTH
-                : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
-                  ? DATE
-                  : a[HOUR] < 0 ||
-                      a[HOUR] > 24 ||
-                      (a[HOUR] === 24 &&
-                          (a[MINUTE] !== 0 ||
-                              a[SECOND] !== 0 ||
-                              a[MILLISECOND] !== 0))
-                    ? HOUR
-                    : a[MINUTE] < 0 || a[MINUTE] > 59
-                      ? MINUTE
-                      : a[SECOND] < 0 || a[SECOND] > 59
-                        ? SECOND
-                        : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
-                          ? MILLISECOND
-                          : -1;
-
-        if (
-            getParsingFlags(m)._overflowDayOfYear &&
-            (overflow < YEAR || overflow > DATE)
-        ) {
-            overflow = DATE;
-        }
-        if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
-            overflow = WEEK;
-        }
-        if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
-            overflow = WEEKDAY;
-        }
-
-        getParsingFlags(m).overflow = overflow;
-    }
-
-    return m;
-}
Index: ckend/node_modules/moment/src/lib/create/date-from-array.js
===================================================================
--- backend/node_modules/moment/src/lib/create/date-from-array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-export function createDate(y, m, d, h, M, s, ms) {
-    // can't just apply() to create a date:
-    // https://stackoverflow.com/q/181348
-    var date;
-    // the date constructor remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        date = new Date(y + 400, m, d, h, M, s, ms);
-        if (isFinite(date.getFullYear())) {
-            date.setFullYear(y);
-        }
-    } else {
-        date = new Date(y, m, d, h, M, s, ms);
-    }
-
-    return date;
-}
-
-export function createUTCDate(y) {
-    var date, args;
-    // the Date.UTC function remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        args = Array.prototype.slice.call(arguments);
-        // preserve leap years using a full 400 year cycle, then reset
-        args[0] = y + 400;
-        date = new Date(Date.UTC.apply(null, args));
-        if (isFinite(date.getUTCFullYear())) {
-            date.setUTCFullYear(y);
-        }
-    } else {
-        date = new Date(Date.UTC.apply(null, arguments));
-    }
-
-    return date;
-}
Index: ckend/node_modules/moment/src/lib/create/from-anything.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-anything.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-import isArray from '../utils/is-array';
-import isObject from '../utils/is-object';
-import isObjectEmpty from '../utils/is-object-empty';
-import isUndefined from '../utils/is-undefined';
-import isNumber from '../utils/is-number';
-import isDate from '../utils/is-date';
-import map from '../utils/map';
-import { createInvalid } from './valid';
-import { Moment, isMoment } from '../moment/constructor';
-import { getLocale } from '../locale/locales';
-import { hooks } from '../utils/hooks';
-import checkOverflow from './check-overflow';
-import { isValid } from './valid';
-
-import { configFromStringAndArray } from './from-string-and-array';
-import { configFromStringAndFormat } from './from-string-and-format';
-import { configFromString } from './from-string';
-import { configFromArray } from './from-array';
-import { configFromObject } from './from-object';
-
-function createFromConfig(config) {
-    var res = new Moment(checkOverflow(prepareConfig(config)));
-    if (res._nextDay) {
-        // Adding is smart enough around DST
-        res.add(1, 'd');
-        res._nextDay = undefined;
-    }
-
-    return res;
-}
-
-export function prepareConfig(config) {
-    var input = config._i,
-        format = config._f;
-
-    config._locale = config._locale || getLocale(config._l);
-
-    if (input === null || (format === undefined && input === '')) {
-        return createInvalid({ nullInput: true });
-    }
-
-    if (typeof input === 'string') {
-        config._i = input = config._locale.preparse(input);
-    }
-
-    if (isMoment(input)) {
-        return new Moment(checkOverflow(input));
-    } else if (isDate(input)) {
-        config._d = input;
-    } else if (isArray(format)) {
-        configFromStringAndArray(config);
-    } else if (format) {
-        configFromStringAndFormat(config);
-    } else {
-        configFromInput(config);
-    }
-
-    if (!isValid(config)) {
-        config._d = null;
-    }
-
-    return config;
-}
-
-function configFromInput(config) {
-    var input = config._i;
-    if (isUndefined(input)) {
-        config._d = new Date(hooks.now());
-    } else if (isDate(input)) {
-        config._d = new Date(input.valueOf());
-    } else if (typeof input === 'string') {
-        configFromString(config);
-    } else if (isArray(input)) {
-        config._a = map(input.slice(0), function (obj) {
-            return parseInt(obj, 10);
-        });
-        configFromArray(config);
-    } else if (isObject(input)) {
-        configFromObject(config);
-    } else if (isNumber(input)) {
-        // from milliseconds
-        config._d = new Date(input);
-    } else {
-        hooks.createFromInputFallback(config);
-    }
-}
-
-export function createLocalOrUTC(input, format, locale, strict, isUTC) {
-    var c = {};
-
-    if (format === true || format === false) {
-        strict = format;
-        format = undefined;
-    }
-
-    if (locale === true || locale === false) {
-        strict = locale;
-        locale = undefined;
-    }
-
-    if (
-        (isObject(input) && isObjectEmpty(input)) ||
-        (isArray(input) && input.length === 0)
-    ) {
-        input = undefined;
-    }
-    // object construction must be done this way.
-    // https://github.com/moment/moment/issues/1423
-    c._isAMomentObject = true;
-    c._useUTC = c._isUTC = isUTC;
-    c._l = locale;
-    c._i = input;
-    c._f = format;
-    c._strict = strict;
-
-    return createFromConfig(c);
-}
Index: ckend/node_modules/moment/src/lib/create/from-array.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,187 +1,0 @@
-import { hooks } from '../utils/hooks';
-import { createDate, createUTCDate } from './date-from-array';
-import { daysInYear } from '../units/year';
-import {
-    weekOfYear,
-    weeksInYear,
-    dayOfYearFromWeeks,
-} from '../units/week-calendar-utils';
-import {
-    YEAR,
-    MONTH,
-    DATE,
-    HOUR,
-    MINUTE,
-    SECOND,
-    MILLISECOND,
-} from '../units/constants';
-import { createLocal } from './local';
-import defaults from '../utils/defaults';
-import getParsingFlags from './parsing-flags';
-
-function currentDateArray(config) {
-    // hooks is actually the exported moment object
-    var nowValue = new Date(hooks.now());
-    if (config._useUTC) {
-        return [
-            nowValue.getUTCFullYear(),
-            nowValue.getUTCMonth(),
-            nowValue.getUTCDate(),
-        ];
-    }
-    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
-}
-
-// convert an array to a date.
-// the array should mirror the parameters below
-// note: all values past the year are optional and will default to the lowest possible value.
-// [year, month, day , hour, minute, second, millisecond]
-export function configFromArray(config) {
-    var i,
-        date,
-        input = [],
-        currentDate,
-        expectedWeekday,
-        yearToUse;
-
-    if (config._d) {
-        return;
-    }
-
-    currentDate = currentDateArray(config);
-
-    //compute day of the year from weeks and weekdays
-    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
-        dayOfYearFromWeekInfo(config);
-    }
-
-    //if the day of the year is set, figure out what it is
-    if (config._dayOfYear != null) {
-        yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
-        if (
-            config._dayOfYear > daysInYear(yearToUse) ||
-            config._dayOfYear === 0
-        ) {
-            getParsingFlags(config)._overflowDayOfYear = true;
-        }
-
-        date = createUTCDate(yearToUse, 0, config._dayOfYear);
-        config._a[MONTH] = date.getUTCMonth();
-        config._a[DATE] = date.getUTCDate();
-    }
-
-    // Default to current date.
-    // * if no year, month, day of month are given, default to today
-    // * if day of month is given, default month and year
-    // * if month is given, default only year
-    // * if year is given, don't default anything
-    for (i = 0; i < 3 && config._a[i] == null; ++i) {
-        config._a[i] = input[i] = currentDate[i];
-    }
-
-    // Zero out whatever was not defaulted, including time
-    for (; i < 7; i++) {
-        config._a[i] = input[i] =
-            config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
-    }
-
-    // Check for 24:00:00.000
-    if (
-        config._a[HOUR] === 24 &&
-        config._a[MINUTE] === 0 &&
-        config._a[SECOND] === 0 &&
-        config._a[MILLISECOND] === 0
-    ) {
-        config._nextDay = true;
-        config._a[HOUR] = 0;
-    }
-
-    config._d = (config._useUTC ? createUTCDate : createDate).apply(
-        null,
-        input
-    );
-    expectedWeekday = config._useUTC
-        ? config._d.getUTCDay()
-        : config._d.getDay();
-
-    // Apply timezone offset from input. The actual utcOffset can be changed
-    // with parseZone.
-    if (config._tzm != null) {
-        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-    }
-
-    if (config._nextDay) {
-        config._a[HOUR] = 24;
-    }
-
-    // check for mismatching day of week
-    if (
-        config._w &&
-        typeof config._w.d !== 'undefined' &&
-        config._w.d !== expectedWeekday
-    ) {
-        getParsingFlags(config).weekdayMismatch = true;
-    }
-}
-
-function dayOfYearFromWeekInfo(config) {
-    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
-
-    w = config._w;
-    if (w.GG != null || w.W != null || w.E != null) {
-        dow = 1;
-        doy = 4;
-
-        // TODO: We need to take the current isoWeekYear, but that depends on
-        // how we interpret now (local, utc, fixed offset). So create
-        // a now version of current config (take local/utc/offset flags, and
-        // create now).
-        weekYear = defaults(
-            w.GG,
-            config._a[YEAR],
-            weekOfYear(createLocal(), 1, 4).year
-        );
-        week = defaults(w.W, 1);
-        weekday = defaults(w.E, 1);
-        if (weekday < 1 || weekday > 7) {
-            weekdayOverflow = true;
-        }
-    } else {
-        dow = config._locale._week.dow;
-        doy = config._locale._week.doy;
-
-        curWeek = weekOfYear(createLocal(), dow, doy);
-
-        weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
-
-        // Default to current week.
-        week = defaults(w.w, curWeek.week);
-
-        if (w.d != null) {
-            // weekday -- low day numbers are considered next week
-            weekday = w.d;
-            if (weekday < 0 || weekday > 6) {
-                weekdayOverflow = true;
-            }
-        } else if (w.e != null) {
-            // local weekday -- counting starts from beginning of week
-            weekday = w.e + dow;
-            if (w.e < 0 || w.e > 6) {
-                weekdayOverflow = true;
-            }
-        } else {
-            // default to beginning of week
-            weekday = dow;
-        }
-    }
-    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
-        getParsingFlags(config)._overflowWeeks = true;
-    } else if (weekdayOverflow != null) {
-        getParsingFlags(config)._overflowWeekday = true;
-    } else {
-        temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
-        config._a[YEAR] = temp.year;
-        config._dayOfYear = temp.dayOfYear;
-    }
-}
Index: ckend/node_modules/moment/src/lib/create/from-object.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-object.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { normalizeObjectUnits } from '../units/aliases';
-import { configFromArray } from './from-array';
-import map from '../utils/map';
-
-export function configFromObject(config) {
-    if (config._d) {
-        return;
-    }
-
-    var i = normalizeObjectUnits(config._i),
-        dayOrDate = i.day === undefined ? i.date : i.day;
-    config._a = map(
-        [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
-        function (obj) {
-            return obj && parseInt(obj, 10);
-        }
-    );
-
-    configFromArray(config);
-}
Index: ckend/node_modules/moment/src/lib/create/from-string-and-array.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-string-and-array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-import { copyConfig } from '../moment/constructor';
-import { configFromStringAndFormat } from './from-string-and-format';
-import getParsingFlags from './parsing-flags';
-import { isValid } from './valid';
-import extend from '../utils/extend';
-
-// date from string and array of format strings
-export function configFromStringAndArray(config) {
-    var tempConfig,
-        bestMoment,
-        scoreToBeat,
-        i,
-        currentScore,
-        validFormatFound,
-        bestFormatIsValid = false,
-        configfLen = config._f.length;
-
-    if (configfLen === 0) {
-        getParsingFlags(config).invalidFormat = true;
-        config._d = new Date(NaN);
-        return;
-    }
-
-    for (i = 0; i < configfLen; i++) {
-        currentScore = 0;
-        validFormatFound = false;
-        tempConfig = copyConfig({}, config);
-        if (config._useUTC != null) {
-            tempConfig._useUTC = config._useUTC;
-        }
-        tempConfig._f = config._f[i];
-        configFromStringAndFormat(tempConfig);
-
-        if (isValid(tempConfig)) {
-            validFormatFound = true;
-        }
-
-        // if there is any input that was not parsed add a penalty for that format
-        currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
-        //or tokens
-        currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
-        getParsingFlags(tempConfig).score = currentScore;
-
-        if (!bestFormatIsValid) {
-            if (
-                scoreToBeat == null ||
-                currentScore < scoreToBeat ||
-                validFormatFound
-            ) {
-                scoreToBeat = currentScore;
-                bestMoment = tempConfig;
-                if (validFormatFound) {
-                    bestFormatIsValid = true;
-                }
-            }
-        } else {
-            if (currentScore < scoreToBeat) {
-                scoreToBeat = currentScore;
-                bestMoment = tempConfig;
-            }
-        }
-    }
-
-    extend(config, bestMoment || tempConfig);
-}
Index: ckend/node_modules/moment/src/lib/create/from-string-and-format.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-string-and-format.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-import { configFromISO, configFromRFC2822 } from './from-string';
-import { configFromArray } from './from-array';
-import { getParseRegexForToken } from '../parse/regex';
-import { addTimeToArrayFromToken } from '../parse/token';
-import {
-    expandFormat,
-    formatTokenFunctions,
-    formattingTokens,
-} from '../format/format';
-import checkOverflow from './check-overflow';
-import { YEAR, HOUR } from '../units/constants';
-import { hooks } from '../utils/hooks';
-import getParsingFlags from './parsing-flags';
-
-// constant that refers to the ISO standard
-hooks.ISO_8601 = function () {};
-
-// constant that refers to the RFC 2822 form
-hooks.RFC_2822 = function () {};
-
-// date from string and format string
-export function configFromStringAndFormat(config) {
-    // TODO: Move this to another part of the creation flow to prevent circular deps
-    if (config._f === hooks.ISO_8601) {
-        configFromISO(config);
-        return;
-    }
-    if (config._f === hooks.RFC_2822) {
-        configFromRFC2822(config);
-        return;
-    }
-    config._a = [];
-    getParsingFlags(config).empty = true;
-
-    // This array is used to make a Date, either with `new Date` or `Date.UTC`
-    var string = '' + config._i,
-        i,
-        parsedInput,
-        tokens,
-        token,
-        skipped,
-        stringLength = string.length,
-        totalParsedInputLength = 0,
-        era,
-        tokenLen;
-
-    tokens =
-        expandFormat(config._f, config._locale).match(formattingTokens) || [];
-    tokenLen = tokens.length;
-    for (i = 0; i < tokenLen; i++) {
-        token = tokens[i];
-        parsedInput = (string.match(getParseRegexForToken(token, config)) ||
-            [])[0];
-        if (parsedInput) {
-            skipped = string.substr(0, string.indexOf(parsedInput));
-            if (skipped.length > 0) {
-                getParsingFlags(config).unusedInput.push(skipped);
-            }
-            string = string.slice(
-                string.indexOf(parsedInput) + parsedInput.length
-            );
-            totalParsedInputLength += parsedInput.length;
-        }
-        // don't parse if it's not a known token
-        if (formatTokenFunctions[token]) {
-            if (parsedInput) {
-                getParsingFlags(config).empty = false;
-            } else {
-                getParsingFlags(config).unusedTokens.push(token);
-            }
-            addTimeToArrayFromToken(token, parsedInput, config);
-        } else if (config._strict && !parsedInput) {
-            getParsingFlags(config).unusedTokens.push(token);
-        }
-    }
-
-    // add remaining unparsed input length to the string
-    getParsingFlags(config).charsLeftOver =
-        stringLength - totalParsedInputLength;
-    if (string.length > 0) {
-        getParsingFlags(config).unusedInput.push(string);
-    }
-
-    // clear _12h flag if hour is <= 12
-    if (
-        config._a[HOUR] <= 12 &&
-        getParsingFlags(config).bigHour === true &&
-        config._a[HOUR] > 0
-    ) {
-        getParsingFlags(config).bigHour = undefined;
-    }
-
-    getParsingFlags(config).parsedDateParts = config._a.slice(0);
-    getParsingFlags(config).meridiem = config._meridiem;
-    // handle meridiem
-    config._a[HOUR] = meridiemFixWrap(
-        config._locale,
-        config._a[HOUR],
-        config._meridiem
-    );
-
-    // handle era
-    era = getParsingFlags(config).era;
-    if (era !== null) {
-        config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
-    }
-
-    configFromArray(config);
-    checkOverflow(config);
-}
-
-function meridiemFixWrap(locale, hour, meridiem) {
-    var isPm;
-
-    if (meridiem == null) {
-        // nothing to do
-        return hour;
-    }
-    if (locale.meridiemHour != null) {
-        return locale.meridiemHour(hour, meridiem);
-    } else if (locale.isPM != null) {
-        // Fallback
-        isPm = locale.isPM(meridiem);
-        if (isPm && hour < 12) {
-            hour += 12;
-        }
-        if (!isPm && hour === 12) {
-            hour = 0;
-        }
-        return hour;
-    } else {
-        // this is not supposed to happen
-        return hour;
-    }
-}
Index: ckend/node_modules/moment/src/lib/create/from-string.js
===================================================================
--- backend/node_modules/moment/src/lib/create/from-string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,258 +1,0 @@
-import { configFromStringAndFormat } from './from-string-and-format';
-import { createUTCDate } from './date-from-array';
-import { hooks } from '../utils/hooks';
-import { deprecate } from '../utils/deprecate';
-import getParsingFlags from './parsing-flags';
-import { defaultLocaleMonthsShort } from '../units/month';
-import { defaultLocaleWeekdaysShort } from '../units/day-of-week';
-
-// iso 8601 regex
-// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
-var extendedIsoRegex =
-        /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-    basicIsoRegex =
-        /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
-    tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
-    isoDates = [
-        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
-        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
-        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
-        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
-        ['YYYY-DDD', /\d{4}-\d{3}/],
-        ['YYYY-MM', /\d{4}-\d\d/, false],
-        ['YYYYYYMMDD', /[+-]\d{10}/],
-        ['YYYYMMDD', /\d{8}/],
-        ['GGGG[W]WWE', /\d{4}W\d{3}/],
-        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
-        ['YYYYDDD', /\d{7}/],
-        ['YYYYMM', /\d{6}/, false],
-        ['YYYY', /\d{4}/, false],
-    ],
-    // iso time formats and regexes
-    isoTimes = [
-        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
-        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
-        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
-        ['HH:mm', /\d\d:\d\d/],
-        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
-        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
-        ['HHmmss', /\d\d\d\d\d\d/],
-        ['HHmm', /\d\d\d\d/],
-        ['HH', /\d\d/],
-    ],
-    aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
-    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
-    rfc2822 =
-        /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
-    obsOffsets = {
-        UT: 0,
-        GMT: 0,
-        EDT: -4 * 60,
-        EST: -5 * 60,
-        CDT: -5 * 60,
-        CST: -6 * 60,
-        MDT: -6 * 60,
-        MST: -7 * 60,
-        PDT: -7 * 60,
-        PST: -8 * 60,
-    };
-
-// date from iso format
-export function configFromISO(config) {
-    var i,
-        l,
-        string = config._i,
-        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
-        allowTime,
-        dateFormat,
-        timeFormat,
-        tzFormat,
-        isoDatesLen = isoDates.length,
-        isoTimesLen = isoTimes.length;
-
-    if (match) {
-        getParsingFlags(config).iso = true;
-        for (i = 0, l = isoDatesLen; i < l; i++) {
-            if (isoDates[i][1].exec(match[1])) {
-                dateFormat = isoDates[i][0];
-                allowTime = isoDates[i][2] !== false;
-                break;
-            }
-        }
-        if (dateFormat == null) {
-            config._isValid = false;
-            return;
-        }
-        if (match[3]) {
-            for (i = 0, l = isoTimesLen; i < l; i++) {
-                if (isoTimes[i][1].exec(match[3])) {
-                    // match[2] should be 'T' or space
-                    timeFormat = (match[2] || ' ') + isoTimes[i][0];
-                    break;
-                }
-            }
-            if (timeFormat == null) {
-                config._isValid = false;
-                return;
-            }
-        }
-        if (!allowTime && timeFormat != null) {
-            config._isValid = false;
-            return;
-        }
-        if (match[4]) {
-            if (tzRegex.exec(match[4])) {
-                tzFormat = 'Z';
-            } else {
-                config._isValid = false;
-                return;
-            }
-        }
-        config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
-        configFromStringAndFormat(config);
-    } else {
-        config._isValid = false;
-    }
-}
-
-function extractFromRFC2822Strings(
-    yearStr,
-    monthStr,
-    dayStr,
-    hourStr,
-    minuteStr,
-    secondStr
-) {
-    var result = [
-        untruncateYear(yearStr),
-        defaultLocaleMonthsShort.indexOf(monthStr),
-        parseInt(dayStr, 10),
-        parseInt(hourStr, 10),
-        parseInt(minuteStr, 10),
-    ];
-
-    if (secondStr) {
-        result.push(parseInt(secondStr, 10));
-    }
-
-    return result;
-}
-
-function untruncateYear(yearStr) {
-    var year = parseInt(yearStr, 10);
-    if (year <= 49) {
-        return 2000 + year;
-    } else if (year <= 999) {
-        return 1900 + year;
-    }
-    return year;
-}
-
-function preprocessRFC2822(s) {
-    // Remove comments and folding whitespace and replace multiple-spaces with a single space
-    return s
-        .replace(/\([^()]*\)|[\n\t]/g, ' ')
-        .replace(/(\s\s+)/g, ' ')
-        .replace(/^\s\s*/, '')
-        .replace(/\s\s*$/, '');
-}
-
-function checkWeekday(weekdayStr, parsedInput, config) {
-    if (weekdayStr) {
-        // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
-        var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
-            weekdayActual = new Date(
-                parsedInput[0],
-                parsedInput[1],
-                parsedInput[2]
-            ).getDay();
-        if (weekdayProvided !== weekdayActual) {
-            getParsingFlags(config).weekdayMismatch = true;
-            config._isValid = false;
-            return false;
-        }
-    }
-    return true;
-}
-
-function calculateOffset(obsOffset, militaryOffset, numOffset) {
-    if (obsOffset) {
-        return obsOffsets[obsOffset];
-    } else if (militaryOffset) {
-        // the only allowed military tz is Z
-        return 0;
-    } else {
-        var hm = parseInt(numOffset, 10),
-            m = hm % 100,
-            h = (hm - m) / 100;
-        return h * 60 + m;
-    }
-}
-
-// date and time from ref 2822 format
-export function configFromRFC2822(config) {
-    var match = rfc2822.exec(preprocessRFC2822(config._i)),
-        parsedArray;
-    if (match) {
-        parsedArray = extractFromRFC2822Strings(
-            match[4],
-            match[3],
-            match[2],
-            match[5],
-            match[6],
-            match[7]
-        );
-        if (!checkWeekday(match[1], parsedArray, config)) {
-            return;
-        }
-
-        config._a = parsedArray;
-        config._tzm = calculateOffset(match[8], match[9], match[10]);
-
-        config._d = createUTCDate.apply(null, config._a);
-        config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
-
-        getParsingFlags(config).rfc2822 = true;
-    } else {
-        config._isValid = false;
-    }
-}
-
-// date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
-export function configFromString(config) {
-    var matched = aspNetJsonRegex.exec(config._i);
-    if (matched !== null) {
-        config._d = new Date(+matched[1]);
-        return;
-    }
-
-    configFromISO(config);
-    if (config._isValid === false) {
-        delete config._isValid;
-    } else {
-        return;
-    }
-
-    configFromRFC2822(config);
-    if (config._isValid === false) {
-        delete config._isValid;
-    } else {
-        return;
-    }
-
-    if (config._strict) {
-        config._isValid = false;
-    } else {
-        // Final attempt, use Input Fallback
-        hooks.createFromInputFallback(config);
-    }
-}
-
-hooks.createFromInputFallback = deprecate(
-    'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
-        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
-        'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
-    function (config) {
-        config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
-    }
-);
Index: ckend/node_modules/moment/src/lib/create/local.js
===================================================================
--- backend/node_modules/moment/src/lib/create/local.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import { createLocalOrUTC } from './from-anything';
-
-export function createLocal(input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, false);
-}
Index: ckend/node_modules/moment/src/lib/create/parsing-flags.js
===================================================================
--- backend/node_modules/moment/src/lib/create/parsing-flags.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-function defaultParsingFlags() {
-    // We need to deep clone this object.
-    return {
-        empty: false,
-        unusedTokens: [],
-        unusedInput: [],
-        overflow: -2,
-        charsLeftOver: 0,
-        nullInput: false,
-        invalidEra: null,
-        invalidMonth: null,
-        invalidFormat: false,
-        userInvalidated: false,
-        iso: false,
-        parsedDateParts: [],
-        era: null,
-        meridiem: null,
-        rfc2822: false,
-        weekdayMismatch: false,
-    };
-}
-
-export default function getParsingFlags(m) {
-    if (m._pf == null) {
-        m._pf = defaultParsingFlags();
-    }
-    return m._pf;
-}
Index: ckend/node_modules/moment/src/lib/create/utc.js
===================================================================
--- backend/node_modules/moment/src/lib/create/utc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import { createLocalOrUTC } from './from-anything';
-
-export function createUTC(input, format, locale, strict) {
-    return createLocalOrUTC(input, format, locale, strict, true).utc();
-}
Index: ckend/node_modules/moment/src/lib/create/valid.js
===================================================================
--- backend/node_modules/moment/src/lib/create/valid.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-import extend from '../utils/extend';
-import { createUTC } from './utc';
-import getParsingFlags from '../create/parsing-flags';
-import some from '../utils/some';
-
-export function isValid(m) {
-    var flags = null,
-        parsedParts = false,
-        isNowValid = m._d && !isNaN(m._d.getTime());
-    if (isNowValid) {
-        flags = getParsingFlags(m);
-        parsedParts = some.call(flags.parsedDateParts, function (i) {
-            return i != null;
-        });
-        isNowValid =
-            flags.overflow < 0 &&
-            !flags.empty &&
-            !flags.invalidEra &&
-            !flags.invalidMonth &&
-            !flags.invalidWeekday &&
-            !flags.weekdayMismatch &&
-            !flags.nullInput &&
-            !flags.invalidFormat &&
-            !flags.userInvalidated &&
-            (!flags.meridiem || (flags.meridiem && parsedParts));
-        if (m._strict) {
-            isNowValid =
-                isNowValid &&
-                flags.charsLeftOver === 0 &&
-                flags.unusedTokens.length === 0 &&
-                flags.bigHour === undefined;
-        }
-    }
-    if (Object.isFrozen == null || !Object.isFrozen(m)) {
-        m._isValid = isNowValid;
-    } else {
-        return isNowValid;
-    }
-    return m._isValid;
-}
-
-export function createInvalid(flags) {
-    var m = createUTC(NaN);
-    if (flags != null) {
-        extend(getParsingFlags(m), flags);
-    } else {
-        getParsingFlags(m).userInvalidated = true;
-    }
-
-    return m;
-}
Index: ckend/node_modules/moment/src/lib/duration/abs.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/abs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var mathAbs = Math.abs;
-
-export function abs() {
-    var data = this._data;
-
-    this._milliseconds = mathAbs(this._milliseconds);
-    this._days = mathAbs(this._days);
-    this._months = mathAbs(this._months);
-
-    data.milliseconds = mathAbs(data.milliseconds);
-    data.seconds = mathAbs(data.seconds);
-    data.minutes = mathAbs(data.minutes);
-    data.hours = mathAbs(data.hours);
-    data.months = mathAbs(data.months);
-    data.years = mathAbs(data.years);
-
-    return this;
-}
Index: ckend/node_modules/moment/src/lib/duration/add-subtract.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/add-subtract.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import { createDuration } from './create';
-
-function addSubtract(duration, input, value, direction) {
-    var other = createDuration(input, value);
-
-    duration._milliseconds += direction * other._milliseconds;
-    duration._days += direction * other._days;
-    duration._months += direction * other._months;
-
-    return duration._bubble();
-}
-
-// supports only 2.0-style add(1, 's') or add(duration)
-export function add(input, value) {
-    return addSubtract(this, input, value, 1);
-}
-
-// supports only 2.0-style subtract(1, 's') or subtract(duration)
-export function subtract(input, value) {
-    return addSubtract(this, input, value, -1);
-}
Index: ckend/node_modules/moment/src/lib/duration/as.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/as.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-import { daysToMonths, monthsToDays } from './bubble';
-import { normalizeUnits } from '../units/aliases';
-
-export function as(units) {
-    if (!this.isValid()) {
-        return NaN;
-    }
-    var days,
-        months,
-        milliseconds = this._milliseconds;
-
-    units = normalizeUnits(units);
-
-    if (units === 'month' || units === 'quarter' || units === 'year') {
-        days = this._days + milliseconds / 864e5;
-        months = this._months + daysToMonths(days);
-        switch (units) {
-            case 'month':
-                return months;
-            case 'quarter':
-                return months / 3;
-            case 'year':
-                return months / 12;
-        }
-    } else {
-        // handle milliseconds separately because of floating point math errors (issue #1867)
-        days = this._days + Math.round(monthsToDays(this._months));
-        switch (units) {
-            case 'week':
-                return days / 7 + milliseconds / 6048e5;
-            case 'day':
-                return days + milliseconds / 864e5;
-            case 'hour':
-                return days * 24 + milliseconds / 36e5;
-            case 'minute':
-                return days * 1440 + milliseconds / 6e4;
-            case 'second':
-                return days * 86400 + milliseconds / 1000;
-            // Math.floor prevents floating point math errors here
-            case 'millisecond':
-                return Math.floor(days * 864e5) + milliseconds;
-            default:
-                throw new Error('Unknown unit ' + units);
-        }
-    }
-}
-
-function makeAs(alias) {
-    return function () {
-        return this.as(alias);
-    };
-}
-
-var asMilliseconds = makeAs('ms'),
-    asSeconds = makeAs('s'),
-    asMinutes = makeAs('m'),
-    asHours = makeAs('h'),
-    asDays = makeAs('d'),
-    asWeeks = makeAs('w'),
-    asMonths = makeAs('M'),
-    asQuarters = makeAs('Q'),
-    asYears = makeAs('y'),
-    valueOf = asMilliseconds;
-
-export {
-    asMilliseconds,
-    asSeconds,
-    asMinutes,
-    asHours,
-    asDays,
-    asWeeks,
-    asMonths,
-    asQuarters,
-    asYears,
-    valueOf,
-};
Index: ckend/node_modules/moment/src/lib/duration/bubble.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/bubble.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-import absFloor from '../utils/abs-floor';
-import absCeil from '../utils/abs-ceil';
-
-export function bubble() {
-    var milliseconds = this._milliseconds,
-        days = this._days,
-        months = this._months,
-        data = this._data,
-        seconds,
-        minutes,
-        hours,
-        years,
-        monthsFromDays;
-
-    // if we have a mix of positive and negative values, bubble down first
-    // check: https://github.com/moment/moment/issues/2166
-    if (
-        !(
-            (milliseconds >= 0 && days >= 0 && months >= 0) ||
-            (milliseconds <= 0 && days <= 0 && months <= 0)
-        )
-    ) {
-        milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
-        days = 0;
-        months = 0;
-    }
-
-    // The following code bubbles up values, see the tests for
-    // examples of what that means.
-    data.milliseconds = milliseconds % 1000;
-
-    seconds = absFloor(milliseconds / 1000);
-    data.seconds = seconds % 60;
-
-    minutes = absFloor(seconds / 60);
-    data.minutes = minutes % 60;
-
-    hours = absFloor(minutes / 60);
-    data.hours = hours % 24;
-
-    days += absFloor(hours / 24);
-
-    // convert days to months
-    monthsFromDays = absFloor(daysToMonths(days));
-    months += monthsFromDays;
-    days -= absCeil(monthsToDays(monthsFromDays));
-
-    // 12 months -> 1 year
-    years = absFloor(months / 12);
-    months %= 12;
-
-    data.days = days;
-    data.months = months;
-    data.years = years;
-
-    return this;
-}
-
-export function daysToMonths(days) {
-    // 400 years have 146097 days (taking into account leap year rules)
-    // 400 years have 12 months === 4800
-    return (days * 4800) / 146097;
-}
-
-export function monthsToDays(months) {
-    // the reverse of daysToMonths
-    return (months * 146097) / 4800;
-}
Index: ckend/node_modules/moment/src/lib/duration/clone.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/clone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import { createDuration } from './create';
-
-export function clone() {
-    return createDuration(this);
-}
Index: ckend/node_modules/moment/src/lib/duration/constructor.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/constructor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-import { normalizeObjectUnits } from '../units/aliases';
-import { getLocale } from '../locale/locales';
-import isDurationValid from './valid.js';
-
-export function Duration(duration) {
-    var normalizedInput = normalizeObjectUnits(duration),
-        years = normalizedInput.year || 0,
-        quarters = normalizedInput.quarter || 0,
-        months = normalizedInput.month || 0,
-        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
-        days = normalizedInput.day || 0,
-        hours = normalizedInput.hour || 0,
-        minutes = normalizedInput.minute || 0,
-        seconds = normalizedInput.second || 0,
-        milliseconds = normalizedInput.millisecond || 0;
-
-    this._isValid = isDurationValid(normalizedInput);
-
-    // representation for dateAddRemove
-    this._milliseconds =
-        +milliseconds +
-        seconds * 1e3 + // 1000
-        minutes * 6e4 + // 1000 * 60
-        hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
-    // Because of dateAddRemove treats 24 hours as different from a
-    // day when working around DST, we need to store them separately
-    this._days = +days + weeks * 7;
-    // It is impossible to translate months into days without knowing
-    // which months you are are talking about, so we have to store
-    // it separately.
-    this._months = +months + quarters * 3 + years * 12;
-
-    this._data = {};
-
-    this._locale = getLocale();
-
-    this._bubble();
-}
-
-export function isDuration(obj) {
-    return obj instanceof Duration;
-}
Index: ckend/node_modules/moment/src/lib/duration/create.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/create.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,133 +1,0 @@
-import { Duration, isDuration } from './constructor';
-import isNumber from '../utils/is-number';
-import toInt from '../utils/to-int';
-import absRound from '../utils/abs-round';
-import hasOwnProp from '../utils/has-own-prop';
-import { DATE, HOUR, MINUTE, SECOND, MILLISECOND } from '../units/constants';
-import { cloneWithOffset } from '../units/offset';
-import { createLocal } from '../create/local';
-import { createInvalid as invalid } from './valid';
-
-// ASP.NET json date format regex
-var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
-    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
-    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
-    // and further modified to allow for strings containing both week and day
-    isoRegex =
-        /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
-
-export function createDuration(input, key) {
-    var duration = input,
-        // matching against regexp is expensive, do it on demand
-        match = null,
-        sign,
-        ret,
-        diffRes;
-
-    if (isDuration(input)) {
-        duration = {
-            ms: input._milliseconds,
-            d: input._days,
-            M: input._months,
-        };
-    } else if (isNumber(input) || !isNaN(+input)) {
-        duration = {};
-        if (key) {
-            duration[key] = +input;
-        } else {
-            duration.milliseconds = +input;
-        }
-    } else if ((match = aspNetRegex.exec(input))) {
-        sign = match[1] === '-' ? -1 : 1;
-        duration = {
-            y: 0,
-            d: toInt(match[DATE]) * sign,
-            h: toInt(match[HOUR]) * sign,
-            m: toInt(match[MINUTE]) * sign,
-            s: toInt(match[SECOND]) * sign,
-            ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
-        };
-    } else if ((match = isoRegex.exec(input))) {
-        sign = match[1] === '-' ? -1 : 1;
-        duration = {
-            y: parseIso(match[2], sign),
-            M: parseIso(match[3], sign),
-            w: parseIso(match[4], sign),
-            d: parseIso(match[5], sign),
-            h: parseIso(match[6], sign),
-            m: parseIso(match[7], sign),
-            s: parseIso(match[8], sign),
-        };
-    } else if (duration == null) {
-        // checks for null or undefined
-        duration = {};
-    } else if (
-        typeof duration === 'object' &&
-        ('from' in duration || 'to' in duration)
-    ) {
-        diffRes = momentsDifference(
-            createLocal(duration.from),
-            createLocal(duration.to)
-        );
-
-        duration = {};
-        duration.ms = diffRes.milliseconds;
-        duration.M = diffRes.months;
-    }
-
-    ret = new Duration(duration);
-
-    if (isDuration(input) && hasOwnProp(input, '_locale')) {
-        ret._locale = input._locale;
-    }
-
-    if (isDuration(input) && hasOwnProp(input, '_isValid')) {
-        ret._isValid = input._isValid;
-    }
-
-    return ret;
-}
-
-createDuration.fn = Duration.prototype;
-createDuration.invalid = invalid;
-
-function parseIso(inp, sign) {
-    // We'd normally use ~~inp for this, but unfortunately it also
-    // converts floats to ints.
-    // inp may be undefined, so careful calling replace on it.
-    var res = inp && parseFloat(inp.replace(',', '.'));
-    // apply sign while we're at it
-    return (isNaN(res) ? 0 : res) * sign;
-}
-
-function positiveMomentsDifference(base, other) {
-    var res = {};
-
-    res.months =
-        other.month() - base.month() + (other.year() - base.year()) * 12;
-    if (base.clone().add(res.months, 'M').isAfter(other)) {
-        --res.months;
-    }
-
-    res.milliseconds = +other - +base.clone().add(res.months, 'M');
-
-    return res;
-}
-
-function momentsDifference(base, other) {
-    var res;
-    if (!(base.isValid() && other.isValid())) {
-        return { milliseconds: 0, months: 0 };
-    }
-
-    other = cloneWithOffset(other, base);
-    if (base.isBefore(other)) {
-        res = positiveMomentsDifference(base, other);
-    } else {
-        res = positiveMomentsDifference(other, base);
-        res.milliseconds = -res.milliseconds;
-        res.months = -res.months;
-    }
-
-    return res;
-}
Index: ckend/node_modules/moment/src/lib/duration/duration.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/duration.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-// Side effect imports
-import './prototype';
-
-import { createDuration } from './create';
-import { isDuration } from './constructor';
-import {
-    getSetRelativeTimeRounding,
-    getSetRelativeTimeThreshold,
-} from './humanize';
-
-export {
-    createDuration,
-    isDuration,
-    getSetRelativeTimeRounding,
-    getSetRelativeTimeThreshold,
-};
Index: ckend/node_modules/moment/src/lib/duration/get.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/get.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-import { normalizeUnits } from '../units/aliases';
-import absFloor from '../utils/abs-floor';
-
-export function get(units) {
-    units = normalizeUnits(units);
-    return this.isValid() ? this[units + 's']() : NaN;
-}
-
-function makeGetter(name) {
-    return function () {
-        return this.isValid() ? this._data[name] : NaN;
-    };
-}
-
-var milliseconds = makeGetter('milliseconds'),
-    seconds = makeGetter('seconds'),
-    minutes = makeGetter('minutes'),
-    hours = makeGetter('hours'),
-    days = makeGetter('days'),
-    months = makeGetter('months'),
-    years = makeGetter('years');
-
-export { milliseconds, seconds, minutes, hours, days, months, years };
-
-export function weeks() {
-    return absFloor(this.days() / 7);
-}
Index: ckend/node_modules/moment/src/lib/duration/humanize.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/humanize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,114 +1,0 @@
-import { createDuration } from './create';
-
-var round = Math.round,
-    thresholds = {
-        ss: 44, // a few seconds to seconds
-        s: 45, // seconds to minute
-        m: 45, // minutes to hour
-        h: 22, // hours to day
-        d: 26, // days to month/week
-        w: null, // weeks to month
-        M: 11, // months to year
-    };
-
-// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
-function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
-    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
-}
-
-function relativeTime(posNegDuration, withoutSuffix, thresholds, locale) {
-    var duration = createDuration(posNegDuration).abs(),
-        seconds = round(duration.as('s')),
-        minutes = round(duration.as('m')),
-        hours = round(duration.as('h')),
-        days = round(duration.as('d')),
-        months = round(duration.as('M')),
-        weeks = round(duration.as('w')),
-        years = round(duration.as('y')),
-        a =
-            (seconds <= thresholds.ss && ['s', seconds]) ||
-            (seconds < thresholds.s && ['ss', seconds]) ||
-            (minutes <= 1 && ['m']) ||
-            (minutes < thresholds.m && ['mm', minutes]) ||
-            (hours <= 1 && ['h']) ||
-            (hours < thresholds.h && ['hh', hours]) ||
-            (days <= 1 && ['d']) ||
-            (days < thresholds.d && ['dd', days]);
-
-    if (thresholds.w != null) {
-        a =
-            a ||
-            (weeks <= 1 && ['w']) ||
-            (weeks < thresholds.w && ['ww', weeks]);
-    }
-    a = a ||
-        (months <= 1 && ['M']) ||
-        (months < thresholds.M && ['MM', months]) ||
-        (years <= 1 && ['y']) || ['yy', years];
-
-    a[2] = withoutSuffix;
-    a[3] = +posNegDuration > 0;
-    a[4] = locale;
-    return substituteTimeAgo.apply(null, a);
-}
-
-// This function allows you to set the rounding function for relative time strings
-export function getSetRelativeTimeRounding(roundingFunction) {
-    if (roundingFunction === undefined) {
-        return round;
-    }
-    if (typeof roundingFunction === 'function') {
-        round = roundingFunction;
-        return true;
-    }
-    return false;
-}
-
-// This function allows you to set a threshold for relative time strings
-export function getSetRelativeTimeThreshold(threshold, limit) {
-    if (thresholds[threshold] === undefined) {
-        return false;
-    }
-    if (limit === undefined) {
-        return thresholds[threshold];
-    }
-    thresholds[threshold] = limit;
-    if (threshold === 's') {
-        thresholds.ss = limit - 1;
-    }
-    return true;
-}
-
-export function humanize(argWithSuffix, argThresholds) {
-    if (!this.isValid()) {
-        return this.localeData().invalidDate();
-    }
-
-    var withSuffix = false,
-        th = thresholds,
-        locale,
-        output;
-
-    if (typeof argWithSuffix === 'object') {
-        argThresholds = argWithSuffix;
-        argWithSuffix = false;
-    }
-    if (typeof argWithSuffix === 'boolean') {
-        withSuffix = argWithSuffix;
-    }
-    if (typeof argThresholds === 'object') {
-        th = Object.assign({}, thresholds, argThresholds);
-        if (argThresholds.s != null && argThresholds.ss == null) {
-            th.ss = argThresholds.s - 1;
-        }
-    }
-
-    locale = this.localeData();
-    output = relativeTime(this, !withSuffix, th, locale);
-
-    if (withSuffix) {
-        output = locale.pastFuture(+this, output);
-    }
-
-    return locale.postformat(output);
-}
Index: ckend/node_modules/moment/src/lib/duration/iso-string.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/iso-string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-import absFloor from '../utils/abs-floor';
-var abs = Math.abs;
-
-function sign(x) {
-    return (x > 0) - (x < 0) || +x;
-}
-
-export function toISOString() {
-    // for ISO strings we do not use the normal bubbling rules:
-    //  * milliseconds bubble up until they become hours
-    //  * days do not bubble at all
-    //  * months bubble up until they become years
-    // This is because there is no context-free conversion between hours and days
-    // (think of clock changes)
-    // and also not between days and months (28-31 days per month)
-    if (!this.isValid()) {
-        return this.localeData().invalidDate();
-    }
-
-    var seconds = abs(this._milliseconds) / 1000,
-        days = abs(this._days),
-        months = abs(this._months),
-        minutes,
-        hours,
-        years,
-        s,
-        total = this.asSeconds(),
-        totalSign,
-        ymSign,
-        daysSign,
-        hmsSign;
-
-    if (!total) {
-        // this is the same as C#'s (Noda) and python (isodate)...
-        // but not other JS (goog.date)
-        return 'P0D';
-    }
-
-    // 3600 seconds -> 60 minutes -> 1 hour
-    minutes = absFloor(seconds / 60);
-    hours = absFloor(minutes / 60);
-    seconds %= 60;
-    minutes %= 60;
-
-    // 12 months -> 1 year
-    years = absFloor(months / 12);
-    months %= 12;
-
-    // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
-    s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
-
-    totalSign = total < 0 ? '-' : '';
-    ymSign = sign(this._months) !== sign(total) ? '-' : '';
-    daysSign = sign(this._days) !== sign(total) ? '-' : '';
-    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
-
-    return (
-        totalSign +
-        'P' +
-        (years ? ymSign + years + 'Y' : '') +
-        (months ? ymSign + months + 'M' : '') +
-        (days ? daysSign + days + 'D' : '') +
-        (hours || minutes || seconds ? 'T' : '') +
-        (hours ? hmsSign + hours + 'H' : '') +
-        (minutes ? hmsSign + minutes + 'M' : '') +
-        (seconds ? hmsSign + s + 'S' : '')
-    );
-}
Index: ckend/node_modules/moment/src/lib/duration/prototype.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/prototype.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-import { Duration } from './constructor';
-
-var proto = Duration.prototype;
-
-import { abs } from './abs';
-import { add, subtract } from './add-subtract';
-import {
-    as,
-    asMilliseconds,
-    asSeconds,
-    asMinutes,
-    asHours,
-    asDays,
-    asWeeks,
-    asMonths,
-    asQuarters,
-    asYears,
-    valueOf,
-} from './as';
-import { bubble } from './bubble';
-import { clone } from './clone';
-import {
-    get,
-    milliseconds,
-    seconds,
-    minutes,
-    hours,
-    days,
-    months,
-    years,
-    weeks,
-} from './get';
-import { humanize } from './humanize';
-import { toISOString } from './iso-string';
-import { lang, locale, localeData } from '../moment/locale';
-import { isValid } from './valid';
-
-proto.isValid = isValid;
-proto.abs = abs;
-proto.add = add;
-proto.subtract = subtract;
-proto.as = as;
-proto.asMilliseconds = asMilliseconds;
-proto.asSeconds = asSeconds;
-proto.asMinutes = asMinutes;
-proto.asHours = asHours;
-proto.asDays = asDays;
-proto.asWeeks = asWeeks;
-proto.asMonths = asMonths;
-proto.asQuarters = asQuarters;
-proto.asYears = asYears;
-proto.valueOf = valueOf;
-proto._bubble = bubble;
-proto.clone = clone;
-proto.get = get;
-proto.milliseconds = milliseconds;
-proto.seconds = seconds;
-proto.minutes = minutes;
-proto.hours = hours;
-proto.days = days;
-proto.weeks = weeks;
-proto.months = months;
-proto.years = years;
-proto.humanize = humanize;
-proto.toISOString = toISOString;
-proto.toString = toISOString;
-proto.toJSON = toISOString;
-proto.locale = locale;
-proto.localeData = localeData;
-
-// Deprecations
-import { deprecate } from '../utils/deprecate';
-
-proto.toIsoString = deprecate(
-    'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
-    toISOString
-);
-proto.lang = lang;
Index: ckend/node_modules/moment/src/lib/duration/valid.js
===================================================================
--- backend/node_modules/moment/src/lib/duration/valid.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-import hasOwnProp from '../utils/has-own-prop';
-import toInt from '../utils/to-int';
-import indexOf from '../utils/index-of';
-import { createDuration } from './create';
-
-var ordering = [
-    'year',
-    'quarter',
-    'month',
-    'week',
-    'day',
-    'hour',
-    'minute',
-    'second',
-    'millisecond',
-];
-
-export default function isDurationValid(m) {
-    var key,
-        unitHasDecimal = false,
-        i,
-        orderLen = ordering.length;
-    for (key in m) {
-        if (
-            hasOwnProp(m, key) &&
-            !(
-                indexOf.call(ordering, key) !== -1 &&
-                (m[key] == null || !isNaN(m[key]))
-            )
-        ) {
-            return false;
-        }
-    }
-
-    for (i = 0; i < orderLen; ++i) {
-        if (m[ordering[i]]) {
-            if (unitHasDecimal) {
-                return false; // only allow non-integers for smallest unit
-            }
-            if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
-                unitHasDecimal = true;
-            }
-        }
-    }
-
-    return true;
-}
-
-export function isValid() {
-    return this._isValid;
-}
-
-export function createInvalid() {
-    return createDuration(NaN);
-}
Index: ckend/node_modules/moment/src/lib/format/format.js
===================================================================
--- backend/node_modules/moment/src/lib/format/format.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,104 +1,0 @@
-import zeroFill from '../utils/zero-fill';
-import isFunction from '../utils/is-function';
-
-var formattingTokens =
-        /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
-    localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
-    formatFunctions = {},
-    formatTokenFunctions = {};
-
-export { formattingTokens, formatTokenFunctions };
-
-// token:    'M'
-// padded:   ['MM', 2]
-// ordinal:  'Mo'
-// callback: function () { this.month() + 1 }
-export function addFormatToken(token, padded, ordinal, callback) {
-    var func = callback;
-    if (typeof callback === 'string') {
-        func = function () {
-            return this[callback]();
-        };
-    }
-    if (token) {
-        formatTokenFunctions[token] = func;
-    }
-    if (padded) {
-        formatTokenFunctions[padded[0]] = function () {
-            return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
-        };
-    }
-    if (ordinal) {
-        formatTokenFunctions[ordinal] = function () {
-            return this.localeData().ordinal(
-                func.apply(this, arguments),
-                token
-            );
-        };
-    }
-}
-
-function removeFormattingTokens(input) {
-    if (input.match(/\[[\s\S]/)) {
-        return input.replace(/^\[|\]$/g, '');
-    }
-    return input.replace(/\\/g, '');
-}
-
-function makeFormatFunction(format) {
-    var array = format.match(formattingTokens),
-        i,
-        length;
-
-    for (i = 0, length = array.length; i < length; i++) {
-        if (formatTokenFunctions[array[i]]) {
-            array[i] = formatTokenFunctions[array[i]];
-        } else {
-            array[i] = removeFormattingTokens(array[i]);
-        }
-    }
-
-    return function (mom) {
-        var output = '',
-            i;
-        for (i = 0; i < length; i++) {
-            output += isFunction(array[i])
-                ? array[i].call(mom, format)
-                : array[i];
-        }
-        return output;
-    };
-}
-
-// format date using native date object
-export function formatMoment(m, format) {
-    if (!m.isValid()) {
-        return m.localeData().invalidDate();
-    }
-
-    format = expandFormat(format, m.localeData());
-    formatFunctions[format] =
-        formatFunctions[format] || makeFormatFunction(format);
-
-    return formatFunctions[format](m);
-}
-
-export function expandFormat(format, locale) {
-    var i = 5;
-
-    function replaceLongDateFormatTokens(input) {
-        return locale.longDateFormat(input) || input;
-    }
-
-    localFormattingTokens.lastIndex = 0;
-    while (i >= 0 && localFormattingTokens.test(format)) {
-        format = format.replace(
-            localFormattingTokens,
-            replaceLongDateFormatTokens
-        );
-        localFormattingTokens.lastIndex = 0;
-        i -= 1;
-    }
-
-    return format;
-}
Index: ckend/node_modules/moment/src/lib/locale/base-config.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/base-config.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-import { defaultCalendar } from './calendar';
-import { defaultLongDateFormat } from './formats';
-import { defaultInvalidDate } from './invalid';
-import { defaultOrdinal, defaultDayOfMonthOrdinalParse } from './ordinal';
-import { defaultRelativeTime } from './relative';
-
-// months
-import { defaultLocaleMonths, defaultLocaleMonthsShort } from '../units/month';
-
-// week
-import { defaultLocaleWeek } from '../units/week';
-
-// weekdays
-import {
-    defaultLocaleWeekdays,
-    defaultLocaleWeekdaysMin,
-    defaultLocaleWeekdaysShort,
-} from '../units/day-of-week';
-
-// meridiem
-import { defaultLocaleMeridiemParse } from '../units/hour';
-
-export var baseConfig = {
-    calendar: defaultCalendar,
-    longDateFormat: defaultLongDateFormat,
-    invalidDate: defaultInvalidDate,
-    ordinal: defaultOrdinal,
-    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
-    relativeTime: defaultRelativeTime,
-
-    months: defaultLocaleMonths,
-    monthsShort: defaultLocaleMonthsShort,
-
-    week: defaultLocaleWeek,
-
-    weekdays: defaultLocaleWeekdays,
-    weekdaysMin: defaultLocaleWeekdaysMin,
-    weekdaysShort: defaultLocaleWeekdaysShort,
-
-    meridiemParse: defaultLocaleMeridiemParse,
-};
Index: ckend/node_modules/moment/src/lib/locale/calendar.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/calendar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-export var defaultCalendar = {
-    sameDay: '[Today at] LT',
-    nextDay: '[Tomorrow at] LT',
-    nextWeek: 'dddd [at] LT',
-    lastDay: '[Yesterday at] LT',
-    lastWeek: '[Last] dddd [at] LT',
-    sameElse: 'L',
-};
-
-import isFunction from '../utils/is-function';
-
-export function calendar(key, mom, now) {
-    var output = this._calendar[key] || this._calendar['sameElse'];
-    return isFunction(output) ? output.call(mom, now) : output;
-}
Index: ckend/node_modules/moment/src/lib/locale/constructor.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/constructor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export function Locale(config) {
-    if (config != null) {
-        this.set(config);
-    }
-}
Index: ckend/node_modules/moment/src/lib/locale/en.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/en.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-import './prototype';
-import { getSetGlobalLocale } from './locales';
-import toInt from '../utils/to-int';
-
-getSetGlobalLocale('en', {
-    eras: [
-        {
-            since: '0001-01-01',
-            until: +Infinity,
-            offset: 1,
-            name: 'Anno Domini',
-            narrow: 'AD',
-            abbr: 'AD',
-        },
-        {
-            since: '0000-12-31',
-            until: -Infinity,
-            offset: 1,
-            name: 'Before Christ',
-            narrow: 'BC',
-            abbr: 'BC',
-        },
-    ],
-    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                toInt((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
Index: ckend/node_modules/moment/src/lib/locale/formats.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/formats.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-import { formattingTokens } from '../format/format';
-
-export var defaultLongDateFormat = {
-    LTS: 'h:mm:ss A',
-    LT: 'h:mm A',
-    L: 'MM/DD/YYYY',
-    LL: 'MMMM D, YYYY',
-    LLL: 'MMMM D, YYYY h:mm A',
-    LLLL: 'dddd, MMMM D, YYYY h:mm A',
-};
-
-export function longDateFormat(key) {
-    var format = this._longDateFormat[key],
-        formatUpper = this._longDateFormat[key.toUpperCase()];
-
-    if (format || !formatUpper) {
-        return format;
-    }
-
-    this._longDateFormat[key] = formatUpper
-        .match(formattingTokens)
-        .map(function (tok) {
-            if (
-                tok === 'MMMM' ||
-                tok === 'MM' ||
-                tok === 'DD' ||
-                tok === 'dddd'
-            ) {
-                return tok.slice(1);
-            }
-            return tok;
-        })
-        .join('');
-
-    return this._longDateFormat[key];
-}
Index: ckend/node_modules/moment/src/lib/locale/invalid.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/invalid.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export var defaultInvalidDate = 'Invalid date';
-
-export function invalidDate() {
-    return this._invalidDate;
-}
Index: ckend/node_modules/moment/src/lib/locale/lists.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/lists.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-import isNumber from '../utils/is-number';
-import { getLocale } from './locales';
-import { createUTC } from '../create/utc';
-
-function get(format, index, field, setter) {
-    var locale = getLocale(),
-        utc = createUTC().set(setter, index);
-    return locale[field](utc, format);
-}
-
-function listMonthsImpl(format, index, field) {
-    if (isNumber(format)) {
-        index = format;
-        format = undefined;
-    }
-
-    format = format || '';
-
-    if (index != null) {
-        return get(format, index, field, 'month');
-    }
-
-    var i,
-        out = [];
-    for (i = 0; i < 12; i++) {
-        out[i] = get(format, i, field, 'month');
-    }
-    return out;
-}
-
-// ()
-// (5)
-// (fmt, 5)
-// (fmt)
-// (true)
-// (true, 5)
-// (true, fmt, 5)
-// (true, fmt)
-function listWeekdaysImpl(localeSorted, format, index, field) {
-    if (typeof localeSorted === 'boolean') {
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-    } else {
-        format = localeSorted;
-        index = format;
-        localeSorted = false;
-
-        if (isNumber(format)) {
-            index = format;
-            format = undefined;
-        }
-
-        format = format || '';
-    }
-
-    var locale = getLocale(),
-        shift = localeSorted ? locale._week.dow : 0,
-        i,
-        out = [];
-
-    if (index != null) {
-        return get(format, (index + shift) % 7, field, 'day');
-    }
-
-    for (i = 0; i < 7; i++) {
-        out[i] = get(format, (i + shift) % 7, field, 'day');
-    }
-    return out;
-}
-
-export function listMonths(format, index) {
-    return listMonthsImpl(format, index, 'months');
-}
-
-export function listMonthsShort(format, index) {
-    return listMonthsImpl(format, index, 'monthsShort');
-}
-
-export function listWeekdays(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
-}
-
-export function listWeekdaysShort(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
-}
-
-export function listWeekdaysMin(localeSorted, format, index) {
-    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
-}
Index: ckend/node_modules/moment/src/lib/locale/locale.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/locale.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-// Side effect imports
-import './prototype';
-
-import {
-    getSetGlobalLocale,
-    defineLocale,
-    updateLocale,
-    getLocale,
-    listLocales,
-} from './locales';
-
-import {
-    listMonths,
-    listMonthsShort,
-    listWeekdays,
-    listWeekdaysShort,
-    listWeekdaysMin,
-} from './lists';
-
-export {
-    getSetGlobalLocale,
-    defineLocale,
-    updateLocale,
-    getLocale,
-    listLocales,
-    listMonths,
-    listMonthsShort,
-    listWeekdays,
-    listWeekdaysShort,
-    listWeekdaysMin,
-};
-
-import { deprecate } from '../utils/deprecate';
-import { hooks } from '../utils/hooks';
-
-hooks.lang = deprecate(
-    'moment.lang is deprecated. Use moment.locale instead.',
-    getSetGlobalLocale
-);
-hooks.langData = deprecate(
-    'moment.langData is deprecated. Use moment.localeData instead.',
-    getLocale
-);
-
-import './en';
Index: ckend/node_modules/moment/src/lib/locale/locales.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/locales.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,249 +1,0 @@
-import isArray from '../utils/is-array';
-import isUndefined from '../utils/is-undefined';
-import { deprecateSimple } from '../utils/deprecate';
-import { mergeConfigs } from './set';
-import { Locale } from './constructor';
-import keys from '../utils/keys';
-
-import { baseConfig } from './base-config';
-
-// internal storage for locale config files
-var locales = {},
-    localeFamilies = {},
-    globalLocale;
-
-function commonPrefix(arr1, arr2) {
-    var i,
-        minl = Math.min(arr1.length, arr2.length);
-    for (i = 0; i < minl; i += 1) {
-        if (arr1[i] !== arr2[i]) {
-            return i;
-        }
-    }
-    return minl;
-}
-
-function normalizeLocale(key) {
-    return key ? key.toLowerCase().replace('_', '-') : key;
-}
-
-// pick the locale from the array
-// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
-// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
-function chooseLocale(names) {
-    var i = 0,
-        j,
-        next,
-        locale,
-        split;
-
-    while (i < names.length) {
-        split = normalizeLocale(names[i]).split('-');
-        j = split.length;
-        next = normalizeLocale(names[i + 1]);
-        next = next ? next.split('-') : null;
-        while (j > 0) {
-            locale = loadLocale(split.slice(0, j).join('-'));
-            if (locale) {
-                return locale;
-            }
-            if (
-                next &&
-                next.length >= j &&
-                commonPrefix(split, next) >= j - 1
-            ) {
-                //the next array item is better than a shallower substring of this one
-                break;
-            }
-            j--;
-        }
-        i++;
-    }
-    return globalLocale;
-}
-
-function isLocaleNameSane(name) {
-    // Prevent names that look like filesystem paths, i.e contain '/' or '\'
-    // Ensure name is available and function returns boolean
-    return !!(name && name.match('^[^/\\\\]*$'));
-}
-
-function loadLocale(name) {
-    var oldLocale = null,
-        aliasedRequire;
-    // TODO: Find a better way to register and load all the locales in Node
-    if (
-        locales[name] === undefined &&
-        typeof module !== 'undefined' &&
-        module &&
-        module.exports &&
-        isLocaleNameSane(name)
-    ) {
-        try {
-            oldLocale = globalLocale._abbr;
-            aliasedRequire = require;
-            aliasedRequire('./locale/' + name);
-            getSetGlobalLocale(oldLocale);
-        } catch (e) {
-            // mark as not found to avoid repeating expensive file require call causing high CPU
-            // when trying to find en-US, en_US, en-us for every format call
-            locales[name] = null; // null means not found
-        }
-    }
-    return locales[name];
-}
-
-// This function will load locale and then set the global locale.  If
-// no arguments are passed in, it will simply return the current global
-// locale key.
-export function getSetGlobalLocale(key, values) {
-    var data;
-    if (key) {
-        if (isUndefined(values)) {
-            data = getLocale(key);
-        } else {
-            data = defineLocale(key, values);
-        }
-
-        if (data) {
-            // moment.duration._locale = moment._locale = data;
-            globalLocale = data;
-        } else {
-            if (typeof console !== 'undefined' && console.warn) {
-                //warn user if arguments are passed but the locale could not be set
-                console.warn(
-                    'Locale ' + key + ' not found. Did you forget to load it?'
-                );
-            }
-        }
-    }
-
-    return globalLocale._abbr;
-}
-
-export function defineLocale(name, config) {
-    if (config !== null) {
-        var locale,
-            parentConfig = baseConfig;
-        config.abbr = name;
-        if (locales[name] != null) {
-            deprecateSimple(
-                'defineLocaleOverride',
-                'use moment.updateLocale(localeName, config) to change ' +
-                    'an existing locale. moment.defineLocale(localeName, ' +
-                    'config) should only be used for creating a new locale ' +
-                    'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
-            );
-            parentConfig = locales[name]._config;
-        } else if (config.parentLocale != null) {
-            if (locales[config.parentLocale] != null) {
-                parentConfig = locales[config.parentLocale]._config;
-            } else {
-                locale = loadLocale(config.parentLocale);
-                if (locale != null) {
-                    parentConfig = locale._config;
-                } else {
-                    if (!localeFamilies[config.parentLocale]) {
-                        localeFamilies[config.parentLocale] = [];
-                    }
-                    localeFamilies[config.parentLocale].push({
-                        name: name,
-                        config: config,
-                    });
-                    return null;
-                }
-            }
-        }
-        locales[name] = new Locale(mergeConfigs(parentConfig, config));
-
-        if (localeFamilies[name]) {
-            localeFamilies[name].forEach(function (x) {
-                defineLocale(x.name, x.config);
-            });
-        }
-
-        // backwards compat for now: also set the locale
-        // make sure we set the locale AFTER all child locales have been
-        // created, so we won't end up with the child locale set.
-        getSetGlobalLocale(name);
-
-        return locales[name];
-    } else {
-        // useful for testing
-        delete locales[name];
-        return null;
-    }
-}
-
-export function updateLocale(name, config) {
-    if (config != null) {
-        var locale,
-            tmpLocale,
-            parentConfig = baseConfig;
-
-        if (locales[name] != null && locales[name].parentLocale != null) {
-            // Update existing child locale in-place to avoid memory-leaks
-            locales[name].set(mergeConfigs(locales[name]._config, config));
-        } else {
-            // MERGE
-            tmpLocale = loadLocale(name);
-            if (tmpLocale != null) {
-                parentConfig = tmpLocale._config;
-            }
-            config = mergeConfigs(parentConfig, config);
-            if (tmpLocale == null) {
-                // updateLocale is called for creating a new locale
-                // Set abbr so it will have a name (getters return
-                // undefined otherwise).
-                config.abbr = name;
-            }
-            locale = new Locale(config);
-            locale.parentLocale = locales[name];
-            locales[name] = locale;
-        }
-
-        // backwards compat for now: also set the locale
-        getSetGlobalLocale(name);
-    } else {
-        // pass null for config to unupdate, useful for tests
-        if (locales[name] != null) {
-            if (locales[name].parentLocale != null) {
-                locales[name] = locales[name].parentLocale;
-                if (name === getSetGlobalLocale()) {
-                    getSetGlobalLocale(name);
-                }
-            } else if (locales[name] != null) {
-                delete locales[name];
-            }
-        }
-    }
-    return locales[name];
-}
-
-// returns locale data
-export function getLocale(key) {
-    var locale;
-
-    if (key && key._locale && key._locale._abbr) {
-        key = key._locale._abbr;
-    }
-
-    if (!key) {
-        return globalLocale;
-    }
-
-    if (!isArray(key)) {
-        //short-circuit everything else
-        locale = loadLocale(key);
-        if (locale) {
-            return locale;
-        }
-        key = [key];
-    }
-
-    return chooseLocale(key);
-}
-
-export function listLocales() {
-    return keys(locales);
-}
Index: ckend/node_modules/moment/src/lib/locale/ordinal.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/ordinal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-var defaultOrdinal = '%d',
-    defaultDayOfMonthOrdinalParse = /\d{1,2}/;
-
-export { defaultOrdinal, defaultDayOfMonthOrdinalParse };
-
-export function ordinal(number) {
-    return this._ordinal.replace('%d', number);
-}
Index: ckend/node_modules/moment/src/lib/locale/pre-post-format.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/pre-post-format.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export function preParsePostFormat(string) {
-    return string;
-}
Index: ckend/node_modules/moment/src/lib/locale/prototype.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/prototype.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,88 +1,0 @@
-import { Locale } from './constructor';
-
-var proto = Locale.prototype;
-
-import { calendar } from './calendar';
-import { longDateFormat } from './formats';
-import { invalidDate } from './invalid';
-import { ordinal } from './ordinal';
-import { preParsePostFormat } from './pre-post-format';
-import { relativeTime, pastFuture } from './relative';
-import { set } from './set';
-
-proto.calendar = calendar;
-proto.longDateFormat = longDateFormat;
-proto.invalidDate = invalidDate;
-proto.ordinal = ordinal;
-proto.preparse = preParsePostFormat;
-proto.postformat = preParsePostFormat;
-proto.relativeTime = relativeTime;
-proto.pastFuture = pastFuture;
-proto.set = set;
-
-// Eras
-import {
-    localeEras,
-    localeErasParse,
-    localeErasConvertYear,
-    erasAbbrRegex,
-    erasNameRegex,
-    erasNarrowRegex,
-} from '../units/era';
-proto.eras = localeEras;
-proto.erasParse = localeErasParse;
-proto.erasConvertYear = localeErasConvertYear;
-proto.erasAbbrRegex = erasAbbrRegex;
-proto.erasNameRegex = erasNameRegex;
-proto.erasNarrowRegex = erasNarrowRegex;
-
-// Month
-import {
-    localeMonthsParse,
-    localeMonths,
-    localeMonthsShort,
-    monthsRegex,
-    monthsShortRegex,
-} from '../units/month';
-
-proto.months = localeMonths;
-proto.monthsShort = localeMonthsShort;
-proto.monthsParse = localeMonthsParse;
-proto.monthsRegex = monthsRegex;
-proto.monthsShortRegex = monthsShortRegex;
-
-// Week
-import {
-    localeWeek,
-    localeFirstDayOfYear,
-    localeFirstDayOfWeek,
-} from '../units/week';
-proto.week = localeWeek;
-proto.firstDayOfYear = localeFirstDayOfYear;
-proto.firstDayOfWeek = localeFirstDayOfWeek;
-
-// Day of Week
-import {
-    localeWeekdaysParse,
-    localeWeekdays,
-    localeWeekdaysMin,
-    localeWeekdaysShort,
-    weekdaysRegex,
-    weekdaysShortRegex,
-    weekdaysMinRegex,
-} from '../units/day-of-week';
-
-proto.weekdays = localeWeekdays;
-proto.weekdaysMin = localeWeekdaysMin;
-proto.weekdaysShort = localeWeekdaysShort;
-proto.weekdaysParse = localeWeekdaysParse;
-
-proto.weekdaysRegex = weekdaysRegex;
-proto.weekdaysShortRegex = weekdaysShortRegex;
-proto.weekdaysMinRegex = weekdaysMinRegex;
-
-// Hours
-import { localeIsPM, localeMeridiem } from '../units/hour';
-
-proto.isPM = localeIsPM;
-proto.meridiem = localeMeridiem;
Index: ckend/node_modules/moment/src/lib/locale/relative.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/relative.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-export var defaultRelativeTime = {
-    future: 'in %s',
-    past: '%s ago',
-    s: 'a few seconds',
-    ss: '%d seconds',
-    m: 'a minute',
-    mm: '%d minutes',
-    h: 'an hour',
-    hh: '%d hours',
-    d: 'a day',
-    dd: '%d days',
-    w: 'a week',
-    ww: '%d weeks',
-    M: 'a month',
-    MM: '%d months',
-    y: 'a year',
-    yy: '%d years',
-};
-
-import isFunction from '../utils/is-function';
-
-export function relativeTime(number, withoutSuffix, string, isFuture) {
-    var output = this._relativeTime[string];
-    return isFunction(output)
-        ? output(number, withoutSuffix, string, isFuture)
-        : output.replace(/%d/i, number);
-}
-
-export function pastFuture(diff, output) {
-    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
-    return isFunction(format) ? format(output) : format.replace(/%s/i, output);
-}
Index: ckend/node_modules/moment/src/lib/locale/set.js
===================================================================
--- backend/node_modules/moment/src/lib/locale/set.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-import isFunction from '../utils/is-function';
-import extend from '../utils/extend';
-import isObject from '../utils/is-object';
-import hasOwnProp from '../utils/has-own-prop';
-
-export function set(config) {
-    var prop, i;
-    for (i in config) {
-        if (hasOwnProp(config, i)) {
-            prop = config[i];
-            if (isFunction(prop)) {
-                this[i] = prop;
-            } else {
-                this['_' + i] = prop;
-            }
-        }
-    }
-    this._config = config;
-    // Lenient ordinal parsing accepts just a number in addition to
-    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
-    // TODO: Remove "ordinalParse" fallback in next major release.
-    this._dayOfMonthOrdinalParseLenient = new RegExp(
-        (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
-            '|' +
-            /\d{1,2}/.source
-    );
-}
-
-export function mergeConfigs(parentConfig, childConfig) {
-    var res = extend({}, parentConfig),
-        prop;
-    for (prop in childConfig) {
-        if (hasOwnProp(childConfig, prop)) {
-            if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
-                res[prop] = {};
-                extend(res[prop], parentConfig[prop]);
-                extend(res[prop], childConfig[prop]);
-            } else if (childConfig[prop] != null) {
-                res[prop] = childConfig[prop];
-            } else {
-                delete res[prop];
-            }
-        }
-    }
-    for (prop in parentConfig) {
-        if (
-            hasOwnProp(parentConfig, prop) &&
-            !hasOwnProp(childConfig, prop) &&
-            isObject(parentConfig[prop])
-        ) {
-            // make sure changes to properties don't modify parent config
-            res[prop] = extend({}, res[prop]);
-        }
-    }
-    return res;
-}
Index: ckend/node_modules/moment/src/lib/moment/add-subtract.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/add-subtract.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,61 +1,0 @@
-import { get, set } from './get-set';
-import { setMonth } from '../units/month';
-import { createDuration } from '../duration/create';
-import { deprecateSimple } from '../utils/deprecate';
-import { hooks } from '../utils/hooks';
-import absRound from '../utils/abs-round';
-
-// TODO: remove 'name' arg after deprecation is removed
-function createAdder(direction, name) {
-    return function (val, period) {
-        var dur, tmp;
-        //invert the arguments, but complain about it
-        if (period !== null && !isNaN(+period)) {
-            deprecateSimple(
-                name,
-                'moment().' +
-                    name +
-                    '(period, number) is deprecated. Please use moment().' +
-                    name +
-                    '(number, period). ' +
-                    'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
-            );
-            tmp = val;
-            val = period;
-            period = tmp;
-        }
-
-        dur = createDuration(val, period);
-        addSubtract(this, dur, direction);
-        return this;
-    };
-}
-
-export function addSubtract(mom, duration, isAdding, updateOffset) {
-    var milliseconds = duration._milliseconds,
-        days = absRound(duration._days),
-        months = absRound(duration._months);
-
-    if (!mom.isValid()) {
-        // No op
-        return;
-    }
-
-    updateOffset = updateOffset == null ? true : updateOffset;
-
-    if (months) {
-        setMonth(mom, get(mom, 'Month') + months * isAdding);
-    }
-    if (days) {
-        set(mom, 'Date', get(mom, 'Date') + days * isAdding);
-    }
-    if (milliseconds) {
-        mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
-    }
-    if (updateOffset) {
-        hooks.updateOffset(mom, days || months);
-    }
-}
-
-export var add = createAdder(1, 'add'),
-    subtract = createAdder(-1, 'subtract');
Index: ckend/node_modules/moment/src/lib/moment/calendar.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/calendar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-import { createLocal } from '../create/local';
-import { cloneWithOffset } from '../units/offset';
-import isFunction from '../utils/is-function';
-import { hooks } from '../utils/hooks';
-import { isMomentInput } from '../utils/is-moment-input';
-import isCalendarSpec from '../utils/is-calendar-spec';
-
-export function getCalendarFormat(myMoment, now) {
-    var diff = myMoment.diff(now, 'days', true);
-    return diff < -6
-        ? 'sameElse'
-        : diff < -1
-          ? 'lastWeek'
-          : diff < 0
-            ? 'lastDay'
-            : diff < 1
-              ? 'sameDay'
-              : diff < 2
-                ? 'nextDay'
-                : diff < 7
-                  ? 'nextWeek'
-                  : 'sameElse';
-}
-
-export function calendar(time, formats) {
-    // Support for single parameter, formats only overload to the calendar function
-    if (arguments.length === 1) {
-        if (!arguments[0]) {
-            time = undefined;
-            formats = undefined;
-        } else if (isMomentInput(arguments[0])) {
-            time = arguments[0];
-            formats = undefined;
-        } else if (isCalendarSpec(arguments[0])) {
-            formats = arguments[0];
-            time = undefined;
-        }
-    }
-    // We want to compare the start of today, vs this.
-    // Getting start-of-today depends on whether we're local/utc/offset or not.
-    var now = time || createLocal(),
-        sod = cloneWithOffset(now, this).startOf('day'),
-        format = hooks.calendarFormat(this, sod) || 'sameElse',
-        output =
-            formats &&
-            (isFunction(formats[format])
-                ? formats[format].call(this, now)
-                : formats[format]);
-
-    return this.format(
-        output || this.localeData().calendar(format, this, createLocal(now))
-    );
-}
Index: ckend/node_modules/moment/src/lib/moment/clone.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/clone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import { Moment } from './constructor';
-
-export function clone() {
-    return new Moment(this);
-}
Index: ckend/node_modules/moment/src/lib/moment/compare.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/compare.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,72 +1,0 @@
-import { isMoment } from './constructor';
-import { normalizeUnits } from '../units/aliases';
-import { createLocal } from '../create/local';
-
-export function isAfter(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input);
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() > localInput.valueOf();
-    } else {
-        return localInput.valueOf() < this.clone().startOf(units).valueOf();
-    }
-}
-
-export function isBefore(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input);
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() < localInput.valueOf();
-    } else {
-        return this.clone().endOf(units).valueOf() < localInput.valueOf();
-    }
-}
-
-export function isBetween(from, to, units, inclusivity) {
-    var localFrom = isMoment(from) ? from : createLocal(from),
-        localTo = isMoment(to) ? to : createLocal(to);
-    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
-        return false;
-    }
-    inclusivity = inclusivity || '()';
-    return (
-        (inclusivity[0] === '('
-            ? this.isAfter(localFrom, units)
-            : !this.isBefore(localFrom, units)) &&
-        (inclusivity[1] === ')'
-            ? this.isBefore(localTo, units)
-            : !this.isAfter(localTo, units))
-    );
-}
-
-export function isSame(input, units) {
-    var localInput = isMoment(input) ? input : createLocal(input),
-        inputMs;
-    if (!(this.isValid() && localInput.isValid())) {
-        return false;
-    }
-    units = normalizeUnits(units) || 'millisecond';
-    if (units === 'millisecond') {
-        return this.valueOf() === localInput.valueOf();
-    } else {
-        inputMs = localInput.valueOf();
-        return (
-            this.clone().startOf(units).valueOf() <= inputMs &&
-            inputMs <= this.clone().endOf(units).valueOf()
-        );
-    }
-}
-
-export function isSameOrAfter(input, units) {
-    return this.isSame(input, units) || this.isAfter(input, units);
-}
-
-export function isSameOrBefore(input, units) {
-    return this.isSame(input, units) || this.isBefore(input, units);
-}
Index: ckend/node_modules/moment/src/lib/moment/constructor.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/constructor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,80 +1,0 @@
-import { hooks } from '../utils/hooks';
-import isUndefined from '../utils/is-undefined';
-import getParsingFlags from '../create/parsing-flags';
-
-// Plugins that add properties should also add the key here (null value),
-// so we can properly clone ourselves.
-var momentProperties = (hooks.momentProperties = []),
-    updateInProgress = false;
-
-export function copyConfig(to, from) {
-    var i,
-        prop,
-        val,
-        momentPropertiesLen = momentProperties.length;
-
-    if (!isUndefined(from._isAMomentObject)) {
-        to._isAMomentObject = from._isAMomentObject;
-    }
-    if (!isUndefined(from._i)) {
-        to._i = from._i;
-    }
-    if (!isUndefined(from._f)) {
-        to._f = from._f;
-    }
-    if (!isUndefined(from._l)) {
-        to._l = from._l;
-    }
-    if (!isUndefined(from._strict)) {
-        to._strict = from._strict;
-    }
-    if (!isUndefined(from._tzm)) {
-        to._tzm = from._tzm;
-    }
-    if (!isUndefined(from._isUTC)) {
-        to._isUTC = from._isUTC;
-    }
-    if (!isUndefined(from._offset)) {
-        to._offset = from._offset;
-    }
-    if (!isUndefined(from._pf)) {
-        to._pf = getParsingFlags(from);
-    }
-    if (!isUndefined(from._locale)) {
-        to._locale = from._locale;
-    }
-
-    if (momentPropertiesLen > 0) {
-        for (i = 0; i < momentPropertiesLen; i++) {
-            prop = momentProperties[i];
-            val = from[prop];
-            if (!isUndefined(val)) {
-                to[prop] = val;
-            }
-        }
-    }
-
-    return to;
-}
-
-// Moment prototype object
-export function Moment(config) {
-    copyConfig(this, config);
-    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
-    if (!this.isValid()) {
-        this._d = new Date(NaN);
-    }
-    // Prevent infinite loop in case updateOffset creates new moment
-    // objects.
-    if (updateInProgress === false) {
-        updateInProgress = true;
-        hooks.updateOffset(this);
-        updateInProgress = false;
-    }
-}
-
-export function isMoment(obj) {
-    return (
-        obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
-    );
-}
Index: ckend/node_modules/moment/src/lib/moment/creation-data.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/creation-data.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-export function creationData() {
-    return {
-        input: this._i,
-        format: this._f,
-        locale: this._locale,
-        isUTC: this._isUTC,
-        strict: this._strict,
-    };
-}
Index: ckend/node_modules/moment/src/lib/moment/diff.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/diff.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-import absFloor from '../utils/abs-floor';
-import { cloneWithOffset } from '../units/offset';
-import { normalizeUnits } from '../units/aliases';
-
-export function diff(input, units, asFloat) {
-    var that, zoneDelta, output;
-
-    if (!this.isValid()) {
-        return NaN;
-    }
-
-    that = cloneWithOffset(input, this);
-
-    if (!that.isValid()) {
-        return NaN;
-    }
-
-    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
-
-    units = normalizeUnits(units);
-
-    switch (units) {
-        case 'year':
-            output = monthDiff(this, that) / 12;
-            break;
-        case 'month':
-            output = monthDiff(this, that);
-            break;
-        case 'quarter':
-            output = monthDiff(this, that) / 3;
-            break;
-        case 'second':
-            output = (this - that) / 1e3;
-            break; // 1000
-        case 'minute':
-            output = (this - that) / 6e4;
-            break; // 1000 * 60
-        case 'hour':
-            output = (this - that) / 36e5;
-            break; // 1000 * 60 * 60
-        case 'day':
-            output = (this - that - zoneDelta) / 864e5;
-            break; // 1000 * 60 * 60 * 24, negate dst
-        case 'week':
-            output = (this - that - zoneDelta) / 6048e5;
-            break; // 1000 * 60 * 60 * 24 * 7, negate dst
-        default:
-            output = this - that;
-    }
-
-    return asFloat ? output : absFloor(output);
-}
-
-function monthDiff(a, b) {
-    if (a.date() < b.date()) {
-        // end-of-month calculations work correct when the start month has more
-        // days than the end month.
-        return -monthDiff(b, a);
-    }
-    // difference in months
-    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
-        // b is in (anchor - 1 month, anchor + 1 month)
-        anchor = a.clone().add(wholeMonthDiff, 'months'),
-        anchor2,
-        adjust;
-
-    if (b - anchor < 0) {
-        anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
-        // linear across the month
-        adjust = (b - anchor) / (anchor - anchor2);
-    } else {
-        anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
-        // linear across the month
-        adjust = (b - anchor) / (anchor2 - anchor);
-    }
-
-    //check for negative zero, return zero if negative zero
-    return -(wholeMonthDiff + adjust) || 0;
-}
Index: ckend/node_modules/moment/src/lib/moment/format.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/format.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-import { formatMoment } from '../format/format';
-import { hooks } from '../utils/hooks';
-import isFunction from '../utils/is-function';
-
-hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
-
-export function toString() {
-    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
-}
-
-export function toISOString(keepOffset) {
-    if (!this.isValid()) {
-        return null;
-    }
-    var utc = keepOffset !== true,
-        m = utc ? this.clone().utc() : this;
-    if (m.year() < 0 || m.year() > 9999) {
-        return formatMoment(
-            m,
-            utc
-                ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
-                : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
-        );
-    }
-    if (isFunction(Date.prototype.toISOString)) {
-        // native implementation is ~50x faster, use it when we can
-        if (utc) {
-            return this.toDate().toISOString();
-        } else {
-            return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
-                .toISOString()
-                .replace('Z', formatMoment(m, 'Z'));
-        }
-    }
-    return formatMoment(
-        m,
-        utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
-    );
-}
-
-/**
- * Return a human readable representation of a moment that can
- * also be evaluated to get a new moment which is the same
- *
- * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
- */
-export function inspect() {
-    if (!this.isValid()) {
-        return 'moment.invalid(/* ' + this._i + ' */)';
-    }
-    var func = 'moment',
-        zone = '',
-        prefix,
-        year,
-        datetime,
-        suffix;
-    if (!this.isLocal()) {
-        func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
-        zone = 'Z';
-    }
-    prefix = '[' + func + '("]';
-    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
-    datetime = '-MM-DD[T]HH:mm:ss.SSS';
-    suffix = zone + '[")]';
-
-    return this.format(prefix + year + datetime + suffix);
-}
-
-export function format(inputString) {
-    if (!inputString) {
-        inputString = this.isUtc()
-            ? hooks.defaultFormatUtc
-            : hooks.defaultFormat;
-    }
-    var output = formatMoment(this, inputString);
-    return this.localeData().postformat(output);
-}
Index: ckend/node_modules/moment/src/lib/moment/from.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/from.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { createDuration } from '../duration/create';
-import { createLocal } from '../create/local';
-import { isMoment } from '../moment/constructor';
-
-export function from(time, withoutSuffix) {
-    if (
-        this.isValid() &&
-        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-    ) {
-        return createDuration({ to: this, from: time })
-            .locale(this.locale())
-            .humanize(!withoutSuffix);
-    } else {
-        return this.localeData().invalidDate();
-    }
-}
-
-export function fromNow(withoutSuffix) {
-    return this.from(createLocal(), withoutSuffix);
-}
Index: ckend/node_modules/moment/src/lib/moment/get-set.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/get-set.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-import { normalizeUnits, normalizeObjectUnits } from '../units/aliases';
-import { getPrioritizedUnits } from '../units/priorities';
-import { hooks } from '../utils/hooks';
-import isFunction from '../utils/is-function';
-import { isLeapYear } from '../units/year';
-
-export function makeGetSet(unit, keepTime) {
-    return function (value) {
-        if (value != null) {
-            set(this, unit, value);
-            hooks.updateOffset(this, keepTime);
-            return this;
-        } else {
-            return get(this, unit);
-        }
-    };
-}
-
-export function get(mom, unit) {
-    if (!mom.isValid()) {
-        return NaN;
-    }
-
-    var d = mom._d,
-        isUTC = mom._isUTC;
-
-    switch (unit) {
-        case 'Milliseconds':
-            return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
-        case 'Seconds':
-            return isUTC ? d.getUTCSeconds() : d.getSeconds();
-        case 'Minutes':
-            return isUTC ? d.getUTCMinutes() : d.getMinutes();
-        case 'Hours':
-            return isUTC ? d.getUTCHours() : d.getHours();
-        case 'Date':
-            return isUTC ? d.getUTCDate() : d.getDate();
-        case 'Day':
-            return isUTC ? d.getUTCDay() : d.getDay();
-        case 'Month':
-            return isUTC ? d.getUTCMonth() : d.getMonth();
-        case 'FullYear':
-            return isUTC ? d.getUTCFullYear() : d.getFullYear();
-        default:
-            return NaN; // Just in case
-    }
-}
-
-export function set(mom, unit, value) {
-    var d, isUTC, year, month, date;
-
-    if (!mom.isValid() || isNaN(value)) {
-        return;
-    }
-
-    d = mom._d;
-    isUTC = mom._isUTC;
-
-    switch (unit) {
-        case 'Milliseconds':
-            return void (isUTC
-                ? d.setUTCMilliseconds(value)
-                : d.setMilliseconds(value));
-        case 'Seconds':
-            return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
-        case 'Minutes':
-            return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
-        case 'Hours':
-            return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
-        case 'Date':
-            return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
-        // case 'Day': // Not real
-        //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
-        // case 'Month': // Not used because we need to pass two variables
-        //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
-        case 'FullYear':
-            break; // See below ...
-        default:
-            return; // Just in case
-    }
-
-    year = value;
-    month = mom.month();
-    date = mom.date();
-    date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
-    void (isUTC
-        ? d.setUTCFullYear(year, month, date)
-        : d.setFullYear(year, month, date));
-}
-
-// MOMENTS
-
-export function stringGet(units) {
-    units = normalizeUnits(units);
-    if (isFunction(this[units])) {
-        return this[units]();
-    }
-    return this;
-}
-
-export function stringSet(units, value) {
-    if (typeof units === 'object') {
-        units = normalizeObjectUnits(units);
-        var prioritized = getPrioritizedUnits(units),
-            i,
-            prioritizedLen = prioritized.length;
-        for (i = 0; i < prioritizedLen; i++) {
-            this[prioritized[i].unit](units[prioritized[i].unit]);
-        }
-    } else {
-        units = normalizeUnits(units);
-        if (isFunction(this[units])) {
-            return this[units](value);
-        }
-    }
-    return this;
-}
Index: ckend/node_modules/moment/src/lib/moment/locale.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/locale.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-import { getLocale } from '../locale/locales';
-import { deprecate } from '../utils/deprecate';
-
-// If passed a locale key, it will set the locale for this
-// instance.  Otherwise, it will return the locale configuration
-// variables for this instance.
-export function locale(key) {
-    var newLocaleData;
-
-    if (key === undefined) {
-        return this._locale._abbr;
-    } else {
-        newLocaleData = getLocale(key);
-        if (newLocaleData != null) {
-            this._locale = newLocaleData;
-        }
-        return this;
-    }
-}
-
-export var lang = deprecate(
-    'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
-    function (key) {
-        if (key === undefined) {
-            return this.localeData();
-        } else {
-            return this.locale(key);
-        }
-    }
-);
-
-export function localeData() {
-    return this._locale;
-}
Index: ckend/node_modules/moment/src/lib/moment/min-max.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/min-max.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-import { deprecate } from '../utils/deprecate';
-import isArray from '../utils/is-array';
-import { createLocal } from '../create/local';
-import { createInvalid } from '../create/valid';
-
-export var prototypeMin = deprecate(
-        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
-        function () {
-            var other = createLocal.apply(null, arguments);
-            if (this.isValid() && other.isValid()) {
-                return other < this ? this : other;
-            } else {
-                return createInvalid();
-            }
-        }
-    ),
-    prototypeMax = deprecate(
-        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
-        function () {
-            var other = createLocal.apply(null, arguments);
-            if (this.isValid() && other.isValid()) {
-                return other > this ? this : other;
-            } else {
-                return createInvalid();
-            }
-        }
-    );
-
-// Pick a moment m from moments so that m[fn](other) is true for all
-// other. This relies on the function fn to be transitive.
-//
-// moments should either be an array of moment objects or an array, whose
-// first element is an array of moment objects.
-function pickBy(fn, moments) {
-    var res, i;
-    if (moments.length === 1 && isArray(moments[0])) {
-        moments = moments[0];
-    }
-    if (!moments.length) {
-        return createLocal();
-    }
-    res = moments[0];
-    for (i = 1; i < moments.length; ++i) {
-        if (!moments[i].isValid() || moments[i][fn](res)) {
-            res = moments[i];
-        }
-    }
-    return res;
-}
-
-// TODO: Use [].sort instead?
-export function min() {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isBefore', args);
-}
-
-export function max() {
-    var args = [].slice.call(arguments, 0);
-
-    return pickBy('isAfter', args);
-}
Index: ckend/node_modules/moment/src/lib/moment/moment.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/moment.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import { createLocal } from '../create/local';
-import { createUTC } from '../create/utc';
-import { createInvalid } from '../create/valid';
-import { isMoment } from './constructor';
-import { min, max } from './min-max';
-import { now } from './now';
-import momentPrototype from './prototype';
-
-function createUnix(input) {
-    return createLocal(input * 1000);
-}
-
-function createInZone() {
-    return createLocal.apply(null, arguments).parseZone();
-}
-
-export {
-    now,
-    min,
-    max,
-    isMoment,
-    createUTC,
-    createUnix,
-    createLocal,
-    createInZone,
-    createInvalid,
-    momentPrototype,
-};
Index: ckend/node_modules/moment/src/lib/moment/now.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/now.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export var now = function () {
-    return Date.now ? Date.now() : +new Date();
-};
Index: ckend/node_modules/moment/src/lib/moment/prototype.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/prototype.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,197 +1,0 @@
-import { Moment } from './constructor';
-
-var proto = Moment.prototype;
-
-import { add, subtract } from './add-subtract';
-import { calendar } from './calendar';
-import { clone } from './clone';
-import {
-    isBefore,
-    isBetween,
-    isSame,
-    isAfter,
-    isSameOrAfter,
-    isSameOrBefore,
-} from './compare';
-import { diff } from './diff';
-import { format, toString, toISOString, inspect } from './format';
-import { from, fromNow } from './from';
-import { to, toNow } from './to';
-import { stringGet, stringSet } from './get-set';
-import { locale, localeData, lang } from './locale';
-import { prototypeMin, prototypeMax } from './min-max';
-import { startOf, endOf } from './start-end-of';
-import { valueOf, toDate, toArray, toObject, toJSON, unix } from './to-type';
-import { isValid, parsingFlags, invalidAt } from './valid';
-import { creationData } from './creation-data';
-
-proto.add = add;
-proto.calendar = calendar;
-proto.clone = clone;
-proto.diff = diff;
-proto.endOf = endOf;
-proto.format = format;
-proto.from = from;
-proto.fromNow = fromNow;
-proto.to = to;
-proto.toNow = toNow;
-proto.get = stringGet;
-proto.invalidAt = invalidAt;
-proto.isAfter = isAfter;
-proto.isBefore = isBefore;
-proto.isBetween = isBetween;
-proto.isSame = isSame;
-proto.isSameOrAfter = isSameOrAfter;
-proto.isSameOrBefore = isSameOrBefore;
-proto.isValid = isValid;
-proto.lang = lang;
-proto.locale = locale;
-proto.localeData = localeData;
-proto.max = prototypeMax;
-proto.min = prototypeMin;
-proto.parsingFlags = parsingFlags;
-proto.set = stringSet;
-proto.startOf = startOf;
-proto.subtract = subtract;
-proto.toArray = toArray;
-proto.toObject = toObject;
-proto.toDate = toDate;
-proto.toISOString = toISOString;
-proto.inspect = inspect;
-if (typeof Symbol !== 'undefined' && Symbol.for != null) {
-    proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
-        return 'Moment<' + this.format() + '>';
-    };
-}
-proto.toJSON = toJSON;
-proto.toString = toString;
-proto.unix = unix;
-proto.valueOf = valueOf;
-proto.creationData = creationData;
-
-// Era
-import { getEraName, getEraNarrow, getEraAbbr, getEraYear } from '../units/era';
-proto.eraName = getEraName;
-proto.eraNarrow = getEraNarrow;
-proto.eraAbbr = getEraAbbr;
-proto.eraYear = getEraYear;
-
-// Year
-import { getSetYear, getIsLeapYear } from '../units/year';
-proto.year = getSetYear;
-proto.isLeapYear = getIsLeapYear;
-
-// Week Year
-import {
-    getSetWeekYear,
-    getSetISOWeekYear,
-    getWeeksInYear,
-    getWeeksInWeekYear,
-    getISOWeeksInYear,
-    getISOWeeksInISOWeekYear,
-} from '../units/week-year';
-proto.weekYear = getSetWeekYear;
-proto.isoWeekYear = getSetISOWeekYear;
-
-// Quarter
-import { getSetQuarter } from '../units/quarter';
-proto.quarter = proto.quarters = getSetQuarter;
-
-// Month
-import { getSetMonth, getDaysInMonth } from '../units/month';
-proto.month = getSetMonth;
-proto.daysInMonth = getDaysInMonth;
-
-// Week
-import { getSetWeek, getSetISOWeek } from '../units/week';
-proto.week = proto.weeks = getSetWeek;
-proto.isoWeek = proto.isoWeeks = getSetISOWeek;
-proto.weeksInYear = getWeeksInYear;
-proto.weeksInWeekYear = getWeeksInWeekYear;
-proto.isoWeeksInYear = getISOWeeksInYear;
-proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
-
-// Day
-import { getSetDayOfMonth } from '../units/day-of-month';
-import {
-    getSetDayOfWeek,
-    getSetISODayOfWeek,
-    getSetLocaleDayOfWeek,
-} from '../units/day-of-week';
-import { getSetDayOfYear } from '../units/day-of-year';
-proto.date = getSetDayOfMonth;
-proto.day = proto.days = getSetDayOfWeek;
-proto.weekday = getSetLocaleDayOfWeek;
-proto.isoWeekday = getSetISODayOfWeek;
-proto.dayOfYear = getSetDayOfYear;
-
-// Hour
-import { getSetHour } from '../units/hour';
-proto.hour = proto.hours = getSetHour;
-
-// Minute
-import { getSetMinute } from '../units/minute';
-proto.minute = proto.minutes = getSetMinute;
-
-// Second
-import { getSetSecond } from '../units/second';
-proto.second = proto.seconds = getSetSecond;
-
-// Millisecond
-import { getSetMillisecond } from '../units/millisecond';
-proto.millisecond = proto.milliseconds = getSetMillisecond;
-
-// Offset
-import {
-    getSetOffset,
-    setOffsetToUTC,
-    setOffsetToLocal,
-    setOffsetToParsedOffset,
-    hasAlignedHourOffset,
-    isDaylightSavingTime,
-    isDaylightSavingTimeShifted,
-    getSetZone,
-    isLocal,
-    isUtcOffset,
-    isUtc,
-} from '../units/offset';
-proto.utcOffset = getSetOffset;
-proto.utc = setOffsetToUTC;
-proto.local = setOffsetToLocal;
-proto.parseZone = setOffsetToParsedOffset;
-proto.hasAlignedHourOffset = hasAlignedHourOffset;
-proto.isDST = isDaylightSavingTime;
-proto.isLocal = isLocal;
-proto.isUtcOffset = isUtcOffset;
-proto.isUtc = isUtc;
-proto.isUTC = isUtc;
-
-// Timezone
-import { getZoneAbbr, getZoneName } from '../units/timezone';
-proto.zoneAbbr = getZoneAbbr;
-proto.zoneName = getZoneName;
-
-// Deprecations
-import { deprecate } from '../utils/deprecate';
-proto.dates = deprecate(
-    'dates accessor is deprecated. Use date instead.',
-    getSetDayOfMonth
-);
-proto.months = deprecate(
-    'months accessor is deprecated. Use month instead',
-    getSetMonth
-);
-proto.years = deprecate(
-    'years accessor is deprecated. Use year instead',
-    getSetYear
-);
-proto.zone = deprecate(
-    'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
-    getSetZone
-);
-proto.isDSTShifted = deprecate(
-    'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
-    isDaylightSavingTimeShifted
-);
-
-export default proto;
Index: ckend/node_modules/moment/src/lib/moment/start-end-of.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/start-end-of.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,164 +1,0 @@
-import { normalizeUnits } from '../units/aliases';
-import { hooks } from '../utils/hooks';
-
-var MS_PER_SECOND = 1000,
-    MS_PER_MINUTE = 60 * MS_PER_SECOND,
-    MS_PER_HOUR = 60 * MS_PER_MINUTE,
-    MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
-
-// actual modulo - handles negative numbers (for dates before 1970):
-function mod(dividend, divisor) {
-    return ((dividend % divisor) + divisor) % divisor;
-}
-
-function localStartOfDate(y, m, d) {
-    // the date constructor remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        return new Date(y + 400, m, d) - MS_PER_400_YEARS;
-    } else {
-        return new Date(y, m, d).valueOf();
-    }
-}
-
-function utcStartOfDate(y, m, d) {
-    // Date.UTC remaps years 0-99 to 1900-1999
-    if (y < 100 && y >= 0) {
-        // preserve leap years using a full 400 year cycle, then reset
-        return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
-    } else {
-        return Date.UTC(y, m, d);
-    }
-}
-
-export function startOf(units) {
-    var time, startOfDate;
-    units = normalizeUnits(units);
-    if (units === undefined || units === 'millisecond' || !this.isValid()) {
-        return this;
-    }
-
-    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-    switch (units) {
-        case 'year':
-            time = startOfDate(this.year(), 0, 1);
-            break;
-        case 'quarter':
-            time = startOfDate(
-                this.year(),
-                this.month() - (this.month() % 3),
-                1
-            );
-            break;
-        case 'month':
-            time = startOfDate(this.year(), this.month(), 1);
-            break;
-        case 'week':
-            time = startOfDate(
-                this.year(),
-                this.month(),
-                this.date() - this.weekday()
-            );
-            break;
-        case 'isoWeek':
-            time = startOfDate(
-                this.year(),
-                this.month(),
-                this.date() - (this.isoWeekday() - 1)
-            );
-            break;
-        case 'day':
-        case 'date':
-            time = startOfDate(this.year(), this.month(), this.date());
-            break;
-        case 'hour':
-            time = this._d.valueOf();
-            time -= mod(
-                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                MS_PER_HOUR
-            );
-            break;
-        case 'minute':
-            time = this._d.valueOf();
-            time -= mod(time, MS_PER_MINUTE);
-            break;
-        case 'second':
-            time = this._d.valueOf();
-            time -= mod(time, MS_PER_SECOND);
-            break;
-    }
-
-    this._d.setTime(time);
-    hooks.updateOffset(this, true);
-    return this;
-}
-
-export function endOf(units) {
-    var time, startOfDate;
-    units = normalizeUnits(units);
-    if (units === undefined || units === 'millisecond' || !this.isValid()) {
-        return this;
-    }
-
-    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
-
-    switch (units) {
-        case 'year':
-            time = startOfDate(this.year() + 1, 0, 1) - 1;
-            break;
-        case 'quarter':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month() - (this.month() % 3) + 3,
-                    1
-                ) - 1;
-            break;
-        case 'month':
-            time = startOfDate(this.year(), this.month() + 1, 1) - 1;
-            break;
-        case 'week':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - this.weekday() + 7
-                ) - 1;
-            break;
-        case 'isoWeek':
-            time =
-                startOfDate(
-                    this.year(),
-                    this.month(),
-                    this.date() - (this.isoWeekday() - 1) + 7
-                ) - 1;
-            break;
-        case 'day':
-        case 'date':
-            time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
-            break;
-        case 'hour':
-            time = this._d.valueOf();
-            time +=
-                MS_PER_HOUR -
-                mod(
-                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
-                    MS_PER_HOUR
-                ) -
-                1;
-            break;
-        case 'minute':
-            time = this._d.valueOf();
-            time += MS_PER_MINUTE - mod(time, MS_PER_MINUTE) - 1;
-            break;
-        case 'second':
-            time = this._d.valueOf();
-            time += MS_PER_SECOND - mod(time, MS_PER_SECOND) - 1;
-            break;
-    }
-
-    this._d.setTime(time);
-    hooks.updateOffset(this, true);
-    return this;
-}
Index: ckend/node_modules/moment/src/lib/moment/to-type.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/to-type.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-export function valueOf() {
-    return this._d.valueOf() - (this._offset || 0) * 60000;
-}
-
-export function unix() {
-    return Math.floor(this.valueOf() / 1000);
-}
-
-export function toDate() {
-    return new Date(this.valueOf());
-}
-
-export function toArray() {
-    var m = this;
-    return [
-        m.year(),
-        m.month(),
-        m.date(),
-        m.hour(),
-        m.minute(),
-        m.second(),
-        m.millisecond(),
-    ];
-}
-
-export function toObject() {
-    var m = this;
-    return {
-        years: m.year(),
-        months: m.month(),
-        date: m.date(),
-        hours: m.hours(),
-        minutes: m.minutes(),
-        seconds: m.seconds(),
-        milliseconds: m.milliseconds(),
-    };
-}
-
-export function toJSON() {
-    // new Date(NaN).toJSON() === null
-    return this.isValid() ? this.toISOString() : null;
-}
Index: ckend/node_modules/moment/src/lib/moment/to.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/to.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { createDuration } from '../duration/create';
-import { createLocal } from '../create/local';
-import { isMoment } from '../moment/constructor';
-
-export function to(time, withoutSuffix) {
-    if (
-        this.isValid() &&
-        ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
-    ) {
-        return createDuration({ from: this, to: time })
-            .locale(this.locale())
-            .humanize(!withoutSuffix);
-    } else {
-        return this.localeData().invalidDate();
-    }
-}
-
-export function toNow(withoutSuffix) {
-    return this.to(createLocal(), withoutSuffix);
-}
Index: ckend/node_modules/moment/src/lib/moment/valid.js
===================================================================
--- backend/node_modules/moment/src/lib/moment/valid.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import { isValid as _isValid } from '../create/valid';
-import extend from '../utils/extend';
-import getParsingFlags from '../create/parsing-flags';
-
-export function isValid() {
-    return _isValid(this);
-}
-
-export function parsingFlags() {
-    return extend({}, getParsingFlags(this));
-}
-
-export function invalidAt() {
-    return getParsingFlags(this).overflow;
-}
Index: ckend/node_modules/moment/src/lib/parse/regex.js
===================================================================
--- backend/node_modules/moment/src/lib/parse/regex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-var match1 = /\d/, //       0 - 9
-    match2 = /\d\d/, //      00 - 99
-    match3 = /\d{3}/, //     000 - 999
-    match4 = /\d{4}/, //    0000 - 9999
-    match6 = /[+-]?\d{6}/, // -999999 - 999999
-    match1to2 = /\d\d?/, //       0 - 99
-    match3to4 = /\d\d\d\d?/, //     999 - 9999
-    match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
-    match1to3 = /\d{1,3}/, //       0 - 999
-    match1to4 = /\d{1,4}/, //       0 - 9999
-    match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
-    matchUnsigned = /\d+/, //       0 - inf
-    matchSigned = /[+-]?\d+/, //    -inf - inf
-    matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
-    matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
-    matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
-    // any word (or two) characters or numbers including two/three word month in arabic.
-    // includes scottish gaelic two word and hyphenated months
-    matchWord =
-        /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
-    match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
-    match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
-    regexes;
-
-export {
-    match1,
-    match2,
-    match3,
-    match4,
-    match6,
-    match1to2,
-    match3to4,
-    match5to6,
-    match1to3,
-    match1to4,
-    match1to6,
-    matchUnsigned,
-    matchSigned,
-    matchOffset,
-    matchShortOffset,
-    matchTimestamp,
-    matchWord,
-    match1to2NoLeadingZero,
-    match1to2HasZero,
-};
-
-import hasOwnProp from '../utils/has-own-prop';
-import isFunction from '../utils/is-function';
-
-regexes = {};
-
-export function addRegexToken(token, regex, strictRegex) {
-    regexes[token] = isFunction(regex)
-        ? regex
-        : function (isStrict, localeData) {
-              return isStrict && strictRegex ? strictRegex : regex;
-          };
-}
-
-export function getParseRegexForToken(token, config) {
-    if (!hasOwnProp(regexes, token)) {
-        return new RegExp(unescapeFormat(token));
-    }
-
-    return regexes[token](config._strict, config._locale);
-}
-
-// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
-function unescapeFormat(s) {
-    return regexEscape(
-        s
-            .replace('\\', '')
-            .replace(
-                /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
-                function (matched, p1, p2, p3, p4) {
-                    return p1 || p2 || p3 || p4;
-                }
-            )
-    );
-}
-
-export function regexEscape(s) {
-    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
-}
Index: ckend/node_modules/moment/src/lib/parse/token.js
===================================================================
--- backend/node_modules/moment/src/lib/parse/token.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-import hasOwnProp from '../utils/has-own-prop';
-import isNumber from '../utils/is-number';
-import toInt from '../utils/to-int';
-
-var tokens = {};
-
-export function addParseToken(token, callback) {
-    var i,
-        func = callback,
-        tokenLen;
-    if (typeof token === 'string') {
-        token = [token];
-    }
-    if (isNumber(callback)) {
-        func = function (input, array) {
-            array[callback] = toInt(input);
-        };
-    }
-    tokenLen = token.length;
-    for (i = 0; i < tokenLen; i++) {
-        tokens[token[i]] = func;
-    }
-}
-
-export function addWeekParseToken(token, callback) {
-    addParseToken(token, function (input, array, config, token) {
-        config._w = config._w || {};
-        callback(input, config._w, config, token);
-    });
-}
-
-export function addTimeToArrayFromToken(token, input, config) {
-    if (input != null && hasOwnProp(tokens, token)) {
-        tokens[token](input, config._a, config, token);
-    }
-}
Index: ckend/node_modules/moment/src/lib/units/aliases.js
===================================================================
--- backend/node_modules/moment/src/lib/units/aliases.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-import hasOwnProp from '../utils/has-own-prop';
-
-var aliases = {
-    D: 'date',
-    dates: 'date',
-    date: 'date',
-    d: 'day',
-    days: 'day',
-    day: 'day',
-    e: 'weekday',
-    weekdays: 'weekday',
-    weekday: 'weekday',
-    E: 'isoWeekday',
-    isoweekdays: 'isoWeekday',
-    isoweekday: 'isoWeekday',
-    DDD: 'dayOfYear',
-    dayofyears: 'dayOfYear',
-    dayofyear: 'dayOfYear',
-    h: 'hour',
-    hours: 'hour',
-    hour: 'hour',
-    ms: 'millisecond',
-    milliseconds: 'millisecond',
-    millisecond: 'millisecond',
-    m: 'minute',
-    minutes: 'minute',
-    minute: 'minute',
-    M: 'month',
-    months: 'month',
-    month: 'month',
-    Q: 'quarter',
-    quarters: 'quarter',
-    quarter: 'quarter',
-    s: 'second',
-    seconds: 'second',
-    second: 'second',
-    gg: 'weekYear',
-    weekyears: 'weekYear',
-    weekyear: 'weekYear',
-    GG: 'isoWeekYear',
-    isoweekyears: 'isoWeekYear',
-    isoweekyear: 'isoWeekYear',
-    w: 'week',
-    weeks: 'week',
-    week: 'week',
-    W: 'isoWeek',
-    isoweeks: 'isoWeek',
-    isoweek: 'isoWeek',
-    y: 'year',
-    years: 'year',
-    year: 'year',
-};
-
-export function normalizeUnits(units) {
-    return typeof units === 'string'
-        ? aliases[units] || aliases[units.toLowerCase()]
-        : undefined;
-}
-
-export function normalizeObjectUnits(inputObject) {
-    var normalizedInput = {},
-        normalizedProp,
-        prop;
-
-    for (prop in inputObject) {
-        if (hasOwnProp(inputObject, prop)) {
-            normalizedProp = normalizeUnits(prop);
-            if (normalizedProp) {
-                normalizedInput[normalizedProp] = inputObject[prop];
-            }
-        }
-    }
-
-    return normalizedInput;
-}
Index: ckend/node_modules/moment/src/lib/units/constants.js
===================================================================
--- backend/node_modules/moment/src/lib/units/constants.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-export var YEAR = 0,
-    MONTH = 1,
-    DATE = 2,
-    HOUR = 3,
-    MINUTE = 4,
-    SECOND = 5,
-    MILLISECOND = 6,
-    WEEK = 7,
-    WEEKDAY = 8;
Index: ckend/node_modules/moment/src/lib/units/day-of-month.js
===================================================================
--- backend/node_modules/moment/src/lib/units/day-of-month.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    match1to2NoLeadingZero,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { DATE } from './constants';
-import toInt from '../utils/to-int';
-
-// FORMATTING
-
-addFormatToken('D', ['DD', 2], 'Do', 'date');
-
-// PARSING
-
-addRegexToken('D', match1to2, match1to2NoLeadingZero);
-addRegexToken('DD', match1to2, match2);
-addRegexToken('Do', function (isStrict, locale) {
-    // TODO: Remove "ordinalParse" fallback in next major release.
-    return isStrict
-        ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
-        : locale._dayOfMonthOrdinalParseLenient;
-});
-
-addParseToken(['D', 'DD'], DATE);
-addParseToken('Do', function (input, array) {
-    array[DATE] = toInt(input.match(match1to2)[0]);
-});
-
-// MOMENTS
-
-export var getSetDayOfMonth = makeGetSet('Date', true);
Index: ckend/node_modules/moment/src/lib/units/day-of-week.js
===================================================================
--- backend/node_modules/moment/src/lib/units/day-of-week.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,432 +1,0 @@
-import { get } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    matchWord,
-    regexEscape,
-} from '../parse/regex';
-import { addWeekParseToken } from '../parse/token';
-import toInt from '../utils/to-int';
-import isArray from '../utils/is-array';
-import indexOf from '../utils/index-of';
-import hasOwnProp from '../utils/has-own-prop';
-import { createUTC } from '../create/utc';
-import getParsingFlags from '../create/parsing-flags';
-
-// FORMATTING
-
-addFormatToken('d', 0, 'do', 'day');
-
-addFormatToken('dd', 0, 0, function (format) {
-    return this.localeData().weekdaysMin(this, format);
-});
-
-addFormatToken('ddd', 0, 0, function (format) {
-    return this.localeData().weekdaysShort(this, format);
-});
-
-addFormatToken('dddd', 0, 0, function (format) {
-    return this.localeData().weekdays(this, format);
-});
-
-addFormatToken('e', 0, 0, 'weekday');
-addFormatToken('E', 0, 0, 'isoWeekday');
-
-// PARSING
-
-addRegexToken('d', match1to2);
-addRegexToken('e', match1to2);
-addRegexToken('E', match1to2);
-addRegexToken('dd', function (isStrict, locale) {
-    return locale.weekdaysMinRegex(isStrict);
-});
-addRegexToken('ddd', function (isStrict, locale) {
-    return locale.weekdaysShortRegex(isStrict);
-});
-addRegexToken('dddd', function (isStrict, locale) {
-    return locale.weekdaysRegex(isStrict);
-});
-
-addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
-    var weekday = config._locale.weekdaysParse(input, token, config._strict);
-    // if we didn't get a weekday name, mark the date as invalid
-    if (weekday != null) {
-        week.d = weekday;
-    } else {
-        getParsingFlags(config).invalidWeekday = input;
-    }
-});
-
-addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
-    week[token] = toInt(input);
-});
-
-// HELPERS
-
-function parseWeekday(input, locale) {
-    if (typeof input !== 'string') {
-        return input;
-    }
-
-    if (!isNaN(input)) {
-        return parseInt(input, 10);
-    }
-
-    input = locale.weekdaysParse(input);
-    if (typeof input === 'number') {
-        return input;
-    }
-
-    return null;
-}
-
-function parseIsoWeekday(input, locale) {
-    if (typeof input === 'string') {
-        return locale.weekdaysParse(input) % 7 || 7;
-    }
-    return isNaN(input) ? null : input;
-}
-
-// LOCALES
-function shiftWeekdays(ws, n) {
-    return ws.slice(n, 7).concat(ws.slice(0, n));
-}
-
-var defaultLocaleWeekdays =
-        'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
-    defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    defaultWeekdaysRegex = matchWord,
-    defaultWeekdaysShortRegex = matchWord,
-    defaultWeekdaysMinRegex = matchWord;
-
-export {
-    defaultLocaleWeekdays,
-    defaultLocaleWeekdaysShort,
-    defaultLocaleWeekdaysMin,
-};
-
-export function localeWeekdays(m, format) {
-    var weekdays = isArray(this._weekdays)
-        ? this._weekdays
-        : this._weekdays[
-              m && m !== true && this._weekdays.isFormat.test(format)
-                  ? 'format'
-                  : 'standalone'
-          ];
-    return m === true
-        ? shiftWeekdays(weekdays, this._week.dow)
-        : m
-          ? weekdays[m.day()]
-          : weekdays;
-}
-
-export function localeWeekdaysShort(m) {
-    return m === true
-        ? shiftWeekdays(this._weekdaysShort, this._week.dow)
-        : m
-          ? this._weekdaysShort[m.day()]
-          : this._weekdaysShort;
-}
-
-export function localeWeekdaysMin(m) {
-    return m === true
-        ? shiftWeekdays(this._weekdaysMin, this._week.dow)
-        : m
-          ? this._weekdaysMin[m.day()]
-          : this._weekdaysMin;
-}
-
-function handleStrictParse(weekdayName, format, strict) {
-    var i,
-        ii,
-        mom,
-        llc = weekdayName.toLocaleLowerCase();
-    if (!this._weekdaysParse) {
-        this._weekdaysParse = [];
-        this._shortWeekdaysParse = [];
-        this._minWeekdaysParse = [];
-
-        for (i = 0; i < 7; ++i) {
-            mom = createUTC([2000, 1]).day(i);
-            this._minWeekdaysParse[i] = this.weekdaysMin(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._shortWeekdaysParse[i] = this.weekdaysShort(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
-        }
-    }
-
-    if (strict) {
-        if (format === 'dddd') {
-            ii = indexOf.call(this._weekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else if (format === 'ddd') {
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    } else {
-        if (format === 'dddd') {
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else if (format === 'ddd') {
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._minWeekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._weekdaysParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortWeekdaysParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    }
-}
-
-export function localeWeekdaysParse(weekdayName, format, strict) {
-    var i, mom, regex;
-
-    if (this._weekdaysParseExact) {
-        return handleStrictParse.call(this, weekdayName, format, strict);
-    }
-
-    if (!this._weekdaysParse) {
-        this._weekdaysParse = [];
-        this._minWeekdaysParse = [];
-        this._shortWeekdaysParse = [];
-        this._fullWeekdaysParse = [];
-    }
-
-    for (i = 0; i < 7; i++) {
-        // make the regex if we don't have it already
-
-        mom = createUTC([2000, 1]).day(i);
-        if (strict && !this._fullWeekdaysParse[i]) {
-            this._fullWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-            this._shortWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-            this._minWeekdaysParse[i] = new RegExp(
-                '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
-                'i'
-            );
-        }
-        if (!this._weekdaysParse[i]) {
-            regex =
-                '^' +
-                this.weekdays(mom, '') +
-                '|^' +
-                this.weekdaysShort(mom, '') +
-                '|^' +
-                this.weekdaysMin(mom, '');
-            this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (
-            strict &&
-            format === 'dddd' &&
-            this._fullWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'ddd' &&
-            this._shortWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'dd' &&
-            this._minWeekdaysParse[i].test(weekdayName)
-        ) {
-            return i;
-        } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
-            return i;
-        }
-    }
-}
-
-// MOMENTS
-
-export function getSetDayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-
-    var day = get(this, 'Day');
-    if (input != null) {
-        input = parseWeekday(input, this.localeData());
-        return this.add(input - day, 'd');
-    } else {
-        return day;
-    }
-}
-
-export function getSetLocaleDayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
-    return input == null ? weekday : this.add(input - weekday, 'd');
-}
-
-export function getSetISODayOfWeek(input) {
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-
-    // behaves the same as moment#day except
-    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
-    // as a setter, sunday should belong to the previous week.
-
-    if (input != null) {
-        var weekday = parseIsoWeekday(input, this.localeData());
-        return this.day(this.day() % 7 ? weekday : weekday - 7);
-    } else {
-        return this.day() || 7;
-    }
-}
-
-export function weekdaysRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysStrictRegex;
-        } else {
-            return this._weekdaysRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            this._weekdaysRegex = defaultWeekdaysRegex;
-        }
-        return this._weekdaysStrictRegex && isStrict
-            ? this._weekdaysStrictRegex
-            : this._weekdaysRegex;
-    }
-}
-
-export function weekdaysShortRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysShortStrictRegex;
-        } else {
-            return this._weekdaysShortRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysShortRegex')) {
-            this._weekdaysShortRegex = defaultWeekdaysShortRegex;
-        }
-        return this._weekdaysShortStrictRegex && isStrict
-            ? this._weekdaysShortStrictRegex
-            : this._weekdaysShortRegex;
-    }
-}
-
-export function weekdaysMinRegex(isStrict) {
-    if (this._weekdaysParseExact) {
-        if (!hasOwnProp(this, '_weekdaysRegex')) {
-            computeWeekdaysParse.call(this);
-        }
-        if (isStrict) {
-            return this._weekdaysMinStrictRegex;
-        } else {
-            return this._weekdaysMinRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_weekdaysMinRegex')) {
-            this._weekdaysMinRegex = defaultWeekdaysMinRegex;
-        }
-        return this._weekdaysMinStrictRegex && isStrict
-            ? this._weekdaysMinStrictRegex
-            : this._weekdaysMinRegex;
-    }
-}
-
-function computeWeekdaysParse() {
-    function cmpLenRev(a, b) {
-        return b.length - a.length;
-    }
-
-    var minPieces = [],
-        shortPieces = [],
-        longPieces = [],
-        mixedPieces = [],
-        i,
-        mom,
-        minp,
-        shortp,
-        longp;
-    for (i = 0; i < 7; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, 1]).day(i);
-        minp = regexEscape(this.weekdaysMin(mom, ''));
-        shortp = regexEscape(this.weekdaysShort(mom, ''));
-        longp = regexEscape(this.weekdays(mom, ''));
-        minPieces.push(minp);
-        shortPieces.push(shortp);
-        longPieces.push(longp);
-        mixedPieces.push(minp);
-        mixedPieces.push(shortp);
-        mixedPieces.push(longp);
-    }
-    // Sorting makes sure if one weekday (or abbr) is a prefix of another it
-    // will match the longer piece.
-    minPieces.sort(cmpLenRev);
-    shortPieces.sort(cmpLenRev);
-    longPieces.sort(cmpLenRev);
-    mixedPieces.sort(cmpLenRev);
-
-    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._weekdaysShortRegex = this._weekdaysRegex;
-    this._weekdaysMinRegex = this._weekdaysRegex;
-
-    this._weekdaysStrictRegex = new RegExp(
-        '^(' + longPieces.join('|') + ')',
-        'i'
-    );
-    this._weekdaysShortStrictRegex = new RegExp(
-        '^(' + shortPieces.join('|') + ')',
-        'i'
-    );
-    this._weekdaysMinStrictRegex = new RegExp(
-        '^(' + minPieces.join('|') + ')',
-        'i'
-    );
-}
Index: ckend/node_modules/moment/src/lib/units/day-of-year.js
===================================================================
--- backend/node_modules/moment/src/lib/units/day-of-year.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import { addFormatToken } from '../format/format';
-import { addRegexToken, match3, match1to3 } from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import toInt from '../utils/to-int';
-
-// FORMATTING
-
-addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
-// PARSING
-
-addRegexToken('DDD', match1to3);
-addRegexToken('DDDD', match3);
-addParseToken(['DDD', 'DDDD'], function (input, array, config) {
-    config._dayOfYear = toInt(input);
-});
-
-// HELPERS
-
-// MOMENTS
-
-export function getSetDayOfYear(input) {
-    var dayOfYear =
-        Math.round(
-            (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
-        ) + 1;
-    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
-}
Index: ckend/node_modules/moment/src/lib/units/era.js
===================================================================
--- backend/node_modules/moment/src/lib/units/era.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,293 +1,0 @@
-import { addFormatToken } from '../format/format';
-import { addRegexToken, matchUnsigned, regexEscape } from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { YEAR } from './constants';
-import { hooks as moment } from '../utils/hooks';
-import { getLocale } from '../locale/locales';
-import getParsingFlags from '../create/parsing-flags';
-import hasOwnProp from '../utils/has-own-prop';
-
-addFormatToken('N', 0, 0, 'eraAbbr');
-addFormatToken('NN', 0, 0, 'eraAbbr');
-addFormatToken('NNN', 0, 0, 'eraAbbr');
-addFormatToken('NNNN', 0, 0, 'eraName');
-addFormatToken('NNNNN', 0, 0, 'eraNarrow');
-
-addFormatToken('y', ['y', 1], 'yo', 'eraYear');
-addFormatToken('y', ['yy', 2], 0, 'eraYear');
-addFormatToken('y', ['yyy', 3], 0, 'eraYear');
-addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
-
-addRegexToken('N', matchEraAbbr);
-addRegexToken('NN', matchEraAbbr);
-addRegexToken('NNN', matchEraAbbr);
-addRegexToken('NNNN', matchEraName);
-addRegexToken('NNNNN', matchEraNarrow);
-
-addParseToken(
-    ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
-    function (input, array, config, token) {
-        var era = config._locale.erasParse(input, token, config._strict);
-        if (era) {
-            getParsingFlags(config).era = era;
-        } else {
-            getParsingFlags(config).invalidEra = input;
-        }
-    }
-);
-
-addRegexToken('y', matchUnsigned);
-addRegexToken('yy', matchUnsigned);
-addRegexToken('yyy', matchUnsigned);
-addRegexToken('yyyy', matchUnsigned);
-addRegexToken('yo', matchEraYearOrdinal);
-
-addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
-addParseToken(['yo'], function (input, array, config, token) {
-    var match;
-    if (config._locale._eraYearOrdinalRegex) {
-        match = input.match(config._locale._eraYearOrdinalRegex);
-    }
-
-    if (config._locale.eraYearOrdinalParse) {
-        array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
-    } else {
-        array[YEAR] = parseInt(input, 10);
-    }
-});
-
-export function localeEras(m, format) {
-    var i,
-        l,
-        date,
-        eras = this._eras || getLocale('en')._eras;
-    for (i = 0, l = eras.length; i < l; ++i) {
-        switch (typeof eras[i].since) {
-            case 'string':
-                // truncate time
-                date = moment(eras[i].since).startOf('day');
-                eras[i].since = date.valueOf();
-                break;
-        }
-
-        switch (typeof eras[i].until) {
-            case 'undefined':
-                eras[i].until = +Infinity;
-                break;
-            case 'string':
-                // truncate time
-                date = moment(eras[i].until).startOf('day').valueOf();
-                eras[i].until = date.valueOf();
-                break;
-        }
-    }
-    return eras;
-}
-
-export function localeErasParse(eraName, format, strict) {
-    var i,
-        l,
-        eras = this.eras(),
-        name,
-        abbr,
-        narrow;
-    eraName = eraName.toUpperCase();
-
-    for (i = 0, l = eras.length; i < l; ++i) {
-        name = eras[i].name.toUpperCase();
-        abbr = eras[i].abbr.toUpperCase();
-        narrow = eras[i].narrow.toUpperCase();
-
-        if (strict) {
-            switch (format) {
-                case 'N':
-                case 'NN':
-                case 'NNN':
-                    if (abbr === eraName) {
-                        return eras[i];
-                    }
-                    break;
-
-                case 'NNNN':
-                    if (name === eraName) {
-                        return eras[i];
-                    }
-                    break;
-
-                case 'NNNNN':
-                    if (narrow === eraName) {
-                        return eras[i];
-                    }
-                    break;
-            }
-        } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
-            return eras[i];
-        }
-    }
-}
-
-export function localeErasConvertYear(era, year) {
-    var dir = era.since <= era.until ? +1 : -1;
-    if (year === undefined) {
-        return moment(era.since).year();
-    } else {
-        return moment(era.since).year() + (year - era.offset) * dir;
-    }
-}
-
-export function getEraName() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].name;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].name;
-        }
-    }
-
-    return '';
-}
-
-export function getEraNarrow() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].narrow;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].narrow;
-        }
-    }
-
-    return '';
-}
-
-export function getEraAbbr() {
-    var i,
-        l,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (eras[i].since <= val && val <= eras[i].until) {
-            return eras[i].abbr;
-        }
-        if (eras[i].until <= val && val <= eras[i].since) {
-            return eras[i].abbr;
-        }
-    }
-
-    return '';
-}
-
-export function getEraYear() {
-    var i,
-        l,
-        dir,
-        val,
-        eras = this.localeData().eras();
-    for (i = 0, l = eras.length; i < l; ++i) {
-        dir = eras[i].since <= eras[i].until ? +1 : -1;
-
-        // truncate time
-        val = this.clone().startOf('day').valueOf();
-
-        if (
-            (eras[i].since <= val && val <= eras[i].until) ||
-            (eras[i].until <= val && val <= eras[i].since)
-        ) {
-            return (
-                (this.year() - moment(eras[i].since).year()) * dir +
-                eras[i].offset
-            );
-        }
-    }
-
-    return this.year();
-}
-
-export function erasNameRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasNameRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasNameRegex : this._erasRegex;
-}
-
-export function erasAbbrRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasAbbrRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasAbbrRegex : this._erasRegex;
-}
-
-export function erasNarrowRegex(isStrict) {
-    if (!hasOwnProp(this, '_erasNarrowRegex')) {
-        computeErasParse.call(this);
-    }
-    return isStrict ? this._erasNarrowRegex : this._erasRegex;
-}
-
-function matchEraAbbr(isStrict, locale) {
-    return locale.erasAbbrRegex(isStrict);
-}
-
-function matchEraName(isStrict, locale) {
-    return locale.erasNameRegex(isStrict);
-}
-
-function matchEraNarrow(isStrict, locale) {
-    return locale.erasNarrowRegex(isStrict);
-}
-
-function matchEraYearOrdinal(isStrict, locale) {
-    return locale._eraYearOrdinalRegex || matchUnsigned;
-}
-
-function computeErasParse() {
-    var abbrPieces = [],
-        namePieces = [],
-        narrowPieces = [],
-        mixedPieces = [],
-        i,
-        l,
-        erasName,
-        erasAbbr,
-        erasNarrow,
-        eras = this.eras();
-
-    for (i = 0, l = eras.length; i < l; ++i) {
-        erasName = regexEscape(eras[i].name);
-        erasAbbr = regexEscape(eras[i].abbr);
-        erasNarrow = regexEscape(eras[i].narrow);
-
-        namePieces.push(erasName);
-        abbrPieces.push(erasAbbr);
-        narrowPieces.push(erasNarrow);
-        mixedPieces.push(erasName);
-        mixedPieces.push(erasAbbr);
-        mixedPieces.push(erasNarrow);
-    }
-
-    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
-    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
-    this._erasNarrowRegex = new RegExp(
-        '^(' + narrowPieces.join('|') + ')',
-        'i'
-    );
-}
Index: ckend/node_modules/moment/src/lib/units/hour.js
===================================================================
--- backend/node_modules/moment/src/lib/units/hour.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,152 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    match3to4,
-    match5to6,
-    match1to2NoLeadingZero,
-    match1to2HasZero,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { HOUR, MINUTE, SECOND } from './constants';
-import toInt from '../utils/to-int';
-import zeroFill from '../utils/zero-fill';
-import getParsingFlags from '../create/parsing-flags';
-
-// FORMATTING
-
-function hFormat() {
-    return this.hours() % 12 || 12;
-}
-
-function kFormat() {
-    return this.hours() || 24;
-}
-
-addFormatToken('H', ['HH', 2], 0, 'hour');
-addFormatToken('h', ['hh', 2], 0, hFormat);
-addFormatToken('k', ['kk', 2], 0, kFormat);
-
-addFormatToken('hmm', 0, 0, function () {
-    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
-});
-
-addFormatToken('hmmss', 0, 0, function () {
-    return (
-        '' +
-        hFormat.apply(this) +
-        zeroFill(this.minutes(), 2) +
-        zeroFill(this.seconds(), 2)
-    );
-});
-
-addFormatToken('Hmm', 0, 0, function () {
-    return '' + this.hours() + zeroFill(this.minutes(), 2);
-});
-
-addFormatToken('Hmmss', 0, 0, function () {
-    return (
-        '' +
-        this.hours() +
-        zeroFill(this.minutes(), 2) +
-        zeroFill(this.seconds(), 2)
-    );
-});
-
-function meridiem(token, lowercase) {
-    addFormatToken(token, 0, 0, function () {
-        return this.localeData().meridiem(
-            this.hours(),
-            this.minutes(),
-            lowercase
-        );
-    });
-}
-
-meridiem('a', true);
-meridiem('A', false);
-
-// PARSING
-
-function matchMeridiem(isStrict, locale) {
-    return locale._meridiemParse;
-}
-
-addRegexToken('a', matchMeridiem);
-addRegexToken('A', matchMeridiem);
-addRegexToken('H', match1to2, match1to2HasZero);
-addRegexToken('h', match1to2, match1to2NoLeadingZero);
-addRegexToken('k', match1to2, match1to2NoLeadingZero);
-addRegexToken('HH', match1to2, match2);
-addRegexToken('hh', match1to2, match2);
-addRegexToken('kk', match1to2, match2);
-
-addRegexToken('hmm', match3to4);
-addRegexToken('hmmss', match5to6);
-addRegexToken('Hmm', match3to4);
-addRegexToken('Hmmss', match5to6);
-
-addParseToken(['H', 'HH'], HOUR);
-addParseToken(['k', 'kk'], function (input, array, config) {
-    var kInput = toInt(input);
-    array[HOUR] = kInput === 24 ? 0 : kInput;
-});
-addParseToken(['a', 'A'], function (input, array, config) {
-    config._isPm = config._locale.isPM(input);
-    config._meridiem = input;
-});
-addParseToken(['h', 'hh'], function (input, array, config) {
-    array[HOUR] = toInt(input);
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('hmm', function (input, array, config) {
-    var pos = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos));
-    array[MINUTE] = toInt(input.substr(pos));
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('hmmss', function (input, array, config) {
-    var pos1 = input.length - 4,
-        pos2 = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos1));
-    array[MINUTE] = toInt(input.substr(pos1, 2));
-    array[SECOND] = toInt(input.substr(pos2));
-    getParsingFlags(config).bigHour = true;
-});
-addParseToken('Hmm', function (input, array, config) {
-    var pos = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos));
-    array[MINUTE] = toInt(input.substr(pos));
-});
-addParseToken('Hmmss', function (input, array, config) {
-    var pos1 = input.length - 4,
-        pos2 = input.length - 2;
-    array[HOUR] = toInt(input.substr(0, pos1));
-    array[MINUTE] = toInt(input.substr(pos1, 2));
-    array[SECOND] = toInt(input.substr(pos2));
-});
-
-// LOCALES
-
-export function localeIsPM(input) {
-    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
-    // Using charAt should be more compatible.
-    return (input + '').toLowerCase().charAt(0) === 'p';
-}
-
-export var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
-    // Setting the hour should keep the time, because the user explicitly
-    // specified which hour they want. So trying to maintain the same hour (in
-    // a new timezone) makes sense. Adding/subtracting hours does not follow
-    // this rule.
-    getSetHour = makeGetSet('Hours', true);
-
-export function localeMeridiem(hours, minutes, isLower) {
-    if (hours > 11) {
-        return isLower ? 'pm' : 'PM';
-    } else {
-        return isLower ? 'am' : 'AM';
-    }
-}
Index: ckend/node_modules/moment/src/lib/units/millisecond.js
===================================================================
--- backend/node_modules/moment/src/lib/units/millisecond.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1,
-    match2,
-    match3,
-    match1to3,
-    matchUnsigned,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { MILLISECOND } from './constants';
-import toInt from '../utils/to-int';
-
-// FORMATTING
-
-addFormatToken('S', 0, 0, function () {
-    return ~~(this.millisecond() / 100);
-});
-
-addFormatToken(0, ['SS', 2], 0, function () {
-    return ~~(this.millisecond() / 10);
-});
-
-addFormatToken(0, ['SSS', 3], 0, 'millisecond');
-addFormatToken(0, ['SSSS', 4], 0, function () {
-    return this.millisecond() * 10;
-});
-addFormatToken(0, ['SSSSS', 5], 0, function () {
-    return this.millisecond() * 100;
-});
-addFormatToken(0, ['SSSSSS', 6], 0, function () {
-    return this.millisecond() * 1000;
-});
-addFormatToken(0, ['SSSSSSS', 7], 0, function () {
-    return this.millisecond() * 10000;
-});
-addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
-    return this.millisecond() * 100000;
-});
-addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
-    return this.millisecond() * 1000000;
-});
-
-// PARSING
-
-addRegexToken('S', match1to3, match1);
-addRegexToken('SS', match1to3, match2);
-addRegexToken('SSS', match1to3, match3);
-
-var token, getSetMillisecond;
-for (token = 'SSSS'; token.length <= 9; token += 'S') {
-    addRegexToken(token, matchUnsigned);
-}
-
-function parseMs(input, array) {
-    array[MILLISECOND] = toInt(('0.' + input) * 1000);
-}
-
-for (token = 'S'; token.length <= 9; token += 'S') {
-    addParseToken(token, parseMs);
-}
-
-getSetMillisecond = makeGetSet('Milliseconds', false);
-
-export { getSetMillisecond };
Index: ckend/node_modules/moment/src/lib/units/minute.js
===================================================================
--- backend/node_modules/moment/src/lib/units/minute.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    match1to2HasZero,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { MINUTE } from './constants';
-
-// FORMATTING
-
-addFormatToken('m', ['mm', 2], 0, 'minute');
-
-// PARSING
-
-addRegexToken('m', match1to2, match1to2HasZero);
-addRegexToken('mm', match1to2, match2);
-addParseToken(['m', 'mm'], MINUTE);
-
-// MOMENTS
-
-export var getSetMinute = makeGetSet('Minutes', false);
Index: ckend/node_modules/moment/src/lib/units/month.js
===================================================================
--- backend/node_modules/moment/src/lib/units/month.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,340 +1,0 @@
-import { get } from '../moment/get-set';
-import hasOwnProp from '../utils/has-own-prop';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    matchWord,
-    regexEscape,
-    match1to2NoLeadingZero,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { hooks } from '../utils/hooks';
-import { MONTH } from './constants';
-import toInt from '../utils/to-int';
-import isArray from '../utils/is-array';
-import isNumber from '../utils/is-number';
-import mod from '../utils/mod';
-import indexOf from '../utils/index-of';
-import { createUTC } from '../create/utc';
-import getParsingFlags from '../create/parsing-flags';
-import { isLeapYear } from '../utils/is-leap-year';
-
-export function daysInMonth(year, month) {
-    if (isNaN(year) || isNaN(month)) {
-        return NaN;
-    }
-    var modMonth = mod(month, 12);
-    year += (month - modMonth) / 12;
-    return modMonth === 1
-        ? isLeapYear(year)
-            ? 29
-            : 28
-        : 31 - ((modMonth % 7) % 2);
-}
-
-// FORMATTING
-
-addFormatToken('M', ['MM', 2], 'Mo', function () {
-    return this.month() + 1;
-});
-
-addFormatToken('MMM', 0, 0, function (format) {
-    return this.localeData().monthsShort(this, format);
-});
-
-addFormatToken('MMMM', 0, 0, function (format) {
-    return this.localeData().months(this, format);
-});
-
-// PARSING
-
-addRegexToken('M', match1to2, match1to2NoLeadingZero);
-addRegexToken('MM', match1to2, match2);
-addRegexToken('MMM', function (isStrict, locale) {
-    return locale.monthsShortRegex(isStrict);
-});
-addRegexToken('MMMM', function (isStrict, locale) {
-    return locale.monthsRegex(isStrict);
-});
-
-addParseToken(['M', 'MM'], function (input, array) {
-    array[MONTH] = toInt(input) - 1;
-});
-
-addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
-    var month = config._locale.monthsParse(input, token, config._strict);
-    // if we didn't find a month name, mark the date as invalid.
-    if (month != null) {
-        array[MONTH] = month;
-    } else {
-        getParsingFlags(config).invalidMonth = input;
-    }
-});
-
-// LOCALES
-
-var defaultLocaleMonths =
-        'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-            '_'
-        ),
-    defaultLocaleMonthsShort =
-        'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
-    defaultMonthsShortRegex = matchWord,
-    defaultMonthsRegex = matchWord;
-
-export { defaultLocaleMonths, defaultLocaleMonthsShort };
-
-export function localeMonths(m, format) {
-    if (!m) {
-        return isArray(this._months)
-            ? this._months
-            : this._months['standalone'];
-    }
-    return isArray(this._months)
-        ? this._months[m.month()]
-        : this._months[
-              (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
-                  ? 'format'
-                  : 'standalone'
-          ][m.month()];
-}
-
-export function localeMonthsShort(m, format) {
-    if (!m) {
-        return isArray(this._monthsShort)
-            ? this._monthsShort
-            : this._monthsShort['standalone'];
-    }
-    return isArray(this._monthsShort)
-        ? this._monthsShort[m.month()]
-        : this._monthsShort[
-              MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
-          ][m.month()];
-}
-
-function handleStrictParse(monthName, format, strict) {
-    var i,
-        ii,
-        mom,
-        llc = monthName.toLocaleLowerCase();
-    if (!this._monthsParse) {
-        // this is not used
-        this._monthsParse = [];
-        this._longMonthsParse = [];
-        this._shortMonthsParse = [];
-        for (i = 0; i < 12; ++i) {
-            mom = createUTC([2000, i]);
-            this._shortMonthsParse[i] = this.monthsShort(
-                mom,
-                ''
-            ).toLocaleLowerCase();
-            this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
-        }
-    }
-
-    if (strict) {
-        if (format === 'MMM') {
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._longMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    } else {
-        if (format === 'MMM') {
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._longMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        } else {
-            ii = indexOf.call(this._longMonthsParse, llc);
-            if (ii !== -1) {
-                return ii;
-            }
-            ii = indexOf.call(this._shortMonthsParse, llc);
-            return ii !== -1 ? ii : null;
-        }
-    }
-}
-
-export function localeMonthsParse(monthName, format, strict) {
-    var i, mom, regex;
-
-    if (this._monthsParseExact) {
-        return handleStrictParse.call(this, monthName, format, strict);
-    }
-
-    if (!this._monthsParse) {
-        this._monthsParse = [];
-        this._longMonthsParse = [];
-        this._shortMonthsParse = [];
-    }
-
-    // TODO: add sorting
-    // Sorting makes sure if one month (or abbr) is a prefix of another
-    // see sorting in computeMonthsParse
-    for (i = 0; i < 12; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, i]);
-        if (strict && !this._longMonthsParse[i]) {
-            this._longMonthsParse[i] = new RegExp(
-                '^' + this.months(mom, '').replace('.', '') + '$',
-                'i'
-            );
-            this._shortMonthsParse[i] = new RegExp(
-                '^' + this.monthsShort(mom, '').replace('.', '') + '$',
-                'i'
-            );
-        }
-        if (!strict && !this._monthsParse[i]) {
-            regex =
-                '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
-            this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
-        }
-        // test the regex
-        if (
-            strict &&
-            format === 'MMMM' &&
-            this._longMonthsParse[i].test(monthName)
-        ) {
-            return i;
-        } else if (
-            strict &&
-            format === 'MMM' &&
-            this._shortMonthsParse[i].test(monthName)
-        ) {
-            return i;
-        } else if (!strict && this._monthsParse[i].test(monthName)) {
-            return i;
-        }
-    }
-}
-
-// MOMENTS
-
-export function setMonth(mom, value) {
-    if (!mom.isValid()) {
-        // No op
-        return mom;
-    }
-
-    if (typeof value === 'string') {
-        if (/^\d+$/.test(value)) {
-            value = toInt(value);
-        } else {
-            value = mom.localeData().monthsParse(value);
-            // TODO: Another silent failure?
-            if (!isNumber(value)) {
-                return mom;
-            }
-        }
-    }
-
-    var month = value,
-        date = mom.date();
-
-    date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
-    void (mom._isUTC
-        ? mom._d.setUTCMonth(month, date)
-        : mom._d.setMonth(month, date));
-    return mom;
-}
-
-export function getSetMonth(value) {
-    if (value != null) {
-        setMonth(this, value);
-        hooks.updateOffset(this, true);
-        return this;
-    } else {
-        return get(this, 'Month');
-    }
-}
-
-export function getDaysInMonth() {
-    return daysInMonth(this.year(), this.month());
-}
-
-export function monthsShortRegex(isStrict) {
-    if (this._monthsParseExact) {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            computeMonthsParse.call(this);
-        }
-        if (isStrict) {
-            return this._monthsShortStrictRegex;
-        } else {
-            return this._monthsShortRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_monthsShortRegex')) {
-            this._monthsShortRegex = defaultMonthsShortRegex;
-        }
-        return this._monthsShortStrictRegex && isStrict
-            ? this._monthsShortStrictRegex
-            : this._monthsShortRegex;
-    }
-}
-
-export function monthsRegex(isStrict) {
-    if (this._monthsParseExact) {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            computeMonthsParse.call(this);
-        }
-        if (isStrict) {
-            return this._monthsStrictRegex;
-        } else {
-            return this._monthsRegex;
-        }
-    } else {
-        if (!hasOwnProp(this, '_monthsRegex')) {
-            this._monthsRegex = defaultMonthsRegex;
-        }
-        return this._monthsStrictRegex && isStrict
-            ? this._monthsStrictRegex
-            : this._monthsRegex;
-    }
-}
-
-function computeMonthsParse() {
-    function cmpLenRev(a, b) {
-        return b.length - a.length;
-    }
-
-    var shortPieces = [],
-        longPieces = [],
-        mixedPieces = [],
-        i,
-        mom,
-        shortP,
-        longP;
-    for (i = 0; i < 12; i++) {
-        // make the regex if we don't have it already
-        mom = createUTC([2000, i]);
-        shortP = regexEscape(this.monthsShort(mom, ''));
-        longP = regexEscape(this.months(mom, ''));
-        shortPieces.push(shortP);
-        longPieces.push(longP);
-        mixedPieces.push(longP);
-        mixedPieces.push(shortP);
-    }
-    // Sorting makes sure if one month (or abbr) is a prefix of another it
-    // will match the longer piece.
-    shortPieces.sort(cmpLenRev);
-    longPieces.sort(cmpLenRev);
-    mixedPieces.sort(cmpLenRev);
-
-    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
-    this._monthsShortRegex = this._monthsRegex;
-    this._monthsStrictRegex = new RegExp(
-        '^(' + longPieces.join('|') + ')',
-        'i'
-    );
-    this._monthsShortStrictRegex = new RegExp(
-        '^(' + shortPieces.join('|') + ')',
-        'i'
-    );
-}
Index: ckend/node_modules/moment/src/lib/units/offset.js
===================================================================
--- backend/node_modules/moment/src/lib/units/offset.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,249 +1,0 @@
-import zeroFill from '../utils/zero-fill';
-import { createDuration } from '../duration/create';
-import { addSubtract } from '../moment/add-subtract';
-import { isMoment, copyConfig } from '../moment/constructor';
-import { addFormatToken } from '../format/format';
-import { addRegexToken, matchOffset, matchShortOffset } from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { createLocal } from '../create/local';
-import { prepareConfig } from '../create/from-anything';
-import { createUTC } from '../create/utc';
-import isDate from '../utils/is-date';
-import toInt from '../utils/to-int';
-import isUndefined from '../utils/is-undefined';
-import compareArrays from '../utils/compare-arrays';
-import { hooks } from '../utils/hooks';
-
-// FORMATTING
-
-function offset(token, separator) {
-    addFormatToken(token, 0, 0, function () {
-        var offset = this.utcOffset(),
-            sign = '+';
-        if (offset < 0) {
-            offset = -offset;
-            sign = '-';
-        }
-        return (
-            sign +
-            zeroFill(~~(offset / 60), 2) +
-            separator +
-            zeroFill(~~offset % 60, 2)
-        );
-    });
-}
-
-offset('Z', ':');
-offset('ZZ', '');
-
-// PARSING
-
-addRegexToken('Z', matchShortOffset);
-addRegexToken('ZZ', matchShortOffset);
-addParseToken(['Z', 'ZZ'], function (input, array, config) {
-    config._useUTC = true;
-    config._tzm = offsetFromString(matchShortOffset, input);
-});
-
-// HELPERS
-
-// timezone chunker
-// '+10:00' > ['10',  '00']
-// '-1530'  > ['-15', '30']
-var chunkOffset = /([\+\-]|\d\d)/gi;
-
-function offsetFromString(matcher, string) {
-    var matches = (string || '').match(matcher),
-        chunk,
-        parts,
-        minutes;
-
-    if (matches === null) {
-        return null;
-    }
-
-    chunk = matches[matches.length - 1] || [];
-    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
-    minutes = +(parts[1] * 60) + toInt(parts[2]);
-
-    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
-}
-
-// Return a moment from input, that is local/utc/zone equivalent to model.
-export function cloneWithOffset(input, model) {
-    var res, diff;
-    if (model._isUTC) {
-        res = model.clone();
-        diff =
-            (isMoment(input) || isDate(input)
-                ? input.valueOf()
-                : createLocal(input).valueOf()) - res.valueOf();
-        // Use low-level api, because this fn is low-level api.
-        res._d.setTime(res._d.valueOf() + diff);
-        hooks.updateOffset(res, false);
-        return res;
-    } else {
-        return createLocal(input).local();
-    }
-}
-
-function getDateOffset(m) {
-    // On Firefox.24 Date#getTimezoneOffset returns a floating point.
-    // https://github.com/moment/moment/pull/1871
-    return -Math.round(m._d.getTimezoneOffset());
-}
-
-// HOOKS
-
-// This function will be called whenever a moment is mutated.
-// It is intended to keep the offset in sync with the timezone.
-hooks.updateOffset = function () {};
-
-// MOMENTS
-
-// keepLocalTime = true means only change the timezone, without
-// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
-// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
-// +0200, so we adjust the time as needed, to be valid.
-//
-// Keeping the time actually adds/subtracts (one hour)
-// from the actual represented time. That is why we call updateOffset
-// a second time. In case it wants us to change the offset again
-// _changeInProgress == true case, then we have to adjust, because
-// there is no such time in the given timezone.
-export function getSetOffset(input, keepLocalTime, keepMinutes) {
-    var offset = this._offset || 0,
-        localAdjust;
-    if (!this.isValid()) {
-        return input != null ? this : NaN;
-    }
-    if (input != null) {
-        if (typeof input === 'string') {
-            input = offsetFromString(matchShortOffset, input);
-            if (input === null) {
-                return this;
-            }
-        } else if (Math.abs(input) < 16 && !keepMinutes) {
-            input = input * 60;
-        }
-        if (!this._isUTC && keepLocalTime) {
-            localAdjust = getDateOffset(this);
-        }
-        this._offset = input;
-        this._isUTC = true;
-        if (localAdjust != null) {
-            this.add(localAdjust, 'm');
-        }
-        if (offset !== input) {
-            if (!keepLocalTime || this._changeInProgress) {
-                addSubtract(
-                    this,
-                    createDuration(input - offset, 'm'),
-                    1,
-                    false
-                );
-            } else if (!this._changeInProgress) {
-                this._changeInProgress = true;
-                hooks.updateOffset(this, true);
-                this._changeInProgress = null;
-            }
-        }
-        return this;
-    } else {
-        return this._isUTC ? offset : getDateOffset(this);
-    }
-}
-
-export function getSetZone(input, keepLocalTime) {
-    if (input != null) {
-        if (typeof input !== 'string') {
-            input = -input;
-        }
-
-        this.utcOffset(input, keepLocalTime);
-
-        return this;
-    } else {
-        return -this.utcOffset();
-    }
-}
-
-export function setOffsetToUTC(keepLocalTime) {
-    return this.utcOffset(0, keepLocalTime);
-}
-
-export function setOffsetToLocal(keepLocalTime) {
-    if (this._isUTC) {
-        this.utcOffset(0, keepLocalTime);
-        this._isUTC = false;
-
-        if (keepLocalTime) {
-            this.subtract(getDateOffset(this), 'm');
-        }
-    }
-    return this;
-}
-
-export function setOffsetToParsedOffset() {
-    if (this._tzm != null) {
-        this.utcOffset(this._tzm, false, true);
-    } else if (typeof this._i === 'string') {
-        var tZone = offsetFromString(matchOffset, this._i);
-        if (tZone != null) {
-            this.utcOffset(tZone);
-        } else {
-            this.utcOffset(0, true);
-        }
-    }
-    return this;
-}
-
-export function hasAlignedHourOffset(input) {
-    if (!this.isValid()) {
-        return false;
-    }
-    input = input ? createLocal(input).utcOffset() : 0;
-
-    return (this.utcOffset() - input) % 60 === 0;
-}
-
-export function isDaylightSavingTime() {
-    return (
-        this.utcOffset() > this.clone().month(0).utcOffset() ||
-        this.utcOffset() > this.clone().month(5).utcOffset()
-    );
-}
-
-export function isDaylightSavingTimeShifted() {
-    if (!isUndefined(this._isDSTShifted)) {
-        return this._isDSTShifted;
-    }
-
-    var c = {},
-        other;
-
-    copyConfig(c, this);
-    c = prepareConfig(c);
-
-    if (c._a) {
-        other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
-        this._isDSTShifted =
-            this.isValid() && compareArrays(c._a, other.toArray()) > 0;
-    } else {
-        this._isDSTShifted = false;
-    }
-
-    return this._isDSTShifted;
-}
-
-export function isLocal() {
-    return this.isValid() ? !this._isUTC : false;
-}
-
-export function isUtcOffset() {
-    return this.isValid() ? this._isUTC : false;
-}
-
-export function isUtc() {
-    return this.isValid() ? this._isUTC && this._offset === 0 : false;
-}
Index: ckend/node_modules/moment/src/lib/units/priorities.js
===================================================================
--- backend/node_modules/moment/src/lib/units/priorities.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-import hasOwnProp from '../utils/has-own-prop';
-
-var priorities = {
-    date: 9,
-    day: 11,
-    weekday: 11,
-    isoWeekday: 11,
-    dayOfYear: 4,
-    hour: 13,
-    millisecond: 16,
-    minute: 14,
-    month: 8,
-    quarter: 7,
-    second: 15,
-    weekYear: 1,
-    isoWeekYear: 1,
-    week: 5,
-    isoWeek: 5,
-    year: 1,
-};
-
-export function getPrioritizedUnits(unitsObj) {
-    var units = [],
-        u;
-    for (u in unitsObj) {
-        if (hasOwnProp(unitsObj, u)) {
-            units.push({ unit: u, priority: priorities[u] });
-        }
-    }
-    units.sort(function (a, b) {
-        return a.priority - b.priority;
-    });
-    return units;
-}
Index: ckend/node_modules/moment/src/lib/units/quarter.js
===================================================================
--- backend/node_modules/moment/src/lib/units/quarter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import { addFormatToken } from '../format/format';
-import { addRegexToken, match1 } from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { MONTH } from './constants';
-import toInt from '../utils/to-int';
-
-// FORMATTING
-
-addFormatToken('Q', 0, 'Qo', 'quarter');
-
-// PARSING
-
-addRegexToken('Q', match1);
-addParseToken('Q', function (input, array) {
-    array[MONTH] = (toInt(input) - 1) * 3;
-});
-
-// MOMENTS
-
-export function getSetQuarter(input) {
-    return input == null
-        ? Math.ceil((this.month() + 1) / 3)
-        : this.month((input - 1) * 3 + (this.month() % 3));
-}
Index: ckend/node_modules/moment/src/lib/units/second.js
===================================================================
--- backend/node_modules/moment/src/lib/units/second.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    match1to2HasZero,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { SECOND } from './constants';
-
-// FORMATTING
-
-addFormatToken('s', ['ss', 2], 0, 'second');
-
-// PARSING
-
-addRegexToken('s', match1to2, match1to2HasZero);
-addRegexToken('ss', match1to2, match2);
-addParseToken(['s', 'ss'], SECOND);
-
-// MOMENTS
-
-export var getSetSecond = makeGetSet('Seconds', false);
Index: ckend/node_modules/moment/src/lib/units/timestamp.js
===================================================================
--- backend/node_modules/moment/src/lib/units/timestamp.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { addFormatToken } from '../format/format';
-import { addRegexToken, matchTimestamp, matchSigned } from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import toInt from '../utils/to-int';
-
-// FORMATTING
-
-addFormatToken('X', 0, 0, 'unix');
-addFormatToken('x', 0, 0, 'valueOf');
-
-// PARSING
-
-addRegexToken('x', matchSigned);
-addRegexToken('X', matchTimestamp);
-addParseToken('X', function (input, array, config) {
-    config._d = new Date(parseFloat(input) * 1000);
-});
-addParseToken('x', function (input, array, config) {
-    config._d = new Date(toInt(input));
-});
Index: ckend/node_modules/moment/src/lib/units/timezone.js
===================================================================
--- backend/node_modules/moment/src/lib/units/timezone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import { addFormatToken } from '../format/format';
-
-// FORMATTING
-
-addFormatToken('z', 0, 0, 'zoneAbbr');
-addFormatToken('zz', 0, 0, 'zoneName');
-
-// MOMENTS
-
-export function getZoneAbbr() {
-    return this._isUTC ? 'UTC' : '';
-}
-
-export function getZoneName() {
-    return this._isUTC ? 'Coordinated Universal Time' : '';
-}
Index: ckend/node_modules/moment/src/lib/units/units.js
===================================================================
--- backend/node_modules/moment/src/lib/units/units.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-// Side effect imports
-import './day-of-month';
-import './day-of-week';
-import './day-of-year';
-import './hour';
-import './millisecond';
-import './minute';
-import './month';
-import './offset';
-import './quarter';
-import './second';
-import './timestamp';
-import './timezone';
-import './week-year';
-import './week';
-import './year';
-
-import { normalizeUnits } from './aliases';
-
-export { normalizeUnits };
Index: ckend/node_modules/moment/src/lib/units/week-calendar-utils.js
===================================================================
--- backend/node_modules/moment/src/lib/units/week-calendar-utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-import { daysInYear } from './year';
-import { createUTCDate } from '../create/date-from-array';
-
-// start-of-first-week - start-of-year
-function firstWeekOffset(year, dow, doy) {
-    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
-        fwd = 7 + dow - doy,
-        // first-week day local weekday -- which local weekday is fwd
-        fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
-
-    return -fwdlw + fwd - 1;
-}
-
-// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
-export function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
-    var localWeekday = (7 + weekday - dow) % 7,
-        weekOffset = firstWeekOffset(year, dow, doy),
-        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
-        resYear,
-        resDayOfYear;
-
-    if (dayOfYear <= 0) {
-        resYear = year - 1;
-        resDayOfYear = daysInYear(resYear) + dayOfYear;
-    } else if (dayOfYear > daysInYear(year)) {
-        resYear = year + 1;
-        resDayOfYear = dayOfYear - daysInYear(year);
-    } else {
-        resYear = year;
-        resDayOfYear = dayOfYear;
-    }
-
-    return {
-        year: resYear,
-        dayOfYear: resDayOfYear,
-    };
-}
-
-export function weekOfYear(mom, dow, doy) {
-    var weekOffset = firstWeekOffset(mom.year(), dow, doy),
-        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
-        resWeek,
-        resYear;
-
-    if (week < 1) {
-        resYear = mom.year() - 1;
-        resWeek = week + weeksInYear(resYear, dow, doy);
-    } else if (week > weeksInYear(mom.year(), dow, doy)) {
-        resWeek = week - weeksInYear(mom.year(), dow, doy);
-        resYear = mom.year() + 1;
-    } else {
-        resYear = mom.year();
-        resWeek = week;
-    }
-
-    return {
-        week: resWeek,
-        year: resYear,
-    };
-}
-
-export function weeksInYear(year, dow, doy) {
-    var weekOffset = firstWeekOffset(year, dow, doy),
-        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
-    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
-}
Index: ckend/node_modules/moment/src/lib/units/week-year.js
===================================================================
--- backend/node_modules/moment/src/lib/units/week-year.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,128 +1,0 @@
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match1to4,
-    match1to6,
-    match2,
-    match4,
-    match6,
-    matchSigned,
-} from '../parse/regex';
-import { addWeekParseToken } from '../parse/token';
-import {
-    weekOfYear,
-    weeksInYear,
-    dayOfYearFromWeeks,
-} from './week-calendar-utils';
-import toInt from '../utils/to-int';
-import { hooks } from '../utils/hooks';
-import { createUTCDate } from '../create/date-from-array';
-
-// FORMATTING
-
-addFormatToken(0, ['gg', 2], 0, function () {
-    return this.weekYear() % 100;
-});
-
-addFormatToken(0, ['GG', 2], 0, function () {
-    return this.isoWeekYear() % 100;
-});
-
-function addWeekYearFormatToken(token, getter) {
-    addFormatToken(0, [token, token.length], 0, getter);
-}
-
-addWeekYearFormatToken('gggg', 'weekYear');
-addWeekYearFormatToken('ggggg', 'weekYear');
-addWeekYearFormatToken('GGGG', 'isoWeekYear');
-addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
-// ALIASES
-
-// PARSING
-
-addRegexToken('G', matchSigned);
-addRegexToken('g', matchSigned);
-addRegexToken('GG', match1to2, match2);
-addRegexToken('gg', match1to2, match2);
-addRegexToken('GGGG', match1to4, match4);
-addRegexToken('gggg', match1to4, match4);
-addRegexToken('GGGGG', match1to6, match6);
-addRegexToken('ggggg', match1to6, match6);
-
-addWeekParseToken(
-    ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
-    function (input, week, config, token) {
-        week[token.substr(0, 2)] = toInt(input);
-    }
-);
-
-addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
-    week[token] = hooks.parseTwoDigitYear(input);
-});
-
-// MOMENTS
-
-export function getSetWeekYear(input) {
-    return getSetWeekYearHelper.call(
-        this,
-        input,
-        this.week(),
-        this.weekday() + this.localeData()._week.dow,
-        this.localeData()._week.dow,
-        this.localeData()._week.doy
-    );
-}
-
-export function getSetISOWeekYear(input) {
-    return getSetWeekYearHelper.call(
-        this,
-        input,
-        this.isoWeek(),
-        this.isoWeekday(),
-        1,
-        4
-    );
-}
-
-export function getISOWeeksInYear() {
-    return weeksInYear(this.year(), 1, 4);
-}
-
-export function getISOWeeksInISOWeekYear() {
-    return weeksInYear(this.isoWeekYear(), 1, 4);
-}
-
-export function getWeeksInYear() {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
-}
-
-export function getWeeksInWeekYear() {
-    var weekInfo = this.localeData()._week;
-    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
-}
-
-function getSetWeekYearHelper(input, week, weekday, dow, doy) {
-    var weeksTarget;
-    if (input == null) {
-        return weekOfYear(this, dow, doy).year;
-    } else {
-        weeksTarget = weeksInYear(input, dow, doy);
-        if (week > weeksTarget) {
-            week = weeksTarget;
-        }
-        return setWeekAll.call(this, input, week, weekday, dow, doy);
-    }
-}
-
-function setWeekAll(weekYear, week, weekday, dow, doy) {
-    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
-        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
-
-    this.year(date.getUTCFullYear());
-    this.month(date.getUTCMonth());
-    this.date(date.getUTCDate());
-    return this;
-}
Index: ckend/node_modules/moment/src/lib/units/week.js
===================================================================
--- backend/node_modules/moment/src/lib/units/week.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match2,
-    match1to2NoLeadingZero,
-} from '../parse/regex';
-import { addWeekParseToken } from '../parse/token';
-import toInt from '../utils/to-int';
-import { weekOfYear } from './week-calendar-utils';
-
-// FORMATTING
-
-addFormatToken('w', ['ww', 2], 'wo', 'week');
-addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
-// PARSING
-
-addRegexToken('w', match1to2, match1to2NoLeadingZero);
-addRegexToken('ww', match1to2, match2);
-addRegexToken('W', match1to2, match1to2NoLeadingZero);
-addRegexToken('WW', match1to2, match2);
-
-addWeekParseToken(
-    ['w', 'ww', 'W', 'WW'],
-    function (input, week, config, token) {
-        week[token.substr(0, 1)] = toInt(input);
-    }
-);
-
-// HELPERS
-
-// LOCALES
-
-export function localeWeek(mom) {
-    return weekOfYear(mom, this._week.dow, this._week.doy).week;
-}
-
-export var defaultLocaleWeek = {
-    dow: 0, // Sunday is the first day of the week.
-    doy: 6, // The week that contains Jan 6th is the first week of the year.
-};
-
-export function localeFirstDayOfWeek() {
-    return this._week.dow;
-}
-
-export function localeFirstDayOfYear() {
-    return this._week.doy;
-}
-
-// MOMENTS
-
-export function getSetWeek(input) {
-    var week = this.localeData().week(this);
-    return input == null ? week : this.add((input - week) * 7, 'd');
-}
-
-export function getSetISOWeek(input) {
-    var week = weekOfYear(this, 1, 4).week;
-    return input == null ? week : this.add((input - week) * 7, 'd');
-}
Index: ckend/node_modules/moment/src/lib/units/year.js
===================================================================
--- backend/node_modules/moment/src/lib/units/year.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-import { makeGetSet } from '../moment/get-set';
-import { addFormatToken } from '../format/format';
-import {
-    addRegexToken,
-    match1to2,
-    match1to4,
-    match1to6,
-    match2,
-    match4,
-    match6,
-    matchSigned,
-} from '../parse/regex';
-import { addParseToken } from '../parse/token';
-import { isLeapYear } from '../utils/is-leap-year';
-import { hooks } from '../utils/hooks';
-import { YEAR } from './constants';
-import toInt from '../utils/to-int';
-import zeroFill from '../utils/zero-fill';
-
-// FORMATTING
-
-addFormatToken('Y', 0, 0, function () {
-    var y = this.year();
-    return y <= 9999 ? zeroFill(y, 4) : '+' + y;
-});
-
-addFormatToken(0, ['YY', 2], 0, function () {
-    return this.year() % 100;
-});
-
-addFormatToken(0, ['YYYY', 4], 0, 'year');
-addFormatToken(0, ['YYYYY', 5], 0, 'year');
-addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
-// PARSING
-
-addRegexToken('Y', matchSigned);
-addRegexToken('YY', match1to2, match2);
-addRegexToken('YYYY', match1to4, match4);
-addRegexToken('YYYYY', match1to6, match6);
-addRegexToken('YYYYYY', match1to6, match6);
-
-addParseToken(['YYYYY', 'YYYYYY'], YEAR);
-addParseToken('YYYY', function (input, array) {
-    array[YEAR] =
-        input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
-});
-addParseToken('YY', function (input, array) {
-    array[YEAR] = hooks.parseTwoDigitYear(input);
-});
-addParseToken('Y', function (input, array) {
-    array[YEAR] = parseInt(input, 10);
-});
-
-// HELPERS
-
-export function daysInYear(year) {
-    return isLeapYear(year) ? 366 : 365;
-}
-
-export { isLeapYear };
-
-// HOOKS
-
-hooks.parseTwoDigitYear = function (input) {
-    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
-};
-
-// MOMENTS
-
-export var getSetYear = makeGetSet('FullYear', true);
-
-export function getIsLeapYear() {
-    return isLeapYear(this.year());
-}
Index: ckend/node_modules/moment/src/lib/utils/abs-ceil.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/abs-ceil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-export default function absCeil(number) {
-    if (number < 0) {
-        return Math.floor(number);
-    } else {
-        return Math.ceil(number);
-    }
-}
Index: ckend/node_modules/moment/src/lib/utils/abs-floor.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/abs-floor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-export default function absFloor(number) {
-    if (number < 0) {
-        // -0 -> 0
-        return Math.ceil(number) || 0;
-    } else {
-        return Math.floor(number);
-    }
-}
Index: ckend/node_modules/moment/src/lib/utils/abs-round.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/abs-round.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-export default function absRound(number) {
-    if (number < 0) {
-        return Math.round(-1 * number) * -1;
-    } else {
-        return Math.round(number);
-    }
-}
Index: ckend/node_modules/moment/src/lib/utils/compare-arrays.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/compare-arrays.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-import toInt from './to-int';
-
-// compare two arrays, return the number of differences
-export default function compareArrays(array1, array2, dontConvert) {
-    var len = Math.min(array1.length, array2.length),
-        lengthDiff = Math.abs(array1.length - array2.length),
-        diffs = 0,
-        i;
-    for (i = 0; i < len; i++) {
-        if (
-            (dontConvert && array1[i] !== array2[i]) ||
-            (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
-        ) {
-            diffs++;
-        }
-    }
-    return diffs + lengthDiff;
-}
Index: ckend/node_modules/moment/src/lib/utils/defaults.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/defaults.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-// Pick the first defined of two or three arguments.
-export default function defaults(a, b, c) {
-    if (a != null) {
-        return a;
-    }
-    if (b != null) {
-        return b;
-    }
-    return c;
-}
Index: ckend/node_modules/moment/src/lib/utils/deprecate.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/deprecate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-import extend from './extend';
-import { hooks } from './hooks';
-import hasOwnProp from './has-own-prop';
-
-function warn(msg) {
-    if (
-        hooks.suppressDeprecationWarnings === false &&
-        typeof console !== 'undefined' &&
-        console.warn
-    ) {
-        console.warn('Deprecation warning: ' + msg);
-    }
-}
-
-export function deprecate(msg, fn) {
-    var firstTime = true;
-
-    return extend(function () {
-        if (hooks.deprecationHandler != null) {
-            hooks.deprecationHandler(null, msg);
-        }
-        if (firstTime) {
-            var args = [],
-                arg,
-                i,
-                key,
-                argLen = arguments.length;
-            for (i = 0; i < argLen; i++) {
-                arg = '';
-                if (typeof arguments[i] === 'object') {
-                    arg += '\n[' + i + '] ';
-                    for (key in arguments[0]) {
-                        if (hasOwnProp(arguments[0], key)) {
-                            arg += key + ': ' + arguments[0][key] + ', ';
-                        }
-                    }
-                    arg = arg.slice(0, -2); // Remove trailing comma and space
-                } else {
-                    arg = arguments[i];
-                }
-                args.push(arg);
-            }
-            warn(
-                msg +
-                    '\nArguments: ' +
-                    Array.prototype.slice.call(args).join('') +
-                    '\n' +
-                    new Error().stack
-            );
-            firstTime = false;
-        }
-        return fn.apply(this, arguments);
-    }, fn);
-}
-
-var deprecations = {};
-
-export function deprecateSimple(name, msg) {
-    if (hooks.deprecationHandler != null) {
-        hooks.deprecationHandler(name, msg);
-    }
-    if (!deprecations[name]) {
-        warn(msg);
-        deprecations[name] = true;
-    }
-}
-
-hooks.suppressDeprecationWarnings = false;
-hooks.deprecationHandler = null;
Index: ckend/node_modules/moment/src/lib/utils/extend.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/extend.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import hasOwnProp from './has-own-prop';
-
-export default function extend(a, b) {
-    for (var i in b) {
-        if (hasOwnProp(b, i)) {
-            a[i] = b[i];
-        }
-    }
-
-    if (hasOwnProp(b, 'toString')) {
-        a.toString = b.toString;
-    }
-
-    if (hasOwnProp(b, 'valueOf')) {
-        a.valueOf = b.valueOf;
-    }
-
-    return a;
-}
Index: ckend/node_modules/moment/src/lib/utils/has-own-prop.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/has-own-prop.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export default function hasOwnProp(a, b) {
-    return Object.prototype.hasOwnProperty.call(a, b);
-}
Index: ckend/node_modules/moment/src/lib/utils/hooks.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/hooks.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-export { hooks, setHookCallback };
-
-var hookCallback;
-
-function hooks() {
-    return hookCallback.apply(null, arguments);
-}
-
-// This is done to register the method called with moment()
-// without creating circular dependencies.
-function setHookCallback(callback) {
-    hookCallback = callback;
-}
Index: ckend/node_modules/moment/src/lib/utils/index-of.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/index-of.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var indexOf;
-
-if (Array.prototype.indexOf) {
-    indexOf = Array.prototype.indexOf;
-} else {
-    indexOf = function (o) {
-        // I know
-        var i;
-        for (i = 0; i < this.length; ++i) {
-            if (this[i] === o) {
-                return i;
-            }
-        }
-        return -1;
-    };
-}
-
-export { indexOf as default };
Index: ckend/node_modules/moment/src/lib/utils/is-array.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-array.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-export default function isArray(input) {
-    return (
-        input instanceof Array ||
-        Object.prototype.toString.call(input) === '[object Array]'
-    );
-}
Index: ckend/node_modules/moment/src/lib/utils/is-calendar-spec.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-calendar-spec.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import isObjectEmpty from './is-object-empty';
-import hasOwnProp from './has-own-prop';
-import isObject from './is-object';
-
-export default function isCalendarSpec(input) {
-    var objectTest = isObject(input) && !isObjectEmpty(input),
-        propertyTest = false,
-        properties = [
-            'sameDay',
-            'nextDay',
-            'lastDay',
-            'nextWeek',
-            'lastWeek',
-            'sameElse',
-        ],
-        i,
-        property;
-
-    for (i = 0; i < properties.length; i += 1) {
-        property = properties[i];
-        propertyTest = propertyTest || hasOwnProp(input, property);
-    }
-
-    return objectTest && propertyTest;
-}
Index: ckend/node_modules/moment/src/lib/utils/is-date.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-date.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-export default function isDate(input) {
-    return (
-        input instanceof Date ||
-        Object.prototype.toString.call(input) === '[object Date]'
-    );
-}
Index: ckend/node_modules/moment/src/lib/utils/is-function.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-function.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-export default function isFunction(input) {
-    return (
-        (typeof Function !== 'undefined' && input instanceof Function) ||
-        Object.prototype.toString.call(input) === '[object Function]'
-    );
-}
Index: ckend/node_modules/moment/src/lib/utils/is-leap-year.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-leap-year.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export function isLeapYear(year) {
-    return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
-}
Index: ckend/node_modules/moment/src/lib/utils/is-moment-input.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-moment-input.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-import isObjectEmpty from './is-object-empty';
-import hasOwnProp from './has-own-prop';
-import isObject from './is-object';
-import isDate from './is-date';
-import isNumber from './is-number';
-import isString from './is-string';
-import { isMoment } from '../moment/constructor';
-import isArray from './is-array';
-
-// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
-export function isMomentInput(input) {
-    return (
-        isMoment(input) ||
-        isDate(input) ||
-        isString(input) ||
-        isNumber(input) ||
-        isNumberOrStringArray(input) ||
-        isMomentInputObject(input) ||
-        input === null ||
-        input === undefined
-    );
-}
-
-export function isMomentInputObject(input) {
-    var objectTest = isObject(input) && !isObjectEmpty(input),
-        propertyTest = false,
-        properties = [
-            'years',
-            'year',
-            'y',
-            'months',
-            'month',
-            'M',
-            'days',
-            'day',
-            'd',
-            'dates',
-            'date',
-            'D',
-            'hours',
-            'hour',
-            'h',
-            'minutes',
-            'minute',
-            'm',
-            'seconds',
-            'second',
-            's',
-            'milliseconds',
-            'millisecond',
-            'ms',
-        ],
-        i,
-        property,
-        propertyLen = properties.length;
-
-    for (i = 0; i < propertyLen; i += 1) {
-        property = properties[i];
-        propertyTest = propertyTest || hasOwnProp(input, property);
-    }
-
-    return objectTest && propertyTest;
-}
-
-function isNumberOrStringArray(input) {
-    var arrayTest = isArray(input),
-        dataTypeTest = false;
-    if (arrayTest) {
-        dataTypeTest =
-            input.filter(function (item) {
-                return !isNumber(item) && isString(input);
-            }).length === 0;
-    }
-    return arrayTest && dataTypeTest;
-}
Index: ckend/node_modules/moment/src/lib/utils/is-number.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-number.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-export default function isNumber(input) {
-    return (
-        typeof input === 'number' ||
-        Object.prototype.toString.call(input) === '[object Number]'
-    );
-}
Index: ckend/node_modules/moment/src/lib/utils/is-object-empty.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-object-empty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import hasOwnProp from './has-own-prop';
-
-export default function isObjectEmpty(obj) {
-    if (Object.getOwnPropertyNames) {
-        return Object.getOwnPropertyNames(obj).length === 0;
-    } else {
-        var k;
-        for (k in obj) {
-            if (hasOwnProp(obj, k)) {
-                return false;
-            }
-        }
-        return true;
-    }
-}
Index: ckend/node_modules/moment/src/lib/utils/is-object.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-object.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-export default function isObject(input) {
-    // IE8 will treat undefined and null as object if it wasn't for
-    // input != null
-    return (
-        input != null &&
-        Object.prototype.toString.call(input) === '[object Object]'
-    );
-}
Index: ckend/node_modules/moment/src/lib/utils/is-string.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export default function isString(input) {
-    return typeof input === 'string' || input instanceof String;
-}
Index: ckend/node_modules/moment/src/lib/utils/is-undefined.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/is-undefined.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export default function isUndefined(input) {
-    return input === void 0;
-}
Index: ckend/node_modules/moment/src/lib/utils/keys.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/keys.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import hasOwnProp from './has-own-prop';
-
-var keys;
-
-if (Object.keys) {
-    keys = Object.keys;
-} else {
-    keys = function (obj) {
-        var i,
-            res = [];
-        for (i in obj) {
-            if (hasOwnProp(obj, i)) {
-                res.push(i);
-            }
-        }
-        return res;
-    };
-}
-
-export { keys as default };
Index: ckend/node_modules/moment/src/lib/utils/map.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/map.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-export default function map(arr, fn) {
-    var res = [],
-        i,
-        arrLen = arr.length;
-    for (i = 0; i < arrLen; ++i) {
-        res.push(fn(arr[i], i));
-    }
-    return res;
-}
Index: ckend/node_modules/moment/src/lib/utils/mod.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/mod.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export default function mod(n, x) {
-    return ((n % x) + x) % x;
-}
Index: ckend/node_modules/moment/src/lib/utils/some.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/some.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-var some;
-if (Array.prototype.some) {
-    some = Array.prototype.some;
-} else {
-    some = function (fun) {
-        var t = Object(this),
-            len = t.length >>> 0,
-            i;
-
-        for (i = 0; i < len; i++) {
-            if (i in t && fun.call(this, t[i], i, t)) {
-                return true;
-            }
-        }
-
-        return false;
-    };
-}
-
-export { some as default };
Index: ckend/node_modules/moment/src/lib/utils/to-int.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/to-int.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import absFloor from './abs-floor';
-
-export default function toInt(argumentForCoercion) {
-    var coercedNumber = +argumentForCoercion,
-        value = 0;
-
-    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
-        value = absFloor(coercedNumber);
-    }
-
-    return value;
-}
Index: ckend/node_modules/moment/src/lib/utils/zero-fill.js
===================================================================
--- backend/node_modules/moment/src/lib/utils/zero-fill.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-export default function zeroFill(number, targetLength, forceSign) {
-    var absNumber = '' + Math.abs(number),
-        zerosToFill = targetLength - absNumber.length,
-        sign = number >= 0;
-    return (
-        (sign ? (forceSign ? '+' : '') : '-') +
-        Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
-        absNumber
-    );
-}
Index: ckend/node_modules/moment/src/locale/af.js
===================================================================
--- backend/node_modules/moment/src/locale/af.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-//! moment.js locale configuration
-//! locale : Afrikaans [af]
-//! author : Werner Mollentze : https://github.com/wernerm
-
-import moment from '../moment';
-
-export default moment.defineLocale('af', {
-    months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
-    weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
-        '_'
-    ),
-    weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
-    weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
-    meridiemParse: /vm|nm/i,
-    isPM: function (input) {
-        return /^nm$/i.test(input);
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'vm' : 'VM';
-        } else {
-            return isLower ? 'nm' : 'NM';
-        }
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Vandag om] LT',
-        nextDay: '[Môre om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[Gister om] LT',
-        lastWeek: '[Laas] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'oor %s',
-        past: '%s gelede',
-        s: "'n paar sekondes",
-        ss: '%d sekondes',
-        m: "'n minuut",
-        mm: '%d minute',
-        h: "'n uur",
-        hh: '%d ure',
-        d: "'n dag",
-        dd: '%d dae',
-        M: "'n maand",
-        MM: '%d maande',
-        y: "'n jaar",
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        ); // Thanks to Joris Röling : https://github.com/jjupiter
-    },
-    week: {
-        dow: 1, // Maandag is die eerste dag van die week.
-        doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-dz.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-dz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Algeria) [ar-dz]
-//! author : Amine Roukh: https://github.com/Amine27
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
-
-import moment from '../moment';
-
-var pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'جانفي',
-        'فيفري',
-        'مارس',
-        'أفريل',
-        'ماي',
-        'جوان',
-        'جويلية',
-        'أوت',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar-dz', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-kw.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-kw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Kuwait) [ar-kw]
-//! author : Nusret Parlak: https://github.com/nusretparlak
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-kw', {
-    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-ly.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-ly.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Libya) [ar-ly]
-//! author : Ali Hmer: https://github.com/kikoanis
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '1',
-        2: '2',
-        3: '3',
-        4: '4',
-        5: '5',
-        6: '6',
-        7: '7',
-        8: '8',
-        9: '9',
-        0: '0',
-    },
-    pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'يناير',
-        'فبراير',
-        'مارس',
-        'أبريل',
-        'مايو',
-        'يونيو',
-        'يوليو',
-        'أغسطس',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar-ly', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-ma.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-ma.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Morocco) [ar-ma]
-//! author : ElFadili Yassine : https://github.com/ElFadiliY
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-ma', {
-    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-ps.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-ps.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,112 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Palestine) [ar-ps]
-//! author : Majd Al-Shihabi : https://github.com/majdal
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    };
-
-export default moment.defineLocale('ar-ps', {
-    months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
-        '_'
-    ),
-    monthsShort:
-        'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .split('') // reversed since negative lookbehind not supported everywhere
-            .reverse()
-            .join('')
-            .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
-                return numberMap[match];
-            })
-            .split('')
-            .reverse()
-            .join('')
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-sa.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-sa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic (Saudi Arabia) [ar-sa]
-//! author : Suhail Alkowaileet : https://github.com/xsoh
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    };
-
-export default moment.defineLocale('ar-sa', {
-    months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar-tn.js
===================================================================
--- backend/node_modules/moment/src/locale/ar-tn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale  :  Arabic (Tunisia) [ar-tn]
-//! author : Nader Toukabri : https://github.com/naderio
-
-import moment from '../moment';
-
-export default moment.defineLocale('ar-tn', {
-    months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
-            '_'
-        ),
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[اليوم على الساعة] LT',
-        nextDay: '[غدا على الساعة] LT',
-        nextWeek: 'dddd [على الساعة] LT',
-        lastDay: '[أمس على الساعة] LT',
-        lastWeek: 'dddd [على الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'في %s',
-        past: 'منذ %s',
-        s: 'ثوان',
-        ss: '%d ثانية',
-        m: 'دقيقة',
-        mm: '%d دقائق',
-        h: 'ساعة',
-        hh: '%d ساعات',
-        d: 'يوم',
-        dd: '%d أيام',
-        M: 'شهر',
-        MM: '%d أشهر',
-        y: 'سنة',
-        yy: '%d سنوات',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ar.js
===================================================================
--- backend/node_modules/moment/src/locale/ar.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,189 +1,0 @@
-//! moment.js locale configuration
-//! locale : Arabic [ar]
-//! author : Abdel Said: https://github.com/abdelsaid
-//! author : Ahmed Elkhatib
-//! author : forabi https://github.com/forabi
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    },
-    pluralForm = function (n) {
-        return n === 0
-            ? 0
-            : n === 1
-              ? 1
-              : n === 2
-                ? 2
-                : n % 100 >= 3 && n % 100 <= 10
-                  ? 3
-                  : n % 100 >= 11
-                    ? 4
-                    : 5;
-    },
-    plurals = {
-        s: [
-            'أقل من ثانية',
-            'ثانية واحدة',
-            ['ثانيتان', 'ثانيتين'],
-            '%d ثوان',
-            '%d ثانية',
-            '%d ثانية',
-        ],
-        m: [
-            'أقل من دقيقة',
-            'دقيقة واحدة',
-            ['دقيقتان', 'دقيقتين'],
-            '%d دقائق',
-            '%d دقيقة',
-            '%d دقيقة',
-        ],
-        h: [
-            'أقل من ساعة',
-            'ساعة واحدة',
-            ['ساعتان', 'ساعتين'],
-            '%d ساعات',
-            '%d ساعة',
-            '%d ساعة',
-        ],
-        d: [
-            'أقل من يوم',
-            'يوم واحد',
-            ['يومان', 'يومين'],
-            '%d أيام',
-            '%d يومًا',
-            '%d يوم',
-        ],
-        M: [
-            'أقل من شهر',
-            'شهر واحد',
-            ['شهران', 'شهرين'],
-            '%d أشهر',
-            '%d شهرا',
-            '%d شهر',
-        ],
-        y: [
-            'أقل من عام',
-            'عام واحد',
-            ['عامان', 'عامين'],
-            '%d أعوام',
-            '%d عامًا',
-            '%d عام',
-        ],
-    },
-    pluralize = function (u) {
-        return function (number, withoutSuffix, string, isFuture) {
-            var f = pluralForm(number),
-                str = plurals[u][pluralForm(number)];
-            if (f === 2) {
-                str = str[withoutSuffix ? 0 : 1];
-            }
-            return str.replace(/%d/i, number);
-        };
-    },
-    months = [
-        'يناير',
-        'فبراير',
-        'مارس',
-        'أبريل',
-        'مايو',
-        'يونيو',
-        'يوليو',
-        'أغسطس',
-        'سبتمبر',
-        'أكتوبر',
-        'نوفمبر',
-        'ديسمبر',
-    ];
-
-export default moment.defineLocale('ar', {
-    months: months,
-    monthsShort: months,
-    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
-    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
-    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/\u200FM/\u200FYYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ص|م/,
-    isPM: function (input) {
-        return 'م' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ص';
-        } else {
-            return 'م';
-        }
-    },
-    calendar: {
-        sameDay: '[اليوم عند الساعة] LT',
-        nextDay: '[غدًا عند الساعة] LT',
-        nextWeek: 'dddd [عند الساعة] LT',
-        lastDay: '[أمس عند الساعة] LT',
-        lastWeek: 'dddd [عند الساعة] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'بعد %s',
-        past: 'منذ %s',
-        s: pluralize('s'),
-        ss: pluralize('s'),
-        m: pluralize('m'),
-        mm: pluralize('m'),
-        h: pluralize('h'),
-        hh: pluralize('h'),
-        d: pluralize('d'),
-        dd: pluralize('d'),
-        M: pluralize('M'),
-        MM: pluralize('M'),
-        y: pluralize('y'),
-        yy: pluralize('y'),
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/az.js
===================================================================
--- backend/node_modules/moment/src/locale/az.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Azerbaijani [az]
-//! author : topchiyev : https://github.com/topchiyev
-
-import moment from '../moment';
-
-var suffixes = {
-    1: '-inci',
-    5: '-inci',
-    8: '-inci',
-    70: '-inci',
-    80: '-inci',
-    2: '-nci',
-    7: '-nci',
-    20: '-nci',
-    50: '-nci',
-    3: '-üncü',
-    4: '-üncü',
-    100: '-üncü',
-    6: '-ncı',
-    9: '-uncu',
-    10: '-uncu',
-    30: '-uncu',
-    60: '-ıncı',
-    90: '-ıncı',
-};
-
-export default moment.defineLocale('az', {
-    months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
-    weekdays:
-        'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
-            '_'
-        ),
-    weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
-    weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün saat] LT',
-        nextDay: '[sabah saat] LT',
-        nextWeek: '[gələn həftə] dddd [saat] LT',
-        lastDay: '[dünən] LT',
-        lastWeek: '[keçən həftə] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s sonra',
-        past: '%s əvvəl',
-        s: 'bir neçə saniyə',
-        ss: '%d saniyə',
-        m: 'bir dəqiqə',
-        mm: '%d dəqiqə',
-        h: 'bir saat',
-        hh: '%d saat',
-        d: 'bir gün',
-        dd: '%d gün',
-        M: 'bir ay',
-        MM: '%d ay',
-        y: 'bir il',
-        yy: '%d il',
-    },
-    meridiemParse: /gecə|səhər|gündüz|axşam/,
-    isPM: function (input) {
-        return /^(gündüz|axşam)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'gecə';
-        } else if (hour < 12) {
-            return 'səhər';
-        } else if (hour < 17) {
-            return 'gündüz';
-        } else {
-            return 'axşam';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
-    ordinal: function (number) {
-        if (number === 0) {
-            // special case for zero
-            return number + '-ıncı';
-        }
-        var a = number % 10,
-            b = (number % 100) - a,
-            c = number >= 100 ? 100 : null;
-        return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/be.js
===================================================================
--- backend/node_modules/moment/src/locale/be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,142 +1,0 @@
-//! moment.js locale configuration
-//! locale : Belarusian [be]
-//! author : Dmitry Demidov : https://github.com/demidov91
-//! author: Praleska: http://praleska.pro/
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-        mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
-        hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
-        dd: 'дзень_дні_дзён',
-        MM: 'месяц_месяцы_месяцаў',
-        yy: 'год_гады_гадоў',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'хвіліна' : 'хвіліну';
-    } else if (key === 'h') {
-        return withoutSuffix ? 'гадзіна' : 'гадзіну';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-
-export default moment.defineLocale('be', {
-    months: {
-        format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
-            '_'
-        ),
-        standalone:
-            'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
-    weekdays: {
-        format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
-            '_'
-        ),
-        standalone:
-            'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
-                '_'
-            ),
-        isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
-    },
-    weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-    weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY г.',
-        LLL: 'D MMMM YYYY г., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY г., HH:mm',
-    },
-    calendar: {
-        sameDay: '[Сёння ў] LT',
-        nextDay: '[Заўтра ў] LT',
-        lastDay: '[Учора ў] LT',
-        nextWeek: function () {
-            return '[У] dddd [ў] LT';
-        },
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 5:
-                case 6:
-                    return '[У мінулую] dddd [ў] LT';
-                case 1:
-                case 2:
-                case 4:
-                    return '[У мінулы] dddd [ў] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'праз %s',
-        past: '%s таму',
-        s: 'некалькі секунд',
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: relativeTimeWithPlural,
-        hh: relativeTimeWithPlural,
-        d: 'дзень',
-        dd: relativeTimeWithPlural,
-        M: 'месяц',
-        MM: relativeTimeWithPlural,
-        y: 'год',
-        yy: relativeTimeWithPlural,
-    },
-    meridiemParse: /ночы|раніцы|дня|вечара/,
-    isPM: function (input) {
-        return /^(дня|вечара)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночы';
-        } else if (hour < 12) {
-            return 'раніцы';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечара';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-            case 'w':
-            case 'W':
-                return (number % 10 === 2 || number % 10 === 3) &&
-                    number % 100 !== 12 &&
-                    number % 100 !== 13
-                    ? number + '-і'
-                    : number + '-ы';
-            case 'D':
-                return number + '-га';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/bg.js
===================================================================
--- backend/node_modules/moment/src/locale/bg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bulgarian [bg]
-//! author : Krasen Borisov : https://github.com/kraz
-
-import moment from '../moment';
-
-export default moment.defineLocale('bg', {
-    months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
-        '_'
-    ),
-    monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
-    weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
-        '_'
-    ),
-    weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
-    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Днес в] LT',
-        nextDay: '[Утре в] LT',
-        nextWeek: 'dddd [в] LT',
-        lastDay: '[Вчера в] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 6:
-                    return '[Миналата] dddd [в] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[Миналия] dddd [в] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'след %s',
-        past: 'преди %s',
-        s: 'няколко секунди',
-        ss: '%d секунди',
-        m: 'минута',
-        mm: '%d минути',
-        h: 'час',
-        hh: '%d часа',
-        d: 'ден',
-        dd: '%d дена',
-        w: 'седмица',
-        ww: '%d седмици',
-        M: 'месец',
-        MM: '%d месеца',
-        y: 'година',
-        yy: '%d години',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-    ordinal: function (number) {
-        var lastDigit = number % 10,
-            last2Digits = number % 100;
-        if (number === 0) {
-            return number + '-ев';
-        } else if (last2Digits === 0) {
-            return number + '-ен';
-        } else if (last2Digits > 10 && last2Digits < 20) {
-            return number + '-ти';
-        } else if (lastDigit === 1) {
-            return number + '-ви';
-        } else if (lastDigit === 2) {
-            return number + '-ри';
-        } else if (lastDigit === 7 || lastDigit === 8) {
-            return number + '-ми';
-        } else {
-            return number + '-ти';
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/bm.js
===================================================================
--- backend/node_modules/moment/src/locale/bm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bambara [bm]
-//! author : Estelle Comment : https://github.com/estellecomment
-// Language contact person : Abdoufata Kane : https://github.com/abdoufata
-
-import moment from '../moment';
-
-export default moment.defineLocale('bm', {
-    months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
-        '_'
-    ),
-    monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
-    weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
-    weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
-    weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'MMMM [tile] D [san] YYYY',
-        LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-        LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Bi lɛrɛ] LT',
-        nextDay: '[Sini lɛrɛ] LT',
-        nextWeek: 'dddd [don lɛrɛ] LT',
-        lastDay: '[Kunu lɛrɛ] LT',
-        lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s kɔnɔ',
-        past: 'a bɛ %s bɔ',
-        s: 'sanga dama dama',
-        ss: 'sekondi %d',
-        m: 'miniti kelen',
-        mm: 'miniti %d',
-        h: 'lɛrɛ kelen',
-        hh: 'lɛrɛ %d',
-        d: 'tile kelen',
-        dd: 'tile %d',
-        M: 'kalo kelen',
-        MM: 'kalo %d',
-        y: 'san kelen',
-        yy: 'san %d',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/bn-bd.js
===================================================================
--- backend/node_modules/moment/src/locale/bn-bd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali (Bangladesh) [bn-bd]
-//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '১',
-        2: '২',
-        3: '৩',
-        4: '৪',
-        5: '৫',
-        6: '৬',
-        7: '৭',
-        8: '৮',
-        9: '৯',
-        0: '০',
-    },
-    numberMap = {
-        '১': '1',
-        '২': '2',
-        '৩': '3',
-        '৪': '4',
-        '৫': '5',
-        '৬': '6',
-        '৭': '7',
-        '৮': '8',
-        '৯': '9',
-        '০': '0',
-    };
-
-export default moment.defineLocale('bn-bd', {
-    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-        '_'
-    ),
-    monthsShort:
-        'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-            '_'
-        ),
-    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-        '_'
-    ),
-    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm সময়',
-        LTS: 'A h:mm:ss সময়',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm সময়',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-    },
-    calendar: {
-        sameDay: '[আজ] LT',
-        nextDay: '[আগামীকাল] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[গতকাল] LT',
-        lastWeek: '[গত] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s পরে',
-        past: '%s আগে',
-        s: 'কয়েক সেকেন্ড',
-        ss: '%d সেকেন্ড',
-        m: 'এক মিনিট',
-        mm: '%d মিনিট',
-        h: 'এক ঘন্টা',
-        hh: '%d ঘন্টা',
-        d: 'এক দিন',
-        dd: '%d দিন',
-        M: 'এক মাস',
-        MM: '%d মাস',
-        y: 'এক বছর',
-        yy: '%d বছর',
-    },
-    preparse: function (string) {
-        return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-
-    meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'রাত') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ভোর') {
-            return hour;
-        } else if (meridiem === 'সকাল') {
-            return hour;
-        } else if (meridiem === 'দুপুর') {
-            return hour >= 3 ? hour : hour + 12;
-        } else if (meridiem === 'বিকাল') {
-            return hour + 12;
-        } else if (meridiem === 'সন্ধ্যা') {
-            return hour + 12;
-        }
-    },
-
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'রাত';
-        } else if (hour < 6) {
-            return 'ভোর';
-        } else if (hour < 12) {
-            return 'সকাল';
-        } else if (hour < 15) {
-            return 'দুপুর';
-        } else if (hour < 18) {
-            return 'বিকাল';
-        } else if (hour < 20) {
-            return 'সন্ধ্যা';
-        } else {
-            return 'রাত';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/bn.js
===================================================================
--- backend/node_modules/moment/src/locale/bn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bengali [bn]
-//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '১',
-        2: '২',
-        3: '৩',
-        4: '৪',
-        5: '৫',
-        6: '৬',
-        7: '৭',
-        8: '৮',
-        9: '৯',
-        0: '০',
-    },
-    numberMap = {
-        '১': '1',
-        '২': '2',
-        '৩': '3',
-        '৪': '4',
-        '৫': '5',
-        '৬': '6',
-        '৭': '7',
-        '৮': '8',
-        '৯': '9',
-        '০': '0',
-    };
-
-export default moment.defineLocale('bn', {
-    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
-        '_'
-    ),
-    monthsShort:
-        'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
-            '_'
-        ),
-    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
-        '_'
-    ),
-    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
-    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm সময়',
-        LTS: 'A h:mm:ss সময়',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm সময়',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
-    },
-    calendar: {
-        sameDay: '[আজ] LT',
-        nextDay: '[আগামীকাল] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[গতকাল] LT',
-        lastWeek: '[গত] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s পরে',
-        past: '%s আগে',
-        s: 'কয়েক সেকেন্ড',
-        ss: '%d সেকেন্ড',
-        m: 'এক মিনিট',
-        mm: '%d মিনিট',
-        h: 'এক ঘন্টা',
-        hh: '%d ঘন্টা',
-        d: 'এক দিন',
-        dd: '%d দিন',
-        M: 'এক মাস',
-        MM: '%d মাস',
-        y: 'এক বছর',
-        yy: '%d বছর',
-    },
-    preparse: function (string) {
-        return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'রাত' && hour >= 4) ||
-            (meridiem === 'দুপুর' && hour < 5) ||
-            meridiem === 'বিকাল'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'রাত';
-        } else if (hour < 10) {
-            return 'সকাল';
-        } else if (hour < 17) {
-            return 'দুপুর';
-        } else if (hour < 20) {
-            return 'বিকাল';
-        } else {
-            return 'রাত';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/bo.js
===================================================================
--- backend/node_modules/moment/src/locale/bo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tibetan [bo]
-//! author : Thupten N. Chakrishar : https://github.com/vajradog
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '༡',
-        2: '༢',
-        3: '༣',
-        4: '༤',
-        5: '༥',
-        6: '༦',
-        7: '༧',
-        8: '༨',
-        9: '༩',
-        0: '༠',
-    },
-    numberMap = {
-        '༡': '1',
-        '༢': '2',
-        '༣': '3',
-        '༤': '4',
-        '༥': '5',
-        '༦': '6',
-        '༧': '7',
-        '༨': '8',
-        '༩': '9',
-        '༠': '0',
-    };
-
-export default moment.defineLocale('bo', {
-    months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
-            '_'
-        ),
-    monthsShortRegex: /^(ཟླ་\d{1,2})/,
-    monthsParseExact: true,
-    weekdays:
-        'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
-            '_'
-        ),
-    weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
-        '_'
-    ),
-    weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[དི་རིང] LT',
-        nextDay: '[སང་ཉིན] LT',
-        nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
-        lastDay: '[ཁ་སང] LT',
-        lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ལ་',
-        past: '%s སྔན་ལ',
-        s: 'ལམ་སང',
-        ss: '%d སྐར་ཆ།',
-        m: 'སྐར་མ་གཅིག',
-        mm: '%d སྐར་མ',
-        h: 'ཆུ་ཚོད་གཅིག',
-        hh: '%d ཆུ་ཚོད',
-        d: 'ཉིན་གཅིག',
-        dd: '%d ཉིན་',
-        M: 'ཟླ་བ་གཅིག',
-        MM: '%d ཟླ་བ',
-        y: 'ལོ་གཅིག',
-        yy: '%d ལོ',
-    },
-    preparse: function (string) {
-        return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'མཚན་མོ' && hour >= 4) ||
-            (meridiem === 'ཉིན་གུང' && hour < 5) ||
-            meridiem === 'དགོང་དག'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'མཚན་མོ';
-        } else if (hour < 10) {
-            return 'ཞོགས་ཀས';
-        } else if (hour < 17) {
-            return 'ཉིན་གུང';
-        } else if (hour < 20) {
-            return 'དགོང་དག';
-        } else {
-            return 'མཚན་མོ';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/br.js
===================================================================
--- backend/node_modules/moment/src/locale/br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,168 +1,0 @@
-//! moment.js locale configuration
-//! locale : Breton [br]
-//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
-
-import moment from '../moment';
-
-function relativeTimeWithMutation(number, withoutSuffix, key) {
-    var format = {
-        mm: 'munutenn',
-        MM: 'miz',
-        dd: 'devezh',
-    };
-    return number + ' ' + mutation(format[key], number);
-}
-function specialMutationForYears(number) {
-    switch (lastNumber(number)) {
-        case 1:
-        case 3:
-        case 4:
-        case 5:
-        case 9:
-            return number + ' bloaz';
-        default:
-            return number + ' vloaz';
-    }
-}
-function lastNumber(number) {
-    if (number > 9) {
-        return lastNumber(number % 10);
-    }
-    return number;
-}
-function mutation(text, number) {
-    if (number === 2) {
-        return softMutation(text);
-    }
-    return text;
-}
-function softMutation(text) {
-    var mutationTable = {
-        m: 'v',
-        b: 'v',
-        d: 'z',
-    };
-    if (mutationTable[text.charAt(0)] === undefined) {
-        return text;
-    }
-    return mutationTable[text.charAt(0)] + text.substring(1);
-}
-
-var monthsParse = [
-        /^gen/i,
-        /^c[ʼ\']hwe/i,
-        /^meu/i,
-        /^ebr/i,
-        /^mae/i,
-        /^(mez|eve)/i,
-        /^gou/i,
-        /^eos/i,
-        /^gwe/i,
-        /^her/i,
-        /^du/i,
-        /^ker/i,
-    ],
-    monthsRegex =
-        /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-    monthsStrictRegex =
-        /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
-    monthsShortStrictRegex =
-        /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
-    fullWeekdaysParse = [
-        /^sul/i,
-        /^lun/i,
-        /^meurzh/i,
-        /^merc[ʼ\']her/i,
-        /^yaou/i,
-        /^gwener/i,
-        /^sadorn/i,
-    ],
-    shortWeekdaysParse = [
-        /^Sul/i,
-        /^Lun/i,
-        /^Meu/i,
-        /^Mer/i,
-        /^Yao/i,
-        /^Gwe/i,
-        /^Sad/i,
-    ],
-    minWeekdaysParse = [
-        /^Su/i,
-        /^Lu/i,
-        /^Me([^r]|$)/i,
-        /^Mer/i,
-        /^Ya/i,
-        /^Gw/i,
-        /^Sa/i,
-    ];
-
-export default moment.defineLocale('br', {
-    months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
-        '_'
-    ),
-    monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
-    weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
-    weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
-    weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
-    weekdaysParse: minWeekdaysParse,
-    fullWeekdaysParse: fullWeekdaysParse,
-    shortWeekdaysParse: shortWeekdaysParse,
-    minWeekdaysParse: minWeekdaysParse,
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex: monthsStrictRegex,
-    monthsShortStrictRegex: monthsShortStrictRegex,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [a viz] MMMM YYYY',
-        LLL: 'D [a viz] MMMM YYYY HH:mm',
-        LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hiziv da] LT',
-        nextDay: '[Warcʼhoazh da] LT',
-        nextWeek: 'dddd [da] LT',
-        lastDay: '[Decʼh da] LT',
-        lastWeek: 'dddd [paset da] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'a-benn %s',
-        past: '%s ʼzo',
-        s: 'un nebeud segondennoù',
-        ss: '%d eilenn',
-        m: 'ur vunutenn',
-        mm: relativeTimeWithMutation,
-        h: 'un eur',
-        hh: '%d eur',
-        d: 'un devezh',
-        dd: relativeTimeWithMutation,
-        M: 'ur miz',
-        MM: relativeTimeWithMutation,
-        y: 'ur bloaz',
-        yy: specialMutationForYears,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'añ' : 'vet';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
-    isPM: function (token) {
-        return token === 'g.m.';
-    },
-    meridiem: function (hour, minute, isLower) {
-        return hour < 12 ? 'a.m.' : 'g.m.';
-    },
-});
Index: ckend/node_modules/moment/src/locale/bs.js
===================================================================
--- backend/node_modules/moment/src/locale/bs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,160 +1,0 @@
-//! moment.js locale configuration
-//! locale : Bosnian [bs]
-//! author : Nedim Cholich : https://github.com/frontyard
-//! author : Rasid Redzic : https://github.com/rasidre
-//! based on (hr) translation by Bojan Marković
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    switch (key) {
-        case 'm':
-            return withoutSuffix
-                ? 'jedna minuta'
-                : isFuture
-                  ? 'jednu minutu'
-                  : 'jedne minute';
-    }
-}
-
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            if (number === 1) {
-                result += 'sekunda';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sekunde';
-            } else {
-                result += 'sekundi';
-            }
-            return result;
-        case 'mm':
-            if (number === 1) {
-                result += 'minuta';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'minute';
-            } else {
-                result += 'minuta';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'jedan sat' : 'jedan sat';
-        case 'hh':
-            if (number === 1) {
-                result += 'sat';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sata';
-            } else {
-                result += 'sati';
-            }
-            return result;
-        case 'dd':
-            if (number === 1) {
-                result += 'dan';
-            } else {
-                result += 'dana';
-            }
-            return result;
-        case 'MM':
-            if (number === 1) {
-                result += 'mjesec';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'mjeseca';
-            } else {
-                result += 'mjeseci';
-            }
-            return result;
-        case 'yy':
-            if (number === 1) {
-                result += 'godina';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'godine';
-            } else {
-                result += 'godina';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('bs', {
-    months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[jučer u] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                    return '[prošlu] dddd [u] LT';
-                case 6:
-                    return '[prošle] [subote] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prošli] dddd [u] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'par sekundi',
-        ss: translate,
-        m: processRelativeTime,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: 'dan',
-        dd: translate,
-        M: 'mjesec',
-        MM: translate,
-        y: 'godinu',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ca.js
===================================================================
--- backend/node_modules/moment/src/locale/ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Catalan [ca]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-import moment from '../moment';
-
-export default moment.defineLocale('ca', {
-    months: {
-        standalone:
-            'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
-                '_'
-            ),
-        format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
-            '_'
-        ),
-        isFormat: /D[oD]?(\s)+MMMM/,
-    },
-    monthsShort:
-        'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
-            '_'
-        ),
-    weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
-    weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [de] YYYY',
-        ll: 'D MMM YYYY',
-        LLL: 'D MMMM [de] YYYY [a les] H:mm',
-        lll: 'D MMM YYYY, H:mm',
-        LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
-        llll: 'ddd D MMM YYYY, H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        nextDay: function () {
-            return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        lastDay: function () {
-            return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [passat a ' +
-                (this.hours() !== 1 ? 'les' : 'la') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: "d'aquí %s",
-        past: 'fa %s',
-        s: 'uns segons',
-        ss: '%d segons',
-        m: 'un minut',
-        mm: '%d minuts',
-        h: 'una hora',
-        hh: '%d hores',
-        d: 'un dia',
-        dd: '%d dies',
-        M: 'un mes',
-        MM: '%d mesos',
-        y: 'un any',
-        yy: '%d anys',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-    ordinal: function (number, period) {
-        var output =
-            number === 1
-                ? 'r'
-                : number === 2
-                  ? 'n'
-                  : number === 3
-                    ? 'r'
-                    : number === 4
-                      ? 't'
-                      : 'è';
-        if (period === 'w' || period === 'W') {
-            output = 'a';
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/cs.js
===================================================================
--- backend/node_modules/moment/src/locale/cs.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,181 +1,0 @@
-//! moment.js locale configuration
-//! locale : Czech [cs]
-//! author : petrbela : https://github.com/petrbela
-
-import moment from '../moment';
-
-var months = {
-        standalone:
-            'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
-                '_'
-            ),
-        format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
-            '_'
-        ),
-        isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
-    },
-    monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
-    monthsParse = [
-        /^led/i,
-        /^úno/i,
-        /^bře/i,
-        /^dub/i,
-        /^kvě/i,
-        /^(čvn|červen$|června)/i,
-        /^(čvc|červenec|července)/i,
-        /^srp/i,
-        /^zář/i,
-        /^říj/i,
-        /^lis/i,
-        /^pro/i,
-    ],
-    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-    monthsRegex =
-        /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
-
-function plural(n) {
-    return n > 1 && n < 5 && ~~(n / 10) !== 1;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's': // a few seconds / in a few seconds / a few seconds ago
-            return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
-        case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'sekundy' : 'sekund');
-            } else {
-                return result + 'sekundami';
-            }
-        case 'm': // a minute / in a minute / a minute ago
-            return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
-        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'minuty' : 'minut');
-            } else {
-                return result + 'minutami';
-            }
-        case 'h': // an hour / in an hour / an hour ago
-            return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-        case 'hh': // 9 hours / in 9 hours / 9 hours ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'hodiny' : 'hodin');
-            } else {
-                return result + 'hodinami';
-            }
-        case 'd': // a day / in a day / a day ago
-            return withoutSuffix || isFuture ? 'den' : 'dnem';
-        case 'dd': // 9 days / in 9 days / 9 days ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'dny' : 'dní');
-            } else {
-                return result + 'dny';
-            }
-        case 'M': // a month / in a month / a month ago
-            return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
-        case 'MM': // 9 months / in 9 months / 9 months ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'měsíce' : 'měsíců');
-            } else {
-                return result + 'měsíci';
-            }
-        case 'y': // a year / in a year / a year ago
-            return withoutSuffix || isFuture ? 'rok' : 'rokem';
-        case 'yy': // 9 years / in 9 years / 9 years ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'roky' : 'let');
-            } else {
-                return result + 'lety';
-            }
-    }
-}
-
-export default moment.defineLocale('cs', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
-    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
-    monthsStrictRegex:
-        /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
-    monthsShortStrictRegex:
-        /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
-    weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
-    weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd D. MMMM YYYY H:mm',
-        l: 'D. M. YYYY',
-    },
-    calendar: {
-        sameDay: '[dnes v] LT',
-        nextDay: '[zítra v] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v neděli v] LT';
-                case 1:
-                case 2:
-                    return '[v] dddd [v] LT';
-                case 3:
-                    return '[ve středu v] LT';
-                case 4:
-                    return '[ve čtvrtek v] LT';
-                case 5:
-                    return '[v pátek v] LT';
-                case 6:
-                    return '[v sobotu v] LT';
-            }
-        },
-        lastDay: '[včera v] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[minulou neděli v] LT';
-                case 1:
-                case 2:
-                    return '[minulé] dddd [v] LT';
-                case 3:
-                    return '[minulou středu v] LT';
-                case 4:
-                case 5:
-                    return '[minulý] dddd [v] LT';
-                case 6:
-                    return '[minulou sobotu v] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'před %s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/cv.js
===================================================================
--- backend/node_modules/moment/src/locale/cv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chuvash [cv]
-//! author : Anatoly Mironov : https://github.com/mirontoli
-
-import moment from '../moment';
-
-export default moment.defineLocale('cv', {
-    months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
-        '_'
-    ),
-    monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
-    weekdays:
-        'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
-            '_'
-        ),
-    weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
-    weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
-        LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-        LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
-    },
-    calendar: {
-        sameDay: '[Паян] LT [сехетре]',
-        nextDay: '[Ыран] LT [сехетре]',
-        lastDay: '[Ӗнер] LT [сехетре]',
-        nextWeek: '[Ҫитес] dddd LT [сехетре]',
-        lastWeek: '[Иртнӗ] dddd LT [сехетре]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (output) {
-            var affix = /сехет$/i.exec(output)
-                ? 'рен'
-                : /ҫул$/i.exec(output)
-                  ? 'тан'
-                  : 'ран';
-            return output + affix;
-        },
-        past: '%s каялла',
-        s: 'пӗр-ик ҫеккунт',
-        ss: '%d ҫеккунт',
-        m: 'пӗр минут',
-        mm: '%d минут',
-        h: 'пӗр сехет',
-        hh: '%d сехет',
-        d: 'пӗр кун',
-        dd: '%d кун',
-        M: 'пӗр уйӑх',
-        MM: '%d уйӑх',
-        y: 'пӗр ҫул',
-        yy: '%d ҫул',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
-    ordinal: '%d-мӗш',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/cy.js
===================================================================
--- backend/node_modules/moment/src/locale/cy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,98 +1,0 @@
-//! moment.js locale configuration
-//! locale : Welsh [cy]
-//! author : Robert Allen : https://github.com/robgallen
-//! author : https://github.com/ryangreaves
-
-import moment from '../moment';
-
-export default moment.defineLocale('cy', {
-    months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
-        '_'
-    ),
-    monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
-        '_'
-    ),
-    weekdays:
-        'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
-            '_'
-        ),
-    weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
-    weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
-    weekdaysParseExact: true,
-    // time formats are the same as en-gb
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Heddiw am] LT',
-        nextDay: '[Yfory am] LT',
-        nextWeek: 'dddd [am] LT',
-        lastDay: '[Ddoe am] LT',
-        lastWeek: 'dddd [diwethaf am] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'mewn %s',
-        past: '%s yn ôl',
-        s: 'ychydig eiliadau',
-        ss: '%d eiliad',
-        m: 'munud',
-        mm: '%d munud',
-        h: 'awr',
-        hh: '%d awr',
-        d: 'diwrnod',
-        dd: '%d diwrnod',
-        M: 'mis',
-        MM: '%d mis',
-        y: 'blwyddyn',
-        yy: '%d flynedd',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
-    // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
-    ordinal: function (number) {
-        var b = number,
-            output = '',
-            lookup = [
-                '',
-                'af',
-                'il',
-                'ydd',
-                'ydd',
-                'ed',
-                'ed',
-                'ed',
-                'fed',
-                'fed',
-                'fed', // 1af to 10fed
-                'eg',
-                'fed',
-                'eg',
-                'eg',
-                'fed',
-                'eg',
-                'eg',
-                'fed',
-                'eg',
-                'fed', // 11eg to 20fed
-            ];
-        if (b > 20) {
-            if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
-                output = 'fed'; // not 30ain, 70ain or 90ain
-            } else {
-                output = 'ain';
-            }
-        } else if (b > 0) {
-            output = lookup[b];
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/da.js
===================================================================
--- backend/node_modules/moment/src/locale/da.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-//! moment.js locale configuration
-//! locale : Danish [da]
-//! author : Ulrik Nielsen : https://github.com/mrbase
-
-import moment from '../moment';
-
-export default moment.defineLocale('da', {
-    months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-    weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
-    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i dag kl.] LT',
-        nextDay: '[i morgen kl.] LT',
-        nextWeek: 'på dddd [kl.] LT',
-        lastDay: '[i går kl.] LT',
-        lastWeek: '[i] dddd[s kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s siden',
-        s: 'få sekunder',
-        ss: '%d sekunder',
-        m: 'et minut',
-        mm: '%d minutter',
-        h: 'en time',
-        hh: '%d timer',
-        d: 'en dag',
-        dd: '%d dage',
-        M: 'en måned',
-        MM: '%d måneder',
-        y: 'et år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/de-at.js
===================================================================
--- backend/node_modules/moment/src/locale/de-at.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Austria) [de-at]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Martin Groller : https://github.com/MadMG
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de-at', {
-    months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/de-ch.js
===================================================================
--- backend/node_modules/moment/src/locale/de-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : German (Switzerland) [de-ch]
-//! author : sschueller : https://github.com/sschueller
-
-// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de#
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de-ch', {
-    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/de.js
===================================================================
--- backend/node_modules/moment/src/locale/de.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : German [de]
-//! author : lluchs : https://github.com/lluchs
-//! author: Menelion Elensúle: https://github.com/Oire
-//! author : Mikolaj Dadela : https://github.com/mik01aj
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eine Minute', 'einer Minute'],
-        h: ['eine Stunde', 'einer Stunde'],
-        d: ['ein Tag', 'einem Tag'],
-        dd: [number + ' Tage', number + ' Tagen'],
-        w: ['eine Woche', 'einer Woche'],
-        M: ['ein Monat', 'einem Monat'],
-        MM: [number + ' Monate', number + ' Monaten'],
-        y: ['ein Jahr', 'einem Jahr'],
-        yy: [number + ' Jahre', number + ' Jahren'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('de', {
-    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays:
-        'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY HH:mm',
-        LLLL: 'dddd, D. MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[heute um] LT [Uhr]',
-        sameElse: 'L',
-        nextDay: '[morgen um] LT [Uhr]',
-        nextWeek: 'dddd [um] LT [Uhr]',
-        lastDay: '[gestern um] LT [Uhr]',
-        lastWeek: '[letzten] dddd [um] LT [Uhr]',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: 'vor %s',
-        s: 'ein paar Sekunden',
-        ss: '%d Sekunden',
-        m: processRelativeTime,
-        mm: '%d Minuten',
-        h: processRelativeTime,
-        hh: '%d Stunden',
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: '%d Wochen',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/dv.js
===================================================================
--- backend/node_modules/moment/src/locale/dv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maldivian [dv]
-//! author : Jawish Hameed : https://github.com/jawish
-
-import moment from '../moment';
-
-var months = [
-        'ޖެނުއަރީ',
-        'ފެބްރުއަރީ',
-        'މާރިޗު',
-        'އޭޕްރީލު',
-        'މޭ',
-        'ޖޫން',
-        'ޖުލައި',
-        'އޯގަސްޓު',
-        'ސެޕްޓެމްބަރު',
-        'އޮކްޓޯބަރު',
-        'ނޮވެމްބަރު',
-        'ޑިސެމްބަރު',
-    ],
-    weekdays = [
-        'އާދިއްތަ',
-        'ހޯމަ',
-        'އަންގާރަ',
-        'ބުދަ',
-        'ބުރާސްފަތި',
-        'ހުކުރު',
-        'ހޮނިހިރު',
-    ];
-
-export default moment.defineLocale('dv', {
-    months: months,
-    monthsShort: months,
-    weekdays: weekdays,
-    weekdaysShort: weekdays,
-    weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'D/M/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /މކ|މފ/,
-    isPM: function (input) {
-        return 'މފ' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'މކ';
-        } else {
-            return 'މފ';
-        }
-    },
-    calendar: {
-        sameDay: '[މިއަދު] LT',
-        nextDay: '[މާދަމާ] LT',
-        nextWeek: 'dddd LT',
-        lastDay: '[އިއްޔެ] LT',
-        lastWeek: '[ފާއިތުވި] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ތެރޭގައި %s',
-        past: 'ކުރިން %s',
-        s: 'ސިކުންތުކޮޅެއް',
-        ss: 'd% ސިކުންތު',
-        m: 'މިނިޓެއް',
-        mm: 'މިނިޓު %d',
-        h: 'ގަޑިއިރެއް',
-        hh: 'ގަޑިއިރު %d',
-        d: 'ދުވަހެއް',
-        dd: 'ދުވަސް %d',
-        M: 'މަހެއް',
-        MM: 'މަސް %d',
-        y: 'އަހަރެއް',
-        yy: 'އަހަރު %d',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 7, // Sunday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/el.js
===================================================================
--- backend/node_modules/moment/src/locale/el.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Greek [el]
-//! author : Aggelos Karalias : https://github.com/mehiel
-
-import moment from '../moment';
-
-function isFunction(input) {
-    return (
-        (typeof Function !== 'undefined' && input instanceof Function) ||
-        Object.prototype.toString.call(input) === '[object Function]'
-    );
-}
-
-export default moment.defineLocale('el', {
-    monthsNominativeEl:
-        'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
-            '_'
-        ),
-    monthsGenitiveEl:
-        'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
-            '_'
-        ),
-    months: function (momentToFormat, format) {
-        if (!momentToFormat) {
-            return this._monthsNominativeEl;
-        } else if (
-            typeof format === 'string' &&
-            /D/.test(format.substring(0, format.indexOf('MMMM')))
-        ) {
-            // if there is a day number before 'MMMM'
-            return this._monthsGenitiveEl[momentToFormat.month()];
-        } else {
-            return this._monthsNominativeEl[momentToFormat.month()];
-        }
-    },
-    monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
-    weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
-        '_'
-    ),
-    weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
-    weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'μμ' : 'ΜΜ';
-        } else {
-            return isLower ? 'πμ' : 'ΠΜ';
-        }
-    },
-    isPM: function (input) {
-        return (input + '').toLowerCase()[0] === 'μ';
-    },
-    meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendarEl: {
-        sameDay: '[Σήμερα {}] LT',
-        nextDay: '[Αύριο {}] LT',
-        nextWeek: 'dddd [{}] LT',
-        lastDay: '[Χθες {}] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 6:
-                    return '[το προηγούμενο] dddd [{}] LT';
-                default:
-                    return '[την προηγούμενη] dddd [{}] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    calendar: function (key, mom) {
-        var output = this._calendarEl[key],
-            hours = mom && mom.hours();
-        if (isFunction(output)) {
-            output = output.apply(mom);
-        }
-        return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
-    },
-    relativeTime: {
-        future: 'σε %s',
-        past: '%s πριν',
-        s: 'λίγα δευτερόλεπτα',
-        ss: '%d δευτερόλεπτα',
-        m: 'ένα λεπτό',
-        mm: '%d λεπτά',
-        h: 'μία ώρα',
-        hh: '%d ώρες',
-        d: 'μία μέρα',
-        dd: '%d μέρες',
-        M: 'ένας μήνας',
-        MM: '%d μήνες',
-        y: 'ένας χρόνος',
-        yy: '%d χρόνια',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}η/,
-    ordinal: '%dη',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-au.js
===================================================================
--- backend/node_modules/moment/src/locale/en-au.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Australia) [en-au]
-//! author : Jared Morse : https://github.com/jarcoal
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-au', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-ca.js
===================================================================
--- backend/node_modules/moment/src/locale/en-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Canada) [en-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-ca', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'YYYY-MM-DD',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY h:mm A',
-        LLLL: 'dddd, MMMM D, YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-gb.js
===================================================================
--- backend/node_modules/moment/src/locale/en-gb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (United Kingdom) [en-gb]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-gb', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-ie.js
===================================================================
--- backend/node_modules/moment/src/locale/en-ie.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Ireland) [en-ie]
-//! author : Chris Cartlidge : https://github.com/chriscartlidge
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-ie', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-il.js
===================================================================
--- backend/node_modules/moment/src/locale/en-il.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Israel) [en-il]
-//! author : Chris Gedrim : https://github.com/chrisgedrim
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-il', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-in.js
===================================================================
--- backend/node_modules/moment/src/locale/en-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (India) [en-in]
-//! author : Jatin Agrawal : https://github.com/jatinag22
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-in', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-nz.js
===================================================================
--- backend/node_modules/moment/src/locale/en-nz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (New Zealand) [en-nz]
-//! author : Luke McGregor : https://github.com/lukemcgregor
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-nz', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/en-sg.js
===================================================================
--- backend/node_modules/moment/src/locale/en-sg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : English (Singapore) [en-sg]
-//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
-
-import moment from '../moment';
-
-export default moment.defineLocale('en-sg', {
-    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
-    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
-        '_'
-    ),
-    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
-    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Today at] LT',
-        nextDay: '[Tomorrow at] LT',
-        nextWeek: 'dddd [at] LT',
-        lastDay: '[Yesterday at] LT',
-        lastWeek: '[Last] dddd [at] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'in %s',
-        past: '%s ago',
-        s: 'a few seconds',
-        ss: '%d seconds',
-        m: 'a minute',
-        mm: '%d minutes',
-        h: 'an hour',
-        hh: '%d hours',
-        d: 'a day',
-        dd: '%d days',
-        M: 'a month',
-        MM: '%d months',
-        y: 'a year',
-        yy: '%d years',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/eo.js
===================================================================
--- backend/node_modules/moment/src/locale/eo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Esperanto [eo]
-//! author : Colin Dean : https://github.com/colindean
-//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
-//! comment : miestasmia corrected the translation by colindean
-//! comment : Vivakvo corrected the translation by colindean and miestasmia
-
-import moment from '../moment';
-
-export default moment.defineLocale('eo', {
-    months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
-    weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
-    weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: '[la] D[-an de] MMMM, YYYY',
-        LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
-        LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
-        llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
-    },
-    meridiemParse: /[ap]\.t\.m/i,
-    isPM: function (input) {
-        return input.charAt(0).toLowerCase() === 'p';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'p.t.m.' : 'P.T.M.';
-        } else {
-            return isLower ? 'a.t.m.' : 'A.T.M.';
-        }
-    },
-    calendar: {
-        sameDay: '[Hodiaŭ je] LT',
-        nextDay: '[Morgaŭ je] LT',
-        nextWeek: 'dddd[n je] LT',
-        lastDay: '[Hieraŭ je] LT',
-        lastWeek: '[pasintan] dddd[n je] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'post %s',
-        past: 'antaŭ %s',
-        s: 'kelkaj sekundoj',
-        ss: '%d sekundoj',
-        m: 'unu minuto',
-        mm: '%d minutoj',
-        h: 'unu horo',
-        hh: '%d horoj',
-        d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
-        dd: '%d tagoj',
-        M: 'unu monato',
-        MM: '%d monatoj',
-        y: 'unu jaro',
-        yy: '%d jaroj',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}a/,
-    ordinal: '%da',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/es-do.js
===================================================================
--- backend/node_modules/moment/src/locale/es-do.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Dominican Republic) [es-do]
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-do', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY h:mm A',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/es-mx.js
===================================================================
--- backend/node_modules/moment/src/locale/es-mx.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (Mexico) [es-mx]
-//! author : JC Franco : https://github.com/jcfranco
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-mx', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    invalidDate: 'Fecha inválida',
-});
Index: ckend/node_modules/moment/src/locale/es-us.js
===================================================================
--- backend/node_modules/moment/src/locale/es-us.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish (United States) [es-us]
-//! author : bustta : https://github.com/bustta
-//! author : chrisrodz : https://github.com/chrisrodz
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es-us', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'MM/DD/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY h:mm A',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/es.js
===================================================================
--- backend/node_modules/moment/src/locale/es.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,110 +1,0 @@
-//! moment.js locale configuration
-//! locale : Spanish [es]
-//! author : Julio Napurí : https://github.com/julionc
-
-import moment from '../moment';
-
-var monthsShortDot =
-        'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
-            '_'
-        ),
-    monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
-    monthsParse = [
-        /^ene/i,
-        /^feb/i,
-        /^mar/i,
-        /^abr/i,
-        /^may/i,
-        /^jun/i,
-        /^jul/i,
-        /^ago/i,
-        /^sep/i,
-        /^oct/i,
-        /^nov/i,
-        /^dic/i,
-    ],
-    monthsRegex =
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
-
-export default moment.defineLocale('es', {
-    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortDot;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShort[m.month()];
-        } else {
-            return monthsShortDot[m.month()];
-        }
-    },
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
-    monthsShortStrictRegex:
-        /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastDay: function () {
-            return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[el] dddd [pasado a la' +
-                (this.hours() !== 1 ? 's' : '') +
-                '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'en %s',
-        past: 'hace %s',
-        s: 'unos segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'una hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        w: 'una semana',
-        ww: '%d semanas',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un año',
-        yy: '%d años',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-    invalidDate: 'Fecha inválida',
-});
Index: ckend/node_modules/moment/src/locale/et.js
===================================================================
--- backend/node_modules/moment/src/locale/et.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-//! moment.js locale configuration
-//! locale : Estonian [et]
-//! author : Henry Kehlmann : https://github.com/madhenry
-//! improvements : Illimar Tambek : https://github.com/ragulka
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
-        ss: [number + 'sekundi', number + 'sekundit'],
-        m: ['ühe minuti', 'üks minut'],
-        mm: [number + ' minuti', number + ' minutit'],
-        h: ['ühe tunni', 'tund aega', 'üks tund'],
-        hh: [number + ' tunni', number + ' tundi'],
-        d: ['ühe päeva', 'üks päev'],
-        M: ['kuu aja', 'kuu aega', 'üks kuu'],
-        MM: [number + ' kuu', number + ' kuud'],
-        y: ['ühe aasta', 'aasta', 'üks aasta'],
-        yy: [number + ' aasta', number + ' aastat'],
-    };
-    if (withoutSuffix) {
-        return format[key][2] ? format[key][2] : format[key][1];
-    }
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('et', {
-    months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
-    weekdays:
-        'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
-            '_'
-        ),
-    weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
-    weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Täna,] LT',
-        nextDay: '[Homme,] LT',
-        nextWeek: '[Järgmine] dddd LT',
-        lastDay: '[Eile,] LT',
-        lastWeek: '[Eelmine] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s pärast',
-        past: '%s tagasi',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: '%d päeva',
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/eu.js
===================================================================
--- backend/node_modules/moment/src/locale/eu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Basque [eu]
-//! author : Eneko Illarramendi : https://github.com/eillarra
-
-import moment from '../moment';
-
-export default moment.defineLocale('eu', {
-    months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
-        '_'
-    ),
-    monthsShort:
-        'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
-            '_'
-        ),
-    weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
-    weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY[ko] MMMM[ren] D[a]',
-        LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
-        LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
-        l: 'YYYY-M-D',
-        ll: 'YYYY[ko] MMM D[a]',
-        lll: 'YYYY[ko] MMM D[a] HH:mm',
-        llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
-    },
-    calendar: {
-        sameDay: '[gaur] LT[etan]',
-        nextDay: '[bihar] LT[etan]',
-        nextWeek: 'dddd LT[etan]',
-        lastDay: '[atzo] LT[etan]',
-        lastWeek: '[aurreko] dddd LT[etan]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s barru',
-        past: 'duela %s',
-        s: 'segundo batzuk',
-        ss: '%d segundo',
-        m: 'minutu bat',
-        mm: '%d minutu',
-        h: 'ordu bat',
-        hh: '%d ordu',
-        d: 'egun bat',
-        dd: '%d egun',
-        M: 'hilabete bat',
-        MM: '%d hilabete',
-        y: 'urte bat',
-        yy: '%d urte',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fa.js
===================================================================
--- backend/node_modules/moment/src/locale/fa.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,113 +1,0 @@
-//! moment.js locale configuration
-//! locale : Persian [fa]
-//! author : Ebrahim Byagowi : https://github.com/ebraminio
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '۱',
-        2: '۲',
-        3: '۳',
-        4: '۴',
-        5: '۵',
-        6: '۶',
-        7: '۷',
-        8: '۸',
-        9: '۹',
-        0: '۰',
-    },
-    numberMap = {
-        '۱': '1',
-        '۲': '2',
-        '۳': '3',
-        '۴': '4',
-        '۵': '5',
-        '۶': '6',
-        '۷': '7',
-        '۸': '8',
-        '۹': '9',
-        '۰': '0',
-    };
-
-export default moment.defineLocale('fa', {
-    months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-        '_'
-    ),
-    monthsShort:
-        'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
-            '_'
-        ),
-    weekdays:
-        'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-            '_'
-        ),
-    weekdaysShort:
-        'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
-            '_'
-        ),
-    weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /قبل از ظهر|بعد از ظهر/,
-    isPM: function (input) {
-        return /بعد از ظهر/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'قبل از ظهر';
-        } else {
-            return 'بعد از ظهر';
-        }
-    },
-    calendar: {
-        sameDay: '[امروز ساعت] LT',
-        nextDay: '[فردا ساعت] LT',
-        nextWeek: 'dddd [ساعت] LT',
-        lastDay: '[دیروز ساعت] LT',
-        lastWeek: 'dddd [پیش] [ساعت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'در %s',
-        past: '%s پیش',
-        s: 'چند ثانیه',
-        ss: '%d ثانیه',
-        m: 'یک دقیقه',
-        mm: '%d دقیقه',
-        h: 'یک ساعت',
-        hh: '%d ساعت',
-        d: 'یک روز',
-        dd: '%d روز',
-        M: 'یک ماه',
-        MM: '%d ماه',
-        y: 'یک سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[۰-۹]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}م/,
-    ordinal: '%dم',
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fi.js
===================================================================
--- backend/node_modules/moment/src/locale/fi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Finnish [fi]
-//! author : Tarmo Aidantausta : https://github.com/bleadof
-
-import moment from '../moment';
-
-var numbersPast =
-        'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
-            ' '
-        ),
-    numbersFuture = [
-        'nolla',
-        'yhden',
-        'kahden',
-        'kolmen',
-        'neljän',
-        'viiden',
-        'kuuden',
-        numbersPast[7],
-        numbersPast[8],
-        numbersPast[9],
-    ];
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = '';
-    switch (key) {
-        case 's':
-            return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
-        case 'ss':
-            result = isFuture ? 'sekunnin' : 'sekuntia';
-            break;
-        case 'm':
-            return isFuture ? 'minuutin' : 'minuutti';
-        case 'mm':
-            result = isFuture ? 'minuutin' : 'minuuttia';
-            break;
-        case 'h':
-            return isFuture ? 'tunnin' : 'tunti';
-        case 'hh':
-            result = isFuture ? 'tunnin' : 'tuntia';
-            break;
-        case 'd':
-            return isFuture ? 'päivän' : 'päivä';
-        case 'dd':
-            result = isFuture ? 'päivän' : 'päivää';
-            break;
-        case 'M':
-            return isFuture ? 'kuukauden' : 'kuukausi';
-        case 'MM':
-            result = isFuture ? 'kuukauden' : 'kuukautta';
-            break;
-        case 'y':
-            return isFuture ? 'vuoden' : 'vuosi';
-        case 'yy':
-            result = isFuture ? 'vuoden' : 'vuotta';
-            break;
-    }
-    result = verbalNumber(number, isFuture) + ' ' + result;
-    return result;
-}
-function verbalNumber(number, isFuture) {
-    return number < 10
-        ? isFuture
-            ? numbersFuture[number]
-            : numbersPast[number]
-        : number;
-}
-
-export default moment.defineLocale('fi', {
-    months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
-        '_'
-    ),
-    monthsShort:
-        'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
-            '_'
-        ),
-    weekdays:
-        'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
-            '_'
-        ),
-    weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
-    weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM[ta] YYYY',
-        LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
-        LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
-        l: 'D.M.YYYY',
-        ll: 'Do MMM YYYY',
-        lll: 'Do MMM YYYY, [klo] HH.mm',
-        llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
-    },
-    calendar: {
-        sameDay: '[tänään] [klo] LT',
-        nextDay: '[huomenna] [klo] LT',
-        nextWeek: 'dddd [klo] LT',
-        lastDay: '[eilen] [klo] LT',
-        lastWeek: '[viime] dddd[na] [klo] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s päästä',
-        past: '%s sitten',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fil.js
===================================================================
--- backend/node_modules/moment/src/locale/fil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-//! moment.js locale configuration
-//! locale : Filipino [fil]
-//! author : Dan Hagman : https://github.com/hagmandan
-//! author : Matthew Co : https://github.com/matthewdeeco
-
-import moment from '../moment';
-
-export default moment.defineLocale('fil', {
-    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-        '_'
-    ),
-    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-        '_'
-    ),
-    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'MM/D/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY HH:mm',
-        LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: 'LT [ngayong araw]',
-        nextDay: '[Bukas ng] LT',
-        nextWeek: 'LT [sa susunod na] dddd',
-        lastDay: 'LT [kahapon]',
-        lastWeek: 'LT [noong nakaraang] dddd',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'sa loob ng %s',
-        past: '%s ang nakalipas',
-        s: 'ilang segundo',
-        ss: '%d segundo',
-        m: 'isang minuto',
-        mm: '%d minuto',
-        h: 'isang oras',
-        hh: '%d oras',
-        d: 'isang araw',
-        dd: '%d araw',
-        M: 'isang buwan',
-        MM: '%d buwan',
-        y: 'isang taon',
-        yy: '%d taon',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fo.js
===================================================================
--- backend/node_modules/moment/src/locale/fo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Faroese [fo]
-//! author : Ragnar Johannesen : https://github.com/ragnar123
-//! author : Kristian Sakarisson : https://github.com/sakarisson
-
-import moment from '../moment';
-
-export default moment.defineLocale('fo', {
-    months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
-    weekdays:
-        'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
-            '_'
-        ),
-    weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
-    weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D. MMMM, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Í dag kl.] LT',
-        nextDay: '[Í morgin kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[Í gjár kl.] LT',
-        lastWeek: '[síðstu] dddd [kl] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'um %s',
-        past: '%s síðani',
-        s: 'fá sekund',
-        ss: '%d sekundir',
-        m: 'ein minuttur',
-        mm: '%d minuttir',
-        h: 'ein tími',
-        hh: '%d tímar',
-        d: 'ein dagur',
-        dd: '%d dagar',
-        M: 'ein mánaður',
-        MM: '%d mánaðir',
-        y: 'eitt ár',
-        yy: '%d ár',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fr-ca.js
===================================================================
--- backend/node_modules/moment/src/locale/fr-ca.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Canada) [fr-ca]
-//! author : Jonathan Abourbih : https://github.com/jonbca
-
-import moment from '../moment';
-
-export default moment.defineLocale('fr-ca', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'D':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/fr-ch.js
===================================================================
--- backend/node_modules/moment/src/locale/fr-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-//! moment.js locale configuration
-//! locale : French (Switzerland) [fr-ch]
-//! author : Gaspard Bucher : https://github.com/gaspard
-
-import moment from '../moment';
-
-export default moment.defineLocale('fr-ch', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'D':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fr.js
===================================================================
--- backend/node_modules/moment/src/locale/fr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,108 +1,0 @@
-//! moment.js locale configuration
-//! locale : French [fr]
-//! author : John Fischer : https://github.com/jfroffice
-
-import moment from '../moment';
-
-var monthsStrictRegex =
-        /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-    monthsShortStrictRegex =
-        /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
-    monthsRegex =
-        /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
-    monthsParse = [
-        /^janv/i,
-        /^févr/i,
-        /^mars/i,
-        /^avr/i,
-        /^mai/i,
-        /^juin/i,
-        /^juil/i,
-        /^août/i,
-        /^sept/i,
-        /^oct/i,
-        /^nov/i,
-        /^déc/i,
-    ];
-
-export default moment.defineLocale('fr', {
-    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
-        '_'
-    ),
-    monthsShort:
-        'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
-            '_'
-        ),
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex: monthsStrictRegex,
-    monthsShortStrictRegex: monthsShortStrictRegex,
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
-    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
-    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Aujourd’hui à] LT',
-        nextDay: '[Demain à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[Hier à] LT',
-        lastWeek: 'dddd [dernier à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dans %s',
-        past: 'il y a %s',
-        s: 'quelques secondes',
-        ss: '%d secondes',
-        m: 'une minute',
-        mm: '%d minutes',
-        h: 'une heure',
-        hh: '%d heures',
-        d: 'un jour',
-        dd: '%d jours',
-        w: 'une semaine',
-        ww: '%d semaines',
-        M: 'un mois',
-        MM: '%d mois',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // TODO: Return 'e' when day of month > 1. Move this case inside
-            // block for masculine words below.
-            // See https://github.com/moment/moment/issues/3375
-            case 'D':
-                return number + (number === 1 ? 'er' : '');
-
-            // Words with masculine grammatical gender: mois, trimestre, jour
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-                return number + (number === 1 ? 'er' : 'e');
-
-            // Words with feminine grammatical gender: semaine
-            case 'w':
-            case 'W':
-                return number + (number === 1 ? 're' : 'e');
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/fy.js
===================================================================
--- backend/node_modules/moment/src/locale/fy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Frisian [fy]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
-
-export default moment.defineLocale('fy', {
-    months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-    monthsParseExact: true,
-    weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
-        '_'
-    ),
-    weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
-    weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[hjoed om] LT',
-        nextDay: '[moarn om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[juster om] LT',
-        lastWeek: '[ôfrûne] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'oer %s',
-        past: '%s lyn',
-        s: 'in pear sekonden',
-        ss: '%d sekonden',
-        m: 'ien minút',
-        mm: '%d minuten',
-        h: 'ien oere',
-        hh: '%d oeren',
-        d: 'ien dei',
-        dd: '%d dagen',
-        M: 'ien moanne',
-        MM: '%d moannen',
-        y: 'ien jier',
-        yy: '%d jierren',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ga.js
===================================================================
--- backend/node_modules/moment/src/locale/ga.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : Irish or Irish Gaelic [ga]
-//! author : André Silva : https://github.com/askpt
-
-import moment from '../moment';
-
-var months = [
-        'Eanáir',
-        'Feabhra',
-        'Márta',
-        'Aibreán',
-        'Bealtaine',
-        'Meitheamh',
-        'Iúil',
-        'Lúnasa',
-        'Meán Fómhair',
-        'Deireadh Fómhair',
-        'Samhain',
-        'Nollaig',
-    ],
-    monthsShort = [
-        'Ean',
-        'Feabh',
-        'Márt',
-        'Aib',
-        'Beal',
-        'Meith',
-        'Iúil',
-        'Lún',
-        'M.F.',
-        'D.F.',
-        'Samh',
-        'Noll',
-    ],
-    weekdays = [
-        'Dé Domhnaigh',
-        'Dé Luain',
-        'Dé Máirt',
-        'Dé Céadaoin',
-        'Déardaoin',
-        'Dé hAoine',
-        'Dé Sathairn',
-    ],
-    weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
-    weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
-
-export default moment.defineLocale('ga', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsParseExact: true,
-    weekdays: weekdays,
-    weekdaysShort: weekdaysShort,
-    weekdaysMin: weekdaysMin,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Inniu ag] LT',
-        nextDay: '[Amárach ag] LT',
-        nextWeek: 'dddd [ag] LT',
-        lastDay: '[Inné ag] LT',
-        lastWeek: 'dddd [seo caite] [ag] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'i %s',
-        past: '%s ó shin',
-        s: 'cúpla soicind',
-        ss: '%d soicind',
-        m: 'nóiméad',
-        mm: '%d nóiméad',
-        h: 'uair an chloig',
-        hh: '%d uair an chloig',
-        d: 'lá',
-        dd: '%d lá',
-        M: 'mí',
-        MM: '%d míonna',
-        y: 'bliain',
-        yy: '%d bliain',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/gd.js
===================================================================
--- backend/node_modules/moment/src/locale/gd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-//! moment.js locale configuration
-//! locale : Scottish Gaelic [gd]
-//! author : Jon Ashdown : https://github.com/jonashdown
-
-import moment from '../moment';
-
-var months = [
-        'Am Faoilleach',
-        'An Gearran',
-        'Am Màrt',
-        'An Giblean',
-        'An Cèitean',
-        'An t-Ògmhios',
-        'An t-Iuchar',
-        'An Lùnastal',
-        'An t-Sultain',
-        'An Dàmhair',
-        'An t-Samhain',
-        'An Dùbhlachd',
-    ],
-    monthsShort = [
-        'Faoi',
-        'Gear',
-        'Màrt',
-        'Gibl',
-        'Cèit',
-        'Ògmh',
-        'Iuch',
-        'Lùn',
-        'Sult',
-        'Dàmh',
-        'Samh',
-        'Dùbh',
-    ],
-    weekdays = [
-        'Didòmhnaich',
-        'Diluain',
-        'Dimàirt',
-        'Diciadain',
-        'Diardaoin',
-        'Dihaoine',
-        'Disathairne',
-    ],
-    weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
-    weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
-
-export default moment.defineLocale('gd', {
-    months: months,
-    monthsShort: monthsShort,
-    monthsParseExact: true,
-    weekdays: weekdays,
-    weekdaysShort: weekdaysShort,
-    weekdaysMin: weekdaysMin,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[An-diugh aig] LT',
-        nextDay: '[A-màireach aig] LT',
-        nextWeek: 'dddd [aig] LT',
-        lastDay: '[An-dè aig] LT',
-        lastWeek: 'dddd [seo chaidh] [aig] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ann an %s',
-        past: 'bho chionn %s',
-        s: 'beagan diogan',
-        ss: '%d diogan',
-        m: 'mionaid',
-        mm: '%d mionaidean',
-        h: 'uair',
-        hh: '%d uairean',
-        d: 'latha',
-        dd: '%d latha',
-        M: 'mìos',
-        MM: '%d mìosan',
-        y: 'bliadhna',
-        yy: '%d bliadhna',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
-    ordinal: function (number) {
-        var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/gl.js
===================================================================
--- backend/node_modules/moment/src/locale/gl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Galician [gl]
-//! author : Juan G. Hurtado : https://github.com/juanghurtado
-
-import moment from '../moment';
-
-export default moment.defineLocale('gl', {
-    months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
-        '_'
-    ),
-    monthsShort:
-        'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
-    weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
-    weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY H:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-        },
-        nextDay: function () {
-            return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
-        },
-        nextWeek: function () {
-            return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
-        },
-        lastDay: function () {
-            return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
-        },
-        lastWeek: function () {
-            return (
-                '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
-            );
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (str) {
-            if (str.indexOf('un') === 0) {
-                return 'n' + str;
-            }
-            return 'en ' + str;
-        },
-        past: 'hai %s',
-        s: 'uns segundos',
-        ss: '%d segundos',
-        m: 'un minuto',
-        mm: '%d minutos',
-        h: 'unha hora',
-        hh: '%d horas',
-        d: 'un día',
-        dd: '%d días',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/gom-deva.js
===================================================================
--- backend/node_modules/moment/src/locale/gom-deva.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Devanagari script [gom-deva]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
-        ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
-        m: ['एका मिणटान', 'एक मिनूट'],
-        mm: [number + ' मिणटांनी', number + ' मिणटां'],
-        h: ['एका वरान', 'एक वर'],
-        hh: [number + ' वरांनी', number + ' वरां'],
-        d: ['एका दिसान', 'एक दीस'],
-        dd: [number + ' दिसांनी', number + ' दीस'],
-        M: ['एका म्हयन्यान', 'एक म्हयनो'],
-        MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
-        y: ['एका वर्सान', 'एक वर्स'],
-        yy: [number + ' वर्सांनी', number + ' वर्सां'],
-    };
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('gom-deva', {
-    months: {
-        standalone:
-            'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-                '_'
-            ),
-        format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
-            '_'
-        ),
-        isFormat: /MMMM(\s)+D[oD]?/,
-    },
-    monthsShort:
-        'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
-    weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
-    weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'A h:mm [वाजतां]',
-        LTS: 'A h:mm:ss [वाजतां]',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY A h:mm [वाजतां]',
-        LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
-        llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
-    },
-    calendar: {
-        sameDay: '[आयज] LT',
-        nextDay: '[फाल्यां] LT',
-        nextWeek: '[फुडलो] dddd[,] LT',
-        lastDay: '[काल] LT',
-        lastWeek: '[फाटलो] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s',
-        past: '%s आदीं',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // the ordinal 'वेर' only applies to day of the month
-            case 'D':
-                return number + 'वेर';
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-            case 'w':
-            case 'W':
-                return number;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week
-        doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-    },
-    meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'राती') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'सकाळीं') {
-            return hour;
-        } else if (meridiem === 'दनपारां') {
-            return hour > 12 ? hour : hour + 12;
-        } else if (meridiem === 'सांजे') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'राती';
-        } else if (hour < 12) {
-            return 'सकाळीं';
-        } else if (hour < 16) {
-            return 'दनपारां';
-        } else if (hour < 20) {
-            return 'सांजे';
-        } else {
-            return 'राती';
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/gom-latn.js
===================================================================
--- backend/node_modules/moment/src/locale/gom-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Konkani Latin script [gom-latn]
-//! author : The Discoverer : https://github.com/WikiDiscoverer
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['thoddea sekondamni', 'thodde sekond'],
-        ss: [number + ' sekondamni', number + ' sekond'],
-        m: ['eka mintan', 'ek minut'],
-        mm: [number + ' mintamni', number + ' mintam'],
-        h: ['eka voran', 'ek vor'],
-        hh: [number + ' voramni', number + ' voram'],
-        d: ['eka disan', 'ek dis'],
-        dd: [number + ' disamni', number + ' dis'],
-        M: ['eka mhoinean', 'ek mhoino'],
-        MM: [number + ' mhoineamni', number + ' mhoine'],
-        y: ['eka vorsan', 'ek voros'],
-        yy: [number + ' vorsamni', number + ' vorsam'],
-    };
-    return isFuture ? format[key][0] : format[key][1];
-}
-
-export default moment.defineLocale('gom-latn', {
-    months: {
-        standalone:
-            'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
-                '_'
-            ),
-        format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
-            '_'
-        ),
-        isFormat: /MMMM(\s)+D[oD]?/,
-    },
-    monthsShort:
-        'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
-    monthsParseExact: true,
-    weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
-    weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
-    weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'A h:mm [vazta]',
-        LTS: 'A h:mm:ss [vazta]',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY A h:mm [vazta]',
-        LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
-        llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
-    },
-    calendar: {
-        sameDay: '[Aiz] LT',
-        nextDay: '[Faleam] LT',
-        nextWeek: '[Fuddlo] dddd[,] LT',
-        lastDay: '[Kal] LT',
-        lastWeek: '[Fattlo] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s',
-        past: '%s adim',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(er)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            // the ordinal 'er' only applies to day of the month
-            case 'D':
-                return number + 'er';
-            default:
-            case 'M':
-            case 'Q':
-            case 'DDD':
-            case 'd':
-            case 'w':
-            case 'W':
-                return number;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week
-        doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
-    },
-    meridiemParse: /rati|sokallim|donparam|sanje/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'rati') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'sokallim') {
-            return hour;
-        } else if (meridiem === 'donparam') {
-            return hour > 12 ? hour : hour + 12;
-        } else if (meridiem === 'sanje') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'rati';
-        } else if (hour < 12) {
-            return 'sokallim';
-        } else if (hour < 16) {
-            return 'donparam';
-        } else if (hour < 20) {
-            return 'sanje';
-        } else {
-            return 'rati';
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/gu.js
===================================================================
--- backend/node_modules/moment/src/locale/gu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//! moment.js locale configuration
-//! locale : Gujarati [gu]
-//! author : Kaushik Thanki : https://github.com/Kaushik1987
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '૧',
-        2: '૨',
-        3: '૩',
-        4: '૪',
-        5: '૫',
-        6: '૬',
-        7: '૭',
-        8: '૮',
-        9: '૯',
-        0: '૦',
-    },
-    numberMap = {
-        '૧': '1',
-        '૨': '2',
-        '૩': '3',
-        '૪': '4',
-        '૫': '5',
-        '૬': '6',
-        '૭': '7',
-        '૮': '8',
-        '૯': '9',
-        '૦': '0',
-    };
-
-export default moment.defineLocale('gu', {
-    months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
-        '_'
-    ),
-    monthsShort:
-        'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
-        '_'
-    ),
-    weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
-    weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm વાગ્યે',
-        LTS: 'A h:mm:ss વાગ્યે',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
-    },
-    calendar: {
-        sameDay: '[આજ] LT',
-        nextDay: '[કાલે] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ગઇકાલે] LT',
-        lastWeek: '[પાછલા] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s મા',
-        past: '%s પહેલા',
-        s: 'અમુક પળો',
-        ss: '%d સેકંડ',
-        m: 'એક મિનિટ',
-        mm: '%d મિનિટ',
-        h: 'એક કલાક',
-        hh: '%d કલાક',
-        d: 'એક દિવસ',
-        dd: '%d દિવસ',
-        M: 'એક મહિનો',
-        MM: '%d મહિનો',
-        y: 'એક વર્ષ',
-        yy: '%d વર્ષ',
-    },
-    preparse: function (string) {
-        return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
-    meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'રાત') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'સવાર') {
-            return hour;
-        } else if (meridiem === 'બપોર') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'સાંજ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'રાત';
-        } else if (hour < 10) {
-            return 'સવાર';
-        } else if (hour < 17) {
-            return 'બપોર';
-        } else if (hour < 20) {
-            return 'સાંજ';
-        } else {
-            return 'રાત';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/he.js
===================================================================
--- backend/node_modules/moment/src/locale/he.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hebrew [he]
-//! author : Tomer Cohen : https://github.com/tomer
-//! author : Moshe Simantov : https://github.com/DevelopmentIL
-//! author : Tal Ater : https://github.com/TalAter
-
-import moment from '../moment';
-
-export default moment.defineLocale('he', {
-    months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
-        '_'
-    ),
-    monthsShort:
-        'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
-    weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
-    weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
-    weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [ב]MMMM YYYY',
-        LLL: 'D [ב]MMMM YYYY HH:mm',
-        LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
-        l: 'D/M/YYYY',
-        ll: 'D MMM YYYY',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd, D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[היום ב־]LT',
-        nextDay: '[מחר ב־]LT',
-        nextWeek: 'dddd [בשעה] LT',
-        lastDay: '[אתמול ב־]LT',
-        lastWeek: '[ביום] dddd [האחרון בשעה] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'בעוד %s',
-        past: 'לפני %s',
-        s: 'מספר שניות',
-        ss: '%d שניות',
-        m: 'דקה',
-        mm: '%d דקות',
-        h: 'שעה',
-        hh: function (number) {
-            if (number === 2) {
-                return 'שעתיים';
-            }
-            return number + ' שעות';
-        },
-        d: 'יום',
-        dd: function (number) {
-            if (number === 2) {
-                return 'יומיים';
-            }
-            return number + ' ימים';
-        },
-        M: 'חודש',
-        MM: function (number) {
-            if (number === 2) {
-                return 'חודשיים';
-            }
-            return number + ' חודשים';
-        },
-        y: 'שנה',
-        yy: function (number) {
-            if (number === 2) {
-                return 'שנתיים';
-            } else if (number % 10 === 0 && number !== 10) {
-                return number + ' שנה';
-            }
-            return number + ' שנים';
-        },
-    },
-    meridiemParse:
-        /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
-    isPM: function (input) {
-        return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 5) {
-            return 'לפנות בוקר';
-        } else if (hour < 10) {
-            return 'בבוקר';
-        } else if (hour < 12) {
-            return isLower ? 'לפנה"צ' : 'לפני הצהריים';
-        } else if (hour < 18) {
-            return isLower ? 'אחה"צ' : 'אחרי הצהריים';
-        } else {
-            return 'בערב';
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/hi.js
===================================================================
--- backend/node_modules/moment/src/locale/hi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,168 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hindi [hi]
-//! author : Mayank Singhal : https://github.com/mayanksinghal
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    },
-    monthsParse = [
-        /^जन/i,
-        /^फ़र|फर/i,
-        /^मार्च/i,
-        /^अप्रै/i,
-        /^मई/i,
-        /^जून/i,
-        /^जुल/i,
-        /^अग/i,
-        /^सितं|सित/i,
-        /^अक्टू/i,
-        /^नव|नवं/i,
-        /^दिसं|दिस/i,
-    ],
-    shortMonthsParse = [
-        /^जन/i,
-        /^फ़र/i,
-        /^मार्च/i,
-        /^अप्रै/i,
-        /^मई/i,
-        /^जून/i,
-        /^जुल/i,
-        /^अग/i,
-        /^सित/i,
-        /^अक्टू/i,
-        /^नव/i,
-        /^दिस/i,
-    ];
-
-export default moment.defineLocale('hi', {
-    months: {
-        format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
-            '_'
-        ),
-        standalone:
-            'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
-    weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-    weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
-    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm बजे',
-        LTS: 'A h:mm:ss बजे',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm बजे',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
-    },
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: shortMonthsParse,
-
-    monthsRegex:
-        /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-    monthsShortRegex:
-        /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
-
-    monthsStrictRegex:
-        /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
-
-    monthsShortStrictRegex:
-        /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
-
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[कल] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[कल] LT',
-        lastWeek: '[पिछले] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s में',
-        past: '%s पहले',
-        s: 'कुछ ही क्षण',
-        ss: '%d सेकंड',
-        m: 'एक मिनट',
-        mm: '%d मिनट',
-        h: 'एक घंटा',
-        hh: '%d घंटे',
-        d: 'एक दिन',
-        dd: '%d दिन',
-        M: 'एक महीने',
-        MM: '%d महीने',
-        y: 'एक वर्ष',
-        yy: '%d वर्ष',
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Hindi notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
-    meridiemParse: /रात|सुबह|दोपहर|शाम/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'रात') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'सुबह') {
-            return hour;
-        } else if (meridiem === 'दोपहर') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'शाम') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'रात';
-        } else if (hour < 10) {
-            return 'सुबह';
-        } else if (hour < 17) {
-            return 'दोपहर';
-        } else if (hour < 20) {
-            return 'शाम';
-        } else {
-            return 'रात';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/hr.js
===================================================================
--- backend/node_modules/moment/src/locale/hr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,156 +1,0 @@
-//! moment.js locale configuration
-//! locale : Croatian [hr]
-//! author : Bojan Marković : https://github.com/bmarkovic
-
-import moment from '../moment';
-
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            if (number === 1) {
-                result += 'sekunda';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sekunde';
-            } else {
-                result += 'sekundi';
-            }
-            return result;
-        case 'm':
-            return withoutSuffix ? 'jedna minuta' : 'jedne minute';
-        case 'mm':
-            if (number === 1) {
-                result += 'minuta';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'minute';
-            } else {
-                result += 'minuta';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'jedan sat' : 'jednog sata';
-        case 'hh':
-            if (number === 1) {
-                result += 'sat';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'sata';
-            } else {
-                result += 'sati';
-            }
-            return result;
-        case 'dd':
-            if (number === 1) {
-                result += 'dan';
-            } else {
-                result += 'dana';
-            }
-            return result;
-        case 'MM':
-            if (number === 1) {
-                result += 'mjesec';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'mjeseca';
-            } else {
-                result += 'mjeseci';
-            }
-            return result;
-        case 'yy':
-            if (number === 1) {
-                result += 'godina';
-            } else if (number === 2 || number === 3 || number === 4) {
-                result += 'godine';
-            } else {
-                result += 'godina';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('hr', {
-    months: {
-        format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
-            '_'
-        ),
-        standalone:
-            'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
-                '_'
-            ),
-    },
-    monthsShort:
-        'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM YYYY',
-        LLL: 'Do MMMM YYYY H:mm',
-        LLLL: 'dddd, Do MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[jučer u] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[prošlu] [nedjelju] [u] LT';
-                case 3:
-                    return '[prošlu] [srijedu] [u] LT';
-                case 6:
-                    return '[prošle] [subote] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prošli] dddd [u] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'par sekundi',
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: 'dan',
-        dd: translate,
-        M: 'mjesec',
-        MM: translate,
-        y: 'godinu',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/hu.js
===================================================================
--- backend/node_modules/moment/src/locale/hu.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,118 +1,0 @@
-//! moment.js locale configuration
-//! locale : Hungarian [hu]
-//! author : Adam Brunner : https://github.com/adambrunner
-//! author : Peter Viszt  : https://github.com/passatgt
-
-import moment from '../moment';
-
-var weekEndings =
-    'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
-function translate(number, withoutSuffix, key, isFuture) {
-    var num = number;
-    switch (key) {
-        case 's':
-            return isFuture || withoutSuffix
-                ? 'néhány másodperc'
-                : 'néhány másodperce';
-        case 'ss':
-            return num + (isFuture || withoutSuffix)
-                ? ' másodperc'
-                : ' másodperce';
-        case 'm':
-            return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
-        case 'mm':
-            return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
-        case 'h':
-            return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
-        case 'hh':
-            return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
-        case 'd':
-            return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
-        case 'dd':
-            return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
-        case 'M':
-            return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-        case 'MM':
-            return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
-        case 'y':
-            return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
-        case 'yy':
-            return num + (isFuture || withoutSuffix ? ' év' : ' éve');
-    }
-    return '';
-}
-function week(isFuture) {
-    return (
-        (isFuture ? '' : '[múlt] ') +
-        '[' +
-        weekEndings[this.day()] +
-        '] LT[-kor]'
-    );
-}
-
-export default moment.defineLocale('hu', {
-    months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
-    weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
-    weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'YYYY.MM.DD.',
-        LL: 'YYYY. MMMM D.',
-        LLL: 'YYYY. MMMM D. H:mm',
-        LLLL: 'YYYY. MMMM D., dddd H:mm',
-    },
-    meridiemParse: /de|du/i,
-    isPM: function (input) {
-        return input.charAt(1).toLowerCase() === 'u';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower === true ? 'de' : 'DE';
-        } else {
-            return isLower === true ? 'du' : 'DU';
-        }
-    },
-    calendar: {
-        sameDay: '[ma] LT[-kor]',
-        nextDay: '[holnap] LT[-kor]',
-        nextWeek: function () {
-            return week.call(this, true);
-        },
-        lastDay: '[tegnap] LT[-kor]',
-        lastWeek: function () {
-            return week.call(this, false);
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s múlva',
-        past: '%s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/hy-am.js
===================================================================
--- backend/node_modules/moment/src/locale/hy-am.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Armenian [hy-am]
-//! author : Armendarabyan : https://github.com/armendarabyan
-
-import moment from '../moment';
-
-export default moment.defineLocale('hy-am', {
-    months: {
-        format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
-            '_'
-        ),
-        standalone:
-            'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
-    weekdays:
-        'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
-            '_'
-        ),
-    weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-    weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY թ.',
-        LLL: 'D MMMM YYYY թ., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
-    },
-    calendar: {
-        sameDay: '[այսօր] LT',
-        nextDay: '[վաղը] LT',
-        lastDay: '[երեկ] LT',
-        nextWeek: function () {
-            return 'dddd [օրը ժամը] LT';
-        },
-        lastWeek: function () {
-            return '[անցած] dddd [օրը ժամը] LT';
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s հետո',
-        past: '%s առաջ',
-        s: 'մի քանի վայրկյան',
-        ss: '%d վայրկյան',
-        m: 'րոպե',
-        mm: '%d րոպե',
-        h: 'ժամ',
-        hh: '%d ժամ',
-        d: 'օր',
-        dd: '%d օր',
-        M: 'ամիս',
-        MM: '%d ամիս',
-        y: 'տարի',
-        yy: '%d տարի',
-    },
-    meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
-    isPM: function (input) {
-        return /^(ցերեկվա|երեկոյան)$/.test(input);
-    },
-    meridiem: function (hour) {
-        if (hour < 4) {
-            return 'գիշերվա';
-        } else if (hour < 12) {
-            return 'առավոտվա';
-        } else if (hour < 17) {
-            return 'ցերեկվա';
-        } else {
-            return 'երեկոյան';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'DDD':
-            case 'w':
-            case 'W':
-            case 'DDDo':
-                if (number === 1) {
-                    return number + '-ին';
-                }
-                return number + '-րդ';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/id.js
===================================================================
--- backend/node_modules/moment/src/locale/id.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Indonesian [id]
-//! author : Mohammad Satrio Utomo : https://github.com/tyok
-//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
-
-import moment from '../moment';
-
-export default moment.defineLocale('id', {
-    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
-    weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
-    weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
-    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|siang|sore|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'siang') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'sore' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'siang';
-        } else if (hours < 19) {
-            return 'sore';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Besok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kemarin pukul] LT',
-        lastWeek: 'dddd [lalu pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lalu',
-        s: 'beberapa detik',
-        ss: '%d detik',
-        m: 'semenit',
-        mm: '%d menit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/is.js
===================================================================
--- backend/node_modules/moment/src/locale/is.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Icelandic [is]
-//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
-
-import moment from '../moment';
-
-function plural(n) {
-    if (n % 100 === 11) {
-        return true;
-    } else if (n % 10 === 1) {
-        return false;
-    }
-    return true;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's':
-            return withoutSuffix || isFuture
-                ? 'nokkrar sekúndur'
-                : 'nokkrum sekúndum';
-        case 'ss':
-            if (plural(number)) {
-                return (
-                    result +
-                    (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
-                );
-            }
-            return result + 'sekúnda';
-        case 'm':
-            return withoutSuffix ? 'mínúta' : 'mínútu';
-        case 'mm':
-            if (plural(number)) {
-                return (
-                    result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
-                );
-            } else if (withoutSuffix) {
-                return result + 'mínúta';
-            }
-            return result + 'mínútu';
-        case 'hh':
-            if (plural(number)) {
-                return (
-                    result +
-                    (withoutSuffix || isFuture
-                        ? 'klukkustundir'
-                        : 'klukkustundum')
-                );
-            }
-            return result + 'klukkustund';
-        case 'd':
-            if (withoutSuffix) {
-                return 'dagur';
-            }
-            return isFuture ? 'dag' : 'degi';
-        case 'dd':
-            if (plural(number)) {
-                if (withoutSuffix) {
-                    return result + 'dagar';
-                }
-                return result + (isFuture ? 'daga' : 'dögum');
-            } else if (withoutSuffix) {
-                return result + 'dagur';
-            }
-            return result + (isFuture ? 'dag' : 'degi');
-        case 'M':
-            if (withoutSuffix) {
-                return 'mánuður';
-            }
-            return isFuture ? 'mánuð' : 'mánuði';
-        case 'MM':
-            if (plural(number)) {
-                if (withoutSuffix) {
-                    return result + 'mánuðir';
-                }
-                return result + (isFuture ? 'mánuði' : 'mánuðum');
-            } else if (withoutSuffix) {
-                return result + 'mánuður';
-            }
-            return result + (isFuture ? 'mánuð' : 'mánuði');
-        case 'y':
-            return withoutSuffix || isFuture ? 'ár' : 'ári';
-        case 'yy':
-            if (plural(number)) {
-                return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
-            }
-            return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
-    }
-}
-
-export default moment.defineLocale('is', {
-    months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
-    weekdays:
-        'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
-            '_'
-        ),
-    weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
-    weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] H:mm',
-        LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
-    },
-    calendar: {
-        sameDay: '[í dag kl.] LT',
-        nextDay: '[á morgun kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[í gær kl.] LT',
-        lastWeek: '[síðasta] dddd [kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'eftir %s',
-        past: 'fyrir %s síðan',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: 'klukkustund',
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/it-ch.js
===================================================================
--- backend/node_modules/moment/src/locale/it-ch.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian (Switzerland) [it-ch]
-//! author : xfh : https://github.com/xfh
-
-import moment from '../moment';
-
-export default moment.defineLocale('it-ch', {
-    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-        '_'
-    ),
-    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-        '_'
-    ),
-    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Oggi alle] LT',
-        nextDay: '[Domani alle] LT',
-        nextWeek: 'dddd [alle] LT',
-        lastDay: '[Ieri alle] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[la scorsa] dddd [alle] LT';
-                default:
-                    return '[lo scorso] dddd [alle] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (s) {
-            return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
-        },
-        past: '%s fa',
-        s: 'alcuni secondi',
-        ss: '%d secondi',
-        m: 'un minuto',
-        mm: '%d minuti',
-        h: "un'ora",
-        hh: '%d ore',
-        d: 'un giorno',
-        dd: '%d giorni',
-        M: 'un mese',
-        MM: '%d mesi',
-        y: 'un anno',
-        yy: '%d anni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/it.js
===================================================================
--- backend/node_modules/moment/src/locale/it.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Italian [it]
-//! author : Lorenzo : https://github.com/aliem
-//! author: Mattia Larentis: https://github.com/nostalgiaz
-//! author: Marco : https://github.com/Manfre98
-
-import moment from '../moment';
-
-export default moment.defineLocale('it', {
-    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
-        '_'
-    ),
-    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
-    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
-        '_'
-    ),
-    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
-    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: function () {
-            return (
-                '[Oggi a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        nextDay: function () {
-            return (
-                '[Domani a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        nextWeek: function () {
-            return (
-                'dddd [a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        lastDay: function () {
-            return (
-                '[Ieri a' +
-                (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
-                ']LT'
-            );
-        },
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return (
-                        '[La scorsa] dddd [a' +
-                        (this.hours() > 1
-                            ? 'lle '
-                            : this.hours() === 0
-                              ? ' '
-                              : "ll'") +
-                        ']LT'
-                    );
-                default:
-                    return (
-                        '[Lo scorso] dddd [a' +
-                        (this.hours() > 1
-                            ? 'lle '
-                            : this.hours() === 0
-                              ? ' '
-                              : "ll'") +
-                        ']LT'
-                    );
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'tra %s',
-        past: '%s fa',
-        s: 'alcuni secondi',
-        ss: '%d secondi',
-        m: 'un minuto',
-        mm: '%d minuti',
-        h: "un'ora",
-        hh: '%d ore',
-        d: 'un giorno',
-        dd: '%d giorni',
-        w: 'una settimana',
-        ww: '%d settimane',
-        M: 'un mese',
-        MM: '%d mesi',
-        y: 'un anno',
-        yy: '%d anni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ja.js
===================================================================
--- backend/node_modules/moment/src/locale/ja.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,148 +1,0 @@
-//! moment.js locale configuration
-//! locale : Japanese [ja]
-//! author : LI Long : https://github.com/baryon
-
-import moment from '../moment';
-
-export default moment.defineLocale('ja', {
-    eras: [
-        {
-            since: '2019-05-01',
-            offset: 1,
-            name: '令和',
-            narrow: '㋿',
-            abbr: 'R',
-        },
-        {
-            since: '1989-01-08',
-            until: '2019-04-30',
-            offset: 1,
-            name: '平成',
-            narrow: '㍻',
-            abbr: 'H',
-        },
-        {
-            since: '1926-12-25',
-            until: '1989-01-07',
-            offset: 1,
-            name: '昭和',
-            narrow: '㍼',
-            abbr: 'S',
-        },
-        {
-            since: '1912-07-30',
-            until: '1926-12-24',
-            offset: 1,
-            name: '大正',
-            narrow: '㍽',
-            abbr: 'T',
-        },
-        {
-            since: '1873-01-01',
-            until: '1912-07-29',
-            offset: 6,
-            name: '明治',
-            narrow: '㍾',
-            abbr: 'M',
-        },
-        {
-            since: '0001-01-01',
-            until: '1873-12-31',
-            offset: 1,
-            name: '西暦',
-            narrow: 'AD',
-            abbr: 'AD',
-        },
-        {
-            since: '0000-12-31',
-            until: -Infinity,
-            offset: 1,
-            name: '紀元前',
-            narrow: 'BC',
-            abbr: 'BC',
-        },
-    ],
-    eraYearOrdinalRegex: /(元|\d+)年/,
-    eraYearOrdinalParse: function (input, match) {
-        return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
-    },
-    months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
-    weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
-    weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日 dddd HH:mm',
-        l: 'YYYY/MM/DD',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日(ddd) HH:mm',
-    },
-    meridiemParse: /午前|午後/i,
-    isPM: function (input) {
-        return input === '午後';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return '午前';
-        } else {
-            return '午後';
-        }
-    },
-    calendar: {
-        sameDay: '[今日] LT',
-        nextDay: '[明日] LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                return '[来週]dddd LT';
-            } else {
-                return 'dddd LT';
-            }
-        },
-        lastDay: '[昨日] LT',
-        lastWeek: function (now) {
-            if (this.week() !== now.week()) {
-                return '[先週]dddd LT';
-            } else {
-                return 'dddd LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}日/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'y':
-                return number === 1 ? '元年' : number + '年';
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '数秒',
-        ss: '%d秒',
-        m: '1分',
-        mm: '%d分',
-        h: '1時間',
-        hh: '%d時間',
-        d: '1日',
-        dd: '%d日',
-        M: '1ヶ月',
-        MM: '%dヶ月',
-        y: '1年',
-        yy: '%d年',
-    },
-});
Index: ckend/node_modules/moment/src/locale/jv.js
===================================================================
--- backend/node_modules/moment/src/locale/jv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Javanese [jv]
-//! author : Rony Lantip : https://github.com/lantip
-//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
-
-import moment from '../moment';
-
-export default moment.defineLocale('jv', {
-    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
-    weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
-    weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
-    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /enjing|siyang|sonten|ndalu/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'enjing') {
-            return hour;
-        } else if (meridiem === 'siyang') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'enjing';
-        } else if (hours < 15) {
-            return 'siyang';
-        } else if (hours < 19) {
-            return 'sonten';
-        } else {
-            return 'ndalu';
-        }
-    },
-    calendar: {
-        sameDay: '[Dinten puniko pukul] LT',
-        nextDay: '[Mbenjang pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kala wingi pukul] LT',
-        lastWeek: 'dddd [kepengker pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'wonten ing %s',
-        past: '%s ingkang kepengker',
-        s: 'sawetawis detik',
-        ss: '%d detik',
-        m: 'setunggal menit',
-        mm: '%d menit',
-        h: 'setunggal jam',
-        hh: '%d jam',
-        d: 'sedinten',
-        dd: '%d dinten',
-        M: 'sewulan',
-        MM: '%d wulan',
-        y: 'setaun',
-        yy: '%d taun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ka.js
===================================================================
--- backend/node_modules/moment/src/locale/ka.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,92 +1,0 @@
-//! moment.js locale configuration
-//! locale : Georgian [ka]
-//! author : Irakli Janiashvili : https://github.com/IrakliJani
-
-import moment from '../moment';
-
-export default moment.defineLocale('ka', {
-    months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
-        '_'
-    ),
-    monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
-    weekdays: {
-        standalone:
-            'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
-                '_'
-            ),
-        format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
-            '_'
-        ),
-        isFormat: /(წინა|შემდეგ)/,
-    },
-    weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
-    weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[დღეს] LT[-ზე]',
-        nextDay: '[ხვალ] LT[-ზე]',
-        lastDay: '[გუშინ] LT[-ზე]',
-        nextWeek: '[შემდეგ] dddd LT[-ზე]',
-        lastWeek: '[წინა] dddd LT-ზე',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: function (s) {
-            return s.replace(
-                /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
-                function ($0, $1, $2) {
-                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
-                }
-            );
-        },
-        past: function (s) {
-            if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
-                return s.replace(/(ი|ე)$/, 'ის წინ');
-            }
-            if (/წელი/.test(s)) {
-                return s.replace(/წელი$/, 'წლის წინ');
-            }
-            return s;
-        },
-        s: 'რამდენიმე წამი',
-        ss: '%d წამი',
-        m: 'წუთი',
-        mm: '%d წუთი',
-        h: 'საათი',
-        hh: '%d საათი',
-        d: 'დღე',
-        dd: '%d დღე',
-        M: 'თვე',
-        MM: '%d თვე',
-        y: 'წელი',
-        yy: '%d წელი',
-    },
-    dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
-    ordinal: function (number) {
-        if (number === 0) {
-            return number;
-        }
-        if (number === 1) {
-            return number + '-ლი';
-        }
-        if (
-            number < 20 ||
-            (number <= 100 && number % 20 === 0) ||
-            number % 100 === 0
-        ) {
-            return 'მე-' + number;
-        }
-        return number + '-ე';
-    },
-    week: {
-        dow: 1,
-        doy: 7,
-    },
-});
Index: ckend/node_modules/moment/src/locale/kk.js
===================================================================
--- backend/node_modules/moment/src/locale/kk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kazakh [kk]
-//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-ші',
-    1: '-ші',
-    2: '-ші',
-    3: '-ші',
-    4: '-ші',
-    5: '-ші',
-    6: '-шы',
-    7: '-ші',
-    8: '-ші',
-    9: '-шы',
-    10: '-шы',
-    20: '-шы',
-    30: '-шы',
-    40: '-шы',
-    50: '-ші',
-    60: '-шы',
-    70: '-ші',
-    80: '-ші',
-    90: '-шы',
-    100: '-ші',
-};
-
-export default moment.defineLocale('kk', {
-    months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
-        '_'
-    ),
-    monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
-    weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
-        '_'
-    ),
-    weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
-    weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бүгін сағат] LT',
-        nextDay: '[Ертең сағат] LT',
-        nextWeek: 'dddd [сағат] LT',
-        lastDay: '[Кеше сағат] LT',
-        lastWeek: '[Өткен аптаның] dddd [сағат] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ішінде',
-        past: '%s бұрын',
-        s: 'бірнеше секунд',
-        ss: '%d секунд',
-        m: 'бір минут',
-        mm: '%d минут',
-        h: 'бір сағат',
-        hh: '%d сағат',
-        d: 'бір күн',
-        dd: '%d күн',
-        M: 'бір ай',
-        MM: '%d ай',
-        y: 'бір жыл',
-        yy: '%d жыл',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/km.js
===================================================================
--- backend/node_modules/moment/src/locale/km.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,103 +1,0 @@
-//! moment.js locale configuration
-//! locale : Cambodian [km]
-//! author : Kruy Vanna : https://github.com/kruyvanna
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '១',
-        2: '២',
-        3: '៣',
-        4: '៤',
-        5: '៥',
-        6: '៦',
-        7: '៧',
-        8: '៨',
-        9: '៩',
-        0: '០',
-    },
-    numberMap = {
-        '១': '1',
-        '២': '2',
-        '៣': '3',
-        '៤': '4',
-        '៥': '5',
-        '៦': '6',
-        '៧': '7',
-        '៨': '8',
-        '៩': '9',
-        '០': '0',
-    };
-
-export default moment.defineLocale('km', {
-    months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-        '_'
-    ),
-    monthsShort:
-        'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
-            '_'
-        ),
-    weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
-    weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-    weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ព្រឹក|ល្ងាច/,
-    isPM: function (input) {
-        return input === 'ល្ងាច';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ព្រឹក';
-        } else {
-            return 'ល្ងាច';
-        }
-    },
-    calendar: {
-        sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
-        nextDay: '[ស្អែក ម៉ោង] LT',
-        nextWeek: 'dddd [ម៉ោង] LT',
-        lastDay: '[ម្សិលមិញ ម៉ោង] LT',
-        lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sទៀត',
-        past: '%sមុន',
-        s: 'ប៉ុន្មានវិនាទី',
-        ss: '%d វិនាទី',
-        m: 'មួយនាទី',
-        mm: '%d នាទី',
-        h: 'មួយម៉ោង',
-        hh: '%d ម៉ោង',
-        d: 'មួយថ្ងៃ',
-        dd: '%d ថ្ងៃ',
-        M: 'មួយខែ',
-        MM: '%d ខែ',
-        y: 'មួយឆ្នាំ',
-        yy: '%d ឆ្នាំ',
-    },
-    dayOfMonthOrdinalParse: /ទី\d{1,2}/,
-    ordinal: 'ទី%d',
-    preparse: function (string) {
-        return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/kn.js
===================================================================
--- backend/node_modules/moment/src/locale/kn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kannada [kn]
-//! author : Rajeev Naik : https://github.com/rajeevnaikte
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '೧',
-        2: '೨',
-        3: '೩',
-        4: '೪',
-        5: '೫',
-        6: '೬',
-        7: '೭',
-        8: '೮',
-        9: '೯',
-        0: '೦',
-    },
-    numberMap = {
-        '೧': '1',
-        '೨': '2',
-        '೩': '3',
-        '೪': '4',
-        '೫': '5',
-        '೬': '6',
-        '೭': '7',
-        '೮': '8',
-        '೯': '9',
-        '೦': '0',
-    };
-
-export default moment.defineLocale('kn', {
-    months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
-        '_'
-    ),
-    monthsShort:
-        'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
-        '_'
-    ),
-    weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
-    weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[ಇಂದು] LT',
-        nextDay: '[ನಾಳೆ] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ನಿನ್ನೆ] LT',
-        lastWeek: '[ಕೊನೆಯ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ನಂತರ',
-        past: '%s ಹಿಂದೆ',
-        s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
-        ss: '%d ಸೆಕೆಂಡುಗಳು',
-        m: 'ಒಂದು ನಿಮಿಷ',
-        mm: '%d ನಿಮಿಷ',
-        h: 'ಒಂದು ಗಂಟೆ',
-        hh: '%d ಗಂಟೆ',
-        d: 'ಒಂದು ದಿನ',
-        dd: '%d ದಿನ',
-        M: 'ಒಂದು ತಿಂಗಳು',
-        MM: '%d ತಿಂಗಳು',
-        y: 'ಒಂದು ವರ್ಷ',
-        yy: '%d ವರ್ಷ',
-    },
-    preparse: function (string) {
-        return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ರಾತ್ರಿ') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
-            return hour;
-        } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'ಸಂಜೆ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ರಾತ್ರಿ';
-        } else if (hour < 10) {
-            return 'ಬೆಳಿಗ್ಗೆ';
-        } else if (hour < 17) {
-            return 'ಮಧ್ಯಾಹ್ನ';
-        } else if (hour < 20) {
-            return 'ಸಂಜೆ';
-        } else {
-            return 'ರಾತ್ರಿ';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
-    ordinal: function (number) {
-        return number + 'ನೇ';
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ko.js
===================================================================
--- backend/node_modules/moment/src/locale/ko.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Korean [ko]
-//! author : Kyungwook, Park : https://github.com/kyungw00k
-//! author : Jeeeyul Lee <jeeeyul@gmail.com>
-
-import moment from '../moment';
-
-export default moment.defineLocale('ko', {
-    months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
-    monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
-        '_'
-    ),
-    weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
-    weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
-    weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'YYYY.MM.DD.',
-        LL: 'YYYY년 MMMM D일',
-        LLL: 'YYYY년 MMMM D일 A h:mm',
-        LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
-        l: 'YYYY.MM.DD.',
-        ll: 'YYYY년 MMMM D일',
-        lll: 'YYYY년 MMMM D일 A h:mm',
-        llll: 'YYYY년 MMMM D일 dddd A h:mm',
-    },
-    calendar: {
-        sameDay: '오늘 LT',
-        nextDay: '내일 LT',
-        nextWeek: 'dddd LT',
-        lastDay: '어제 LT',
-        lastWeek: '지난주 dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s 후',
-        past: '%s 전',
-        s: '몇 초',
-        ss: '%d초',
-        m: '1분',
-        mm: '%d분',
-        h: '한 시간',
-        hh: '%d시간',
-        d: '하루',
-        dd: '%d일',
-        M: '한 달',
-        MM: '%d달',
-        y: '일 년',
-        yy: '%d년',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '일';
-            case 'M':
-                return number + '월';
-            case 'w':
-            case 'W':
-                return number + '주';
-            default:
-                return number;
-        }
-    },
-    meridiemParse: /오전|오후/,
-    isPM: function (token) {
-        return token === '오후';
-    },
-    meridiem: function (hour, minute, isUpper) {
-        return hour < 12 ? '오전' : '오후';
-    },
-});
Index: ckend/node_modules/moment/src/locale/ku-kmr.js
===================================================================
--- backend/node_modules/moment/src/locale/ku-kmr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Kurdish [ku-kmr]
-//! authors : Mazlum Özdogan : https://github.com/mergehez
-
-// All rules except for month names are according to
-// the spelling rules which are defined in the book 'Rêbera Rastnivîsînê' from Komxebata Kurmancîyê.
-// Komxebata Kurmancîyê is a work group that studied different uses in Kurdish language (Kurmanji/Northern Kurdish),
-// chose one of alternatives as standard and publish them via their book.
-// There are 18 Kurdish linguists in the group.
-// The group was formed by Mesopotamia Foundation
-
-import moment from '../moment';
-
-function processRelativeTime(num, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['çend sanîye', 'çend sanîyeyan'],
-        ss: [num + ' sanîye', num + ' sanîyeyan'],
-        m: ['deqîqeyek', 'deqîqeyekê'],
-        mm: [num + ' deqîqe', num + ' deqîqeyan'],
-        h: ['saetek', 'saetekê'],
-        hh: [num + ' saet', num + ' saetan'],
-        d: ['rojek', 'rojekê'],
-        dd: [num + ' roj', num + ' rojan'],
-        w: ['hefteyek', 'hefteyekê'],
-        ww: [num + ' hefte', num + ' hefteyan'],
-        M: ['mehek', 'mehekê'],
-        MM: [num + ' meh', num + ' mehan'],
-        y: ['salek', 'salekê'],
-        yy: [num + ' sal', num + ' salan'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-// function obliqueNumSuffix(num) {
-//     if(num.includes(':'))
-//         num = parseInt(num.split(':')[0]);
-//     else
-//         num = parseInt(num);
-//     return num == 0 || num % 10 == 1 ? 'ê'
-//                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
-// }
-function ezafeNumSuffix(num) {
-    num = '' + num;
-    var l = num.substring(num.length - 1),
-        ll = num.length > 1 ? num.substring(num.length - 2) : '';
-    if (
-        !(ll == 12 || ll == 13) &&
-        (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
-    )
-        return 'yê';
-    return 'ê';
-}
-
-export default moment.defineLocale('ku-kmr', {
-    // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
-    // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
-    // But the names below are more well known and handy
-    months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
-        '_'
-    ),
-    monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
-    weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
-    weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'bn' : 'BN';
-        } else {
-            return isLower ? 'pn' : 'PN';
-        }
-    },
-    meridiemParse: /bn|BN|pn|PN/,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'Do MMMM[a] YYYY[an]',
-        LLL: 'Do MMMM[a] YYYY[an] HH:mm',
-        LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
-        ll: 'Do MMM[.] YYYY[an]',
-        lll: 'Do MMM[.] YYYY[an] HH:mm',
-        llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Îro di saet] LT [de]',
-        nextDay: '[Sibê di saet] LT [de]',
-        nextWeek: 'dddd [di saet] LT [de]',
-        lastDay: '[Duh di saet] LT [de]',
-        lastWeek: 'dddd[a borî di saet] LT [de]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'di %s de',
-        past: 'berî %s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        w: processRelativeTime,
-        ww: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
-    ordinal: function (num, period) {
-        var p = period.toLowerCase();
-        if (p.includes('w') || p.includes('m')) return num + '.';
-
-        return num + ezafeNumSuffix(num);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ku.js
===================================================================
--- backend/node_modules/moment/src/locale/ku.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,118 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kurdish [ku]
-//! author : Shahram Mebashar : https://github.com/ShahramMebashar
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '١',
-        2: '٢',
-        3: '٣',
-        4: '٤',
-        5: '٥',
-        6: '٦',
-        7: '٧',
-        8: '٨',
-        9: '٩',
-        0: '٠',
-    },
-    numberMap = {
-        '١': '1',
-        '٢': '2',
-        '٣': '3',
-        '٤': '4',
-        '٥': '5',
-        '٦': '6',
-        '٧': '7',
-        '٨': '8',
-        '٩': '9',
-        '٠': '0',
-    },
-    months = [
-        'کانونی دووەم',
-        'شوبات',
-        'ئازار',
-        'نیسان',
-        'ئایار',
-        'حوزەیران',
-        'تەمموز',
-        'ئاب',
-        'ئەیلوول',
-        'تشرینی یەكەم',
-        'تشرینی دووەم',
-        'كانونی یەکەم',
-    ];
-
-export default moment.defineLocale('ku', {
-    months: months,
-    monthsShort: months,
-    weekdays:
-        'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
-            '_'
-        ),
-    weekdaysShort:
-        'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
-    weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ئێواره‌|به‌یانی/,
-    isPM: function (input) {
-        return /ئێواره‌/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'به‌یانی';
-        } else {
-            return 'ئێواره‌';
-        }
-    },
-    calendar: {
-        sameDay: '[ئه‌مرۆ كاتژمێر] LT',
-        nextDay: '[به‌یانی كاتژمێر] LT',
-        nextWeek: 'dddd [كاتژمێر] LT',
-        lastDay: '[دوێنێ كاتژمێر] LT',
-        lastWeek: 'dddd [كاتژمێر] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'له‌ %s',
-        past: '%s',
-        s: 'چه‌ند چركه‌یه‌ك',
-        ss: 'چركه‌ %d',
-        m: 'یه‌ك خوله‌ك',
-        mm: '%d خوله‌ك',
-        h: 'یه‌ك كاتژمێر',
-        hh: '%d كاتژمێر',
-        d: 'یه‌ك ڕۆژ',
-        dd: '%d ڕۆژ',
-        M: 'یه‌ك مانگ',
-        MM: '%d مانگ',
-        y: 'یه‌ك ساڵ',
-        yy: '%d ساڵ',
-    },
-    preparse: function (string) {
-        return string
-            .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
-                return numberMap[match];
-            })
-            .replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string
-            .replace(/\d/g, function (match) {
-                return symbolMap[match];
-            })
-            .replace(/,/g, '،');
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ky.js
===================================================================
--- backend/node_modules/moment/src/locale/ky.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//! moment.js locale configuration
-//! locale : Kyrgyz [ky]
-//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-чү',
-    1: '-чи',
-    2: '-чи',
-    3: '-чү',
-    4: '-чү',
-    5: '-чи',
-    6: '-чы',
-    7: '-чи',
-    8: '-чи',
-    9: '-чу',
-    10: '-чу',
-    20: '-чы',
-    30: '-чу',
-    40: '-чы',
-    50: '-чү',
-    60: '-чы',
-    70: '-чи',
-    80: '-чи',
-    90: '-чу',
-    100: '-чү',
-};
-
-export default moment.defineLocale('ky', {
-    months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-        '_'
-    ),
-    monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
-        '_'
-    ),
-    weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
-        '_'
-    ),
-    weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
-    weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бүгүн саат] LT',
-        nextDay: '[Эртең саат] LT',
-        nextWeek: 'dddd [саат] LT',
-        lastDay: '[Кечээ саат] LT',
-        lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ичинде',
-        past: '%s мурун',
-        s: 'бирнече секунд',
-        ss: '%d секунд',
-        m: 'бир мүнөт',
-        mm: '%d мүнөт',
-        h: 'бир саат',
-        hh: '%d саат',
-        d: 'бир күн',
-        dd: '%d күн',
-        M: 'бир ай',
-        MM: '%d ай',
-        y: 'бир жыл',
-        yy: '%d жыл',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/lb.js
===================================================================
--- backend/node_modules/moment/src/locale/lb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,137 +1,0 @@
-//! moment.js locale configuration
-//! locale : Luxembourgish [lb]
-//! author : mweimerskirch : https://github.com/mweimerskirch
-//! author : David Raison : https://github.com/kwisatz
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        m: ['eng Minutt', 'enger Minutt'],
-        h: ['eng Stonn', 'enger Stonn'],
-        d: ['een Dag', 'engem Dag'],
-        M: ['ee Mount', 'engem Mount'],
-        y: ['ee Joer', 'engem Joer'],
-    };
-    return withoutSuffix ? format[key][0] : format[key][1];
-}
-function processFutureTime(string) {
-    var number = string.substr(0, string.indexOf(' '));
-    if (eifelerRegelAppliesToNumber(number)) {
-        return 'a ' + string;
-    }
-    return 'an ' + string;
-}
-function processPastTime(string) {
-    var number = string.substr(0, string.indexOf(' '));
-    if (eifelerRegelAppliesToNumber(number)) {
-        return 'viru ' + string;
-    }
-    return 'virun ' + string;
-}
-/**
- * Returns true if the word before the given number loses the '-n' ending.
- * e.g. 'an 10 Deeg' but 'a 5 Deeg'
- *
- * @param number {integer}
- * @returns {boolean}
- */
-function eifelerRegelAppliesToNumber(number) {
-    number = parseInt(number, 10);
-    if (isNaN(number)) {
-        return false;
-    }
-    if (number < 0) {
-        // Negative Number --> always true
-        return true;
-    } else if (number < 10) {
-        // Only 1 digit
-        if (4 <= number && number <= 7) {
-            return true;
-        }
-        return false;
-    } else if (number < 100) {
-        // 2 digits
-        var lastDigit = number % 10,
-            firstDigit = number / 10;
-        if (lastDigit === 0) {
-            return eifelerRegelAppliesToNumber(firstDigit);
-        }
-        return eifelerRegelAppliesToNumber(lastDigit);
-    } else if (number < 10000) {
-        // 3 or 4 digits --> recursively check first digit
-        while (number >= 10) {
-            number = number / 10;
-        }
-        return eifelerRegelAppliesToNumber(number);
-    } else {
-        // Anything larger than 4 digits: recursively check first n-3 digits
-        number = number / 1000;
-        return eifelerRegelAppliesToNumber(number);
-    }
-}
-
-export default moment.defineLocale('lb', {
-    months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
-        '_'
-    ),
-    monthsShort:
-        'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
-            '_'
-        ),
-    weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
-    weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm [Auer]',
-        LTS: 'H:mm:ss [Auer]',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm [Auer]',
-        LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
-    },
-    calendar: {
-        sameDay: '[Haut um] LT',
-        sameElse: 'L',
-        nextDay: '[Muer um] LT',
-        nextWeek: 'dddd [um] LT',
-        lastDay: '[Gëschter um] LT',
-        lastWeek: function () {
-            // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
-            switch (this.day()) {
-                case 2:
-                case 4:
-                    return '[Leschten] dddd [um] LT';
-                default:
-                    return '[Leschte] dddd [um] LT';
-            }
-        },
-    },
-    relativeTime: {
-        future: processFutureTime,
-        past: processPastTime,
-        s: 'e puer Sekonnen',
-        ss: '%d Sekonnen',
-        m: processRelativeTime,
-        mm: '%d Minutten',
-        h: processRelativeTime,
-        hh: '%d Stonnen',
-        d: processRelativeTime,
-        dd: '%d Deeg',
-        M: processRelativeTime,
-        MM: '%d Méint',
-        y: processRelativeTime,
-        yy: '%d Joer',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/lo.js
===================================================================
--- backend/node_modules/moment/src/locale/lo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,66 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lao [lo]
-//! author : Ryan Hart : https://github.com/ryanhart2
-
-import moment from '../moment';
-
-export default moment.defineLocale('lo', {
-    months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
-            '_'
-        ),
-    weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-    weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
-    weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
-    isPM: function (input) {
-        return input === 'ຕອນແລງ';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ຕອນເຊົ້າ';
-        } else {
-            return 'ຕອນແລງ';
-        }
-    },
-    calendar: {
-        sameDay: '[ມື້ນີ້ເວລາ] LT',
-        nextDay: '[ມື້ອື່ນເວລາ] LT',
-        nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
-        lastDay: '[ມື້ວານນີ້ເວລາ] LT',
-        lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ອີກ %s',
-        past: '%sຜ່ານມາ',
-        s: 'ບໍ່ເທົ່າໃດວິນາທີ',
-        ss: '%d ວິນາທີ',
-        m: '1 ນາທີ',
-        mm: '%d ນາທີ',
-        h: '1 ຊົ່ວໂມງ',
-        hh: '%d ຊົ່ວໂມງ',
-        d: '1 ມື້',
-        dd: '%d ມື້',
-        M: '1 ເດືອນ',
-        MM: '%d ເດືອນ',
-        y: '1 ປີ',
-        yy: '%d ປີ',
-    },
-    dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
-    ordinal: function (number) {
-        return 'ທີ່' + number;
-    },
-});
Index: ckend/node_modules/moment/src/locale/lt.js
===================================================================
--- backend/node_modules/moment/src/locale/lt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,125 +1,0 @@
-//! moment.js locale configuration
-//! locale : Lithuanian [lt]
-//! author : Mindaugas Mozūras : https://github.com/mmozuras
-
-import moment from '../moment';
-
-var units = {
-    ss: 'sekundė_sekundžių_sekundes',
-    m: 'minutė_minutės_minutę',
-    mm: 'minutės_minučių_minutes',
-    h: 'valanda_valandos_valandą',
-    hh: 'valandos_valandų_valandas',
-    d: 'diena_dienos_dieną',
-    dd: 'dienos_dienų_dienas',
-    M: 'mėnuo_mėnesio_mėnesį',
-    MM: 'mėnesiai_mėnesių_mėnesius',
-    y: 'metai_metų_metus',
-    yy: 'metai_metų_metus',
-};
-function translateSeconds(number, withoutSuffix, key, isFuture) {
-    if (withoutSuffix) {
-        return 'kelios sekundės';
-    } else {
-        return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
-    }
-}
-function translateSingular(number, withoutSuffix, key, isFuture) {
-    return withoutSuffix
-        ? forms(key)[0]
-        : isFuture
-          ? forms(key)[1]
-          : forms(key)[2];
-}
-function special(number) {
-    return number % 10 === 0 || (number > 10 && number < 20);
-}
-function forms(key) {
-    return units[key].split('_');
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    if (number === 1) {
-        return (
-            result + translateSingular(number, withoutSuffix, key[0], isFuture)
-        );
-    } else if (withoutSuffix) {
-        return result + (special(number) ? forms(key)[1] : forms(key)[0]);
-    } else {
-        if (isFuture) {
-            return result + forms(key)[1];
-        } else {
-            return result + (special(number) ? forms(key)[1] : forms(key)[2]);
-        }
-    }
-}
-export default moment.defineLocale('lt', {
-    months: {
-        format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
-            '_'
-        ),
-        standalone:
-            'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
-                '_'
-            ),
-        isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
-    },
-    monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
-    weekdays: {
-        format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
-            '_'
-        ),
-        standalone:
-            'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
-                '_'
-            ),
-        isFormat: /dddd HH:mm/,
-    },
-    weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
-    weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY [m.] MMMM D [d.]',
-        LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-        LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
-        l: 'YYYY-MM-DD',
-        ll: 'YYYY [m.] MMMM D [d.]',
-        lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
-        llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
-    },
-    calendar: {
-        sameDay: '[Šiandien] LT',
-        nextDay: '[Rytoj] LT',
-        nextWeek: 'dddd LT',
-        lastDay: '[Vakar] LT',
-        lastWeek: '[Praėjusį] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'po %s',
-        past: 'prieš %s',
-        s: translateSeconds,
-        ss: translate,
-        m: translateSingular,
-        mm: translate,
-        h: translateSingular,
-        hh: translate,
-        d: translateSingular,
-        dd: translate,
-        M: translateSingular,
-        MM: translate,
-        y: translateSingular,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-oji/,
-    ordinal: function (number) {
-        return number + '-oji';
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/lv.js
===================================================================
--- backend/node_modules/moment/src/locale/lv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-//! moment.js locale configuration
-//! locale : Latvian [lv]
-//! author : Kristaps Karlsons : https://github.com/skakri
-//! author : Jānis Elmeris : https://github.com/JanisE
-
-import moment from '../moment';
-
-var units = {
-    ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
-    m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-    mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
-    h: 'stundas_stundām_stunda_stundas'.split('_'),
-    hh: 'stundas_stundām_stunda_stundas'.split('_'),
-    d: 'dienas_dienām_diena_dienas'.split('_'),
-    dd: 'dienas_dienām_diena_dienas'.split('_'),
-    M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-    MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
-    y: 'gada_gadiem_gads_gadi'.split('_'),
-    yy: 'gada_gadiem_gads_gadi'.split('_'),
-};
-/**
- * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
- */
-function format(forms, number, withoutSuffix) {
-    if (withoutSuffix) {
-        // E.g. "21 minūte", "3 minūtes".
-        return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
-    } else {
-        // E.g. "21 minūtes" as in "pēc 21 minūtes".
-        // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
-        return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
-    }
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    return number + ' ' + format(units[key], number, withoutSuffix);
-}
-function relativeTimeWithSingular(number, withoutSuffix, key) {
-    return format(units[key], number, withoutSuffix);
-}
-function relativeSeconds(number, withoutSuffix) {
-    return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
-}
-
-export default moment.defineLocale('lv', {
-    months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
-    weekdays:
-        'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
-            '_'
-        ),
-    weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
-    weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY.',
-        LL: 'YYYY. [gada] D. MMMM',
-        LLL: 'YYYY. [gada] D. MMMM, HH:mm',
-        LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
-    },
-    calendar: {
-        sameDay: '[Šodien pulksten] LT',
-        nextDay: '[Rīt pulksten] LT',
-        nextWeek: 'dddd [pulksten] LT',
-        lastDay: '[Vakar pulksten] LT',
-        lastWeek: '[Pagājušā] dddd [pulksten] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'pēc %s',
-        past: 'pirms %s',
-        s: relativeSeconds,
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithSingular,
-        mm: relativeTimeWithPlural,
-        h: relativeTimeWithSingular,
-        hh: relativeTimeWithPlural,
-        d: relativeTimeWithSingular,
-        dd: relativeTimeWithPlural,
-        M: relativeTimeWithSingular,
-        MM: relativeTimeWithPlural,
-        y: relativeTimeWithSingular,
-        yy: relativeTimeWithPlural,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/me.js
===================================================================
--- backend/node_modules/moment/src/locale/me.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Montenegrin [me]
-//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['sekund', 'sekunda', 'sekundi'],
-        m: ['jedan minut', 'jednog minuta'],
-        mm: ['minut', 'minuta', 'minuta'],
-        h: ['jedan sat', 'jednog sata'],
-        hh: ['sat', 'sata', 'sati'],
-        dd: ['dan', 'dana', 'dana'],
-        MM: ['mjesec', 'mjeseca', 'mjeseci'],
-        yy: ['godina', 'godine', 'godina'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        return number === 1
-            ? wordKey[0]
-            : number >= 2 && number <= 4
-              ? wordKey[1]
-              : wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key) {
-        var wordKey = translator.words[key];
-        if (key.length === 1) {
-            return withoutSuffix ? wordKey[0] : wordKey[1];
-        } else {
-            return (
-                number +
-                ' ' +
-                translator.correctGrammaticalCase(number, wordKey)
-            );
-        }
-    },
-};
-
-export default moment.defineLocale('me', {
-    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sjutra u] LT',
-
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedjelju] [u] LT';
-                case 3:
-                    return '[u] [srijedu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[juče u] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[prošle] [nedjelje] [u] LT',
-                '[prošlog] [ponedjeljka] [u] LT',
-                '[prošlog] [utorka] [u] LT',
-                '[prošle] [srijede] [u] LT',
-                '[prošlog] [četvrtka] [u] LT',
-                '[prošlog] [petka] [u] LT',
-                '[prošle] [subote] [u] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'prije %s',
-        s: 'nekoliko sekundi',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: 'dan',
-        dd: translator.translate,
-        M: 'mjesec',
-        MM: translator.translate,
-        y: 'godinu',
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/mi.js
===================================================================
--- backend/node_modules/moment/src/locale/mi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maori [mi]
-//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
-
-import moment from '../moment';
-
-export default moment.defineLocale('mi', {
-    months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
-        '_'
-    ),
-    monthsShort:
-        'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
-            '_'
-        ),
-    monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
-    monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
-    weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
-    weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-    weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [i] HH:mm',
-        LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i teie mahana, i] LT',
-        nextDay: '[apopo i] LT',
-        nextWeek: 'dddd [i] LT',
-        lastDay: '[inanahi i] LT',
-        lastWeek: 'dddd [whakamutunga i] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'i roto i %s',
-        past: '%s i mua',
-        s: 'te hēkona ruarua',
-        ss: '%d hēkona',
-        m: 'he meneti',
-        mm: '%d meneti',
-        h: 'te haora',
-        hh: '%d haora',
-        d: 'he ra',
-        dd: '%d ra',
-        M: 'he marama',
-        MM: '%d marama',
-        y: 'he tau',
-        yy: '%d tau',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/mk.js
===================================================================
--- backend/node_modules/moment/src/locale/mk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//! moment.js locale configuration
-//! locale : Macedonian [mk]
-//! author : Borislav Mickov : https://github.com/B0k0
-//! author : Sashko Todorov : https://github.com/bkyceh
-import moment from '../moment';
-
-export default moment.defineLocale('mk', {
-    months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
-        '_'
-    ),
-    monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
-    weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
-        '_'
-    ),
-    weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
-    weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[Денес во] LT',
-        nextDay: '[Утре во] LT',
-        nextWeek: '[Во] dddd [во] LT',
-        lastDay: '[Вчера во] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 6:
-                    return '[Изминатата] dddd [во] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[Изминатиот] dddd [во] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: 'пред %s',
-        s: 'неколку секунди',
-        ss: '%d секунди',
-        m: 'една минута',
-        mm: '%d минути',
-        h: 'еден час',
-        hh: '%d часа',
-        d: 'еден ден',
-        dd: '%d дена',
-        M: 'еден месец',
-        MM: '%d месеци',
-        y: 'една година',
-        yy: '%d години',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
-    ordinal: function (number) {
-        var lastDigit = number % 10,
-            last2Digits = number % 100;
-        if (number === 0) {
-            return number + '-ев';
-        } else if (last2Digits === 0) {
-            return number + '-ен';
-        } else if (last2Digits > 10 && last2Digits < 20) {
-            return number + '-ти';
-        } else if (lastDigit === 1) {
-            return number + '-ви';
-        } else if (lastDigit === 2) {
-            return number + '-ри';
-        } else if (lastDigit === 7 || lastDigit === 8) {
-            return number + '-ми';
-        } else {
-            return number + '-ти';
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ml.js
===================================================================
--- backend/node_modules/moment/src/locale/ml.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malayalam [ml]
-//! author : Floyd Pink : https://github.com/floydpink
-
-import moment from '../moment';
-
-export default moment.defineLocale('ml', {
-    months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
-            '_'
-        ),
-    weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
-    weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm -നു',
-        LTS: 'A h:mm:ss -നു',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm -നു',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
-    },
-    calendar: {
-        sameDay: '[ഇന്ന്] LT',
-        nextDay: '[നാളെ] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[ഇന്നലെ] LT',
-        lastWeek: '[കഴിഞ്ഞ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s കഴിഞ്ഞ്',
-        past: '%s മുൻപ്',
-        s: 'അൽപ നിമിഷങ്ങൾ',
-        ss: '%d സെക്കൻഡ്',
-        m: 'ഒരു മിനിറ്റ്',
-        mm: '%d മിനിറ്റ്',
-        h: 'ഒരു മണിക്കൂർ',
-        hh: '%d മണിക്കൂർ',
-        d: 'ഒരു ദിവസം',
-        dd: '%d ദിവസം',
-        M: 'ഒരു മാസം',
-        MM: '%d മാസം',
-        y: 'ഒരു വർഷം',
-        yy: '%d വർഷം',
-    },
-    meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            (meridiem === 'രാത്രി' && hour >= 4) ||
-            meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
-            meridiem === 'വൈകുന്നേരം'
-        ) {
-            return hour + 12;
-        } else {
-            return hour;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'രാത്രി';
-        } else if (hour < 12) {
-            return 'രാവിലെ';
-        } else if (hour < 17) {
-            return 'ഉച്ച കഴിഞ്ഞ്';
-        } else if (hour < 20) {
-            return 'വൈകുന്നേരം';
-        } else {
-            return 'രാത്രി';
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/mn.js
===================================================================
--- backend/node_modules/moment/src/locale/mn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Mongolian [mn]
-//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
-
-import moment from '../moment';
-
-function translate(number, withoutSuffix, key, isFuture) {
-    switch (key) {
-        case 's':
-            return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
-        case 'ss':
-            return number + (withoutSuffix ? ' секунд' : ' секундын');
-        case 'm':
-        case 'mm':
-            return number + (withoutSuffix ? ' минут' : ' минутын');
-        case 'h':
-        case 'hh':
-            return number + (withoutSuffix ? ' цаг' : ' цагийн');
-        case 'd':
-        case 'dd':
-            return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
-        case 'M':
-        case 'MM':
-            return number + (withoutSuffix ? ' сар' : ' сарын');
-        case 'y':
-        case 'yy':
-            return number + (withoutSuffix ? ' жил' : ' жилийн');
-        default:
-            return number;
-    }
-}
-
-export default moment.defineLocale('mn', {
-    months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
-        '_'
-    ),
-    monthsShort:
-        '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
-    weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
-    weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY оны MMMMын D',
-        LLL: 'YYYY оны MMMMын D HH:mm',
-        LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
-    },
-    meridiemParse: /ҮӨ|ҮХ/i,
-    isPM: function (input) {
-        return input === 'ҮХ';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ҮӨ';
-        } else {
-            return 'ҮХ';
-        }
-    },
-    calendar: {
-        sameDay: '[Өнөөдөр] LT',
-        nextDay: '[Маргааш] LT',
-        nextWeek: '[Ирэх] dddd LT',
-        lastDay: '[Өчигдөр] LT',
-        lastWeek: '[Өнгөрсөн] dddd LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s дараа',
-        past: '%s өмнө',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + ' өдөр';
-            default:
-                return number;
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/mr.js
===================================================================
--- backend/node_modules/moment/src/locale/mr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,203 +1,0 @@
-//! moment.js locale configuration
-//! locale : Marathi [mr]
-//! author : Harshad Kale : https://github.com/kalehv
-//! author : Vivek Athalye : https://github.com/vnathalye
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    };
-
-function relativeTimeMr(number, withoutSuffix, string, isFuture) {
-    var output = '';
-    if (withoutSuffix) {
-        switch (string) {
-            case 's':
-                output = 'काही सेकंद';
-                break;
-            case 'ss':
-                output = '%d सेकंद';
-                break;
-            case 'm':
-                output = 'एक मिनिट';
-                break;
-            case 'mm':
-                output = '%d मिनिटे';
-                break;
-            case 'h':
-                output = 'एक तास';
-                break;
-            case 'hh':
-                output = '%d तास';
-                break;
-            case 'd':
-                output = 'एक दिवस';
-                break;
-            case 'dd':
-                output = '%d दिवस';
-                break;
-            case 'M':
-                output = 'एक महिना';
-                break;
-            case 'MM':
-                output = '%d महिने';
-                break;
-            case 'y':
-                output = 'एक वर्ष';
-                break;
-            case 'yy':
-                output = '%d वर्षे';
-                break;
-        }
-    } else {
-        switch (string) {
-            case 's':
-                output = 'काही सेकंदां';
-                break;
-            case 'ss':
-                output = '%d सेकंदां';
-                break;
-            case 'm':
-                output = 'एका मिनिटा';
-                break;
-            case 'mm':
-                output = '%d मिनिटां';
-                break;
-            case 'h':
-                output = 'एका तासा';
-                break;
-            case 'hh':
-                output = '%d तासां';
-                break;
-            case 'd':
-                output = 'एका दिवसा';
-                break;
-            case 'dd':
-                output = '%d दिवसां';
-                break;
-            case 'M':
-                output = 'एका महिन्या';
-                break;
-            case 'MM':
-                output = '%d महिन्यां';
-                break;
-            case 'y':
-                output = 'एका वर्षा';
-                break;
-            case 'yy':
-                output = '%d वर्षां';
-                break;
-        }
-    }
-    return output.replace(/%d/i, number);
-}
-
-export default moment.defineLocale('mr', {
-    months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
-        '_'
-    ),
-    monthsShort:
-        'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
-    weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
-    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm वाजता',
-        LTS: 'A h:mm:ss वाजता',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm वाजता',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
-    },
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[उद्या] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[काल] LT',
-        lastWeek: '[मागील] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sमध्ये',
-        past: '%sपूर्वी',
-        s: relativeTimeMr,
-        ss: relativeTimeMr,
-        m: relativeTimeMr,
-        mm: relativeTimeMr,
-        h: relativeTimeMr,
-        hh: relativeTimeMr,
-        d: relativeTimeMr,
-        dd: relativeTimeMr,
-        M: relativeTimeMr,
-        MM: relativeTimeMr,
-        y: relativeTimeMr,
-        yy: relativeTimeMr,
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
-            return hour;
-        } else if (
-            meridiem === 'दुपारी' ||
-            meridiem === 'सायंकाळी' ||
-            meridiem === 'रात्री'
-        ) {
-            return hour >= 12 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour >= 0 && hour < 6) {
-            return 'पहाटे';
-        } else if (hour < 12) {
-            return 'सकाळी';
-        } else if (hour < 17) {
-            return 'दुपारी';
-        } else if (hour < 20) {
-            return 'सायंकाळी';
-        } else {
-            return 'रात्री';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ms-my.js
===================================================================
--- backend/node_modules/moment/src/locale/ms-my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms-my]
-//! note : DEPRECATED, the correct one is [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-import moment from '../moment';
-
-export default moment.defineLocale('ms-my', {
-    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|tengahari|petang|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'tengahari') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'petang' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'tengahari';
-        } else if (hours < 19) {
-            return 'petang';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Esok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kelmarin pukul] LT',
-        lastWeek: 'dddd [lepas pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lepas',
-        s: 'beberapa saat',
-        ss: '%d saat',
-        m: 'seminit',
-        mm: '%d minit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ms.js
===================================================================
--- backend/node_modules/moment/src/locale/ms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-//! moment.js locale configuration
-//! locale : Malay [ms]
-//! author : Weldan Jamili : https://github.com/weldan
-
-import moment from '../moment';
-
-export default moment.defineLocale('ms', {
-    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
-    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
-    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
-    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [pukul] HH.mm',
-        LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
-    },
-    meridiemParse: /pagi|tengahari|petang|malam/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'pagi') {
-            return hour;
-        } else if (meridiem === 'tengahari') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'petang' || meridiem === 'malam') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'pagi';
-        } else if (hours < 15) {
-            return 'tengahari';
-        } else if (hours < 19) {
-            return 'petang';
-        } else {
-            return 'malam';
-        }
-    },
-    calendar: {
-        sameDay: '[Hari ini pukul] LT',
-        nextDay: '[Esok pukul] LT',
-        nextWeek: 'dddd [pukul] LT',
-        lastDay: '[Kelmarin pukul] LT',
-        lastWeek: 'dddd [lepas pukul] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dalam %s',
-        past: '%s yang lepas',
-        s: 'beberapa saat',
-        ss: '%d saat',
-        m: 'seminit',
-        mm: '%d minit',
-        h: 'sejam',
-        hh: '%d jam',
-        d: 'sehari',
-        dd: '%d hari',
-        M: 'sebulan',
-        MM: '%d bulan',
-        y: 'setahun',
-        yy: '%d tahun',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/mt.js
===================================================================
--- backend/node_modules/moment/src/locale/mt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-//! moment.js locale configuration
-//! locale : Maltese (Malta) [mt]
-//! author : Alessandro Maruccia : https://github.com/alesma
-
-import moment from '../moment';
-
-export default moment.defineLocale('mt', {
-    months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
-    weekdays:
-        'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
-            '_'
-        ),
-    weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
-    weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Illum fil-]LT',
-        nextDay: '[Għada fil-]LT',
-        nextWeek: 'dddd [fil-]LT',
-        lastDay: '[Il-bieraħ fil-]LT',
-        lastWeek: 'dddd [li għadda] [fil-]LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'f’ %s',
-        past: '%s ilu',
-        s: 'ftit sekondi',
-        ss: '%d sekondi',
-        m: 'minuta',
-        mm: '%d minuti',
-        h: 'siegħa',
-        hh: '%d siegħat',
-        d: 'ġurnata',
-        dd: '%d ġranet',
-        M: 'xahar',
-        MM: '%d xhur',
-        y: 'sena',
-        yy: '%d sni',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/my.js
===================================================================
--- backend/node_modules/moment/src/locale/my.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//! moment.js locale configuration
-//! locale : Burmese [my]
-//! author : Squar team, mysquar.com
-//! author : David Rossellat : https://github.com/gholadr
-//! author : Tin Aung Lin : https://github.com/thanyawzinmin
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '၁',
-        2: '၂',
-        3: '၃',
-        4: '၄',
-        5: '၅',
-        6: '၆',
-        7: '၇',
-        8: '၈',
-        9: '၉',
-        0: '၀',
-    },
-    numberMap = {
-        '၁': '1',
-        '၂': '2',
-        '၃': '3',
-        '၄': '4',
-        '၅': '5',
-        '၆': '6',
-        '၇': '7',
-        '၈': '8',
-        '၉': '9',
-        '၀': '0',
-    };
-
-export default moment.defineLocale('my', {
-    months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
-        '_'
-    ),
-    monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
-    weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
-        '_'
-    ),
-    weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-    weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
-
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[ယနေ.] LT [မှာ]',
-        nextDay: '[မနက်ဖြန်] LT [မှာ]',
-        nextWeek: 'dddd LT [မှာ]',
-        lastDay: '[မနေ.က] LT [မှာ]',
-        lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'လာမည့် %s မှာ',
-        past: 'လွန်ခဲ့သော %s က',
-        s: 'စက္ကန်.အနည်းငယ်',
-        ss: '%d စက္ကန့်',
-        m: 'တစ်မိနစ်',
-        mm: '%d မိနစ်',
-        h: 'တစ်နာရီ',
-        hh: '%d နာရီ',
-        d: 'တစ်ရက်',
-        dd: '%d ရက်',
-        M: 'တစ်လ',
-        MM: '%d လ',
-        y: 'တစ်နှစ်',
-        yy: '%d နှစ်',
-    },
-    preparse: function (string) {
-        return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/nb.js
===================================================================
--- backend/node_modules/moment/src/locale/nb.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-//! moment.js locale configuration
-//! locale : Norwegian Bokmål [nb]
-//! authors : Espen Hovlandsdal : https://github.com/rexxars
-//!           Sigurd Gartmann : https://github.com/sigurdga
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-import moment from '../moment';
-
-export default moment.defineLocale('nb', {
-    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
-    weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
-    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] HH:mm',
-        LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[i dag kl.] LT',
-        nextDay: '[i morgen kl.] LT',
-        nextWeek: 'dddd [kl.] LT',
-        lastDay: '[i går kl.] LT',
-        lastWeek: '[forrige] dddd [kl.] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s siden',
-        s: 'noen sekunder',
-        ss: '%d sekunder',
-        m: 'ett minutt',
-        mm: '%d minutter',
-        h: 'én time',
-        hh: '%d timer',
-        d: 'én dag',
-        dd: '%d dager',
-        w: 'én uke',
-        ww: '%d uker',
-        M: 'én måned',
-        MM: '%d måneder',
-        y: 'ett år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ne.js
===================================================================
--- backend/node_modules/moment/src/locale/ne.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,121 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nepalese [ne]
-//! author : suvash : https://github.com/suvash
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '१',
-        2: '२',
-        3: '३',
-        4: '४',
-        5: '५',
-        6: '६',
-        7: '७',
-        8: '८',
-        9: '९',
-        0: '०',
-    },
-    numberMap = {
-        '१': '1',
-        '२': '2',
-        '३': '3',
-        '४': '4',
-        '५': '5',
-        '६': '6',
-        '७': '7',
-        '८': '8',
-        '९': '9',
-        '०': '0',
-    };
-
-export default moment.defineLocale('ne', {
-    months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
-        '_'
-    ),
-    monthsShort:
-        'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
-        '_'
-    ),
-    weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
-    weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'Aको h:mm बजे',
-        LTS: 'Aको h:mm:ss बजे',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, Aको h:mm बजे',
-        LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
-    },
-    preparse: function (string) {
-        return string.replace(/[१२३४५६७८९०]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'राति') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'बिहान') {
-            return hour;
-        } else if (meridiem === 'दिउँसो') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'साँझ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 3) {
-            return 'राति';
-        } else if (hour < 12) {
-            return 'बिहान';
-        } else if (hour < 16) {
-            return 'दिउँसो';
-        } else if (hour < 20) {
-            return 'साँझ';
-        } else {
-            return 'राति';
-        }
-    },
-    calendar: {
-        sameDay: '[आज] LT',
-        nextDay: '[भोलि] LT',
-        nextWeek: '[आउँदो] dddd[,] LT',
-        lastDay: '[हिजो] LT',
-        lastWeek: '[गएको] dddd[,] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sमा',
-        past: '%s अगाडि',
-        s: 'केही क्षण',
-        ss: '%d सेकेण्ड',
-        m: 'एक मिनेट',
-        mm: '%d मिनेट',
-        h: 'एक घण्टा',
-        hh: '%d घण्टा',
-        d: 'एक दिन',
-        dd: '%d दिन',
-        M: 'एक महिना',
-        MM: '%d महिना',
-        y: 'एक बर्ष',
-        yy: '%d बर्ष',
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/nl-be.js
===================================================================
--- backend/node_modules/moment/src/locale/nl-be.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch (Belgium) [nl-be]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    monthsParse = [
-        /^jan/i,
-        /^feb/i,
-        /^(maart|mrt\.?)$/i,
-        /^apr/i,
-        /^mei$/i,
-        /^jun[i.]?$/i,
-        /^jul[i.]?$/i,
-        /^aug/i,
-        /^sep/i,
-        /^okt/i,
-        /^nov/i,
-        /^dec/i,
-    ],
-    monthsRegex =
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-export default moment.defineLocale('nl-be', {
-    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-    monthsShortStrictRegex:
-        /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    weekdays:
-        'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[vandaag om] LT',
-        nextDay: '[morgen om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[gisteren om] LT',
-        lastWeek: '[afgelopen] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'over %s',
-        past: '%s geleden',
-        s: 'een paar seconden',
-        ss: '%d seconden',
-        m: 'één minuut',
-        mm: '%d minuten',
-        h: 'één uur',
-        hh: '%d uur',
-        d: 'één dag',
-        dd: '%d dagen',
-        M: 'één maand',
-        MM: '%d maanden',
-        y: 'één jaar',
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/nl.js
===================================================================
--- backend/node_modules/moment/src/locale/nl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,104 +1,0 @@
-//! moment.js locale configuration
-//! locale : Dutch [nl]
-//! author : Joris Röling : https://github.com/jorisroling
-//! author : Jacob Middag : https://github.com/middagj
-
-import moment from '../moment';
-
-var monthsShortWithDots =
-        'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
-    monthsShortWithoutDots =
-        'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    monthsParse = [
-        /^jan/i,
-        /^feb/i,
-        /^(maart|mrt\.?)$/i,
-        /^apr/i,
-        /^mei$/i,
-        /^jun[i.]?$/i,
-        /^jul[i.]?$/i,
-        /^aug/i,
-        /^sep/i,
-        /^okt/i,
-        /^nov/i,
-        /^dec/i,
-    ],
-    monthsRegex =
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
-
-export default moment.defineLocale('nl', {
-    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: function (m, format) {
-        if (!m) {
-            return monthsShortWithDots;
-        } else if (/-MMM-/.test(format)) {
-            return monthsShortWithoutDots[m.month()];
-        } else {
-            return monthsShortWithDots[m.month()];
-        }
-    },
-
-    monthsRegex: monthsRegex,
-    monthsShortRegex: monthsRegex,
-    monthsStrictRegex:
-        /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
-    monthsShortStrictRegex:
-        /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
-
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    weekdays:
-        'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
-    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
-    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD-MM-YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[vandaag om] LT',
-        nextDay: '[morgen om] LT',
-        nextWeek: 'dddd [om] LT',
-        lastDay: '[gisteren om] LT',
-        lastWeek: '[afgelopen] dddd [om] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'over %s',
-        past: '%s geleden',
-        s: 'een paar seconden',
-        ss: '%d seconden',
-        m: 'één minuut',
-        mm: '%d minuten',
-        h: 'één uur',
-        hh: '%d uur',
-        d: 'één dag',
-        dd: '%d dagen',
-        w: 'één week',
-        ww: '%d weken',
-        M: 'één maand',
-        MM: '%d maanden',
-        y: 'één jaar',
-        yy: '%d jaar',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
-    ordinal: function (number) {
-        return (
-            number +
-            (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
-        );
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/nn.js
===================================================================
--- backend/node_modules/moment/src/locale/nn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,59 +1,0 @@
-//! moment.js locale configuration
-//! locale : Nynorsk [nn]
-//! authors : https://github.com/mechuwind
-//!           Stephen Ramthun : https://github.com/stephenramthun
-
-import moment from '../moment';
-
-export default moment.defineLocale('nn', {
-    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
-    weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
-    weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY [kl.] H:mm',
-        LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[I dag klokka] LT',
-        nextDay: '[I morgon klokka] LT',
-        nextWeek: 'dddd [klokka] LT',
-        lastDay: '[I går klokka] LT',
-        lastWeek: '[Føregåande] dddd [klokka] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: '%s sidan',
-        s: 'nokre sekund',
-        ss: '%d sekund',
-        m: 'eit minutt',
-        mm: '%d minutt',
-        h: 'ein time',
-        hh: '%d timar',
-        d: 'ein dag',
-        dd: '%d dagar',
-        w: 'ei veke',
-        ww: '%d veker',
-        M: 'ein månad',
-        MM: '%d månader',
-        y: 'eit år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/oc-lnc.js
===================================================================
--- backend/node_modules/moment/src/locale/oc-lnc.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//! moment.js locale configuration
-//! locale : Occitan, lengadocian dialecte [oc-lnc]
-//! author : Quentin PAGÈS : https://github.com/Quenty31
-
-import moment from '../moment';
-
-export default moment.defineLocale('oc-lnc', {
-    months: {
-        standalone:
-            'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
-                '_'
-            ),
-        format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
-            '_'
-        ),
-        isFormat: /D[oD]?(\s)+MMMM/,
-    },
-    monthsShort:
-        'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
-        '_'
-    ),
-    weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
-    weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [de] YYYY',
-        ll: 'D MMM YYYY',
-        LLL: 'D MMMM [de] YYYY [a] H:mm',
-        lll: 'D MMM YYYY, H:mm',
-        LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
-        llll: 'ddd D MMM YYYY, H:mm',
-    },
-    calendar: {
-        sameDay: '[uèi a] LT',
-        nextDay: '[deman a] LT',
-        nextWeek: 'dddd [a] LT',
-        lastDay: '[ièr a] LT',
-        lastWeek: 'dddd [passat a] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: "d'aquí %s",
-        past: 'fa %s',
-        s: 'unas segondas',
-        ss: '%d segondas',
-        m: 'una minuta',
-        mm: '%d minutas',
-        h: 'una ora',
-        hh: '%d oras',
-        d: 'un jorn',
-        dd: '%d jorns',
-        M: 'un mes',
-        MM: '%d meses',
-        y: 'un an',
-        yy: '%d ans',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
-    ordinal: function (number, period) {
-        var output =
-            number === 1
-                ? 'r'
-                : number === 2
-                  ? 'n'
-                  : number === 3
-                    ? 'r'
-                    : number === 4
-                      ? 't'
-                      : 'è';
-        if (period === 'w' || period === 'W') {
-            output = 'a';
-        }
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4,
-    },
-});
Index: ckend/node_modules/moment/src/locale/pa-in.js
===================================================================
--- backend/node_modules/moment/src/locale/pa-in.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-//! moment.js locale configuration
-//! locale : Punjabi (India) [pa-in]
-//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '੧',
-        2: '੨',
-        3: '੩',
-        4: '੪',
-        5: '੫',
-        6: '੬',
-        7: '੭',
-        8: '੮',
-        9: '੯',
-        0: '੦',
-    },
-    numberMap = {
-        '੧': '1',
-        '੨': '2',
-        '੩': '3',
-        '੪': '4',
-        '੫': '5',
-        '੬': '6',
-        '੭': '7',
-        '੮': '8',
-        '੯': '9',
-        '੦': '0',
-    };
-
-export default moment.defineLocale('pa-in', {
-    // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
-    months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
-            '_'
-        ),
-    weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
-        '_'
-    ),
-    weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-    weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm ਵਜੇ',
-        LTS: 'A h:mm:ss ਵਜੇ',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
-    },
-    calendar: {
-        sameDay: '[ਅਜ] LT',
-        nextDay: '[ਕਲ] LT',
-        nextWeek: '[ਅਗਲਾ] dddd, LT',
-        lastDay: '[ਕਲ] LT',
-        lastWeek: '[ਪਿਛਲੇ] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s ਵਿੱਚ',
-        past: '%s ਪਿਛਲੇ',
-        s: 'ਕੁਝ ਸਕਿੰਟ',
-        ss: '%d ਸਕਿੰਟ',
-        m: 'ਇਕ ਮਿੰਟ',
-        mm: '%d ਮਿੰਟ',
-        h: 'ਇੱਕ ਘੰਟਾ',
-        hh: '%d ਘੰਟੇ',
-        d: 'ਇੱਕ ਦਿਨ',
-        dd: '%d ਦਿਨ',
-        M: 'ਇੱਕ ਮਹੀਨਾ',
-        MM: '%d ਮਹੀਨੇ',
-        y: 'ਇੱਕ ਸਾਲ',
-        yy: '%d ਸਾਲ',
-    },
-    preparse: function (string) {
-        return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
-    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
-    meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ਰਾਤ') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ਸਵੇਰ') {
-            return hour;
-        } else if (meridiem === 'ਦੁਪਹਿਰ') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'ਸ਼ਾਮ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ਰਾਤ';
-        } else if (hour < 10) {
-            return 'ਸਵੇਰ';
-        } else if (hour < 17) {
-            return 'ਦੁਪਹਿਰ';
-        } else if (hour < 20) {
-            return 'ਸ਼ਾਮ';
-        } else {
-            return 'ਰਾਤ';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/pl.js
===================================================================
--- backend/node_modules/moment/src/locale/pl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-//! moment.js locale configuration
-//! locale : Polish [pl]
-//! author : Rafal Hirsz : https://github.com/evoL
-
-import moment from '../moment';
-
-var monthsNominative =
-        'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
-            '_'
-        ),
-    monthsSubjective =
-        'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
-            '_'
-        ),
-    monthsParse = [
-        /^sty/i,
-        /^lut/i,
-        /^mar/i,
-        /^kwi/i,
-        /^maj/i,
-        /^cze/i,
-        /^lip/i,
-        /^sie/i,
-        /^wrz/i,
-        /^paź/i,
-        /^lis/i,
-        /^gru/i,
-    ];
-function plural(n) {
-    return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
-}
-function translate(number, withoutSuffix, key) {
-    var result = number + ' ';
-    switch (key) {
-        case 'ss':
-            return result + (plural(number) ? 'sekundy' : 'sekund');
-        case 'm':
-            return withoutSuffix ? 'minuta' : 'minutę';
-        case 'mm':
-            return result + (plural(number) ? 'minuty' : 'minut');
-        case 'h':
-            return withoutSuffix ? 'godzina' : 'godzinę';
-        case 'hh':
-            return result + (plural(number) ? 'godziny' : 'godzin');
-        case 'ww':
-            return result + (plural(number) ? 'tygodnie' : 'tygodni');
-        case 'MM':
-            return result + (plural(number) ? 'miesiące' : 'miesięcy');
-        case 'yy':
-            return result + (plural(number) ? 'lata' : 'lat');
-    }
-}
-
-export default moment.defineLocale('pl', {
-    months: function (momentToFormat, format) {
-        if (!momentToFormat) {
-            return monthsNominative;
-        } else if (/D MMMM/.test(format)) {
-            return monthsSubjective[momentToFormat.month()];
-        } else {
-            return monthsNominative[momentToFormat.month()];
-        }
-    },
-    monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-    weekdays:
-        'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
-    weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
-    weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Dziś o] LT',
-        nextDay: '[Jutro o] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[W niedzielę o] LT';
-
-                case 2:
-                    return '[We wtorek o] LT';
-
-                case 3:
-                    return '[W środę o] LT';
-
-                case 6:
-                    return '[W sobotę o] LT';
-
-                default:
-                    return '[W] dddd [o] LT';
-            }
-        },
-        lastDay: '[Wczoraj o] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[W zeszłą niedzielę o] LT';
-                case 3:
-                    return '[W zeszłą środę o] LT';
-                case 6:
-                    return '[W zeszłą sobotę o] LT';
-                default:
-                    return '[W zeszły] dddd [o] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: '%s temu',
-        s: 'kilka sekund',
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: '1 dzień',
-        dd: '%d dni',
-        w: 'tydzień',
-        ww: translate,
-        M: 'miesiąc',
-        MM: translate,
-        y: 'rok',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/pt-br.js
===================================================================
--- backend/node_modules/moment/src/locale/pt-br.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese (Brazil) [pt-br]
-//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
-
-import moment from '../moment';
-
-export default moment.defineLocale('pt-br', {
-    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-    weekdays:
-        'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
-            '_'
-        ),
-    weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
-    weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hoje às] LT',
-        nextDay: '[Amanhã às] LT',
-        nextWeek: 'dddd [às] LT',
-        lastDay: '[Ontem às] LT',
-        lastWeek: function () {
-            return this.day() === 0 || this.day() === 6
-                ? '[Último] dddd [às] LT' // Saturday + Sunday
-                : '[Última] dddd [às] LT'; // Monday - Friday
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'em %s',
-        past: 'há %s',
-        s: 'poucos segundos',
-        ss: '%d segundos',
-        m: 'um minuto',
-        mm: '%d minutos',
-        h: 'uma hora',
-        hh: '%d horas',
-        d: 'um dia',
-        dd: '%d dias',
-        M: 'um mês',
-        MM: '%d meses',
-        y: 'um ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    invalidDate: 'Data inválida',
-});
Index: ckend/node_modules/moment/src/locale/pt.js
===================================================================
--- backend/node_modules/moment/src/locale/pt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-//! moment.js locale configuration
-//! locale : Portuguese [pt]
-//! author : Jefferson : https://github.com/jalex79
-
-import moment from '../moment';
-
-export default moment.defineLocale('pt', {
-    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
-        '_'
-    ),
-    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
-    weekdays:
-        'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
-            '_'
-        ),
-    weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
-    weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D [de] MMMM [de] YYYY',
-        LLL: 'D [de] MMMM [de] YYYY HH:mm',
-        LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hoje às] LT',
-        nextDay: '[Amanhã às] LT',
-        nextWeek: 'dddd [às] LT',
-        lastDay: '[Ontem às] LT',
-        lastWeek: function () {
-            return this.day() === 0 || this.day() === 6
-                ? '[Último] dddd [às] LT' // Saturday + Sunday
-                : '[Última] dddd [às] LT'; // Monday - Friday
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'em %s',
-        past: 'há %s',
-        s: 'segundos',
-        ss: '%d segundos',
-        m: 'um minuto',
-        mm: '%d minutos',
-        h: 'uma hora',
-        hh: '%d horas',
-        d: 'um dia',
-        dd: '%d dias',
-        w: 'uma semana',
-        ww: '%d semanas',
-        M: 'um mês',
-        MM: '%d meses',
-        y: 'um ano',
-        yy: '%d anos',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}º/,
-    ordinal: '%dº',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ro.js
===================================================================
--- backend/node_modules/moment/src/locale/ro.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-//! moment.js locale configuration
-//! locale : Romanian [ro]
-//! author : Vlad Gurdiga : https://github.com/gurdiga
-//! author : Valentin Agachi : https://github.com/avaly
-//! author : Emanuel Cepoi : https://github.com/cepem
-
-import moment from '../moment';
-
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-            ss: 'secunde',
-            mm: 'minute',
-            hh: 'ore',
-            dd: 'zile',
-            ww: 'săptămâni',
-            MM: 'luni',
-            yy: 'ani',
-        },
-        separator = ' ';
-    if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
-        separator = ' de ';
-    }
-    return number + separator + format[key];
-}
-
-export default moment.defineLocale('ro', {
-    months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
-        '_'
-    ),
-    monthsShort:
-        'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
-    weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
-    weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY H:mm',
-        LLLL: 'dddd, D MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[azi la] LT',
-        nextDay: '[mâine la] LT',
-        nextWeek: 'dddd [la] LT',
-        lastDay: '[ieri la] LT',
-        lastWeek: '[fosta] dddd [la] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'peste %s',
-        past: '%s în urmă',
-        s: 'câteva secunde',
-        ss: relativeTimeWithPlural,
-        m: 'un minut',
-        mm: relativeTimeWithPlural,
-        h: 'o oră',
-        hh: relativeTimeWithPlural,
-        d: 'o zi',
-        dd: relativeTimeWithPlural,
-        w: 'o săptămână',
-        ww: relativeTimeWithPlural,
-        M: 'o lună',
-        MM: relativeTimeWithPlural,
-        y: 'un an',
-        yy: relativeTimeWithPlural,
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ru.js
===================================================================
--- backend/node_modules/moment/src/locale/ru.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,213 +1,0 @@
-//! moment.js locale configuration
-//! locale : Russian [ru]
-//! author : Viktorminator : https://github.com/Viktorminator
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Коренберг Марк : https://github.com/socketpair
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
-        mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
-        hh: 'час_часа_часов',
-        dd: 'день_дня_дней',
-        ww: 'неделя_недели_недель',
-        MM: 'месяц_месяца_месяцев',
-        yy: 'год_года_лет',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'минута' : 'минуту';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-var monthsParse = [
-    /^янв/i,
-    /^фев/i,
-    /^мар/i,
-    /^апр/i,
-    /^ма[йя]/i,
-    /^июн/i,
-    /^июл/i,
-    /^авг/i,
-    /^сен/i,
-    /^окт/i,
-    /^ноя/i,
-    /^дек/i,
-];
-
-// http://new.gramota.ru/spravka/rules/139-prop : § 103
-// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
-// CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
-export default moment.defineLocale('ru', {
-    months: {
-        format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
-            '_'
-        ),
-        standalone:
-            'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
-                '_'
-            ),
-    },
-    monthsShort: {
-        // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
-        format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
-            '_'
-        ),
-        standalone:
-            'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
-                '_'
-            ),
-    },
-    weekdays: {
-        standalone:
-            'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
-                '_'
-            ),
-        format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
-            '_'
-        ),
-        isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
-    },
-    weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-    weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
-    monthsParse: monthsParse,
-    longMonthsParse: monthsParse,
-    shortMonthsParse: monthsParse,
-
-    // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
-    monthsRegex:
-        /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-    // копия предыдущего
-    monthsShortRegex:
-        /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
-
-    // полные названия с падежами
-    monthsStrictRegex:
-        /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
-
-    // Выражение, которое соответствует только сокращённым формам
-    monthsShortStrictRegex:
-        /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY г.',
-        LLL: 'D MMMM YYYY г., H:mm',
-        LLLL: 'dddd, D MMMM YYYY г., H:mm',
-    },
-    calendar: {
-        sameDay: '[Сегодня, в] LT',
-        nextDay: '[Завтра, в] LT',
-        lastDay: '[Вчера, в] LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                switch (this.day()) {
-                    case 0:
-                        return '[В следующее] dddd, [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[В следующий] dddd, [в] LT';
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[В следующую] dddd, [в] LT';
-                }
-            } else {
-                if (this.day() === 2) {
-                    return '[Во] dddd, [в] LT';
-                } else {
-                    return '[В] dddd, [в] LT';
-                }
-            }
-        },
-        lastWeek: function (now) {
-            if (now.week() !== this.week()) {
-                switch (this.day()) {
-                    case 0:
-                        return '[В прошлое] dddd, [в] LT';
-                    case 1:
-                    case 2:
-                    case 4:
-                        return '[В прошлый] dddd, [в] LT';
-                    case 3:
-                    case 5:
-                    case 6:
-                        return '[В прошлую] dddd, [в] LT';
-                }
-            } else {
-                if (this.day() === 2) {
-                    return '[Во] dddd, [в] LT';
-                } else {
-                    return '[В] dddd, [в] LT';
-                }
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'через %s',
-        past: '%s назад',
-        s: 'несколько секунд',
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: 'час',
-        hh: relativeTimeWithPlural,
-        d: 'день',
-        dd: relativeTimeWithPlural,
-        w: 'неделя',
-        ww: relativeTimeWithPlural,
-        M: 'месяц',
-        MM: relativeTimeWithPlural,
-        y: 'год',
-        yy: relativeTimeWithPlural,
-    },
-    meridiemParse: /ночи|утра|дня|вечера/i,
-    isPM: function (input) {
-        return /^(дня|вечера)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночи';
-        } else if (hour < 12) {
-            return 'утра';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечера';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-                return number + '-й';
-            case 'D':
-                return number + '-го';
-            case 'w':
-            case 'W':
-                return number + '-я';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sd.js
===================================================================
--- backend/node_modules/moment/src/locale/sd.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,81 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sindhi [sd]
-//! author : Narain Sagar : https://github.com/narainsagar
-
-import moment from '../moment';
-
-var months = [
-        'جنوري',
-        'فيبروري',
-        'مارچ',
-        'اپريل',
-        'مئي',
-        'جون',
-        'جولاءِ',
-        'آگسٽ',
-        'سيپٽمبر',
-        'آڪٽوبر',
-        'نومبر',
-        'ڊسمبر',
-    ],
-    days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
-
-export default moment.defineLocale('sd', {
-    months: months,
-    monthsShort: months,
-    weekdays: days,
-    weekdaysShort: days,
-    weekdaysMin: days,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd، D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /صبح|شام/,
-    isPM: function (input) {
-        return 'شام' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'صبح';
-        }
-        return 'شام';
-    },
-    calendar: {
-        sameDay: '[اڄ] LT',
-        nextDay: '[سڀاڻي] LT',
-        nextWeek: 'dddd [اڳين هفتي تي] LT',
-        lastDay: '[ڪالهه] LT',
-        lastWeek: '[گزريل هفتي] dddd [تي] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s پوء',
-        past: '%s اڳ',
-        s: 'چند سيڪنڊ',
-        ss: '%d سيڪنڊ',
-        m: 'هڪ منٽ',
-        mm: '%d منٽ',
-        h: 'هڪ ڪلاڪ',
-        hh: '%d ڪلاڪ',
-        d: 'هڪ ڏينهن',
-        dd: '%d ڏينهن',
-        M: 'هڪ مهينو',
-        MM: '%d مهينا',
-        y: 'هڪ سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/se.js
===================================================================
--- backend/node_modules/moment/src/locale/se.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Northern Sami [se]
-//! authors : Bård Rolstad Henriksen : https://github.com/karamell
-
-import moment from '../moment';
-
-export default moment.defineLocale('se', {
-    months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
-        '_'
-    ),
-    monthsShort:
-        'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
-    weekdays:
-        'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
-            '_'
-        ),
-    weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
-    weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'MMMM D. [b.] YYYY',
-        LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
-        LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
-    },
-    calendar: {
-        sameDay: '[otne ti] LT',
-        nextDay: '[ihttin ti] LT',
-        nextWeek: 'dddd [ti] LT',
-        lastDay: '[ikte ti] LT',
-        lastWeek: '[ovddit] dddd [ti] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s geažes',
-        past: 'maŋit %s',
-        s: 'moadde sekunddat',
-        ss: '%d sekunddat',
-        m: 'okta minuhta',
-        mm: '%d minuhtat',
-        h: 'okta diimmu',
-        hh: '%d diimmut',
-        d: 'okta beaivi',
-        dd: '%d beaivvit',
-        M: 'okta mánnu',
-        MM: '%d mánut',
-        y: 'okta jahki',
-        yy: '%d jagit',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/si.js
===================================================================
--- backend/node_modules/moment/src/locale/si.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-//! moment.js locale configuration
-//! locale : Sinhalese [si]
-//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
-
-import moment from '../moment';
-
-/*jshint -W100*/
-export default moment.defineLocale('si', {
-    months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
-        '_'
-    ),
-    monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
-        '_'
-    ),
-    weekdays:
-        'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
-            '_'
-        ),
-    weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
-    weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'a h:mm',
-        LTS: 'a h:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY MMMM D',
-        LLL: 'YYYY MMMM D, a h:mm',
-        LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
-    },
-    calendar: {
-        sameDay: '[අද] LT[ට]',
-        nextDay: '[හෙට] LT[ට]',
-        nextWeek: 'dddd LT[ට]',
-        lastDay: '[ඊයේ] LT[ට]',
-        lastWeek: '[පසුගිය] dddd LT[ට]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%sකින්',
-        past: '%sකට පෙර',
-        s: 'තත්පර කිහිපය',
-        ss: 'තත්පර %d',
-        m: 'මිනිත්තුව',
-        mm: 'මිනිත්තු %d',
-        h: 'පැය',
-        hh: 'පැය %d',
-        d: 'දිනය',
-        dd: 'දින %d',
-        M: 'මාසය',
-        MM: 'මාස %d',
-        y: 'වසර',
-        yy: 'වසර %d',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
-    ordinal: function (number) {
-        return number + ' වැනි';
-    },
-    meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
-    isPM: function (input) {
-        return input === 'ප.ව.' || input === 'පස් වරු';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? 'ප.ව.' : 'පස් වරු';
-        } else {
-            return isLower ? 'පෙ.ව.' : 'පෙර වරු';
-        }
-    },
-});
Index: ckend/node_modules/moment/src/locale/sk.js
===================================================================
--- backend/node_modules/moment/src/locale/sk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,145 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovak [sk]
-//! author : Martin Minka : https://github.com/k2s
-//! based on work of petrbela : https://github.com/petrbela
-
-import moment from '../moment';
-
-var months =
-        'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
-            '_'
-        ),
-    monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
-function plural(n) {
-    return n > 1 && n < 5;
-}
-function translate(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's': // a few seconds / in a few seconds / a few seconds ago
-            return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
-        case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'sekundy' : 'sekúnd');
-            } else {
-                return result + 'sekundami';
-            }
-        case 'm': // a minute / in a minute / a minute ago
-            return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
-        case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'minúty' : 'minút');
-            } else {
-                return result + 'minútami';
-            }
-        case 'h': // an hour / in an hour / an hour ago
-            return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
-        case 'hh': // 9 hours / in 9 hours / 9 hours ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'hodiny' : 'hodín');
-            } else {
-                return result + 'hodinami';
-            }
-        case 'd': // a day / in a day / a day ago
-            return withoutSuffix || isFuture ? 'deň' : 'dňom';
-        case 'dd': // 9 days / in 9 days / 9 days ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'dni' : 'dní');
-            } else {
-                return result + 'dňami';
-            }
-        case 'M': // a month / in a month / a month ago
-            return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
-        case 'MM': // 9 months / in 9 months / 9 months ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'mesiace' : 'mesiacov');
-            } else {
-                return result + 'mesiacmi';
-            }
-        case 'y': // a year / in a year / a year ago
-            return withoutSuffix || isFuture ? 'rok' : 'rokom';
-        case 'yy': // 9 years / in 9 years / 9 years ago
-            if (withoutSuffix || isFuture) {
-                return result + (plural(number) ? 'roky' : 'rokov');
-            } else {
-                return result + 'rokmi';
-            }
-    }
-}
-
-export default moment.defineLocale('sk', {
-    months: months,
-    monthsShort: monthsShort,
-    weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
-    weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
-    weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[dnes o] LT',
-        nextDay: '[zajtra o] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v nedeľu o] LT';
-                case 1:
-                case 2:
-                    return '[v] dddd [o] LT';
-                case 3:
-                    return '[v stredu o] LT';
-                case 4:
-                    return '[vo štvrtok o] LT';
-                case 5:
-                    return '[v piatok o] LT';
-                case 6:
-                    return '[v sobotu o] LT';
-            }
-        },
-        lastDay: '[včera o] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[minulú nedeľu o] LT';
-                case 1:
-                case 2:
-                    return '[minulý] dddd [o] LT';
-                case 3:
-                    return '[minulú stredu o] LT';
-                case 4:
-                case 5:
-                    return '[minulý] dddd [o] LT';
-                case 6:
-                    return '[minulú sobotu o] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'pred %s',
-        s: translate,
-        ss: translate,
-        m: translate,
-        mm: translate,
-        h: translate,
-        hh: translate,
-        d: translate,
-        dd: translate,
-        M: translate,
-        MM: translate,
-        y: translate,
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sl.js
===================================================================
--- backend/node_modules/moment/src/locale/sl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-//! moment.js locale configuration
-//! locale : Slovenian [sl]
-//! author : Robert Sedovšek : https://github.com/sedovsek
-
-import moment from '../moment';
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var result = number + ' ';
-    switch (key) {
-        case 's':
-            return withoutSuffix || isFuture
-                ? 'nekaj sekund'
-                : 'nekaj sekundami';
-        case 'ss':
-            if (number === 1) {
-                result += withoutSuffix ? 'sekundo' : 'sekundi';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
-            } else {
-                result += 'sekund';
-            }
-            return result;
-        case 'm':
-            return withoutSuffix ? 'ena minuta' : 'eno minuto';
-        case 'mm':
-            if (number === 1) {
-                result += withoutSuffix ? 'minuta' : 'minuto';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'minute' : 'minutami';
-            } else {
-                result += withoutSuffix || isFuture ? 'minut' : 'minutami';
-            }
-            return result;
-        case 'h':
-            return withoutSuffix ? 'ena ura' : 'eno uro';
-        case 'hh':
-            if (number === 1) {
-                result += withoutSuffix ? 'ura' : 'uro';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'uri' : 'urama';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'ure' : 'urami';
-            } else {
-                result += withoutSuffix || isFuture ? 'ur' : 'urami';
-            }
-            return result;
-        case 'd':
-            return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
-        case 'dd':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'dan' : 'dnem';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
-            } else {
-                result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
-            }
-            return result;
-        case 'M':
-            return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
-        case 'MM':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
-            } else {
-                result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
-            }
-            return result;
-        case 'y':
-            return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
-        case 'yy':
-            if (number === 1) {
-                result += withoutSuffix || isFuture ? 'leto' : 'letom';
-            } else if (number === 2) {
-                result += withoutSuffix || isFuture ? 'leti' : 'letoma';
-            } else if (number < 5) {
-                result += withoutSuffix || isFuture ? 'leta' : 'leti';
-            } else {
-                result += withoutSuffix || isFuture ? 'let' : 'leti';
-            }
-            return result;
-    }
-}
-
-export default moment.defineLocale('sl', {
-    months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
-    weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
-    weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD. MM. YYYY',
-        LL: 'D. MMMM YYYY',
-        LLL: 'D. MMMM YYYY H:mm',
-        LLLL: 'dddd, D. MMMM YYYY H:mm',
-    },
-    calendar: {
-        sameDay: '[danes ob] LT',
-        nextDay: '[jutri ob] LT',
-
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[v] [nedeljo] [ob] LT';
-                case 3:
-                    return '[v] [sredo] [ob] LT';
-                case 6:
-                    return '[v] [soboto] [ob] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[v] dddd [ob] LT';
-            }
-        },
-        lastDay: '[včeraj ob] LT',
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[prejšnjo] [nedeljo] [ob] LT';
-                case 3:
-                    return '[prejšnjo] [sredo] [ob] LT';
-                case 6:
-                    return '[prejšnjo] [soboto] [ob] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[prejšnji] dddd [ob] LT';
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'čez %s',
-        past: 'pred %s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sq.js
===================================================================
--- backend/node_modules/moment/src/locale/sq.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Albanian [sq]
-//! author : Flakërim Ismani : https://github.com/flakerimi
-//! author : Menelion Elensúle : https://github.com/Oire
-//! author : Oerd Cukalla : https://github.com/oerd
-
-import moment from '../moment';
-
-export default moment.defineLocale('sq', {
-    months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
-    weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
-        '_'
-    ),
-    weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
-    weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
-    weekdaysParseExact: true,
-    meridiemParse: /PD|MD/,
-    isPM: function (input) {
-        return input.charAt(0) === 'M';
-    },
-    meridiem: function (hours, minutes, isLower) {
-        return hours < 12 ? 'PD' : 'MD';
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Sot në] LT',
-        nextDay: '[Nesër në] LT',
-        nextWeek: 'dddd [në] LT',
-        lastDay: '[Dje në] LT',
-        lastWeek: 'dddd [e kaluar në] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'në %s',
-        past: '%s më parë',
-        s: 'disa sekonda',
-        ss: '%d sekonda',
-        m: 'një minutë',
-        mm: '%d minuta',
-        h: 'një orë',
-        hh: '%d orë',
-        d: 'një ditë',
-        dd: '%d ditë',
-        M: 'një muaj',
-        MM: '%d muaj',
-        y: 'një vit',
-        yy: '%d vite',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sr-cyrl.js
===================================================================
--- backend/node_modules/moment/src/locale/sr-cyrl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,127 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian Cyrillic [sr-cyrl]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['секунда', 'секунде', 'секунди'],
-        m: ['један минут', 'једног минута'],
-        mm: ['минут', 'минута', 'минута'],
-        h: ['један сат', 'једног сата'],
-        hh: ['сат', 'сата', 'сати'],
-        d: ['један дан', 'једног дана'],
-        dd: ['дан', 'дана', 'дана'],
-        M: ['један месец', 'једног месеца'],
-        MM: ['месец', 'месеца', 'месеци'],
-        y: ['једну годину', 'једне године'],
-        yy: ['годину', 'године', 'година'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        if (
-            number % 10 >= 1 &&
-            number % 10 <= 4 &&
-            (number % 100 < 10 || number % 100 >= 20)
-        ) {
-            return number % 10 === 1 ? wordKey[0] : wordKey[1];
-        }
-        return wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key, isFuture) {
-        var wordKey = translator.words[key],
-            word;
-
-        if (key.length === 1) {
-            // Nominativ
-            if (key === 'y' && withoutSuffix) return 'једна година';
-            return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-        }
-
-        word = translator.correctGrammaticalCase(number, wordKey);
-        // Nominativ
-        if (key === 'yy' && withoutSuffix && word === 'годину') {
-            return number + ' година';
-        }
-
-        return number + ' ' + word;
-    },
-};
-
-export default moment.defineLocale('sr-cyrl', {
-    months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
-        '_'
-    ),
-    monthsShort:
-        'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
-    weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
-    weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D. M. YYYY.',
-        LL: 'D. MMMM YYYY.',
-        LLL: 'D. MMMM YYYY. H:mm',
-        LLLL: 'dddd, D. MMMM YYYY. H:mm',
-    },
-    calendar: {
-        sameDay: '[данас у] LT',
-        nextDay: '[сутра у] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[у] [недељу] [у] LT';
-                case 3:
-                    return '[у] [среду] [у] LT';
-                case 6:
-                    return '[у] [суботу] [у] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[у] dddd [у] LT';
-            }
-        },
-        lastDay: '[јуче у] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[прошле] [недеље] [у] LT',
-                '[прошлог] [понедељка] [у] LT',
-                '[прошлог] [уторка] [у] LT',
-                '[прошле] [среде] [у] LT',
-                '[прошлог] [четвртка] [у] LT',
-                '[прошлог] [петка] [у] LT',
-                '[прошле] [суботе] [у] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: 'пре %s',
-        s: 'неколико секунди',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: translator.translate,
-        dd: translator.translate,
-        M: translator.translate,
-        MM: translator.translate,
-        y: translator.translate,
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sr.js
===================================================================
--- backend/node_modules/moment/src/locale/sr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,129 +1,0 @@
-//! moment.js locale configuration
-//! locale : Serbian [sr]
-//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
-//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic
-
-import moment from '../moment';
-
-var translator = {
-    words: {
-        //Different grammatical cases
-        ss: ['sekunda', 'sekunde', 'sekundi'],
-        m: ['jedan minut', 'jednog minuta'],
-        mm: ['minut', 'minuta', 'minuta'],
-        h: ['jedan sat', 'jednog sata'],
-        hh: ['sat', 'sata', 'sati'],
-        d: ['jedan dan', 'jednog dana'],
-        dd: ['dan', 'dana', 'dana'],
-        M: ['jedan mesec', 'jednog meseca'],
-        MM: ['mesec', 'meseca', 'meseci'],
-        y: ['jednu godinu', 'jedne godine'],
-        yy: ['godinu', 'godine', 'godina'],
-    },
-    correctGrammaticalCase: function (number, wordKey) {
-        if (
-            number % 10 >= 1 &&
-            number % 10 <= 4 &&
-            (number % 100 < 10 || number % 100 >= 20)
-        ) {
-            return number % 10 === 1 ? wordKey[0] : wordKey[1];
-        }
-        return wordKey[2];
-    },
-    translate: function (number, withoutSuffix, key, isFuture) {
-        var wordKey = translator.words[key],
-            word;
-
-        if (key.length === 1) {
-            // Nominativ
-            if (key === 'y' && withoutSuffix) return 'jedna godina';
-            return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
-        }
-
-        word = translator.correctGrammaticalCase(number, wordKey);
-        // Nominativ
-        if (key === 'yy' && withoutSuffix && word === 'godinu') {
-            return number + ' godina';
-        }
-
-        return number + ' ' + word;
-    },
-};
-
-export default moment.defineLocale('sr', {
-    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
-        '_'
-    ),
-    monthsShort:
-        'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
-    monthsParseExact: true,
-    weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
-        '_'
-    ),
-    weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
-    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'D. M. YYYY.',
-        LL: 'D. MMMM YYYY.',
-        LLL: 'D. MMMM YYYY. H:mm',
-        LLLL: 'dddd, D. MMMM YYYY. H:mm',
-    },
-    calendar: {
-        sameDay: '[danas u] LT',
-        nextDay: '[sutra u] LT',
-        nextWeek: function () {
-            switch (this.day()) {
-                case 0:
-                    return '[u] [nedelju] [u] LT';
-                case 3:
-                    return '[u] [sredu] [u] LT';
-                case 6:
-                    return '[u] [subotu] [u] LT';
-                case 1:
-                case 2:
-                case 4:
-                case 5:
-                    return '[u] dddd [u] LT';
-            }
-        },
-        lastDay: '[juče u] LT',
-        lastWeek: function () {
-            var lastWeekDays = [
-                '[prošle] [nedelje] [u] LT',
-                '[prošlog] [ponedeljka] [u] LT',
-                '[prošlog] [utorka] [u] LT',
-                '[prošle] [srede] [u] LT',
-                '[prošlog] [četvrtka] [u] LT',
-                '[prošlog] [petka] [u] LT',
-                '[prošle] [subote] [u] LT',
-            ];
-            return lastWeekDays[this.day()];
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'za %s',
-        past: 'pre %s',
-        s: 'nekoliko sekundi',
-        ss: translator.translate,
-        m: translator.translate,
-        mm: translator.translate,
-        h: translator.translate,
-        hh: translator.translate,
-        d: translator.translate,
-        dd: translator.translate,
-        M: translator.translate,
-        MM: translator.translate,
-        y: translator.translate,
-        yy: translator.translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ss.js
===================================================================
--- backend/node_modules/moment/src/locale/ss.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-//! moment.js locale configuration
-//! locale : siSwati [ss]
-//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
-
-import moment from '../moment';
-
-export default moment.defineLocale('ss', {
-    months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
-        '_'
-    ),
-    monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
-    weekdays:
-        'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
-            '_'
-        ),
-    weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
-    weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Namuhla nga] LT',
-        nextDay: '[Kusasa nga] LT',
-        nextWeek: 'dddd [nga] LT',
-        lastDay: '[Itolo nga] LT',
-        lastWeek: 'dddd [leliphelile] [nga] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'nga %s',
-        past: 'wenteka nga %s',
-        s: 'emizuzwana lomcane',
-        ss: '%d mzuzwana',
-        m: 'umzuzu',
-        mm: '%d emizuzu',
-        h: 'lihora',
-        hh: '%d emahora',
-        d: 'lilanga',
-        dd: '%d emalanga',
-        M: 'inyanga',
-        MM: '%d tinyanga',
-        y: 'umnyaka',
-        yy: '%d iminyaka',
-    },
-    meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 11) {
-            return 'ekuseni';
-        } else if (hours < 15) {
-            return 'emini';
-        } else if (hours < 19) {
-            return 'entsambama';
-        } else {
-            return 'ebusuku';
-        }
-    },
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'ekuseni') {
-            return hour;
-        } else if (meridiem === 'emini') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
-            if (hour === 0) {
-                return 0;
-            }
-            return hour + 12;
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: '%d',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sv.js
===================================================================
--- backend/node_modules/moment/src/locale/sv.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swedish [sv]
-//! author : Jens Alm : https://github.com/ulmus
-
-import moment from '../moment';
-
-export default moment.defineLocale('sv', {
-    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
-        '_'
-    ),
-    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
-    weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
-    weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
-    weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY [kl.] HH:mm',
-        LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Idag] LT',
-        nextDay: '[Imorgon] LT',
-        lastDay: '[Igår] LT',
-        nextWeek: '[På] dddd LT',
-        lastWeek: '[I] dddd[s] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'om %s',
-        past: 'för %s sedan',
-        s: 'några sekunder',
-        ss: '%d sekunder',
-        m: 'en minut',
-        mm: '%d minuter',
-        h: 'en timme',
-        hh: '%d timmar',
-        d: 'en dag',
-        dd: '%d dagar',
-        M: 'en månad',
-        MM: '%d månader',
-        y: 'ett år',
-        yy: '%d år',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? ':e'
-                    : b === 1
-                      ? ':a'
-                      : b === 2
-                        ? ':a'
-                        : b === 3
-                          ? ':e'
-                          : ':e';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/sw.js
===================================================================
--- backend/node_modules/moment/src/locale/sw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-//! moment.js locale configuration
-//! locale : Swahili [sw]
-//! author : Fahad Kassim : https://github.com/fadsel
-
-import moment from '../moment';
-
-export default moment.defineLocale('sw', {
-    months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
-    weekdays:
-        'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
-            '_'
-        ),
-    weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
-    weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'hh:mm A',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[leo saa] LT',
-        nextDay: '[kesho saa] LT',
-        nextWeek: '[wiki ijayo] dddd [saat] LT',
-        lastDay: '[jana] LT',
-        lastWeek: '[wiki iliyopita] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s baadaye',
-        past: 'tokea %s',
-        s: 'hivi punde',
-        ss: 'sekunde %d',
-        m: 'dakika moja',
-        mm: 'dakika %d',
-        h: 'saa limoja',
-        hh: 'masaa %d',
-        d: 'siku moja',
-        dd: 'siku %d',
-        M: 'mwezi mmoja',
-        MM: 'miezi %d',
-        y: 'mwaka mmoja',
-        yy: 'miaka %d',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ta.js
===================================================================
--- backend/node_modules/moment/src/locale/ta.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tamil [ta]
-//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
-
-import moment from '../moment';
-
-var symbolMap = {
-        1: '௧',
-        2: '௨',
-        3: '௩',
-        4: '௪',
-        5: '௫',
-        6: '௬',
-        7: '௭',
-        8: '௮',
-        9: '௯',
-        0: '௦',
-    },
-    numberMap = {
-        '௧': '1',
-        '௨': '2',
-        '௩': '3',
-        '௪': '4',
-        '௫': '5',
-        '௬': '6',
-        '௭': '7',
-        '௮': '8',
-        '௯': '9',
-        '௦': '0',
-    };
-
-export default moment.defineLocale('ta', {
-    months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-        '_'
-    ),
-    monthsShort:
-        'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
-            '_'
-        ),
-    weekdays:
-        'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
-            '_'
-        ),
-    weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
-        '_'
-    ),
-    weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, HH:mm',
-        LLLL: 'dddd, D MMMM YYYY, HH:mm',
-    },
-    calendar: {
-        sameDay: '[இன்று] LT',
-        nextDay: '[நாளை] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[நேற்று] LT',
-        lastWeek: '[கடந்த வாரம்] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s இல்',
-        past: '%s முன்',
-        s: 'ஒரு சில விநாடிகள்',
-        ss: '%d விநாடிகள்',
-        m: 'ஒரு நிமிடம்',
-        mm: '%d நிமிடங்கள்',
-        h: 'ஒரு மணி நேரம்',
-        hh: '%d மணி நேரம்',
-        d: 'ஒரு நாள்',
-        dd: '%d நாட்கள்',
-        M: 'ஒரு மாதம்',
-        MM: '%d மாதங்கள்',
-        y: 'ஒரு வருடம்',
-        yy: '%d ஆண்டுகள்',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}வது/,
-    ordinal: function (number) {
-        return number + 'வது';
-    },
-    preparse: function (string) {
-        return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
-            return numberMap[match];
-        });
-    },
-    postformat: function (string) {
-        return string.replace(/\d/g, function (match) {
-            return symbolMap[match];
-        });
-    },
-    // refer http://ta.wikipedia.org/s/1er1
-    meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 2) {
-            return ' யாமம்';
-        } else if (hour < 6) {
-            return ' வைகறை'; // வைகறை
-        } else if (hour < 10) {
-            return ' காலை'; // காலை
-        } else if (hour < 14) {
-            return ' நண்பகல்'; // நண்பகல்
-        } else if (hour < 18) {
-            return ' எற்பாடு'; // எற்பாடு
-        } else if (hour < 22) {
-            return ' மாலை'; // மாலை
-        } else {
-            return ' யாமம்';
-        }
-    },
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'யாமம்') {
-            return hour < 2 ? hour : hour + 12;
-        } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
-            return hour;
-        } else if (meridiem === 'நண்பகல்') {
-            return hour >= 10 ? hour : hour + 12;
-        } else {
-            return hour + 12;
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/te.js
===================================================================
--- backend/node_modules/moment/src/locale/te.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,88 +1,0 @@
-//! moment.js locale configuration
-//! locale : Telugu [te]
-//! author : Krishna Chaitanya Thota : https://github.com/kcthota
-
-import moment from '../moment';
-
-export default moment.defineLocale('te', {
-    months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
-        '_'
-    ),
-    monthsShort:
-        'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
-            '_'
-        ),
-    weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
-    weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
-    longDateFormat: {
-        LT: 'A h:mm',
-        LTS: 'A h:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY, A h:mm',
-        LLLL: 'dddd, D MMMM YYYY, A h:mm',
-    },
-    calendar: {
-        sameDay: '[నేడు] LT',
-        nextDay: '[రేపు] LT',
-        nextWeek: 'dddd, LT',
-        lastDay: '[నిన్న] LT',
-        lastWeek: '[గత] dddd, LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s లో',
-        past: '%s క్రితం',
-        s: 'కొన్ని క్షణాలు',
-        ss: '%d సెకన్లు',
-        m: 'ఒక నిమిషం',
-        mm: '%d నిమిషాలు',
-        h: 'ఒక గంట',
-        hh: '%d గంటలు',
-        d: 'ఒక రోజు',
-        dd: '%d రోజులు',
-        M: 'ఒక నెల',
-        MM: '%d నెలలు',
-        y: 'ఒక సంవత్సరం',
-        yy: '%d సంవత్సరాలు',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}వ/,
-    ordinal: '%dవ',
-    meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'రాత్రి') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'ఉదయం') {
-            return hour;
-        } else if (meridiem === 'మధ్యాహ్నం') {
-            return hour >= 10 ? hour : hour + 12;
-        } else if (meridiem === 'సాయంత్రం') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'రాత్రి';
-        } else if (hour < 10) {
-            return 'ఉదయం';
-        } else if (hour < 17) {
-            return 'మధ్యాహ్నం';
-        } else if (hour < 20) {
-            return 'సాయంత్రం';
-        } else {
-            return 'రాత్రి';
-        }
-    },
-    week: {
-        dow: 0, // Sunday is the first day of the week.
-        doy: 6, // The week that contains Jan 6th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tet.js
===================================================================
--- backend/node_modules/moment/src/locale/tet.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tetun Dili (East Timor) [tet]
-//! author : Joshua Brooks : https://github.com/joshbrooks
-//! author : Onorio De J. Afonso : https://github.com/marobo
-//! author : Sonia Simoes : https://github.com/soniasimoes
-
-import moment from '../moment';
-
-export default moment.defineLocale('tet', {
-    months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
-    weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
-    weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
-    weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Ohin iha] LT',
-        nextDay: '[Aban iha] LT',
-        nextWeek: 'dddd [iha] LT',
-        lastDay: '[Horiseik iha] LT',
-        lastWeek: 'dddd [semana kotuk] [iha] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'iha %s',
-        past: '%s liuba',
-        s: 'segundu balun',
-        ss: 'segundu %d',
-        m: 'minutu ida',
-        mm: 'minutu %d',
-        h: 'oras ida',
-        hh: 'oras %d',
-        d: 'loron ida',
-        dd: 'loron %d',
-        M: 'fulan ida',
-        MM: 'fulan %d',
-        y: 'tinan ida',
-        yy: 'tinan %d',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tg.js
===================================================================
--- backend/node_modules/moment/src/locale/tg.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,117 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tajik [tg]
-//! author : Orif N. Jr. : https://github.com/orif-jr
-
-import moment from '../moment';
-
-var suffixes = {
-    0: '-ум',
-    1: '-ум',
-    2: '-юм',
-    3: '-юм',
-    4: '-ум',
-    5: '-ум',
-    6: '-ум',
-    7: '-ум',
-    8: '-ум',
-    9: '-ум',
-    10: '-ум',
-    12: '-ум',
-    13: '-ум',
-    20: '-ум',
-    30: '-юм',
-    40: '-ум',
-    50: '-ум',
-    60: '-ум',
-    70: '-ум',
-    80: '-ум',
-    90: '-ум',
-    100: '-ум',
-};
-
-export default moment.defineLocale('tg', {
-    months: {
-        format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
-            '_'
-        ),
-        standalone:
-            'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-    weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
-        '_'
-    ),
-    weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
-    weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Имрӯз соати] LT',
-        nextDay: '[Фардо соати] LT',
-        lastDay: '[Дирӯз соати] LT',
-        nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
-        lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'баъди %s',
-        past: '%s пеш',
-        s: 'якчанд сония',
-        m: 'як дақиқа',
-        mm: '%d дақиқа',
-        h: 'як соат',
-        hh: '%d соат',
-        d: 'як рӯз',
-        dd: '%d рӯз',
-        M: 'як моҳ',
-        MM: '%d моҳ',
-        y: 'як сол',
-        yy: '%d сол',
-    },
-    meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === 'шаб') {
-            return hour < 4 ? hour : hour + 12;
-        } else if (meridiem === 'субҳ') {
-            return hour;
-        } else if (meridiem === 'рӯз') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === 'бегоҳ') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'шаб';
-        } else if (hour < 11) {
-            return 'субҳ';
-        } else if (hour < 16) {
-            return 'рӯз';
-        } else if (hour < 19) {
-            return 'бегоҳ';
-        } else {
-            return 'шаб';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
-    ordinal: function (number) {
-        var a = number % 10,
-            b = number >= 100 ? 100 : null;
-        return number + (suffixes[number] || suffixes[a] || suffixes[b]);
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/th.js
===================================================================
--- backend/node_modules/moment/src/locale/th.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-//! moment.js locale configuration
-//! locale : Thai [th]
-//! author : Kridsada Thanabulpong : https://github.com/sirn
-
-import moment from '../moment';
-
-export default moment.defineLocale('th', {
-    months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
-        '_'
-    ),
-    monthsShort:
-        'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
-    weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
-    weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'H:mm',
-        LTS: 'H:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY เวลา H:mm',
-        LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
-    },
-    meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
-    isPM: function (input) {
-        return input === 'หลังเที่ยง';
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'ก่อนเที่ยง';
-        } else {
-            return 'หลังเที่ยง';
-        }
-    },
-    calendar: {
-        sameDay: '[วันนี้ เวลา] LT',
-        nextDay: '[พรุ่งนี้ เวลา] LT',
-        nextWeek: 'dddd[หน้า เวลา] LT',
-        lastDay: '[เมื่อวานนี้ เวลา] LT',
-        lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'อีก %s',
-        past: '%sที่แล้ว',
-        s: 'ไม่กี่วินาที',
-        ss: '%d วินาที',
-        m: '1 นาที',
-        mm: '%d นาที',
-        h: '1 ชั่วโมง',
-        hh: '%d ชั่วโมง',
-        d: '1 วัน',
-        dd: '%d วัน',
-        w: '1 สัปดาห์',
-        ww: '%d สัปดาห์',
-        M: '1 เดือน',
-        MM: '%d เดือน',
-        y: '1 ปี',
-        yy: '%d ปี',
-    },
-});
Index: ckend/node_modules/moment/src/locale/tk.js
===================================================================
--- backend/node_modules/moment/src/locale/tk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,91 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkmen [tk]
-//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
-
-import moment from '../moment';
-
-var suffixes = {
-    1: "'inji",
-    5: "'inji",
-    8: "'inji",
-    70: "'inji",
-    80: "'inji",
-    2: "'nji",
-    7: "'nji",
-    20: "'nji",
-    50: "'nji",
-    3: "'ünji",
-    4: "'ünji",
-    100: "'ünji",
-    6: "'njy",
-    9: "'unjy",
-    10: "'unjy",
-    30: "'unjy",
-    60: "'ynjy",
-    90: "'ynjy",
-};
-
-export default moment.defineLocale('tk', {
-    months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
-    weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
-        '_'
-    ),
-    weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
-    weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün sagat] LT',
-        nextDay: '[ertir sagat] LT',
-        nextWeek: '[indiki] dddd [sagat] LT',
-        lastDay: '[düýn] LT',
-        lastWeek: '[geçen] dddd [sagat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s soň',
-        past: '%s öň',
-        s: 'birnäçe sekunt',
-        m: 'bir minut',
-        mm: '%d minut',
-        h: 'bir sagat',
-        hh: '%d sagat',
-        d: 'bir gün',
-        dd: '%d gün',
-        M: 'bir aý',
-        MM: '%d aý',
-        y: 'bir ýyl',
-        yy: '%d ýyl',
-    },
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'Do':
-            case 'DD':
-                return number;
-            default:
-                if (number === 0) {
-                    // special case for zero
-                    return number + "'unjy";
-                }
-                var a = number % 10,
-                    b = (number % 100) - a,
-                    c = number >= 100 ? 100 : null;
-                return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tl-ph.js
===================================================================
--- backend/node_modules/moment/src/locale/tl-ph.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-//! moment.js locale configuration
-//! locale : Tagalog (Philippines) [tl-ph]
-//! author : Dan Hagman : https://github.com/hagmandan
-
-import moment from '../moment';
-
-export default moment.defineLocale('tl-ph', {
-    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
-        '_'
-    ),
-    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
-    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
-        '_'
-    ),
-    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
-    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'MM/D/YYYY',
-        LL: 'MMMM D, YYYY',
-        LLL: 'MMMM D, YYYY HH:mm',
-        LLLL: 'dddd, MMMM DD, YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: 'LT [ngayong araw]',
-        nextDay: '[Bukas ng] LT',
-        nextWeek: 'LT [sa susunod na] dddd',
-        lastDay: 'LT [kahapon]',
-        lastWeek: 'LT [noong nakaraang] dddd',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'sa loob ng %s',
-        past: '%s ang nakalipas',
-        s: 'ilang segundo',
-        ss: '%d segundo',
-        m: 'isang minuto',
-        mm: '%d minuto',
-        h: 'isang oras',
-        hh: '%d oras',
-        d: 'isang araw',
-        dd: '%d araw',
-        M: 'isang buwan',
-        MM: '%d buwan',
-        y: 'isang taon',
-        yy: '%d taon',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tlh.js
===================================================================
--- backend/node_modules/moment/src/locale/tlh.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-//! moment.js locale configuration
-//! locale : Klingon [tlh]
-//! author : Dominika Kruk : https://github.com/amaranthrose
-
-import moment from '../moment';
-
-var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
-
-function translateFuture(output) {
-    var time = output;
-    time =
-        output.indexOf('jaj') !== -1
-            ? time.slice(0, -3) + 'leS'
-            : output.indexOf('jar') !== -1
-              ? time.slice(0, -3) + 'waQ'
-              : output.indexOf('DIS') !== -1
-                ? time.slice(0, -3) + 'nem'
-                : time + ' pIq';
-    return time;
-}
-
-function translatePast(output) {
-    var time = output;
-    time =
-        output.indexOf('jaj') !== -1
-            ? time.slice(0, -3) + 'Hu’'
-            : output.indexOf('jar') !== -1
-              ? time.slice(0, -3) + 'wen'
-              : output.indexOf('DIS') !== -1
-                ? time.slice(0, -3) + 'ben'
-                : time + ' ret';
-    return time;
-}
-
-function translate(number, withoutSuffix, string, isFuture) {
-    var numberNoun = numberAsNoun(number);
-    switch (string) {
-        case 'ss':
-            return numberNoun + ' lup';
-        case 'mm':
-            return numberNoun + ' tup';
-        case 'hh':
-            return numberNoun + ' rep';
-        case 'dd':
-            return numberNoun + ' jaj';
-        case 'MM':
-            return numberNoun + ' jar';
-        case 'yy':
-            return numberNoun + ' DIS';
-    }
-}
-
-function numberAsNoun(number) {
-    var hundred = Math.floor((number % 1000) / 100),
-        ten = Math.floor((number % 100) / 10),
-        one = number % 10,
-        word = '';
-    if (hundred > 0) {
-        word += numbersNouns[hundred] + 'vatlh';
-    }
-    if (ten > 0) {
-        word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
-    }
-    if (one > 0) {
-        word += (word !== '' ? ' ' : '') + numbersNouns[one];
-    }
-    return word === '' ? 'pagh' : word;
-}
-
-export default moment.defineLocale('tlh', {
-    months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
-        '_'
-    ),
-    monthsShort:
-        'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
-        '_'
-    ),
-    weekdaysShort:
-        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-    weekdaysMin:
-        'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[DaHjaj] LT',
-        nextDay: '[wa’leS] LT',
-        nextWeek: 'LLL',
-        lastDay: '[wa’Hu’] LT',
-        lastWeek: 'LLL',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: translateFuture,
-        past: translatePast,
-        s: 'puS lup',
-        ss: translate,
-        m: 'wa’ tup',
-        mm: translate,
-        h: 'wa’ rep',
-        hh: translate,
-        d: 'wa’ jaj',
-        dd: translate,
-        M: 'wa’ jar',
-        MM: translate,
-        y: 'wa’ DIS',
-        yy: translate,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tr.js
===================================================================
--- backend/node_modules/moment/src/locale/tr.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-//! moment.js locale configuration
-//! locale : Turkish [tr]
-//! authors : Erhan Gundogan : https://github.com/erhangundogan,
-//!           Burak Yiğit Kaya: https://github.com/BYK
-
-import moment from '../moment';
-
-var suffixes = {
-    1: "'inci",
-    5: "'inci",
-    8: "'inci",
-    70: "'inci",
-    80: "'inci",
-    2: "'nci",
-    7: "'nci",
-    20: "'nci",
-    50: "'nci",
-    3: "'üncü",
-    4: "'üncü",
-    100: "'üncü",
-    6: "'ncı",
-    9: "'uncu",
-    10: "'uncu",
-    30: "'uncu",
-    60: "'ıncı",
-    90: "'ıncı",
-};
-
-export default moment.defineLocale('tr', {
-    months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
-        '_'
-    ),
-    monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
-    weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
-        '_'
-    ),
-    weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
-    weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'öö' : 'ÖÖ';
-        } else {
-            return isLower ? 'ös' : 'ÖS';
-        }
-    },
-    meridiemParse: /öö|ÖÖ|ös|ÖS/,
-    isPM: function (input) {
-        return input === 'ös' || input === 'ÖS';
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[bugün saat] LT',
-        nextDay: '[yarın saat] LT',
-        nextWeek: '[gelecek] dddd [saat] LT',
-        lastDay: '[dün] LT',
-        lastWeek: '[geçen] dddd [saat] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s sonra',
-        past: '%s önce',
-        s: 'birkaç saniye',
-        ss: '%d saniye',
-        m: 'bir dakika',
-        mm: '%d dakika',
-        h: 'bir saat',
-        hh: '%d saat',
-        d: 'bir gün',
-        dd: '%d gün',
-        w: 'bir hafta',
-        ww: '%d hafta',
-        M: 'bir ay',
-        MM: '%d ay',
-        y: 'bir yıl',
-        yy: '%d yıl',
-    },
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'Do':
-            case 'DD':
-                return number;
-            default:
-                if (number === 0) {
-                    // special case for zero
-                    return number + "'ıncı";
-                }
-                var a = number % 10,
-                    b = (number % 100) - a,
-                    c = number >= 100 ? 100 : null;
-                return number + (suffixes[a] || suffixes[b] || suffixes[c]);
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tzl.js
===================================================================
--- backend/node_modules/moment/src/locale/tzl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,89 +1,0 @@
-//! moment.js locale configuration
-//! locale : Talossan [tzl]
-//! author : Robin van der Vliet : https://github.com/robin0van0der0v
-//! author : Iustì Canun
-
-import moment from '../moment';
-
-// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
-// This is currently too difficult (maybe even impossible) to add.
-export default moment.defineLocale('tzl', {
-    months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
-        '_'
-    ),
-    monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
-    weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
-    weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
-    weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
-    longDateFormat: {
-        LT: 'HH.mm',
-        LTS: 'HH.mm.ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D. MMMM [dallas] YYYY',
-        LLL: 'D. MMMM [dallas] YYYY HH.mm',
-        LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
-    },
-    meridiemParse: /d\'o|d\'a/i,
-    isPM: function (input) {
-        return "d'o" === input.toLowerCase();
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours > 11) {
-            return isLower ? "d'o" : "D'O";
-        } else {
-            return isLower ? "d'a" : "D'A";
-        }
-    },
-    calendar: {
-        sameDay: '[oxhi à] LT',
-        nextDay: '[demà à] LT',
-        nextWeek: 'dddd [à] LT',
-        lastDay: '[ieiri à] LT',
-        lastWeek: '[sür el] dddd [lasteu à] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'osprei %s',
-        past: 'ja%s',
-        s: processRelativeTime,
-        ss: processRelativeTime,
-        m: processRelativeTime,
-        mm: processRelativeTime,
-        h: processRelativeTime,
-        hh: processRelativeTime,
-        d: processRelativeTime,
-        dd: processRelativeTime,
-        M: processRelativeTime,
-        MM: processRelativeTime,
-        y: processRelativeTime,
-        yy: processRelativeTime,
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}\./,
-    ordinal: '%d.',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
-
-function processRelativeTime(number, withoutSuffix, key, isFuture) {
-    var format = {
-        s: ['viensas secunds', "'iensas secunds"],
-        ss: [number + ' secunds', '' + number + ' secunds'],
-        m: ["'n míut", "'iens míut"],
-        mm: [number + ' míuts', '' + number + ' míuts'],
-        h: ["'n þora", "'iensa þora"],
-        hh: [number + ' þoras', '' + number + ' þoras'],
-        d: ["'n ziua", "'iensa ziua"],
-        dd: [number + ' ziuas', '' + number + ' ziuas'],
-        M: ["'n mes", "'iens mes"],
-        MM: [number + ' mesen', '' + number + ' mesen'],
-        y: ["'n ar", "'iens ar"],
-        yy: [number + ' ars', '' + number + ' ars'],
-    };
-    return isFuture
-        ? format[key][0]
-        : withoutSuffix
-          ? format[key][0]
-          : format[key][1];
-}
Index: ckend/node_modules/moment/src/locale/tzm-latn.js
===================================================================
--- backend/node_modules/moment/src/locale/tzm-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight Latin [tzm-latn]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('tzm-latn', {
-    months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-        '_'
-    ),
-    monthsShort:
-        'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
-            '_'
-        ),
-    weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[asdkh g] LT',
-        nextDay: '[aska g] LT',
-        nextWeek: 'dddd [g] LT',
-        lastDay: '[assant g] LT',
-        lastWeek: 'dddd [g] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'dadkh s yan %s',
-        past: 'yan %s',
-        s: 'imik',
-        ss: '%d imik',
-        m: 'minuḍ',
-        mm: '%d minuḍ',
-        h: 'saɛa',
-        hh: '%d tassaɛin',
-        d: 'ass',
-        dd: '%d ossan',
-        M: 'ayowr',
-        MM: '%d iyyirn',
-        y: 'asgas',
-        yy: '%d isgasn',
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/tzm.js
===================================================================
--- backend/node_modules/moment/src/locale/tzm.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Central Atlas Tamazight [tzm]
-//! author : Abdel Said : https://github.com/abdelsaid
-
-import moment from '../moment';
-
-export default moment.defineLocale('tzm', {
-    months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-        '_'
-    ),
-    monthsShort:
-        'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
-            '_'
-        ),
-    weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
-        nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
-        nextWeek: 'dddd [ⴴ] LT',
-        lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
-        lastWeek: 'dddd [ⴴ] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
-        past: 'ⵢⴰⵏ %s',
-        s: 'ⵉⵎⵉⴽ',
-        ss: '%d ⵉⵎⵉⴽ',
-        m: 'ⵎⵉⵏⵓⴺ',
-        mm: '%d ⵎⵉⵏⵓⴺ',
-        h: 'ⵙⴰⵄⴰ',
-        hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
-        d: 'ⴰⵙⵙ',
-        dd: '%d oⵙⵙⴰⵏ',
-        M: 'ⴰⵢoⵓⵔ',
-        MM: '%d ⵉⵢⵢⵉⵔⵏ',
-        y: 'ⴰⵙⴳⴰⵙ',
-        yy: '%d ⵉⵙⴳⴰⵙⵏ',
-    },
-    week: {
-        dow: 6, // Saturday is the first day of the week.
-        doy: 12, // The week that contains Jan 12th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ug-cn.js
===================================================================
--- backend/node_modules/moment/src/locale/ug-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,111 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uyghur (China) [ug-cn]
-//! author: boyaq : https://github.com/boyaq
-
-import moment from '../moment';
-
-export default moment.defineLocale('ug-cn', {
-    months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-        '_'
-    ),
-    monthsShort:
-        'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
-            '_'
-        ),
-    weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
-        '_'
-    ),
-    weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-    weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY-MM-DD',
-        LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
-        LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-        LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
-    },
-    meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (
-            meridiem === 'يېرىم كېچە' ||
-            meridiem === 'سەھەر' ||
-            meridiem === 'چۈشتىن بۇرۇن'
-        ) {
-            return hour;
-        } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
-            return hour + 12;
-        } else {
-            return hour >= 11 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return 'يېرىم كېچە';
-        } else if (hm < 900) {
-            return 'سەھەر';
-        } else if (hm < 1130) {
-            return 'چۈشتىن بۇرۇن';
-        } else if (hm < 1230) {
-            return 'چۈش';
-        } else if (hm < 1800) {
-            return 'چۈشتىن كېيىن';
-        } else {
-            return 'كەچ';
-        }
-    },
-    calendar: {
-        sameDay: '[بۈگۈن سائەت] LT',
-        nextDay: '[ئەتە سائەت] LT',
-        nextWeek: '[كېلەركى] dddd [سائەت] LT',
-        lastDay: '[تۆنۈگۈن] LT',
-        lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s كېيىن',
-        past: '%s بۇرۇن',
-        s: 'نەچچە سېكونت',
-        ss: '%d سېكونت',
-        m: 'بىر مىنۇت',
-        mm: '%d مىنۇت',
-        h: 'بىر سائەت',
-        hh: '%d سائەت',
-        d: 'بىر كۈن',
-        dd: '%d كۈن',
-        M: 'بىر ئاي',
-        MM: '%d ئاي',
-        y: 'بىر يىل',
-        yy: '%d يىل',
-    },
-
-    dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '-كۈنى';
-            case 'w':
-            case 'W':
-                return number + '-ھەپتە';
-            default:
-                return number;
-        }
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 1st is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/uk.js
===================================================================
--- backend/node_modules/moment/src/locale/uk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,167 +1,0 @@
-//! moment.js locale configuration
-//! locale : Ukrainian [uk]
-//! author : zemlanin : https://github.com/zemlanin
-//! Author : Menelion Elensúle : https://github.com/Oire
-
-import moment from '../moment';
-
-function plural(word, num) {
-    var forms = word.split('_');
-    return num % 10 === 1 && num % 100 !== 11
-        ? forms[0]
-        : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
-          ? forms[1]
-          : forms[2];
-}
-function relativeTimeWithPlural(number, withoutSuffix, key) {
-    var format = {
-        ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
-        mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
-        hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
-        dd: 'день_дні_днів',
-        MM: 'місяць_місяці_місяців',
-        yy: 'рік_роки_років',
-    };
-    if (key === 'm') {
-        return withoutSuffix ? 'хвилина' : 'хвилину';
-    } else if (key === 'h') {
-        return withoutSuffix ? 'година' : 'годину';
-    } else {
-        return number + ' ' + plural(format[key], +number);
-    }
-}
-function weekdaysCaseReplace(m, format) {
-    var weekdays = {
-            nominative:
-                'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
-                    '_'
-                ),
-            accusative:
-                'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
-                    '_'
-                ),
-            genitive:
-                'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
-                    '_'
-                ),
-        },
-        nounCase;
-
-    if (m === true) {
-        return weekdays['nominative']
-            .slice(1, 7)
-            .concat(weekdays['nominative'].slice(0, 1));
-    }
-    if (!m) {
-        return weekdays['nominative'];
-    }
-
-    nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
-        ? 'accusative'
-        : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
-          ? 'genitive'
-          : 'nominative';
-    return weekdays[nounCase][m.day()];
-}
-function processHoursFunction(str) {
-    return function () {
-        return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
-    };
-}
-
-export default moment.defineLocale('uk', {
-    months: {
-        format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
-            '_'
-        ),
-        standalone:
-            'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
-                '_'
-            ),
-    },
-    monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
-        '_'
-    ),
-    weekdays: weekdaysCaseReplace,
-    weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD.MM.YYYY',
-        LL: 'D MMMM YYYY р.',
-        LLL: 'D MMMM YYYY р., HH:mm',
-        LLLL: 'dddd, D MMMM YYYY р., HH:mm',
-    },
-    calendar: {
-        sameDay: processHoursFunction('[Сьогодні '),
-        nextDay: processHoursFunction('[Завтра '),
-        lastDay: processHoursFunction('[Вчора '),
-        nextWeek: processHoursFunction('[У] dddd ['),
-        lastWeek: function () {
-            switch (this.day()) {
-                case 0:
-                case 3:
-                case 5:
-                case 6:
-                    return processHoursFunction('[Минулої] dddd [').call(this);
-                case 1:
-                case 2:
-                case 4:
-                    return processHoursFunction('[Минулого] dddd [').call(this);
-            }
-        },
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'за %s',
-        past: '%s тому',
-        s: 'декілька секунд',
-        ss: relativeTimeWithPlural,
-        m: relativeTimeWithPlural,
-        mm: relativeTimeWithPlural,
-        h: 'годину',
-        hh: relativeTimeWithPlural,
-        d: 'день',
-        dd: relativeTimeWithPlural,
-        M: 'місяць',
-        MM: relativeTimeWithPlural,
-        y: 'рік',
-        yy: relativeTimeWithPlural,
-    },
-    // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
-    meridiemParse: /ночі|ранку|дня|вечора/,
-    isPM: function (input) {
-        return /^(дня|вечора)$/.test(input);
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 4) {
-            return 'ночі';
-        } else if (hour < 12) {
-            return 'ранку';
-        } else if (hour < 17) {
-            return 'дня';
-        } else {
-            return 'вечора';
-        }
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'M':
-            case 'd':
-            case 'DDD':
-            case 'w':
-            case 'W':
-                return number + '-й';
-            case 'D':
-                return number + '-го';
-            default:
-                return number;
-        }
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/ur.js
===================================================================
--- backend/node_modules/moment/src/locale/ur.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-//! moment.js locale configuration
-//! locale : Urdu [ur]
-//! author : Sawood Alam : https://github.com/ibnesayeed
-//! author : Zack : https://github.com/ZackVision
-
-import moment from '../moment';
-
-var months = [
-        'جنوری',
-        'فروری',
-        'مارچ',
-        'اپریل',
-        'مئی',
-        'جون',
-        'جولائی',
-        'اگست',
-        'ستمبر',
-        'اکتوبر',
-        'نومبر',
-        'دسمبر',
-    ],
-    days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
-
-export default moment.defineLocale('ur', {
-    months: months,
-    monthsShort: months,
-    weekdays: days,
-    weekdaysShort: days,
-    weekdaysMin: days,
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd، D MMMM YYYY HH:mm',
-    },
-    meridiemParse: /صبح|شام/,
-    isPM: function (input) {
-        return 'شام' === input;
-    },
-    meridiem: function (hour, minute, isLower) {
-        if (hour < 12) {
-            return 'صبح';
-        }
-        return 'شام';
-    },
-    calendar: {
-        sameDay: '[آج بوقت] LT',
-        nextDay: '[کل بوقت] LT',
-        nextWeek: 'dddd [بوقت] LT',
-        lastDay: '[گذشتہ روز بوقت] LT',
-        lastWeek: '[گذشتہ] dddd [بوقت] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s بعد',
-        past: '%s قبل',
-        s: 'چند سیکنڈ',
-        ss: '%d سیکنڈ',
-        m: 'ایک منٹ',
-        mm: '%d منٹ',
-        h: 'ایک گھنٹہ',
-        hh: '%d گھنٹے',
-        d: 'ایک دن',
-        dd: '%d دن',
-        M: 'ایک ماہ',
-        MM: '%d ماہ',
-        y: 'ایک سال',
-        yy: '%d سال',
-    },
-    preparse: function (string) {
-        return string.replace(/،/g, ',');
-    },
-    postformat: function (string) {
-        return string.replace(/,/g, '،');
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/uz-latn.js
===================================================================
--- backend/node_modules/moment/src/locale/uz-latn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,54 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek Latin [uz-latn]
-//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
-
-import moment from '../moment';
-
-export default moment.defineLocale('uz-latn', {
-    months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
-        '_'
-    ),
-    monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
-    weekdays:
-        'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
-            '_'
-        ),
-    weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
-    weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'D MMMM YYYY, dddd HH:mm',
-    },
-    calendar: {
-        sameDay: '[Bugun soat] LT [da]',
-        nextDay: '[Ertaga] LT [da]',
-        nextWeek: 'dddd [kuni soat] LT [da]',
-        lastDay: '[Kecha soat] LT [da]',
-        lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'Yaqin %s ichida',
-        past: 'Bir necha %s oldin',
-        s: 'soniya',
-        ss: '%d soniya',
-        m: 'bir daqiqa',
-        mm: '%d daqiqa',
-        h: 'bir soat',
-        hh: '%d soat',
-        d: 'bir kun',
-        dd: '%d kun',
-        M: 'bir oy',
-        MM: '%d oy',
-        y: 'bir yil',
-        yy: '%d yil',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 7th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/uz.js
===================================================================
--- backend/node_modules/moment/src/locale/uz.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-//! moment.js locale configuration
-//! locale : Uzbek [uz]
-//! author : Sardor Muminov : https://github.com/muminoff
-
-import moment from '../moment';
-
-export default moment.defineLocale('uz', {
-    months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
-        '_'
-    ),
-    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
-    weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
-    weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
-    weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'D MMMM YYYY, dddd HH:mm',
-    },
-    calendar: {
-        sameDay: '[Бугун соат] LT [да]',
-        nextDay: '[Эртага] LT [да]',
-        nextWeek: 'dddd [куни соат] LT [да]',
-        lastDay: '[Кеча соат] LT [да]',
-        lastWeek: '[Утган] dddd [куни соат] LT [да]',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'Якин %s ичида',
-        past: 'Бир неча %s олдин',
-        s: 'фурсат',
-        ss: '%d фурсат',
-        m: 'бир дакика',
-        mm: '%d дакика',
-        h: 'бир соат',
-        hh: '%d соат',
-        d: 'бир кун',
-        dd: '%d кун',
-        M: 'бир ой',
-        MM: '%d ой',
-        y: 'бир йил',
-        yy: '%d йил',
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 7, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/vi.js
===================================================================
--- backend/node_modules/moment/src/locale/vi.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,80 +1,0 @@
-//! moment.js locale configuration
-//! locale : Vietnamese [vi]
-//! author : Bang Nguyen : https://github.com/bangnk
-//! author : Chien Kira : https://github.com/chienkira
-
-import moment from '../moment';
-
-export default moment.defineLocale('vi', {
-    months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
-        '_'
-    ),
-    monthsShort:
-        'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
-        '_'
-    ),
-    weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-    weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
-    weekdaysParseExact: true,
-    meridiemParse: /sa|ch/i,
-    isPM: function (input) {
-        return /^ch$/i.test(input);
-    },
-    meridiem: function (hours, minutes, isLower) {
-        if (hours < 12) {
-            return isLower ? 'sa' : 'SA';
-        } else {
-            return isLower ? 'ch' : 'CH';
-        }
-    },
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM [năm] YYYY',
-        LLL: 'D MMMM [năm] YYYY HH:mm',
-        LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
-        l: 'DD/M/YYYY',
-        ll: 'D MMM YYYY',
-        lll: 'D MMM YYYY HH:mm',
-        llll: 'ddd, D MMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[Hôm nay lúc] LT',
-        nextDay: '[Ngày mai lúc] LT',
-        nextWeek: 'dddd [tuần tới lúc] LT',
-        lastDay: '[Hôm qua lúc] LT',
-        lastWeek: 'dddd [tuần trước lúc] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: '%s tới',
-        past: '%s trước',
-        s: 'vài giây',
-        ss: '%d giây',
-        m: 'một phút',
-        mm: '%d phút',
-        h: 'một giờ',
-        hh: '%d giờ',
-        d: 'một ngày',
-        dd: '%d ngày',
-        w: 'một tuần',
-        ww: '%d tuần',
-        M: 'một tháng',
-        MM: '%d tháng',
-        y: 'một năm',
-        yy: '%d năm',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}/,
-    ordinal: function (number) {
-        return number;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/x-pseudo.js
===================================================================
--- backend/node_modules/moment/src/locale/x-pseudo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,73 +1,0 @@
-//! moment.js locale configuration
-//! locale : Pseudo [x-pseudo]
-//! author : Andrew Hood : https://github.com/andrewhood125
-
-import moment from '../moment';
-
-export default moment.defineLocale('x-pseudo', {
-    months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
-        '_'
-    ),
-    monthsShort:
-        'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
-            '_'
-        ),
-    monthsParseExact: true,
-    weekdays:
-        'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
-            '_'
-        ),
-    weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
-    weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
-    weekdaysParseExact: true,
-    longDateFormat: {
-        LT: 'HH:mm',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY HH:mm',
-        LLLL: 'dddd, D MMMM YYYY HH:mm',
-    },
-    calendar: {
-        sameDay: '[T~ódá~ý át] LT',
-        nextDay: '[T~ómó~rró~w át] LT',
-        nextWeek: 'dddd [át] LT',
-        lastDay: '[Ý~ést~érdá~ý át] LT',
-        lastWeek: '[L~ást] dddd [át] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'í~ñ %s',
-        past: '%s á~gó',
-        s: 'á ~féw ~sécó~ñds',
-        ss: '%d s~écóñ~ds',
-        m: 'á ~míñ~úté',
-        mm: '%d m~íñú~tés',
-        h: 'á~ñ hó~úr',
-        hh: '%d h~óúrs',
-        d: 'á ~dáý',
-        dd: '%d d~áýs',
-        M: 'á ~móñ~th',
-        MM: '%d m~óñt~hs',
-        y: 'á ~ýéár',
-        yy: '%d ý~éárs',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
-    ordinal: function (number) {
-        var b = number % 10,
-            output =
-                ~~((number % 100) / 10) === 1
-                    ? 'th'
-                    : b === 1
-                      ? 'st'
-                      : b === 2
-                        ? 'nd'
-                        : b === 3
-                          ? 'rd'
-                          : 'th';
-        return number + output;
-    },
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/yo.js
===================================================================
--- backend/node_modules/moment/src/locale/yo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-//! moment.js locale configuration
-//! locale : Yoruba Nigeria [yo]
-//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
-
-import moment from '../moment';
-
-export default moment.defineLocale('yo', {
-    months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
-        '_'
-    ),
-    monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
-    weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
-    weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
-    weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
-    longDateFormat: {
-        LT: 'h:mm A',
-        LTS: 'h:mm:ss A',
-        L: 'DD/MM/YYYY',
-        LL: 'D MMMM YYYY',
-        LLL: 'D MMMM YYYY h:mm A',
-        LLLL: 'dddd, D MMMM YYYY h:mm A',
-    },
-    calendar: {
-        sameDay: '[Ònì ni] LT',
-        nextDay: '[Ọ̀la ni] LT',
-        nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
-        lastDay: '[Àna ni] LT',
-        lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
-        sameElse: 'L',
-    },
-    relativeTime: {
-        future: 'ní %s',
-        past: '%s kọjá',
-        s: 'ìsẹjú aayá die',
-        ss: 'aayá %d',
-        m: 'ìsẹjú kan',
-        mm: 'ìsẹjú %d',
-        h: 'wákati kan',
-        hh: 'wákati %d',
-        d: 'ọjọ́ kan',
-        dd: 'ọjọ́ %d',
-        M: 'osù kan',
-        MM: 'osù %d',
-        y: 'ọdún kan',
-        yy: 'ọdún %d',
-    },
-    dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
-    ordinal: 'ọjọ́ %d',
-    week: {
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/zh-cn.js
===================================================================
--- backend/node_modules/moment/src/locale/zh-cn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,120 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (China) [zh-cn]
-//! author : suupic : https://github.com/suupic
-//! author : Zeno Zeng : https://github.com/zenozeng
-//! author : uu109 : https://github.com/uu109
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-cn', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日Ah点mm分',
-        LLLL: 'YYYY年M月D日ddddAh点mm分',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        } else {
-            // '中午'
-            return hour >= 11 ? hour : hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天]LT',
-        nextDay: '[明天]LT',
-        nextWeek: function (now) {
-            if (now.week() !== this.week()) {
-                return '[下]dddLT';
-            } else {
-                return '[本]dddLT';
-            }
-        },
-        lastDay: '[昨天]LT',
-        lastWeek: function (now) {
-            if (this.week() !== now.week()) {
-                return '[上]dddLT';
-            } else {
-                return '[本]dddLT';
-            }
-        },
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '周';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s后',
-        past: '%s前',
-        s: '几秒',
-        ss: '%d 秒',
-        m: '1 分钟',
-        mm: '%d 分钟',
-        h: '1 小时',
-        hh: '%d 小时',
-        d: '1 天',
-        dd: '%d 天',
-        w: '1 周',
-        ww: '%d 周',
-        M: '1 个月',
-        MM: '%d 个月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-    week: {
-        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
-        dow: 1, // Monday is the first day of the week.
-        doy: 4, // The week that contains Jan 4th is the first week of the year.
-    },
-});
Index: ckend/node_modules/moment/src/locale/zh-hk.js
===================================================================
--- backend/node_modules/moment/src/locale/zh-hk.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,101 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Hong Kong) [zh-hk]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Konstantin : https://github.com/skfd
-//! author : Anthony : https://github.com/anthonylau
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-hk', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1200) {
-            return '上午';
-        } else if (hm === 1200) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天]LT',
-        nextDay: '[明天]LT',
-        nextWeek: '[下]ddddLT',
-        lastDay: '[昨天]LT',
-        lastWeek: '[上]ddddLT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/src/locale/zh-mo.js
===================================================================
--- backend/node_modules/moment/src/locale/zh-mo.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Macau) [zh-mo]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-//! author : Tan Yuanhong : https://github.com/le0tan
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-mo', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'DD/MM/YYYY',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'D/M/YYYY',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天] LT',
-        nextDay: '[明天] LT',
-        nextWeek: '[下]dddd LT',
-        lastDay: '[昨天] LT',
-        lastWeek: '[上]dddd LT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s內',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/src/locale/zh-tw.js
===================================================================
--- backend/node_modules/moment/src/locale/zh-tw.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,99 +1,0 @@
-//! moment.js locale configuration
-//! locale : Chinese (Taiwan) [zh-tw]
-//! author : Ben : https://github.com/ben-lin
-//! author : Chris Lam : https://github.com/hehachris
-
-import moment from '../moment';
-
-export default moment.defineLocale('zh-tw', {
-    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
-        '_'
-    ),
-    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
-        '_'
-    ),
-    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
-    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
-    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
-    longDateFormat: {
-        LT: 'HH:mm',
-        LTS: 'HH:mm:ss',
-        L: 'YYYY/MM/DD',
-        LL: 'YYYY年M月D日',
-        LLL: 'YYYY年M月D日 HH:mm',
-        LLLL: 'YYYY年M月D日dddd HH:mm',
-        l: 'YYYY/M/D',
-        ll: 'YYYY年M月D日',
-        lll: 'YYYY年M月D日 HH:mm',
-        llll: 'YYYY年M月D日dddd HH:mm',
-    },
-    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
-    meridiemHour: function (hour, meridiem) {
-        if (hour === 12) {
-            hour = 0;
-        }
-        if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
-            return hour;
-        } else if (meridiem === '中午') {
-            return hour >= 11 ? hour : hour + 12;
-        } else if (meridiem === '下午' || meridiem === '晚上') {
-            return hour + 12;
-        }
-    },
-    meridiem: function (hour, minute, isLower) {
-        var hm = hour * 100 + minute;
-        if (hm < 600) {
-            return '凌晨';
-        } else if (hm < 900) {
-            return '早上';
-        } else if (hm < 1130) {
-            return '上午';
-        } else if (hm < 1230) {
-            return '中午';
-        } else if (hm < 1800) {
-            return '下午';
-        } else {
-            return '晚上';
-        }
-    },
-    calendar: {
-        sameDay: '[今天] LT',
-        nextDay: '[明天] LT',
-        nextWeek: '[下]dddd LT',
-        lastDay: '[昨天] LT',
-        lastWeek: '[上]dddd LT',
-        sameElse: 'L',
-    },
-    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
-    ordinal: function (number, period) {
-        switch (period) {
-            case 'd':
-            case 'D':
-            case 'DDD':
-                return number + '日';
-            case 'M':
-                return number + '月';
-            case 'w':
-            case 'W':
-                return number + '週';
-            default:
-                return number;
-        }
-    },
-    relativeTime: {
-        future: '%s後',
-        past: '%s前',
-        s: '幾秒',
-        ss: '%d 秒',
-        m: '1 分鐘',
-        mm: '%d 分鐘',
-        h: '1 小時',
-        hh: '%d 小時',
-        d: '1 天',
-        dd: '%d 天',
-        M: '1 個月',
-        MM: '%d 個月',
-        y: '1 年',
-        yy: '%d 年',
-    },
-});
Index: ckend/node_modules/moment/src/moment.js
===================================================================
--- backend/node_modules/moment/src/moment.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-//! moment.js
-//! version : 2.30.1
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-import { hooks as moment, setHookCallback } from './lib/utils/hooks';
-
-moment.version = '2.30.1';
-
-import {
-    min,
-    max,
-    now,
-    isMoment,
-    momentPrototype as fn,
-    createUTC as utc,
-    createUnix as unix,
-    createLocal as local,
-    createInvalid as invalid,
-    createInZone as parseZone,
-} from './lib/moment/moment';
-
-import { getCalendarFormat } from './lib/moment/calendar';
-
-import {
-    defineLocale,
-    updateLocale,
-    getSetGlobalLocale as locale,
-    getLocale as localeData,
-    listLocales as locales,
-    listMonths as months,
-    listMonthsShort as monthsShort,
-    listWeekdays as weekdays,
-    listWeekdaysMin as weekdaysMin,
-    listWeekdaysShort as weekdaysShort,
-} from './lib/locale/locale';
-
-import {
-    isDuration,
-    createDuration as duration,
-    getSetRelativeTimeRounding as relativeTimeRounding,
-    getSetRelativeTimeThreshold as relativeTimeThreshold,
-} from './lib/duration/duration';
-
-import { normalizeUnits } from './lib/units/units';
-
-import isDate from './lib/utils/is-date';
-
-setHookCallback(local);
-
-moment.fn = fn;
-moment.min = min;
-moment.max = max;
-moment.now = now;
-moment.utc = utc;
-moment.unix = unix;
-moment.months = months;
-moment.isDate = isDate;
-moment.locale = locale;
-moment.invalid = invalid;
-moment.duration = duration;
-moment.isMoment = isMoment;
-moment.weekdays = weekdays;
-moment.parseZone = parseZone;
-moment.localeData = localeData;
-moment.isDuration = isDuration;
-moment.monthsShort = monthsShort;
-moment.weekdaysMin = weekdaysMin;
-moment.defineLocale = defineLocale;
-moment.updateLocale = updateLocale;
-moment.locales = locales;
-moment.weekdaysShort = weekdaysShort;
-moment.normalizeUnits = normalizeUnits;
-moment.relativeTimeRounding = relativeTimeRounding;
-moment.relativeTimeThreshold = relativeTimeThreshold;
-moment.calendarFormat = getCalendarFormat;
-moment.prototype = fn;
-
-// currently HTML5 input type only supports 24-hour formats
-moment.HTML5_FMT = {
-    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
-    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
-    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
-    DATE: 'YYYY-MM-DD', // <input type="date" />
-    TIME: 'HH:mm', // <input type="time" />
-    TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
-    TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
-    WEEK: 'GGGG-[W]WW', // <input type="week" />
-    MONTH: 'YYYY-MM', // <input type="month" />
-};
-
-export default moment;
Index: ckend/node_modules/moment/ts3.1-typings/moment.d.ts
===================================================================
--- backend/node_modules/moment/ts3.1-typings/moment.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,785 +1,0 @@
-/**
- * @param strict Strict parsing disables the deprecated fallback to the native Date constructor when
- * parsing a string.
- */
-declare function moment(inp?: moment.MomentInput, strict?: boolean): moment.Moment;
-/**
- * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
- * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
- * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
- */
-declare function moment(inp?: moment.MomentInput, format?: moment.MomentFormatSpecification, strict?: boolean): moment.Moment;
-/**
- * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
- * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
- * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
- */
-declare function moment(inp?: moment.MomentInput, format?: moment.MomentFormatSpecification, language?: string, strict?: boolean): moment.Moment;
-
-declare namespace moment {
-  type RelativeTimeKey = 's' | 'ss' | 'm' | 'mm' | 'h' | 'hh' | 'd' | 'dd' | 'w' | 'ww' | 'M' | 'MM' | 'y' | 'yy';
-  type CalendarKey = 'sameDay' | 'nextDay' | 'lastDay' | 'nextWeek' | 'lastWeek' | 'sameElse' | string;
-  type LongDateFormatKey = 'LTS' | 'LT' | 'L' | 'LL' | 'LLL' | 'LLLL' | 'lts' | 'lt' | 'l' | 'll' | 'lll' | 'llll';
-
-  interface Locale {
-    calendar(key?: CalendarKey, m?: Moment, now?: Moment): string;
-
-    longDateFormat(key: LongDateFormatKey): string;
-    invalidDate(): string;
-    ordinal(n: number): string;
-
-    preparse(inp: string): string;
-    postformat(inp: string): string;
-    relativeTime(n: number, withoutSuffix: boolean,
-                 key: RelativeTimeKey, isFuture: boolean): string;
-    pastFuture(diff: number, absRelTime: string): string;
-    set(config: Object): void;
-
-    months(): string[];
-    months(m: Moment, format?: string): string;
-    monthsShort(): string[];
-    monthsShort(m: Moment, format?: string): string;
-    monthsParse(monthName: string, format: string, strict: boolean): number;
-    monthsRegex(strict: boolean): RegExp;
-    monthsShortRegex(strict: boolean): RegExp;
-
-    week(m: Moment): number;
-    firstDayOfYear(): number;
-    firstDayOfWeek(): number;
-
-    weekdays(): string[];
-    weekdays(m: Moment, format?: string): string;
-    weekdaysMin(): string[];
-    weekdaysMin(m: Moment): string;
-    weekdaysShort(): string[];
-    weekdaysShort(m: Moment): string;
-    weekdaysParse(weekdayName: string, format: string, strict: boolean): number;
-    weekdaysRegex(strict: boolean): RegExp;
-    weekdaysShortRegex(strict: boolean): RegExp;
-    weekdaysMinRegex(strict: boolean): RegExp;
-
-    isPM(input: string): boolean;
-    meridiem(hour: number, minute: number, isLower: boolean): string;
-  }
-
-  interface StandaloneFormatSpec {
-    format: string[];
-    standalone: string[];
-    isFormat?: RegExp;
-  }
-
-  interface WeekSpec {
-    dow: number;
-    doy?: number;
-  }
-
-  type CalendarSpecVal = string | ((m?: MomentInput, now?: Moment) => string);
-  interface CalendarSpec {
-    sameDay?: CalendarSpecVal;
-    nextDay?: CalendarSpecVal;
-    lastDay?: CalendarSpecVal;
-    nextWeek?: CalendarSpecVal;
-    lastWeek?: CalendarSpecVal;
-    sameElse?: CalendarSpecVal;
-
-    // any additional properties might be used with moment.calendarFormat
-    [x: string]: CalendarSpecVal | undefined;
-  }
-
-  type RelativeTimeSpecVal = (
-    string |
-    ((n: number, withoutSuffix: boolean,
-      key: RelativeTimeKey, isFuture: boolean) => string)
-  );
-  type RelativeTimeFuturePastVal = string | ((relTime: string) => string);
-
-  interface RelativeTimeSpec {
-    future?: RelativeTimeFuturePastVal;
-    past?: RelativeTimeFuturePastVal;
-    s?: RelativeTimeSpecVal;
-    ss?: RelativeTimeSpecVal;
-    m?: RelativeTimeSpecVal;
-    mm?: RelativeTimeSpecVal;
-    h?: RelativeTimeSpecVal;
-    hh?: RelativeTimeSpecVal;
-    d?: RelativeTimeSpecVal;
-    dd?: RelativeTimeSpecVal;
-    w?: RelativeTimeSpecVal;
-    ww?: RelativeTimeSpecVal;
-    M?: RelativeTimeSpecVal;
-    MM?: RelativeTimeSpecVal;
-    y?: RelativeTimeSpecVal;
-    yy?: RelativeTimeSpecVal;
-  }
-
-  interface LongDateFormatSpec {
-    LTS: string;
-    LT: string;
-    L: string;
-    LL: string;
-    LLL: string;
-    LLLL: string;
-
-    // lets forget for a sec that any upper/lower permutation will also work
-    lts?: string;
-    lt?: string;
-    l?: string;
-    ll?: string;
-    lll?: string;
-    llll?: string;
-  }
-
-  type MonthWeekdayFn = (momentToFormat: Moment, format?: string) => string;
-  type WeekdaySimpleFn = (momentToFormat: Moment) => string;
-
-  interface LocaleSpecification {
-    months?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-    monthsShort?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-
-    weekdays?: string[] | StandaloneFormatSpec | MonthWeekdayFn;
-    weekdaysShort?: string[] | StandaloneFormatSpec | WeekdaySimpleFn;
-    weekdaysMin?: string[] | StandaloneFormatSpec | WeekdaySimpleFn;
-
-    meridiemParse?: RegExp;
-    meridiem?: (hour: number, minute:number, isLower: boolean) => string;
-
-    isPM?: (input: string) => boolean;
-
-    longDateFormat?: LongDateFormatSpec;
-    calendar?: CalendarSpec;
-    relativeTime?: RelativeTimeSpec;
-    invalidDate?: string;
-    ordinal?: (n: number) => string;
-    ordinalParse?: RegExp;
-
-    week?: WeekSpec;
-
-    // Allow anything: in general any property that is passed as locale spec is
-    // put in the locale object so it can be used by locale functions
-    [x: string]: any;
-  }
-
-  interface MomentObjectOutput {
-    years: number;
-    /* One digit */
-    months: number;
-    /* Day of the month */
-    date: number;
-    hours: number;
-    minutes: number;
-    seconds: number;
-    milliseconds: number;
-  }
-  interface argThresholdOpts {
-    ss?: number;
-    s?: number;
-    m?: number;
-    h?: number;
-    d?: number;
-    w?: number | null;
-    M?: number;
-  }
-
-  interface Duration {
-    clone(): Duration;
-
-    humanize(argWithSuffix?: boolean, argThresholds?: argThresholdOpts): string;
-    
-    humanize(argThresholds?: argThresholdOpts): string;
-
-    abs(): Duration;
-
-    as(units: unitOfTime.Base): number;
-    get(units: unitOfTime.Base): number;
-
-    milliseconds(): number;
-    asMilliseconds(): number;
-
-    seconds(): number;
-    asSeconds(): number;
-
-    minutes(): number;
-    asMinutes(): number;
-
-    hours(): number;
-    asHours(): number;
-
-    days(): number;
-    asDays(): number;
-
-    weeks(): number;
-    asWeeks(): number;
-
-    months(): number;
-    asMonths(): number;
-
-    years(): number;
-    asYears(): number;
-
-    add(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-    subtract(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-
-    locale(): string;
-    locale(locale: LocaleSpecifier): Duration;
-    localeData(): Locale;
-
-    toISOString(): string;
-    toJSON(): string;
-
-    isValid(): boolean;
-
-    /**
-     * @deprecated since version 2.8.0
-     */
-    lang(locale: LocaleSpecifier): Moment;
-    /**
-     * @deprecated since version 2.8.0
-     */
-    lang(): Locale;
-    /**
-     * @deprecated
-     */
-    toIsoString(): string;
-  }
-
-  interface MomentRelativeTime {
-    future: any;
-    past: any;
-    s: any;
-    ss: any;
-    m: any;
-    mm: any;
-    h: any;
-    hh: any;
-    d: any;
-    dd: any;
-    M: any;
-    MM: any;
-    y: any;
-    yy: any;
-  }
-
-  interface MomentLongDateFormat {
-    L: string;
-    LL: string;
-    LLL: string;
-    LLLL: string;
-    LT: string;
-    LTS: string;
-
-    l?: string;
-    ll?: string;
-    lll?: string;
-    llll?: string;
-    lt?: string;
-    lts?: string;
-  }
-
-  interface MomentParsingFlags {
-    empty: boolean;
-    unusedTokens: string[];
-    unusedInput: string[];
-    overflow: number;
-    charsLeftOver: number;
-    nullInput: boolean;
-    invalidMonth: string | null;
-    invalidFormat: boolean;
-    userInvalidated: boolean;
-    iso: boolean;
-    parsedDateParts: any[];
-    meridiem: string | null;
-  }
-
-  interface MomentParsingFlagsOpt {
-    empty?: boolean;
-    unusedTokens?: string[];
-    unusedInput?: string[];
-    overflow?: number;
-    charsLeftOver?: number;
-    nullInput?: boolean;
-    invalidMonth?: string;
-    invalidFormat?: boolean;
-    userInvalidated?: boolean;
-    iso?: boolean;
-    parsedDateParts?: any[];
-    meridiem?: string | null;
-  }
-
-  interface MomentBuiltinFormat {
-    __momentBuiltinFormatBrand: any;
-  }
-
-  type MomentFormatSpecification = string | MomentBuiltinFormat | (string | MomentBuiltinFormat)[];
-
-  namespace unitOfTime {
-    type Base = (
-      "year" | "years" | "y" |
-      "month" | "months" | "M" |
-      "week" | "weeks" | "w" |
-      "day" | "days" | "d" |
-      "hour" | "hours" | "h" |
-      "minute" | "minutes" | "m" |
-      "second" | "seconds" | "s" |
-      "millisecond" | "milliseconds" | "ms"
-    );
-
-    type _quarter = "quarter" | "quarters" | "Q";
-    type _isoWeek = "isoWeek" | "isoWeeks" | "W";
-    type _date = "date" | "dates" | "D";
-    type DurationConstructor = Base | _quarter;
-
-    type DurationAs = Base;
-
-    type StartOf = Base | _quarter | _isoWeek | _date | null;
-
-    type Diff = Base | _quarter;
-
-    type MomentConstructor = Base | _date;
-
-    type All = Base | _quarter | _isoWeek | _date |
-      "weekYear" | "weekYears" | "gg" |
-      "isoWeekYear" | "isoWeekYears" | "GG" |
-      "dayOfYear" | "dayOfYears" | "DDD" |
-      "weekday" | "weekdays" | "e" |
-      "isoWeekday" | "isoWeekdays" | "E";
-  }
-
-  interface MomentInputObject {
-    years?: number;
-    year?: number;
-    y?: number;
-
-    months?: number;
-    month?: number;
-    M?: number;
-
-    days?: number;
-    day?: number;
-    d?: number;
-
-    dates?: number;
-    date?: number;
-    D?: number;
-
-    hours?: number;
-    hour?: number;
-    h?: number;
-
-    minutes?: number;
-    minute?: number;
-    m?: number;
-
-    seconds?: number;
-    second?: number;
-    s?: number;
-
-    milliseconds?: number;
-    millisecond?: number;
-    ms?: number;
-  }
-
-  interface DurationInputObject extends MomentInputObject {
-    quarters?: number;
-    quarter?: number;
-    Q?: number;
-
-    weeks?: number;
-    week?: number;
-    w?: number;
-  }
-
-  interface MomentSetObject extends MomentInputObject {
-    weekYears?: number;
-    weekYear?: number;
-    gg?: number;
-
-    isoWeekYears?: number;
-    isoWeekYear?: number;
-    GG?: number;
-
-    quarters?: number;
-    quarter?: number;
-    Q?: number;
-
-    weeks?: number;
-    week?: number;
-    w?: number;
-
-    isoWeeks?: number;
-    isoWeek?: number;
-    W?: number;
-
-    dayOfYears?: number;
-    dayOfYear?: number;
-    DDD?: number;
-
-    weekdays?: number;
-    weekday?: number;
-    e?: number;
-
-    isoWeekdays?: number;
-    isoWeekday?: number;
-    E?: number;
-  }
-
-  interface FromTo {
-    from: MomentInput;
-    to: MomentInput;
-  }
-
-  type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | null | undefined;
-  type DurationInputArg1 = Duration | number | string | FromTo | DurationInputObject | null | undefined;
-  type DurationInputArg2 = unitOfTime.DurationConstructor;
-  type LocaleSpecifier = string | Moment | Duration | string[] | boolean;
-
-  interface MomentCreationData {
-    input: MomentInput;
-    format?: MomentFormatSpecification;
-    locale: Locale;
-    isUTC: boolean;
-    strict?: boolean;
-  }
-
-  interface Moment extends Object {
-    format(format?: string): string;
-
-    startOf(unitOfTime: unitOfTime.StartOf): Moment;
-    endOf(unitOfTime: unitOfTime.StartOf): Moment;
-
-    add(amount?: DurationInputArg1, unit?: DurationInputArg2): Moment;
-    /**
-     * @deprecated reverse syntax
-     */
-    add(unit: unitOfTime.DurationConstructor, amount: number|string): Moment;
-
-    subtract(amount?: DurationInputArg1, unit?: DurationInputArg2): Moment;
-    /**
-     * @deprecated reverse syntax
-     */
-    subtract(unit: unitOfTime.DurationConstructor, amount: number|string): Moment;
-
-    calendar(): string;
-    calendar(formats: CalendarSpec): string;
-    calendar(time?: MomentInput, formats?: CalendarSpec): string;
-
-    clone(): Moment;
-
-    /**
-     * @return Unix timestamp in milliseconds
-     */
-    valueOf(): number;
-
-    // current date/time in local mode
-    local(keepLocalTime?: boolean): Moment;
-    isLocal(): boolean;
-
-    // current date/time in UTC mode
-    utc(keepLocalTime?: boolean): Moment;
-    isUTC(): boolean;
-    /**
-     * @deprecated use isUTC
-     */
-    isUtc(): boolean;
-
-    parseZone(): Moment;
-    isValid(): boolean;
-    invalidAt(): number;
-
-    hasAlignedHourOffset(other?: MomentInput): boolean;
-
-    creationData(): MomentCreationData;
-    parsingFlags(): MomentParsingFlags;
-
-    year(y: number): Moment;
-    year(): number;
-    /**
-     * @deprecated use year(y)
-     */
-    years(y: number): Moment;
-    /**
-     * @deprecated use year()
-     */
-    years(): number;
-    quarter(): number;
-    quarter(q: number): Moment;
-    quarters(): number;
-    quarters(q: number): Moment;
-    month(M: number|string): Moment;
-    month(): number;
-    /**
-     * @deprecated use month(M)
-     */
-    months(M: number|string): Moment;
-    /**
-     * @deprecated use month()
-     */
-    months(): number;
-    day(d: number|string): Moment;
-    day(): number;
-    days(d: number|string): Moment;
-    days(): number;
-    date(d: number): Moment;
-    date(): number;
-    /**
-     * @deprecated use date(d)
-     */
-    dates(d: number): Moment;
-    /**
-     * @deprecated use date()
-     */
-    dates(): number;
-    hour(h: number): Moment;
-    hour(): number;
-    hours(h: number): Moment;
-    hours(): number;
-    minute(m: number): Moment;
-    minute(): number;
-    minutes(m: number): Moment;
-    minutes(): number;
-    second(s: number): Moment;
-    second(): number;
-    seconds(s: number): Moment;
-    seconds(): number;
-    millisecond(ms: number): Moment;
-    millisecond(): number;
-    milliseconds(ms: number): Moment;
-    milliseconds(): number;
-    weekday(): number;
-    weekday(d: number): Moment;
-    isoWeekday(): number;
-    isoWeekday(d: number|string): Moment;
-    weekYear(): number;
-    weekYear(d: number): Moment;
-    isoWeekYear(): number;
-    isoWeekYear(d: number): Moment;
-    week(): number;
-    week(d: number): Moment;
-    weeks(): number;
-    weeks(d: number): Moment;
-    isoWeek(): number;
-    isoWeek(d: number): Moment;
-    isoWeeks(): number;
-    isoWeeks(d: number): Moment;
-    weeksInYear(): number;
-    isoWeeksInYear(): number;
-    isoWeeksInISOWeekYear(): number;
-    dayOfYear(): number;
-    dayOfYear(d: number): Moment;
-
-    from(inp: MomentInput, suffix?: boolean): string;
-    to(inp: MomentInput, suffix?: boolean): string;
-    fromNow(withoutSuffix?: boolean): string;
-    toNow(withoutPrefix?: boolean): string;
-
-    diff(b: MomentInput, unitOfTime?: unitOfTime.Diff, precise?: boolean): number;
-
-    toArray(): [number, number, number, number, number, number, number];
-    toDate(): Date;
-    toISOString(keepOffset?: boolean): string;
-    inspect(): string;
-    toJSON(): string;
-    unix(): number;
-
-    isLeapYear(): boolean;
-    /**
-     * @deprecated in favor of utcOffset
-     */
-    zone(): number;
-    zone(b: number|string): Moment;
-    utcOffset(): number;
-    utcOffset(b: number|string, keepLocalTime?: boolean): Moment;
-    isUtcOffset(): boolean;
-    daysInMonth(): number;
-    isDST(): boolean;
-
-    zoneAbbr(): string;
-    zoneName(): string;
-
-    isBefore(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isAfter(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSame(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSameOrAfter(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isSameOrBefore(inp?: MomentInput, granularity?: unitOfTime.StartOf): boolean;
-    isBetween(a: MomentInput, b: MomentInput, granularity?: unitOfTime.StartOf, inclusivity?: "()" | "[)" | "(]" | "[]"): boolean;
-
-    /**
-     * @deprecated as of 2.8.0, use locale
-     */
-    lang(language: LocaleSpecifier): Moment;
-    /**
-     * @deprecated as of 2.8.0, use locale
-     */
-    lang(): Locale;
-
-    locale(): string;
-    locale(locale: LocaleSpecifier): Moment;
-
-    localeData(): Locale;
-
-    /**
-     * @deprecated no reliable implementation
-     */
-    isDSTShifted(): boolean;
-
-    // NOTE(constructor): Same as moment constructor
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    max(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    max(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-    // NOTE(constructor): Same as moment constructor
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    min(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-    /**
-     * @deprecated as of 2.7.0, use moment.min/max
-     */
-    min(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-    get(unit: unitOfTime.All): number;
-    set(unit: unitOfTime.All, value: number): Moment;
-    set(objectLiteral: MomentSetObject): Moment;
-
-    toObject(): MomentObjectOutput;
-  }
-
-  export var version: string;
-  export var fn: Moment;
-
-  // NOTE(constructor): Same as moment constructor
-  /**
-   * @param strict Strict parsing disables the deprecated fallback to the native Date constructor when
-   * parsing a string.
-   */
-  export function utc(inp?: MomentInput, strict?: boolean): Moment;
-  /**
-   * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
-   * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
-   * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
-   */
-  export function utc(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-  /**
-   * @param strict Strict parsing requires that the format and input match exactly, including delimiters.
-   * Strict parsing is frequently the best parsing option. For more information about choosing strict vs
-   * forgiving parsing, see the [parsing guide](https://momentjs.com/guides/#/parsing/).
-   */
-  export function utc(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-  export function unix(timestamp: number): Moment;
-
-  export function invalid(flags?: MomentParsingFlagsOpt): Moment;
-  export function isMoment(m: any): m is Moment;
-  export function isDate(m: any): m is Date;
-  export function isDuration(d: any): d is Duration;
-
-  /**
-   * @deprecated in 2.8.0
-   */
-  export function lang(language?: string): string;
-  /**
-   * @deprecated in 2.8.0
-   */
-  export function lang(language?: string, definition?: Locale): string;
-
-  export function locale(language?: string): string;
-  export function locale(language?: string[]): string;
-  export function locale(language?: string, definition?: LocaleSpecification | null | undefined): string;
-
-  export function localeData(key?: string | string[]): Locale;
-
-  export function duration(inp?: DurationInputArg1, unit?: DurationInputArg2): Duration;
-
-  // NOTE(constructor): Same as moment constructor
-  export function parseZone(inp?: MomentInput, format?: MomentFormatSpecification, strict?: boolean): Moment;
-  export function parseZone(inp?: MomentInput, format?: MomentFormatSpecification, language?: string, strict?: boolean): Moment;
-
-  export function months(): string[];
-  export function months(index: number): string;
-  export function months(format: string): string[];
-  export function months(format: string, index: number): string;
-  export function monthsShort(): string[];
-  export function monthsShort(index: number): string;
-  export function monthsShort(format: string): string[];
-  export function monthsShort(format: string, index: number): string;
-
-  export function weekdays(): string[];
-  export function weekdays(index: number): string;
-  export function weekdays(format: string): string[];
-  export function weekdays(format: string, index: number): string;
-  export function weekdays(localeSorted: boolean): string[];
-  export function weekdays(localeSorted: boolean, index: number): string;
-  export function weekdays(localeSorted: boolean, format: string): string[];
-  export function weekdays(localeSorted: boolean, format: string, index: number): string;
-  export function weekdaysShort(): string[];
-  export function weekdaysShort(index: number): string;
-  export function weekdaysShort(format: string): string[];
-  export function weekdaysShort(format: string, index: number): string;
-  export function weekdaysShort(localeSorted: boolean): string[];
-  export function weekdaysShort(localeSorted: boolean, index: number): string;
-  export function weekdaysShort(localeSorted: boolean, format: string): string[];
-  export function weekdaysShort(localeSorted: boolean, format: string, index: number): string;
-  export function weekdaysMin(): string[];
-  export function weekdaysMin(index: number): string;
-  export function weekdaysMin(format: string): string[];
-  export function weekdaysMin(format: string, index: number): string;
-  export function weekdaysMin(localeSorted: boolean): string[];
-  export function weekdaysMin(localeSorted: boolean, index: number): string;
-  export function weekdaysMin(localeSorted: boolean, format: string): string[];
-  export function weekdaysMin(localeSorted: boolean, format: string, index: number): string;
-
-  export function min(moments: Moment[]): Moment;
-  export function min(...moments: Moment[]): Moment;
-  export function max(moments: Moment[]): Moment;
-  export function max(...moments: Moment[]): Moment;
-
-  /**
-   * Returns unix time in milliseconds. Overwrite for profit.
-   */
-  export function now(): number;
-
-  export function defineLocale(language: string, localeSpec: LocaleSpecification | null): Locale;
-  export function updateLocale(language: string, localeSpec: LocaleSpecification | null): Locale;
-
-  export function locales(): string[];
-
-  export function normalizeUnits(unit: unitOfTime.All): string;
-  export function relativeTimeThreshold(threshold: string): number | boolean;
-  export function relativeTimeThreshold(threshold: string, limit: number): boolean;
-  export function relativeTimeRounding(fn: (num: number) => number): boolean;
-  export function relativeTimeRounding(): (num: number) => number;
-  export function calendarFormat(m: Moment, now: Moment): string;
-
-  export function parseTwoDigitYear(input: string): number;
-  /**
-   * Constant used to enable explicit ISO_8601 format parsing.
-   */
-  export var ISO_8601: MomentBuiltinFormat;
-  export var RFC_2822: MomentBuiltinFormat;
-
-  export var defaultFormat: string;
-  export var defaultFormatUtc: string;
-
-  export var suppressDeprecationWarnings: boolean;
-  export var deprecationHandler: ((name: string | null, msg: string) => void) | null | undefined;
-
-  export var HTML5_FMT: {
-    DATETIME_LOCAL: string,
-    DATETIME_LOCAL_SECONDS: string,
-    DATETIME_LOCAL_MS: string,
-    DATE: string,
-    TIME: string,
-    TIME_SECONDS: string,
-    TIME_MS: string,
-    WEEK: string,
-    MONTH: string
-  };
-
-}
-
-export = moment;
-export as namespace moment;
Index: ckend/node_modules/pg-cloudflare/LICENSE
===================================================================
--- backend/node_modules/pg-cloudflare/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2010 - 2021 Brian Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/pg-cloudflare/README.md
===================================================================
--- backend/node_modules/pg-cloudflare/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-# pg-cloudflare
-
-`pg-cloudflare` makes it easier to take an existing package that relies on `tls` and `net`, and make it work in environments where only `connect()` is supported, such as Cloudflare Workers.
-
-`pg-cloudflare` wraps `connect()`, the [TCP Socket API](https://github.com/wintercg/proposal-sockets-api) proposed within WinterCG, and implemented in [Cloudflare Workers](https://developers.cloudflare.com/workers/runtime-apis/tcp-sockets/), and exposes an interface with methods similar to what the `net` and `tls` modules in Node.js expose. (ex: `net.connect(path[, options][, callback])`). This minimizes the number of changes needed in order to make an existing package work across JavaScript runtimes.
-
-## Installation
-
-```
-npm i --save-dev pg-cloudflare
-```
-
-## How to use conditionally, in non-Node.js environments
-
-As implemented in `pg` [here](https://github.com/brianc/node-postgres/commit/07553428e9c0eacf761a5d4541a3300ff7859578#diff-34588ad868ebcb232660aba7ee6a99d1e02f4bc93f73497d2688c3f074e60533R5-R13), a typical use case might look as follows, where in a Node.js environment the `net` module is used, while in a non-Node.js environment, where `net` is unavailable, `pg-cloudflare` is used instead, providing an equivalent interface:
-
-```js
-module.exports.getStream = function getStream(ssl = false) {
-  const net = require('net')
-  if (typeof net.Socket === 'function') {
-    return net.Socket()
-  }
-  const { CloudflareSocket } = require('pg-cloudflare')
-  return new CloudflareSocket(ssl);
-}
-```
-
-## Node.js implementation of the Socket API proposal
-
-If you're looking for a way to rely on `connect()` as the interface you use to interact with raw sockets, but need this interface to be availble in a Node.js environment, [`@arrowood.dev/socket`](https://github.com/Ethan-Arrowood/socket) provides a Node.js implementation of the Socket API.
-
-
-### license
-
-The MIT License (MIT)
-
-Copyright (c) 2023 Brian M. Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/pg-cloudflare/dist/empty.d.ts
===================================================================
--- backend/node_modules/pg-cloudflare/dist/empty.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-declare const _default: {};
-export default _default;
Index: ckend/node_modules/pg-cloudflare/dist/empty.js
===================================================================
--- backend/node_modules/pg-cloudflare/dist/empty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-// This is an empty module that is served up when outside of a workerd environment
-// See the `exports` field in package.json
-exports.default = {};
-//# sourceMappingURL=empty.js.map
Index: ckend/node_modules/pg-cloudflare/dist/empty.js.map
===================================================================
--- backend/node_modules/pg-cloudflare/dist/empty.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"empty.js","sourceRoot":"","sources":["../src/empty.ts"],"names":[],"mappings":";;AAAA,kFAAkF;AAClF,0CAA0C;AAC1C,kBAAe,EAAE,CAAA"}
Index: ckend/node_modules/pg-cloudflare/dist/index.d.ts
===================================================================
--- backend/node_modules/pg-cloudflare/dist/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-/// <reference types="node" />
-/// <reference types="node" />
-/// <reference types="node" />
-import { TlsOptions } from 'cloudflare:sockets';
-import { EventEmitter } from 'events';
-/**
- * Wrapper around the Cloudflare built-in socket that can be used by the `Connection`.
- */
-export declare class CloudflareSocket extends EventEmitter {
-    readonly ssl: boolean;
-    writable: boolean;
-    destroyed: boolean;
-    private _upgrading;
-    private _upgraded;
-    private _cfSocket;
-    private _cfWriter;
-    private _cfReader;
-    constructor(ssl: boolean);
-    setNoDelay(): this;
-    setKeepAlive(): this;
-    ref(): this;
-    unref(): this;
-    connect(port: number, host: string, connectListener?: (...args: unknown[]) => void): Promise<this | undefined>;
-    _listen(): Promise<void>;
-    _listenOnce(): Promise<void>;
-    write(data: Uint8Array | string, encoding?: BufferEncoding, callback?: (...args: unknown[]) => void): true | void;
-    end(data?: Buffer, encoding?: BufferEncoding, callback?: (...args: unknown[]) => void): this;
-    destroy(reason: string): this;
-    startTls(options: TlsOptions): void;
-    _addClosedHandler(): void;
-}
Index: ckend/node_modules/pg-cloudflare/dist/index.js
===================================================================
--- backend/node_modules/pg-cloudflare/dist/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,152 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.CloudflareSocket = void 0;
-const events_1 = require("events");
-/**
- * Wrapper around the Cloudflare built-in socket that can be used by the `Connection`.
- */
-class CloudflareSocket extends events_1.EventEmitter {
-    constructor(ssl) {
-        super();
-        this.ssl = ssl;
-        this.writable = false;
-        this.destroyed = false;
-        this._upgrading = false;
-        this._upgraded = false;
-        this._cfSocket = null;
-        this._cfWriter = null;
-        this._cfReader = null;
-    }
-    setNoDelay() {
-        return this;
-    }
-    setKeepAlive() {
-        return this;
-    }
-    ref() {
-        return this;
-    }
-    unref() {
-        return this;
-    }
-    async connect(port, host, connectListener) {
-        try {
-            log('connecting');
-            if (connectListener)
-                this.once('connect', connectListener);
-            const options = this.ssl ? { secureTransport: 'starttls' } : {};
-            const mod = await import('cloudflare:sockets');
-            const connect = mod.connect;
-            this._cfSocket = connect(`${host}:${port}`, options);
-            this._cfWriter = this._cfSocket.writable.getWriter();
-            this._addClosedHandler();
-            this._cfReader = this._cfSocket.readable.getReader();
-            if (this.ssl) {
-                this._listenOnce().catch((e) => this.emit('error', e));
-            }
-            else {
-                this._listen().catch((e) => this.emit('error', e));
-            }
-            await this._cfWriter.ready;
-            log('socket ready');
-            this.writable = true;
-            this.emit('connect');
-            return this;
-        }
-        catch (e) {
-            this.emit('error', e);
-        }
-    }
-    async _listen() {
-        // eslint-disable-next-line no-constant-condition
-        while (true) {
-            log('awaiting receive from CF socket');
-            const { done, value } = await this._cfReader.read();
-            log('CF socket received:', done, value);
-            if (done) {
-                log('done');
-                break;
-            }
-            this.emit('data', Buffer.from(value));
-        }
-    }
-    async _listenOnce() {
-        log('awaiting first receive from CF socket');
-        const { done, value } = await this._cfReader.read();
-        log('First CF socket received:', done, value);
-        this.emit('data', Buffer.from(value));
-    }
-    write(data, encoding = 'utf8', callback = () => { }) {
-        if (data.length === 0)
-            return callback();
-        if (typeof data === 'string')
-            data = Buffer.from(data, encoding);
-        log('sending data direct:', data);
-        this._cfWriter.write(data).then(() => {
-            log('data sent');
-            callback();
-        }, (err) => {
-            log('send error', err);
-            callback(err);
-        });
-        return true;
-    }
-    end(data = Buffer.alloc(0), encoding = 'utf8', callback = () => { }) {
-        log('ending CF socket');
-        this.write(data, encoding, (err) => {
-            this._cfSocket.close();
-            if (callback)
-                callback(err);
-        });
-        return this;
-    }
-    destroy(reason) {
-        log('destroying CF socket', reason);
-        this.destroyed = true;
-        return this.end();
-    }
-    startTls(options) {
-        if (this._upgraded) {
-            // Don't try to upgrade again.
-            this.emit('error', 'Cannot call `startTls()` more than once on a socket');
-            return;
-        }
-        this._cfWriter.releaseLock();
-        this._cfReader.releaseLock();
-        this._upgrading = true;
-        this._cfSocket = this._cfSocket.startTls(options);
-        this._cfWriter = this._cfSocket.writable.getWriter();
-        this._cfReader = this._cfSocket.readable.getReader();
-        this._addClosedHandler();
-        this._listen().catch((e) => this.emit('error', e));
-    }
-    _addClosedHandler() {
-        this._cfSocket.closed.then(() => {
-            if (!this._upgrading) {
-                log('CF socket closed');
-                this._cfSocket = null;
-                this.emit('close');
-            }
-            else {
-                this._upgrading = false;
-                this._upgraded = true;
-            }
-        }).catch((e) => this.emit('error', e));
-    }
-}
-exports.CloudflareSocket = CloudflareSocket;
-const debug = false;
-function dump(data) {
-    if (data instanceof Uint8Array || data instanceof ArrayBuffer) {
-        const hex = Buffer.from(data).toString('hex');
-        const str = new TextDecoder().decode(data);
-        return `\n>>> STR: "${str.replace(/\n/g, '\\n')}"\n>>> HEX: ${hex}\n`;
-    }
-    else {
-        return data;
-    }
-}
-function log(...args) {
-    debug && console.log(...args.map(dump));
-}
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/pg-cloudflare/dist/index.js.map
===================================================================
--- backend/node_modules/pg-cloudflare/dist/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-cloudflare/esm/index.mjs
===================================================================
--- backend/node_modules/pg-cloudflare/esm/index.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import cf from '../dist/index.js'
-
-export const CloudflareSocket = cf.CloudflareSocket
Index: ckend/node_modules/pg-cloudflare/package.json
===================================================================
--- backend/node_modules/pg-cloudflare/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-{
-  "name": "pg-cloudflare",
-  "version": "1.2.5",
-  "description": "A socket implementation that can run on Cloudflare Workers using native TCP connections.",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "license": "MIT",
-  "devDependencies": {
-    "ts-node": "^8.5.4",
-    "typescript": "^4.0.3"
-  },
-  "exports": {
-    ".": {
-      "import": "./esm/index.mjs",
-      "require": "./dist/index.js",
-      "default": "./dist/index.js"
-    }
-  },
-  "scripts": {
-    "build": "tsc",
-    "build:watch": "tsc --watch",
-    "prepublish": "yarn build",
-    "test": "echo e2e test in pg package"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-postgres.git",
-    "directory": "packages/pg-cloudflare"
-  },
-  "files": [
-    "/dist/*{js,ts,map}",
-    "/src",
-    "/esm"
-  ],
-  "gitHead": "56e286257724783681f8830b2faa7d407b6563e7"
-}
Index: ckend/node_modules/pg-cloudflare/src/empty.ts
===================================================================
--- backend/node_modules/pg-cloudflare/src/empty.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-// This is an empty module that is served up when outside of a workerd environment
-// See the `exports` field in package.json
-export default {}
Index: ckend/node_modules/pg-cloudflare/src/index.ts
===================================================================
--- backend/node_modules/pg-cloudflare/src/index.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,166 +1,0 @@
-import { SocketOptions, Socket, TlsOptions } from 'cloudflare:sockets'
-import { EventEmitter } from 'events'
-
-/**
- * Wrapper around the Cloudflare built-in socket that can be used by the `Connection`.
- */
-export class CloudflareSocket extends EventEmitter {
-  writable = false
-  destroyed = false
-
-  private _upgrading = false
-  private _upgraded = false
-  private _cfSocket: Socket | null = null
-  private _cfWriter: WritableStreamDefaultWriter | null = null
-  private _cfReader: ReadableStreamDefaultReader | null = null
-
-  constructor(readonly ssl: boolean) {
-    super()
-  }
-
-  setNoDelay() {
-    return this
-  }
-  setKeepAlive() {
-    return this
-  }
-  ref() {
-    return this
-  }
-  unref() {
-    return this
-  }
-
-  async connect(port: number, host: string, connectListener?: (...args: unknown[]) => void) {
-    try {
-      log('connecting')
-      if (connectListener) this.once('connect', connectListener)
-
-      const options: SocketOptions = this.ssl ? { secureTransport: 'starttls' } : {}
-      const mod = await import('cloudflare:sockets')
-      const connect = mod.connect
-      this._cfSocket = connect(`${host}:${port}`, options)
-      this._cfWriter = this._cfSocket.writable.getWriter()
-      this._addClosedHandler()
-
-      this._cfReader = this._cfSocket.readable.getReader()
-      if (this.ssl) {
-        this._listenOnce().catch((e) => this.emit('error', e))
-      } else {
-        this._listen().catch((e) => this.emit('error', e))
-      }
-
-      await this._cfWriter!.ready
-      log('socket ready')
-      this.writable = true
-      this.emit('connect')
-
-      return this
-    } catch (e) {
-      this.emit('error', e)
-    }
-  }
-
-  async _listen() {
-    // eslint-disable-next-line no-constant-condition
-    while (true) {
-      log('awaiting receive from CF socket')
-      const { done, value } = await this._cfReader!.read()
-      log('CF socket received:', done, value)
-      if (done) {
-        log('done')
-        break
-      }
-      this.emit('data', Buffer.from(value))
-    }
-  }
-
-  async _listenOnce() {
-    log('awaiting first receive from CF socket')
-    const { done, value } = await this._cfReader!.read()
-    log('First CF socket received:', done, value)
-    this.emit('data', Buffer.from(value))
-  }
-
-  write(
-    data: Uint8Array | string,
-    encoding: BufferEncoding = 'utf8',
-    callback: (...args: unknown[]) => void = () => {}
-  ) {
-    if (data.length === 0) return callback()
-    if (typeof data === 'string') data = Buffer.from(data, encoding)
-
-    log('sending data direct:', data)
-    this._cfWriter!.write(data).then(
-      () => {
-        log('data sent')
-        callback()
-      },
-      (err) => {
-        log('send error', err)
-        callback(err)
-      }
-    )
-    return true
-  }
-
-  end(data = Buffer.alloc(0), encoding: BufferEncoding = 'utf8', callback: (...args: unknown[]) => void = () => {}) {
-    log('ending CF socket')
-    this.write(data, encoding, (err) => {
-      this._cfSocket!.close()
-      if (callback) callback(err)
-    })
-    return this
-  }
-
-  destroy(reason: string) {
-    log('destroying CF socket', reason)
-    this.destroyed = true
-    return this.end()
-  }
-
-  startTls(options: TlsOptions) {
-    if (this._upgraded) {
-      // Don't try to upgrade again.
-      this.emit('error', 'Cannot call `startTls()` more than once on a socket')
-      return
-    }
-    this._cfWriter!.releaseLock()
-    this._cfReader!.releaseLock()
-    this._upgrading = true
-    this._cfSocket = this._cfSocket!.startTls(options)
-    this._cfWriter = this._cfSocket.writable.getWriter()
-    this._cfReader = this._cfSocket.readable.getReader()
-    this._addClosedHandler()
-    this._listen().catch((e) => this.emit('error', e))
-  }
-
-  _addClosedHandler() {
-    this._cfSocket!.closed.then(() => {
-      if (!this._upgrading) {
-        log('CF socket closed')
-        this._cfSocket = null
-        this.emit('close')
-      } else {
-        this._upgrading = false
-        this._upgraded = true
-      }
-    }).catch((e) => this.emit('error', e))
-  }
-}
-
-const debug = false
-
-function dump(data: unknown) {
-  if (data instanceof Uint8Array || data instanceof ArrayBuffer) {
-    const hex = Buffer.from(data).toString('hex')
-    const str = new TextDecoder().decode(data)
-    return `\n>>> STR: "${str.replace(/\n/g, '\\n')}"\n>>> HEX: ${hex}\n`
-  } else {
-    return data
-  }
-}
-
-function log(...args: unknown[]) {
-  debug && console.log(...args.map(dump))
-}
Index: ckend/node_modules/pg-cloudflare/src/types.d.ts
===================================================================
--- backend/node_modules/pg-cloudflare/src/types.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-declare module 'cloudflare:sockets' {
-  export class Socket {
-    public readonly readable: any
-    public readonly writable: any
-    public readonly closed: Promise<void>
-    public close(): Promise<void>
-    public startTls(options: TlsOptions): Socket
-  }
-
-  export type TlsOptions = {
-    expectedServerHostname?: string
-  }
-
-  export type SocketAddress = {
-    hostname: string
-    port: number
-  }
-
-  export type SocketOptions = {
-    secureTransport?: 'off' | 'on' | 'starttls'
-    allowHalfOpen?: boolean
-  }
-
-  export function connect(address: string | SocketAddress, options?: SocketOptions): Socket
-}
Index: ckend/node_modules/pg-connection-string/LICENSE
===================================================================
--- backend/node_modules/pg-connection-string/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2014 Iced Development
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/pg-connection-string/README.md
===================================================================
--- backend/node_modules/pg-connection-string/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-pg-connection-string
-====================
-
-[![NPM](https://nodei.co/npm/pg-connection-string.png?compact=true)](https://nodei.co/npm/pg-connection-string/)
-
-Functions for dealing with a PostgresSQL connection string
-
-`parse` method taken from [node-postgres](https://github.com/brianc/node-postgres.git)
-Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)
-MIT License
-
-## Usage
-
-```js
-const parse = require('pg-connection-string').parse;
-
-const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase')
-```
-
-The resulting config contains a subset of the following properties:
-
-* `user` - User with which to authenticate to the server
-* `password` - Corresponding password
-* `host` - Postgres server hostname or, for UNIX domain sockets, the socket filename
-* `port` - port on which to connect
-* `database` - Database name within the server
-* `client_encoding` - string encoding the client will use
-* `ssl`, either a boolean or an object with properties
-  * `rejectUnauthorized`
-  * `cert`
-  * `key`
-  * `ca`
-* any other query parameters (for example, `application_name`) are preserved intact.
-
-### ClientConfig Compatibility for TypeScript
-
-The pg-connection-string `ConnectionOptions` interface is not compatible with the `ClientConfig` interface that [pg.Client](https://node-postgres.com/apis/client) expects. To remedy this, use the `parseIntoClientConfig` function instead of `parse`:
-
-```ts
-import { ClientConfig } from 'pg';
-import { parseIntoClientConfig } from 'pg-connection-string';
-
-const config: ClientConfig = parseIntoClientConfig('postgres://someuser:somepassword@somehost:381/somedatabase')
-```
-
-You can also use `toClientConfig` to convert an existing `ConnectionOptions` interface into a `ClientConfig` interface:
-
-```ts
-import { ClientConfig } from 'pg';
-import { parse, toClientConfig } from 'pg-connection-string';
-
-const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase')
-const clientConfig: ClientConfig = toClientConfig(config)
-```
-
-## Connection Strings
-
-The short summary of acceptable URLs is:
-
- * `socket:<path>?<query>` - UNIX domain socket
- * `postgres://<user>:<password>@<host>:<port>/<database>?<query>` - TCP connection
-
-But see below for more details.
-
-### UNIX Domain Sockets
-
-When user and password are not given, the socket path follows `socket:`, as in `socket:/var/run/pgsql`.
-This form can be shortened to just a path: `/var/run/pgsql`.
-
-When user and password are given, they are included in the typical URL positions, with an empty `host`, as in `socket://user:pass@/var/run/pgsql`.
-
-Query parameters follow a `?` character, including the following special query parameters:
-
- * `db=<database>` - sets the database name (urlencoded)
- * `encoding=<encoding>` - sets the `client_encoding` property
-
-### TCP Connections
-
-TCP connections to the Postgres server are indicated with `pg:` or `postgres:` schemes (in fact, any scheme but `socket:` is accepted).
-If username and password are included, they should be urlencoded.
-The database name, however, should *not* be urlencoded.
-
-Query parameters follow a `?` character, including the following special query parameters:
- * `host=<host>` - sets `host` property, overriding the URL's host
- * `encoding=<encoding>` - sets the `client_encoding` property
- * `ssl=1`, `ssl=true`, `ssl=0`, `ssl=false` - sets `ssl` to true or false, accordingly
- * `uselibpqcompat=true` - use libpq semantics
- * `sslmode=<sslmode>` when `sslcompat` is not set
-   * `sslmode=disable` - sets `ssl` to false
-   * `sslmode=no-verify` - sets `ssl` to `{ rejectUnauthorized: false }`
-   * `sslmode=prefer`, `sslmode=require`, `sslmode=verify-ca`, `sslmode=verify-full` - sets `ssl` to true
- * `sslmode=<sslmode>` when `sslcompat=libpq`
-   * `sslmode=disable` - sets `ssl` to false
-   * `sslmode=prefer` - sets `ssl` to `{ rejectUnauthorized: false }`
-   * `sslmode=require` - sets `ssl` to `{ rejectUnauthorized: false }` unless `sslrootcert` is specified, in which case it behaves like `verify-ca`
-   * `sslmode=verify-ca` - sets `ssl` to `{ checkServerIdentity: no-op }` (verify CA, but not server identity). This verifies the presented certificate against the effective CA specified in sslrootcert.
-   * `sslmode=verify-full` - sets `ssl` to `{}` (verify CA and server identity)
- * `sslcert=<filename>` - reads data from the given file and includes the result as `ssl.cert`
- * `sslkey=<filename>` - reads data from the given file and includes the result as `ssl.key`
- * `sslrootcert=<filename>` - reads data from the given file and includes the result as `ssl.ca`
-
-A bare relative URL, such as `salesdata`, will indicate a database name while leaving other properties empty.
-
-> [!CAUTION]
-> Choosing an sslmode other than verify-full has serious security implications. Please read https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS to understand the trade-offs.
Index: ckend/node_modules/pg-connection-string/esm/index.mjs
===================================================================
--- backend/node_modules/pg-connection-string/esm/index.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-// ESM wrapper for pg-connection-string
-import connectionString from '../index.js'
-
-// Re-export the parse function
-export default connectionString.parse
-export const parse = connectionString.parse
-export const toClientConfig = connectionString.toClientConfig
-export const parseIntoClientConfig = connectionString.parseIntoClientConfig
Index: ckend/node_modules/pg-connection-string/index.d.ts
===================================================================
--- backend/node_modules/pg-connection-string/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-import { ClientConfig } from 'pg'
-
-export function parse(connectionString: string, options?: Options): ConnectionOptions
-
-export interface Options {
-  // Use libpq semantics when interpreting the connection string
-  useLibpqCompat?: boolean
-}
-
-interface SSLConfig {
-  ca?: string
-  cert?: string | null
-  key?: string
-  rejectUnauthorized?: boolean
-}
-
-export interface ConnectionOptions {
-  host: string | null
-  password?: string
-  user?: string
-  port?: string | null
-  database: string | null | undefined
-  client_encoding?: string
-  ssl?: boolean | string | SSLConfig
-
-  application_name?: string
-  fallback_application_name?: string
-  options?: string
-  keepalives?: number
-
-  // We allow any other options to be passed through
-  [key: string]: unknown
-}
-
-export function toClientConfig(config: ConnectionOptions): ClientConfig
-export function parseIntoClientConfig(connectionString: string): ClientConfig
Index: ckend/node_modules/pg-connection-string/index.js
===================================================================
--- backend/node_modules/pg-connection-string/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,208 +1,0 @@
-'use strict'
-
-//Parse method copied from https://github.com/brianc/node-postgres
-//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)
-//MIT License
-
-//parses a connection string
-function parse(str, options = {}) {
-  //unix socket
-  if (str.charAt(0) === '/') {
-    const config = str.split(' ')
-    return { host: config[0], database: config[1] }
-  }
-
-  // Check for empty host in URL
-
-  const config = {}
-  let result
-  let dummyHost = false
-  if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {
-    // Ensure spaces are encoded as %20
-    str = encodeURI(str).replace(/%25(\d\d)/g, '%$1')
-  }
-
-  try {
-    result = new URL(str, 'postgres://base')
-  } catch (e) {
-    // The URL is invalid so try again with a dummy host
-    result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base')
-    dummyHost = true
-  }
-
-  // We'd like to use Object.fromEntries() here but Node.js 10 does not support it
-  for (const entry of result.searchParams.entries()) {
-    config[entry[0]] = entry[1]
-  }
-
-  config.user = config.user || decodeURIComponent(result.username)
-  config.password = config.password || decodeURIComponent(result.password)
-
-  if (result.protocol == 'socket:') {
-    config.host = decodeURI(result.pathname)
-    config.database = result.searchParams.get('db')
-    config.client_encoding = result.searchParams.get('encoding')
-    return config
-  }
-  const hostname = dummyHost ? '' : result.hostname
-  if (!config.host) {
-    // Only set the host if there is no equivalent query param.
-    config.host = decodeURIComponent(hostname)
-  } else if (hostname && /^%2f/i.test(hostname)) {
-    // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host.
-    result.pathname = hostname + result.pathname
-  }
-  if (!config.port) {
-    // Only set the port if there is no equivalent query param.
-    config.port = result.port
-  }
-
-  const pathname = result.pathname.slice(1) || null
-  config.database = pathname ? decodeURI(pathname) : null
-
-  if (config.ssl === 'true' || config.ssl === '1') {
-    config.ssl = true
-  }
-
-  if (config.ssl === '0') {
-    config.ssl = false
-  }
-
-  if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) {
-    config.ssl = {}
-  }
-
-  // Only try to load fs if we expect to read from the disk
-  const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null
-
-  if (config.sslcert) {
-    config.ssl.cert = fs.readFileSync(config.sslcert).toString()
-  }
-
-  if (config.sslkey) {
-    config.ssl.key = fs.readFileSync(config.sslkey).toString()
-  }
-
-  if (config.sslrootcert) {
-    config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()
-  }
-
-  if (options.useLibpqCompat && config.uselibpqcompat) {
-    throw new Error('Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.')
-  }
-
-  if (config.uselibpqcompat === 'true' || options.useLibpqCompat) {
-    switch (config.sslmode) {
-      case 'disable': {
-        config.ssl = false
-        break
-      }
-      case 'prefer': {
-        config.ssl.rejectUnauthorized = false
-        break
-      }
-      case 'require': {
-        if (config.sslrootcert) {
-          // If a root CA is specified, behavior of `sslmode=require` will be the same as that of `verify-ca`
-          config.ssl.checkServerIdentity = function () {}
-        } else {
-          config.ssl.rejectUnauthorized = false
-        }
-        break
-      }
-      case 'verify-ca': {
-        if (!config.ssl.ca) {
-          throw new Error(
-            'SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.'
-          )
-        }
-        config.ssl.checkServerIdentity = function () {}
-        break
-      }
-      case 'verify-full': {
-        break
-      }
-    }
-  } else {
-    switch (config.sslmode) {
-      case 'disable': {
-        config.ssl = false
-        break
-      }
-      case 'prefer':
-      case 'require':
-      case 'verify-ca':
-      case 'verify-full': {
-        break
-      }
-      case 'no-verify': {
-        config.ssl.rejectUnauthorized = false
-        break
-      }
-    }
-  }
-
-  return config
-}
-
-// convert pg-connection-string ssl config to a ClientConfig.ConnectionOptions
-function toConnectionOptions(sslConfig) {
-  const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => {
-    // we explicitly check for undefined and null instead of `if (value)` because some
-    // options accept falsy values. Example: `ssl.rejectUnauthorized = false`
-    if (value !== undefined && value !== null) {
-      c[key] = value
-    }
-
-    return c
-  }, {})
-
-  return connectionOptions
-}
-
-// convert pg-connection-string config to a ClientConfig
-function toClientConfig(config) {
-  const poolConfig = Object.entries(config).reduce((c, [key, value]) => {
-    if (key === 'ssl') {
-      const sslConfig = value
-
-      if (typeof sslConfig === 'boolean') {
-        c[key] = sslConfig
-      }
-
-      if (typeof sslConfig === 'object') {
-        c[key] = toConnectionOptions(sslConfig)
-      }
-    } else if (value !== undefined && value !== null) {
-      if (key === 'port') {
-        // when port is not specified, it is converted into an empty string
-        // we want to avoid NaN or empty string as a values in ClientConfig
-        if (value !== '') {
-          const v = parseInt(value, 10)
-          if (isNaN(v)) {
-            throw new Error(`Invalid ${key}: ${value}`)
-          }
-
-          c[key] = v
-        }
-      } else {
-        c[key] = value
-      }
-    }
-
-    return c
-  }, {})
-
-  return poolConfig
-}
-
-// parses a connection string into ClientConfig
-function parseIntoClientConfig(str) {
-  return toClientConfig(parse(str))
-}
-
-module.exports = parse
-
-parse.parse = parse
-parse.toClientConfig = toClientConfig
-parse.parseIntoClientConfig = parseIntoClientConfig
Index: ckend/node_modules/pg-connection-string/package.json
===================================================================
--- backend/node_modules/pg-connection-string/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-{
-  "name": "pg-connection-string",
-  "version": "2.9.0",
-  "description": "Functions for dealing with a PostgresSQL connection string",
-  "main": "./index.js",
-  "types": "./index.d.ts",
-  "exports": {
-    ".": {
-      "types": "./index.d.ts",
-      "import": "./esm/index.mjs",
-      "require": "./index.js",
-      "default": "./index.js"
-    }
-  },
-  "scripts": {
-    "test": "nyc --reporter=lcov mocha && npm run check-coverage",
-    "check-coverage": "nyc check-coverage --statements 100 --branches 100 --lines 100 --functions 100"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-postgres.git",
-    "directory": "packages/pg-connection-string"
-  },
-  "keywords": [
-    "pg",
-    "connection",
-    "string",
-    "parse"
-  ],
-  "author": "Blaine Bublitz <blaine@iceddev.com> (http://iceddev.com/)",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/brianc/node-postgres/issues"
-  },
-  "homepage": "https://github.com/brianc/node-postgres/tree/master/packages/pg-connection-string",
-  "devDependencies": {
-    "@types/pg": "^8.12.0",
-    "chai": "^4.1.1",
-    "coveralls": "^3.0.4",
-    "istanbul": "^0.4.5",
-    "mocha": "^10.5.2",
-    "nyc": "^15",
-    "tsx": "^4.19.4",
-    "typescript": "^4.0.3"
-  },
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "esm"
-  ],
-  "gitHead": "abff18d6f918c975e8b3dfebc0de3b811ae64bcb"
-}
Index: ckend/node_modules/pg-int8/LICENSE
===================================================================
--- backend/node_modules/pg-int8/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-Copyright © 2017, Charmander <~@charmander.me>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
Index: ckend/node_modules/pg-int8/README.md
===================================================================
--- backend/node_modules/pg-int8/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-[![Build status][ci image]][ci]
-
-64-bit big-endian signed integer-to-string conversion designed for [pg][].
-
-```js
-const readInt8 = require('pg-int8');
-
-readInt8(Buffer.from([0, 1, 2, 3, 4, 5, 6, 7]))
-// '283686952306183'
-```
-
-
-  [pg]: https://github.com/brianc/node-postgres
-
-  [ci]: https://travis-ci.org/charmander/pg-int8
-  [ci image]: https://api.travis-ci.org/charmander/pg-int8.svg
Index: ckend/node_modules/pg-int8/index.js
===================================================================
--- backend/node_modules/pg-int8/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-'use strict';
-
-// selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer
-var BASE = 1000000;
-
-function readInt8(buffer) {
-	var high = buffer.readInt32BE(0);
-	var low = buffer.readUInt32BE(4);
-	var sign = '';
-
-	if (high < 0) {
-		high = ~high + (low === 0);
-		low = (~low + 1) >>> 0;
-		sign = '-';
-	}
-
-	var result = '';
-	var carry;
-	var t;
-	var digits;
-	var pad;
-	var l;
-	var i;
-
-	{
-		carry = high % BASE;
-		high = high / BASE >>> 0;
-
-		t = 0x100000000 * carry + low;
-		low = t / BASE >>> 0;
-		digits = '' + (t - BASE * low);
-
-		if (low === 0 && high === 0) {
-			return sign + digits + result;
-		}
-
-		pad = '';
-		l = 6 - digits.length;
-
-		for (i = 0; i < l; i++) {
-			pad += '0';
-		}
-
-		result = pad + digits + result;
-	}
-
-	{
-		carry = high % BASE;
-		high = high / BASE >>> 0;
-
-		t = 0x100000000 * carry + low;
-		low = t / BASE >>> 0;
-		digits = '' + (t - BASE * low);
-
-		if (low === 0 && high === 0) {
-			return sign + digits + result;
-		}
-
-		pad = '';
-		l = 6 - digits.length;
-
-		for (i = 0; i < l; i++) {
-			pad += '0';
-		}
-
-		result = pad + digits + result;
-	}
-
-	{
-		carry = high % BASE;
-		high = high / BASE >>> 0;
-
-		t = 0x100000000 * carry + low;
-		low = t / BASE >>> 0;
-		digits = '' + (t - BASE * low);
-
-		if (low === 0 && high === 0) {
-			return sign + digits + result;
-		}
-
-		pad = '';
-		l = 6 - digits.length;
-
-		for (i = 0; i < l; i++) {
-			pad += '0';
-		}
-
-		result = pad + digits + result;
-	}
-
-	{
-		carry = high % BASE;
-		t = 0x100000000 * carry + low;
-		digits = '' + t % BASE;
-
-		return sign + digits + result;
-	}
-}
-
-module.exports = readInt8;
Index: ckend/node_modules/pg-int8/package.json
===================================================================
--- backend/node_modules/pg-int8/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-{
-	"name": "pg-int8",
-	"version": "1.0.1",
-	"description": "64-bit big-endian signed integer-to-string conversion",
-	"bugs": "https://github.com/charmander/pg-int8/issues",
-	"license": "ISC",
-	"files": [
-		"index.js"
-	],
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/charmander/pg-int8"
-	},
-	"scripts": {
-		"test": "tap test"
-	},
-	"devDependencies": {
-		"@charmander/eslint-config-base": "1.0.2",
-		"tap": "10.7.3"
-	},
-	"engines": {
-		"node": ">=4.0.0"
-	}
-}
Index: ckend/node_modules/pg-pool/LICENSE
===================================================================
--- backend/node_modules/pg-pool/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2017 Brian M. Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/pg-pool/README.md
===================================================================
--- backend/node_modules/pg-pool/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,376 +1,0 @@
-# pg-pool
-[![Build Status](https://travis-ci.org/brianc/node-pg-pool.svg?branch=master)](https://travis-ci.org/brianc/node-pg-pool)
-
-A connection pool for node-postgres
-
-## install
-```sh
-npm i pg-pool pg
-```
-
-## use
-
-### create
-
-to use pg-pool you must first create an instance of a pool
-
-```js
-const Pool = require('pg-pool')
-
-// by default the pool uses the same
-// configuration as whatever `pg` version you have installed
-const pool = new Pool()
-
-// you can pass properties to the pool
-// these properties are passed unchanged to both the node-postgres Client constructor
-// and the node-pool (https://github.com/coopernurse/node-pool) constructor
-// allowing you to fully configure the behavior of both
-const pool2 = new Pool({
-  database: 'postgres',
-  user: 'brianc',
-  password: 'secret!',
-  port: 5432,
-  ssl: true,
-  max: 20, // set pool max size to 20
-  idleTimeoutMillis: 1000, // close idle clients after 1 second
-  connectionTimeoutMillis: 1000, // return an error after 1 second if connection could not be established
-  maxUses: 7500, // close (and replace) a connection after it has been used 7500 times (see below for discussion)
-})
-
-// you can supply a custom client constructor
-// if you want to use the native postgres client
-const NativeClient = require('pg').native.Client
-const nativePool = new Pool({ Client: NativeClient })
-
-// you can even pool pg-native clients directly
-const PgNativeClient = require('pg-native')
-const pgNativePool = new Pool({ Client: PgNativeClient })
-```
-
-##### Note:
-The Pool constructor does not support passing a Database URL as the parameter. To use pg-pool on heroku, for example, you need to parse the URL into a config object. Here is an example of how to parse a Database URL.
-
-```js
-const Pool = require('pg-pool');
-const url = require('url')
-
-const params = url.parse(process.env.DATABASE_URL);
-const auth = params.auth.split(':');
-
-const config = {
-  user: auth[0],
-  password: auth[1],
-  host: params.hostname,
-  port: params.port,
-  database: params.pathname.split('/')[1],
-  ssl: true
-};
-
-const pool = new Pool(config);
-
-/*
-  Transforms, 'postgres://DBuser:secret@DBHost:#####/myDB', into
-  config = {
-    user: 'DBuser',
-    password: 'secret',
-    host: 'DBHost',
-    port: '#####',
-    database: 'myDB',
-    ssl: true
-  }
-*/
-``` 
-
-### acquire clients with a promise
-
-pg-pool supports a fully promise-based api for acquiring clients
-
-```js
-const pool = new Pool()
-pool.connect().then(client => {
-  client.query('select $1::text as name', ['pg-pool']).then(res => {
-    client.release()
-    console.log('hello from', res.rows[0].name)
-  })
-  .catch(e => {
-    client.release()
-    console.error('query error', e.message, e.stack)
-  })
-})
-```
-
-### plays nice with async/await
-
-this ends up looking much nicer if you're using [co](https://github.com/tj/co) or async/await:
-
-```js
-// with async/await
-(async () => {
-  const pool = new Pool()
-  const client = await pool.connect()
-  try {
-    const result = await client.query('select $1::text as name', ['brianc'])
-    console.log('hello from', result.rows[0])
-  } finally {
-    client.release()
-  }
-})().catch(e => console.error(e.message, e.stack))
-
-// with co
-co(function * () {
-  const client = yield pool.connect()
-  try {
-    const result = yield client.query('select $1::text as name', ['brianc'])
-    console.log('hello from', result.rows[0])
-  } finally {
-    client.release()
-  }
-}).catch(e => console.error(e.message, e.stack))
-```
-
-### your new favorite helper method
-
-because its so common to just run a query and return the client to the pool afterward pg-pool has this built-in:
-
-```js
-const pool = new Pool()
-const time = await pool.query('SELECT NOW()')
-const name = await pool.query('select $1::text as name', ['brianc'])
-console.log(name.rows[0].name, 'says hello at', time.rows[0].now)
-```
-
-you can also use a callback here if you'd like:
-
-```js
-const pool = new Pool()
-pool.query('SELECT $1::text as name', ['brianc'], function (err, res) {
-  console.log(res.rows[0].name) // brianc
-})
-```
-
-__pro tip:__ unless you need to run a transaction (which requires a single client for multiple queries) or you
-have some other edge case like [streaming rows](https://github.com/brianc/node-pg-query-stream) or using a [cursor](https://github.com/brianc/node-pg-cursor)
-you should almost always just use `pool.query`.  Its easy, it does the right thing :tm:, and wont ever forget to return
-clients back to the pool after the query is done.
-
-### drop-in backwards compatible
-
-pg-pool still and will always support the traditional callback api for acquiring a client.  This is the exact API node-postgres has shipped with for years:
-
-```js
-const pool = new Pool()
-pool.connect((err, client, done) => {
-  if (err) return done(err)
-
-  client.query('SELECT $1::text as name', ['pg-pool'], (err, res) => {
-    done()
-    if (err) {
-      return console.error('query error', err.message, err.stack)
-    }
-    console.log('hello from', res.rows[0].name)
-  })
-})
-```
-
-### shut it down
-
-When you are finished with the pool if all the clients are idle the pool will close them after `config.idleTimeoutMillis` and your app
-will shutdown gracefully.  If you don't want to wait for the timeout you can end the pool as follows:
-
-```js
-const pool = new Pool()
-const client = await pool.connect()
-console.log(await client.query('select now()'))
-client.release()
-await pool.end()
-```
-
-### a note on instances
-
-The pool should be a __long-lived object__ in your application.  Generally you'll want to instantiate one pool when your app starts up and use the same instance of the pool throughout the lifetime of your application.  If you are frequently creating a new pool within your code you likely don't have your pool initialization code in the correct place.  Example:
-
-```js
-// assume this is a file in your program at ./your-app/lib/db.js
-
-// correct usage: create the pool and let it live
-// 'globally' here, controlling access to it through exported methods
-const pool = new pg.Pool()
-
-// this is the right way to export the query method
-module.exports.query = (text, values) => {
-  console.log('query:', text, values)
-  return pool.query(text, values)
-}
-
-// this would be the WRONG way to export the connect method
-module.exports.connect = () => {
-  // notice how we would be creating a pool instance here
-  // every time we called 'connect' to get a new client?
-  // that's a bad thing & results in creating an unbounded
-  // number of pools & therefore connections
-  const aPool = new pg.Pool()
-  return aPool.connect()
-}
-```
-
-### events
-
-Every instance of a `Pool` is an event emitter.  These instances emit the following events:
-
-#### error
-
-Emitted whenever an idle client in the pool encounters an error.  This is common when your PostgreSQL server shuts down, reboots, or a network partition otherwise causes it to become unavailable while your pool has connected clients.
-
-Example:
-
-```js
-const Pool = require('pg-pool')
-const pool = new Pool()
-
-// attach an error handler to the pool for when a connected, idle client
-// receives an error by being disconnected, etc
-pool.on('error', function(error, client) {
-  // handle this in the same way you would treat process.on('uncaughtException')
-  // it is supplied the error as well as the idle client which received the error
-})
-```
-
-#### connect
-
-Fired whenever the pool creates a __new__ `pg.Client` instance and successfully connects it to the backend.
-
-Example:
-
-```js
-const Pool = require('pg-pool')
-const pool = new Pool()
-
-const count = 0
-
-pool.on('connect', client => {
-  client.count = count++
-})
-
-pool
-  .connect()
-  .then(client => {
-    return client
-      .query('SELECT $1::int AS "clientCount"', [client.count])
-      .then(res => console.log(res.rows[0].clientCount)) // outputs 0
-      .then(() => client)
-  })
-  .then(client => client.release())
-
-```
-
-#### acquire
-
-Fired whenever a client is acquired from the pool
-
-Example:
-
-This allows you to count the number of clients which have ever been acquired from the pool.
-
-```js
-const Pool = require('pg-pool')
-const pool = new Pool()
-
-const acquireCount = 0
-pool.on('acquire', function (client) {
-  acquireCount++
-})
-
-const connectCount = 0
-pool.on('connect', function () {
-  connectCount++
-})
-
-for (let i = 0; i < 200; i++) {
-  pool.query('SELECT NOW()')
-}
-
-setTimeout(function () {
-  console.log('connect count:', connectCount) // output: connect count: 10
-  console.log('acquire count:', acquireCount) // output: acquire count: 200
-}, 100)
-
-```
-
-### environment variables
-
-pg-pool & node-postgres support some of the same environment variables as `psql` supports.  The most common are:
-
-```
-PGDATABASE=my_db
-PGUSER=username
-PGPASSWORD="my awesome password"
-PGPORT=5432
-PGSSLMODE=require
-```
-
-Usually I will export these into my local environment via a `.env` file with environment settings or export them in `~/.bash_profile` or something similar.  This way I get configurability which works with both the postgres suite of tools (`psql`, `pg_dump`, `pg_restore`) and node, I can vary the environment variables locally and in production, and it supports the concept of a [12-factor app](http://12factor.net/) out of the box.
-
-## bring your own promise
-
-In versions of node `<=0.12.x` there is no native promise implementation available globally.  You can polyfill the promise globally like this:
-
-```js
-// first run `npm install promise-polyfill --save
-if (typeof Promise == 'undefined') {
-  global.Promise = require('promise-polyfill')
-}
-```
-
-You can use any other promise implementation you'd like.  The pool also allows you to configure the promise implementation on a per-pool level:
-
-```js
-const bluebirdPool = new Pool({
-  Promise: require('bluebird')
-})
-```
-
-__please note:__ in node `<=0.12.x` the pool will throw if you do not provide a promise constructor in one of the two ways mentioned above.  In node `>=4.0.0` the pool will use the native promise implementation by default; however, the two methods above still allow you to "bring your own."
-
-## maxUses and read-replica autoscaling (e.g. AWS Aurora)
-
-The maxUses config option can help an application instance rebalance load against a replica set that has been auto-scaled after the connection pool is already full of healthy connections.
-
-The mechanism here is that a connection is considered "expended" after it has been acquired and released `maxUses` number of times.  Depending on the load on your system, this means there will be an approximate time in which any given connection will live, thus creating a window for rebalancing.
-
-Imagine a scenario where you have 10 app instances providing an API running against a replica cluster of 3 that are accessed via a round-robin DNS entry.  Each instance runs a connection pool size of 20.  With an ambient load of 50 requests per second, the connection pool will likely fill up in a few minutes with healthy connections.
-
-If you have weekly bursts of traffic which peak at 1,000 requests per second, you might want to grow your replicas to 10 during this period.  Without setting `maxUses`, the new replicas will not be adopted by the app servers without an intervention -- namely, restarting each in turn in order to build up new connection pools that are balanced against all the replicas.  Adding additional app server instances will help to some extent because they will adopt all the replicas in an even way, but the initial app servers will continue to focus additional load on the original replicas.
-
-This is where the `maxUses` configuration option comes into play.  Setting `maxUses` to 7500 will ensure that over a period of 30 minutes or so the new replicas will be adopted as the pre-existing connections are closed and replaced with new ones, thus creating a window for eventual balance.
-
-You'll want to test based on your own scenarios, but one way to make a first guess at `maxUses` is to identify an acceptable window for rebalancing and then solve for the value:
-
-```
-maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize
-```
-
-In the example above, assuming we acquire and release 1 connection per request and we are aiming for a 30 minute rebalancing window:
-
-```
-maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize
-   7200 =        1800            *          1000          /        10       /    25
-```
-
-## tests
-
-To run tests clone the repo, `npm i` in the working dir, and then run `npm test`
-
-## contributions
-
-I love contributions.  Please make sure they have tests, and submit a PR.  If you're not sure if the issue is worth it or will be accepted it never hurts to open an issue to begin the conversation.  If you're interested in keeping up with node-postgres releated stuff, you can follow me on twitter at [@briancarlson](https://twitter.com/briancarlson) - I generally announce any noteworthy updates there.
-
-## license
-
-The MIT License (MIT)
-Copyright (c) 2016 Brian M. Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/pg-pool/esm/index.mjs
===================================================================
--- backend/node_modules/pg-pool/esm/index.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-// ESM wrapper for pg-pool
-import Pool from '../index.js'
-
-// Export as default only to match CJS module
-export default Pool
Index: ckend/node_modules/pg-pool/index.js
===================================================================
--- backend/node_modules/pg-pool/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,476 +1,0 @@
-'use strict'
-const EventEmitter = require('events').EventEmitter
-
-const NOOP = function () {}
-
-const removeWhere = (list, predicate) => {
-  const i = list.findIndex(predicate)
-
-  return i === -1 ? undefined : list.splice(i, 1)[0]
-}
-
-class IdleItem {
-  constructor(client, idleListener, timeoutId) {
-    this.client = client
-    this.idleListener = idleListener
-    this.timeoutId = timeoutId
-  }
-}
-
-class PendingItem {
-  constructor(callback) {
-    this.callback = callback
-  }
-}
-
-function throwOnDoubleRelease() {
-  throw new Error('Release called on client which has already been released to the pool.')
-}
-
-function promisify(Promise, callback) {
-  if (callback) {
-    return { callback: callback, result: undefined }
-  }
-  let rej
-  let res
-  const cb = function (err, client) {
-    err ? rej(err) : res(client)
-  }
-  const result = new Promise(function (resolve, reject) {
-    res = resolve
-    rej = reject
-  }).catch((err) => {
-    // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the
-    // application that created the query
-    Error.captureStackTrace(err)
-    throw err
-  })
-  return { callback: cb, result: result }
-}
-
-function makeIdleListener(pool, client) {
-  return function idleListener(err) {
-    err.client = client
-
-    client.removeListener('error', idleListener)
-    client.on('error', () => {
-      pool.log('additional client error after disconnection due to error', err)
-    })
-    pool._remove(client)
-    // TODO - document that once the pool emits an error
-    // the client has already been closed & purged and is unusable
-    pool.emit('error', err, client)
-  }
-}
-
-class Pool extends EventEmitter {
-  constructor(options, Client) {
-    super()
-    this.options = Object.assign({}, options)
-
-    if (options != null && 'password' in options) {
-      // "hiding" the password so it doesn't show up in stack traces
-      // or if the client is console.logged
-      Object.defineProperty(this.options, 'password', {
-        configurable: true,
-        enumerable: false,
-        writable: true,
-        value: options.password,
-      })
-    }
-    if (options != null && options.ssl && options.ssl.key) {
-      // "hiding" the ssl->key so it doesn't show up in stack traces
-      // or if the client is console.logged
-      Object.defineProperty(this.options.ssl, 'key', {
-        enumerable: false,
-      })
-    }
-
-    this.options.max = this.options.max || this.options.poolSize || 10
-    this.options.min = this.options.min || 0
-    this.options.maxUses = this.options.maxUses || Infinity
-    this.options.allowExitOnIdle = this.options.allowExitOnIdle || false
-    this.options.maxLifetimeSeconds = this.options.maxLifetimeSeconds || 0
-    this.log = this.options.log || function () {}
-    this.Client = this.options.Client || Client || require('pg').Client
-    this.Promise = this.options.Promise || global.Promise
-
-    if (typeof this.options.idleTimeoutMillis === 'undefined') {
-      this.options.idleTimeoutMillis = 10000
-    }
-
-    this._clients = []
-    this._idle = []
-    this._expired = new WeakSet()
-    this._pendingQueue = []
-    this._endCallback = undefined
-    this.ending = false
-    this.ended = false
-  }
-
-  _isFull() {
-    return this._clients.length >= this.options.max
-  }
-
-  _isAboveMin() {
-    return this._clients.length > this.options.min
-  }
-
-  _pulseQueue() {
-    this.log('pulse queue')
-    if (this.ended) {
-      this.log('pulse queue ended')
-      return
-    }
-    if (this.ending) {
-      this.log('pulse queue on ending')
-      if (this._idle.length) {
-        this._idle.slice().map((item) => {
-          this._remove(item.client)
-        })
-      }
-      if (!this._clients.length) {
-        this.ended = true
-        this._endCallback()
-      }
-      return
-    }
-
-    // if we don't have any waiting, do nothing
-    if (!this._pendingQueue.length) {
-      this.log('no queued requests')
-      return
-    }
-    // if we don't have any idle clients and we have no more room do nothing
-    if (!this._idle.length && this._isFull()) {
-      return
-    }
-    const pendingItem = this._pendingQueue.shift()
-    if (this._idle.length) {
-      const idleItem = this._idle.pop()
-      clearTimeout(idleItem.timeoutId)
-      const client = idleItem.client
-      client.ref && client.ref()
-      const idleListener = idleItem.idleListener
-
-      return this._acquireClient(client, pendingItem, idleListener, false)
-    }
-    if (!this._isFull()) {
-      return this.newClient(pendingItem)
-    }
-    throw new Error('unexpected condition')
-  }
-
-  _remove(client) {
-    const removed = removeWhere(this._idle, (item) => item.client === client)
-
-    if (removed !== undefined) {
-      clearTimeout(removed.timeoutId)
-    }
-
-    this._clients = this._clients.filter((c) => c !== client)
-    client.end()
-    this.emit('remove', client)
-  }
-
-  connect(cb) {
-    if (this.ending) {
-      const err = new Error('Cannot use a pool after calling end on the pool')
-      return cb ? cb(err) : this.Promise.reject(err)
-    }
-
-    const response = promisify(this.Promise, cb)
-    const result = response.result
-
-    // if we don't have to connect a new client, don't do so
-    if (this._isFull() || this._idle.length) {
-      // if we have idle clients schedule a pulse immediately
-      if (this._idle.length) {
-        process.nextTick(() => this._pulseQueue())
-      }
-
-      if (!this.options.connectionTimeoutMillis) {
-        this._pendingQueue.push(new PendingItem(response.callback))
-        return result
-      }
-
-      const queueCallback = (err, res, done) => {
-        clearTimeout(tid)
-        response.callback(err, res, done)
-      }
-
-      const pendingItem = new PendingItem(queueCallback)
-
-      // set connection timeout on checking out an existing client
-      const tid = setTimeout(() => {
-        // remove the callback from pending waiters because
-        // we're going to call it with a timeout error
-        removeWhere(this._pendingQueue, (i) => i.callback === queueCallback)
-        pendingItem.timedOut = true
-        response.callback(new Error('timeout exceeded when trying to connect'))
-      }, this.options.connectionTimeoutMillis)
-
-      if (tid.unref) {
-        tid.unref()
-      }
-
-      this._pendingQueue.push(pendingItem)
-      return result
-    }
-
-    this.newClient(new PendingItem(response.callback))
-
-    return result
-  }
-
-  newClient(pendingItem) {
-    const client = new this.Client(this.options)
-    this._clients.push(client)
-    const idleListener = makeIdleListener(this, client)
-
-    this.log('checking client timeout')
-
-    // connection timeout logic
-    let tid
-    let timeoutHit = false
-    if (this.options.connectionTimeoutMillis) {
-      tid = setTimeout(() => {
-        this.log('ending client due to timeout')
-        timeoutHit = true
-        // force kill the node driver, and let libpq do its teardown
-        client.connection ? client.connection.stream.destroy() : client.end()
-      }, this.options.connectionTimeoutMillis)
-    }
-
-    this.log('connecting new client')
-    client.connect((err) => {
-      if (tid) {
-        clearTimeout(tid)
-      }
-      client.on('error', idleListener)
-      if (err) {
-        this.log('client failed to connect', err)
-        // remove the dead client from our list of clients
-        this._clients = this._clients.filter((c) => c !== client)
-        if (timeoutHit) {
-          err = new Error('Connection terminated due to connection timeout', { cause: err })
-        }
-
-        // this client won’t be released, so move on immediately
-        this._pulseQueue()
-
-        if (!pendingItem.timedOut) {
-          pendingItem.callback(err, undefined, NOOP)
-        }
-      } else {
-        this.log('new client connected')
-
-        if (this.options.maxLifetimeSeconds !== 0) {
-          const maxLifetimeTimeout = setTimeout(() => {
-            this.log('ending client due to expired lifetime')
-            this._expired.add(client)
-            const idleIndex = this._idle.findIndex((idleItem) => idleItem.client === client)
-            if (idleIndex !== -1) {
-              this._acquireClient(
-                client,
-                new PendingItem((err, client, clientRelease) => clientRelease()),
-                idleListener,
-                false
-              )
-            }
-          }, this.options.maxLifetimeSeconds * 1000)
-
-          maxLifetimeTimeout.unref()
-          client.once('end', () => clearTimeout(maxLifetimeTimeout))
-        }
-
-        return this._acquireClient(client, pendingItem, idleListener, true)
-      }
-    })
-  }
-
-  // acquire a client for a pending work item
-  _acquireClient(client, pendingItem, idleListener, isNew) {
-    if (isNew) {
-      this.emit('connect', client)
-    }
-
-    this.emit('acquire', client)
-
-    client.release = this._releaseOnce(client, idleListener)
-
-    client.removeListener('error', idleListener)
-
-    if (!pendingItem.timedOut) {
-      if (isNew && this.options.verify) {
-        this.options.verify(client, (err) => {
-          if (err) {
-            client.release(err)
-            return pendingItem.callback(err, undefined, NOOP)
-          }
-
-          pendingItem.callback(undefined, client, client.release)
-        })
-      } else {
-        pendingItem.callback(undefined, client, client.release)
-      }
-    } else {
-      if (isNew && this.options.verify) {
-        this.options.verify(client, client.release)
-      } else {
-        client.release()
-      }
-    }
-  }
-
-  // returns a function that wraps _release and throws if called more than once
-  _releaseOnce(client, idleListener) {
-    let released = false
-
-    return (err) => {
-      if (released) {
-        throwOnDoubleRelease()
-      }
-
-      released = true
-      this._release(client, idleListener, err)
-    }
-  }
-
-  // release a client back to the poll, include an error
-  // to remove it from the pool
-  _release(client, idleListener, err) {
-    client.on('error', idleListener)
-
-    client._poolUseCount = (client._poolUseCount || 0) + 1
-
-    this.emit('release', err, client)
-
-    // TODO(bmc): expose a proper, public interface _queryable and _ending
-    if (err || this.ending || !client._queryable || client._ending || client._poolUseCount >= this.options.maxUses) {
-      if (client._poolUseCount >= this.options.maxUses) {
-        this.log('remove expended client')
-      }
-      this._remove(client)
-      this._pulseQueue()
-      return
-    }
-
-    const isExpired = this._expired.has(client)
-    if (isExpired) {
-      this.log('remove expired client')
-      this._expired.delete(client)
-      this._remove(client)
-      this._pulseQueue()
-      return
-    }
-
-    // idle timeout
-    let tid
-    if (this.options.idleTimeoutMillis && this._isAboveMin()) {
-      tid = setTimeout(() => {
-        this.log('remove idle client')
-        this._remove(client)
-      }, this.options.idleTimeoutMillis)
-
-      if (this.options.allowExitOnIdle) {
-        // allow Node to exit if this is all that's left
-        tid.unref()
-      }
-    }
-
-    if (this.options.allowExitOnIdle) {
-      client.unref()
-    }
-
-    this._idle.push(new IdleItem(client, idleListener, tid))
-    this._pulseQueue()
-  }
-
-  query(text, values, cb) {
-    // guard clause against passing a function as the first parameter
-    if (typeof text === 'function') {
-      const response = promisify(this.Promise, text)
-      setImmediate(function () {
-        return response.callback(new Error('Passing a function as the first parameter to pool.query is not supported'))
-      })
-      return response.result
-    }
-
-    // allow plain text query without values
-    if (typeof values === 'function') {
-      cb = values
-      values = undefined
-    }
-    const response = promisify(this.Promise, cb)
-    cb = response.callback
-
-    this.connect((err, client) => {
-      if (err) {
-        return cb(err)
-      }
-
-      let clientReleased = false
-      const onError = (err) => {
-        if (clientReleased) {
-          return
-        }
-        clientReleased = true
-        client.release(err)
-        cb(err)
-      }
-
-      client.once('error', onError)
-      this.log('dispatching query')
-      try {
-        client.query(text, values, (err, res) => {
-          this.log('query dispatched')
-          client.removeListener('error', onError)
-          if (clientReleased) {
-            return
-          }
-          clientReleased = true
-          client.release(err)
-          if (err) {
-            return cb(err)
-          }
-          return cb(undefined, res)
-        })
-      } catch (err) {
-        client.release(err)
-        return cb(err)
-      }
-    })
-    return response.result
-  }
-
-  end(cb) {
-    this.log('ending')
-    if (this.ending) {
-      const err = new Error('Called end on pool more than once')
-      return cb ? cb(err) : this.Promise.reject(err)
-    }
-    this.ending = true
-    const promised = promisify(this.Promise, cb)
-    this._endCallback = promised.callback
-    this._pulseQueue()
-    return promised.result
-  }
-
-  get waitingCount() {
-    return this._pendingQueue.length
-  }
-
-  get idleCount() {
-    return this._idle.length
-  }
-
-  get expiredCount() {
-    return this._clients.reduce((acc, client) => acc + (this._expired.has(client) ? 1 : 0), 0)
-  }
-
-  get totalCount() {
-    return this._clients.length
-  }
-}
-module.exports = Pool
Index: ckend/node_modules/pg-pool/package.json
===================================================================
--- backend/node_modules/pg-pool/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-{
-  "name": "pg-pool",
-  "version": "3.10.0",
-  "description": "Connection pool for node-postgres",
-  "main": "index.js",
-  "exports": {
-    ".": {
-      "import": "./esm/index.mjs",
-      "require": "./index.js",
-      "default": "./index.js"
-    }
-  },
-  "directories": {
-    "test": "test"
-  },
-  "scripts": {
-    "test": " node_modules/.bin/mocha"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-postgres.git",
-    "directory": "packages/pg-pool"
-  },
-  "keywords": [
-    "pg",
-    "postgres",
-    "pool",
-    "database"
-  ],
-  "author": "Brian M. Carlson",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/brianc/node-pg-pool/issues"
-  },
-  "homepage": "https://github.com/brianc/node-pg-pool#readme",
-  "devDependencies": {
-    "bluebird": "3.7.2",
-    "co": "4.6.0",
-    "expect.js": "0.3.1",
-    "lodash": "^4.17.11",
-    "mocha": "^10.5.2"
-  },
-  "peerDependencies": {
-    "pg": ">=8.0"
-  },
-  "files": [
-    "index.js",
-    "esm"
-  ],
-  "gitHead": "abff18d6f918c975e8b3dfebc0de3b811ae64bcb"
-}
Index: ckend/node_modules/pg-protocol/LICENSE
===================================================================
--- backend/node_modules/pg-protocol/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2010 - 2021 Brian Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/pg-protocol/README.md
===================================================================
--- backend/node_modules/pg-protocol/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-# pg-protocol
-
-Low level postgres wire protocol parser and serializer written in Typescript. Used by node-postgres. Needs more documentation. :smile:
Index: ckend/node_modules/pg-protocol/dist/b.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/b.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export {};
Index: ckend/node_modules/pg-protocol/dist/b.js
===================================================================
--- backend/node_modules/pg-protocol/dist/b.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-"use strict";
-// file for microbenchmarking
-Object.defineProperty(exports, "__esModule", { value: true });
-const buffer_reader_1 = require("./buffer-reader");
-const LOOPS = 1000;
-let count = 0;
-const start = Date.now();
-const reader = new buffer_reader_1.BufferReader();
-const buffer = Buffer.from([33, 33, 33, 33, 33, 33, 33, 0]);
-const run = () => {
-    if (count > LOOPS) {
-        console.log(Date.now() - start);
-        return;
-    }
-    count++;
-    for (let i = 0; i < LOOPS; i++) {
-        reader.setBuffer(0, buffer);
-        reader.cstring();
-    }
-    setImmediate(run);
-};
-run();
-//# sourceMappingURL=b.js.map
Index: ckend/node_modules/pg-protocol/dist/b.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/b.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"b.js","sourceRoot":"","sources":["../src/b.ts"],"names":[],"mappings":";AAAA,6BAA6B;;AAE7B,mDAA8C;AAE9C,MAAM,KAAK,GAAG,IAAI,CAAA;AAClB,IAAI,KAAK,GAAG,CAAC,CAAA;AACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AAExB,MAAM,MAAM,GAAG,IAAI,4BAAY,EAAE,CAAA;AACjC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AAE3D,MAAM,GAAG,GAAG,GAAG,EAAE;IACf,IAAI,KAAK,GAAG,KAAK,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAA;QAC/B,OAAM;KACP;IACD,KAAK,EAAE,CAAA;IACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC3B,MAAM,CAAC,OAAO,EAAE,CAAA;KACjB;IACD,YAAY,CAAC,GAAG,CAAC,CAAA;AACnB,CAAC,CAAA;AAED,GAAG,EAAE,CAAA"}
Index: ckend/node_modules/pg-protocol/dist/buffer-reader.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-reader.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-/// <reference types="node" />
-export declare class BufferReader {
-    private offset;
-    private buffer;
-    private encoding;
-    constructor(offset?: number);
-    setBuffer(offset: number, buffer: Buffer): void;
-    int16(): number;
-    byte(): number;
-    int32(): number;
-    uint32(): number;
-    string(length: number): string;
-    cstring(): string;
-    bytes(length: number): Buffer;
-}
Index: ckend/node_modules/pg-protocol/dist/buffer-reader.js
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-reader.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.BufferReader = void 0;
-const emptyBuffer = Buffer.allocUnsafe(0);
-class BufferReader {
-    constructor(offset = 0) {
-        this.offset = offset;
-        this.buffer = emptyBuffer;
-        // TODO(bmc): support non-utf8 encoding?
-        this.encoding = 'utf-8';
-    }
-    setBuffer(offset, buffer) {
-        this.offset = offset;
-        this.buffer = buffer;
-    }
-    int16() {
-        const result = this.buffer.readInt16BE(this.offset);
-        this.offset += 2;
-        return result;
-    }
-    byte() {
-        const result = this.buffer[this.offset];
-        this.offset++;
-        return result;
-    }
-    int32() {
-        const result = this.buffer.readInt32BE(this.offset);
-        this.offset += 4;
-        return result;
-    }
-    uint32() {
-        const result = this.buffer.readUInt32BE(this.offset);
-        this.offset += 4;
-        return result;
-    }
-    string(length) {
-        const result = this.buffer.toString(this.encoding, this.offset, this.offset + length);
-        this.offset += length;
-        return result;
-    }
-    cstring() {
-        const start = this.offset;
-        let end = start;
-        // eslint-disable-next-line no-empty
-        while (this.buffer[end++] !== 0) { }
-        this.offset = end;
-        return this.buffer.toString(this.encoding, start, end - 1);
-    }
-    bytes(length) {
-        const result = this.buffer.slice(this.offset, this.offset + length);
-        this.offset += length;
-        return result;
-    }
-}
-exports.BufferReader = BufferReader;
-//# sourceMappingURL=buffer-reader.js.map
Index: ckend/node_modules/pg-protocol/dist/buffer-reader.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-reader.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"buffer-reader.js","sourceRoot":"","sources":["../src/buffer-reader.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AAEzC,MAAa,YAAY;IAMvB,YAAoB,SAAiB,CAAC;QAAlB,WAAM,GAAN,MAAM,CAAY;QAL9B,WAAM,GAAW,WAAW,CAAA;QAEpC,wCAAwC;QAChC,aAAQ,GAAW,OAAO,CAAA;IAEO,CAAC;IAEnC,SAAS,CAAC,MAAc,EAAE,MAAc;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEM,KAAK;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,IAAI;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,MAAM;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,MAAM,CAAC,MAAc;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;QACrF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;QACrB,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,GAAG,GAAG,KAAK,CAAA;QACf,oCAAoC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,GAAE;QACnC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;IAC5D,CAAC;IAEM,KAAK,CAAC,MAAc;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;QACnE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAA;QACrB,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAzDD,oCAyDC"}
Index: ckend/node_modules/pg-protocol/dist/buffer-writer.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-writer.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/// <reference types="node" />
-export declare class Writer {
-    private size;
-    private buffer;
-    private offset;
-    private headerPosition;
-    constructor(size?: number);
-    private ensure;
-    addInt32(num: number): Writer;
-    addInt16(num: number): Writer;
-    addCString(string: string): Writer;
-    addString(string?: string): Writer;
-    add(otherBuffer: Buffer): Writer;
-    private join;
-    flush(code?: number): Buffer;
-}
Index: ckend/node_modules/pg-protocol/dist/buffer-writer.js
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-writer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,81 +1,0 @@
-"use strict";
-//binary data writer tuned for encoding binary specific to the postgres binary protocol
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Writer = void 0;
-class Writer {
-    constructor(size = 256) {
-        this.size = size;
-        this.offset = 5;
-        this.headerPosition = 0;
-        this.buffer = Buffer.allocUnsafe(size);
-    }
-    ensure(size) {
-        const remaining = this.buffer.length - this.offset;
-        if (remaining < size) {
-            const oldBuffer = this.buffer;
-            // exponential growth factor of around ~ 1.5
-            // https://stackoverflow.com/questions/2269063/buffer-growth-strategy
-            const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size;
-            this.buffer = Buffer.allocUnsafe(newSize);
-            oldBuffer.copy(this.buffer);
-        }
-    }
-    addInt32(num) {
-        this.ensure(4);
-        this.buffer[this.offset++] = (num >>> 24) & 0xff;
-        this.buffer[this.offset++] = (num >>> 16) & 0xff;
-        this.buffer[this.offset++] = (num >>> 8) & 0xff;
-        this.buffer[this.offset++] = (num >>> 0) & 0xff;
-        return this;
-    }
-    addInt16(num) {
-        this.ensure(2);
-        this.buffer[this.offset++] = (num >>> 8) & 0xff;
-        this.buffer[this.offset++] = (num >>> 0) & 0xff;
-        return this;
-    }
-    addCString(string) {
-        if (!string) {
-            this.ensure(1);
-        }
-        else {
-            const len = Buffer.byteLength(string);
-            this.ensure(len + 1); // +1 for null terminator
-            this.buffer.write(string, this.offset, 'utf-8');
-            this.offset += len;
-        }
-        this.buffer[this.offset++] = 0; // null terminator
-        return this;
-    }
-    addString(string = '') {
-        const len = Buffer.byteLength(string);
-        this.ensure(len);
-        this.buffer.write(string, this.offset);
-        this.offset += len;
-        return this;
-    }
-    add(otherBuffer) {
-        this.ensure(otherBuffer.length);
-        otherBuffer.copy(this.buffer, this.offset);
-        this.offset += otherBuffer.length;
-        return this;
-    }
-    join(code) {
-        if (code) {
-            this.buffer[this.headerPosition] = code;
-            //length is everything in this packet minus the code
-            const length = this.offset - (this.headerPosition + 1);
-            this.buffer.writeInt32BE(length, this.headerPosition + 1);
-        }
-        return this.buffer.slice(code ? 0 : 5, this.offset);
-    }
-    flush(code) {
-        const result = this.join(code);
-        this.offset = 5;
-        this.headerPosition = 0;
-        this.buffer = Buffer.allocUnsafe(this.size);
-        return result;
-    }
-}
-exports.Writer = Writer;
-//# sourceMappingURL=buffer-writer.js.map
Index: ckend/node_modules/pg-protocol/dist/buffer-writer.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/buffer-writer.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"buffer-writer.js","sourceRoot":"","sources":["../src/buffer-writer.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/dist/inbound-parser.test.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/inbound-parser.test.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export {};
Index: ckend/node_modules/pg-protocol/dist/inbound-parser.test.js
===================================================================
--- backend/node_modules/pg-protocol/dist/inbound-parser.test.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,524 +1,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const test_buffers_1 = __importDefault(require("./testing/test-buffers"));
-const buffer_list_1 = __importDefault(require("./testing/buffer-list"));
-const _1 = require(".");
-const assert_1 = __importDefault(require("assert"));
-const stream_1 = require("stream");
-const authOkBuffer = test_buffers_1.default.authenticationOk();
-const paramStatusBuffer = test_buffers_1.default.parameterStatus('client_encoding', 'UTF8');
-const readyForQueryBuffer = test_buffers_1.default.readyForQuery();
-const backendKeyDataBuffer = test_buffers_1.default.backendKeyData(1, 2);
-const commandCompleteBuffer = test_buffers_1.default.commandComplete('SELECT 3');
-const parseCompleteBuffer = test_buffers_1.default.parseComplete();
-const bindCompleteBuffer = test_buffers_1.default.bindComplete();
-const portalSuspendedBuffer = test_buffers_1.default.portalSuspended();
-const row1 = {
-    name: 'id',
-    tableID: 1,
-    attributeNumber: 2,
-    dataTypeID: 3,
-    dataTypeSize: 4,
-    typeModifier: 5,
-    formatCode: 0,
-};
-const oneRowDescBuff = test_buffers_1.default.rowDescription([row1]);
-row1.name = 'bang';
-const twoRowBuf = test_buffers_1.default.rowDescription([
-    row1,
-    {
-        name: 'whoah',
-        tableID: 10,
-        attributeNumber: 11,
-        dataTypeID: 12,
-        dataTypeSize: 13,
-        typeModifier: 14,
-        formatCode: 0,
-    },
-]);
-const rowWithBigOids = {
-    name: 'bigoid',
-    tableID: 3000000001,
-    attributeNumber: 2,
-    dataTypeID: 3000000003,
-    dataTypeSize: 4,
-    typeModifier: 5,
-    formatCode: 0,
-};
-const bigOidDescBuff = test_buffers_1.default.rowDescription([rowWithBigOids]);
-const emptyRowFieldBuf = test_buffers_1.default.dataRow([]);
-const oneFieldBuf = test_buffers_1.default.dataRow(['test']);
-const expectedAuthenticationOkayMessage = {
-    name: 'authenticationOk',
-    length: 8,
-};
-const expectedParameterStatusMessage = {
-    name: 'parameterStatus',
-    parameterName: 'client_encoding',
-    parameterValue: 'UTF8',
-    length: 25,
-};
-const expectedBackendKeyDataMessage = {
-    name: 'backendKeyData',
-    processID: 1,
-    secretKey: 2,
-};
-const expectedReadyForQueryMessage = {
-    name: 'readyForQuery',
-    length: 5,
-    status: 'I',
-};
-const expectedCommandCompleteMessage = {
-    name: 'commandComplete',
-    length: 13,
-    text: 'SELECT 3',
-};
-const emptyRowDescriptionBuffer = new buffer_list_1.default()
-    .addInt16(0) // number of fields
-    .join(true, 'T');
-const expectedEmptyRowDescriptionMessage = {
-    name: 'rowDescription',
-    length: 6,
-    fieldCount: 0,
-    fields: [],
-};
-const expectedOneRowMessage = {
-    name: 'rowDescription',
-    length: 27,
-    fieldCount: 1,
-    fields: [
-        {
-            name: 'id',
-            tableID: 1,
-            columnID: 2,
-            dataTypeID: 3,
-            dataTypeSize: 4,
-            dataTypeModifier: 5,
-            format: 'text',
-        },
-    ],
-};
-const expectedTwoRowMessage = {
-    name: 'rowDescription',
-    length: 53,
-    fieldCount: 2,
-    fields: [
-        {
-            name: 'bang',
-            tableID: 1,
-            columnID: 2,
-            dataTypeID: 3,
-            dataTypeSize: 4,
-            dataTypeModifier: 5,
-            format: 'text',
-        },
-        {
-            name: 'whoah',
-            tableID: 10,
-            columnID: 11,
-            dataTypeID: 12,
-            dataTypeSize: 13,
-            dataTypeModifier: 14,
-            format: 'text',
-        },
-    ],
-};
-const expectedBigOidMessage = {
-    name: 'rowDescription',
-    length: 31,
-    fieldCount: 1,
-    fields: [
-        {
-            name: 'bigoid',
-            tableID: 3000000001,
-            columnID: 2,
-            dataTypeID: 3000000003,
-            dataTypeSize: 4,
-            dataTypeModifier: 5,
-            format: 'text',
-        },
-    ],
-};
-const emptyParameterDescriptionBuffer = new buffer_list_1.default()
-    .addInt16(0) // number of parameters
-    .join(true, 't');
-const oneParameterDescBuf = test_buffers_1.default.parameterDescription([1111]);
-const twoParameterDescBuf = test_buffers_1.default.parameterDescription([2222, 3333]);
-const expectedEmptyParameterDescriptionMessage = {
-    name: 'parameterDescription',
-    length: 6,
-    parameterCount: 0,
-    dataTypeIDs: [],
-};
-const expectedOneParameterMessage = {
-    name: 'parameterDescription',
-    length: 10,
-    parameterCount: 1,
-    dataTypeIDs: [1111],
-};
-const expectedTwoParameterMessage = {
-    name: 'parameterDescription',
-    length: 14,
-    parameterCount: 2,
-    dataTypeIDs: [2222, 3333],
-};
-const testForMessage = function (buffer, expectedMessage) {
-    it('receives and parses ' + expectedMessage.name, () => __awaiter(this, void 0, void 0, function* () {
-        const messages = yield parseBuffers([buffer]);
-        const [lastMessage] = messages;
-        for (const key in expectedMessage) {
-            assert_1.default.deepEqual(lastMessage[key], expectedMessage[key]);
-        }
-    }));
-};
-const plainPasswordBuffer = test_buffers_1.default.authenticationCleartextPassword();
-const md5PasswordBuffer = test_buffers_1.default.authenticationMD5Password();
-const SASLBuffer = test_buffers_1.default.authenticationSASL();
-const SASLContinueBuffer = test_buffers_1.default.authenticationSASLContinue();
-const SASLFinalBuffer = test_buffers_1.default.authenticationSASLFinal();
-const expectedPlainPasswordMessage = {
-    name: 'authenticationCleartextPassword',
-};
-const expectedMD5PasswordMessage = {
-    name: 'authenticationMD5Password',
-    salt: Buffer.from([1, 2, 3, 4]),
-};
-const expectedSASLMessage = {
-    name: 'authenticationSASL',
-    mechanisms: ['SCRAM-SHA-256'],
-};
-const expectedSASLContinueMessage = {
-    name: 'authenticationSASLContinue',
-    data: 'data',
-};
-const expectedSASLFinalMessage = {
-    name: 'authenticationSASLFinal',
-    data: 'data',
-};
-const notificationResponseBuffer = test_buffers_1.default.notification(4, 'hi', 'boom');
-const expectedNotificationResponseMessage = {
-    name: 'notification',
-    processId: 4,
-    channel: 'hi',
-    payload: 'boom',
-};
-const parseBuffers = (buffers) => __awaiter(void 0, void 0, void 0, function* () {
-    const stream = new stream_1.PassThrough();
-    for (const buffer of buffers) {
-        stream.write(buffer);
-    }
-    stream.end();
-    const msgs = [];
-    yield (0, _1.parse)(stream, (msg) => msgs.push(msg));
-    return msgs;
-});
-describe('PgPacketStream', function () {
-    testForMessage(authOkBuffer, expectedAuthenticationOkayMessage);
-    testForMessage(plainPasswordBuffer, expectedPlainPasswordMessage);
-    testForMessage(md5PasswordBuffer, expectedMD5PasswordMessage);
-    testForMessage(SASLBuffer, expectedSASLMessage);
-    testForMessage(SASLContinueBuffer, expectedSASLContinueMessage);
-    // this exercises a found bug in the parser:
-    // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
-    // and adds a test which is deterministic, rather than relying on network packet chunking
-    const extendedSASLContinueBuffer = Buffer.concat([SASLContinueBuffer, Buffer.from([1, 2, 3, 4])]);
-    testForMessage(extendedSASLContinueBuffer, expectedSASLContinueMessage);
-    testForMessage(SASLFinalBuffer, expectedSASLFinalMessage);
-    // this exercises a found bug in the parser:
-    // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
-    // and adds a test which is deterministic, rather than relying on network packet chunking
-    const extendedSASLFinalBuffer = Buffer.concat([SASLFinalBuffer, Buffer.from([1, 2, 4, 5])]);
-    testForMessage(extendedSASLFinalBuffer, expectedSASLFinalMessage);
-    testForMessage(paramStatusBuffer, expectedParameterStatusMessage);
-    testForMessage(backendKeyDataBuffer, expectedBackendKeyDataMessage);
-    testForMessage(readyForQueryBuffer, expectedReadyForQueryMessage);
-    testForMessage(commandCompleteBuffer, expectedCommandCompleteMessage);
-    testForMessage(notificationResponseBuffer, expectedNotificationResponseMessage);
-    testForMessage(test_buffers_1.default.emptyQuery(), {
-        name: 'emptyQuery',
-        length: 4,
-    });
-    testForMessage(Buffer.from([0x6e, 0, 0, 0, 4]), {
-        name: 'noData',
-    });
-    describe('rowDescription messages', function () {
-        testForMessage(emptyRowDescriptionBuffer, expectedEmptyRowDescriptionMessage);
-        testForMessage(oneRowDescBuff, expectedOneRowMessage);
-        testForMessage(twoRowBuf, expectedTwoRowMessage);
-        testForMessage(bigOidDescBuff, expectedBigOidMessage);
-    });
-    describe('parameterDescription messages', function () {
-        testForMessage(emptyParameterDescriptionBuffer, expectedEmptyParameterDescriptionMessage);
-        testForMessage(oneParameterDescBuf, expectedOneParameterMessage);
-        testForMessage(twoParameterDescBuf, expectedTwoParameterMessage);
-    });
-    describe('parsing rows', function () {
-        describe('parsing empty row', function () {
-            testForMessage(emptyRowFieldBuf, {
-                name: 'dataRow',
-                fieldCount: 0,
-            });
-        });
-        describe('parsing data row with fields', function () {
-            testForMessage(oneFieldBuf, {
-                name: 'dataRow',
-                fieldCount: 1,
-                fields: ['test'],
-            });
-        });
-    });
-    describe('notice message', function () {
-        // this uses the same logic as error message
-        const buff = test_buffers_1.default.notice([{ type: 'C', value: 'code' }]);
-        testForMessage(buff, {
-            name: 'notice',
-            code: 'code',
-        });
-    });
-    testForMessage(test_buffers_1.default.error([]), {
-        name: 'error',
-    });
-    describe('with all the fields', function () {
-        const buffer = test_buffers_1.default.error([
-            {
-                type: 'S',
-                value: 'ERROR',
-            },
-            {
-                type: 'C',
-                value: 'code',
-            },
-            {
-                type: 'M',
-                value: 'message',
-            },
-            {
-                type: 'D',
-                value: 'details',
-            },
-            {
-                type: 'H',
-                value: 'hint',
-            },
-            {
-                type: 'P',
-                value: '100',
-            },
-            {
-                type: 'p',
-                value: '101',
-            },
-            {
-                type: 'q',
-                value: 'query',
-            },
-            {
-                type: 'W',
-                value: 'where',
-            },
-            {
-                type: 'F',
-                value: 'file',
-            },
-            {
-                type: 'L',
-                value: 'line',
-            },
-            {
-                type: 'R',
-                value: 'routine',
-            },
-            {
-                type: 'Z',
-                value: 'alsdkf',
-            },
-        ]);
-        testForMessage(buffer, {
-            name: 'error',
-            severity: 'ERROR',
-            code: 'code',
-            message: 'message',
-            detail: 'details',
-            hint: 'hint',
-            position: '100',
-            internalPosition: '101',
-            internalQuery: 'query',
-            where: 'where',
-            file: 'file',
-            line: 'line',
-            routine: 'routine',
-        });
-    });
-    testForMessage(parseCompleteBuffer, {
-        name: 'parseComplete',
-    });
-    testForMessage(bindCompleteBuffer, {
-        name: 'bindComplete',
-    });
-    testForMessage(bindCompleteBuffer, {
-        name: 'bindComplete',
-    });
-    testForMessage(test_buffers_1.default.closeComplete(), {
-        name: 'closeComplete',
-    });
-    describe('parses portal suspended message', function () {
-        testForMessage(portalSuspendedBuffer, {
-            name: 'portalSuspended',
-        });
-    });
-    describe('parses replication start message', function () {
-        testForMessage(Buffer.from([0x57, 0x00, 0x00, 0x00, 0x04]), {
-            name: 'replicationStart',
-            length: 4,
-        });
-    });
-    describe('copy', () => {
-        testForMessage(test_buffers_1.default.copyIn(0), {
-            name: 'copyInResponse',
-            length: 7,
-            binary: false,
-            columnTypes: [],
-        });
-        testForMessage(test_buffers_1.default.copyIn(2), {
-            name: 'copyInResponse',
-            length: 11,
-            binary: false,
-            columnTypes: [0, 1],
-        });
-        testForMessage(test_buffers_1.default.copyOut(0), {
-            name: 'copyOutResponse',
-            length: 7,
-            binary: false,
-            columnTypes: [],
-        });
-        testForMessage(test_buffers_1.default.copyOut(3), {
-            name: 'copyOutResponse',
-            length: 13,
-            binary: false,
-            columnTypes: [0, 1, 2],
-        });
-        testForMessage(test_buffers_1.default.copyDone(), {
-            name: 'copyDone',
-            length: 4,
-        });
-        testForMessage(test_buffers_1.default.copyData(Buffer.from([5, 6, 7])), {
-            name: 'copyData',
-            length: 7,
-            chunk: Buffer.from([5, 6, 7]),
-        });
-    });
-    // since the data message on a stream can randomly divide the incomming
-    // tcp packets anywhere, we need to make sure we can parse every single
-    // split on a tcp message
-    describe('split buffer, single message parsing', function () {
-        const fullBuffer = test_buffers_1.default.dataRow([null, 'bang', 'zug zug', null, '!']);
-        it('parses when full buffer comes in', function () {
-            return __awaiter(this, void 0, void 0, function* () {
-                const messages = yield parseBuffers([fullBuffer]);
-                const message = messages[0];
-                assert_1.default.equal(message.fields.length, 5);
-                assert_1.default.equal(message.fields[0], null);
-                assert_1.default.equal(message.fields[1], 'bang');
-                assert_1.default.equal(message.fields[2], 'zug zug');
-                assert_1.default.equal(message.fields[3], null);
-                assert_1.default.equal(message.fields[4], '!');
-            });
-        });
-        const testMessageReceivedAfterSplitAt = function (split) {
-            return __awaiter(this, void 0, void 0, function* () {
-                const firstBuffer = Buffer.alloc(fullBuffer.length - split);
-                const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length);
-                fullBuffer.copy(firstBuffer, 0, 0);
-                fullBuffer.copy(secondBuffer, 0, firstBuffer.length);
-                const messages = yield parseBuffers([firstBuffer, secondBuffer]);
-                const message = messages[0];
-                assert_1.default.equal(message.fields.length, 5);
-                assert_1.default.equal(message.fields[0], null);
-                assert_1.default.equal(message.fields[1], 'bang');
-                assert_1.default.equal(message.fields[2], 'zug zug');
-                assert_1.default.equal(message.fields[3], null);
-                assert_1.default.equal(message.fields[4], '!');
-            });
-        };
-        it('parses when split in the middle', function () {
-            return testMessageReceivedAfterSplitAt(6);
-        });
-        it('parses when split at end', function () {
-            return testMessageReceivedAfterSplitAt(2);
-        });
-        it('parses when split at beginning', function () {
-            return Promise.all([
-                testMessageReceivedAfterSplitAt(fullBuffer.length - 2),
-                testMessageReceivedAfterSplitAt(fullBuffer.length - 1),
-                testMessageReceivedAfterSplitAt(fullBuffer.length - 5),
-            ]);
-        });
-    });
-    describe('split buffer, multiple message parsing', function () {
-        const dataRowBuffer = test_buffers_1.default.dataRow(['!']);
-        const readyForQueryBuffer = test_buffers_1.default.readyForQuery();
-        const fullBuffer = Buffer.alloc(dataRowBuffer.length + readyForQueryBuffer.length);
-        dataRowBuffer.copy(fullBuffer, 0, 0);
-        readyForQueryBuffer.copy(fullBuffer, dataRowBuffer.length, 0);
-        const verifyMessages = function (messages) {
-            assert_1.default.strictEqual(messages.length, 2);
-            assert_1.default.deepEqual(messages[0], {
-                name: 'dataRow',
-                fieldCount: 1,
-                length: 11,
-                fields: ['!'],
-            });
-            assert_1.default.equal(messages[0].fields[0], '!');
-            assert_1.default.deepEqual(messages[1], {
-                name: 'readyForQuery',
-                length: 5,
-                status: 'I',
-            });
-        };
-        // sanity check
-        it('receives both messages when packet is not split', function () {
-            return __awaiter(this, void 0, void 0, function* () {
-                const messages = yield parseBuffers([fullBuffer]);
-                verifyMessages(messages);
-            });
-        });
-        const splitAndVerifyTwoMessages = function (split) {
-            return __awaiter(this, void 0, void 0, function* () {
-                const firstBuffer = Buffer.alloc(fullBuffer.length - split);
-                const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length);
-                fullBuffer.copy(firstBuffer, 0, 0);
-                fullBuffer.copy(secondBuffer, 0, firstBuffer.length);
-                const messages = yield parseBuffers([firstBuffer, secondBuffer]);
-                verifyMessages(messages);
-            });
-        };
-        describe('receives both messages when packet is split', function () {
-            it('in the middle', function () {
-                return splitAndVerifyTwoMessages(11);
-            });
-            it('at the front', function () {
-                return Promise.all([
-                    splitAndVerifyTwoMessages(fullBuffer.length - 1),
-                    splitAndVerifyTwoMessages(fullBuffer.length - 4),
-                    splitAndVerifyTwoMessages(fullBuffer.length - 6),
-                ]);
-            });
-            it('at the end', function () {
-                return Promise.all([splitAndVerifyTwoMessages(8), splitAndVerifyTwoMessages(1)]);
-            });
-        });
-    });
-});
-//# sourceMappingURL=inbound-parser.test.js.map
Index: ckend/node_modules/pg-protocol/dist/inbound-parser.test.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/inbound-parser.test.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"inbound-parser.test.js","sourceRoot":"","sources":["../src/inbound-parser.test.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/dist/index.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-/// <reference types="node" />
-import { DatabaseError } from './messages';
-import { serialize } from './serializer';
-import { MessageCallback } from './parser';
-export declare function parse(stream: NodeJS.ReadableStream, callback: MessageCallback): Promise<void>;
-export { serialize, DatabaseError };
Index: ckend/node_modules/pg-protocol/dist/index.js
===================================================================
--- backend/node_modules/pg-protocol/dist/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.DatabaseError = exports.serialize = exports.parse = void 0;
-const messages_1 = require("./messages");
-Object.defineProperty(exports, "DatabaseError", { enumerable: true, get: function () { return messages_1.DatabaseError; } });
-const serializer_1 = require("./serializer");
-Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return serializer_1.serialize; } });
-const parser_1 = require("./parser");
-function parse(stream, callback) {
-    const parser = new parser_1.Parser();
-    stream.on('data', (buffer) => parser.parse(buffer, callback));
-    return new Promise((resolve) => stream.on('end', () => resolve()));
-}
-exports.parse = parse;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/pg-protocol/dist/index.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAUtB,8FAVX,wBAAa,OAUW;AATjC,6CAAwC;AAS/B,0FATA,sBAAS,OASA;AARlB,qCAAkD;AAElD,SAAgB,KAAK,CAAC,MAA6B,EAAE,QAAyB;IAC5E,MAAM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAA;IAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AAJD,sBAIC"}
Index: ckend/node_modules/pg-protocol/dist/messages.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/messages.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,162 +1,0 @@
-/// <reference types="node" />
-export declare type Mode = 'text' | 'binary';
-export declare type MessageName = 'parseComplete' | 'bindComplete' | 'closeComplete' | 'noData' | 'portalSuspended' | 'replicationStart' | 'emptyQuery' | 'copyDone' | 'copyData' | 'rowDescription' | 'parameterDescription' | 'parameterStatus' | 'backendKeyData' | 'notification' | 'readyForQuery' | 'commandComplete' | 'dataRow' | 'copyInResponse' | 'copyOutResponse' | 'authenticationOk' | 'authenticationMD5Password' | 'authenticationCleartextPassword' | 'authenticationSASL' | 'authenticationSASLContinue' | 'authenticationSASLFinal' | 'error' | 'notice';
-export interface BackendMessage {
-    name: MessageName;
-    length: number;
-}
-export declare const parseComplete: BackendMessage;
-export declare const bindComplete: BackendMessage;
-export declare const closeComplete: BackendMessage;
-export declare const noData: BackendMessage;
-export declare const portalSuspended: BackendMessage;
-export declare const replicationStart: BackendMessage;
-export declare const emptyQuery: BackendMessage;
-export declare const copyDone: BackendMessage;
-interface NoticeOrError {
-    message: string | undefined;
-    severity: string | undefined;
-    code: string | undefined;
-    detail: string | undefined;
-    hint: string | undefined;
-    position: string | undefined;
-    internalPosition: string | undefined;
-    internalQuery: string | undefined;
-    where: string | undefined;
-    schema: string | undefined;
-    table: string | undefined;
-    column: string | undefined;
-    dataType: string | undefined;
-    constraint: string | undefined;
-    file: string | undefined;
-    line: string | undefined;
-    routine: string | undefined;
-}
-export declare class DatabaseError extends Error implements NoticeOrError {
-    readonly length: number;
-    readonly name: MessageName;
-    severity: string | undefined;
-    code: string | undefined;
-    detail: string | undefined;
-    hint: string | undefined;
-    position: string | undefined;
-    internalPosition: string | undefined;
-    internalQuery: string | undefined;
-    where: string | undefined;
-    schema: string | undefined;
-    table: string | undefined;
-    column: string | undefined;
-    dataType: string | undefined;
-    constraint: string | undefined;
-    file: string | undefined;
-    line: string | undefined;
-    routine: string | undefined;
-    constructor(message: string, length: number, name: MessageName);
-}
-export declare class CopyDataMessage {
-    readonly length: number;
-    readonly chunk: Buffer;
-    readonly name = "copyData";
-    constructor(length: number, chunk: Buffer);
-}
-export declare class CopyResponse {
-    readonly length: number;
-    readonly name: MessageName;
-    readonly binary: boolean;
-    readonly columnTypes: number[];
-    constructor(length: number, name: MessageName, binary: boolean, columnCount: number);
-}
-export declare class Field {
-    readonly name: string;
-    readonly tableID: number;
-    readonly columnID: number;
-    readonly dataTypeID: number;
-    readonly dataTypeSize: number;
-    readonly dataTypeModifier: number;
-    readonly format: Mode;
-    constructor(name: string, tableID: number, columnID: number, dataTypeID: number, dataTypeSize: number, dataTypeModifier: number, format: Mode);
-}
-export declare class RowDescriptionMessage {
-    readonly length: number;
-    readonly fieldCount: number;
-    readonly name: MessageName;
-    readonly fields: Field[];
-    constructor(length: number, fieldCount: number);
-}
-export declare class ParameterDescriptionMessage {
-    readonly length: number;
-    readonly parameterCount: number;
-    readonly name: MessageName;
-    readonly dataTypeIDs: number[];
-    constructor(length: number, parameterCount: number);
-}
-export declare class ParameterStatusMessage {
-    readonly length: number;
-    readonly parameterName: string;
-    readonly parameterValue: string;
-    readonly name: MessageName;
-    constructor(length: number, parameterName: string, parameterValue: string);
-}
-export declare class AuthenticationMD5Password implements BackendMessage {
-    readonly length: number;
-    readonly salt: Buffer;
-    readonly name: MessageName;
-    constructor(length: number, salt: Buffer);
-}
-export declare class BackendKeyDataMessage {
-    readonly length: number;
-    readonly processID: number;
-    readonly secretKey: number;
-    readonly name: MessageName;
-    constructor(length: number, processID: number, secretKey: number);
-}
-export declare class NotificationResponseMessage {
-    readonly length: number;
-    readonly processId: number;
-    readonly channel: string;
-    readonly payload: string;
-    readonly name: MessageName;
-    constructor(length: number, processId: number, channel: string, payload: string);
-}
-export declare class ReadyForQueryMessage {
-    readonly length: number;
-    readonly status: string;
-    readonly name: MessageName;
-    constructor(length: number, status: string);
-}
-export declare class CommandCompleteMessage {
-    readonly length: number;
-    readonly text: string;
-    readonly name: MessageName;
-    constructor(length: number, text: string);
-}
-export declare class DataRowMessage {
-    length: number;
-    fields: any[];
-    readonly fieldCount: number;
-    readonly name: MessageName;
-    constructor(length: number, fields: any[]);
-}
-export declare class NoticeMessage implements BackendMessage, NoticeOrError {
-    readonly length: number;
-    readonly message: string | undefined;
-    constructor(length: number, message: string | undefined);
-    readonly name = "notice";
-    severity: string | undefined;
-    code: string | undefined;
-    detail: string | undefined;
-    hint: string | undefined;
-    position: string | undefined;
-    internalPosition: string | undefined;
-    internalQuery: string | undefined;
-    where: string | undefined;
-    schema: string | undefined;
-    table: string | undefined;
-    column: string | undefined;
-    dataType: string | undefined;
-    constraint: string | undefined;
-    file: string | undefined;
-    line: string | undefined;
-    routine: string | undefined;
-}
-export {};
Index: ckend/node_modules/pg-protocol/dist/messages.js
===================================================================
--- backend/node_modules/pg-protocol/dist/messages.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,160 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.NoticeMessage = exports.DataRowMessage = exports.CommandCompleteMessage = exports.ReadyForQueryMessage = exports.NotificationResponseMessage = exports.BackendKeyDataMessage = exports.AuthenticationMD5Password = exports.ParameterStatusMessage = exports.ParameterDescriptionMessage = exports.RowDescriptionMessage = exports.Field = exports.CopyResponse = exports.CopyDataMessage = exports.DatabaseError = exports.copyDone = exports.emptyQuery = exports.replicationStart = exports.portalSuspended = exports.noData = exports.closeComplete = exports.bindComplete = exports.parseComplete = void 0;
-exports.parseComplete = {
-    name: 'parseComplete',
-    length: 5,
-};
-exports.bindComplete = {
-    name: 'bindComplete',
-    length: 5,
-};
-exports.closeComplete = {
-    name: 'closeComplete',
-    length: 5,
-};
-exports.noData = {
-    name: 'noData',
-    length: 5,
-};
-exports.portalSuspended = {
-    name: 'portalSuspended',
-    length: 5,
-};
-exports.replicationStart = {
-    name: 'replicationStart',
-    length: 4,
-};
-exports.emptyQuery = {
-    name: 'emptyQuery',
-    length: 4,
-};
-exports.copyDone = {
-    name: 'copyDone',
-    length: 4,
-};
-class DatabaseError extends Error {
-    constructor(message, length, name) {
-        super(message);
-        this.length = length;
-        this.name = name;
-    }
-}
-exports.DatabaseError = DatabaseError;
-class CopyDataMessage {
-    constructor(length, chunk) {
-        this.length = length;
-        this.chunk = chunk;
-        this.name = 'copyData';
-    }
-}
-exports.CopyDataMessage = CopyDataMessage;
-class CopyResponse {
-    constructor(length, name, binary, columnCount) {
-        this.length = length;
-        this.name = name;
-        this.binary = binary;
-        this.columnTypes = new Array(columnCount);
-    }
-}
-exports.CopyResponse = CopyResponse;
-class Field {
-    constructor(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, format) {
-        this.name = name;
-        this.tableID = tableID;
-        this.columnID = columnID;
-        this.dataTypeID = dataTypeID;
-        this.dataTypeSize = dataTypeSize;
-        this.dataTypeModifier = dataTypeModifier;
-        this.format = format;
-    }
-}
-exports.Field = Field;
-class RowDescriptionMessage {
-    constructor(length, fieldCount) {
-        this.length = length;
-        this.fieldCount = fieldCount;
-        this.name = 'rowDescription';
-        this.fields = new Array(this.fieldCount);
-    }
-}
-exports.RowDescriptionMessage = RowDescriptionMessage;
-class ParameterDescriptionMessage {
-    constructor(length, parameterCount) {
-        this.length = length;
-        this.parameterCount = parameterCount;
-        this.name = 'parameterDescription';
-        this.dataTypeIDs = new Array(this.parameterCount);
-    }
-}
-exports.ParameterDescriptionMessage = ParameterDescriptionMessage;
-class ParameterStatusMessage {
-    constructor(length, parameterName, parameterValue) {
-        this.length = length;
-        this.parameterName = parameterName;
-        this.parameterValue = parameterValue;
-        this.name = 'parameterStatus';
-    }
-}
-exports.ParameterStatusMessage = ParameterStatusMessage;
-class AuthenticationMD5Password {
-    constructor(length, salt) {
-        this.length = length;
-        this.salt = salt;
-        this.name = 'authenticationMD5Password';
-    }
-}
-exports.AuthenticationMD5Password = AuthenticationMD5Password;
-class BackendKeyDataMessage {
-    constructor(length, processID, secretKey) {
-        this.length = length;
-        this.processID = processID;
-        this.secretKey = secretKey;
-        this.name = 'backendKeyData';
-    }
-}
-exports.BackendKeyDataMessage = BackendKeyDataMessage;
-class NotificationResponseMessage {
-    constructor(length, processId, channel, payload) {
-        this.length = length;
-        this.processId = processId;
-        this.channel = channel;
-        this.payload = payload;
-        this.name = 'notification';
-    }
-}
-exports.NotificationResponseMessage = NotificationResponseMessage;
-class ReadyForQueryMessage {
-    constructor(length, status) {
-        this.length = length;
-        this.status = status;
-        this.name = 'readyForQuery';
-    }
-}
-exports.ReadyForQueryMessage = ReadyForQueryMessage;
-class CommandCompleteMessage {
-    constructor(length, text) {
-        this.length = length;
-        this.text = text;
-        this.name = 'commandComplete';
-    }
-}
-exports.CommandCompleteMessage = CommandCompleteMessage;
-class DataRowMessage {
-    constructor(length, fields) {
-        this.length = length;
-        this.fields = fields;
-        this.name = 'dataRow';
-        this.fieldCount = fields.length;
-    }
-}
-exports.DataRowMessage = DataRowMessage;
-class NoticeMessage {
-    constructor(length, message) {
-        this.length = length;
-        this.message = message;
-        this.name = 'notice';
-    }
-}
-exports.NoticeMessage = NoticeMessage;
-//# sourceMappingURL=messages.js.map
Index: ckend/node_modules/pg-protocol/dist/messages.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/messages.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export {};
Index: ckend/node_modules/pg-protocol/dist/outbound-serializer.test.js
===================================================================
--- backend/node_modules/pg-protocol/dist/outbound-serializer.test.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,248 +1,0 @@
-"use strict";
-var __importDefault = (this && this.__importDefault) || function (mod) {
-    return (mod && mod.__esModule) ? mod : { "default": mod };
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-const assert_1 = __importDefault(require("assert"));
-const serializer_1 = require("./serializer");
-const buffer_list_1 = __importDefault(require("./testing/buffer-list"));
-describe('serializer', () => {
-    it('builds startup message', function () {
-        const actual = serializer_1.serialize.startup({
-            user: 'brian',
-            database: 'bang',
-        });
-        assert_1.default.deepEqual(actual, new buffer_list_1.default()
-            .addInt16(3)
-            .addInt16(0)
-            .addCString('user')
-            .addCString('brian')
-            .addCString('database')
-            .addCString('bang')
-            .addCString('client_encoding')
-            .addCString('UTF8')
-            .addCString('')
-            .join(true));
-    });
-    it('builds password message', function () {
-        const actual = serializer_1.serialize.password('!');
-        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString('!').join(true, 'p'));
-    });
-    it('builds request ssl message', function () {
-        const actual = serializer_1.serialize.requestSsl();
-        const expected = new buffer_list_1.default().addInt32(80877103).join(true);
-        assert_1.default.deepEqual(actual, expected);
-    });
-    it('builds SASLInitialResponseMessage message', function () {
-        const actual = serializer_1.serialize.sendSASLInitialResponseMessage('mech', 'data');
-        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString('mech').addInt32(4).addString('data').join(true, 'p'));
-    });
-    it('builds SCRAMClientFinalMessage message', function () {
-        const actual = serializer_1.serialize.sendSCRAMClientFinalMessage('data');
-        assert_1.default.deepEqual(actual, new buffer_list_1.default().addString('data').join(true, 'p'));
-    });
-    it('builds query message', function () {
-        const txt = 'select * from boom';
-        const actual = serializer_1.serialize.query(txt);
-        assert_1.default.deepEqual(actual, new buffer_list_1.default().addCString(txt).join(true, 'Q'));
-    });
-    describe('parse message', () => {
-        it('builds parse message', function () {
-            const actual = serializer_1.serialize.parse({ text: '!' });
-            const expected = new buffer_list_1.default().addCString('').addCString('!').addInt16(0).join(true, 'P');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('builds parse message with named query', function () {
-            const actual = serializer_1.serialize.parse({
-                name: 'boom',
-                text: 'select * from boom',
-                types: [],
-            });
-            const expected = new buffer_list_1.default().addCString('boom').addCString('select * from boom').addInt16(0).join(true, 'P');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('with multiple parameters', function () {
-            const actual = serializer_1.serialize.parse({
-                name: 'force',
-                text: 'select * from bang where name = $1',
-                types: [1, 2, 3, 4],
-            });
-            const expected = new buffer_list_1.default()
-                .addCString('force')
-                .addCString('select * from bang where name = $1')
-                .addInt16(4)
-                .addInt32(1)
-                .addInt32(2)
-                .addInt32(3)
-                .addInt32(4)
-                .join(true, 'P');
-            assert_1.default.deepEqual(actual, expected);
-        });
-    });
-    describe('bind messages', function () {
-        it('with no values', function () {
-            const actual = serializer_1.serialize.bind();
-            const expectedBuffer = new buffer_list_1.default()
-                .addCString('')
-                .addCString('')
-                .addInt16(0)
-                .addInt16(0)
-                .addInt16(0)
-                .join(true, 'B');
-            assert_1.default.deepEqual(actual, expectedBuffer);
-        });
-        it('with named statement, portal, and values', function () {
-            const actual = serializer_1.serialize.bind({
-                portal: 'bang',
-                statement: 'woo',
-                values: ['1', 'hi', null, 'zing'],
-            });
-            const expectedBuffer = new buffer_list_1.default()
-                .addCString('bang') // portal name
-                .addCString('woo') // statement name
-                .addInt16(4)
-                .addInt16(0)
-                .addInt16(0)
-                .addInt16(0)
-                .addInt16(0)
-                .addInt16(4)
-                .addInt32(1)
-                .add(Buffer.from('1'))
-                .addInt32(2)
-                .add(Buffer.from('hi'))
-                .addInt32(-1)
-                .addInt32(4)
-                .add(Buffer.from('zing'))
-                .addInt16(0)
-                .join(true, 'B');
-            assert_1.default.deepEqual(actual, expectedBuffer);
-        });
-    });
-    it('with custom valueMapper', function () {
-        const actual = serializer_1.serialize.bind({
-            portal: 'bang',
-            statement: 'woo',
-            values: ['1', 'hi', null, 'zing'],
-            valueMapper: () => null,
-        });
-        const expectedBuffer = new buffer_list_1.default()
-            .addCString('bang') // portal name
-            .addCString('woo') // statement name
-            .addInt16(4)
-            .addInt16(0)
-            .addInt16(0)
-            .addInt16(0)
-            .addInt16(0)
-            .addInt16(4)
-            .addInt32(-1)
-            .addInt32(-1)
-            .addInt32(-1)
-            .addInt32(-1)
-            .addInt16(0)
-            .join(true, 'B');
-        assert_1.default.deepEqual(actual, expectedBuffer);
-    });
-    it('with named statement, portal, and buffer value', function () {
-        const actual = serializer_1.serialize.bind({
-            portal: 'bang',
-            statement: 'woo',
-            values: ['1', 'hi', null, Buffer.from('zing', 'utf8')],
-        });
-        const expectedBuffer = new buffer_list_1.default()
-            .addCString('bang') // portal name
-            .addCString('woo') // statement name
-            .addInt16(4) // value count
-            .addInt16(0) // string
-            .addInt16(0) // string
-            .addInt16(0) // string
-            .addInt16(1) // binary
-            .addInt16(4)
-            .addInt32(1)
-            .add(Buffer.from('1'))
-            .addInt32(2)
-            .add(Buffer.from('hi'))
-            .addInt32(-1)
-            .addInt32(4)
-            .add(Buffer.from('zing', 'utf-8'))
-            .addInt16(0)
-            .join(true, 'B');
-        assert_1.default.deepEqual(actual, expectedBuffer);
-    });
-    describe('builds execute message', function () {
-        it('for unamed portal with no row limit', function () {
-            const actual = serializer_1.serialize.execute();
-            const expectedBuffer = new buffer_list_1.default().addCString('').addInt32(0).join(true, 'E');
-            assert_1.default.deepEqual(actual, expectedBuffer);
-        });
-        it('for named portal with row limit', function () {
-            const actual = serializer_1.serialize.execute({
-                portal: 'my favorite portal',
-                rows: 100,
-            });
-            const expectedBuffer = new buffer_list_1.default().addCString('my favorite portal').addInt32(100).join(true, 'E');
-            assert_1.default.deepEqual(actual, expectedBuffer);
-        });
-    });
-    it('builds flush command', function () {
-        const actual = serializer_1.serialize.flush();
-        const expected = new buffer_list_1.default().join(true, 'H');
-        assert_1.default.deepEqual(actual, expected);
-    });
-    it('builds sync command', function () {
-        const actual = serializer_1.serialize.sync();
-        const expected = new buffer_list_1.default().join(true, 'S');
-        assert_1.default.deepEqual(actual, expected);
-    });
-    it('builds end command', function () {
-        const actual = serializer_1.serialize.end();
-        const expected = Buffer.from([0x58, 0, 0, 0, 4]);
-        assert_1.default.deepEqual(actual, expected);
-    });
-    describe('builds describe command', function () {
-        it('describe statement', function () {
-            const actual = serializer_1.serialize.describe({ type: 'S', name: 'bang' });
-            const expected = new buffer_list_1.default().addChar('S').addCString('bang').join(true, 'D');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('describe unnamed portal', function () {
-            const actual = serializer_1.serialize.describe({ type: 'P' });
-            const expected = new buffer_list_1.default().addChar('P').addCString('').join(true, 'D');
-            assert_1.default.deepEqual(actual, expected);
-        });
-    });
-    describe('builds close command', function () {
-        it('describe statement', function () {
-            const actual = serializer_1.serialize.close({ type: 'S', name: 'bang' });
-            const expected = new buffer_list_1.default().addChar('S').addCString('bang').join(true, 'C');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('describe unnamed portal', function () {
-            const actual = serializer_1.serialize.close({ type: 'P' });
-            const expected = new buffer_list_1.default().addChar('P').addCString('').join(true, 'C');
-            assert_1.default.deepEqual(actual, expected);
-        });
-    });
-    describe('copy messages', function () {
-        it('builds copyFromChunk', () => {
-            const actual = serializer_1.serialize.copyData(Buffer.from([1, 2, 3]));
-            const expected = new buffer_list_1.default().add(Buffer.from([1, 2, 3])).join(true, 'd');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('builds copy fail', () => {
-            const actual = serializer_1.serialize.copyFail('err!');
-            const expected = new buffer_list_1.default().addCString('err!').join(true, 'f');
-            assert_1.default.deepEqual(actual, expected);
-        });
-        it('builds copy done', () => {
-            const actual = serializer_1.serialize.copyDone();
-            const expected = new buffer_list_1.default().join(true, 'c');
-            assert_1.default.deepEqual(actual, expected);
-        });
-    });
-    it('builds cancel message', () => {
-        const actual = serializer_1.serialize.cancel(3, 4);
-        const expected = new buffer_list_1.default().addInt16(1234).addInt16(5678).addInt32(3).addInt32(4).join(true);
-        assert_1.default.deepEqual(actual, expected);
-    });
-});
-//# sourceMappingURL=outbound-serializer.test.js.map
Index: ckend/node_modules/pg-protocol/dist/outbound-serializer.test.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/outbound-serializer.test.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"outbound-serializer.test.js","sourceRoot":"","sources":["../src/outbound-serializer.test.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/dist/parser.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/parser.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-/// <reference types="node" />
-/// <reference types="node" />
-import { TransformOptions } from 'stream';
-import { Mode, BackendMessage } from './messages';
-export declare type Packet = {
-    code: number;
-    packet: Buffer;
-};
-declare type StreamOptions = TransformOptions & {
-    mode: Mode;
-};
-export declare type MessageCallback = (msg: BackendMessage) => void;
-export declare class Parser {
-    private buffer;
-    private bufferLength;
-    private bufferOffset;
-    private reader;
-    private mode;
-    constructor(opts?: StreamOptions);
-    parse(buffer: Buffer, callback: MessageCallback): void;
-    private mergeBuffer;
-    private handlePacket;
-    private parseReadyForQueryMessage;
-    private parseCommandCompleteMessage;
-    private parseCopyData;
-    private parseCopyInMessage;
-    private parseCopyOutMessage;
-    private parseCopyMessage;
-    private parseNotificationMessage;
-    private parseRowDescriptionMessage;
-    private parseField;
-    private parseParameterDescriptionMessage;
-    private parseDataRowMessage;
-    private parseParameterStatusMessage;
-    private parseBackendKeyData;
-    parseAuthenticationResponse(offset: number, length: number, bytes: Buffer): any;
-    private parseErrorMessage;
-}
-export {};
Index: ckend/node_modules/pg-protocol/dist/parser.js
===================================================================
--- backend/node_modules/pg-protocol/dist/parser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,306 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Parser = void 0;
-const messages_1 = require("./messages");
-const buffer_reader_1 = require("./buffer-reader");
-// every message is prefixed with a single bye
-const CODE_LENGTH = 1;
-// every message has an int32 length which includes itself but does
-// NOT include the code in the length
-const LEN_LENGTH = 4;
-const HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH;
-const emptyBuffer = Buffer.allocUnsafe(0);
-class Parser {
-    constructor(opts) {
-        this.buffer = emptyBuffer;
-        this.bufferLength = 0;
-        this.bufferOffset = 0;
-        this.reader = new buffer_reader_1.BufferReader();
-        if ((opts === null || opts === void 0 ? void 0 : opts.mode) === 'binary') {
-            throw new Error('Binary mode not supported yet');
-        }
-        this.mode = (opts === null || opts === void 0 ? void 0 : opts.mode) || 'text';
-    }
-    parse(buffer, callback) {
-        this.mergeBuffer(buffer);
-        const bufferFullLength = this.bufferOffset + this.bufferLength;
-        let offset = this.bufferOffset;
-        while (offset + HEADER_LENGTH <= bufferFullLength) {
-            // code is 1 byte long - it identifies the message type
-            const code = this.buffer[offset];
-            // length is 1 Uint32BE - it is the length of the message EXCLUDING the code
-            const length = this.buffer.readUInt32BE(offset + CODE_LENGTH);
-            const fullMessageLength = CODE_LENGTH + length;
-            if (fullMessageLength + offset <= bufferFullLength) {
-                const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer);
-                callback(message);
-                offset += fullMessageLength;
-            }
-            else {
-                break;
-            }
-        }
-        if (offset === bufferFullLength) {
-            // No more use for the buffer
-            this.buffer = emptyBuffer;
-            this.bufferLength = 0;
-            this.bufferOffset = 0;
-        }
-        else {
-            // Adjust the cursors of remainingBuffer
-            this.bufferLength = bufferFullLength - offset;
-            this.bufferOffset = offset;
-        }
-    }
-    mergeBuffer(buffer) {
-        if (this.bufferLength > 0) {
-            const newLength = this.bufferLength + buffer.byteLength;
-            const newFullLength = newLength + this.bufferOffset;
-            if (newFullLength > this.buffer.byteLength) {
-                // We can't concat the new buffer with the remaining one
-                let newBuffer;
-                if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) {
-                    // We can move the relevant part to the beginning of the buffer instead of allocating a new buffer
-                    newBuffer = this.buffer;
-                }
-                else {
-                    // Allocate a new larger buffer
-                    let newBufferLength = this.buffer.byteLength * 2;
-                    while (newLength >= newBufferLength) {
-                        newBufferLength *= 2;
-                    }
-                    newBuffer = Buffer.allocUnsafe(newBufferLength);
-                }
-                // Move the remaining buffer to the new one
-                this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength);
-                this.buffer = newBuffer;
-                this.bufferOffset = 0;
-            }
-            // Concat the new buffer with the remaining one
-            buffer.copy(this.buffer, this.bufferOffset + this.bufferLength);
-            this.bufferLength = newLength;
-        }
-        else {
-            this.buffer = buffer;
-            this.bufferOffset = 0;
-            this.bufferLength = buffer.byteLength;
-        }
-    }
-    handlePacket(offset, code, length, bytes) {
-        switch (code) {
-            case 50 /* MessageCodes.BindComplete */:
-                return messages_1.bindComplete;
-            case 49 /* MessageCodes.ParseComplete */:
-                return messages_1.parseComplete;
-            case 51 /* MessageCodes.CloseComplete */:
-                return messages_1.closeComplete;
-            case 110 /* MessageCodes.NoData */:
-                return messages_1.noData;
-            case 115 /* MessageCodes.PortalSuspended */:
-                return messages_1.portalSuspended;
-            case 99 /* MessageCodes.CopyDone */:
-                return messages_1.copyDone;
-            case 87 /* MessageCodes.ReplicationStart */:
-                return messages_1.replicationStart;
-            case 73 /* MessageCodes.EmptyQuery */:
-                return messages_1.emptyQuery;
-            case 68 /* MessageCodes.DataRow */:
-                return this.parseDataRowMessage(offset, length, bytes);
-            case 67 /* MessageCodes.CommandComplete */:
-                return this.parseCommandCompleteMessage(offset, length, bytes);
-            case 90 /* MessageCodes.ReadyForQuery */:
-                return this.parseReadyForQueryMessage(offset, length, bytes);
-            case 65 /* MessageCodes.NotificationResponse */:
-                return this.parseNotificationMessage(offset, length, bytes);
-            case 82 /* MessageCodes.AuthenticationResponse */:
-                return this.parseAuthenticationResponse(offset, length, bytes);
-            case 83 /* MessageCodes.ParameterStatus */:
-                return this.parseParameterStatusMessage(offset, length, bytes);
-            case 75 /* MessageCodes.BackendKeyData */:
-                return this.parseBackendKeyData(offset, length, bytes);
-            case 69 /* MessageCodes.ErrorMessage */:
-                return this.parseErrorMessage(offset, length, bytes, 'error');
-            case 78 /* MessageCodes.NoticeMessage */:
-                return this.parseErrorMessage(offset, length, bytes, 'notice');
-            case 84 /* MessageCodes.RowDescriptionMessage */:
-                return this.parseRowDescriptionMessage(offset, length, bytes);
-            case 116 /* MessageCodes.ParameterDescriptionMessage */:
-                return this.parseParameterDescriptionMessage(offset, length, bytes);
-            case 71 /* MessageCodes.CopyIn */:
-                return this.parseCopyInMessage(offset, length, bytes);
-            case 72 /* MessageCodes.CopyOut */:
-                return this.parseCopyOutMessage(offset, length, bytes);
-            case 100 /* MessageCodes.CopyData */:
-                return this.parseCopyData(offset, length, bytes);
-            default:
-                return new messages_1.DatabaseError('received invalid response: ' + code.toString(16), length, 'error');
-        }
-    }
-    parseReadyForQueryMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const status = this.reader.string(1);
-        return new messages_1.ReadyForQueryMessage(length, status);
-    }
-    parseCommandCompleteMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const text = this.reader.cstring();
-        return new messages_1.CommandCompleteMessage(length, text);
-    }
-    parseCopyData(offset, length, bytes) {
-        const chunk = bytes.slice(offset, offset + (length - 4));
-        return new messages_1.CopyDataMessage(length, chunk);
-    }
-    parseCopyInMessage(offset, length, bytes) {
-        return this.parseCopyMessage(offset, length, bytes, 'copyInResponse');
-    }
-    parseCopyOutMessage(offset, length, bytes) {
-        return this.parseCopyMessage(offset, length, bytes, 'copyOutResponse');
-    }
-    parseCopyMessage(offset, length, bytes, messageName) {
-        this.reader.setBuffer(offset, bytes);
-        const isBinary = this.reader.byte() !== 0;
-        const columnCount = this.reader.int16();
-        const message = new messages_1.CopyResponse(length, messageName, isBinary, columnCount);
-        for (let i = 0; i < columnCount; i++) {
-            message.columnTypes[i] = this.reader.int16();
-        }
-        return message;
-    }
-    parseNotificationMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const processId = this.reader.int32();
-        const channel = this.reader.cstring();
-        const payload = this.reader.cstring();
-        return new messages_1.NotificationResponseMessage(length, processId, channel, payload);
-    }
-    parseRowDescriptionMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const fieldCount = this.reader.int16();
-        const message = new messages_1.RowDescriptionMessage(length, fieldCount);
-        for (let i = 0; i < fieldCount; i++) {
-            message.fields[i] = this.parseField();
-        }
-        return message;
-    }
-    parseField() {
-        const name = this.reader.cstring();
-        const tableID = this.reader.uint32();
-        const columnID = this.reader.int16();
-        const dataTypeID = this.reader.uint32();
-        const dataTypeSize = this.reader.int16();
-        const dataTypeModifier = this.reader.int32();
-        const mode = this.reader.int16() === 0 ? 'text' : 'binary';
-        return new messages_1.Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode);
-    }
-    parseParameterDescriptionMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const parameterCount = this.reader.int16();
-        const message = new messages_1.ParameterDescriptionMessage(length, parameterCount);
-        for (let i = 0; i < parameterCount; i++) {
-            message.dataTypeIDs[i] = this.reader.int32();
-        }
-        return message;
-    }
-    parseDataRowMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const fieldCount = this.reader.int16();
-        const fields = new Array(fieldCount);
-        for (let i = 0; i < fieldCount; i++) {
-            const len = this.reader.int32();
-            // a -1 for length means the value of the field is null
-            fields[i] = len === -1 ? null : this.reader.string(len);
-        }
-        return new messages_1.DataRowMessage(length, fields);
-    }
-    parseParameterStatusMessage(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const name = this.reader.cstring();
-        const value = this.reader.cstring();
-        return new messages_1.ParameterStatusMessage(length, name, value);
-    }
-    parseBackendKeyData(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const processID = this.reader.int32();
-        const secretKey = this.reader.int32();
-        return new messages_1.BackendKeyDataMessage(length, processID, secretKey);
-    }
-    parseAuthenticationResponse(offset, length, bytes) {
-        this.reader.setBuffer(offset, bytes);
-        const code = this.reader.int32();
-        // TODO(bmc): maybe better types here
-        const message = {
-            name: 'authenticationOk',
-            length,
-        };
-        switch (code) {
-            case 0: // AuthenticationOk
-                break;
-            case 3: // AuthenticationCleartextPassword
-                if (message.length === 8) {
-                    message.name = 'authenticationCleartextPassword';
-                }
-                break;
-            case 5: // AuthenticationMD5Password
-                if (message.length === 12) {
-                    message.name = 'authenticationMD5Password';
-                    const salt = this.reader.bytes(4);
-                    return new messages_1.AuthenticationMD5Password(length, salt);
-                }
-                break;
-            case 10: // AuthenticationSASL
-                {
-                    message.name = 'authenticationSASL';
-                    message.mechanisms = [];
-                    let mechanism;
-                    do {
-                        mechanism = this.reader.cstring();
-                        if (mechanism) {
-                            message.mechanisms.push(mechanism);
-                        }
-                    } while (mechanism);
-                }
-                break;
-            case 11: // AuthenticationSASLContinue
-                message.name = 'authenticationSASLContinue';
-                message.data = this.reader.string(length - 8);
-                break;
-            case 12: // AuthenticationSASLFinal
-                message.name = 'authenticationSASLFinal';
-                message.data = this.reader.string(length - 8);
-                break;
-            default:
-                throw new Error('Unknown authenticationOk message type ' + code);
-        }
-        return message;
-    }
-    parseErrorMessage(offset, length, bytes, name) {
-        this.reader.setBuffer(offset, bytes);
-        const fields = {};
-        let fieldType = this.reader.string(1);
-        while (fieldType !== '\0') {
-            fields[fieldType] = this.reader.cstring();
-            fieldType = this.reader.string(1);
-        }
-        const messageValue = fields.M;
-        const message = name === 'notice' ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);
-        message.severity = fields.S;
-        message.code = fields.C;
-        message.detail = fields.D;
-        message.hint = fields.H;
-        message.position = fields.P;
-        message.internalPosition = fields.p;
-        message.internalQuery = fields.q;
-        message.where = fields.W;
-        message.schema = fields.s;
-        message.table = fields.t;
-        message.column = fields.c;
-        message.dataType = fields.d;
-        message.constraint = fields.n;
-        message.file = fields.F;
-        message.line = fields.L;
-        message.routine = fields.R;
-        return message;
-    }
-}
-exports.Parser = Parser;
-//# sourceMappingURL=parser.js.map
Index: ckend/node_modules/pg-protocol/dist/parser.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/parser.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/dist/serializer.d.ts
===================================================================
--- backend/node_modules/pg-protocol/dist/serializer.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-declare type ParseOpts = {
-    name?: string;
-    types?: number[];
-    text: string;
-};
-declare type ValueMapper = (param: any, index: number) => any;
-declare type BindOpts = {
-    portal?: string;
-    binary?: boolean;
-    statement?: string;
-    values?: any[];
-    valueMapper?: ValueMapper;
-};
-declare type ExecOpts = {
-    portal?: string;
-    rows?: number;
-};
-declare type PortalOpts = {
-    type: 'S' | 'P';
-    name?: string;
-};
-declare const serialize: {
-    startup: (opts: Record<string, string>) => Buffer;
-    password: (password: string) => Buffer;
-    requestSsl: () => Buffer;
-    sendSASLInitialResponseMessage: (mechanism: string, initialResponse: string) => Buffer;
-    sendSCRAMClientFinalMessage: (additionalData: string) => Buffer;
-    query: (text: string) => Buffer;
-    parse: (query: ParseOpts) => Buffer;
-    bind: (config?: BindOpts) => Buffer;
-    execute: (config?: ExecOpts) => Buffer;
-    describe: (msg: PortalOpts) => Buffer;
-    close: (msg: PortalOpts) => Buffer;
-    flush: () => Buffer;
-    sync: () => Buffer;
-    end: () => Buffer;
-    copyData: (chunk: Buffer) => Buffer;
-    copyDone: () => Buffer;
-    copyFail: (message: string) => Buffer;
-    cancel: (processID: number, secretKey: number) => Buffer;
-};
-export { serialize };
Index: ckend/node_modules/pg-protocol/dist/serializer.js
===================================================================
--- backend/node_modules/pg-protocol/dist/serializer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,187 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.serialize = void 0;
-const buffer_writer_1 = require("./buffer-writer");
-const writer = new buffer_writer_1.Writer();
-const startup = (opts) => {
-    // protocol version
-    writer.addInt16(3).addInt16(0);
-    for (const key of Object.keys(opts)) {
-        writer.addCString(key).addCString(opts[key]);
-    }
-    writer.addCString('client_encoding').addCString('UTF8');
-    const bodyBuffer = writer.addCString('').flush();
-    // this message is sent without a code
-    const length = bodyBuffer.length + 4;
-    return new buffer_writer_1.Writer().addInt32(length).add(bodyBuffer).flush();
-};
-const requestSsl = () => {
-    const response = Buffer.allocUnsafe(8);
-    response.writeInt32BE(8, 0);
-    response.writeInt32BE(80877103, 4);
-    return response;
-};
-const password = (password) => {
-    return writer.addCString(password).flush(112 /* code.startup */);
-};
-const sendSASLInitialResponseMessage = function (mechanism, initialResponse) {
-    // 0x70 = 'p'
-    writer.addCString(mechanism).addInt32(Buffer.byteLength(initialResponse)).addString(initialResponse);
-    return writer.flush(112 /* code.startup */);
-};
-const sendSCRAMClientFinalMessage = function (additionalData) {
-    return writer.addString(additionalData).flush(112 /* code.startup */);
-};
-const query = (text) => {
-    return writer.addCString(text).flush(81 /* code.query */);
-};
-const emptyArray = [];
-const parse = (query) => {
-    // expect something like this:
-    // { name: 'queryName',
-    //   text: 'select * from blah',
-    //   types: ['int8', 'bool'] }
-    // normalize missing query names to allow for null
-    const name = query.name || '';
-    if (name.length > 63) {
-        console.error('Warning! Postgres only supports 63 characters for query names.');
-        console.error('You supplied %s (%s)', name, name.length);
-        console.error('This can cause conflicts and silent errors executing queries');
-    }
-    const types = query.types || emptyArray;
-    const len = types.length;
-    const buffer = writer
-        .addCString(name) // name of query
-        .addCString(query.text) // actual query text
-        .addInt16(len);
-    for (let i = 0; i < len; i++) {
-        buffer.addInt32(types[i]);
-    }
-    return writer.flush(80 /* code.parse */);
-};
-const paramWriter = new buffer_writer_1.Writer();
-const writeValues = function (values, valueMapper) {
-    for (let i = 0; i < values.length; i++) {
-        const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i];
-        if (mappedVal == null) {
-            // add the param type (string) to the writer
-            writer.addInt16(0 /* ParamType.STRING */);
-            // write -1 to the param writer to indicate null
-            paramWriter.addInt32(-1);
-        }
-        else if (mappedVal instanceof Buffer) {
-            // add the param type (binary) to the writer
-            writer.addInt16(1 /* ParamType.BINARY */);
-            // add the buffer to the param writer
-            paramWriter.addInt32(mappedVal.length);
-            paramWriter.add(mappedVal);
-        }
-        else {
-            // add the param type (string) to the writer
-            writer.addInt16(0 /* ParamType.STRING */);
-            paramWriter.addInt32(Buffer.byteLength(mappedVal));
-            paramWriter.addString(mappedVal);
-        }
-    }
-};
-const bind = (config = {}) => {
-    // normalize config
-    const portal = config.portal || '';
-    const statement = config.statement || '';
-    const binary = config.binary || false;
-    const values = config.values || emptyArray;
-    const len = values.length;
-    writer.addCString(portal).addCString(statement);
-    writer.addInt16(len);
-    writeValues(values, config.valueMapper);
-    writer.addInt16(len);
-    writer.add(paramWriter.flush());
-    // format code
-    writer.addInt16(binary ? 1 /* ParamType.BINARY */ : 0 /* ParamType.STRING */);
-    return writer.flush(66 /* code.bind */);
-};
-const emptyExecute = Buffer.from([69 /* code.execute */, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00]);
-const execute = (config) => {
-    // this is the happy path for most queries
-    if (!config || (!config.portal && !config.rows)) {
-        return emptyExecute;
-    }
-    const portal = config.portal || '';
-    const rows = config.rows || 0;
-    const portalLength = Buffer.byteLength(portal);
-    const len = 4 + portalLength + 1 + 4;
-    // one extra bit for code
-    const buff = Buffer.allocUnsafe(1 + len);
-    buff[0] = 69 /* code.execute */;
-    buff.writeInt32BE(len, 1);
-    buff.write(portal, 5, 'utf-8');
-    buff[portalLength + 5] = 0; // null terminate portal cString
-    buff.writeUInt32BE(rows, buff.length - 4);
-    return buff;
-};
-const cancel = (processID, secretKey) => {
-    const buffer = Buffer.allocUnsafe(16);
-    buffer.writeInt32BE(16, 0);
-    buffer.writeInt16BE(1234, 4);
-    buffer.writeInt16BE(5678, 6);
-    buffer.writeInt32BE(processID, 8);
-    buffer.writeInt32BE(secretKey, 12);
-    return buffer;
-};
-const cstringMessage = (code, string) => {
-    const stringLen = Buffer.byteLength(string);
-    const len = 4 + stringLen + 1;
-    // one extra bit for code
-    const buffer = Buffer.allocUnsafe(1 + len);
-    buffer[0] = code;
-    buffer.writeInt32BE(len, 1);
-    buffer.write(string, 5, 'utf-8');
-    buffer[len] = 0; // null terminate cString
-    return buffer;
-};
-const emptyDescribePortal = writer.addCString('P').flush(68 /* code.describe */);
-const emptyDescribeStatement = writer.addCString('S').flush(68 /* code.describe */);
-const describe = (msg) => {
-    return msg.name
-        ? cstringMessage(68 /* code.describe */, `${msg.type}${msg.name || ''}`)
-        : msg.type === 'P'
-            ? emptyDescribePortal
-            : emptyDescribeStatement;
-};
-const close = (msg) => {
-    const text = `${msg.type}${msg.name || ''}`;
-    return cstringMessage(67 /* code.close */, text);
-};
-const copyData = (chunk) => {
-    return writer.add(chunk).flush(100 /* code.copyFromChunk */);
-};
-const copyFail = (message) => {
-    return cstringMessage(102 /* code.copyFail */, message);
-};
-const codeOnlyBuffer = (code) => Buffer.from([code, 0x00, 0x00, 0x00, 0x04]);
-const flushBuffer = codeOnlyBuffer(72 /* code.flush */);
-const syncBuffer = codeOnlyBuffer(83 /* code.sync */);
-const endBuffer = codeOnlyBuffer(88 /* code.end */);
-const copyDoneBuffer = codeOnlyBuffer(99 /* code.copyDone */);
-const serialize = {
-    startup,
-    password,
-    requestSsl,
-    sendSASLInitialResponseMessage,
-    sendSCRAMClientFinalMessage,
-    query,
-    parse,
-    bind,
-    execute,
-    describe,
-    close,
-    flush: () => flushBuffer,
-    sync: () => syncBuffer,
-    end: () => endBuffer,
-    copyData,
-    copyDone: () => copyDoneBuffer,
-    copyFail,
-    cancel,
-};
-exports.serialize = serialize;
-//# sourceMappingURL=serializer.js.map
Index: ckend/node_modules/pg-protocol/dist/serializer.js.map
===================================================================
--- backend/node_modules/pg-protocol/dist/serializer.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../src/serializer.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/pg-protocol/esm/index.js
===================================================================
--- backend/node_modules/pg-protocol/esm/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-// ESM wrapper for pg-protocol
-import * as protocol from '../dist/index.js'
-
-// Re-export all the properties
-export const DatabaseError = protocol.DatabaseError
-export const SASL = protocol.SASL
-export const serialize = protocol.serialize
-export const parse = protocol.parse
-
-// Re-export the default
-export default protocol
Index: ckend/node_modules/pg-protocol/package.json
===================================================================
--- backend/node_modules/pg-protocol/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-{
-  "name": "pg-protocol",
-  "version": "1.10.0",
-  "description": "The postgres client/server binary protocol, implemented in TypeScript",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "exports": {
-    ".": {
-      "import": "./esm/index.js",
-      "require": "./dist/index.js",
-      "default": "./dist/index.js"
-    },
-    "./dist/*": {
-      "import": "./dist/*",
-      "require": "./dist/*",
-      "default": "./dist/*"
-    }
-  },
-  "license": "MIT",
-  "devDependencies": {
-    "@types/chai": "^4.2.7",
-    "@types/mocha": "^10.0.7",
-    "@types/node": "^12.12.21",
-    "chai": "^4.2.0",
-    "chunky": "^0.0.0",
-    "mocha": "^10.5.2",
-    "ts-node": "^8.5.4",
-    "typescript": "^4.0.3"
-  },
-  "scripts": {
-    "test": "mocha dist/**/*.test.js",
-    "build": "tsc",
-    "build:watch": "tsc --watch",
-    "prepublish": "yarn build",
-    "pretest": "yarn build"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-postgres.git",
-    "directory": "packages/pg-protocol"
-  },
-  "files": [
-    "/dist/*{js,ts,map}",
-    "/src",
-    "/esm"
-  ],
-  "gitHead": "abff18d6f918c975e8b3dfebc0de3b811ae64bcb"
-}
Index: ckend/node_modules/pg-protocol/src/b.ts
===================================================================
--- backend/node_modules/pg-protocol/src/b.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-// file for microbenchmarking
-
-import { BufferReader } from './buffer-reader'
-
-const LOOPS = 1000
-let count = 0
-const start = Date.now()
-
-const reader = new BufferReader()
-const buffer = Buffer.from([33, 33, 33, 33, 33, 33, 33, 0])
-
-const run = () => {
-  if (count > LOOPS) {
-    console.log(Date.now() - start)
-    return
-  }
-  count++
-  for (let i = 0; i < LOOPS; i++) {
-    reader.setBuffer(0, buffer)
-    reader.cstring()
-  }
-  setImmediate(run)
-}
-
-run()
Index: ckend/node_modules/pg-protocol/src/buffer-reader.ts
===================================================================
--- backend/node_modules/pg-protocol/src/buffer-reader.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,60 +1,0 @@
-const emptyBuffer = Buffer.allocUnsafe(0)
-
-export class BufferReader {
-  private buffer: Buffer = emptyBuffer
-
-  // TODO(bmc): support non-utf8 encoding?
-  private encoding: string = 'utf-8'
-
-  constructor(private offset: number = 0) {}
-
-  public setBuffer(offset: number, buffer: Buffer): void {
-    this.offset = offset
-    this.buffer = buffer
-  }
-
-  public int16(): number {
-    const result = this.buffer.readInt16BE(this.offset)
-    this.offset += 2
-    return result
-  }
-
-  public byte(): number {
-    const result = this.buffer[this.offset]
-    this.offset++
-    return result
-  }
-
-  public int32(): number {
-    const result = this.buffer.readInt32BE(this.offset)
-    this.offset += 4
-    return result
-  }
-
-  public uint32(): number {
-    const result = this.buffer.readUInt32BE(this.offset)
-    this.offset += 4
-    return result
-  }
-
-  public string(length: number): string {
-    const result = this.buffer.toString(this.encoding, this.offset, this.offset + length)
-    this.offset += length
-    return result
-  }
-
-  public cstring(): string {
-    const start = this.offset
-    let end = start
-    // eslint-disable-next-line no-empty
-    while (this.buffer[end++] !== 0) {}
-    this.offset = end
-    return this.buffer.toString(this.encoding, start, end - 1)
-  }
-
-  public bytes(length: number): Buffer {
-    const result = this.buffer.slice(this.offset, this.offset + length)
-    this.offset += length
-    return result
-  }
-}
Index: ckend/node_modules/pg-protocol/src/buffer-writer.ts
===================================================================
--- backend/node_modules/pg-protocol/src/buffer-writer.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-//binary data writer tuned for encoding binary specific to the postgres binary protocol
-
-export class Writer {
-  private buffer: Buffer
-  private offset: number = 5
-  private headerPosition: number = 0
-  constructor(private size = 256) {
-    this.buffer = Buffer.allocUnsafe(size)
-  }
-
-  private ensure(size: number): void {
-    const remaining = this.buffer.length - this.offset
-    if (remaining < size) {
-      const oldBuffer = this.buffer
-      // exponential growth factor of around ~ 1.5
-      // https://stackoverflow.com/questions/2269063/buffer-growth-strategy
-      const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size
-      this.buffer = Buffer.allocUnsafe(newSize)
-      oldBuffer.copy(this.buffer)
-    }
-  }
-
-  public addInt32(num: number): Writer {
-    this.ensure(4)
-    this.buffer[this.offset++] = (num >>> 24) & 0xff
-    this.buffer[this.offset++] = (num >>> 16) & 0xff
-    this.buffer[this.offset++] = (num >>> 8) & 0xff
-    this.buffer[this.offset++] = (num >>> 0) & 0xff
-    return this
-  }
-
-  public addInt16(num: number): Writer {
-    this.ensure(2)
-    this.buffer[this.offset++] = (num >>> 8) & 0xff
-    this.buffer[this.offset++] = (num >>> 0) & 0xff
-    return this
-  }
-
-  public addCString(string: string): Writer {
-    if (!string) {
-      this.ensure(1)
-    } else {
-      const len = Buffer.byteLength(string)
-      this.ensure(len + 1) // +1 for null terminator
-      this.buffer.write(string, this.offset, 'utf-8')
-      this.offset += len
-    }
-
-    this.buffer[this.offset++] = 0 // null terminator
-    return this
-  }
-
-  public addString(string: string = ''): Writer {
-    const len = Buffer.byteLength(string)
-    this.ensure(len)
-    this.buffer.write(string, this.offset)
-    this.offset += len
-    return this
-  }
-
-  public add(otherBuffer: Buffer): Writer {
-    this.ensure(otherBuffer.length)
-    otherBuffer.copy(this.buffer, this.offset)
-    this.offset += otherBuffer.length
-    return this
-  }
-
-  private join(code?: number): Buffer {
-    if (code) {
-      this.buffer[this.headerPosition] = code
-      //length is everything in this packet minus the code
-      const length = this.offset - (this.headerPosition + 1)
-      this.buffer.writeInt32BE(length, this.headerPosition + 1)
-    }
-    return this.buffer.slice(code ? 0 : 5, this.offset)
-  }
-
-  public flush(code?: number): Buffer {
-    const result = this.join(code)
-    this.offset = 5
-    this.headerPosition = 0
-    this.buffer = Buffer.allocUnsafe(this.size)
-    return result
-  }
-}
Index: ckend/node_modules/pg-protocol/src/inbound-parser.test.ts
===================================================================
--- backend/node_modules/pg-protocol/src/inbound-parser.test.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,568 +1,0 @@
-import buffers from './testing/test-buffers'
-import BufferList from './testing/buffer-list'
-import { parse } from '.'
-import assert from 'assert'
-import { PassThrough } from 'stream'
-import { BackendMessage } from './messages'
-
-const authOkBuffer = buffers.authenticationOk()
-const paramStatusBuffer = buffers.parameterStatus('client_encoding', 'UTF8')
-const readyForQueryBuffer = buffers.readyForQuery()
-const backendKeyDataBuffer = buffers.backendKeyData(1, 2)
-const commandCompleteBuffer = buffers.commandComplete('SELECT 3')
-const parseCompleteBuffer = buffers.parseComplete()
-const bindCompleteBuffer = buffers.bindComplete()
-const portalSuspendedBuffer = buffers.portalSuspended()
-
-const row1 = {
-  name: 'id',
-  tableID: 1,
-  attributeNumber: 2,
-  dataTypeID: 3,
-  dataTypeSize: 4,
-  typeModifier: 5,
-  formatCode: 0,
-}
-const oneRowDescBuff = buffers.rowDescription([row1])
-row1.name = 'bang'
-
-const twoRowBuf = buffers.rowDescription([
-  row1,
-  {
-    name: 'whoah',
-    tableID: 10,
-    attributeNumber: 11,
-    dataTypeID: 12,
-    dataTypeSize: 13,
-    typeModifier: 14,
-    formatCode: 0,
-  },
-])
-
-const rowWithBigOids = {
-  name: 'bigoid',
-  tableID: 3000000001,
-  attributeNumber: 2,
-  dataTypeID: 3000000003,
-  dataTypeSize: 4,
-  typeModifier: 5,
-  formatCode: 0,
-}
-const bigOidDescBuff = buffers.rowDescription([rowWithBigOids])
-
-const emptyRowFieldBuf = buffers.dataRow([])
-
-const oneFieldBuf = buffers.dataRow(['test'])
-
-const expectedAuthenticationOkayMessage = {
-  name: 'authenticationOk',
-  length: 8,
-}
-
-const expectedParameterStatusMessage = {
-  name: 'parameterStatus',
-  parameterName: 'client_encoding',
-  parameterValue: 'UTF8',
-  length: 25,
-}
-
-const expectedBackendKeyDataMessage = {
-  name: 'backendKeyData',
-  processID: 1,
-  secretKey: 2,
-}
-
-const expectedReadyForQueryMessage = {
-  name: 'readyForQuery',
-  length: 5,
-  status: 'I',
-}
-
-const expectedCommandCompleteMessage = {
-  name: 'commandComplete',
-  length: 13,
-  text: 'SELECT 3',
-}
-const emptyRowDescriptionBuffer = new BufferList()
-  .addInt16(0) // number of fields
-  .join(true, 'T')
-
-const expectedEmptyRowDescriptionMessage = {
-  name: 'rowDescription',
-  length: 6,
-  fieldCount: 0,
-  fields: [],
-}
-const expectedOneRowMessage = {
-  name: 'rowDescription',
-  length: 27,
-  fieldCount: 1,
-  fields: [
-    {
-      name: 'id',
-      tableID: 1,
-      columnID: 2,
-      dataTypeID: 3,
-      dataTypeSize: 4,
-      dataTypeModifier: 5,
-      format: 'text',
-    },
-  ],
-}
-
-const expectedTwoRowMessage = {
-  name: 'rowDescription',
-  length: 53,
-  fieldCount: 2,
-  fields: [
-    {
-      name: 'bang',
-      tableID: 1,
-      columnID: 2,
-      dataTypeID: 3,
-      dataTypeSize: 4,
-      dataTypeModifier: 5,
-      format: 'text',
-    },
-    {
-      name: 'whoah',
-      tableID: 10,
-      columnID: 11,
-      dataTypeID: 12,
-      dataTypeSize: 13,
-      dataTypeModifier: 14,
-      format: 'text',
-    },
-  ],
-}
-const expectedBigOidMessage = {
-  name: 'rowDescription',
-  length: 31,
-  fieldCount: 1,
-  fields: [
-    {
-      name: 'bigoid',
-      tableID: 3000000001,
-      columnID: 2,
-      dataTypeID: 3000000003,
-      dataTypeSize: 4,
-      dataTypeModifier: 5,
-      format: 'text',
-    },
-  ],
-}
-
-const emptyParameterDescriptionBuffer = new BufferList()
-  .addInt16(0) // number of parameters
-  .join(true, 't')
-
-const oneParameterDescBuf = buffers.parameterDescription([1111])
-
-const twoParameterDescBuf = buffers.parameterDescription([2222, 3333])
-
-const expectedEmptyParameterDescriptionMessage = {
-  name: 'parameterDescription',
-  length: 6,
-  parameterCount: 0,
-  dataTypeIDs: [],
-}
-
-const expectedOneParameterMessage = {
-  name: 'parameterDescription',
-  length: 10,
-  parameterCount: 1,
-  dataTypeIDs: [1111],
-}
-
-const expectedTwoParameterMessage = {
-  name: 'parameterDescription',
-  length: 14,
-  parameterCount: 2,
-  dataTypeIDs: [2222, 3333],
-}
-
-const testForMessage = function (buffer: Buffer, expectedMessage: any) {
-  it('receives and parses ' + expectedMessage.name, async () => {
-    const messages = await parseBuffers([buffer])
-    const [lastMessage] = messages
-
-    for (const key in expectedMessage) {
-      assert.deepEqual((lastMessage as any)[key], expectedMessage[key])
-    }
-  })
-}
-
-const plainPasswordBuffer = buffers.authenticationCleartextPassword()
-const md5PasswordBuffer = buffers.authenticationMD5Password()
-const SASLBuffer = buffers.authenticationSASL()
-const SASLContinueBuffer = buffers.authenticationSASLContinue()
-const SASLFinalBuffer = buffers.authenticationSASLFinal()
-
-const expectedPlainPasswordMessage = {
-  name: 'authenticationCleartextPassword',
-}
-
-const expectedMD5PasswordMessage = {
-  name: 'authenticationMD5Password',
-  salt: Buffer.from([1, 2, 3, 4]),
-}
-
-const expectedSASLMessage = {
-  name: 'authenticationSASL',
-  mechanisms: ['SCRAM-SHA-256'],
-}
-
-const expectedSASLContinueMessage = {
-  name: 'authenticationSASLContinue',
-  data: 'data',
-}
-
-const expectedSASLFinalMessage = {
-  name: 'authenticationSASLFinal',
-  data: 'data',
-}
-
-const notificationResponseBuffer = buffers.notification(4, 'hi', 'boom')
-const expectedNotificationResponseMessage = {
-  name: 'notification',
-  processId: 4,
-  channel: 'hi',
-  payload: 'boom',
-}
-
-const parseBuffers = async (buffers: Buffer[]): Promise<BackendMessage[]> => {
-  const stream = new PassThrough()
-  for (const buffer of buffers) {
-    stream.write(buffer)
-  }
-  stream.end()
-  const msgs: BackendMessage[] = []
-  await parse(stream, (msg) => msgs.push(msg))
-  return msgs
-}
-
-describe('PgPacketStream', function () {
-  testForMessage(authOkBuffer, expectedAuthenticationOkayMessage)
-  testForMessage(plainPasswordBuffer, expectedPlainPasswordMessage)
-  testForMessage(md5PasswordBuffer, expectedMD5PasswordMessage)
-  testForMessage(SASLBuffer, expectedSASLMessage)
-  testForMessage(SASLContinueBuffer, expectedSASLContinueMessage)
-
-  // this exercises a found bug in the parser:
-  // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
-  // and adds a test which is deterministic, rather than relying on network packet chunking
-  const extendedSASLContinueBuffer = Buffer.concat([SASLContinueBuffer, Buffer.from([1, 2, 3, 4])])
-  testForMessage(extendedSASLContinueBuffer, expectedSASLContinueMessage)
-
-  testForMessage(SASLFinalBuffer, expectedSASLFinalMessage)
-
-  // this exercises a found bug in the parser:
-  // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084
-  // and adds a test which is deterministic, rather than relying on network packet chunking
-  const extendedSASLFinalBuffer = Buffer.concat([SASLFinalBuffer, Buffer.from([1, 2, 4, 5])])
-  testForMessage(extendedSASLFinalBuffer, expectedSASLFinalMessage)
-
-  testForMessage(paramStatusBuffer, expectedParameterStatusMessage)
-  testForMessage(backendKeyDataBuffer, expectedBackendKeyDataMessage)
-  testForMessage(readyForQueryBuffer, expectedReadyForQueryMessage)
-  testForMessage(commandCompleteBuffer, expectedCommandCompleteMessage)
-  testForMessage(notificationResponseBuffer, expectedNotificationResponseMessage)
-  testForMessage(buffers.emptyQuery(), {
-    name: 'emptyQuery',
-    length: 4,
-  })
-
-  testForMessage(Buffer.from([0x6e, 0, 0, 0, 4]), {
-    name: 'noData',
-  })
-
-  describe('rowDescription messages', function () {
-    testForMessage(emptyRowDescriptionBuffer, expectedEmptyRowDescriptionMessage)
-    testForMessage(oneRowDescBuff, expectedOneRowMessage)
-    testForMessage(twoRowBuf, expectedTwoRowMessage)
-    testForMessage(bigOidDescBuff, expectedBigOidMessage)
-  })
-
-  describe('parameterDescription messages', function () {
-    testForMessage(emptyParameterDescriptionBuffer, expectedEmptyParameterDescriptionMessage)
-    testForMessage(oneParameterDescBuf, expectedOneParameterMessage)
-    testForMessage(twoParameterDescBuf, expectedTwoParameterMessage)
-  })
-
-  describe('parsing rows', function () {
-    describe('parsing empty row', function () {
-      testForMessage(emptyRowFieldBuf, {
-        name: 'dataRow',
-        fieldCount: 0,
-      })
-    })
-
-    describe('parsing data row with fields', function () {
-      testForMessage(oneFieldBuf, {
-        name: 'dataRow',
-        fieldCount: 1,
-        fields: ['test'],
-      })
-    })
-  })
-
-  describe('notice message', function () {
-    // this uses the same logic as error message
-    const buff = buffers.notice([{ type: 'C', value: 'code' }])
-    testForMessage(buff, {
-      name: 'notice',
-      code: 'code',
-    })
-  })
-
-  testForMessage(buffers.error([]), {
-    name: 'error',
-  })
-
-  describe('with all the fields', function () {
-    const buffer = buffers.error([
-      {
-        type: 'S',
-        value: 'ERROR',
-      },
-      {
-        type: 'C',
-        value: 'code',
-      },
-      {
-        type: 'M',
-        value: 'message',
-      },
-      {
-        type: 'D',
-        value: 'details',
-      },
-      {
-        type: 'H',
-        value: 'hint',
-      },
-      {
-        type: 'P',
-        value: '100',
-      },
-      {
-        type: 'p',
-        value: '101',
-      },
-      {
-        type: 'q',
-        value: 'query',
-      },
-      {
-        type: 'W',
-        value: 'where',
-      },
-      {
-        type: 'F',
-        value: 'file',
-      },
-      {
-        type: 'L',
-        value: 'line',
-      },
-      {
-        type: 'R',
-        value: 'routine',
-      },
-      {
-        type: 'Z', // ignored
-        value: 'alsdkf',
-      },
-    ])
-
-    testForMessage(buffer, {
-      name: 'error',
-      severity: 'ERROR',
-      code: 'code',
-      message: 'message',
-      detail: 'details',
-      hint: 'hint',
-      position: '100',
-      internalPosition: '101',
-      internalQuery: 'query',
-      where: 'where',
-      file: 'file',
-      line: 'line',
-      routine: 'routine',
-    })
-  })
-
-  testForMessage(parseCompleteBuffer, {
-    name: 'parseComplete',
-  })
-
-  testForMessage(bindCompleteBuffer, {
-    name: 'bindComplete',
-  })
-
-  testForMessage(bindCompleteBuffer, {
-    name: 'bindComplete',
-  })
-
-  testForMessage(buffers.closeComplete(), {
-    name: 'closeComplete',
-  })
-
-  describe('parses portal suspended message', function () {
-    testForMessage(portalSuspendedBuffer, {
-      name: 'portalSuspended',
-    })
-  })
-
-  describe('parses replication start message', function () {
-    testForMessage(Buffer.from([0x57, 0x00, 0x00, 0x00, 0x04]), {
-      name: 'replicationStart',
-      length: 4,
-    })
-  })
-
-  describe('copy', () => {
-    testForMessage(buffers.copyIn(0), {
-      name: 'copyInResponse',
-      length: 7,
-      binary: false,
-      columnTypes: [],
-    })
-
-    testForMessage(buffers.copyIn(2), {
-      name: 'copyInResponse',
-      length: 11,
-      binary: false,
-      columnTypes: [0, 1],
-    })
-
-    testForMessage(buffers.copyOut(0), {
-      name: 'copyOutResponse',
-      length: 7,
-      binary: false,
-      columnTypes: [],
-    })
-
-    testForMessage(buffers.copyOut(3), {
-      name: 'copyOutResponse',
-      length: 13,
-      binary: false,
-      columnTypes: [0, 1, 2],
-    })
-
-    testForMessage(buffers.copyDone(), {
-      name: 'copyDone',
-      length: 4,
-    })
-
-    testForMessage(buffers.copyData(Buffer.from([5, 6, 7])), {
-      name: 'copyData',
-      length: 7,
-      chunk: Buffer.from([5, 6, 7]),
-    })
-  })
-
-  // since the data message on a stream can randomly divide the incomming
-  // tcp packets anywhere, we need to make sure we can parse every single
-  // split on a tcp message
-  describe('split buffer, single message parsing', function () {
-    const fullBuffer = buffers.dataRow([null, 'bang', 'zug zug', null, '!'])
-
-    it('parses when full buffer comes in', async function () {
-      const messages = await parseBuffers([fullBuffer])
-      const message = messages[0] as any
-      assert.equal(message.fields.length, 5)
-      assert.equal(message.fields[0], null)
-      assert.equal(message.fields[1], 'bang')
-      assert.equal(message.fields[2], 'zug zug')
-      assert.equal(message.fields[3], null)
-      assert.equal(message.fields[4], '!')
-    })
-
-    const testMessageReceivedAfterSplitAt = async function (split: number) {
-      const firstBuffer = Buffer.alloc(fullBuffer.length - split)
-      const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length)
-      fullBuffer.copy(firstBuffer, 0, 0)
-      fullBuffer.copy(secondBuffer, 0, firstBuffer.length)
-      const messages = await parseBuffers([firstBuffer, secondBuffer])
-      const message = messages[0] as any
-      assert.equal(message.fields.length, 5)
-      assert.equal(message.fields[0], null)
-      assert.equal(message.fields[1], 'bang')
-      assert.equal(message.fields[2], 'zug zug')
-      assert.equal(message.fields[3], null)
-      assert.equal(message.fields[4], '!')
-    }
-
-    it('parses when split in the middle', function () {
-      return testMessageReceivedAfterSplitAt(6)
-    })
-
-    it('parses when split at end', function () {
-      return testMessageReceivedAfterSplitAt(2)
-    })
-
-    it('parses when split at beginning', function () {
-      return Promise.all([
-        testMessageReceivedAfterSplitAt(fullBuffer.length - 2),
-        testMessageReceivedAfterSplitAt(fullBuffer.length - 1),
-        testMessageReceivedAfterSplitAt(fullBuffer.length - 5),
-      ])
-    })
-  })
-
-  describe('split buffer, multiple message parsing', function () {
-    const dataRowBuffer = buffers.dataRow(['!'])
-    const readyForQueryBuffer = buffers.readyForQuery()
-    const fullBuffer = Buffer.alloc(dataRowBuffer.length + readyForQueryBuffer.length)
-    dataRowBuffer.copy(fullBuffer, 0, 0)
-    readyForQueryBuffer.copy(fullBuffer, dataRowBuffer.length, 0)
-
-    const verifyMessages = function (messages: any[]) {
-      assert.strictEqual(messages.length, 2)
-      assert.deepEqual(messages[0], {
-        name: 'dataRow',
-        fieldCount: 1,
-        length: 11,
-        fields: ['!'],
-      })
-      assert.equal(messages[0].fields[0], '!')
-      assert.deepEqual(messages[1], {
-        name: 'readyForQuery',
-        length: 5,
-        status: 'I',
-      })
-    }
-    // sanity check
-    it('receives both messages when packet is not split', async function () {
-      const messages = await parseBuffers([fullBuffer])
-      verifyMessages(messages)
-    })
-
-    const splitAndVerifyTwoMessages = async function (split: number) {
-      const firstBuffer = Buffer.alloc(fullBuffer.length - split)
-      const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length)
-      fullBuffer.copy(firstBuffer, 0, 0)
-      fullBuffer.copy(secondBuffer, 0, firstBuffer.length)
-      const messages = await parseBuffers([firstBuffer, secondBuffer])
-      verifyMessages(messages)
-    }
-
-    describe('receives both messages when packet is split', function () {
-      it('in the middle', function () {
-        return splitAndVerifyTwoMessages(11)
-      })
-      it('at the front', function () {
-        return Promise.all([
-          splitAndVerifyTwoMessages(fullBuffer.length - 1),
-          splitAndVerifyTwoMessages(fullBuffer.length - 4),
-          splitAndVerifyTwoMessages(fullBuffer.length - 6),
-        ])
-      })
-
-      it('at the end', function () {
-        return Promise.all([splitAndVerifyTwoMessages(8), splitAndVerifyTwoMessages(1)])
-      })
-    })
-  })
-})
Index: ckend/node_modules/pg-protocol/src/index.ts
===================================================================
--- backend/node_modules/pg-protocol/src/index.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import { DatabaseError } from './messages'
-import { serialize } from './serializer'
-import { Parser, MessageCallback } from './parser'
-
-export function parse(stream: NodeJS.ReadableStream, callback: MessageCallback): Promise<void> {
-  const parser = new Parser()
-  stream.on('data', (buffer: Buffer) => parser.parse(buffer, callback))
-  return new Promise((resolve) => stream.on('end', () => resolve()))
-}
-
-export { serialize, DatabaseError }
Index: ckend/node_modules/pg-protocol/src/messages.ts
===================================================================
--- backend/node_modules/pg-protocol/src/messages.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,262 +1,0 @@
-export type Mode = 'text' | 'binary'
-
-export type MessageName =
-  | 'parseComplete'
-  | 'bindComplete'
-  | 'closeComplete'
-  | 'noData'
-  | 'portalSuspended'
-  | 'replicationStart'
-  | 'emptyQuery'
-  | 'copyDone'
-  | 'copyData'
-  | 'rowDescription'
-  | 'parameterDescription'
-  | 'parameterStatus'
-  | 'backendKeyData'
-  | 'notification'
-  | 'readyForQuery'
-  | 'commandComplete'
-  | 'dataRow'
-  | 'copyInResponse'
-  | 'copyOutResponse'
-  | 'authenticationOk'
-  | 'authenticationMD5Password'
-  | 'authenticationCleartextPassword'
-  | 'authenticationSASL'
-  | 'authenticationSASLContinue'
-  | 'authenticationSASLFinal'
-  | 'error'
-  | 'notice'
-
-export interface BackendMessage {
-  name: MessageName
-  length: number
-}
-
-export const parseComplete: BackendMessage = {
-  name: 'parseComplete',
-  length: 5,
-}
-
-export const bindComplete: BackendMessage = {
-  name: 'bindComplete',
-  length: 5,
-}
-
-export const closeComplete: BackendMessage = {
-  name: 'closeComplete',
-  length: 5,
-}
-
-export const noData: BackendMessage = {
-  name: 'noData',
-  length: 5,
-}
-
-export const portalSuspended: BackendMessage = {
-  name: 'portalSuspended',
-  length: 5,
-}
-
-export const replicationStart: BackendMessage = {
-  name: 'replicationStart',
-  length: 4,
-}
-
-export const emptyQuery: BackendMessage = {
-  name: 'emptyQuery',
-  length: 4,
-}
-
-export const copyDone: BackendMessage = {
-  name: 'copyDone',
-  length: 4,
-}
-
-interface NoticeOrError {
-  message: string | undefined
-  severity: string | undefined
-  code: string | undefined
-  detail: string | undefined
-  hint: string | undefined
-  position: string | undefined
-  internalPosition: string | undefined
-  internalQuery: string | undefined
-  where: string | undefined
-  schema: string | undefined
-  table: string | undefined
-  column: string | undefined
-  dataType: string | undefined
-  constraint: string | undefined
-  file: string | undefined
-  line: string | undefined
-  routine: string | undefined
-}
-
-export class DatabaseError extends Error implements NoticeOrError {
-  public severity: string | undefined
-  public code: string | undefined
-  public detail: string | undefined
-  public hint: string | undefined
-  public position: string | undefined
-  public internalPosition: string | undefined
-  public internalQuery: string | undefined
-  public where: string | undefined
-  public schema: string | undefined
-  public table: string | undefined
-  public column: string | undefined
-  public dataType: string | undefined
-  public constraint: string | undefined
-  public file: string | undefined
-  public line: string | undefined
-  public routine: string | undefined
-  constructor(
-    message: string,
-    public readonly length: number,
-    public readonly name: MessageName
-  ) {
-    super(message)
-  }
-}
-
-export class CopyDataMessage {
-  public readonly name = 'copyData'
-  constructor(
-    public readonly length: number,
-    public readonly chunk: Buffer
-  ) {}
-}
-
-export class CopyResponse {
-  public readonly columnTypes: number[]
-  constructor(
-    public readonly length: number,
-    public readonly name: MessageName,
-    public readonly binary: boolean,
-    columnCount: number
-  ) {
-    this.columnTypes = new Array(columnCount)
-  }
-}
-
-export class Field {
-  constructor(
-    public readonly name: string,
-    public readonly tableID: number,
-    public readonly columnID: number,
-    public readonly dataTypeID: number,
-    public readonly dataTypeSize: number,
-    public readonly dataTypeModifier: number,
-    public readonly format: Mode
-  ) {}
-}
-
-export class RowDescriptionMessage {
-  public readonly name: MessageName = 'rowDescription'
-  public readonly fields: Field[]
-  constructor(
-    public readonly length: number,
-    public readonly fieldCount: number
-  ) {
-    this.fields = new Array(this.fieldCount)
-  }
-}
-
-export class ParameterDescriptionMessage {
-  public readonly name: MessageName = 'parameterDescription'
-  public readonly dataTypeIDs: number[]
-  constructor(
-    public readonly length: number,
-    public readonly parameterCount: number
-  ) {
-    this.dataTypeIDs = new Array(this.parameterCount)
-  }
-}
-
-export class ParameterStatusMessage {
-  public readonly name: MessageName = 'parameterStatus'
-  constructor(
-    public readonly length: number,
-    public readonly parameterName: string,
-    public readonly parameterValue: string
-  ) {}
-}
-
-export class AuthenticationMD5Password implements BackendMessage {
-  public readonly name: MessageName = 'authenticationMD5Password'
-  constructor(
-    public readonly length: number,
-    public readonly salt: Buffer
-  ) {}
-}
-
-export class BackendKeyDataMessage {
-  public readonly name: MessageName = 'backendKeyData'
-  constructor(
-    public readonly length: number,
-    public readonly processID: number,
-    public readonly secretKey: number
-  ) {}
-}
-
-export class NotificationResponseMessage {
-  public readonly name: MessageName = 'notification'
-  constructor(
-    public readonly length: number,
-    public readonly processId: number,
-    public readonly channel: string,
-    public readonly payload: string
-  ) {}
-}
-
-export class ReadyForQueryMessage {
-  public readonly name: MessageName = 'readyForQuery'
-  constructor(
-    public readonly length: number,
-    public readonly status: string
-  ) {}
-}
-
-export class CommandCompleteMessage {
-  public readonly name: MessageName = 'commandComplete'
-  constructor(
-    public readonly length: number,
-    public readonly text: string
-  ) {}
-}
-
-export class DataRowMessage {
-  public readonly fieldCount: number
-  public readonly name: MessageName = 'dataRow'
-  constructor(
-    public length: number,
-    public fields: any[]
-  ) {
-    this.fieldCount = fields.length
-  }
-}
-
-export class NoticeMessage implements BackendMessage, NoticeOrError {
-  constructor(
-    public readonly length: number,
-    public readonly message: string | undefined
-  ) {}
-  public readonly name = 'notice'
-  public severity: string | undefined
-  public code: string | undefined
-  public detail: string | undefined
-  public hint: string | undefined
-  public position: string | undefined
-  public internalPosition: string | undefined
-  public internalQuery: string | undefined
-  public where: string | undefined
-  public schema: string | undefined
-  public table: string | undefined
-  public column: string | undefined
-  public dataType: string | undefined
-  public constraint: string | undefined
-  public file: string | undefined
-  public line: string | undefined
-  public routine: string | undefined
-}
Index: ckend/node_modules/pg-protocol/src/outbound-serializer.test.ts
===================================================================
--- backend/node_modules/pg-protocol/src/outbound-serializer.test.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,272 +1,0 @@
-import assert from 'assert'
-import { serialize } from './serializer'
-import BufferList from './testing/buffer-list'
-
-describe('serializer', () => {
-  it('builds startup message', function () {
-    const actual = serialize.startup({
-      user: 'brian',
-      database: 'bang',
-    })
-    assert.deepEqual(
-      actual,
-      new BufferList()
-        .addInt16(3)
-        .addInt16(0)
-        .addCString('user')
-        .addCString('brian')
-        .addCString('database')
-        .addCString('bang')
-        .addCString('client_encoding')
-        .addCString('UTF8')
-        .addCString('')
-        .join(true)
-    )
-  })
-
-  it('builds password message', function () {
-    const actual = serialize.password('!')
-    assert.deepEqual(actual, new BufferList().addCString('!').join(true, 'p'))
-  })
-
-  it('builds request ssl message', function () {
-    const actual = serialize.requestSsl()
-    const expected = new BufferList().addInt32(80877103).join(true)
-    assert.deepEqual(actual, expected)
-  })
-
-  it('builds SASLInitialResponseMessage message', function () {
-    const actual = serialize.sendSASLInitialResponseMessage('mech', 'data')
-    assert.deepEqual(actual, new BufferList().addCString('mech').addInt32(4).addString('data').join(true, 'p'))
-  })
-
-  it('builds SCRAMClientFinalMessage message', function () {
-    const actual = serialize.sendSCRAMClientFinalMessage('data')
-    assert.deepEqual(actual, new BufferList().addString('data').join(true, 'p'))
-  })
-
-  it('builds query message', function () {
-    const txt = 'select * from boom'
-    const actual = serialize.query(txt)
-    assert.deepEqual(actual, new BufferList().addCString(txt).join(true, 'Q'))
-  })
-
-  describe('parse message', () => {
-    it('builds parse message', function () {
-      const actual = serialize.parse({ text: '!' })
-      const expected = new BufferList().addCString('').addCString('!').addInt16(0).join(true, 'P')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('builds parse message with named query', function () {
-      const actual = serialize.parse({
-        name: 'boom',
-        text: 'select * from boom',
-        types: [],
-      })
-      const expected = new BufferList().addCString('boom').addCString('select * from boom').addInt16(0).join(true, 'P')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('with multiple parameters', function () {
-      const actual = serialize.parse({
-        name: 'force',
-        text: 'select * from bang where name = $1',
-        types: [1, 2, 3, 4],
-      })
-      const expected = new BufferList()
-        .addCString('force')
-        .addCString('select * from bang where name = $1')
-        .addInt16(4)
-        .addInt32(1)
-        .addInt32(2)
-        .addInt32(3)
-        .addInt32(4)
-        .join(true, 'P')
-      assert.deepEqual(actual, expected)
-    })
-  })
-
-  describe('bind messages', function () {
-    it('with no values', function () {
-      const actual = serialize.bind()
-
-      const expectedBuffer = new BufferList()
-        .addCString('')
-        .addCString('')
-        .addInt16(0)
-        .addInt16(0)
-        .addInt16(0)
-        .join(true, 'B')
-      assert.deepEqual(actual, expectedBuffer)
-    })
-
-    it('with named statement, portal, and values', function () {
-      const actual = serialize.bind({
-        portal: 'bang',
-        statement: 'woo',
-        values: ['1', 'hi', null, 'zing'],
-      })
-      const expectedBuffer = new BufferList()
-        .addCString('bang') // portal name
-        .addCString('woo') // statement name
-        .addInt16(4)
-        .addInt16(0)
-        .addInt16(0)
-        .addInt16(0)
-        .addInt16(0)
-        .addInt16(4)
-        .addInt32(1)
-        .add(Buffer.from('1'))
-        .addInt32(2)
-        .add(Buffer.from('hi'))
-        .addInt32(-1)
-        .addInt32(4)
-        .add(Buffer.from('zing'))
-        .addInt16(0)
-        .join(true, 'B')
-      assert.deepEqual(actual, expectedBuffer)
-    })
-  })
-
-  it('with custom valueMapper', function () {
-    const actual = serialize.bind({
-      portal: 'bang',
-      statement: 'woo',
-      values: ['1', 'hi', null, 'zing'],
-      valueMapper: () => null,
-    })
-    const expectedBuffer = new BufferList()
-      .addCString('bang') // portal name
-      .addCString('woo') // statement name
-      .addInt16(4)
-      .addInt16(0)
-      .addInt16(0)
-      .addInt16(0)
-      .addInt16(0)
-      .addInt16(4)
-      .addInt32(-1)
-      .addInt32(-1)
-      .addInt32(-1)
-      .addInt32(-1)
-      .addInt16(0)
-      .join(true, 'B')
-    assert.deepEqual(actual, expectedBuffer)
-  })
-
-  it('with named statement, portal, and buffer value', function () {
-    const actual = serialize.bind({
-      portal: 'bang',
-      statement: 'woo',
-      values: ['1', 'hi', null, Buffer.from('zing', 'utf8')],
-    })
-    const expectedBuffer = new BufferList()
-      .addCString('bang') // portal name
-      .addCString('woo') // statement name
-      .addInt16(4) // value count
-      .addInt16(0) // string
-      .addInt16(0) // string
-      .addInt16(0) // string
-      .addInt16(1) // binary
-      .addInt16(4)
-      .addInt32(1)
-      .add(Buffer.from('1'))
-      .addInt32(2)
-      .add(Buffer.from('hi'))
-      .addInt32(-1)
-      .addInt32(4)
-      .add(Buffer.from('zing', 'utf-8'))
-      .addInt16(0)
-      .join(true, 'B')
-    assert.deepEqual(actual, expectedBuffer)
-  })
-
-  describe('builds execute message', function () {
-    it('for unamed portal with no row limit', function () {
-      const actual = serialize.execute()
-      const expectedBuffer = new BufferList().addCString('').addInt32(0).join(true, 'E')
-      assert.deepEqual(actual, expectedBuffer)
-    })
-
-    it('for named portal with row limit', function () {
-      const actual = serialize.execute({
-        portal: 'my favorite portal',
-        rows: 100,
-      })
-      const expectedBuffer = new BufferList().addCString('my favorite portal').addInt32(100).join(true, 'E')
-      assert.deepEqual(actual, expectedBuffer)
-    })
-  })
-
-  it('builds flush command', function () {
-    const actual = serialize.flush()
-    const expected = new BufferList().join(true, 'H')
-    assert.deepEqual(actual, expected)
-  })
-
-  it('builds sync command', function () {
-    const actual = serialize.sync()
-    const expected = new BufferList().join(true, 'S')
-    assert.deepEqual(actual, expected)
-  })
-
-  it('builds end command', function () {
-    const actual = serialize.end()
-    const expected = Buffer.from([0x58, 0, 0, 0, 4])
-    assert.deepEqual(actual, expected)
-  })
-
-  describe('builds describe command', function () {
-    it('describe statement', function () {
-      const actual = serialize.describe({ type: 'S', name: 'bang' })
-      const expected = new BufferList().addChar('S').addCString('bang').join(true, 'D')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('describe unnamed portal', function () {
-      const actual = serialize.describe({ type: 'P' })
-      const expected = new BufferList().addChar('P').addCString('').join(true, 'D')
-      assert.deepEqual(actual, expected)
-    })
-  })
-
-  describe('builds close command', function () {
-    it('describe statement', function () {
-      const actual = serialize.close({ type: 'S', name: 'bang' })
-      const expected = new BufferList().addChar('S').addCString('bang').join(true, 'C')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('describe unnamed portal', function () {
-      const actual = serialize.close({ type: 'P' })
-      const expected = new BufferList().addChar('P').addCString('').join(true, 'C')
-      assert.deepEqual(actual, expected)
-    })
-  })
-
-  describe('copy messages', function () {
-    it('builds copyFromChunk', () => {
-      const actual = serialize.copyData(Buffer.from([1, 2, 3]))
-      const expected = new BufferList().add(Buffer.from([1, 2, 3])).join(true, 'd')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('builds copy fail', () => {
-      const actual = serialize.copyFail('err!')
-      const expected = new BufferList().addCString('err!').join(true, 'f')
-      assert.deepEqual(actual, expected)
-    })
-
-    it('builds copy done', () => {
-      const actual = serialize.copyDone()
-      const expected = new BufferList().join(true, 'c')
-      assert.deepEqual(actual, expected)
-    })
-  })
-
-  it('builds cancel message', () => {
-    const actual = serialize.cancel(3, 4)
-    const expected = new BufferList().addInt16(1234).addInt16(5678).addInt32(3).addInt32(4).join(true)
-    assert.deepEqual(actual, expected)
-  })
-})
Index: ckend/node_modules/pg-protocol/src/parser.ts
===================================================================
--- backend/node_modules/pg-protocol/src/parser.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,389 +1,0 @@
-import { TransformOptions } from 'stream'
-import {
-  Mode,
-  bindComplete,
-  parseComplete,
-  closeComplete,
-  noData,
-  portalSuspended,
-  copyDone,
-  replicationStart,
-  emptyQuery,
-  ReadyForQueryMessage,
-  CommandCompleteMessage,
-  CopyDataMessage,
-  CopyResponse,
-  NotificationResponseMessage,
-  RowDescriptionMessage,
-  ParameterDescriptionMessage,
-  Field,
-  DataRowMessage,
-  ParameterStatusMessage,
-  BackendKeyDataMessage,
-  DatabaseError,
-  BackendMessage,
-  MessageName,
-  AuthenticationMD5Password,
-  NoticeMessage,
-} from './messages'
-import { BufferReader } from './buffer-reader'
-
-// every message is prefixed with a single bye
-const CODE_LENGTH = 1
-// every message has an int32 length which includes itself but does
-// NOT include the code in the length
-const LEN_LENGTH = 4
-
-const HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH
-
-export type Packet = {
-  code: number
-  packet: Buffer
-}
-
-const emptyBuffer = Buffer.allocUnsafe(0)
-
-type StreamOptions = TransformOptions & {
-  mode: Mode
-}
-
-const enum MessageCodes {
-  DataRow = 0x44, // D
-  ParseComplete = 0x31, // 1
-  BindComplete = 0x32, // 2
-  CloseComplete = 0x33, // 3
-  CommandComplete = 0x43, // C
-  ReadyForQuery = 0x5a, // Z
-  NoData = 0x6e, // n
-  NotificationResponse = 0x41, // A
-  AuthenticationResponse = 0x52, // R
-  ParameterStatus = 0x53, // S
-  BackendKeyData = 0x4b, // K
-  ErrorMessage = 0x45, // E
-  NoticeMessage = 0x4e, // N
-  RowDescriptionMessage = 0x54, // T
-  ParameterDescriptionMessage = 0x74, // t
-  PortalSuspended = 0x73, // s
-  ReplicationStart = 0x57, // W
-  EmptyQuery = 0x49, // I
-  CopyIn = 0x47, // G
-  CopyOut = 0x48, // H
-  CopyDone = 0x63, // c
-  CopyData = 0x64, // d
-}
-
-export type MessageCallback = (msg: BackendMessage) => void
-
-export class Parser {
-  private buffer: Buffer = emptyBuffer
-  private bufferLength: number = 0
-  private bufferOffset: number = 0
-  private reader = new BufferReader()
-  private mode: Mode
-
-  constructor(opts?: StreamOptions) {
-    if (opts?.mode === 'binary') {
-      throw new Error('Binary mode not supported yet')
-    }
-    this.mode = opts?.mode || 'text'
-  }
-
-  public parse(buffer: Buffer, callback: MessageCallback) {
-    this.mergeBuffer(buffer)
-    const bufferFullLength = this.bufferOffset + this.bufferLength
-    let offset = this.bufferOffset
-    while (offset + HEADER_LENGTH <= bufferFullLength) {
-      // code is 1 byte long - it identifies the message type
-      const code = this.buffer[offset]
-      // length is 1 Uint32BE - it is the length of the message EXCLUDING the code
-      const length = this.buffer.readUInt32BE(offset + CODE_LENGTH)
-      const fullMessageLength = CODE_LENGTH + length
-      if (fullMessageLength + offset <= bufferFullLength) {
-        const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer)
-        callback(message)
-        offset += fullMessageLength
-      } else {
-        break
-      }
-    }
-    if (offset === bufferFullLength) {
-      // No more use for the buffer
-      this.buffer = emptyBuffer
-      this.bufferLength = 0
-      this.bufferOffset = 0
-    } else {
-      // Adjust the cursors of remainingBuffer
-      this.bufferLength = bufferFullLength - offset
-      this.bufferOffset = offset
-    }
-  }
-
-  private mergeBuffer(buffer: Buffer): void {
-    if (this.bufferLength > 0) {
-      const newLength = this.bufferLength + buffer.byteLength
-      const newFullLength = newLength + this.bufferOffset
-      if (newFullLength > this.buffer.byteLength) {
-        // We can't concat the new buffer with the remaining one
-        let newBuffer: Buffer
-        if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) {
-          // We can move the relevant part to the beginning of the buffer instead of allocating a new buffer
-          newBuffer = this.buffer
-        } else {
-          // Allocate a new larger buffer
-          let newBufferLength = this.buffer.byteLength * 2
-          while (newLength >= newBufferLength) {
-            newBufferLength *= 2
-          }
-          newBuffer = Buffer.allocUnsafe(newBufferLength)
-        }
-        // Move the remaining buffer to the new one
-        this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength)
-        this.buffer = newBuffer
-        this.bufferOffset = 0
-      }
-      // Concat the new buffer with the remaining one
-      buffer.copy(this.buffer, this.bufferOffset + this.bufferLength)
-      this.bufferLength = newLength
-    } else {
-      this.buffer = buffer
-      this.bufferOffset = 0
-      this.bufferLength = buffer.byteLength
-    }
-  }
-
-  private handlePacket(offset: number, code: number, length: number, bytes: Buffer): BackendMessage {
-    switch (code) {
-      case MessageCodes.BindComplete:
-        return bindComplete
-      case MessageCodes.ParseComplete:
-        return parseComplete
-      case MessageCodes.CloseComplete:
-        return closeComplete
-      case MessageCodes.NoData:
-        return noData
-      case MessageCodes.PortalSuspended:
-        return portalSuspended
-      case MessageCodes.CopyDone:
-        return copyDone
-      case MessageCodes.ReplicationStart:
-        return replicationStart
-      case MessageCodes.EmptyQuery:
-        return emptyQuery
-      case MessageCodes.DataRow:
-        return this.parseDataRowMessage(offset, length, bytes)
-      case MessageCodes.CommandComplete:
-        return this.parseCommandCompleteMessage(offset, length, bytes)
-      case MessageCodes.ReadyForQuery:
-        return this.parseReadyForQueryMessage(offset, length, bytes)
-      case MessageCodes.NotificationResponse:
-        return this.parseNotificationMessage(offset, length, bytes)
-      case MessageCodes.AuthenticationResponse:
-        return this.parseAuthenticationResponse(offset, length, bytes)
-      case MessageCodes.ParameterStatus:
-        return this.parseParameterStatusMessage(offset, length, bytes)
-      case MessageCodes.BackendKeyData:
-        return this.parseBackendKeyData(offset, length, bytes)
-      case MessageCodes.ErrorMessage:
-        return this.parseErrorMessage(offset, length, bytes, 'error')
-      case MessageCodes.NoticeMessage:
-        return this.parseErrorMessage(offset, length, bytes, 'notice')
-      case MessageCodes.RowDescriptionMessage:
-        return this.parseRowDescriptionMessage(offset, length, bytes)
-      case MessageCodes.ParameterDescriptionMessage:
-        return this.parseParameterDescriptionMessage(offset, length, bytes)
-      case MessageCodes.CopyIn:
-        return this.parseCopyInMessage(offset, length, bytes)
-      case MessageCodes.CopyOut:
-        return this.parseCopyOutMessage(offset, length, bytes)
-      case MessageCodes.CopyData:
-        return this.parseCopyData(offset, length, bytes)
-      default:
-        return new DatabaseError('received invalid response: ' + code.toString(16), length, 'error')
-    }
-  }
-
-  private parseReadyForQueryMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const status = this.reader.string(1)
-    return new ReadyForQueryMessage(length, status)
-  }
-
-  private parseCommandCompleteMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const text = this.reader.cstring()
-    return new CommandCompleteMessage(length, text)
-  }
-
-  private parseCopyData(offset: number, length: number, bytes: Buffer) {
-    const chunk = bytes.slice(offset, offset + (length - 4))
-    return new CopyDataMessage(length, chunk)
-  }
-
-  private parseCopyInMessage(offset: number, length: number, bytes: Buffer) {
-    return this.parseCopyMessage(offset, length, bytes, 'copyInResponse')
-  }
-
-  private parseCopyOutMessage(offset: number, length: number, bytes: Buffer) {
-    return this.parseCopyMessage(offset, length, bytes, 'copyOutResponse')
-  }
-
-  private parseCopyMessage(offset: number, length: number, bytes: Buffer, messageName: MessageName) {
-    this.reader.setBuffer(offset, bytes)
-    const isBinary = this.reader.byte() !== 0
-    const columnCount = this.reader.int16()
-    const message = new CopyResponse(length, messageName, isBinary, columnCount)
-    for (let i = 0; i < columnCount; i++) {
-      message.columnTypes[i] = this.reader.int16()
-    }
-    return message
-  }
-
-  private parseNotificationMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const processId = this.reader.int32()
-    const channel = this.reader.cstring()
-    const payload = this.reader.cstring()
-    return new NotificationResponseMessage(length, processId, channel, payload)
-  }
-
-  private parseRowDescriptionMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const fieldCount = this.reader.int16()
-    const message = new RowDescriptionMessage(length, fieldCount)
-    for (let i = 0; i < fieldCount; i++) {
-      message.fields[i] = this.parseField()
-    }
-    return message
-  }
-
-  private parseField(): Field {
-    const name = this.reader.cstring()
-    const tableID = this.reader.uint32()
-    const columnID = this.reader.int16()
-    const dataTypeID = this.reader.uint32()
-    const dataTypeSize = this.reader.int16()
-    const dataTypeModifier = this.reader.int32()
-    const mode = this.reader.int16() === 0 ? 'text' : 'binary'
-    return new Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode)
-  }
-
-  private parseParameterDescriptionMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const parameterCount = this.reader.int16()
-    const message = new ParameterDescriptionMessage(length, parameterCount)
-    for (let i = 0; i < parameterCount; i++) {
-      message.dataTypeIDs[i] = this.reader.int32()
-    }
-    return message
-  }
-
-  private parseDataRowMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const fieldCount = this.reader.int16()
-    const fields: any[] = new Array(fieldCount)
-    for (let i = 0; i < fieldCount; i++) {
-      const len = this.reader.int32()
-      // a -1 for length means the value of the field is null
-      fields[i] = len === -1 ? null : this.reader.string(len)
-    }
-    return new DataRowMessage(length, fields)
-  }
-
-  private parseParameterStatusMessage(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const name = this.reader.cstring()
-    const value = this.reader.cstring()
-    return new ParameterStatusMessage(length, name, value)
-  }
-
-  private parseBackendKeyData(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const processID = this.reader.int32()
-    const secretKey = this.reader.int32()
-    return new BackendKeyDataMessage(length, processID, secretKey)
-  }
-
-  public parseAuthenticationResponse(offset: number, length: number, bytes: Buffer) {
-    this.reader.setBuffer(offset, bytes)
-    const code = this.reader.int32()
-    // TODO(bmc): maybe better types here
-    const message: BackendMessage & any = {
-      name: 'authenticationOk',
-      length,
-    }
-
-    switch (code) {
-      case 0: // AuthenticationOk
-        break
-      case 3: // AuthenticationCleartextPassword
-        if (message.length === 8) {
-          message.name = 'authenticationCleartextPassword'
-        }
-        break
-      case 5: // AuthenticationMD5Password
-        if (message.length === 12) {
-          message.name = 'authenticationMD5Password'
-          const salt = this.reader.bytes(4)
-          return new AuthenticationMD5Password(length, salt)
-        }
-        break
-      case 10: // AuthenticationSASL
-        {
-          message.name = 'authenticationSASL'
-          message.mechanisms = []
-          let mechanism: string
-          do {
-            mechanism = this.reader.cstring()
-            if (mechanism) {
-              message.mechanisms.push(mechanism)
-            }
-          } while (mechanism)
-        }
-        break
-      case 11: // AuthenticationSASLContinue
-        message.name = 'authenticationSASLContinue'
-        message.data = this.reader.string(length - 8)
-        break
-      case 12: // AuthenticationSASLFinal
-        message.name = 'authenticationSASLFinal'
-        message.data = this.reader.string(length - 8)
-        break
-      default:
-        throw new Error('Unknown authenticationOk message type ' + code)
-    }
-    return message
-  }
-
-  private parseErrorMessage(offset: number, length: number, bytes: Buffer, name: MessageName) {
-    this.reader.setBuffer(offset, bytes)
-    const fields: Record<string, string> = {}
-    let fieldType = this.reader.string(1)
-    while (fieldType !== '\0') {
-      fields[fieldType] = this.reader.cstring()
-      fieldType = this.reader.string(1)
-    }
-
-    const messageValue = fields.M
-
-    const message =
-      name === 'notice' ? new NoticeMessage(length, messageValue) : new DatabaseError(messageValue, length, name)
-
-    message.severity = fields.S
-    message.code = fields.C
-    message.detail = fields.D
-    message.hint = fields.H
-    message.position = fields.P
-    message.internalPosition = fields.p
-    message.internalQuery = fields.q
-    message.where = fields.W
-    message.schema = fields.s
-    message.table = fields.t
-    message.column = fields.c
-    message.dataType = fields.d
-    message.constraint = fields.n
-    message.file = fields.F
-    message.line = fields.L
-    message.routine = fields.R
-    return message
-  }
-}
Index: ckend/node_modules/pg-protocol/src/serializer.ts
===================================================================
--- backend/node_modules/pg-protocol/src/serializer.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,272 +1,0 @@
-import { Writer } from './buffer-writer'
-
-const enum code {
-  startup = 0x70,
-  query = 0x51,
-  parse = 0x50,
-  bind = 0x42,
-  execute = 0x45,
-  flush = 0x48,
-  sync = 0x53,
-  end = 0x58,
-  close = 0x43,
-  describe = 0x44,
-  copyFromChunk = 0x64,
-  copyDone = 0x63,
-  copyFail = 0x66,
-}
-
-const writer = new Writer()
-
-const startup = (opts: Record<string, string>): Buffer => {
-  // protocol version
-  writer.addInt16(3).addInt16(0)
-  for (const key of Object.keys(opts)) {
-    writer.addCString(key).addCString(opts[key])
-  }
-
-  writer.addCString('client_encoding').addCString('UTF8')
-
-  const bodyBuffer = writer.addCString('').flush()
-  // this message is sent without a code
-
-  const length = bodyBuffer.length + 4
-
-  return new Writer().addInt32(length).add(bodyBuffer).flush()
-}
-
-const requestSsl = (): Buffer => {
-  const response = Buffer.allocUnsafe(8)
-  response.writeInt32BE(8, 0)
-  response.writeInt32BE(80877103, 4)
-  return response
-}
-
-const password = (password: string): Buffer => {
-  return writer.addCString(password).flush(code.startup)
-}
-
-const sendSASLInitialResponseMessage = function (mechanism: string, initialResponse: string): Buffer {
-  // 0x70 = 'p'
-  writer.addCString(mechanism).addInt32(Buffer.byteLength(initialResponse)).addString(initialResponse)
-
-  return writer.flush(code.startup)
-}
-
-const sendSCRAMClientFinalMessage = function (additionalData: string): Buffer {
-  return writer.addString(additionalData).flush(code.startup)
-}
-
-const query = (text: string): Buffer => {
-  return writer.addCString(text).flush(code.query)
-}
-
-type ParseOpts = {
-  name?: string
-  types?: number[]
-  text: string
-}
-
-const emptyArray: any[] = []
-
-const parse = (query: ParseOpts): Buffer => {
-  // expect something like this:
-  // { name: 'queryName',
-  //   text: 'select * from blah',
-  //   types: ['int8', 'bool'] }
-
-  // normalize missing query names to allow for null
-  const name = query.name || ''
-  if (name.length > 63) {
-    console.error('Warning! Postgres only supports 63 characters for query names.')
-    console.error('You supplied %s (%s)', name, name.length)
-    console.error('This can cause conflicts and silent errors executing queries')
-  }
-
-  const types = query.types || emptyArray
-
-  const len = types.length
-
-  const buffer = writer
-    .addCString(name) // name of query
-    .addCString(query.text) // actual query text
-    .addInt16(len)
-
-  for (let i = 0; i < len; i++) {
-    buffer.addInt32(types[i])
-  }
-
-  return writer.flush(code.parse)
-}
-
-type ValueMapper = (param: any, index: number) => any
-
-type BindOpts = {
-  portal?: string
-  binary?: boolean
-  statement?: string
-  values?: any[]
-  // optional map from JS value to postgres value per parameter
-  valueMapper?: ValueMapper
-}
-
-const paramWriter = new Writer()
-
-// make this a const enum so typescript will inline the value
-const enum ParamType {
-  STRING = 0,
-  BINARY = 1,
-}
-
-const writeValues = function (values: any[], valueMapper?: ValueMapper): void {
-  for (let i = 0; i < values.length; i++) {
-    const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i]
-    if (mappedVal == null) {
-      // add the param type (string) to the writer
-      writer.addInt16(ParamType.STRING)
-      // write -1 to the param writer to indicate null
-      paramWriter.addInt32(-1)
-    } else if (mappedVal instanceof Buffer) {
-      // add the param type (binary) to the writer
-      writer.addInt16(ParamType.BINARY)
-      // add the buffer to the param writer
-      paramWriter.addInt32(mappedVal.length)
-      paramWriter.add(mappedVal)
-    } else {
-      // add the param type (string) to the writer
-      writer.addInt16(ParamType.STRING)
-      paramWriter.addInt32(Buffer.byteLength(mappedVal))
-      paramWriter.addString(mappedVal)
-    }
-  }
-}
-
-const bind = (config: BindOpts = {}): Buffer => {
-  // normalize config
-  const portal = config.portal || ''
-  const statement = config.statement || ''
-  const binary = config.binary || false
-  const values = config.values || emptyArray
-  const len = values.length
-
-  writer.addCString(portal).addCString(statement)
-  writer.addInt16(len)
-
-  writeValues(values, config.valueMapper)
-
-  writer.addInt16(len)
-  writer.add(paramWriter.flush())
-
-  // format code
-  writer.addInt16(binary ? ParamType.BINARY : ParamType.STRING)
-  return writer.flush(code.bind)
-}
-
-type ExecOpts = {
-  portal?: string
-  rows?: number
-}
-
-const emptyExecute = Buffer.from([code.execute, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00])
-
-const execute = (config?: ExecOpts): Buffer => {
-  // this is the happy path for most queries
-  if (!config || (!config.portal && !config.rows)) {
-    return emptyExecute
-  }
-
-  const portal = config.portal || ''
-  const rows = config.rows || 0
-
-  const portalLength = Buffer.byteLength(portal)
-  const len = 4 + portalLength + 1 + 4
-  // one extra bit for code
-  const buff = Buffer.allocUnsafe(1 + len)
-  buff[0] = code.execute
-  buff.writeInt32BE(len, 1)
-  buff.write(portal, 5, 'utf-8')
-  buff[portalLength + 5] = 0 // null terminate portal cString
-  buff.writeUInt32BE(rows, buff.length - 4)
-  return buff
-}
-
-const cancel = (processID: number, secretKey: number): Buffer => {
-  const buffer = Buffer.allocUnsafe(16)
-  buffer.writeInt32BE(16, 0)
-  buffer.writeInt16BE(1234, 4)
-  buffer.writeInt16BE(5678, 6)
-  buffer.writeInt32BE(processID, 8)
-  buffer.writeInt32BE(secretKey, 12)
-  return buffer
-}
-
-type PortalOpts = {
-  type: 'S' | 'P'
-  name?: string
-}
-
-const cstringMessage = (code: code, string: string): Buffer => {
-  const stringLen = Buffer.byteLength(string)
-  const len = 4 + stringLen + 1
-  // one extra bit for code
-  const buffer = Buffer.allocUnsafe(1 + len)
-  buffer[0] = code
-  buffer.writeInt32BE(len, 1)
-  buffer.write(string, 5, 'utf-8')
-  buffer[len] = 0 // null terminate cString
-  return buffer
-}
-
-const emptyDescribePortal = writer.addCString('P').flush(code.describe)
-const emptyDescribeStatement = writer.addCString('S').flush(code.describe)
-
-const describe = (msg: PortalOpts): Buffer => {
-  return msg.name
-    ? cstringMessage(code.describe, `${msg.type}${msg.name || ''}`)
-    : msg.type === 'P'
-    ? emptyDescribePortal
-    : emptyDescribeStatement
-}
-
-const close = (msg: PortalOpts): Buffer => {
-  const text = `${msg.type}${msg.name || ''}`
-  return cstringMessage(code.close, text)
-}
-
-const copyData = (chunk: Buffer): Buffer => {
-  return writer.add(chunk).flush(code.copyFromChunk)
-}
-
-const copyFail = (message: string): Buffer => {
-  return cstringMessage(code.copyFail, message)
-}
-
-const codeOnlyBuffer = (code: code): Buffer => Buffer.from([code, 0x00, 0x00, 0x00, 0x04])
-
-const flushBuffer = codeOnlyBuffer(code.flush)
-const syncBuffer = codeOnlyBuffer(code.sync)
-const endBuffer = codeOnlyBuffer(code.end)
-const copyDoneBuffer = codeOnlyBuffer(code.copyDone)
-
-const serialize = {
-  startup,
-  password,
-  requestSsl,
-  sendSASLInitialResponseMessage,
-  sendSCRAMClientFinalMessage,
-  query,
-  parse,
-  bind,
-  execute,
-  describe,
-  close,
-  flush: () => flushBuffer,
-  sync: () => syncBuffer,
-  end: () => endBuffer,
-  copyData,
-  copyDone: () => copyDoneBuffer,
-  copyFail,
-  cancel,
-}
-
-export { serialize }
Index: ckend/node_modules/pg-protocol/src/testing/buffer-list.ts
===================================================================
--- backend/node_modules/pg-protocol/src/testing/buffer-list.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-export default class BufferList {
-  constructor(public buffers: Buffer[] = []) {}
-
-  public add(buffer: Buffer, front?: boolean) {
-    this.buffers[front ? 'unshift' : 'push'](buffer)
-    return this
-  }
-
-  public addInt16(val: number, front?: boolean) {
-    return this.add(Buffer.from([val >>> 8, val >>> 0]), front)
-  }
-
-  public getByteLength() {
-    return this.buffers.reduce(function (previous, current) {
-      return previous + current.length
-    }, 0)
-  }
-
-  public addInt32(val: number, first?: boolean) {
-    return this.add(
-      Buffer.from([(val >>> 24) & 0xff, (val >>> 16) & 0xff, (val >>> 8) & 0xff, (val >>> 0) & 0xff]),
-      first
-    )
-  }
-
-  public addCString(val: string, front?: boolean) {
-    const len = Buffer.byteLength(val)
-    const buffer = Buffer.alloc(len + 1)
-    buffer.write(val)
-    buffer[len] = 0
-    return this.add(buffer, front)
-  }
-
-  public addString(val: string, front?: boolean) {
-    const len = Buffer.byteLength(val)
-    const buffer = Buffer.alloc(len)
-    buffer.write(val)
-    return this.add(buffer, front)
-  }
-
-  public addChar(char: string, first?: boolean) {
-    return this.add(Buffer.from(char, 'utf8'), first)
-  }
-
-  public addByte(byte: number) {
-    return this.add(Buffer.from([byte]))
-  }
-
-  public join(appendLength?: boolean, char?: string): Buffer {
-    let length = this.getByteLength()
-    if (appendLength) {
-      this.addInt32(length + 4, true)
-      return this.join(false, char)
-    }
-    if (char) {
-      this.addChar(char, true)
-      length++
-    }
-    const result = Buffer.alloc(length)
-    let index = 0
-    this.buffers.forEach(function (buffer) {
-      buffer.copy(result, index, 0)
-      index += buffer.length
-    })
-    return result
-  }
-}
Index: ckend/node_modules/pg-protocol/src/testing/test-buffers.ts
===================================================================
--- backend/node_modules/pg-protocol/src/testing/test-buffers.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,166 +1,0 @@
-// https://www.postgresql.org/docs/current/protocol-message-formats.html
-import BufferList from './buffer-list'
-
-const buffers = {
-  readyForQuery: function () {
-    return new BufferList().add(Buffer.from('I')).join(true, 'Z')
-  },
-
-  authenticationOk: function () {
-    return new BufferList().addInt32(0).join(true, 'R')
-  },
-
-  authenticationCleartextPassword: function () {
-    return new BufferList().addInt32(3).join(true, 'R')
-  },
-
-  authenticationMD5Password: function () {
-    return new BufferList()
-      .addInt32(5)
-      .add(Buffer.from([1, 2, 3, 4]))
-      .join(true, 'R')
-  },
-
-  authenticationSASL: function () {
-    return new BufferList().addInt32(10).addCString('SCRAM-SHA-256').addCString('').join(true, 'R')
-  },
-
-  authenticationSASLContinue: function () {
-    return new BufferList().addInt32(11).addString('data').join(true, 'R')
-  },
-
-  authenticationSASLFinal: function () {
-    return new BufferList().addInt32(12).addString('data').join(true, 'R')
-  },
-
-  parameterStatus: function (name: string, value: string) {
-    return new BufferList().addCString(name).addCString(value).join(true, 'S')
-  },
-
-  backendKeyData: function (processID: number, secretKey: number) {
-    return new BufferList().addInt32(processID).addInt32(secretKey).join(true, 'K')
-  },
-
-  commandComplete: function (string: string) {
-    return new BufferList().addCString(string).join(true, 'C')
-  },
-
-  rowDescription: function (fields: any[]) {
-    fields = fields || []
-    const buf = new BufferList()
-    buf.addInt16(fields.length)
-    fields.forEach(function (field) {
-      buf
-        .addCString(field.name)
-        .addInt32(field.tableID || 0)
-        .addInt16(field.attributeNumber || 0)
-        .addInt32(field.dataTypeID || 0)
-        .addInt16(field.dataTypeSize || 0)
-        .addInt32(field.typeModifier || 0)
-        .addInt16(field.formatCode || 0)
-    })
-    return buf.join(true, 'T')
-  },
-
-  parameterDescription: function (dataTypeIDs: number[]) {
-    dataTypeIDs = dataTypeIDs || []
-    const buf = new BufferList()
-    buf.addInt16(dataTypeIDs.length)
-    dataTypeIDs.forEach(function (dataTypeID) {
-      buf.addInt32(dataTypeID)
-    })
-    return buf.join(true, 't')
-  },
-
-  dataRow: function (columns: any[]) {
-    columns = columns || []
-    const buf = new BufferList()
-    buf.addInt16(columns.length)
-    columns.forEach(function (col) {
-      if (col == null) {
-        buf.addInt32(-1)
-      } else {
-        const strBuf = Buffer.from(col, 'utf8')
-        buf.addInt32(strBuf.length)
-        buf.add(strBuf)
-      }
-    })
-    return buf.join(true, 'D')
-  },
-
-  error: function (fields: any) {
-    return buffers.errorOrNotice(fields).join(true, 'E')
-  },
-
-  notice: function (fields: any) {
-    return buffers.errorOrNotice(fields).join(true, 'N')
-  },
-
-  errorOrNotice: function (fields: any) {
-    fields = fields || []
-    const buf = new BufferList()
-    fields.forEach(function (field: any) {
-      buf.addChar(field.type)
-      buf.addCString(field.value)
-    })
-    return buf.add(Buffer.from([0])) // terminator
-  },
-
-  parseComplete: function () {
-    return new BufferList().join(true, '1')
-  },
-
-  bindComplete: function () {
-    return new BufferList().join(true, '2')
-  },
-
-  notification: function (id: number, channel: string, payload: string) {
-    return new BufferList().addInt32(id).addCString(channel).addCString(payload).join(true, 'A')
-  },
-
-  emptyQuery: function () {
-    return new BufferList().join(true, 'I')
-  },
-
-  portalSuspended: function () {
-    return new BufferList().join(true, 's')
-  },
-
-  closeComplete: function () {
-    return new BufferList().join(true, '3')
-  },
-
-  copyIn: function (cols: number) {
-    const list = new BufferList()
-      // text mode
-      .addByte(0)
-      // column count
-      .addInt16(cols)
-    for (let i = 0; i < cols; i++) {
-      list.addInt16(i)
-    }
-    return list.join(true, 'G')
-  },
-
-  copyOut: function (cols: number) {
-    const list = new BufferList()
-      // text mode
-      .addByte(0)
-      // column count
-      .addInt16(cols)
-    for (let i = 0; i < cols; i++) {
-      list.addInt16(i)
-    }
-    return list.join(true, 'H')
-  },
-
-  copyData: function (bytes: Buffer) {
-    return new BufferList().add(bytes).join(true, 'd')
-  },
-
-  copyDone: function () {
-    return new BufferList().join(true, 'c')
-  },
-}
-
-export default buffers
Index: ckend/node_modules/pg-protocol/src/types/chunky.d.ts
===================================================================
--- backend/node_modules/pg-protocol/src/types/chunky.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-declare module 'chunky'
Index: ckend/node_modules/pg-types/.travis.yml
===================================================================
--- backend/node_modules/pg-types/.travis.yml	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-language: node_js
-node_js:
-  - '4'
-  - 'lts/*'
-  - 'node'
-env:
-  - PGUSER=postgres
Index: ckend/node_modules/pg-types/Makefile
===================================================================
--- backend/node_modules/pg-types/Makefile	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-.PHONY: publish-patch test
-
-test:
-	npm test
-
-patch: test
-	npm version patch -m "Bump version"
-	git push origin master --tags
-	npm publish
-
-minor: test
-	npm version minor -m "Bump version"
-	git push origin master --tags
-	npm publish
Index: ckend/node_modules/pg-types/README.md
===================================================================
--- backend/node_modules/pg-types/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-# pg-types
-
-This is the code that turns all the raw text from postgres into JavaScript types for [node-postgres](https://github.com/brianc/node-postgres.git)
-
-## use
-
-This module is consumed and exported from the root `pg` object of node-postgres.  To access it, do the following:
-
-```js
-var types = require('pg').types
-```
-
-Generally what you'll want to do is override how a specific data-type is parsed and turned into a JavaScript type.  By default the PostgreSQL backend server returns everything as strings.  Every data type corresponds to a unique `OID` within the server, and these `OIDs` are sent back with the query response.  So, you need to match a particluar `OID` to a function you'd like to use to take the raw text input and produce a valid JavaScript object as a result. `null` values are never parsed.
-
-Let's do something I commonly like to do on projects: return 64-bit integers `(int8)` as JavaScript integers.  Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently parse `int8` data type results as numbers because if you have a _huge_ number it will overflow and the result you'd get back from node-postgres would not be the result in the datbase.  That would be a __very bad thing__ so node-postgres just returns `int8` results as strings and leaves the parsing up to you.  Let's say that you know you don't and wont ever have numbers greater than `int4` in your database, but you're tired of recieving results from the `COUNT(*)` function as strings (because that function returns `int8`).  You would do this:
-
-```js
-var types = require('pg').types
-types.setTypeParser(20, function(val) {
-  return parseInt(val)
-})
-```
-
-__boom__: now you get numbers instead of strings.
-
-Just as another example -- not saying this is a good idea -- let's say you want to return all dates from your database as [moment](http://momentjs.com/docs/) objects.  Okay, do this:
-
-```js
-var types = require('pg').types
-var moment = require('moment')
-var parseFn = function(val) {
-   return val === null ? null : moment(val)
-}
-types.setTypeParser(types.builtins.TIMESTAMPTZ, parseFn)
-types.setTypeParser(types.builtins.TIMESTAMP, parseFn)
-```
-_note: I've never done that with my dates, and I'm not 100% sure moment can parse all the date strings returned from postgres.  It's just an example!_
-
-If you're thinking "gee, this seems pretty handy, but how can I get a list of all the OIDs in the database and what they correspond to?!?!?!" worry not:
-
-```bash
-$ psql -c "select typname, oid, typarray from pg_type order by oid"
-```
-
-If you want to find out the OID of a specific type:
-
-```bash
-$ psql -c "select typname, oid, typarray from pg_type where typname = 'daterange' order by oid"
-```
-
-:smile:
-
-## license
-
-The MIT License (MIT)
-
-Copyright (c) 2014 Brian M. Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/pg-types/index.d.ts
===================================================================
--- backend/node_modules/pg-types/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,137 +1,0 @@
-export enum TypeId {
-    BOOL = 16,
-    BYTEA = 17,
-    CHAR = 18,
-    INT8 = 20,
-    INT2 = 21,
-    INT4 = 23,
-    REGPROC = 24,
-    TEXT = 25,
-    OID = 26,
-    TID = 27,
-    XID = 28,
-    CID = 29,
-    JSON = 114,
-    XML = 142,
-    PG_NODE_TREE = 194,
-    SMGR = 210,
-    PATH = 602,
-    POLYGON = 604,
-    CIDR = 650,
-    FLOAT4 = 700,
-    FLOAT8 = 701,
-    ABSTIME = 702,
-    RELTIME = 703,
-    TINTERVAL = 704,
-    CIRCLE = 718,
-    MACADDR8 = 774,
-    MONEY = 790,
-    MACADDR = 829,
-    INET = 869,
-    ACLITEM = 1033,
-    BPCHAR = 1042,
-    VARCHAR = 1043,
-    DATE = 1082,
-    TIME = 1083,
-    TIMESTAMP = 1114,
-    TIMESTAMPTZ = 1184,
-    INTERVAL = 1186,
-    TIMETZ = 1266,
-    BIT = 1560,
-    VARBIT = 1562,
-    NUMERIC = 1700,
-    REFCURSOR = 1790,
-    REGPROCEDURE = 2202,
-    REGOPER = 2203,
-    REGOPERATOR = 2204,
-    REGCLASS = 2205,
-    REGTYPE = 2206,
-    UUID = 2950,
-    TXID_SNAPSHOT = 2970,
-    PG_LSN = 3220,
-    PG_NDISTINCT = 3361,
-    PG_DEPENDENCIES = 3402,
-    TSVECTOR = 3614,
-    TSQUERY = 3615,
-    GTSVECTOR = 3642,
-    REGCONFIG = 3734,
-    REGDICTIONARY = 3769,
-    JSONB = 3802,
-    REGNAMESPACE = 4089,
-    REGROLE = 4096
-}
-
-export type builtinsTypes =
-    'BOOL' |
-    'BYTEA' |
-    'CHAR' |
-    'INT8' |
-    'INT2' |
-    'INT4' |
-    'REGPROC' |
-    'TEXT' |
-    'OID' |
-    'TID' |
-    'XID' |
-    'CID' |
-    'JSON' |
-    'XML' |
-    'PG_NODE_TREE' |
-    'SMGR' |
-    'PATH' |
-    'POLYGON' |
-    'CIDR' |
-    'FLOAT4' |
-    'FLOAT8' |
-    'ABSTIME' |
-    'RELTIME' |
-    'TINTERVAL' |
-    'CIRCLE' |
-    'MACADDR8' |
-    'MONEY' |
-    'MACADDR' |
-    'INET' |
-    'ACLITEM' |
-    'BPCHAR' |
-    'VARCHAR' |
-    'DATE' |
-    'TIME' |
-    'TIMESTAMP' |
-    'TIMESTAMPTZ' |
-    'INTERVAL' |
-    'TIMETZ' |
-    'BIT' |
-    'VARBIT' |
-    'NUMERIC' |
-    'REFCURSOR' |
-    'REGPROCEDURE' |
-    'REGOPER' |
-    'REGOPERATOR' |
-    'REGCLASS' |
-    'REGTYPE' |
-    'UUID' |
-    'TXID_SNAPSHOT' |
-    'PG_LSN' |
-    'PG_NDISTINCT' |
-    'PG_DEPENDENCIES' |
-    'TSVECTOR' |
-    'TSQUERY' |
-    'GTSVECTOR' |
-    'REGCONFIG' |
-    'REGDICTIONARY' |
-    'JSONB' |
-    'REGNAMESPACE' |
-    'REGROLE';
-
-export type TypesBuiltins = {[key in builtinsTypes]: TypeId};
-
-export type TypeFormat = 'text' | 'binary';
-
-export const builtins: TypesBuiltins;
-
-export function setTypeParser (id: TypeId, parseFn: ((value: string) => any)): void;
-export function setTypeParser (id: TypeId, format: TypeFormat, parseFn: (value: string) => any): void;
-
-export const getTypeParser: (id: TypeId, format?: TypeFormat) => any
-
-export const arrayParser: (source: string, transform: (entry: any) => any) => any[];
Index: ckend/node_modules/pg-types/index.js
===================================================================
--- backend/node_modules/pg-types/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-var textParsers = require('./lib/textParsers');
-var binaryParsers = require('./lib/binaryParsers');
-var arrayParser = require('./lib/arrayParser');
-var builtinTypes = require('./lib/builtins');
-
-exports.getTypeParser = getTypeParser;
-exports.setTypeParser = setTypeParser;
-exports.arrayParser = arrayParser;
-exports.builtins = builtinTypes;
-
-var typeParsers = {
-  text: {},
-  binary: {}
-};
-
-//the empty parse function
-function noParse (val) {
-  return String(val);
-};
-
-//returns a function used to convert a specific type (specified by
-//oid) into a result javascript type
-//note: the oid can be obtained via the following sql query:
-//SELECT oid FROM pg_type WHERE typname = 'TYPE_NAME_HERE';
-function getTypeParser (oid, format) {
-  format = format || 'text';
-  if (!typeParsers[format]) {
-    return noParse;
-  }
-  return typeParsers[format][oid] || noParse;
-};
-
-function setTypeParser (oid, format, parseFn) {
-  if(typeof format == 'function') {
-    parseFn = format;
-    format = 'text';
-  }
-  typeParsers[format][oid] = parseFn;
-};
-
-textParsers.init(function(oid, converter) {
-  typeParsers.text[oid] = converter;
-});
-
-binaryParsers.init(function(oid, converter) {
-  typeParsers.binary[oid] = converter;
-});
Index: ckend/node_modules/pg-types/index.test-d.ts
===================================================================
--- backend/node_modules/pg-types/index.test-d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import * as types from '.';
-import { expectType } from 'tsd';
-
-// builtins
-expectType<types.TypesBuiltins>(types.builtins);
-
-// getTypeParser
-const noParse = types.getTypeParser(types.builtins.NUMERIC, 'text');
-const numericParser = types.getTypeParser(types.builtins.NUMERIC, 'binary');
-expectType<string>(noParse('noParse'));
-expectType<number>(numericParser([200, 1, 0, 15]));
-
-// getArrayParser 
-const value = types.arrayParser('{1,2,3}', (num) => parseInt(num));
-expectType<number[]>(value);
-
-//setTypeParser
-types.setTypeParser(types.builtins.INT8, parseInt);
-types.setTypeParser(types.builtins.FLOAT8, parseFloat);
-types.setTypeParser(types.builtins.FLOAT8, 'binary', (data) => data[0]);
-types.setTypeParser(types.builtins.FLOAT8, 'text', parseFloat);
Index: ckend/node_modules/pg-types/lib/arrayParser.js
===================================================================
--- backend/node_modules/pg-types/lib/arrayParser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-var array = require('postgres-array');
-
-module.exports = {
-  create: function (source, transform) {
-    return {
-      parse: function() {
-        return array.parse(source, transform);
-      }
-    };
-  }
-};
Index: ckend/node_modules/pg-types/lib/binaryParsers.js
===================================================================
--- backend/node_modules/pg-types/lib/binaryParsers.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,257 +1,0 @@
-var parseInt64 = require('pg-int8');
-
-var parseBits = function(data, bits, offset, invert, callback) {
-  offset = offset || 0;
-  invert = invert || false;
-  callback = callback || function(lastValue, newValue, bits) { return (lastValue * Math.pow(2, bits)) + newValue; };
-  var offsetBytes = offset >> 3;
-
-  var inv = function(value) {
-    if (invert) {
-      return ~value & 0xff;
-    }
-
-    return value;
-  };
-
-  // read first (maybe partial) byte
-  var mask = 0xff;
-  var firstBits = 8 - (offset % 8);
-  if (bits < firstBits) {
-    mask = (0xff << (8 - bits)) & 0xff;
-    firstBits = bits;
-  }
-
-  if (offset) {
-    mask = mask >> (offset % 8);
-  }
-
-  var result = 0;
-  if ((offset % 8) + bits >= 8) {
-    result = callback(0, inv(data[offsetBytes]) & mask, firstBits);
-  }
-
-  // read bytes
-  var bytes = (bits + offset) >> 3;
-  for (var i = offsetBytes + 1; i < bytes; i++) {
-    result = callback(result, inv(data[i]), 8);
-  }
-
-  // bits to read, that are not a complete byte
-  var lastBits = (bits + offset) % 8;
-  if (lastBits > 0) {
-    result = callback(result, inv(data[bytes]) >> (8 - lastBits), lastBits);
-  }
-
-  return result;
-};
-
-var parseFloatFromBits = function(data, precisionBits, exponentBits) {
-  var bias = Math.pow(2, exponentBits - 1) - 1;
-  var sign = parseBits(data, 1);
-  var exponent = parseBits(data, exponentBits, 1);
-
-  if (exponent === 0) {
-    return 0;
-  }
-
-  // parse mantissa
-  var precisionBitsCounter = 1;
-  var parsePrecisionBits = function(lastValue, newValue, bits) {
-    if (lastValue === 0) {
-      lastValue = 1;
-    }
-
-    for (var i = 1; i <= bits; i++) {
-      precisionBitsCounter /= 2;
-      if ((newValue & (0x1 << (bits - i))) > 0) {
-        lastValue += precisionBitsCounter;
-      }
-    }
-
-    return lastValue;
-  };
-
-  var mantissa = parseBits(data, precisionBits, exponentBits + 1, false, parsePrecisionBits);
-
-  // special cases
-  if (exponent == (Math.pow(2, exponentBits + 1) - 1)) {
-    if (mantissa === 0) {
-      return (sign === 0) ? Infinity : -Infinity;
-    }
-
-    return NaN;
-  }
-
-  // normale number
-  return ((sign === 0) ? 1 : -1) * Math.pow(2, exponent - bias) * mantissa;
-};
-
-var parseInt16 = function(value) {
-  if (parseBits(value, 1) == 1) {
-    return -1 * (parseBits(value, 15, 1, true) + 1);
-  }
-
-  return parseBits(value, 15, 1);
-};
-
-var parseInt32 = function(value) {
-  if (parseBits(value, 1) == 1) {
-    return -1 * (parseBits(value, 31, 1, true) + 1);
-  }
-
-  return parseBits(value, 31, 1);
-};
-
-var parseFloat32 = function(value) {
-  return parseFloatFromBits(value, 23, 8);
-};
-
-var parseFloat64 = function(value) {
-  return parseFloatFromBits(value, 52, 11);
-};
-
-var parseNumeric = function(value) {
-  var sign = parseBits(value, 16, 32);
-  if (sign == 0xc000) {
-    return NaN;
-  }
-
-  var weight = Math.pow(10000, parseBits(value, 16, 16));
-  var result = 0;
-
-  var digits = [];
-  var ndigits = parseBits(value, 16);
-  for (var i = 0; i < ndigits; i++) {
-    result += parseBits(value, 16, 64 + (16 * i)) * weight;
-    weight /= 10000;
-  }
-
-  var scale = Math.pow(10, parseBits(value, 16, 48));
-  return ((sign === 0) ? 1 : -1) * Math.round(result * scale) / scale;
-};
-
-var parseDate = function(isUTC, value) {
-  var sign = parseBits(value, 1);
-  var rawValue = parseBits(value, 63, 1);
-
-  // discard usecs and shift from 2000 to 1970
-  var result = new Date((((sign === 0) ? 1 : -1) * rawValue / 1000) + 946684800000);
-
-  if (!isUTC) {
-    result.setTime(result.getTime() + result.getTimezoneOffset() * 60000);
-  }
-
-  // add microseconds to the date
-  result.usec = rawValue % 1000;
-  result.getMicroSeconds = function() {
-    return this.usec;
-  };
-  result.setMicroSeconds = function(value) {
-    this.usec = value;
-  };
-  result.getUTCMicroSeconds = function() {
-    return this.usec;
-  };
-
-  return result;
-};
-
-var parseArray = function(value) {
-  var dim = parseBits(value, 32);
-
-  var flags = parseBits(value, 32, 32);
-  var elementType = parseBits(value, 32, 64);
-
-  var offset = 96;
-  var dims = [];
-  for (var i = 0; i < dim; i++) {
-    // parse dimension
-    dims[i] = parseBits(value, 32, offset);
-    offset += 32;
-
-    // ignore lower bounds
-    offset += 32;
-  }
-
-  var parseElement = function(elementType) {
-    // parse content length
-    var length = parseBits(value, 32, offset);
-    offset += 32;
-
-    // parse null values
-    if (length == 0xffffffff) {
-      return null;
-    }
-
-    var result;
-    if ((elementType == 0x17) || (elementType == 0x14)) {
-      // int/bigint
-      result = parseBits(value, length * 8, offset);
-      offset += length * 8;
-      return result;
-    }
-    else if (elementType == 0x19) {
-      // string
-      result = value.toString(this.encoding, offset >> 3, (offset += (length << 3)) >> 3);
-      return result;
-    }
-    else {
-      console.log("ERROR: ElementType not implemented: " + elementType);
-    }
-  };
-
-  var parse = function(dimension, elementType) {
-    var array = [];
-    var i;
-
-    if (dimension.length > 1) {
-      var count = dimension.shift();
-      for (i = 0; i < count; i++) {
-        array[i] = parse(dimension, elementType);
-      }
-      dimension.unshift(count);
-    }
-    else {
-      for (i = 0; i < dimension[0]; i++) {
-        array[i] = parseElement(elementType);
-      }
-    }
-
-    return array;
-  };
-
-  return parse(dims, elementType);
-};
-
-var parseText = function(value) {
-  return value.toString('utf8');
-};
-
-var parseBool = function(value) {
-  if(value === null) return null;
-  return (parseBits(value, 8) > 0);
-};
-
-var init = function(register) {
-  register(20, parseInt64);
-  register(21, parseInt16);
-  register(23, parseInt32);
-  register(26, parseInt32);
-  register(1700, parseNumeric);
-  register(700, parseFloat32);
-  register(701, parseFloat64);
-  register(16, parseBool);
-  register(1114, parseDate.bind(null, false));
-  register(1184, parseDate.bind(null, true));
-  register(1000, parseArray);
-  register(1007, parseArray);
-  register(1016, parseArray);
-  register(1008, parseArray);
-  register(1009, parseArray);
-  register(25, parseText);
-};
-
-module.exports = {
-  init: init
-};
Index: ckend/node_modules/pg-types/lib/builtins.js
===================================================================
--- backend/node_modules/pg-types/lib/builtins.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,73 +1,0 @@
-/**
- * Following query was used to generate this file:
-
- SELECT json_object_agg(UPPER(PT.typname), PT.oid::int4 ORDER BY pt.oid)
- FROM pg_type PT
- WHERE typnamespace = (SELECT pgn.oid FROM pg_namespace pgn WHERE nspname = 'pg_catalog') -- Take only builting Postgres types with stable OID (extension types are not guaranted to be stable)
- AND typtype = 'b' -- Only basic types
- AND typelem = 0 -- Ignore aliases
- AND typisdefined -- Ignore undefined types
- */
-
-module.exports = {
-    BOOL: 16,
-    BYTEA: 17,
-    CHAR: 18,
-    INT8: 20,
-    INT2: 21,
-    INT4: 23,
-    REGPROC: 24,
-    TEXT: 25,
-    OID: 26,
-    TID: 27,
-    XID: 28,
-    CID: 29,
-    JSON: 114,
-    XML: 142,
-    PG_NODE_TREE: 194,
-    SMGR: 210,
-    PATH: 602,
-    POLYGON: 604,
-    CIDR: 650,
-    FLOAT4: 700,
-    FLOAT8: 701,
-    ABSTIME: 702,
-    RELTIME: 703,
-    TINTERVAL: 704,
-    CIRCLE: 718,
-    MACADDR8: 774,
-    MONEY: 790,
-    MACADDR: 829,
-    INET: 869,
-    ACLITEM: 1033,
-    BPCHAR: 1042,
-    VARCHAR: 1043,
-    DATE: 1082,
-    TIME: 1083,
-    TIMESTAMP: 1114,
-    TIMESTAMPTZ: 1184,
-    INTERVAL: 1186,
-    TIMETZ: 1266,
-    BIT: 1560,
-    VARBIT: 1562,
-    NUMERIC: 1700,
-    REFCURSOR: 1790,
-    REGPROCEDURE: 2202,
-    REGOPER: 2203,
-    REGOPERATOR: 2204,
-    REGCLASS: 2205,
-    REGTYPE: 2206,
-    UUID: 2950,
-    TXID_SNAPSHOT: 2970,
-    PG_LSN: 3220,
-    PG_NDISTINCT: 3361,
-    PG_DEPENDENCIES: 3402,
-    TSVECTOR: 3614,
-    TSQUERY: 3615,
-    GTSVECTOR: 3642,
-    REGCONFIG: 3734,
-    REGDICTIONARY: 3769,
-    JSONB: 3802,
-    REGNAMESPACE: 4089,
-    REGROLE: 4096
-};
Index: ckend/node_modules/pg-types/lib/textParsers.js
===================================================================
--- backend/node_modules/pg-types/lib/textParsers.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,215 +1,0 @@
-var array = require('postgres-array')
-var arrayParser = require('./arrayParser');
-var parseDate = require('postgres-date');
-var parseInterval = require('postgres-interval');
-var parseByteA = require('postgres-bytea');
-
-function allowNull (fn) {
-  return function nullAllowed (value) {
-    if (value === null) return value
-    return fn(value)
-  }
-}
-
-function parseBool (value) {
-  if (value === null) return value
-  return value === 'TRUE' ||
-    value === 't' ||
-    value === 'true' ||
-    value === 'y' ||
-    value === 'yes' ||
-    value === 'on' ||
-    value === '1';
-}
-
-function parseBoolArray (value) {
-  if (!value) return null
-  return array.parse(value, parseBool)
-}
-
-function parseBaseTenInt (string) {
-  return parseInt(string, 10)
-}
-
-function parseIntegerArray (value) {
-  if (!value) return null
-  return array.parse(value, allowNull(parseBaseTenInt))
-}
-
-function parseBigIntegerArray (value) {
-  if (!value) return null
-  return array.parse(value, allowNull(function (entry) {
-    return parseBigInteger(entry).trim()
-  }))
-}
-
-var parsePointArray = function(value) {
-  if(!value) { return null; }
-  var p = arrayParser.create(value, function(entry) {
-    if(entry !== null) {
-      entry = parsePoint(entry);
-    }
-    return entry;
-  });
-
-  return p.parse();
-};
-
-var parseFloatArray = function(value) {
-  if(!value) { return null; }
-  var p = arrayParser.create(value, function(entry) {
-    if(entry !== null) {
-      entry = parseFloat(entry);
-    }
-    return entry;
-  });
-
-  return p.parse();
-};
-
-var parseStringArray = function(value) {
-  if(!value) { return null; }
-
-  var p = arrayParser.create(value);
-  return p.parse();
-};
-
-var parseDateArray = function(value) {
-  if (!value) { return null; }
-
-  var p = arrayParser.create(value, function(entry) {
-    if (entry !== null) {
-      entry = parseDate(entry);
-    }
-    return entry;
-  });
-
-  return p.parse();
-};
-
-var parseIntervalArray = function(value) {
-  if (!value) { return null; }
-
-  var p = arrayParser.create(value, function(entry) {
-    if (entry !== null) {
-      entry = parseInterval(entry);
-    }
-    return entry;
-  });
-
-  return p.parse();
-};
-
-var parseByteAArray = function(value) {
-  if (!value) { return null; }
-
-  return array.parse(value, allowNull(parseByteA));
-};
-
-var parseInteger = function(value) {
-  return parseInt(value, 10);
-};
-
-var parseBigInteger = function(value) {
-  var valStr = String(value);
-  if (/^\d+$/.test(valStr)) { return valStr; }
-  return value;
-};
-
-var parseJsonArray = function(value) {
-  if (!value) { return null; }
-
-  return array.parse(value, allowNull(JSON.parse));
-};
-
-var parsePoint = function(value) {
-  if (value[0] !== '(') { return null; }
-
-  value = value.substring( 1, value.length - 1 ).split(',');
-
-  return {
-    x: parseFloat(value[0])
-  , y: parseFloat(value[1])
-  };
-};
-
-var parseCircle = function(value) {
-  if (value[0] !== '<' && value[1] !== '(') { return null; }
-
-  var point = '(';
-  var radius = '';
-  var pointParsed = false;
-  for (var i = 2; i < value.length - 1; i++){
-    if (!pointParsed) {
-      point += value[i];
-    }
-
-    if (value[i] === ')') {
-      pointParsed = true;
-      continue;
-    } else if (!pointParsed) {
-      continue;
-    }
-
-    if (value[i] === ','){
-      continue;
-    }
-
-    radius += value[i];
-  }
-  var result = parsePoint(point);
-  result.radius = parseFloat(radius);
-
-  return result;
-};
-
-var init = function(register) {
-  register(20, parseBigInteger); // int8
-  register(21, parseInteger); // int2
-  register(23, parseInteger); // int4
-  register(26, parseInteger); // oid
-  register(700, parseFloat); // float4/real
-  register(701, parseFloat); // float8/double
-  register(16, parseBool);
-  register(1082, parseDate); // date
-  register(1114, parseDate); // timestamp without timezone
-  register(1184, parseDate); // timestamp
-  register(600, parsePoint); // point
-  register(651, parseStringArray); // cidr[]
-  register(718, parseCircle); // circle
-  register(1000, parseBoolArray);
-  register(1001, parseByteAArray);
-  register(1005, parseIntegerArray); // _int2
-  register(1007, parseIntegerArray); // _int4
-  register(1028, parseIntegerArray); // oid[]
-  register(1016, parseBigIntegerArray); // _int8
-  register(1017, parsePointArray); // point[]
-  register(1021, parseFloatArray); // _float4
-  register(1022, parseFloatArray); // _float8
-  register(1231, parseFloatArray); // _numeric
-  register(1014, parseStringArray); //char
-  register(1015, parseStringArray); //varchar
-  register(1008, parseStringArray);
-  register(1009, parseStringArray);
-  register(1040, parseStringArray); // macaddr[]
-  register(1041, parseStringArray); // inet[]
-  register(1115, parseDateArray); // timestamp without time zone[]
-  register(1182, parseDateArray); // _date
-  register(1185, parseDateArray); // timestamp with time zone[]
-  register(1186, parseInterval);
-  register(1187, parseIntervalArray);
-  register(17, parseByteA);
-  register(114, JSON.parse.bind(JSON)); // json
-  register(3802, JSON.parse.bind(JSON)); // jsonb
-  register(199, parseJsonArray); // json[]
-  register(3807, parseJsonArray); // jsonb[]
-  register(3907, parseStringArray); // numrange[]
-  register(2951, parseStringArray); // uuid[]
-  register(791, parseStringArray); // money[]
-  register(1183, parseStringArray); // time[]
-  register(1270, parseStringArray); // timetz[]
-};
-
-module.exports = {
-  init: init
-};
Index: ckend/node_modules/pg-types/package.json
===================================================================
--- backend/node_modules/pg-types/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-{
-  "name": "pg-types",
-  "version": "2.2.0",
-  "description": "Query result type converters for node-postgres",
-  "main": "index.js",
-  "scripts": {
-    "test": "tape test/*.js | tap-spec && npm run test-ts",
-    "test-ts": "if-node-version '>= 8' tsd"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-pg-types.git"
-  },
-  "keywords": [
-    "postgres",
-    "PostgreSQL",
-    "pg"
-  ],
-  "author": "Brian M. Carlson",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/brianc/node-pg-types/issues"
-  },
-  "homepage": "https://github.com/brianc/node-pg-types",
-  "devDependencies": {
-    "if-node-version": "^1.1.1",
-    "pff": "^1.0.0",
-    "tap-spec": "^4.0.0",
-    "tape": "^4.0.0",
-    "tsd": "^0.7.4"
-  },
-  "dependencies": {
-    "pg-int8": "1.0.1",
-    "postgres-array": "~2.0.0",
-    "postgres-bytea": "~1.0.0",
-    "postgres-date": "~1.0.4",
-    "postgres-interval": "^1.1.0"
-  },
-  "engines": {
-    "node": ">=4"
-  }
-}
Index: ckend/node_modules/pg-types/test/index.js
===================================================================
--- backend/node_modules/pg-types/test/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-
-var test = require('tape')
-var printf = require('pff')
-var getTypeParser = require('../').getTypeParser
-var types = require('./types')
-
-test('types', function (t) {
-  Object.keys(types).forEach(function (typeName) {
-    var type = types[typeName]
-    t.test(typeName, function (t) {
-      var parser = getTypeParser(type.id, type.format)
-      type.tests.forEach(function (tests) {
-        var input = tests[0]
-        var expected = tests[1]
-        var result = parser(input)
-        if (typeof expected === 'function') {
-          return expected(t, result)
-        }
-        t.equal(result, expected)
-      })
-      t.end()
-    })
-  })
-})
Index: ckend/node_modules/pg-types/test/types.js
===================================================================
--- backend/node_modules/pg-types/test/types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,597 +1,0 @@
-'use strict'
-
-exports['string/varchar'] = {
-  format: 'text',
-  id: 1043,
-  tests: [
-    ['bang', 'bang']
-  ]
-}
-
-exports['integer/int4'] = {
-  format: 'text',
-  id: 23,
-  tests: [
-    ['2147483647', 2147483647]
-  ]
-}
-
-exports['smallint/int2'] = {
-  format: 'text',
-  id: 21,
-  tests: [
-    ['32767', 32767]
-  ]
-}
-
-exports['bigint/int8'] = {
-  format: 'text',
-  id: 20,
-  tests: [
-    ['9223372036854775807', '9223372036854775807']
-  ]
-}
-
-exports.oid = {
-  format: 'text',
-  id: 26,
-  tests: [
-    ['103', 103]
-  ]
-}
-
-var bignum = '31415926535897932384626433832795028841971693993751058.16180339887498948482045868343656381177203091798057628'
-exports.numeric = {
-  format: 'text',
-  id: 1700,
-  tests: [
-    [bignum, bignum]
-  ]
-}
-
-exports['real/float4'] = {
-  format: 'text',
-  id: 700,
-  tests: [
-    ['123.456', 123.456]
-  ]
-}
-
-exports['double precision / float 8'] = {
-  format: 'text',
-  id: 701,
-  tests: [
-    ['12345678.12345678', 12345678.12345678]
-  ]
-}
-
-exports.boolean = {
-  format: 'text',
-  id: 16,
-  tests: [
-    ['TRUE', true],
-    ['t', true],
-    ['true', true],
-    ['y', true],
-    ['yes', true],
-    ['on', true],
-    ['1', true],
-    ['f', false],
-    [null, null]
-  ]
-}
-
-exports.timestamptz = {
-  format: 'text',
-  id: 1184,
-  tests: [
-    [
-      '2010-10-31 14:54:13.74-05:30',
-      dateEquals(2010, 9, 31, 20, 24, 13, 740)
-    ],
-    [
-      '2011-01-23 22:05:00.68-06',
-       dateEquals(2011, 0, 24, 4, 5, 0, 680)
-    ],
-    [
-      '2010-10-30 14:11:12.730838Z',
-      dateEquals(2010, 9, 30, 14, 11, 12, 730)
-    ],
-    [
-      '2010-10-30 13:10:01+05',
-      dateEquals(2010, 9, 30, 8, 10, 1, 0)
-    ]
-  ]
-}
-
-exports.timestamp = {
-  format: 'text',
-  id: 1114,
-  tests: [
-    [
-      '2010-10-31 00:00:00',
-      function (t, value) {
-        t.equal(
-          value.toUTCString(),
-          new Date(2010, 9, 31, 0, 0, 0, 0, 0).toUTCString()
-        )
-        t.equal(
-          value.toString(),
-          new Date(2010, 9, 31, 0, 0, 0, 0, 0, 0).toString()
-        )
-      }
-    ]
-  ]
-}
-
-exports.date = {
-  format: 'text',
-  id: 1082,
-  tests: [
-    ['2010-10-31', function (t, value) {
-      var now = new Date(2010, 9, 31)
-      dateEquals(
-        2010,
-        now.getUTCMonth(),
-        now.getUTCDate(),
-        now.getUTCHours(), 0, 0, 0)(t, value)
-      t.equal(value.getHours(), now.getHours())
-    }]
-  ]
-}
-
-exports.inet = {
-  format: 'text',
-  id: 869,
-  tests: [
-    ['8.8.8.8', '8.8.8.8'],
-    ['2001:4860:4860::8888', '2001:4860:4860::8888'],
-    ['127.0.0.1', '127.0.0.1'],
-    ['fd00:1::40e', 'fd00:1::40e'],
-    ['1.2.3.4', '1.2.3.4']
-  ]
-}
-
-exports.cidr = {
-  format: 'text',
-  id: 650,
-  tests: [
-    ['172.16.0.0/12', '172.16.0.0/12'],
-    ['fe80::/10', 'fe80::/10'],
-    ['fc00::/7', 'fc00::/7'],
-    ['192.168.0.0/24', '192.168.0.0/24'],
-    ['10.0.0.0/8', '10.0.0.0/8']
-  ]
-}
-
-exports.macaddr = {
-  format: 'text',
-  id: 829,
-  tests: [
-    ['08:00:2b:01:02:03', '08:00:2b:01:02:03'],
-    ['16:10:9f:0d:66:00', '16:10:9f:0d:66:00']
-  ]
-}
-
-exports.numrange = {
-  format: 'text',
-  id: 3906,
-  tests: [
-    ['[,]', '[,]'],
-    ['(,)', '(,)'],
-    ['(,]', '(,]'],
-    ['[1,)', '[1,)'],
-    ['[,1]', '[,1]'],
-    ['(1,2)', '(1,2)'],
-    ['(1,20.5]', '(1,20.5]']
-  ]
-}
-
-exports.interval = {
-  format: 'text',
-  id: 1186,
-  tests: [
-    ['01:02:03', function (t, value) {
-      t.equal(value.toPostgres(), '3 seconds 2 minutes 1 hours')
-      t.deepEqual(value, {hours: 1, minutes: 2, seconds: 3})
-    }],
-    ['01:02:03.456', function (t, value) {
-      t.deepEqual(value, {hours: 1, minutes:2, seconds: 3, milliseconds: 456})
-    }],
-    ['1 year -32 days', function (t, value) {
-      t.equal(value.toPostgres(), '-32 days 1 years')
-      t.deepEqual(value, {years: 1, days: -32})
-    }],
-    ['1 day -00:00:03', function (t, value) {
-      t.equal(value.toPostgres(), '-3 seconds 1 days')
-      t.deepEqual(value, {days: 1, seconds: -3})
-    }]
-  ]
-}
-
-exports.bytea = {
-  format: 'text',
-  id: 17,
-  tests: [
-    ['foo\\000\\200\\\\\\377', function (t, value) {
-      var buffer = new Buffer([102, 111, 111, 0, 128, 92, 255])
-      t.ok(buffer.equals(value))
-    }],
-    ['', function (t, value) {
-      var buffer = new Buffer(0)
-      t.ok(buffer.equals(value))
-    }]
-  ]
-}
-
-exports['array/boolean'] = {
-    format: 'text',
-    id: 1000,
-    tests: [
-        ['{true,false}', function (t, value) {
-            t.deepEqual(value, [true, false])
-        }]
-    ]
-}
-
-exports['array/char'] = {
-  format: 'text',
-  id: 1014,
-  tests: [
-    ['{foo,bar}', function (t, value) {
-      t.deepEqual(value, ['foo', 'bar'])
-    }]
-  ]
-}
-
-exports['array/varchar'] = {
-  format: 'text',
-  id: 1015,
-  tests: [
-    ['{foo,bar}', function (t, value) {
-      t.deepEqual(value, ['foo', 'bar'])
-    }]
-  ]
-}
-
-exports['array/text'] = {
-  format: 'text',
-  id: 1008,
-  tests: [
-    ['{foo}', function (t, value) {
-      t.deepEqual(value, ['foo'])
-    }]
-  ]
-}
-
-exports['array/bytea'] = {
-  format: 'text',
-  id: 1001,
-  tests: [
-    ['{"\\\\x00000000"}', function (t, value) {
-      var buffer = new Buffer('00000000', 'hex')
-      t.ok(Array.isArray(value))
-      t.equal(value.length, 1)
-      t.ok(buffer.equals(value[0]))
-    }],
-    ['{NULL,"\\\\x4e554c4c"}', function (t, value) {
-      var buffer = new Buffer('4e554c4c', 'hex')
-      t.ok(Array.isArray(value))
-      t.equal(value.length, 2)
-      t.equal(value[0], null)
-      t.ok(buffer.equals(value[1]))
-    }],
-  ]
-}
-
-exports['array/numeric'] = {
-  format: 'text',
-  id: 1231,
-  tests: [
-    ['{1.2,3.4}', function (t, value) {
-      t.deepEqual(value, [1.2, 3.4])
-    }]
-  ]
-}
-
-exports['array/int2'] = {
-  format: 'text',
-  id: 1005,
-  tests: [
-    ['{-32768, -32767, 32766, 32767}', function (t, value) {
-      t.deepEqual(value, [-32768, -32767, 32766, 32767])
-    }]
-  ]
-}
-
-exports['array/int4'] = {
-  format: 'text',
-  id: 1005,
-  tests: [
-    ['{-2147483648, -2147483647, 2147483646, 2147483647}', function (t, value) {
-      t.deepEqual(value, [-2147483648, -2147483647, 2147483646, 2147483647])
-    }]
-  ]
-}
-
-exports['array/int8'] = {
-  format: 'text',
-  id: 1016,
-  tests: [
-    [
-      '{-9223372036854775808, -9223372036854775807, 9223372036854775806, 9223372036854775807}',
-      function (t, value) {
-        t.deepEqual(value, [
-          '-9223372036854775808',
-          '-9223372036854775807',
-          '9223372036854775806',
-          '9223372036854775807'
-        ])
-      }
-    ]
-  ]
-}
-
-exports['array/json'] = {
-  format: 'text',
-  id: 199,
-  tests: [
-    [
-      '{{1,2},{[3],"[4,5]"},{null,NULL}}',
-      function (t, value) {
-        t.deepEqual(value, [
-          [1, 2],
-          [[3], [4, 5]],
-          [null, null],
-        ])
-      }
-    ]
-  ]
-}
-
-exports['array/jsonb'] = {
-  format: 'text',
-  id: 3807,
-  tests: exports['array/json'].tests
-}
-
-exports['array/point'] = {
-  format: 'text',
-  id: 1017,
-  tests: [
-    ['{"(25.1,50.5)","(10.1,40)"}', function (t, value) {
-      t.deepEqual(value, [{x: 25.1, y: 50.5}, {x: 10.1, y: 40}])
-    }]
-  ]
-}
-
-exports['array/oid'] = {
-  format: 'text',
-  id: 1028,
-  tests: [
-    ['{25864,25860}', function (t, value) {
-      t.deepEqual(value, [25864, 25860])
-    }]
-  ]
-}
-
-exports['array/float4'] = {
-  format: 'text',
-  id: 1021,
-  tests: [
-    ['{1.2, 3.4}', function (t, value) {
-      t.deepEqual(value, [1.2, 3.4])
-    }]
-  ]
-}
-
-exports['array/float8'] = {
-  format: 'text',
-  id: 1022,
-  tests: [
-    ['{-12345678.1234567, 12345678.12345678}', function (t, value) {
-      t.deepEqual(value, [-12345678.1234567, 12345678.12345678])
-    }]
-  ]
-}
-
-exports['array/date'] = {
-  format: 'text',
-  id: 1182,
-  tests: [
-    ['{2014-01-01,2015-12-31}', function (t, value) {
-      var expecteds = [new Date(2014, 0, 1), new Date(2015, 11, 31)]
-      t.equal(value.length, 2)
-      value.forEach(function (date, index) {
-        var expected = expecteds[index]
-        dateEquals(
-          expected.getUTCFullYear(),
-          expected.getUTCMonth(),
-          expected.getUTCDate(),
-          expected.getUTCHours(), 0, 0, 0)(t, date)
-      })
-    }]
-  ]
-}
-
-exports['array/interval'] = {
-  format: 'text',
-  id: 1187,
-  tests: [
-    ['{01:02:03,1 day -00:00:03}', function (t, value) {
-      var expecteds = [{hours: 1, minutes: 2, seconds: 3},
-                       {days: 1, seconds: -3}]
-      t.equal(value.length, 2)
-      t.deepEqual(value, expecteds);
-    }]
-  ]
-}
-
-exports['array/inet'] = {
-  format: 'text',
-  id: 1041,
-  tests: [
-    ['{8.8.8.8}', function (t, value) {
-      t.deepEqual(value, ['8.8.8.8']);
-    }],
-    ['{2001:4860:4860::8888}', function (t, value) {
-      t.deepEqual(value, ['2001:4860:4860::8888']);
-    }],
-    ['{127.0.0.1,fd00:1::40e,1.2.3.4}', function (t, value) {
-      t.deepEqual(value, ['127.0.0.1', 'fd00:1::40e', '1.2.3.4']);
-    }]
-  ]
-}
-
-exports['array/cidr'] = {
-  format: 'text',
-  id: 651,
-  tests: [
-    ['{172.16.0.0/12}', function (t, value) {
-      t.deepEqual(value, ['172.16.0.0/12']);
-    }],
-    ['{fe80::/10}', function (t, value) {
-      t.deepEqual(value, ['fe80::/10']);
-    }],
-    ['{10.0.0.0/8,fc00::/7,192.168.0.0/24}', function (t, value) {
-      t.deepEqual(value, ['10.0.0.0/8', 'fc00::/7', '192.168.0.0/24']);
-    }]
-  ]
-}
-
-exports['array/macaddr'] = {
-  format: 'text',
-  id: 1040,
-  tests: [
-    ['{08:00:2b:01:02:03,16:10:9f:0d:66:00}', function (t, value) {
-      t.deepEqual(value, ['08:00:2b:01:02:03', '16:10:9f:0d:66:00']);
-    }]
-  ]
-}
-
-exports['array/numrange'] = {
-  format: 'text',
-  id: 3907,
-  tests: [
-    ['{"[1,2]","(4.5,8)","[10,40)","(-21.2,60.3]"}', function (t, value) {
-      t.deepEqual(value, ['[1,2]', '(4.5,8)', '[10,40)', '(-21.2,60.3]']);
-    }],
-    ['{"[,20]","[3,]","[,]","(,35)","(1,)","(,)"}', function (t, value) {
-      t.deepEqual(value, ['[,20]', '[3,]', '[,]', '(,35)', '(1,)', '(,)']);
-    }],
-    ['{"[,20)","[3,)","[,)","[,35)","[1,)","[,)"}', function (t, value) {
-      t.deepEqual(value, ['[,20)', '[3,)', '[,)', '[,35)', '[1,)', '[,)']);
-    }]
-  ]
-}
-
-exports['binary-string/varchar'] = {
-  format: 'binary',
-  id: 1043,
-  tests: [
-    ['bang', 'bang']
-  ]
-}
-
-exports['binary-integer/int4'] = {
-  format: 'binary',
-  id: 23,
-  tests: [
-    [[0, 0, 0, 100], 100]
-  ]
-}
-
-exports['binary-smallint/int2'] = {
-  format: 'binary',
-  id: 21,
-  tests: [
-    [[0, 101], 101]
-  ]
-}
-
-exports['binary-bigint/int8'] = {
-  format: 'binary',
-  id: 20,
-  tests: [
-    [new Buffer([0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]), '9223372036854775807']
-  ]
-}
-
-exports['binary-oid'] = {
-  format: 'binary',
-  id: 26,
-  tests: [
-    [[0, 0, 0, 103], 103]
-  ]
-}
-
-exports['binary-numeric'] = {
-  format: 'binary',
-  id: 1700,
-  tests: [
-    [
-      [0, 2, 0, 0, 0, 0, 0, hex('0x64'), 0, 12, hex('0xd'), hex('0x48'), 0, 0, 0, 0],
-      12.34
-    ]
-  ]
-}
-
-exports['binary-real/float4'] = {
-  format: 'binary',
-  id: 700,
-  tests: [
-    [['0x41', '0x48', '0x00', '0x00'].map(hex), 12.5]
-  ]
-}
-
-exports['binary-boolean'] = {
-  format: 'binary',
-  id: 16,
-  tests: [
-    [[1], true],
-    [[0], false],
-    [null, null]
-  ]
-}
-
-exports['binary-string'] = {
-  format: 'binary',
-  id: 25,
-  tests: [
-    [
-      new Buffer(['0x73', '0x6c', '0x61', '0x64', '0x64', '0x61'].map(hex)),
-      'sladda'
-    ]
-  ]
-}
-
-exports.point = {
-  format: 'text',
-  id: 600,
-  tests: [
-    ['(25.1,50.5)', function (t, value) {
-      t.deepEqual(value, {x: 25.1, y: 50.5})
-    }]
-  ]
-}
-
-exports.circle = {
-  format: 'text',
-  id: 718,
-  tests: [
-    ['<(25,10),5>', function (t, value) {
-      t.deepEqual(value, {x: 25, y: 10, radius: 5})
-    }]
-  ]
-}
-
-function hex (string) {
-  return parseInt(string, 16)
-}
-
-function dateEquals () {
-  var timestamp = Date.UTC.apply(Date, arguments)
-  return function (t, value) {
-    t.equal(value.toUTCString(), new Date(timestamp).toUTCString())
-  }
-}
Index: ckend/node_modules/pg/LICENSE
===================================================================
--- backend/node_modules/pg/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2010 - 2021 Brian Carlson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/pg/README.md
===================================================================
--- backend/node_modules/pg/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-# node-postgres
-
-[![Build Status](https://secure.travis-ci.org/brianc/node-postgres.svg?branch=master)](http://travis-ci.org/brianc/node-postgres)
-<span class="badge-npmversion"><a href="https://npmjs.org/package/pg" title="View this project on NPM"><img src="https://img.shields.io/npm/v/pg.svg" alt="NPM version" /></a></span>
-<span class="badge-npmdownloads"><a href="https://npmjs.org/package/pg" title="View this project on NPM"><img src="https://img.shields.io/npm/dm/pg.svg" alt="NPM downloads" /></a></span>
-
-Non-blocking PostgreSQL client for Node.js. Pure JavaScript and optional native libpq bindings.
-
-## Install
-
-```sh
-$ npm install pg
-```
-
----
-
-## :star: [Documentation](https://node-postgres.com) :star:
-
-### Features
-
-- Pure JavaScript client and native libpq bindings share _the same API_
-- Connection pooling
-- Extensible JS ↔ PostgreSQL data-type coercion
-- Supported PostgreSQL features
-  - Parameterized queries
-  - Named statements with query plan caching
-  - Async notifications with `LISTEN/NOTIFY`
-  - Bulk import & export with `COPY TO/COPY FROM`
-
-### Extras
-
-node-postgres is by design pretty light on abstractions. These are some handy modules we've been using over the years to complete the picture.
-The entire list can be found on our [wiki](https://github.com/brianc/node-postgres/wiki/Extras).
-
-## Support
-
-node-postgres is free software. If you encounter a bug with the library please open an issue on the [GitHub repo](https://github.com/brianc/node-postgres). If you have questions unanswered by the documentation please open an issue pointing out how the documentation was unclear & I will do my best to make it better!
-
-When you open an issue please provide:
-
-- version of Node
-- version of Postgres
-- smallest possible snippet of code to reproduce the problem
-
-You can also follow me [@briancarlson](https://twitter.com/briancarlson) if that's your thing. I try to always announce noteworthy changes & developments with node-postgres on Twitter.
-
-## Sponsorship :two_hearts:
-
-node-postgres's continued development has been made possible in part by generous finanical support from [the community](https://github.com/brianc/node-postgres/blob/master/SPONSORS.md).
-
-If you or your company are benefiting from node-postgres and would like to help keep the project financially sustainable [please consider supporting](https://github.com/sponsors/brianc) its development.
-
-### Featured sponsor
-
-Special thanks to [medplum](https://medplum.com) for their generous and thoughtful support of node-postgres!
-
-![medplum](https://raw.githubusercontent.com/medplum/medplum-logo/refs/heads/main/medplum-logo.png)
-
-## Contributing
-
-**:heart: contributions!**
-
-I will **happily** accept your pull request if it:
-
-- **has tests**
-- looks reasonable
-- does not break backwards compatibility
-
-If your change involves breaking backwards compatibility please please point that out in the pull request & we can discuss & plan when and how to release it and what type of documentation or communicate it will require.
-
-## Troubleshooting and FAQ
-
-The causes and solutions to common errors can be found among the [Frequently Asked Questions (FAQ)](https://github.com/brianc/node-postgres/wiki/FAQ)
-
-## License
-
-Copyright (c) 2010-2020 Brian Carlson (brian.m.carlson@gmail.com)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/pg/esm/index.mjs
===================================================================
--- backend/node_modules/pg/esm/index.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-// ESM wrapper for pg
-import pg from '../lib/index.js'
-
-// Re-export all the properties
-export const Client = pg.Client
-export const Pool = pg.Pool
-export const Connection = pg.Connection
-export const types = pg.types
-export const Query = pg.Query
-export const DatabaseError = pg.DatabaseError
-export const escapeIdentifier = pg.escapeIdentifier
-export const escapeLiteral = pg.escapeLiteral
-export const Result = pg.Result
-export const TypeOverrides = pg.TypeOverrides
-
-// Also export the defaults
-export const defaults = pg.defaults
-
-// Re-export the default
-export default pg
Index: ckend/node_modules/pg/lib/client.js
===================================================================
--- backend/node_modules/pg/lib/client.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,650 +1,0 @@
-'use strict'
-
-const EventEmitter = require('events').EventEmitter
-const utils = require('./utils')
-const sasl = require('./crypto/sasl')
-const TypeOverrides = require('./type-overrides')
-
-const ConnectionParameters = require('./connection-parameters')
-const Query = require('./query')
-const defaults = require('./defaults')
-const Connection = require('./connection')
-const crypto = require('./crypto/utils')
-
-class Client extends EventEmitter {
-  constructor(config) {
-    super()
-
-    this.connectionParameters = new ConnectionParameters(config)
-    this.user = this.connectionParameters.user
-    this.database = this.connectionParameters.database
-    this.port = this.connectionParameters.port
-    this.host = this.connectionParameters.host
-
-    // "hiding" the password so it doesn't show up in stack traces
-    // or if the client is console.logged
-    Object.defineProperty(this, 'password', {
-      configurable: true,
-      enumerable: false,
-      writable: true,
-      value: this.connectionParameters.password,
-    })
-
-    this.replication = this.connectionParameters.replication
-
-    const c = config || {}
-
-    this._Promise = c.Promise || global.Promise
-    this._types = new TypeOverrides(c.types)
-    this._ending = false
-    this._ended = false
-    this._connecting = false
-    this._connected = false
-    this._connectionError = false
-    this._queryable = true
-
-    this.enableChannelBinding = Boolean(c.enableChannelBinding) // set true to use SCRAM-SHA-256-PLUS when offered
-    this.connection =
-      c.connection ||
-      new Connection({
-        stream: c.stream,
-        ssl: this.connectionParameters.ssl,
-        keepAlive: c.keepAlive || false,
-        keepAliveInitialDelayMillis: c.keepAliveInitialDelayMillis || 0,
-        encoding: this.connectionParameters.client_encoding || 'utf8',
-      })
-    this.queryQueue = []
-    this.binary = c.binary || defaults.binary
-    this.processID = null
-    this.secretKey = null
-    this.ssl = this.connectionParameters.ssl || false
-    // As with Password, make SSL->Key (the private key) non-enumerable.
-    // It won't show up in stack traces
-    // or if the client is console.logged
-    if (this.ssl && this.ssl.key) {
-      Object.defineProperty(this.ssl, 'key', {
-        enumerable: false,
-      })
-    }
-
-    this._connectionTimeoutMillis = c.connectionTimeoutMillis || 0
-  }
-
-  _errorAllQueries(err) {
-    const enqueueError = (query) => {
-      process.nextTick(() => {
-        query.handleError(err, this.connection)
-      })
-    }
-
-    if (this.activeQuery) {
-      enqueueError(this.activeQuery)
-      this.activeQuery = null
-    }
-
-    this.queryQueue.forEach(enqueueError)
-    this.queryQueue.length = 0
-  }
-
-  _connect(callback) {
-    const self = this
-    const con = this.connection
-    this._connectionCallback = callback
-
-    if (this._connecting || this._connected) {
-      const err = new Error('Client has already been connected. You cannot reuse a client.')
-      process.nextTick(() => {
-        callback(err)
-      })
-      return
-    }
-    this._connecting = true
-
-    if (this._connectionTimeoutMillis > 0) {
-      this.connectionTimeoutHandle = setTimeout(() => {
-        con._ending = true
-        con.stream.destroy(new Error('timeout expired'))
-      }, this._connectionTimeoutMillis)
-
-      if (this.connectionTimeoutHandle.unref) {
-        this.connectionTimeoutHandle.unref()
-      }
-    }
-
-    if (this.host && this.host.indexOf('/') === 0) {
-      con.connect(this.host + '/.s.PGSQL.' + this.port)
-    } else {
-      con.connect(this.port, this.host)
-    }
-
-    // once connection is established send startup message
-    con.on('connect', function () {
-      if (self.ssl) {
-        con.requestSsl()
-      } else {
-        con.startup(self.getStartupConf())
-      }
-    })
-
-    con.on('sslconnect', function () {
-      con.startup(self.getStartupConf())
-    })
-
-    this._attachListeners(con)
-
-    con.once('end', () => {
-      const error = this._ending ? new Error('Connection terminated') : new Error('Connection terminated unexpectedly')
-
-      clearTimeout(this.connectionTimeoutHandle)
-      this._errorAllQueries(error)
-      this._ended = true
-
-      if (!this._ending) {
-        // if the connection is ended without us calling .end()
-        // on this client then we have an unexpected disconnection
-        // treat this as an error unless we've already emitted an error
-        // during connection.
-        if (this._connecting && !this._connectionError) {
-          if (this._connectionCallback) {
-            this._connectionCallback(error)
-          } else {
-            this._handleErrorEvent(error)
-          }
-        } else if (!this._connectionError) {
-          this._handleErrorEvent(error)
-        }
-      }
-
-      process.nextTick(() => {
-        this.emit('end')
-      })
-    })
-  }
-
-  connect(callback) {
-    if (callback) {
-      this._connect(callback)
-      return
-    }
-
-    return new this._Promise((resolve, reject) => {
-      this._connect((error) => {
-        if (error) {
-          reject(error)
-        } else {
-          resolve()
-        }
-      })
-    })
-  }
-
-  _attachListeners(con) {
-    // password request handling
-    con.on('authenticationCleartextPassword', this._handleAuthCleartextPassword.bind(this))
-    // password request handling
-    con.on('authenticationMD5Password', this._handleAuthMD5Password.bind(this))
-    // password request handling (SASL)
-    con.on('authenticationSASL', this._handleAuthSASL.bind(this))
-    con.on('authenticationSASLContinue', this._handleAuthSASLContinue.bind(this))
-    con.on('authenticationSASLFinal', this._handleAuthSASLFinal.bind(this))
-    con.on('backendKeyData', this._handleBackendKeyData.bind(this))
-    con.on('error', this._handleErrorEvent.bind(this))
-    con.on('errorMessage', this._handleErrorMessage.bind(this))
-    con.on('readyForQuery', this._handleReadyForQuery.bind(this))
-    con.on('notice', this._handleNotice.bind(this))
-    con.on('rowDescription', this._handleRowDescription.bind(this))
-    con.on('dataRow', this._handleDataRow.bind(this))
-    con.on('portalSuspended', this._handlePortalSuspended.bind(this))
-    con.on('emptyQuery', this._handleEmptyQuery.bind(this))
-    con.on('commandComplete', this._handleCommandComplete.bind(this))
-    con.on('parseComplete', this._handleParseComplete.bind(this))
-    con.on('copyInResponse', this._handleCopyInResponse.bind(this))
-    con.on('copyData', this._handleCopyData.bind(this))
-    con.on('notification', this._handleNotification.bind(this))
-  }
-
-  // TODO(bmc): deprecate pgpass "built in" integration since this.password can be a function
-  // it can be supplied by the user if required - this is a breaking change!
-  _checkPgPass(cb) {
-    const con = this.connection
-    if (typeof this.password === 'function') {
-      this._Promise
-        .resolve()
-        .then(() => this.password())
-        .then((pass) => {
-          if (pass !== undefined) {
-            if (typeof pass !== 'string') {
-              con.emit('error', new TypeError('Password must be a string'))
-              return
-            }
-            this.connectionParameters.password = this.password = pass
-          } else {
-            this.connectionParameters.password = this.password = null
-          }
-          cb()
-        })
-        .catch((err) => {
-          con.emit('error', err)
-        })
-    } else if (this.password !== null) {
-      cb()
-    } else {
-      try {
-        const pgPass = require('pgpass')
-        pgPass(this.connectionParameters, (pass) => {
-          if (undefined !== pass) {
-            this.connectionParameters.password = this.password = pass
-          }
-          cb()
-        })
-      } catch (e) {
-        this.emit('error', e)
-      }
-    }
-  }
-
-  _handleAuthCleartextPassword(msg) {
-    this._checkPgPass(() => {
-      this.connection.password(this.password)
-    })
-  }
-
-  _handleAuthMD5Password(msg) {
-    this._checkPgPass(async () => {
-      try {
-        const hashedPassword = await crypto.postgresMd5PasswordHash(this.user, this.password, msg.salt)
-        this.connection.password(hashedPassword)
-      } catch (e) {
-        this.emit('error', e)
-      }
-    })
-  }
-
-  _handleAuthSASL(msg) {
-    this._checkPgPass(() => {
-      try {
-        this.saslSession = sasl.startSession(msg.mechanisms, this.enableChannelBinding && this.connection.stream)
-        this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism, this.saslSession.response)
-      } catch (err) {
-        this.connection.emit('error', err)
-      }
-    })
-  }
-
-  async _handleAuthSASLContinue(msg) {
-    try {
-      await sasl.continueSession(
-        this.saslSession,
-        this.password,
-        msg.data,
-        this.enableChannelBinding && this.connection.stream
-      )
-      this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)
-    } catch (err) {
-      this.connection.emit('error', err)
-    }
-  }
-
-  _handleAuthSASLFinal(msg) {
-    try {
-      sasl.finalizeSession(this.saslSession, msg.data)
-      this.saslSession = null
-    } catch (err) {
-      this.connection.emit('error', err)
-    }
-  }
-
-  _handleBackendKeyData(msg) {
-    this.processID = msg.processID
-    this.secretKey = msg.secretKey
-  }
-
-  _handleReadyForQuery(msg) {
-    if (this._connecting) {
-      this._connecting = false
-      this._connected = true
-      clearTimeout(this.connectionTimeoutHandle)
-
-      // process possible callback argument to Client#connect
-      if (this._connectionCallback) {
-        this._connectionCallback(null, this)
-        // remove callback for proper error handling
-        // after the connect event
-        this._connectionCallback = null
-      }
-      this.emit('connect')
-    }
-    const { activeQuery } = this
-    this.activeQuery = null
-    this.readyForQuery = true
-    if (activeQuery) {
-      activeQuery.handleReadyForQuery(this.connection)
-    }
-    this._pulseQueryQueue()
-  }
-
-  // if we receieve an error event or error message
-  // during the connection process we handle it here
-  _handleErrorWhileConnecting(err) {
-    if (this._connectionError) {
-      // TODO(bmc): this is swallowing errors - we shouldn't do this
-      return
-    }
-    this._connectionError = true
-    clearTimeout(this.connectionTimeoutHandle)
-    if (this._connectionCallback) {
-      return this._connectionCallback(err)
-    }
-    this.emit('error', err)
-  }
-
-  // if we're connected and we receive an error event from the connection
-  // this means the socket is dead - do a hard abort of all queries and emit
-  // the socket error on the client as well
-  _handleErrorEvent(err) {
-    if (this._connecting) {
-      return this._handleErrorWhileConnecting(err)
-    }
-    this._queryable = false
-    this._errorAllQueries(err)
-    this.emit('error', err)
-  }
-
-  // handle error messages from the postgres backend
-  _handleErrorMessage(msg) {
-    if (this._connecting) {
-      return this._handleErrorWhileConnecting(msg)
-    }
-    const activeQuery = this.activeQuery
-
-    if (!activeQuery) {
-      this._handleErrorEvent(msg)
-      return
-    }
-
-    this.activeQuery = null
-    activeQuery.handleError(msg, this.connection)
-  }
-
-  _handleRowDescription(msg) {
-    // delegate rowDescription to active query
-    this.activeQuery.handleRowDescription(msg)
-  }
-
-  _handleDataRow(msg) {
-    // delegate dataRow to active query
-    this.activeQuery.handleDataRow(msg)
-  }
-
-  _handlePortalSuspended(msg) {
-    // delegate portalSuspended to active query
-    this.activeQuery.handlePortalSuspended(this.connection)
-  }
-
-  _handleEmptyQuery(msg) {
-    // delegate emptyQuery to active query
-    this.activeQuery.handleEmptyQuery(this.connection)
-  }
-
-  _handleCommandComplete(msg) {
-    if (this.activeQuery == null) {
-      const error = new Error('Received unexpected commandComplete message from backend.')
-      this._handleErrorEvent(error)
-      return
-    }
-    // delegate commandComplete to active query
-    this.activeQuery.handleCommandComplete(msg, this.connection)
-  }
-
-  _handleParseComplete() {
-    if (this.activeQuery == null) {
-      const error = new Error('Received unexpected parseComplete message from backend.')
-      this._handleErrorEvent(error)
-      return
-    }
-    // if a prepared statement has a name and properly parses
-    // we track that its already been executed so we don't parse
-    // it again on the same client
-    if (this.activeQuery.name) {
-      this.connection.parsedStatements[this.activeQuery.name] = this.activeQuery.text
-    }
-  }
-
-  _handleCopyInResponse(msg) {
-    this.activeQuery.handleCopyInResponse(this.connection)
-  }
-
-  _handleCopyData(msg) {
-    this.activeQuery.handleCopyData(msg, this.connection)
-  }
-
-  _handleNotification(msg) {
-    this.emit('notification', msg)
-  }
-
-  _handleNotice(msg) {
-    this.emit('notice', msg)
-  }
-
-  getStartupConf() {
-    const params = this.connectionParameters
-
-    const data = {
-      user: params.user,
-      database: params.database,
-    }
-
-    const appName = params.application_name || params.fallback_application_name
-    if (appName) {
-      data.application_name = appName
-    }
-    if (params.replication) {
-      data.replication = '' + params.replication
-    }
-    if (params.statement_timeout) {
-      data.statement_timeout = String(parseInt(params.statement_timeout, 10))
-    }
-    if (params.lock_timeout) {
-      data.lock_timeout = String(parseInt(params.lock_timeout, 10))
-    }
-    if (params.idle_in_transaction_session_timeout) {
-      data.idle_in_transaction_session_timeout = String(parseInt(params.idle_in_transaction_session_timeout, 10))
-    }
-    if (params.options) {
-      data.options = params.options
-    }
-
-    return data
-  }
-
-  cancel(client, query) {
-    if (client.activeQuery === query) {
-      const con = this.connection
-
-      if (this.host && this.host.indexOf('/') === 0) {
-        con.connect(this.host + '/.s.PGSQL.' + this.port)
-      } else {
-        con.connect(this.port, this.host)
-      }
-
-      // once connection is established send cancel message
-      con.on('connect', function () {
-        con.cancel(client.processID, client.secretKey)
-      })
-    } else if (client.queryQueue.indexOf(query) !== -1) {
-      client.queryQueue.splice(client.queryQueue.indexOf(query), 1)
-    }
-  }
-
-  setTypeParser(oid, format, parseFn) {
-    return this._types.setTypeParser(oid, format, parseFn)
-  }
-
-  getTypeParser(oid, format) {
-    return this._types.getTypeParser(oid, format)
-  }
-
-  // escapeIdentifier and escapeLiteral moved to utility functions & exported
-  // on PG
-  // re-exported here for backwards compatibility
-  escapeIdentifier(str) {
-    return utils.escapeIdentifier(str)
-  }
-
-  escapeLiteral(str) {
-    return utils.escapeLiteral(str)
-  }
-
-  _pulseQueryQueue() {
-    if (this.readyForQuery === true) {
-      this.activeQuery = this.queryQueue.shift()
-      if (this.activeQuery) {
-        this.readyForQuery = false
-        this.hasExecuted = true
-
-        const queryError = this.activeQuery.submit(this.connection)
-        if (queryError) {
-          process.nextTick(() => {
-            this.activeQuery.handleError(queryError, this.connection)
-            this.readyForQuery = true
-            this._pulseQueryQueue()
-          })
-        }
-      } else if (this.hasExecuted) {
-        this.activeQuery = null
-        this.emit('drain')
-      }
-    }
-  }
-
-  query(config, values, callback) {
-    // can take in strings, config object or query object
-    let query
-    let result
-    let readTimeout
-    let readTimeoutTimer
-    let queryCallback
-
-    if (config === null || config === undefined) {
-      throw new TypeError('Client was passed a null or undefined query')
-    } else if (typeof config.submit === 'function') {
-      readTimeout = config.query_timeout || this.connectionParameters.query_timeout
-      result = query = config
-      if (typeof values === 'function') {
-        query.callback = query.callback || values
-      }
-    } else {
-      readTimeout = config.query_timeout || this.connectionParameters.query_timeout
-      query = new Query(config, values, callback)
-      if (!query.callback) {
-        result = new this._Promise((resolve, reject) => {
-          query.callback = (err, res) => (err ? reject(err) : resolve(res))
-        }).catch((err) => {
-          // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the
-          // application that created the query
-          Error.captureStackTrace(err)
-          throw err
-        })
-      }
-    }
-
-    if (readTimeout) {
-      queryCallback = query.callback
-
-      readTimeoutTimer = setTimeout(() => {
-        const error = new Error('Query read timeout')
-
-        process.nextTick(() => {
-          query.handleError(error, this.connection)
-        })
-
-        queryCallback(error)
-
-        // we already returned an error,
-        // just do nothing if query completes
-        query.callback = () => {}
-
-        // Remove from queue
-        const index = this.queryQueue.indexOf(query)
-        if (index > -1) {
-          this.queryQueue.splice(index, 1)
-        }
-
-        this._pulseQueryQueue()
-      }, readTimeout)
-
-      query.callback = (err, res) => {
-        clearTimeout(readTimeoutTimer)
-        queryCallback(err, res)
-      }
-    }
-
-    if (this.binary && !query.binary) {
-      query.binary = true
-    }
-
-    if (query._result && !query._result._types) {
-      query._result._types = this._types
-    }
-
-    if (!this._queryable) {
-      process.nextTick(() => {
-        query.handleError(new Error('Client has encountered a connection error and is not queryable'), this.connection)
-      })
-      return result
-    }
-
-    if (this._ending) {
-      process.nextTick(() => {
-        query.handleError(new Error('Client was closed and is not queryable'), this.connection)
-      })
-      return result
-    }
-
-    this.queryQueue.push(query)
-    this._pulseQueryQueue()
-    return result
-  }
-
-  ref() {
-    this.connection.ref()
-  }
-
-  unref() {
-    this.connection.unref()
-  }
-
-  end(cb) {
-    this._ending = true
-
-    // if we have never connected, then end is a noop, callback immediately
-    if (!this.connection._connecting || this._ended) {
-      if (cb) {
-        cb()
-      } else {
-        return this._Promise.resolve()
-      }
-    }
-
-    if (this.activeQuery || !this._queryable) {
-      // if we have an active query we need to force a disconnect
-      // on the socket - otherwise a hung query could block end forever
-      this.connection.stream.destroy()
-    } else {
-      this.connection.end()
-    }
-
-    if (cb) {
-      this.connection.once('end', cb)
-    } else {
-      return new this._Promise((resolve) => {
-        this.connection.once('end', resolve)
-      })
-    }
-  }
-}
-
-// expose a Query constructor
-Client.Query = Query
-
-module.exports = Client
Index: ckend/node_modules/pg/lib/connection-parameters.js
===================================================================
--- backend/node_modules/pg/lib/connection-parameters.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,167 +1,0 @@
-'use strict'
-
-const dns = require('dns')
-
-const defaults = require('./defaults')
-
-const parse = require('pg-connection-string').parse // parses a connection string
-
-const val = function (key, config, envVar) {
-  if (envVar === undefined) {
-    envVar = process.env['PG' + key.toUpperCase()]
-  } else if (envVar === false) {
-    // do nothing ... use false
-  } else {
-    envVar = process.env[envVar]
-  }
-
-  return config[key] || envVar || defaults[key]
-}
-
-const readSSLConfigFromEnvironment = function () {
-  switch (process.env.PGSSLMODE) {
-    case 'disable':
-      return false
-    case 'prefer':
-    case 'require':
-    case 'verify-ca':
-    case 'verify-full':
-      return true
-    case 'no-verify':
-      return { rejectUnauthorized: false }
-  }
-  return defaults.ssl
-}
-
-// Convert arg to a string, surround in single quotes, and escape single quotes and backslashes
-const quoteParamValue = function (value) {
-  return "'" + ('' + value).replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'"
-}
-
-const add = function (params, config, paramName) {
-  const value = config[paramName]
-  if (value !== undefined && value !== null) {
-    params.push(paramName + '=' + quoteParamValue(value))
-  }
-}
-
-class ConnectionParameters {
-  constructor(config) {
-    // if a string is passed, it is a raw connection string so we parse it into a config
-    config = typeof config === 'string' ? parse(config) : config || {}
-
-    // if the config has a connectionString defined, parse IT into the config we use
-    // this will override other default values with what is stored in connectionString
-    if (config.connectionString) {
-      config = Object.assign({}, config, parse(config.connectionString))
-    }
-
-    this.user = val('user', config)
-    this.database = val('database', config)
-
-    if (this.database === undefined) {
-      this.database = this.user
-    }
-
-    this.port = parseInt(val('port', config), 10)
-    this.host = val('host', config)
-
-    // "hiding" the password so it doesn't show up in stack traces
-    // or if the client is console.logged
-    Object.defineProperty(this, 'password', {
-      configurable: true,
-      enumerable: false,
-      writable: true,
-      value: val('password', config),
-    })
-
-    this.binary = val('binary', config)
-    this.options = val('options', config)
-
-    this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl
-
-    if (typeof this.ssl === 'string') {
-      if (this.ssl === 'true') {
-        this.ssl = true
-      }
-    }
-    // support passing in ssl=no-verify via connection string
-    if (this.ssl === 'no-verify') {
-      this.ssl = { rejectUnauthorized: false }
-    }
-    if (this.ssl && this.ssl.key) {
-      Object.defineProperty(this.ssl, 'key', {
-        enumerable: false,
-      })
-    }
-
-    this.client_encoding = val('client_encoding', config)
-    this.replication = val('replication', config)
-    // a domain socket begins with '/'
-    this.isDomainSocket = !(this.host || '').indexOf('/')
-
-    this.application_name = val('application_name', config, 'PGAPPNAME')
-    this.fallback_application_name = val('fallback_application_name', config, false)
-    this.statement_timeout = val('statement_timeout', config, false)
-    this.lock_timeout = val('lock_timeout', config, false)
-    this.idle_in_transaction_session_timeout = val('idle_in_transaction_session_timeout', config, false)
-    this.query_timeout = val('query_timeout', config, false)
-
-    if (config.connectionTimeoutMillis === undefined) {
-      this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0
-    } else {
-      this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1000)
-    }
-
-    if (config.keepAlive === false) {
-      this.keepalives = 0
-    } else if (config.keepAlive === true) {
-      this.keepalives = 1
-    }
-
-    if (typeof config.keepAliveInitialDelayMillis === 'number') {
-      this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1000)
-    }
-  }
-
-  getLibpqConnectionString(cb) {
-    const params = []
-    add(params, this, 'user')
-    add(params, this, 'password')
-    add(params, this, 'port')
-    add(params, this, 'application_name')
-    add(params, this, 'fallback_application_name')
-    add(params, this, 'connect_timeout')
-    add(params, this, 'options')
-
-    const ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {}
-    add(params, ssl, 'sslmode')
-    add(params, ssl, 'sslca')
-    add(params, ssl, 'sslkey')
-    add(params, ssl, 'sslcert')
-    add(params, ssl, 'sslrootcert')
-
-    if (this.database) {
-      params.push('dbname=' + quoteParamValue(this.database))
-    }
-    if (this.replication) {
-      params.push('replication=' + quoteParamValue(this.replication))
-    }
-    if (this.host) {
-      params.push('host=' + quoteParamValue(this.host))
-    }
-    if (this.isDomainSocket) {
-      return cb(null, params.join(' '))
-    }
-    if (this.client_encoding) {
-      params.push('client_encoding=' + quoteParamValue(this.client_encoding))
-    }
-    dns.lookup(this.host, function (err, address) {
-      if (err) return cb(err, null)
-      params.push('hostaddr=' + quoteParamValue(address))
-      return cb(null, params.join(' '))
-    })
-  }
-}
-
-module.exports = ConnectionParameters
Index: ckend/node_modules/pg/lib/connection.js
===================================================================
--- backend/node_modules/pg/lib/connection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,222 +1,0 @@
-'use strict'
-
-const EventEmitter = require('events').EventEmitter
-
-const { parse, serialize } = require('pg-protocol')
-const { getStream, getSecureStream } = require('./stream')
-
-const flushBuffer = serialize.flush()
-const syncBuffer = serialize.sync()
-const endBuffer = serialize.end()
-
-// TODO(bmc) support binary mode at some point
-class Connection extends EventEmitter {
-  constructor(config) {
-    super()
-    config = config || {}
-
-    this.stream = config.stream || getStream(config.ssl)
-    if (typeof this.stream === 'function') {
-      this.stream = this.stream(config)
-    }
-
-    this._keepAlive = config.keepAlive
-    this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis
-    this.lastBuffer = false
-    this.parsedStatements = {}
-    this.ssl = config.ssl || false
-    this._ending = false
-    this._emitMessage = false
-    const self = this
-    this.on('newListener', function (eventName) {
-      if (eventName === 'message') {
-        self._emitMessage = true
-      }
-    })
-  }
-
-  connect(port, host) {
-    const self = this
-
-    this._connecting = true
-    this.stream.setNoDelay(true)
-    this.stream.connect(port, host)
-
-    this.stream.once('connect', function () {
-      if (self._keepAlive) {
-        self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis)
-      }
-      self.emit('connect')
-    })
-
-    const reportStreamError = function (error) {
-      // errors about disconnections should be ignored during disconnect
-      if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) {
-        return
-      }
-      self.emit('error', error)
-    }
-    this.stream.on('error', reportStreamError)
-
-    this.stream.on('close', function () {
-      self.emit('end')
-    })
-
-    if (!this.ssl) {
-      return this.attachListeners(this.stream)
-    }
-
-    this.stream.once('data', function (buffer) {
-      const responseCode = buffer.toString('utf8')
-      switch (responseCode) {
-        case 'S': // Server supports SSL connections, continue with a secure connection
-          break
-        case 'N': // Server does not support SSL connections
-          self.stream.end()
-          return self.emit('error', new Error('The server does not support SSL connections'))
-        default:
-          // Any other response byte, including 'E' (ErrorResponse) indicating a server error
-          self.stream.end()
-          return self.emit('error', new Error('There was an error establishing an SSL connection'))
-      }
-      const options = {
-        socket: self.stream,
-      }
-
-      if (self.ssl !== true) {
-        Object.assign(options, self.ssl)
-
-        if ('key' in self.ssl) {
-          options.key = self.ssl.key
-        }
-      }
-
-      const net = require('net')
-      if (net.isIP && net.isIP(host) === 0) {
-        options.servername = host
-      }
-      try {
-        self.stream = getSecureStream(options)
-      } catch (err) {
-        return self.emit('error', err)
-      }
-      self.attachListeners(self.stream)
-      self.stream.on('error', reportStreamError)
-
-      self.emit('sslconnect')
-    })
-  }
-
-  attachListeners(stream) {
-    parse(stream, (msg) => {
-      const eventName = msg.name === 'error' ? 'errorMessage' : msg.name
-      if (this._emitMessage) {
-        this.emit('message', msg)
-      }
-      this.emit(eventName, msg)
-    })
-  }
-
-  requestSsl() {
-    this.stream.write(serialize.requestSsl())
-  }
-
-  startup(config) {
-    this.stream.write(serialize.startup(config))
-  }
-
-  cancel(processID, secretKey) {
-    this._send(serialize.cancel(processID, secretKey))
-  }
-
-  password(password) {
-    this._send(serialize.password(password))
-  }
-
-  sendSASLInitialResponseMessage(mechanism, initialResponse) {
-    this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse))
-  }
-
-  sendSCRAMClientFinalMessage(additionalData) {
-    this._send(serialize.sendSCRAMClientFinalMessage(additionalData))
-  }
-
-  _send(buffer) {
-    if (!this.stream.writable) {
-      return false
-    }
-    return this.stream.write(buffer)
-  }
-
-  query(text) {
-    this._send(serialize.query(text))
-  }
-
-  // send parse message
-  parse(query) {
-    this._send(serialize.parse(query))
-  }
-
-  // send bind message
-  bind(config) {
-    this._send(serialize.bind(config))
-  }
-
-  // send execute message
-  execute(config) {
-    this._send(serialize.execute(config))
-  }
-
-  flush() {
-    if (this.stream.writable) {
-      this.stream.write(flushBuffer)
-    }
-  }
-
-  sync() {
-    this._ending = true
-    this._send(syncBuffer)
-  }
-
-  ref() {
-    this.stream.ref()
-  }
-
-  unref() {
-    this.stream.unref()
-  }
-
-  end() {
-    // 0x58 = 'X'
-    this._ending = true
-    if (!this._connecting || !this.stream.writable) {
-      this.stream.end()
-      return
-    }
-    return this.stream.write(endBuffer, () => {
-      this.stream.end()
-    })
-  }
-
-  close(msg) {
-    this._send(serialize.close(msg))
-  }
-
-  describe(msg) {
-    this._send(serialize.describe(msg))
-  }
-
-  sendCopyFromChunk(chunk) {
-    this._send(serialize.copyData(chunk))
-  }
-
-  endCopyFrom() {
-    this._send(serialize.copyDone())
-  }
-
-  sendCopyFail(msg) {
-    this._send(serialize.copyFail(msg))
-  }
-}
-
-module.exports = Connection
Index: ckend/node_modules/pg/lib/crypto/cert-signatures.js
===================================================================
--- backend/node_modules/pg/lib/crypto/cert-signatures.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,122 +1,0 @@
-function x509Error(msg, cert) {
-  return new Error('SASL channel binding: ' + msg + ' when parsing public certificate ' + cert.toString('base64'))
-}
-
-function readASN1Length(data, index) {
-  let length = data[index++]
-  if (length < 0x80) return { length, index }
-
-  const lengthBytes = length & 0x7f
-  if (lengthBytes > 4) throw x509Error('bad length', data)
-
-  length = 0
-  for (let i = 0; i < lengthBytes; i++) {
-    length = (length << 8) | data[index++]
-  }
-
-  return { length, index }
-}
-
-function readASN1OID(data, index) {
-  if (data[index++] !== 0x6) throw x509Error('non-OID data', data) // 6 = OID
-
-  const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index)
-  index = indexAfterOIDLength
-  const lastIndex = index + OIDLength
-
-  const byte1 = data[index++]
-  let oid = ((byte1 / 40) >> 0) + '.' + (byte1 % 40)
-
-  while (index < lastIndex) {
-    // loop over numbers in OID
-    let value = 0
-    while (index < lastIndex) {
-      // loop over bytes in number
-      const nextByte = data[index++]
-      value = (value << 7) | (nextByte & 0x7f)
-      if (nextByte < 0x80) break
-    }
-    oid += '.' + value
-  }
-
-  return { oid, index }
-}
-
-function expectASN1Seq(data, index) {
-  if (data[index++] !== 0x30) throw x509Error('non-sequence data', data) // 30 = Sequence
-  return readASN1Length(data, index)
-}
-
-function signatureAlgorithmHashFromCertificate(data, index) {
-  // read this thread: https://www.postgresql.org/message-id/17760-b6c61e752ec07060%40postgresql.org
-  if (index === undefined) index = 0
-  index = expectASN1Seq(data, index).index
-  const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index)
-  index = indexAfterCertInfoLength + certInfoLength // skip over certificate info
-  index = expectASN1Seq(data, index).index // skip over signature length field
-  const { oid, index: indexAfterOID } = readASN1OID(data, index)
-  switch (oid) {
-    // RSA
-    case '1.2.840.113549.1.1.4':
-      return 'MD5'
-    case '1.2.840.113549.1.1.5':
-      return 'SHA-1'
-    case '1.2.840.113549.1.1.11':
-      return 'SHA-256'
-    case '1.2.840.113549.1.1.12':
-      return 'SHA-384'
-    case '1.2.840.113549.1.1.13':
-      return 'SHA-512'
-    case '1.2.840.113549.1.1.14':
-      return 'SHA-224'
-    case '1.2.840.113549.1.1.15':
-      return 'SHA512-224'
-    case '1.2.840.113549.1.1.16':
-      return 'SHA512-256'
-    // ECDSA
-    case '1.2.840.10045.4.1':
-      return 'SHA-1'
-    case '1.2.840.10045.4.3.1':
-      return 'SHA-224'
-    case '1.2.840.10045.4.3.2':
-      return 'SHA-256'
-    case '1.2.840.10045.4.3.3':
-      return 'SHA-384'
-    case '1.2.840.10045.4.3.4':
-      return 'SHA-512'
-    // RSASSA-PSS: hash is indicated separately
-    case '1.2.840.113549.1.1.10': {
-      index = indexAfterOID
-      index = expectASN1Seq(data, index).index
-      if (data[index++] !== 0xa0) throw x509Error('non-tag data', data) // a0 = constructed tag 0
-      index = readASN1Length(data, index).index // skip over tag length field
-      index = expectASN1Seq(data, index).index // skip over sequence length field
-      const { oid: hashOID } = readASN1OID(data, index)
-      switch (hashOID) {
-        // standalone hash OIDs
-        case '1.2.840.113549.2.5':
-          return 'MD5'
-        case '1.3.14.3.2.26':
-          return 'SHA-1'
-        case '2.16.840.1.101.3.4.2.1':
-          return 'SHA-256'
-        case '2.16.840.1.101.3.4.2.2':
-          return 'SHA-384'
-        case '2.16.840.1.101.3.4.2.3':
-          return 'SHA-512'
-      }
-      throw x509Error('unknown hash OID ' + hashOID, data)
-    }
-    // Ed25519 -- see https: return//github.com/openssl/openssl/issues/15477
-    case '1.3.101.110':
-    case '1.3.101.112': // ph
-      return 'SHA-512'
-    // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes)
-    case '1.3.101.111':
-    case '1.3.101.113': // ph
-      throw x509Error('Ed448 certificate channel binding is not currently supported by Postgres')
-  }
-  throw x509Error('unknown OID ' + oid, data)
-}
-
-module.exports = { signatureAlgorithmHashFromCertificate }
Index: ckend/node_modules/pg/lib/crypto/sasl.js
===================================================================
--- backend/node_modules/pg/lib/crypto/sasl.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,212 +1,0 @@
-'use strict'
-const crypto = require('./utils')
-const { signatureAlgorithmHashFromCertificate } = require('./cert-signatures')
-
-function startSession(mechanisms, stream) {
-  const candidates = ['SCRAM-SHA-256']
-  if (stream) candidates.unshift('SCRAM-SHA-256-PLUS') // higher-priority, so placed first
-
-  const mechanism = candidates.find((candidate) => mechanisms.includes(candidate))
-
-  if (!mechanism) {
-    throw new Error('SASL: Only mechanism(s) ' + candidates.join(' and ') + ' are supported')
-  }
-
-  if (mechanism === 'SCRAM-SHA-256-PLUS' && typeof stream.getPeerCertificate !== 'function') {
-    // this should never happen if we are really talking to a Postgres server
-    throw new Error('SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate')
-  }
-
-  const clientNonce = crypto.randomBytes(18).toString('base64')
-  const gs2Header = mechanism === 'SCRAM-SHA-256-PLUS' ? 'p=tls-server-end-point' : stream ? 'y' : 'n'
-
-  return {
-    mechanism,
-    clientNonce,
-    response: gs2Header + ',,n=*,r=' + clientNonce,
-    message: 'SASLInitialResponse',
-  }
-}
-
-async function continueSession(session, password, serverData, stream) {
-  if (session.message !== 'SASLInitialResponse') {
-    throw new Error('SASL: Last message was not SASLInitialResponse')
-  }
-  if (typeof password !== 'string') {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string')
-  }
-  if (password === '') {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string')
-  }
-  if (typeof serverData !== 'string') {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string')
-  }
-
-  const sv = parseServerFirstMessage(serverData)
-
-  if (!sv.nonce.startsWith(session.clientNonce)) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce')
-  } else if (sv.nonce.length === session.clientNonce.length) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short')
-  }
-
-  const clientFirstMessageBare = 'n=*,r=' + session.clientNonce
-  const serverFirstMessage = 'r=' + sv.nonce + ',s=' + sv.salt + ',i=' + sv.iteration
-
-  // without channel binding:
-  let channelBinding = stream ? 'eSws' : 'biws' // 'y,,' or 'n,,', base64-encoded
-
-  // override if channel binding is in use:
-  if (session.mechanism === 'SCRAM-SHA-256-PLUS') {
-    const peerCert = stream.getPeerCertificate().raw
-    let hashName = signatureAlgorithmHashFromCertificate(peerCert)
-    if (hashName === 'MD5' || hashName === 'SHA-1') hashName = 'SHA-256'
-    const certHash = await crypto.hashByName(hashName, peerCert)
-    const bindingData = Buffer.concat([Buffer.from('p=tls-server-end-point,,'), Buffer.from(certHash)])
-    channelBinding = bindingData.toString('base64')
-  }
-
-  const clientFinalMessageWithoutProof = 'c=' + channelBinding + ',r=' + sv.nonce
-  const authMessage = clientFirstMessageBare + ',' + serverFirstMessage + ',' + clientFinalMessageWithoutProof
-
-  const saltBytes = Buffer.from(sv.salt, 'base64')
-  const saltedPassword = await crypto.deriveKey(password, saltBytes, sv.iteration)
-  const clientKey = await crypto.hmacSha256(saltedPassword, 'Client Key')
-  const storedKey = await crypto.sha256(clientKey)
-  const clientSignature = await crypto.hmacSha256(storedKey, authMessage)
-  const clientProof = xorBuffers(Buffer.from(clientKey), Buffer.from(clientSignature)).toString('base64')
-  const serverKey = await crypto.hmacSha256(saltedPassword, 'Server Key')
-  const serverSignatureBytes = await crypto.hmacSha256(serverKey, authMessage)
-
-  session.message = 'SASLResponse'
-  session.serverSignature = Buffer.from(serverSignatureBytes).toString('base64')
-  session.response = clientFinalMessageWithoutProof + ',p=' + clientProof
-}
-
-function finalizeSession(session, serverData) {
-  if (session.message !== 'SASLResponse') {
-    throw new Error('SASL: Last message was not SASLResponse')
-  }
-  if (typeof serverData !== 'string') {
-    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string')
-  }
-
-  const { serverSignature } = parseServerFinalMessage(serverData)
-
-  if (serverSignature !== session.serverSignature) {
-    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match')
-  }
-}
-
-/**
- * printable       = %x21-2B / %x2D-7E
- *                   ;; Printable ASCII except ",".
- *                   ;; Note that any "printable" is also
- *                   ;; a valid "value".
- */
-function isPrintableChars(text) {
-  if (typeof text !== 'string') {
-    throw new TypeError('SASL: text must be a string')
-  }
-  return text
-    .split('')
-    .map((_, i) => text.charCodeAt(i))
-    .every((c) => (c >= 0x21 && c <= 0x2b) || (c >= 0x2d && c <= 0x7e))
-}
-
-/**
- * base64-char     = ALPHA / DIGIT / "/" / "+"
- *
- * base64-4        = 4base64-char
- *
- * base64-3        = 3base64-char "="
- *
- * base64-2        = 2base64-char "=="
- *
- * base64          = *base64-4 [base64-3 / base64-2]
- */
-function isBase64(text) {
-  return /^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(text)
-}
-
-function parseAttributePairs(text) {
-  if (typeof text !== 'string') {
-    throw new TypeError('SASL: attribute pairs text must be a string')
-  }
-
-  return new Map(
-    text.split(',').map((attrValue) => {
-      if (!/^.=/.test(attrValue)) {
-        throw new Error('SASL: Invalid attribute pair entry')
-      }
-      const name = attrValue[0]
-      const value = attrValue.substring(2)
-      return [name, value]
-    })
-  )
-}
-
-function parseServerFirstMessage(data) {
-  const attrPairs = parseAttributePairs(data)
-
-  const nonce = attrPairs.get('r')
-  if (!nonce) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing')
-  } else if (!isPrintableChars(nonce)) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters')
-  }
-  const salt = attrPairs.get('s')
-  if (!salt) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing')
-  } else if (!isBase64(salt)) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64')
-  }
-  const iterationText = attrPairs.get('i')
-  if (!iterationText) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing')
-  } else if (!/^[1-9][0-9]*$/.test(iterationText)) {
-    throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count')
-  }
-  const iteration = parseInt(iterationText, 10)
-
-  return {
-    nonce,
-    salt,
-    iteration,
-  }
-}
-
-function parseServerFinalMessage(serverData) {
-  const attrPairs = parseAttributePairs(serverData)
-  const serverSignature = attrPairs.get('v')
-  if (!serverSignature) {
-    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing')
-  } else if (!isBase64(serverSignature)) {
-    throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64')
-  }
-  return {
-    serverSignature,
-  }
-}
-
-function xorBuffers(a, b) {
-  if (!Buffer.isBuffer(a)) {
-    throw new TypeError('first argument must be a Buffer')
-  }
-  if (!Buffer.isBuffer(b)) {
-    throw new TypeError('second argument must be a Buffer')
-  }
-  if (a.length !== b.length) {
-    throw new Error('Buffer lengths must match')
-  }
-  if (a.length === 0) {
-    throw new Error('Buffers cannot be empty')
-  }
-  return Buffer.from(a.map((_, i) => a[i] ^ b[i]))
-}
-
-module.exports = {
-  startSession,
-  continueSession,
-  finalizeSession,
-}
Index: ckend/node_modules/pg/lib/crypto/utils-legacy.js
===================================================================
--- backend/node_modules/pg/lib/crypto/utils-legacy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-'use strict'
-// This file contains crypto utility functions for versions of Node.js < 15.0.0,
-// which does not support the WebCrypto.subtle API.
-
-const nodeCrypto = require('crypto')
-
-function md5(string) {
-  return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')
-}
-
-// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html
-function postgresMd5PasswordHash(user, password, salt) {
-  const inner = md5(password + user)
-  const outer = md5(Buffer.concat([Buffer.from(inner), salt]))
-  return 'md5' + outer
-}
-
-function sha256(text) {
-  return nodeCrypto.createHash('sha256').update(text).digest()
-}
-
-function hashByName(hashName, text) {
-  hashName = hashName.replace(/(\D)-/, '$1') // e.g. SHA-256 -> SHA256
-  return nodeCrypto.createHash(hashName).update(text).digest()
-}
-
-function hmacSha256(key, msg) {
-  return nodeCrypto.createHmac('sha256', key).update(msg).digest()
-}
-
-async function deriveKey(password, salt, iterations) {
-  return nodeCrypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256')
-}
-
-module.exports = {
-  postgresMd5PasswordHash,
-  randomBytes: nodeCrypto.randomBytes,
-  deriveKey,
-  sha256,
-  hashByName,
-  hmacSha256,
-  md5,
-}
Index: ckend/node_modules/pg/lib/crypto/utils-webcrypto.js
===================================================================
--- backend/node_modules/pg/lib/crypto/utils-webcrypto.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,89 +1,0 @@
-const nodeCrypto = require('crypto')
-
-module.exports = {
-  postgresMd5PasswordHash,
-  randomBytes,
-  deriveKey,
-  sha256,
-  hashByName,
-  hmacSha256,
-  md5,
-}
-
-/**
- * The Web Crypto API - grabbed from the Node.js library or the global
- * @type Crypto
- */
-// eslint-disable-next-line no-undef
-const webCrypto = nodeCrypto.webcrypto || globalThis.crypto
-/**
- * The SubtleCrypto API for low level crypto operations.
- * @type SubtleCrypto
- */
-const subtleCrypto = webCrypto.subtle
-const textEncoder = new TextEncoder()
-
-/**
- *
- * @param {*} length
- * @returns
- */
-function randomBytes(length) {
-  return webCrypto.getRandomValues(Buffer.alloc(length))
-}
-
-async function md5(string) {
-  try {
-    return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex')
-  } catch (e) {
-    // `createHash()` failed so we are probably not in Node.js, use the WebCrypto API instead.
-    // Note that the MD5 algorithm on WebCrypto is not available in Node.js.
-    // This is why we cannot just use WebCrypto in all environments.
-    const data = typeof string === 'string' ? textEncoder.encode(string) : string
-    const hash = await subtleCrypto.digest('MD5', data)
-    return Array.from(new Uint8Array(hash))
-      .map((b) => b.toString(16).padStart(2, '0'))
-      .join('')
-  }
-}
-
-// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html
-async function postgresMd5PasswordHash(user, password, salt) {
-  const inner = await md5(password + user)
-  const outer = await md5(Buffer.concat([Buffer.from(inner), salt]))
-  return 'md5' + outer
-}
-
-/**
- * Create a SHA-256 digest of the given data
- * @param {Buffer} data
- */
-async function sha256(text) {
-  return await subtleCrypto.digest('SHA-256', text)
-}
-
-async function hashByName(hashName, text) {
-  return await subtleCrypto.digest(hashName, text)
-}
-
-/**
- * Sign the message with the given key
- * @param {ArrayBuffer} keyBuffer
- * @param {string} msg
- */
-async function hmacSha256(keyBuffer, msg) {
-  const key = await subtleCrypto.importKey('raw', keyBuffer, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])
-  return await subtleCrypto.sign('HMAC', key, textEncoder.encode(msg))
-}
-
-/**
- * Derive a key from the password and salt
- * @param {string} password
- * @param {Uint8Array} salt
- * @param {number} iterations
- */
-async function deriveKey(password, salt, iterations) {
-  const key = await subtleCrypto.importKey('raw', textEncoder.encode(password), 'PBKDF2', false, ['deriveBits'])
-  const params = { name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations: iterations }
-  return await subtleCrypto.deriveBits(params, key, 32 * 8, ['deriveBits'])
-}
Index: ckend/node_modules/pg/lib/crypto/utils.js
===================================================================
--- backend/node_modules/pg/lib/crypto/utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-'use strict'
-
-const useLegacyCrypto = parseInt(process.versions && process.versions.node && process.versions.node.split('.')[0]) < 15
-if (useLegacyCrypto) {
-  // We are on an old version of Node.js that requires legacy crypto utilities.
-  module.exports = require('./utils-legacy')
-} else {
-  module.exports = require('./utils-webcrypto')
-}
Index: ckend/node_modules/pg/lib/defaults.js
===================================================================
--- backend/node_modules/pg/lib/defaults.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-'use strict'
-
-module.exports = {
-  // database host. defaults to localhost
-  host: 'localhost',
-
-  // database user's name
-  user: process.platform === 'win32' ? process.env.USERNAME : process.env.USER,
-
-  // name of database to connect
-  database: undefined,
-
-  // database user's password
-  password: null,
-
-  // a Postgres connection string to be used instead of setting individual connection items
-  // NOTE:  Setting this value will cause it to override any other value (such as database or user) defined
-  // in the defaults object.
-  connectionString: undefined,
-
-  // database port
-  port: 5432,
-
-  // number of rows to return at a time from a prepared statement's
-  // portal. 0 will return all rows at once
-  rows: 0,
-
-  // binary result mode
-  binary: false,
-
-  // Connection pool options - see https://github.com/brianc/node-pg-pool
-
-  // number of connections to use in connection pool
-  // 0 will disable connection pooling
-  max: 10,
-
-  // max milliseconds a client can go unused before it is removed
-  // from the pool and destroyed
-  idleTimeoutMillis: 30000,
-
-  client_encoding: '',
-
-  ssl: false,
-
-  application_name: undefined,
-
-  fallback_application_name: undefined,
-
-  options: undefined,
-
-  parseInputDatesAsUTC: false,
-
-  // max milliseconds any query using this connection will execute for before timing out in error.
-  // false=unlimited
-  statement_timeout: false,
-
-  // Abort any statement that waits longer than the specified duration in milliseconds while attempting to acquire a lock.
-  // false=unlimited
-  lock_timeout: false,
-
-  // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds
-  // false=unlimited
-  idle_in_transaction_session_timeout: false,
-
-  // max milliseconds to wait for query to complete (client side)
-  query_timeout: false,
-
-  connect_timeout: 0,
-
-  keepalives: 1,
-
-  keepalives_idle: 0,
-}
-
-const pgTypes = require('pg-types')
-// save default parsers
-const parseBigInteger = pgTypes.getTypeParser(20, 'text')
-const parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text')
-
-// parse int8 so you can get your count values as actual numbers
-module.exports.__defineSetter__('parseInt8', function (val) {
-  pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger)
-  pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray)
-})
Index: ckend/node_modules/pg/lib/index.js
===================================================================
--- backend/node_modules/pg/lib/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-'use strict'
-
-const Client = require('./client')
-const defaults = require('./defaults')
-const Connection = require('./connection')
-const Result = require('./result')
-const utils = require('./utils')
-const Pool = require('pg-pool')
-const TypeOverrides = require('./type-overrides')
-const { DatabaseError } = require('pg-protocol')
-const { escapeIdentifier, escapeLiteral } = require('./utils')
-
-const poolFactory = (Client) => {
-  return class BoundPool extends Pool {
-    constructor(options) {
-      super(options, Client)
-    }
-  }
-}
-
-const PG = function (clientConstructor) {
-  this.defaults = defaults
-  this.Client = clientConstructor
-  this.Query = this.Client.Query
-  this.Pool = poolFactory(this.Client)
-  this._pools = []
-  this.Connection = Connection
-  this.types = require('pg-types')
-  this.DatabaseError = DatabaseError
-  this.TypeOverrides = TypeOverrides
-  this.escapeIdentifier = escapeIdentifier
-  this.escapeLiteral = escapeLiteral
-  this.Result = Result
-  this.utils = utils
-}
-
-if (typeof process.env.NODE_PG_FORCE_NATIVE !== 'undefined') {
-  module.exports = new PG(require('./native'))
-} else {
-  module.exports = new PG(Client)
-
-  // lazy require native module...the native module may not have installed
-  Object.defineProperty(module.exports, 'native', {
-    configurable: true,
-    enumerable: false,
-    get() {
-      let native = null
-      try {
-        native = new PG(require('./native'))
-      } catch (err) {
-        if (err.code !== 'MODULE_NOT_FOUND') {
-          throw err
-        }
-      }
-
-      // overwrite module.exports.native so that getter is never called again
-      Object.defineProperty(module.exports, 'native', {
-        value: native,
-      })
-
-      return native
-    },
-  })
-}
Index: ckend/node_modules/pg/lib/native/client.js
===================================================================
--- backend/node_modules/pg/lib/native/client.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,308 +1,0 @@
-'use strict'
-
-// eslint-disable-next-line
-var Native
-// eslint-disable-next-line no-useless-catch
-try {
-  // Wrap this `require()` in a try-catch to avoid upstream bundlers from complaining that this might not be available since it is an optional import
-  Native = require('pg-native')
-} catch (e) {
-  throw e
-}
-const TypeOverrides = require('../type-overrides')
-const EventEmitter = require('events').EventEmitter
-const util = require('util')
-const ConnectionParameters = require('../connection-parameters')
-
-const NativeQuery = require('./query')
-
-const Client = (module.exports = function (config) {
-  EventEmitter.call(this)
-  config = config || {}
-
-  this._Promise = config.Promise || global.Promise
-  this._types = new TypeOverrides(config.types)
-
-  this.native = new Native({
-    types: this._types,
-  })
-
-  this._queryQueue = []
-  this._ending = false
-  this._connecting = false
-  this._connected = false
-  this._queryable = true
-
-  // keep these on the object for legacy reasons
-  // for the time being. TODO: deprecate all this jazz
-  const cp = (this.connectionParameters = new ConnectionParameters(config))
-  if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString
-  this.user = cp.user
-
-  // "hiding" the password so it doesn't show up in stack traces
-  // or if the client is console.logged
-  Object.defineProperty(this, 'password', {
-    configurable: true,
-    enumerable: false,
-    writable: true,
-    value: cp.password,
-  })
-  this.database = cp.database
-  this.host = cp.host
-  this.port = cp.port
-
-  // a hash to hold named queries
-  this.namedQueries = {}
-})
-
-Client.Query = NativeQuery
-
-util.inherits(Client, EventEmitter)
-
-Client.prototype._errorAllQueries = function (err) {
-  const enqueueError = (query) => {
-    process.nextTick(() => {
-      query.native = this.native
-      query.handleError(err)
-    })
-  }
-
-  if (this._hasActiveQuery()) {
-    enqueueError(this._activeQuery)
-    this._activeQuery = null
-  }
-
-  this._queryQueue.forEach(enqueueError)
-  this._queryQueue.length = 0
-}
-
-// connect to the backend
-// pass an optional callback to be called once connected
-// or with an error if there was a connection error
-Client.prototype._connect = function (cb) {
-  const self = this
-
-  if (this._connecting) {
-    process.nextTick(() => cb(new Error('Client has already been connected. You cannot reuse a client.')))
-    return
-  }
-
-  this._connecting = true
-
-  this.connectionParameters.getLibpqConnectionString(function (err, conString) {
-    if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString
-    if (err) return cb(err)
-    self.native.connect(conString, function (err) {
-      if (err) {
-        self.native.end()
-        return cb(err)
-      }
-
-      // set internal states to connected
-      self._connected = true
-
-      // handle connection errors from the native layer
-      self.native.on('error', function (err) {
-        self._queryable = false
-        self._errorAllQueries(err)
-        self.emit('error', err)
-      })
-
-      self.native.on('notification', function (msg) {
-        self.emit('notification', {
-          channel: msg.relname,
-          payload: msg.extra,
-        })
-      })
-
-      // signal we are connected now
-      self.emit('connect')
-      self._pulseQueryQueue(true)
-
-      cb()
-    })
-  })
-}
-
-Client.prototype.connect = function (callback) {
-  if (callback) {
-    this._connect(callback)
-    return
-  }
-
-  return new this._Promise((resolve, reject) => {
-    this._connect((error) => {
-      if (error) {
-        reject(error)
-      } else {
-        resolve()
-      }
-    })
-  })
-}
-
-// send a query to the server
-// this method is highly overloaded to take
-// 1) string query, optional array of parameters, optional function callback
-// 2) object query with {
-//    string query
-//    optional array values,
-//    optional function callback instead of as a separate parameter
-//    optional string name to name & cache the query plan
-//    optional string rowMode = 'array' for an array of results
-//  }
-Client.prototype.query = function (config, values, callback) {
-  let query
-  let result
-  let readTimeout
-  let readTimeoutTimer
-  let queryCallback
-
-  if (config === null || config === undefined) {
-    throw new TypeError('Client was passed a null or undefined query')
-  } else if (typeof config.submit === 'function') {
-    readTimeout = config.query_timeout || this.connectionParameters.query_timeout
-    result = query = config
-    // accept query(new Query(...), (err, res) => { }) style
-    if (typeof values === 'function') {
-      config.callback = values
-    }
-  } else {
-    readTimeout = config.query_timeout || this.connectionParameters.query_timeout
-    query = new NativeQuery(config, values, callback)
-    if (!query.callback) {
-      let resolveOut, rejectOut
-      result = new this._Promise((resolve, reject) => {
-        resolveOut = resolve
-        rejectOut = reject
-      }).catch((err) => {
-        Error.captureStackTrace(err)
-        throw err
-      })
-      query.callback = (err, res) => (err ? rejectOut(err) : resolveOut(res))
-    }
-  }
-
-  if (readTimeout) {
-    queryCallback = query.callback
-
-    readTimeoutTimer = setTimeout(() => {
-      const error = new Error('Query read timeout')
-
-      process.nextTick(() => {
-        query.handleError(error, this.connection)
-      })
-
-      queryCallback(error)
-
-      // we already returned an error,
-      // just do nothing if query completes
-      query.callback = () => {}
-
-      // Remove from queue
-      const index = this._queryQueue.indexOf(query)
-      if (index > -1) {
-        this._queryQueue.splice(index, 1)
-      }
-
-      this._pulseQueryQueue()
-    }, readTimeout)
-
-    query.callback = (err, res) => {
-      clearTimeout(readTimeoutTimer)
-      queryCallback(err, res)
-    }
-  }
-
-  if (!this._queryable) {
-    query.native = this.native
-    process.nextTick(() => {
-      query.handleError(new Error('Client has encountered a connection error and is not queryable'))
-    })
-    return result
-  }
-
-  if (this._ending) {
-    query.native = this.native
-    process.nextTick(() => {
-      query.handleError(new Error('Client was closed and is not queryable'))
-    })
-    return result
-  }
-
-  this._queryQueue.push(query)
-  this._pulseQueryQueue()
-  return result
-}
-
-// disconnect from the backend server
-Client.prototype.end = function (cb) {
-  const self = this
-
-  this._ending = true
-
-  if (!this._connected) {
-    this.once('connect', this.end.bind(this, cb))
-  }
-  let result
-  if (!cb) {
-    result = new this._Promise(function (resolve, reject) {
-      cb = (err) => (err ? reject(err) : resolve())
-    })
-  }
-  this.native.end(function () {
-    self._errorAllQueries(new Error('Connection terminated'))
-
-    process.nextTick(() => {
-      self.emit('end')
-      if (cb) cb()
-    })
-  })
-  return result
-}
-
-Client.prototype._hasActiveQuery = function () {
-  return this._activeQuery && this._activeQuery.state !== 'error' && this._activeQuery.state !== 'end'
-}
-
-Client.prototype._pulseQueryQueue = function (initialConnection) {
-  if (!this._connected) {
-    return
-  }
-  if (this._hasActiveQuery()) {
-    return
-  }
-  const query = this._queryQueue.shift()
-  if (!query) {
-    if (!initialConnection) {
-      this.emit('drain')
-    }
-    return
-  }
-  this._activeQuery = query
-  query.submit(this)
-  const self = this
-  query.once('_done', function () {
-    self._pulseQueryQueue()
-  })
-}
-
-// attempt to cancel an in-progress query
-Client.prototype.cancel = function (query) {
-  if (this._activeQuery === query) {
-    this.native.cancel(function () {})
-  } else if (this._queryQueue.indexOf(query) !== -1) {
-    this._queryQueue.splice(this._queryQueue.indexOf(query), 1)
-  }
-}
-
-Client.prototype.ref = function () {}
-Client.prototype.unref = function () {}
-
-Client.prototype.setTypeParser = function (oid, format, parseFn) {
-  return this._types.setTypeParser(oid, format, parseFn)
-}
-
-Client.prototype.getTypeParser = function (oid, format) {
-  return this._types.getTypeParser(oid, format)
-}
Index: ckend/node_modules/pg/lib/native/index.js
===================================================================
--- backend/node_modules/pg/lib/native/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-'use strict'
-module.exports = require('./client')
Index: ckend/node_modules/pg/lib/native/query.js
===================================================================
--- backend/node_modules/pg/lib/native/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,165 +1,0 @@
-'use strict'
-
-const EventEmitter = require('events').EventEmitter
-const util = require('util')
-const utils = require('../utils')
-
-const NativeQuery = (module.exports = function (config, values, callback) {
-  EventEmitter.call(this)
-  config = utils.normalizeQueryConfig(config, values, callback)
-  this.text = config.text
-  this.values = config.values
-  this.name = config.name
-  this.queryMode = config.queryMode
-  this.callback = config.callback
-  this.state = 'new'
-  this._arrayMode = config.rowMode === 'array'
-
-  // if the 'row' event is listened for
-  // then emit them as they come in
-  // without setting singleRowMode to true
-  // this has almost no meaning because libpq
-  // reads all rows into memory befor returning any
-  this._emitRowEvents = false
-  this.on(
-    'newListener',
-    function (event) {
-      if (event === 'row') this._emitRowEvents = true
-    }.bind(this)
-  )
-})
-
-util.inherits(NativeQuery, EventEmitter)
-
-const errorFieldMap = {
-  sqlState: 'code',
-  statementPosition: 'position',
-  messagePrimary: 'message',
-  context: 'where',
-  schemaName: 'schema',
-  tableName: 'table',
-  columnName: 'column',
-  dataTypeName: 'dataType',
-  constraintName: 'constraint',
-  sourceFile: 'file',
-  sourceLine: 'line',
-  sourceFunction: 'routine',
-}
-
-NativeQuery.prototype.handleError = function (err) {
-  // copy pq error fields into the error object
-  const fields = this.native.pq.resultErrorFields()
-  if (fields) {
-    for (const key in fields) {
-      const normalizedFieldName = errorFieldMap[key] || key
-      err[normalizedFieldName] = fields[key]
-    }
-  }
-  if (this.callback) {
-    this.callback(err)
-  } else {
-    this.emit('error', err)
-  }
-  this.state = 'error'
-}
-
-NativeQuery.prototype.then = function (onSuccess, onFailure) {
-  return this._getPromise().then(onSuccess, onFailure)
-}
-
-NativeQuery.prototype.catch = function (callback) {
-  return this._getPromise().catch(callback)
-}
-
-NativeQuery.prototype._getPromise = function () {
-  if (this._promise) return this._promise
-  this._promise = new Promise(
-    function (resolve, reject) {
-      this._once('end', resolve)
-      this._once('error', reject)
-    }.bind(this)
-  )
-  return this._promise
-}
-
-NativeQuery.prototype.submit = function (client) {
-  this.state = 'running'
-  const self = this
-  this.native = client.native
-  client.native.arrayMode = this._arrayMode
-
-  let after = function (err, rows, results) {
-    client.native.arrayMode = false
-    setImmediate(function () {
-      self.emit('_done')
-    })
-
-    // handle possible query error
-    if (err) {
-      return self.handleError(err)
-    }
-
-    // emit row events for each row in the result
-    if (self._emitRowEvents) {
-      if (results.length > 1) {
-        rows.forEach((rowOfRows, i) => {
-          rowOfRows.forEach((row) => {
-            self.emit('row', row, results[i])
-          })
-        })
-      } else {
-        rows.forEach(function (row) {
-          self.emit('row', row, results)
-        })
-      }
-    }
-
-    // handle successful result
-    self.state = 'end'
-    self.emit('end', results)
-    if (self.callback) {
-      self.callback(null, results)
-    }
-  }
-
-  if (process.domain) {
-    after = process.domain.bind(after)
-  }
-
-  // named query
-  if (this.name) {
-    if (this.name.length > 63) {
-      console.error('Warning! Postgres only supports 63 characters for query names.')
-      console.error('You supplied %s (%s)', this.name, this.name.length)
-      console.error('This can cause conflicts and silent errors executing queries')
-    }
-    const values = (this.values || []).map(utils.prepareValue)
-
-    // check if the client has already executed this named query
-    // if so...just execute it again - skip the planning phase
-    if (client.namedQueries[this.name]) {
-      if (this.text && client.namedQueries[this.name] !== this.text) {
-        const err = new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)
-        return after(err)
-      }
-      return client.native.execute(this.name, values, after)
-    }
-    // plan the named query the first time, then execute it
-    return client.native.prepare(this.name, this.text, values.length, function (err) {
-      if (err) return after(err)
-      client.namedQueries[self.name] = self.text
-      return self.native.execute(self.name, values, after)
-    })
-  } else if (this.values) {
-    if (!Array.isArray(this.values)) {
-      const err = new Error('Query values must be an array')
-      return after(err)
-    }
-    const vals = this.values.map(utils.prepareValue)
-    client.native.query(this.text, vals, after)
-  } else if (this.queryMode === 'extended') {
-    client.native.query(this.text, [], after)
-  } else {
-    client.native.query(this.text, after)
-  }
-}
Index: ckend/node_modules/pg/lib/query.js
===================================================================
--- backend/node_modules/pg/lib/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,252 +1,0 @@
-'use strict'
-
-const { EventEmitter } = require('events')
-
-const Result = require('./result')
-const utils = require('./utils')
-
-class Query extends EventEmitter {
-  constructor(config, values, callback) {
-    super()
-
-    config = utils.normalizeQueryConfig(config, values, callback)
-
-    this.text = config.text
-    this.values = config.values
-    this.rows = config.rows
-    this.types = config.types
-    this.name = config.name
-    this.queryMode = config.queryMode
-    this.binary = config.binary
-    // use unique portal name each time
-    this.portal = config.portal || ''
-    this.callback = config.callback
-    this._rowMode = config.rowMode
-    if (process.domain && config.callback) {
-      this.callback = process.domain.bind(config.callback)
-    }
-    this._result = new Result(this._rowMode, this.types)
-
-    // potential for multiple results
-    this._results = this._result
-    this._canceledDueToError = false
-  }
-
-  requiresPreparation() {
-    if (this.queryMode === 'extended') {
-      return true
-    }
-
-    // named queries must always be prepared
-    if (this.name) {
-      return true
-    }
-    // always prepare if there are max number of rows expected per
-    // portal execution
-    if (this.rows) {
-      return true
-    }
-    // don't prepare empty text queries
-    if (!this.text) {
-      return false
-    }
-    // prepare if there are values
-    if (!this.values) {
-      return false
-    }
-    return this.values.length > 0
-  }
-
-  _checkForMultirow() {
-    // if we already have a result with a command property
-    // then we've already executed one query in a multi-statement simple query
-    // turn our results into an array of results
-    if (this._result.command) {
-      if (!Array.isArray(this._results)) {
-        this._results = [this._result]
-      }
-      this._result = new Result(this._rowMode, this._result._types)
-      this._results.push(this._result)
-    }
-  }
-
-  // associates row metadata from the supplied
-  // message with this query object
-  // metadata used when parsing row results
-  handleRowDescription(msg) {
-    this._checkForMultirow()
-    this._result.addFields(msg.fields)
-    this._accumulateRows = this.callback || !this.listeners('row').length
-  }
-
-  handleDataRow(msg) {
-    let row
-
-    if (this._canceledDueToError) {
-      return
-    }
-
-    try {
-      row = this._result.parseRow(msg.fields)
-    } catch (err) {
-      this._canceledDueToError = err
-      return
-    }
-
-    this.emit('row', row, this._result)
-    if (this._accumulateRows) {
-      this._result.addRow(row)
-    }
-  }
-
-  handleCommandComplete(msg, connection) {
-    this._checkForMultirow()
-    this._result.addCommandComplete(msg)
-    // need to sync after each command complete of a prepared statement
-    // if we were using a row count which results in multiple calls to _getRows
-    if (this.rows) {
-      connection.sync()
-    }
-  }
-
-  // if a named prepared statement is created with empty query text
-  // the backend will send an emptyQuery message but *not* a command complete message
-  // since we pipeline sync immediately after execute we don't need to do anything here
-  // unless we have rows specified, in which case we did not pipeline the intial sync call
-  handleEmptyQuery(connection) {
-    if (this.rows) {
-      connection.sync()
-    }
-  }
-
-  handleError(err, connection) {
-    // need to sync after error during a prepared statement
-    if (this._canceledDueToError) {
-      err = this._canceledDueToError
-      this._canceledDueToError = false
-    }
-    // if callback supplied do not emit error event as uncaught error
-    // events will bubble up to node process
-    if (this.callback) {
-      return this.callback(err)
-    }
-    this.emit('error', err)
-  }
-
-  handleReadyForQuery(con) {
-    if (this._canceledDueToError) {
-      return this.handleError(this._canceledDueToError, con)
-    }
-    if (this.callback) {
-      try {
-        this.callback(null, this._results)
-      } catch (err) {
-        process.nextTick(() => {
-          throw err
-        })
-      }
-    }
-    this.emit('end', this._results)
-  }
-
-  submit(connection) {
-    if (typeof this.text !== 'string' && typeof this.name !== 'string') {
-      return new Error('A query must have either text or a name. Supplying neither is unsupported.')
-    }
-    const previous = connection.parsedStatements[this.name]
-    if (this.text && previous && this.text !== previous) {
-      return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`)
-    }
-    if (this.values && !Array.isArray(this.values)) {
-      return new Error('Query values must be an array')
-    }
-    if (this.requiresPreparation()) {
-      // If we're using the extended query protocol we fire off several separate commands
-      // to the backend. On some versions of node & some operating system versions
-      // the network stack writes each message separately instead of buffering them together
-      // causing the client & network to send more slowly. Corking & uncorking the stream
-      // allows node to buffer up the messages internally before sending them all off at once.
-      // note: we're checking for existence of cork/uncork because some versions of streams
-      // might not have this (cloudflare?)
-      connection.stream.cork && connection.stream.cork()
-      try {
-        this.prepare(connection)
-      } finally {
-        // while unlikely for this.prepare to throw, if it does & we don't uncork this stream
-        // this client becomes unresponsive, so put in finally block "just in case"
-        connection.stream.uncork && connection.stream.uncork()
-      }
-    } else {
-      connection.query(this.text)
-    }
-    return null
-  }
-
-  hasBeenParsed(connection) {
-    return this.name && connection.parsedStatements[this.name]
-  }
-
-  handlePortalSuspended(connection) {
-    this._getRows(connection, this.rows)
-  }
-
-  _getRows(connection, rows) {
-    connection.execute({
-      portal: this.portal,
-      rows: rows,
-    })
-    // if we're not reading pages of rows send the sync command
-    // to indicate the pipeline is finished
-    if (!rows) {
-      connection.sync()
-    } else {
-      // otherwise flush the call out to read more rows
-      connection.flush()
-    }
-  }
-
-  // http://developer.postgresql.org/pgdocs/postgres/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY
-  prepare(connection) {
-    // TODO refactor this poor encapsulation
-    if (!this.hasBeenParsed(connection)) {
-      connection.parse({
-        text: this.text,
-        name: this.name,
-        types: this.types,
-      })
-    }
-
-    // because we're mapping user supplied values to
-    // postgres wire protocol compatible values it could
-    // throw an exception, so try/catch this section
-    try {
-      connection.bind({
-        portal: this.portal,
-        statement: this.name,
-        values: this.values,
-        binary: this.binary,
-        valueMapper: utils.prepareValue,
-      })
-    } catch (err) {
-      this.handleError(err, connection)
-      return
-    }
-
-    connection.describe({
-      type: 'P',
-      name: this.portal || '',
-    })
-
-    this._getRows(connection, this.rows)
-  }
-
-  handleCopyInResponse(connection) {
-    connection.sendCopyFail('No source stream defined')
-  }
-
-  handleCopyData(msg, connection) {
-    // noop
-  }
-}
-
-module.exports = Query
Index: ckend/node_modules/pg/lib/result.js
===================================================================
--- backend/node_modules/pg/lib/result.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,108 +1,0 @@
-'use strict'
-
-const types = require('pg-types')
-
-const matchRegexp = /^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/
-
-// result object returned from query
-// in the 'end' event and also
-// passed as second argument to provided callback
-class Result {
-  constructor(rowMode, types) {
-    this.command = null
-    this.rowCount = null
-    this.oid = null
-    this.rows = []
-    this.fields = []
-    this._parsers = undefined
-    this._types = types
-    this.RowCtor = null
-    this.rowAsArray = rowMode === 'array'
-    if (this.rowAsArray) {
-      this.parseRow = this._parseRowAsArray
-    }
-    this._prebuiltEmptyResultObject = null
-  }
-
-  // adds a command complete message
-  addCommandComplete(msg) {
-    let match
-    if (msg.text) {
-      // pure javascript
-      match = matchRegexp.exec(msg.text)
-    } else {
-      // native bindings
-      match = matchRegexp.exec(msg.command)
-    }
-    if (match) {
-      this.command = match[1]
-      if (match[3]) {
-        // COMMAND OID ROWS
-        this.oid = parseInt(match[2], 10)
-        this.rowCount = parseInt(match[3], 10)
-      } else if (match[2]) {
-        // COMMAND ROWS
-        this.rowCount = parseInt(match[2], 10)
-      }
-    }
-  }
-
-  _parseRowAsArray(rowData) {
-    const row = new Array(rowData.length)
-    for (let i = 0, len = rowData.length; i < len; i++) {
-      const rawValue = rowData[i]
-      if (rawValue !== null) {
-        row[i] = this._parsers[i](rawValue)
-      } else {
-        row[i] = null
-      }
-    }
-    return row
-  }
-
-  parseRow(rowData) {
-    const row = { ...this._prebuiltEmptyResultObject }
-    for (let i = 0, len = rowData.length; i < len; i++) {
-      const rawValue = rowData[i]
-      const field = this.fields[i].name
-      if (rawValue !== null) {
-        row[field] = this._parsers[i](rawValue)
-      } else {
-        row[field] = null
-      }
-    }
-    return row
-  }
-
-  addRow(row) {
-    this.rows.push(row)
-  }
-
-  addFields(fieldDescriptions) {
-    // clears field definitions
-    // multiple query statements in 1 action can result in multiple sets
-    // of rowDescriptions...eg: 'select NOW(); select 1::int;'
-    // you need to reset the fields
-    this.fields = fieldDescriptions
-    if (this.fields.length) {
-      this._parsers = new Array(fieldDescriptions.length)
-    }
-
-    const row = {}
-
-    for (let i = 0; i < fieldDescriptions.length; i++) {
-      const desc = fieldDescriptions[i]
-      row[desc.name] = null
-
-      if (this._types) {
-        this._parsers[i] = this._types.getTypeParser(desc.dataTypeID, desc.format || 'text')
-      } else {
-        this._parsers[i] = types.getTypeParser(desc.dataTypeID, desc.format || 'text')
-      }
-    }
-
-    this._prebuiltEmptyResultObject = { ...row }
-  }
-}
-
-module.exports = Result
Index: ckend/node_modules/pg/lib/stream.js
===================================================================
--- backend/node_modules/pg/lib/stream.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,83 +1,0 @@
-const { getStream, getSecureStream } = getStreamFuncs()
-
-module.exports = {
-  /**
-   * Get a socket stream compatible with the current runtime environment.
-   * @returns {Duplex}
-   */
-  getStream,
-  /**
-   * Get a TLS secured socket, compatible with the current environment,
-   * using the socket and other settings given in `options`.
-   * @returns {Duplex}
-   */
-  getSecureStream,
-}
-
-/**
- * The stream functions that work in Node.js
- */
-function getNodejsStreamFuncs() {
-  function getStream(ssl) {
-    const net = require('net')
-    return new net.Socket()
-  }
-
-  function getSecureStream(options) {
-    const tls = require('tls')
-    return tls.connect(options)
-  }
-  return {
-    getStream,
-    getSecureStream,
-  }
-}
-
-/**
- * The stream functions that work in Cloudflare Workers
- */
-function getCloudflareStreamFuncs() {
-  function getStream(ssl) {
-    const { CloudflareSocket } = require('pg-cloudflare')
-    return new CloudflareSocket(ssl)
-  }
-
-  function getSecureStream(options) {
-    options.socket.startTls(options)
-    return options.socket
-  }
-  return {
-    getStream,
-    getSecureStream,
-  }
-}
-
-/**
- * Are we running in a Cloudflare Worker?
- *
- * @returns true if the code is currently running inside a Cloudflare Worker.
- */
-function isCloudflareRuntime() {
-  // Since 2022-03-21 the `global_navigator` compatibility flag is on for Cloudflare Workers
-  // which means that `navigator.userAgent` will be defined.
-  // eslint-disable-next-line no-undef
-  if (typeof navigator === 'object' && navigator !== null && typeof navigator.userAgent === 'string') {
-    // eslint-disable-next-line no-undef
-    return navigator.userAgent === 'Cloudflare-Workers'
-  }
-  // In case `navigator` or `navigator.userAgent` is not defined then try a more sneaky approach
-  if (typeof Response === 'function') {
-    const resp = new Response(null, { cf: { thing: true } })
-    if (typeof resp.cf === 'object' && resp.cf !== null && resp.cf.thing) {
-      return true
-    }
-  }
-  return false
-}
-
-function getStreamFuncs() {
-  if (isCloudflareRuntime()) {
-    return getCloudflareStreamFuncs()
-  }
-  return getNodejsStreamFuncs()
-}
Index: ckend/node_modules/pg/lib/type-overrides.js
===================================================================
--- backend/node_modules/pg/lib/type-overrides.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-'use strict'
-
-const types = require('pg-types')
-
-function TypeOverrides(userTypes) {
-  this._types = userTypes || types
-  this.text = {}
-  this.binary = {}
-}
-
-TypeOverrides.prototype.getOverrides = function (format) {
-  switch (format) {
-    case 'text':
-      return this.text
-    case 'binary':
-      return this.binary
-    default:
-      return {}
-  }
-}
-
-TypeOverrides.prototype.setTypeParser = function (oid, format, parseFn) {
-  if (typeof format === 'function') {
-    parseFn = format
-    format = 'text'
-  }
-  this.getOverrides(format)[oid] = parseFn
-}
-
-TypeOverrides.prototype.getTypeParser = function (oid, format) {
-  format = format || 'text'
-  return this.getOverrides(format)[oid] || this._types.getTypeParser(oid, format)
-}
-
-module.exports = TypeOverrides
Index: ckend/node_modules/pg/lib/utils.js
===================================================================
--- backend/node_modules/pg/lib/utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,206 +1,0 @@
-'use strict'
-
-const defaults = require('./defaults')
-
-function escapeElement(elementRepresentation) {
-  const escaped = elementRepresentation.replace(/\\/g, '\\\\').replace(/"/g, '\\"')
-
-  return '"' + escaped + '"'
-}
-
-// convert a JS array to a postgres array literal
-// uses comma separator so won't work for types like box that use
-// a different array separator.
-function arrayString(val) {
-  let result = '{'
-  for (let i = 0; i < val.length; i++) {
-    if (i > 0) {
-      result = result + ','
-    }
-    if (val[i] === null || typeof val[i] === 'undefined') {
-      result = result + 'NULL'
-    } else if (Array.isArray(val[i])) {
-      result = result + arrayString(val[i])
-    } else if (ArrayBuffer.isView(val[i])) {
-      let item = val[i]
-      if (!(item instanceof Buffer)) {
-        const buf = Buffer.from(item.buffer, item.byteOffset, item.byteLength)
-        if (buf.length === item.byteLength) {
-          item = buf
-        } else {
-          item = buf.slice(item.byteOffset, item.byteOffset + item.byteLength)
-        }
-      }
-      result += '\\\\x' + item.toString('hex')
-    } else {
-      result += escapeElement(prepareValue(val[i]))
-    }
-  }
-  result = result + '}'
-  return result
-}
-
-// converts values from javascript types
-// to their 'raw' counterparts for use as a postgres parameter
-// note: you can override this function to provide your own conversion mechanism
-// for complex types, etc...
-const prepareValue = function (val, seen) {
-  // null and undefined are both null for postgres
-  if (val == null) {
-    return null
-  }
-  if (typeof val === 'object') {
-    if (val instanceof Buffer) {
-      return val
-    }
-    if (ArrayBuffer.isView(val)) {
-      const buf = Buffer.from(val.buffer, val.byteOffset, val.byteLength)
-      if (buf.length === val.byteLength) {
-        return buf
-      }
-      return buf.slice(val.byteOffset, val.byteOffset + val.byteLength) // Node.js v4 does not support those Buffer.from params
-    }
-    if (val instanceof Date) {
-      if (defaults.parseInputDatesAsUTC) {
-        return dateToStringUTC(val)
-      } else {
-        return dateToString(val)
-      }
-    }
-    if (Array.isArray(val)) {
-      return arrayString(val)
-    }
-
-    return prepareObject(val, seen)
-  }
-  return val.toString()
-}
-
-function prepareObject(val, seen) {
-  if (val && typeof val.toPostgres === 'function') {
-    seen = seen || []
-    if (seen.indexOf(val) !== -1) {
-      throw new Error('circular reference detected while preparing "' + val + '" for query')
-    }
-    seen.push(val)
-
-    return prepareValue(val.toPostgres(prepareValue), seen)
-  }
-  return JSON.stringify(val)
-}
-
-function dateToString(date) {
-  let offset = -date.getTimezoneOffset()
-
-  let year = date.getFullYear()
-  const isBCYear = year < 1
-  if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation
-
-  let ret =
-    String(year).padStart(4, '0') +
-    '-' +
-    String(date.getMonth() + 1).padStart(2, '0') +
-    '-' +
-    String(date.getDate()).padStart(2, '0') +
-    'T' +
-    String(date.getHours()).padStart(2, '0') +
-    ':' +
-    String(date.getMinutes()).padStart(2, '0') +
-    ':' +
-    String(date.getSeconds()).padStart(2, '0') +
-    '.' +
-    String(date.getMilliseconds()).padStart(3, '0')
-
-  if (offset < 0) {
-    ret += '-'
-    offset *= -1
-  } else {
-    ret += '+'
-  }
-
-  ret += String(Math.floor(offset / 60)).padStart(2, '0') + ':' + String(offset % 60).padStart(2, '0')
-  if (isBCYear) ret += ' BC'
-  return ret
-}
-
-function dateToStringUTC(date) {
-  let year = date.getUTCFullYear()
-  const isBCYear = year < 1
-  if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation
-
-  let ret =
-    String(year).padStart(4, '0') +
-    '-' +
-    String(date.getUTCMonth() + 1).padStart(2, '0') +
-    '-' +
-    String(date.getUTCDate()).padStart(2, '0') +
-    'T' +
-    String(date.getUTCHours()).padStart(2, '0') +
-    ':' +
-    String(date.getUTCMinutes()).padStart(2, '0') +
-    ':' +
-    String(date.getUTCSeconds()).padStart(2, '0') +
-    '.' +
-    String(date.getUTCMilliseconds()).padStart(3, '0')
-
-  ret += '+00:00'
-  if (isBCYear) ret += ' BC'
-  return ret
-}
-
-function normalizeQueryConfig(config, values, callback) {
-  // can take in strings or config objects
-  config = typeof config === 'string' ? { text: config } : config
-  if (values) {
-    if (typeof values === 'function') {
-      config.callback = values
-    } else {
-      config.values = values
-    }
-  }
-  if (callback) {
-    config.callback = callback
-  }
-  return config
-}
-
-// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c
-const escapeIdentifier = function (str) {
-  return '"' + str.replace(/"/g, '""') + '"'
-}
-
-const escapeLiteral = function (str) {
-  let hasBackslash = false
-  let escaped = "'"
-
-  for (let i = 0; i < str.length; i++) {
-    const c = str[i]
-    if (c === "'") {
-      escaped += c + c
-    } else if (c === '\\') {
-      escaped += c + c
-      hasBackslash = true
-    } else {
-      escaped += c
-    }
-  }
-
-  escaped += "'"
-
-  if (hasBackslash === true) {
-    escaped = ' E' + escaped
-  }
-
-  return escaped
-}
-
-module.exports = {
-  prepareValue: function prepareValueWrapper(value) {
-    // this ensures that extra arguments do not get passed into prepareValue
-    // by accident, eg: from calling values.map(utils.prepareValue)
-    return prepareValue(value)
-  },
-  normalizeQueryConfig,
-  escapeIdentifier,
-  escapeLiteral,
-}
Index: ckend/node_modules/pg/package.json
===================================================================
--- backend/node_modules/pg/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-{
-  "name": "pg",
-  "version": "8.16.0",
-  "description": "PostgreSQL client - pure javascript & libpq with the same API",
-  "keywords": [
-    "database",
-    "libpq",
-    "pg",
-    "postgre",
-    "postgres",
-    "postgresql",
-    "rdbms"
-  ],
-  "homepage": "https://github.com/brianc/node-postgres",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/brianc/node-postgres.git",
-    "directory": "packages/pg"
-  },
-  "author": "Brian Carlson <brian.m.carlson@gmail.com>",
-  "main": "./lib",
-  "exports": {
-    ".": {
-      "import": "./esm/index.mjs",
-      "require": "./lib/index.js",
-      "default": "./lib/index.js"
-    },
-    "./lib/*": {
-      "import": "./lib/*",
-      "require": "./lib/*",
-      "default": "./lib/*"
-    }
-  },
-  "dependencies": {
-    "pg-connection-string": "^2.9.0",
-    "pg-pool": "^3.10.0",
-    "pg-protocol": "^1.10.0",
-    "pg-types": "2.2.0",
-    "pgpass": "1.0.5"
-  },
-  "devDependencies": {
-    "@cloudflare/vitest-pool-workers": "0.8.23",
-    "@cloudflare/workers-types": "^4.20230404.0",
-    "async": "2.6.4",
-    "bluebird": "3.7.2",
-    "co": "4.6.0",
-    "pg-copy-streams": "0.3.0",
-    "typescript": "^4.0.3",
-    "vitest": "~3.0.9",
-    "wrangler": "^3.x"
-  },
-  "optionalDependencies": {
-    "pg-cloudflare": "^1.2.5"
-  },
-  "peerDependencies": {
-    "pg-native": ">=3.0.1"
-  },
-  "peerDependenciesMeta": {
-    "pg-native": {
-      "optional": true
-    }
-  },
-  "scripts": {
-    "test": "make test-all"
-  },
-  "files": [
-    "lib",
-    "esm",
-    "SPONSORS.md"
-  ],
-  "license": "MIT",
-  "engines": {
-    "node": ">= 8.0.0"
-  },
-  "gitHead": "abff18d6f918c975e8b3dfebc0de3b811ae64bcb"
-}
Index: ckend/node_modules/pgpass/README.md
===================================================================
--- backend/node_modules/pgpass/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-# pgpass
-
-[![Build Status](https://github.com/hoegaarden/pgpass/workflows/CI/badge.svg?branch=master)](https://github.com/hoegaarden/pgpass/actions?query=workflow%3ACI+branch%3Amaster)
-
-## Install
-
-```sh
-npm install pgpass
-```
-
-## Usage
-```js
-var pgPass = require('pgpass');
-
-var connInfo = {
-  'host' : 'pgserver' ,
-  'user' : 'the_user_name' ,
-};
-
-pgPass(connInfo, function(pass){
-  conn_info.password = pass;
-  // connect to postgresql server
-});
-```
-
-## Description
-
-This module tries to read the `~/.pgpass` file (or the equivalent for windows systems). If the environment variable `PGPASSFILE` is set, this file is used instead. If everything goes right, the password from said file is passed to the callback; if the password cannot be read `undefined` is passed to the callback.
-
-Cases where `undefined` is returned:
-
-- the environment variable `PGPASSWORD` is set
-- the file cannot be read (wrong permissions, no such file, ...)
-- for non windows systems: the file is write-/readable by the group or by other users
-- there is no matching line for the given connection info
-
-There should be no need to use this module directly; it is already included in `node-postgres`.
-
-## Configuration
-
-The module reads the environment variable `PGPASS_NO_DEESCAPE` to decide if the the read tokens from the password file should be de-escaped or not. Default is to do de-escaping. For further information on this see [this commit](https://github.com/postgres/postgres/commit/8d15e3ec4fcb735875a8a70a09ec0c62153c3329).
-
-
-## Tests
-
-There are tests in `./test/`; including linting and coverage testing. Running `npm test` runs:
-
-- `jshint`
-- `mocha` tests
-- `jscoverage` and `mocha -R html-cov`
-
-You can see the coverage report in `coverage.html`.
-
-
-## Development, Patches, Bugs, ...
-
-If you find Bugs or have improvements, please feel free to open a issue on GitHub. If you provide a pull request, I'm more than happy to merge them, just make sure to add tests for your changes.
-
-## Links
-
-- https://github.com/hoegaarden/node-pgpass
-- http://www.postgresql.org/docs/current/static/libpq-pgpass.html
-- https://wiki.postgresql.org/wiki/Pgpass
-- https://github.com/postgres/postgres/blob/master/src/interfaces/libpq/fe-connect.c
-
-## License
-
-Copyright (c) 2013-2016 Hannes Hörl
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/pgpass/lib/helper.js
===================================================================
--- backend/node_modules/pgpass/lib/helper.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,233 +1,0 @@
-'use strict';
-
-var path = require('path')
-  , Stream = require('stream').Stream
-  , split = require('split2')
-  , util = require('util')
-  , defaultPort = 5432
-  , isWin = (process.platform === 'win32')
-  , warnStream = process.stderr
-;
-
-
-var S_IRWXG = 56     //    00070(8)
-  , S_IRWXO = 7      //    00007(8)
-  , S_IFMT  = 61440  // 00170000(8)
-  , S_IFREG = 32768  //  0100000(8)
-;
-function isRegFile(mode) {
-    return ((mode & S_IFMT) == S_IFREG);
-}
-
-var fieldNames = [ 'host', 'port', 'database', 'user', 'password' ];
-var nrOfFields = fieldNames.length;
-var passKey = fieldNames[ nrOfFields -1 ];
-
-
-function warn() {
-    var isWritable = (
-        warnStream instanceof Stream &&
-          true === warnStream.writable
-    );
-
-    if (isWritable) {
-        var args = Array.prototype.slice.call(arguments).concat("\n");
-        warnStream.write( util.format.apply(util, args) );
-    }
-}
-
-
-Object.defineProperty(module.exports, 'isWin', {
-    get : function() {
-        return isWin;
-    } ,
-    set : function(val) {
-        isWin = val;
-    }
-});
-
-
-module.exports.warnTo = function(stream) {
-    var old = warnStream;
-    warnStream = stream;
-    return old;
-};
-
-module.exports.getFileName = function(rawEnv){
-    var env = rawEnv || process.env;
-    var file = env.PGPASSFILE || (
-        isWin ?
-          path.join( env.APPDATA || './' , 'postgresql', 'pgpass.conf' ) :
-          path.join( env.HOME || './', '.pgpass' )
-    );
-    return file;
-};
-
-module.exports.usePgPass = function(stats, fname) {
-    if (Object.prototype.hasOwnProperty.call(process.env, 'PGPASSWORD')) {
-        return false;
-    }
-
-    if (isWin) {
-        return true;
-    }
-
-    fname = fname || '<unkn>';
-
-    if (! isRegFile(stats.mode)) {
-        warn('WARNING: password file "%s" is not a plain file', fname);
-        return false;
-    }
-
-    if (stats.mode & (S_IRWXG | S_IRWXO)) {
-        /* If password file is insecure, alert the user and ignore it. */
-        warn('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less', fname);
-        return false;
-    }
-
-    return true;
-};
-
-
-var matcher = module.exports.match = function(connInfo, entry) {
-    return fieldNames.slice(0, -1).reduce(function(prev, field, idx){
-        if (idx == 1) {
-            // the port
-            if ( Number( connInfo[field] || defaultPort ) === Number( entry[field] ) ) {
-                return prev && true;
-            }
-        }
-        return prev && (
-            entry[field] === '*' ||
-              entry[field] === connInfo[field]
-        );
-    }, true);
-};
-
-
-module.exports.getPassword = function(connInfo, stream, cb) {
-    var pass;
-    var lineStream = stream.pipe(split());
-
-    function onLine(line) {
-        var entry = parseLine(line);
-        if (entry && isValidEntry(entry) && matcher(connInfo, entry)) {
-            pass = entry[passKey];
-            lineStream.end(); // -> calls onEnd(), but pass is set now
-        }
-    }
-
-    var onEnd = function() {
-        stream.destroy();
-        cb(pass);
-    };
-
-    var onErr = function(err) {
-        stream.destroy();
-        warn('WARNING: error on reading file: %s', err);
-        cb(undefined);
-    };
-
-    stream.on('error', onErr);
-    lineStream
-        .on('data', onLine)
-        .on('end', onEnd)
-        .on('error', onErr)
-    ;
-
-};
-
-
-var parseLine = module.exports.parseLine = function(line) {
-    if (line.length < 11 || line.match(/^\s+#/)) {
-        return null;
-    }
-
-    var curChar = '';
-    var prevChar = '';
-    var fieldIdx = 0;
-    var startIdx = 0;
-    var endIdx = 0;
-    var obj = {};
-    var isLastField = false;
-    var addToObj = function(idx, i0, i1) {
-        var field = line.substring(i0, i1);
-
-        if (! Object.hasOwnProperty.call(process.env, 'PGPASS_NO_DEESCAPE')) {
-            field = field.replace(/\\([:\\])/g, '$1');
-        }
-
-        obj[ fieldNames[idx] ] = field;
-    };
-
-    for (var i = 0 ; i < line.length-1 ; i += 1) {
-        curChar = line.charAt(i+1);
-        prevChar = line.charAt(i);
-
-        isLastField = (fieldIdx == nrOfFields-1);
-
-        if (isLastField) {
-            addToObj(fieldIdx, startIdx);
-            break;
-        }
-
-        if (i >= 0 && curChar == ':' && prevChar !== '\\') {
-            addToObj(fieldIdx, startIdx, i+1);
-
-            startIdx = i+2;
-            fieldIdx += 1;
-        }
-    }
-
-    obj = ( Object.keys(obj).length === nrOfFields ) ? obj : null;
-
-    return obj;
-};
-
-
-var isValidEntry = module.exports.isValidEntry = function(entry){
-    var rules = {
-        // host
-        0 : function(x){
-            return x.length > 0;
-        } ,
-        // port
-        1 : function(x){
-            if (x === '*') {
-                return true;
-            }
-            x = Number(x);
-            return (
-                isFinite(x) &&
-                  x > 0 &&
-                  x < 9007199254740992 &&
-                  Math.floor(x) === x
-            );
-        } ,
-        // database
-        2 : function(x){
-            return x.length > 0;
-        } ,
-        // username
-        3 : function(x){
-            return x.length > 0;
-        } ,
-        // password
-        4 : function(x){
-            return x.length > 0;
-        }
-    };
-
-    for (var idx = 0 ; idx < fieldNames.length ; idx += 1) {
-        var rule = rules[idx];
-        var value = entry[ fieldNames[idx] ] || '';
-
-        var res = rule(value);
-        if (!res) {
-            return false;
-        }
-    }
-
-    return true;
-};
-
Index: ckend/node_modules/pgpass/lib/index.js
===================================================================
--- backend/node_modules/pgpass/lib/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-'use strict';
-
-var path = require('path')
-  , fs = require('fs')
-  , helper = require('./helper.js')
-;
-
-
-module.exports = function(connInfo, cb) {
-    var file = helper.getFileName();
-    
-    fs.stat(file, function(err, stat){
-        if (err || !helper.usePgPass(stat, file)) {
-            return cb(undefined);
-        }
-
-        var st = fs.createReadStream(file);
-
-        helper.getPassword(connInfo, st, cb);
-    });
-};
-
-module.exports.warnTo = helper.warnTo;
Index: ckend/node_modules/pgpass/package.json
===================================================================
--- backend/node_modules/pgpass/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-{
-  "name": "pgpass",
-  "version": "1.0.5",
-  "description": "Module for reading .pgpass",
-  "main": "lib/index",
-  "scripts": {
-    "pretest": "chmod 600 ./test/_pgpass",
-    "_hint": "jshint --exclude node_modules --verbose lib test",
-    "_test": "mocha --recursive -R list",
-    "_covered_test": "nyc --reporter html --reporter text \"$npm_execpath\" run _test",
-    "test": "\"$npm_execpath\" run _hint && \"$npm_execpath\" run _covered_test"
-  },
-  "author": "Hannes Hörl <hannes.hoerl+pgpass@snowreporter.com>",
-  "license": "MIT",
-  "dependencies": {
-    "split2": "^4.1.0"
-  },
-  "devDependencies": {
-    "jshint": "^2.12.0",
-    "mocha": "^8.2.0",
-    "nyc": "^15.1.0",
-    "pg": "^8.4.1",
-    "pg-escape": "^0.2.0",
-    "pg-native": "3.0.0",
-    "resumer": "0.0.0",
-    "tmp": "^0.2.1",
-    "which": "^2.0.2"
-  },
-  "keywords": [
-    "postgres",
-    "pg",
-    "pgpass",
-    "password",
-    "postgresql"
-  ],
-  "bugs": "https://github.com/hoegaarden/pgpass/issues",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/hoegaarden/pgpass.git"
-  }
-}
Index: ckend/node_modules/postgres-array/index.d.ts
===================================================================
--- backend/node_modules/postgres-array/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-
-export function parse(source: string): string[];
-export function parse<T>(source: string, transform: (value: string) => T): T[];
-
Index: ckend/node_modules/postgres-array/index.js
===================================================================
--- backend/node_modules/postgres-array/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,97 +1,0 @@
-'use strict'
-
-exports.parse = function (source, transform) {
-  return new ArrayParser(source, transform).parse()
-}
-
-class ArrayParser {
-  constructor (source, transform) {
-    this.source = source
-    this.transform = transform || identity
-    this.position = 0
-    this.entries = []
-    this.recorded = []
-    this.dimension = 0
-  }
-
-  isEof () {
-    return this.position >= this.source.length
-  }
-
-  nextCharacter () {
-    var character = this.source[this.position++]
-    if (character === '\\') {
-      return {
-        value: this.source[this.position++],
-        escaped: true
-      }
-    }
-    return {
-      value: character,
-      escaped: false
-    }
-  }
-
-  record (character) {
-    this.recorded.push(character)
-  }
-
-  newEntry (includeEmpty) {
-    var entry
-    if (this.recorded.length > 0 || includeEmpty) {
-      entry = this.recorded.join('')
-      if (entry === 'NULL' && !includeEmpty) {
-        entry = null
-      }
-      if (entry !== null) entry = this.transform(entry)
-      this.entries.push(entry)
-      this.recorded = []
-    }
-  }
-
-  consumeDimensions () {
-    if (this.source[0] === '[') {
-      while (!this.isEof()) {
-        var char = this.nextCharacter()
-        if (char.value === '=') break
-      }
-    }
-  }
-
-  parse (nested) {
-    var character, parser, quote
-    this.consumeDimensions()
-    while (!this.isEof()) {
-      character = this.nextCharacter()
-      if (character.value === '{' && !quote) {
-        this.dimension++
-        if (this.dimension > 1) {
-          parser = new ArrayParser(this.source.substr(this.position - 1), this.transform)
-          this.entries.push(parser.parse(true))
-          this.position += parser.position - 2
-        }
-      } else if (character.value === '}' && !quote) {
-        this.dimension--
-        if (!this.dimension) {
-          this.newEntry()
-          if (nested) return this.entries
-        }
-      } else if (character.value === '"' && !character.escaped) {
-        if (quote) this.newEntry(true)
-        quote = !quote
-      } else if (character.value === ',' && !quote) {
-        this.newEntry()
-      } else {
-        this.record(character.value)
-      }
-    }
-    if (this.dimension !== 0) {
-      throw new Error('array dimension not balanced')
-    }
-    return this.entries
-  }
-}
-
-function identity (value) {
-  return value
-}
Index: ckend/node_modules/postgres-array/license
===================================================================
--- backend/node_modules/postgres-array/license	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/postgres-array/package.json
===================================================================
--- backend/node_modules/postgres-array/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-{
-  "name": "postgres-array",
-  "main": "index.js",
-  "version": "2.0.0",
-  "description": "Parse postgres array columns",
-  "license": "MIT",
-  "repository": "bendrucker/postgres-array",
-  "author": {
-    "name": "Ben Drucker",
-    "email": "bvdrucker@gmail.com",
-    "url": "bendrucker.me"
-  },
-  "engines": {
-    "node": ">=4"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "types": "index.d.ts",
-  "keywords": [
-    "postgres",
-    "array",
-    "parser"
-  ],
-  "dependencies": {},
-  "devDependencies": {
-    "standard": "^12.0.1",
-    "tape": "^4.0.0"
-  },
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "readme.md"
-  ]
-}
Index: ckend/node_modules/postgres-array/readme.md
===================================================================
--- backend/node_modules/postgres-array/readme.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-# postgres-array [![Build Status](https://travis-ci.org/bendrucker/postgres-array.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-array)
-
-> Parse postgres array columns
-
-
-## Install
-
-```
-$ npm install --save postgres-array
-```
-
-
-## Usage
-
-```js
-var postgresArray = require('postgres-array')
-
-postgresArray.parse('{1,2,3}', (value) => parseInt(value, 10))
-//=> [1, 2, 3]
-```
-
-## API
-
-#### `parse(input, [transform])` -> `array`
-
-##### input
-
-*Required*  
-Type: `string`
-
-A Postgres array string.
-
-##### transform
-
-Type: `function`  
-Default: `identity`
-
-A function that transforms non-null values inserted into the array.
-
-
-## License
-
-MIT © [Ben Drucker](http://bendrucker.me)
Index: ckend/node_modules/postgres-bytea/index.js
===================================================================
--- backend/node_modules/postgres-bytea/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-'use strict'
-
-module.exports = function parseBytea (input) {
-  if (/^\\x/.test(input)) {
-    // new 'hex' style response (pg >9.0)
-    return new Buffer(input.substr(2), 'hex')
-  }
-  var output = ''
-  var i = 0
-  while (i < input.length) {
-    if (input[i] !== '\\') {
-      output += input[i]
-      ++i
-    } else {
-      if (/[0-7]{3}/.test(input.substr(i + 1, 3))) {
-        output += String.fromCharCode(parseInt(input.substr(i + 1, 3), 8))
-        i += 4
-      } else {
-        var backslashes = 1
-        while (i + backslashes < input.length && input[i + backslashes] === '\\') {
-          backslashes++
-        }
-        for (var k = 0; k < Math.floor(backslashes / 2); ++k) {
-          output += '\\'
-        }
-        i += Math.floor(backslashes / 2) * 2
-      }
-    }
-  }
-  return new Buffer(output, 'binary')
-}
Index: ckend/node_modules/postgres-bytea/license
===================================================================
--- backend/node_modules/postgres-bytea/license	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/postgres-bytea/package.json
===================================================================
--- backend/node_modules/postgres-bytea/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-{
-  "name": "postgres-bytea",
-  "main": "index.js",
-  "version": "1.0.0",
-  "description": "Postgres bytea parser",
-  "license": "MIT",
-  "repository": "bendrucker/postgres-bytea",
-  "author": {
-    "name": "Ben Drucker",
-    "email": "bvdrucker@gmail.com",
-    "url": "bendrucker.me"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "keywords": [
-    "bytea",
-    "postgres",
-    "binary",
-    "parser"
-  ],
-  "dependencies": {},
-  "devDependencies": {
-    "tape": "^4.0.0",
-    "standard": "^4.0.0"
-  },
-  "files": [
-    "index.js",
-    "readme.md"
-  ]
-}
Index: ckend/node_modules/postgres-bytea/readme.md
===================================================================
--- backend/node_modules/postgres-bytea/readme.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-# postgres-bytea [![Build Status](https://travis-ci.org/bendrucker/postgres-bytea.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-bytea)
-
-> Postgres bytea parser
-
-
-## Install
-
-```
-$ npm install --save postgres-bytea
-```
-
-
-## Usage
-
-```js
-var bytea = require('postgres-bytea');
-bytea('\\000\\100\\200')
-//=> buffer
-```
-
-## API
-
-#### `bytea(input)` -> `buffer`
-
-##### input
-
-*Required*  
-Type: `string`
-
-A Postgres bytea binary string.
-
-## License
-
-MIT © [Ben Drucker](http://bendrucker.me)
Index: ckend/node_modules/postgres-date/index.js
===================================================================
--- backend/node_modules/postgres-date/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,116 +1,0 @@
-'use strict'
-
-var DATE_TIME = /(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/
-var DATE = /^(\d{1,})-(\d{2})-(\d{2})( BC)?$/
-var TIME_ZONE = /([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/
-var INFINITY = /^-?infinity$/
-
-module.exports = function parseDate (isoDate) {
-  if (INFINITY.test(isoDate)) {
-    // Capitalize to Infinity before passing to Number
-    return Number(isoDate.replace('i', 'I'))
-  }
-  var matches = DATE_TIME.exec(isoDate)
-
-  if (!matches) {
-    // Force YYYY-MM-DD dates to be parsed as local time
-    return getDate(isoDate) || null
-  }
-
-  var isBC = !!matches[8]
-  var year = parseInt(matches[1], 10)
-  if (isBC) {
-    year = bcYearToNegativeYear(year)
-  }
-
-  var month = parseInt(matches[2], 10) - 1
-  var day = matches[3]
-  var hour = parseInt(matches[4], 10)
-  var minute = parseInt(matches[5], 10)
-  var second = parseInt(matches[6], 10)
-
-  var ms = matches[7]
-  ms = ms ? 1000 * parseFloat(ms) : 0
-
-  var date
-  var offset = timeZoneOffset(isoDate)
-  if (offset != null) {
-    date = new Date(Date.UTC(year, month, day, hour, minute, second, ms))
-
-    // Account for years from 0 to 99 being interpreted as 1900-1999
-    // by Date.UTC / the multi-argument form of the Date constructor
-    if (is0To99(year)) {
-      date.setUTCFullYear(year)
-    }
-
-    if (offset !== 0) {
-      date.setTime(date.getTime() - offset)
-    }
-  } else {
-    date = new Date(year, month, day, hour, minute, second, ms)
-
-    if (is0To99(year)) {
-      date.setFullYear(year)
-    }
-  }
-
-  return date
-}
-
-function getDate (isoDate) {
-  var matches = DATE.exec(isoDate)
-  if (!matches) {
-    return
-  }
-
-  var year = parseInt(matches[1], 10)
-  var isBC = !!matches[4]
-  if (isBC) {
-    year = bcYearToNegativeYear(year)
-  }
-
-  var month = parseInt(matches[2], 10) - 1
-  var day = matches[3]
-  // YYYY-MM-DD will be parsed as local time
-  var date = new Date(year, month, day)
-
-  if (is0To99(year)) {
-    date.setFullYear(year)
-  }
-
-  return date
-}
-
-// match timezones:
-// Z (UTC)
-// -05
-// +06:30
-function timeZoneOffset (isoDate) {
-  if (isoDate.endsWith('+00')) {
-    return 0
-  }
-
-  var zone = TIME_ZONE.exec(isoDate.split(' ')[1])
-  if (!zone) return
-  var type = zone[1]
-
-  if (type === 'Z') {
-    return 0
-  }
-  var sign = type === '-' ? -1 : 1
-  var offset = parseInt(zone[2], 10) * 3600 +
-    parseInt(zone[3] || 0, 10) * 60 +
-    parseInt(zone[4] || 0, 10)
-
-  return offset * sign * 1000
-}
-
-function bcYearToNegativeYear (year) {
-  // Account for numerical difference between representations of BC years
-  // See: https://github.com/bendrucker/postgres-date/issues/5
-  return -(year - 1)
-}
-
-function is0To99 (num) {
-  return num >= 0 && num < 100
-}
Index: ckend/node_modules/postgres-date/license
===================================================================
--- backend/node_modules/postgres-date/license	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/postgres-date/package.json
===================================================================
--- backend/node_modules/postgres-date/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-{
-  "name": "postgres-date",
-  "main": "index.js",
-  "version": "1.0.7",
-  "description": "Postgres date column parser",
-  "license": "MIT",
-  "repository": "bendrucker/postgres-date",
-  "author": {
-    "name": "Ben Drucker",
-    "email": "bvdrucker@gmail.com",
-    "url": "bendrucker.me"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "keywords": [
-    "postgres",
-    "date",
-    "parser"
-  ],
-  "dependencies": {},
-  "devDependencies": {
-    "standard": "^14.0.0",
-    "tape": "^5.0.0"
-  },
-  "files": [
-    "index.js",
-    "readme.md"
-  ]
-}
Index: ckend/node_modules/postgres-date/readme.md
===================================================================
--- backend/node_modules/postgres-date/readme.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-# postgres-date [![Build Status](https://travis-ci.org/bendrucker/postgres-date.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-date) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/postgres-date.svg)](https://greenkeeper.io/)
-
-> Postgres date output parser
-
-This package parses [date/time outputs](https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT) from Postgres into Javascript `Date` objects. Its goal is to match Postgres behavior and preserve data accuracy.
-
-If you find a case where a valid Postgres output results in incorrect parsing (including loss of precision), please [create a pull request](https://github.com/bendrucker/postgres-date/compare) and provide a failing test.
-
-**Supported Postgres Versions:** `>= 9.6`
-
-All prior versions of Postgres are likely compatible but not officially supported.
-
-## Install
-
-```
-$ npm install --save postgres-date
-```
-
-
-## Usage
-
-```js
-var parse = require('postgres-date')
-parse('2011-01-23 22:15:51Z')
-// => 2011-01-23T22:15:51.000Z
-```
-
-## API
-
-#### `parse(isoDate)` -> `date`
-
-##### isoDate
-
-*Required*  
-Type: `string`
-
-A date string from Postgres.
-
-## Releases
-
-The following semantic versioning increments will be used for changes:
-
-* **Major**: Removal of support for Node.js versions or Postgres versions (not expected)
-* **Minor**: Unused, since Postgres returns dates in standard ISO 8601 format
-* **Patch**: Any fix for parsing behavior
-
-## License
-
-MIT © [Ben Drucker](http://bendrucker.me)
Index: ckend/node_modules/postgres-interval/index.d.ts
===================================================================
--- backend/node_modules/postgres-interval/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-declare namespace PostgresInterval {
-  export interface IPostgresInterval {
-    years?: number;
-    months?: number;
-    days?: number;
-    hours?: number;
-    minutes?: number;
-    seconds?: number;
-    milliseconds?: number;
-
-    toPostgres(): string;
-
-    toISO(): string;
-    toISOString(): string;
-  }
-}
-
-declare function PostgresInterval(raw: string): PostgresInterval.IPostgresInterval;
-
-export = PostgresInterval;
Index: ckend/node_modules/postgres-interval/index.js
===================================================================
--- backend/node_modules/postgres-interval/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,125 +1,0 @@
-'use strict'
-
-var extend = require('xtend/mutable')
-
-module.exports = PostgresInterval
-
-function PostgresInterval (raw) {
-  if (!(this instanceof PostgresInterval)) {
-    return new PostgresInterval(raw)
-  }
-  extend(this, parse(raw))
-}
-var properties = ['seconds', 'minutes', 'hours', 'days', 'months', 'years']
-PostgresInterval.prototype.toPostgres = function () {
-  var filtered = properties.filter(this.hasOwnProperty, this)
-
-  // In addition to `properties`, we need to account for fractions of seconds.
-  if (this.milliseconds && filtered.indexOf('seconds') < 0) {
-    filtered.push('seconds')
-  }
-
-  if (filtered.length === 0) return '0'
-  return filtered
-    .map(function (property) {
-      var value = this[property] || 0
-
-      // Account for fractional part of seconds,
-      // remove trailing zeroes.
-      if (property === 'seconds' && this.milliseconds) {
-        value = (value + this.milliseconds / 1000).toFixed(6).replace(/\.?0+$/, '')
-      }
-
-      return value + ' ' + property
-    }, this)
-    .join(' ')
-}
-
-var propertiesISOEquivalent = {
-  years: 'Y',
-  months: 'M',
-  days: 'D',
-  hours: 'H',
-  minutes: 'M',
-  seconds: 'S'
-}
-var dateProperties = ['years', 'months', 'days']
-var timeProperties = ['hours', 'minutes', 'seconds']
-// according to ISO 8601
-PostgresInterval.prototype.toISOString = PostgresInterval.prototype.toISO = function () {
-  var datePart = dateProperties
-    .map(buildProperty, this)
-    .join('')
-
-  var timePart = timeProperties
-    .map(buildProperty, this)
-    .join('')
-
-  return 'P' + datePart + 'T' + timePart
-
-  function buildProperty (property) {
-    var value = this[property] || 0
-
-    // Account for fractional part of seconds,
-    // remove trailing zeroes.
-    if (property === 'seconds' && this.milliseconds) {
-      value = (value + this.milliseconds / 1000).toFixed(6).replace(/0+$/, '')
-    }
-
-    return value + propertiesISOEquivalent[property]
-  }
-}
-
-var NUMBER = '([+-]?\\d+)'
-var YEAR = NUMBER + '\\s+years?'
-var MONTH = NUMBER + '\\s+mons?'
-var DAY = NUMBER + '\\s+days?'
-var TIME = '([+-])?([\\d]*):(\\d\\d):(\\d\\d)\\.?(\\d{1,6})?'
-var INTERVAL = new RegExp([YEAR, MONTH, DAY, TIME].map(function (regexString) {
-  return '(' + regexString + ')?'
-})
-  .join('\\s*'))
-
-// Positions of values in regex match
-var positions = {
-  years: 2,
-  months: 4,
-  days: 6,
-  hours: 9,
-  minutes: 10,
-  seconds: 11,
-  milliseconds: 12
-}
-// We can use negative time
-var negatives = ['hours', 'minutes', 'seconds', 'milliseconds']
-
-function parseMilliseconds (fraction) {
-  // add omitted zeroes
-  var microseconds = fraction + '000000'.slice(fraction.length)
-  return parseInt(microseconds, 10) / 1000
-}
-
-function parse (interval) {
-  if (!interval) return {}
-  var matches = INTERVAL.exec(interval)
-  var isNegative = matches[8] === '-'
-  return Object.keys(positions)
-    .reduce(function (parsed, property) {
-      var position = positions[property]
-      var value = matches[position]
-      // no empty string
-      if (!value) return parsed
-      // milliseconds are actually microseconds (up to 6 digits)
-      // with omitted trailing zeroes.
-      value = property === 'milliseconds'
-        ? parseMilliseconds(value)
-        : parseInt(value, 10)
-      // no zeros
-      if (!value) return parsed
-      if (isNegative && ~negatives.indexOf(property)) {
-        value *= -1
-      }
-      parsed[property] = value
-      return parsed
-    }, {})
-}
Index: ckend/node_modules/postgres-interval/license
===================================================================
--- backend/node_modules/postgres-interval/license	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/postgres-interval/package.json
===================================================================
--- backend/node_modules/postgres-interval/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-{
-  "name": "postgres-interval",
-  "main": "index.js",
-  "version": "1.2.0",
-  "description": "Parse Postgres interval columns",
-  "license": "MIT",
-  "repository": "bendrucker/postgres-interval",
-  "author": {
-    "name": "Ben Drucker",
-    "email": "bvdrucker@gmail.com",
-    "url": "bendrucker.me"
-  },
-  "engines": {
-    "node": ">=0.10.0"
-  },
-  "scripts": {
-    "test": "standard && tape test.js"
-  },
-  "keywords": [
-    "postgres",
-    "interval",
-    "parser"
-  ],
-  "dependencies": {
-    "xtend": "^4.0.0"
-  },
-  "devDependencies": {
-    "tape": "^4.0.0",
-    "standard": "^12.0.1"
-  },
-  "files": [
-    "index.js",
-    "index.d.ts",
-    "readme.md"
-  ]
-}
Index: ckend/node_modules/postgres-interval/readme.md
===================================================================
--- backend/node_modules/postgres-interval/readme.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-# postgres-interval [![Build Status](https://travis-ci.org/bendrucker/postgres-interval.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-interval) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/postgres-interval.svg)](https://greenkeeper.io/)
-
-> Parse Postgres interval columns
-
-
-## Install
-
-```
-$ npm install --save postgres-interval
-```
-
-
-## Usage
-
-```js
-var parse = require('postgres-interval')
-var interval = parse('01:02:03')
-//=> {hours: 1, minutes: 2, seconds: 3}
-interval.toPostgres()
-// 3 seconds 2 minutes 1 hours
-interval.toISO()
-// P0Y0M0DT1H2M3S
-```
-
-## API
-
-#### `parse(pgInterval)` -> `interval`
-
-##### pgInterval
-
-*Required*  
-Type: `string`
-
-A Postgres interval string.
-
-#### `interval.toPostgres()` -> `string`
-
-Returns an interval string. This allows the interval object to be passed into prepared statements.
-
-#### `interval.toISOString()` -> `string`
-
-Returns an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) compliant string.
-
-Also available as `interval.toISO()` for backwards compatibility.
-
-## License
-
-MIT © [Ben Drucker](http://bendrucker.me)
Index: ckend/node_modules/retry-as-promised/.travis.yml
===================================================================
--- backend/node_modules/retry-as-promised/.travis.yml	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-language: node_js
-node_js:
-  - "8.0"
Index: ckend/node_modules/retry-as-promised/LICENSE
===================================================================
--- backend/node_modules/retry-as-promised/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-The MIT License
-
-Copyright (c) 2015-2016 Mick Hansen. http://mhansen.io
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-
Index: ckend/node_modules/retry-as-promised/README.md
===================================================================
--- backend/node_modules/retry-as-promised/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-# retry-as-promised
-
-Retry promises when they fail
-
-## Installation
-
-```sh
-$ npm install --save retry-as-promised
-$ yarn add retry-as-promised
-```
-
-## Configuration
-
-```js
-var retry = require('retry-as-promised').default;
-
-var warningFn = function(msg){ someLoggingFunction(msg, 'notice'); };
-
-// Will call the until max retries or the promise is resolved.
-return retry(function (options) {
-  // options.current, times callback has been called including this call
-  return promise;
-}, {
-  max: 3, // maximum amount of tries
-  timeout: 10000 // throw if no response or error within millisecond timeout, default: undefined,
-  match: [ // Must match error signature (ala bluebird catch) to continue
-    Sequelize.ConnectionError,
-    'SQLITE_BUSY'
-  ],
-  backoffBase: 1000 // Initial backoff duration in ms. Default: 100,
-  backoffExponent: 1.5 // Exponent to increase backoff each try. Default: 1.1
-  backoffJitter: 150 // Amount of randomized jitter in ms to add to retry interval to spread retries out over time. Default: 0.0.
-  report: warningFn, // the function used for reporting; must have a (string, object) argument signature, where string is the message that will passed in by retry-as-promised, and the object will be this configuration object + the $current property
-  name:  'SourceX' // if user supplies string, it will be used when composing error/reporting messages; else if retry gets a callback, uses callback name in erroring/reporting; else (default) uses literal string 'unknown'
-});
-```
-
-## Tested with
-
-- Bluebird
-- Q
Index: ckend/node_modules/retry-as-promised/dist/index.d.ts
===================================================================
--- backend/node_modules/retry-as-promised/dist/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-export declare class TimeoutError extends Error {
-    previous: Error | undefined;
-    constructor(message: string, previousError?: Error);
-}
-export type MatchOption = string | RegExp | Error | Function;
-export interface Options {
-    max: number;
-    timeout?: number | undefined;
-    match?: MatchOption[] | MatchOption | undefined;
-    backoffBase?: number | undefined;
-    backoffExponent?: number | undefined;
-    backoffJitter?: number | undefined;
-    report?: ((message: string, obj: CoercedOptions, err?: any) => void) | undefined;
-    name?: string | undefined;
-}
-type CoercedOptions = {
-    $current: number;
-    max: number;
-    timeout?: number | undefined;
-    match: MatchOption[];
-    backoffBase: number;
-    backoffExponent: number;
-    backoffJitter?: number;
-    report?: ((message: string, obj: CoercedOptions, err?: any) => void) | undefined;
-    name?: string | undefined;
-};
-type MaybePromise<T> = PromiseLike<T> | T;
-type RetryCallback<T> = ({ current }: {
-    current: CoercedOptions['$current'];
-}) => MaybePromise<T>;
-export declare function applyJitter(delayMs: number, maxJitterMs: number): number;
-export declare function retryAsPromised<T>(callback: RetryCallback<T>, optionsInput: Options | number | CoercedOptions): Promise<T>;
-export default retryAsPromised;
Index: ckend/node_modules/retry-as-promised/dist/index.js
===================================================================
--- backend/node_modules/retry-as-promised/dist/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-'use strict';
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.retryAsPromised = exports.applyJitter = exports.TimeoutError = void 0;
-class TimeoutError extends Error {
-    constructor(message, previousError) {
-        super(message);
-        this.name = "TimeoutError";
-        this.previous = previousError;
-    }
-}
-exports.TimeoutError = TimeoutError;
-function matches(match, err) {
-    if (typeof match === 'function') {
-        try {
-            if (err instanceof match)
-                return true;
-        }
-        catch (_) {
-            return !!match(err);
-        }
-    }
-    if (match === err.toString())
-        return true;
-    if (match === err.message)
-        return true;
-    return match instanceof RegExp
-        && (match.test(err.message) || match.test(err.toString()));
-}
-function applyJitter(delayMs, maxJitterMs) {
-    const newDelayMs = delayMs + (Math.random() * maxJitterMs * (Math.random() > 0.5 ? 1 : -1));
-    return Math.max(0, newDelayMs);
-}
-exports.applyJitter = applyJitter;
-function retryAsPromised(callback, optionsInput) {
-    if (!callback || !optionsInput) {
-        throw new Error('retry-as-promised must be passed a callback and a options set');
-    }
-    optionsInput = (typeof optionsInput === "number" ? { max: optionsInput } : optionsInput);
-    const options = {
-        $current: "$current" in optionsInput ? optionsInput.$current : 1,
-        max: optionsInput.max,
-        timeout: optionsInput.timeout || undefined,
-        match: optionsInput.match ? Array.isArray(optionsInput.match) ? optionsInput.match : [optionsInput.match] : [],
-        backoffBase: optionsInput.backoffBase === undefined ? 100 : optionsInput.backoffBase,
-        backoffExponent: optionsInput.backoffExponent || 1.1,
-        backoffJitter: optionsInput.backoffJitter || 0.0,
-        report: optionsInput.report,
-        name: optionsInput.name || callback.name || 'unknown'
-    };
-    if (options.match && !Array.isArray(options.match))
-        options.match = [options.match];
-    if (options.report)
-        options.report('Trying ' + options.name + ' #' + options.$current + ' at ' + new Date().toLocaleTimeString(), options);
-    return new Promise(function (resolve, reject) {
-        let timeout;
-        let backoffTimeout;
-        let lastError;
-        if (options.timeout) {
-            timeout = setTimeout(function () {
-                if (backoffTimeout)
-                    clearTimeout(backoffTimeout);
-                reject(new TimeoutError(options.name + ' timed out', lastError));
-            }, options.timeout);
-        }
-        Promise.resolve(callback({ current: options.$current }))
-            .then(resolve)
-            .then(function () {
-            if (timeout)
-                clearTimeout(timeout);
-            if (backoffTimeout)
-                clearTimeout(backoffTimeout);
-        })
-            .catch(function (err) {
-            if (timeout)
-                clearTimeout(timeout);
-            if (backoffTimeout)
-                clearTimeout(backoffTimeout);
-            lastError = err;
-            if (options.report)
-                options.report((err && err.toString()) || err, options, err);
-            // Should not retry if max has been reached
-            var shouldRetry = options.$current < options.max;
-            if (!shouldRetry)
-                return reject(err);
-            shouldRetry = options.match.length === 0 || options.match.some(function (match) {
-                return matches(match, err);
-            });
-            if (!shouldRetry)
-                return reject(err);
-            var retryDelay = options.backoffBase * Math.pow(options.backoffExponent, options.$current - 1);
-            const backoffJitter = options.backoffJitter;
-            if (backoffJitter !== undefined) {
-                retryDelay = applyJitter(retryDelay, backoffJitter);
-            }
-            // Do some accounting
-            options.$current++;
-            if (options.report)
-                options.report(`Retrying ${options.name} (${options.$current})`, options);
-            if (retryDelay) {
-                // Use backoff function to ease retry rate
-                if (options.report)
-                    options.report(`Delaying retry of ${options.name} by ${retryDelay}`, options);
-                backoffTimeout = setTimeout(function () {
-                    retryAsPromised(callback, options)
-                        .then(resolve)
-                        .catch(reject);
-                }, retryDelay);
-            }
-            else {
-                retryAsPromised(callback, options)
-                    .then(resolve)
-                    .catch(reject);
-            }
-        });
-    });
-}
-exports.retryAsPromised = retryAsPromised;
-;
-exports.default = retryAsPromised;
Index: ckend/node_modules/retry-as-promised/index.ts
===================================================================
--- backend/node_modules/retry-as-promised/index.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,147 +1,0 @@
-'use strict';
-
-export class TimeoutError extends Error {
-  previous: Error | undefined;
-
-  constructor(message: string, previousError?: Error) {
-    super(message);
-    this.name = "TimeoutError";
-    this.previous = previousError;
-  }
-}
-
-export type MatchOption =
-  | string
-  | RegExp
-  | Error
-  | Function;
-
-export interface Options {
-  max: number;
-  timeout?: number | undefined;
-  match?: MatchOption[] | MatchOption | undefined;
-  backoffBase?: number | undefined;
-  backoffExponent?: number | undefined;
-  backoffJitter?: number | undefined;
-  report?: ((message: string, obj: CoercedOptions, err?: any) => void) | undefined;
-  name?: string | undefined;
-}
-
-type CoercedOptions = {
-  $current: number;
-  max: number;
-  timeout?: number | undefined;
-  match: MatchOption[];
-  backoffBase: number;
-  backoffExponent: number;
-  backoffJitter?: number;
-  report?: ((message: string, obj: CoercedOptions, err?: any) => void) | undefined;
-  name?: string | undefined;
-}
-type MaybePromise<T> = PromiseLike<T> | T;
-type RetryCallback<T> = ({ current }: { current: CoercedOptions['$current'] }) => MaybePromise<T>;
-
-function matches(match : MatchOption, err: Error) {
-  if (typeof match === 'function') {
-    try {
-      if (err instanceof match) return true;
-    } catch (_) {
-      return !!match(err);
-    }
-  }
-  if (match === err.toString()) return true;
-  if (match === err.message) return true;
-  return match instanceof RegExp
-    && (match.test(err.message) || match.test(err.toString()));
-}
-
-export function applyJitter(delayMs: number, maxJitterMs: number): number {
-  const newDelayMs = delayMs + (Math.random() * maxJitterMs * (Math.random() > 0.5 ? 1 : -1));
-  return Math.max(0, newDelayMs);
-}
-
-export function retryAsPromised<T>(callback : RetryCallback<T>, optionsInput : Options | number | CoercedOptions) : Promise<T> {
-  if (!callback || !optionsInput) {
-    throw new Error(
-      'retry-as-promised must be passed a callback and a options set'
-    );
-  }
-
-  optionsInput = (typeof optionsInput === "number" ? {max: optionsInput} : optionsInput) as Options | CoercedOptions;
-
-  const options : CoercedOptions = {
-    $current: "$current" in optionsInput ? optionsInput.$current : 1,
-    max: optionsInput.max,
-    timeout: optionsInput.timeout || undefined,
-    match: optionsInput.match ? Array.isArray(optionsInput.match) ? optionsInput.match : [optionsInput.match] : [],
-    backoffBase: optionsInput.backoffBase === undefined ? 100 : optionsInput.backoffBase,
-    backoffExponent: optionsInput.backoffExponent || 1.1,
-    backoffJitter: optionsInput.backoffJitter || 0.0,
-    report: optionsInput.report,
-    name: optionsInput.name || callback.name || 'unknown'
-  };
-
-  if (options.match && !Array.isArray(options.match)) options.match = [options.match];
-  if (options.report) options.report('Trying ' + options.name + ' #' + options.$current + ' at ' + new Date().toLocaleTimeString(), options);
-
-  return new Promise(function(resolve, reject) {
-    let timeout : NodeJS.Timeout | undefined;
-    let backoffTimeout : NodeJS.Timeout | undefined;
-    let lastError : Error | undefined;
-
-    if (options.timeout) {
-      timeout = setTimeout(function() {
-        if (backoffTimeout) clearTimeout(backoffTimeout);
-        reject(new TimeoutError(options.name + ' timed out', lastError));
-      }, options.timeout);
-    }
-
-    Promise.resolve(callback({ current: options.$current }))
-      .then(resolve)
-      .then(function() {
-        if (timeout) clearTimeout(timeout);
-        if (backoffTimeout) clearTimeout(backoffTimeout);
-      })
-      .catch(function(err) {
-        if (timeout) clearTimeout(timeout);
-        if (backoffTimeout) clearTimeout(backoffTimeout);
-
-        lastError = err;
-        if (options.report) options.report((err && err.toString()) || err, options, err);
-
-        // Should not retry if max has been reached
-        var shouldRetry = options.$current! < options.max;
-        if (!shouldRetry) return reject(err);
-        shouldRetry = options.match.length === 0 || options.match.some(function (match) {
-          return matches(match, err)
-        });
-        if (!shouldRetry) return reject(err);
-
-        var retryDelay = options.backoffBase * Math.pow(options.backoffExponent, options.$current - 1);
-        const backoffJitter = options.backoffJitter;
-        if (backoffJitter !== undefined) {
-          retryDelay = applyJitter(retryDelay, backoffJitter);
-        }
-
-        // Do some accounting
-        options.$current++;
-        if (options.report) options.report(`Retrying ${options.name} (${options.$current})`, options);
-
-        if (retryDelay) {
-          // Use backoff function to ease retry rate
-          if (options.report) options.report(`Delaying retry of ${options.name} by ${retryDelay}`, options);
-          backoffTimeout = setTimeout(function() {
-            retryAsPromised(callback, options)
-              .then(resolve)
-              .catch(reject);
-          }, retryDelay);
-        } else {
-          retryAsPromised(callback, options)
-            .then(resolve)
-            .catch(reject);
-        }
-      });
-  });
-};
-
-export default retryAsPromised;
Index: ckend/node_modules/retry-as-promised/package.json
===================================================================
--- backend/node_modules/retry-as-promised/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-{
-  "name": "retry-as-promised",
-  "version": "7.1.1",
-  "description": "Retry a failed promise",
-  "main": "dist/index.js",
-  "types": "dist/index.d.ts",
-  "scripts": {
-    "test": "cross-env DEBUG=retry-as-promised* ./node_modules/.bin/mocha --register ts-node/register --check-leaks --colors -t 10000 --reporter spec test/promise.test.js",
-    "build": "tsc",
-    "check": "tsc --noEmit",
-    "prepublishOnly": "npm run build"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mickhansen/retry-as-promised.git"
-  },
-  "keywords": [
-    "retry",
-    "promise",
-    "bluebird"
-  ],
-  "author": "Mick Hansen <maker@mhansen.io>",
-  "license": "MIT",
-  "bugs": {
-    "url": "https://github.com/mickhansen/retry-as-promised/issues"
-  },
-  "homepage": "https://github.com/mickhansen/retry-as-promised",
-  "devDependencies": {
-    "chai": "^4.2.0",
-    "chai-as-promised": "^7.1.1",
-    "cross-env": "^5.2.0",
-    "mocha": "^9.1.3",
-    "moment": "^2.10.6",
-    "sinon": "^7.0.0",
-    "sinon-chai": "^3.2.0",
-    "ts-node": "^10.9.1",
-    "typescript": "^4.9.3"
-  }
-}
Index: ckend/node_modules/retry-as-promised/test/promise.test.js
===================================================================
--- backend/node_modules/retry-as-promised/test/promise.test.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,465 +1,0 @@
-var chai = require('chai'),
-  expect = chai.expect,
-  moment = require('moment'),
-  sinon = require('sinon');
-
-var delay = ms => new Promise(_ => setTimeout(_, ms));
-
-chai.use(require('chai-as-promised'));
-sinon.usingPromise(Promise);
-
-describe('Global Promise', function() {
-  var retry = require('../').default;
-  var applyJitter = require('../').applyJitter;
-
-
-  beforeEach(function() {
-    this.count = 0;
-    this.soRejected = new Error(Math.random().toString());
-    this.soResolved = new Error(Math.random().toString());
-  });
-
-  it('should reject immediately if max is 1 (using options)', function() {
-    var callback = sinon.stub();
-
-    callback.resolves(this.soResolved);
-    callback.onCall(0).rejects(this.soRejected);
-
-    return expect(retry(callback, { max: 1, backoffBase: 0 }))
-      .to.eventually.be.rejectedWith(this.soRejected)
-      .then(function() {
-        expect(callback.callCount).to.equal(1);
-      });
-  });
-
-  it('should reject immediately if max is 1 (using integer)', function() {
-    var callback = sinon.stub();
-
-    callback.resolves(this.soResolved);
-    callback.onCall(0).rejects(this.soRejected);
-
-    return expect(retry(callback, 1))
-      .to.eventually.be.rejectedWith(this.soRejected)
-      .then(function() {
-        expect(callback.callCount).to.equal(1);
-      });
-  });
-
-  it('should reject after all tries if still rejected', function() {
-    var callback = sinon.stub();
-
-    callback.rejects(this.soRejected);
-
-    return expect(retry(callback, { max: 3, backoffBase: 0 }))
-      .to.eventually.be.rejectedWith(this.soRejected)
-      .then(function() {
-        expect(callback.firstCall.args).to.deep.equal([{ current: 1 }]);
-        expect(callback.secondCall.args).to.deep.equal([{ current: 2 }]);
-        expect(callback.thirdCall.args).to.deep.equal([{ current: 3 }]);
-        expect(callback.callCount).to.equal(3);
-      });
-  });
-
-  it('should resolve immediately if resolved on first try', function() {
-    var callback = sinon.stub();
-
-    callback.resolves(this.soResolved);
-    callback.onCall(0).resolves(this.soResolved);
-
-    return expect(retry(callback, { max: 10, backoffBase: 0 }))
-      .to.eventually.equal(this.soResolved)
-      .then(function() {
-        expect(callback.callCount).to.equal(1);
-      });
-  });
-
-  it('should resolve if resolved before hitting max', function() {
-    var callback = sinon.stub();
-
-    callback.rejects(this.soRejected);
-    callback.onCall(3).resolves(this.soResolved);
-
-    return expect(retry(callback, { max: 10, backoffBase: 0 }))
-      .to.eventually.equal(this.soResolved)
-      .then(function() {
-        expect(callback.firstCall.args).to.deep.equal([{ current: 1 }]);
-        expect(callback.secondCall.args).to.deep.equal([{ current: 2 }]);
-        expect(callback.thirdCall.args).to.deep.equal([{ current: 3 }]);
-        expect(callback.callCount).to.equal(4);
-      });
-  });
-
-  describe('options.timeout', function() {
-    it('should throw if reject on first attempt', function() {
-      return expect(
-        retry(
-          function() {
-            return delay(2000);
-          },
-          {
-            max: 1,
-            backoffBase: 0,
-            timeout: 1000
-          }
-        )
-      ).to.eventually.be.rejectedWith(retry.TimeoutError);
-    });
-
-    it('should throw if reject on last attempt', function() {
-      return expect(
-        retry(
-          function() {
-            this.count++;
-            if (this.count === 3) {
-              return delay(3500);
-            }
-            return Promise.reject();
-          }.bind(this),
-          {
-            max: 3,
-            backoffBase: 0,
-            timeout: 1500
-          }
-        )
-      )
-        .to.eventually.be.rejectedWith(retry.TimeoutError)
-        .then(function() {
-          expect(this.count).to.equal(3);
-        }.bind(this));
-    });
-  });
-
-  describe('options.match', function() {
-    it('should continue retry while error is equal to match string', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(3).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: 'Error: ' + this.soRejected.message
-        })
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(4);
-        });
-    });
-
-    it('should reject immediately if error is not equal to match string', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: 'A custom error string'
-        })
-      )
-        .to.eventually.be.rejectedWith(this.soRejected)
-        .then(function() {
-          expect(callback.callCount).to.equal(1);
-        });
-    });
-
-    it('should continue retry while error is instanceof match', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(4).resolves(this.soResolved);
-
-      return expect(retry(callback, { max: 15, backoffBase: 0, match: Error }))
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(5);
-        });
-    });
-
-    it('should reject immediately if error is not instanceof match', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-
-      return expect(
-        retry(callback, { max: 15, backoffBase: 0, match: function foo() {} })
-      )
-        .to.eventually.be.rejectedWith(Error)
-        .then(function() {
-          expect(callback.callCount).to.equal(1);
-        });
-    });
-
-    it('should continue retry while error is equal to match string in array', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(4).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: [
-            'Error: ' + (this.soRejected.message + 1),
-            'Error: ' + this.soRejected.message
-          ]
-        })
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(5);
-        });
-    });
-
-    it('should reject immediately if error is not equal to match string in array', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: [
-            'Error: ' + (this.soRejected + 1),
-            'Error: ' + (this.soRejected + 2)
-          ]
-        })
-      )
-        .to.eventually.be.rejectedWith(Error)
-        .then(function() {
-          expect(callback.callCount).to.equal(1);
-        });
-    });
-
-    it('should reject immediately if error is not instanceof match in array', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: ['Error: ' + (this.soRejected + 1), function foo() {}]
-        })
-      )
-        .to.eventually.be.rejectedWith(Error)
-        .then(function() {
-          expect(callback.callCount).to.equal(1);
-        });
-    });
-
-    it('should continue retry while error is instanceof match in array', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(4).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: ['Error: ' + (this.soRejected + 1), Error]
-        })
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(5);
-        });
-    });
-
-    it('should continue retry while error is matched by function', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(4).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: (err) => err instanceof Error
-        })
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(5);
-        });
-    });
-
-    it('should continue retry while error is matched by a function in array', function() {
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(4).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {
-          max: 15,
-          backoffBase: 0,
-          match: [
-            (err) => err instanceof Error
-          ]
-        })
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(5);
-        });
-    });
-});
-
-  describe('options.backoff', function() {
-    it('should resolve after 5 retries and an eventual delay over 611ms using default backoff', async function() {
-      // Given
-      var callback = sinon.stub();
-      callback.rejects(this.soRejected);
-      callback.onCall(5).resolves(this.soResolved);
-
-      // When
-      var startTime = moment();
-      const result = await retry(callback, { max: 15 });
-      var endTime = moment();
-
-      // Then
-      expect(result).to.equal(this.soResolved);
-      expect(callback.callCount).to.equal(6);
-      expect(endTime.diff(startTime)).to.be.within(600, 650);
-    });
-
-    it('should resolve after 1 retry and initial delay equal to the backoffBase', async function() {
-      var initialDelay = 100;
-      var callback = sinon.stub();
-
-      callback.onCall(0).rejects(this.soRejected);
-      callback.onCall(1).resolves(this.soResolved);
-
-      var startTime = moment();
-      const result = await retry(callback, {
-          max: 2,
-          backoffBase: initialDelay,
-          backoffExponent: 3
-        });
-      var endTime = moment();
-
-      expect(result).to.equal(this.soResolved);
-      expect(callback.callCount).to.equal(2);
-      // allow for some overhead
-      expect(endTime.diff(startTime)).to.be.within(initialDelay, initialDelay + 50);
-    });
-
-    it('should throw TimeoutError and cancel backoff delay if timeout is reached', function() {
-      return expect(
-        retry(
-          function() {
-            return delay(2000);
-          },
-          {
-            max: 15,
-            timeout: 1000
-          }
-        )
-      ).to.eventually.be.rejectedWith(retry.TimeoutError);
-    });
-  });
-
-  describe('options.report', function() {
-    it('should receive the error that triggered a retry', function() {
-      var report = sinon.stub();
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-      callback.onCall(1).resolves(this.soResolved);
-
-      return expect(
-        retry(callback, {max: 3, report})
-      )
-        .to.eventually.equal(this.soResolved)
-        .then(function() {
-          expect(callback.callCount).to.equal(2);
-
-          // messages sent to report are:
-          // Trying functionStub #1 at <timestamp>
-          // Error: <random number>                 <--- This is the report call we want to test
-          // Retrying functionStub (2)
-          // Delaying retry of functionStub by 100
-          // Trying functionStub #2 at <timestamp>
-          expect(report.callCount).to.equal(5);
-          expect(report.getCall(1).args[2]).to.be.instanceOf(Error);
-        });
-    });
-
-    it('should receive the error that exceeded max', function() {
-      var report = sinon.stub();
-      var callback = sinon.stub();
-
-      callback.rejects(this.soRejected);
-
-      return expect(
-        retry(callback, {max: 3, report})
-      )
-        .to.eventually.be.rejectedWith(Error)
-        .then(function() {
-          expect(callback.callCount).to.equal(3);
-
-          // Trying functionStub #1 at <timestamp>
-          // Error: <random number>
-          // Retrying functionStub (2)
-          // Delaying retry of functionStub by 100
-          // Trying functionStub #2 at <timestamp>
-          // Error: <random number>
-          // Retrying functionStub (3)
-          // Delaying retry of functionStub by 110.00000000000001
-          // Trying functionStub #3 at <timestamp>
-          // Error: <random number>                 <--- This is the report call we want to test
-          expect(report.callCount).to.equal(10);
-          expect(report.lastCall.args[2]).to.be.instanceOf(Error);
-        });
-    });
-
-  });
-
-  describe('options.backoffJitter', function() {
-
-    describe('fn:applyJitter', function() {
-      it('applies randomized offsets to base delay', function() {
-        for (let i = 0; i < 10; i++) {
-          const withJitter = applyJitter(1000, 100);
-          expect((withJitter >= 900 && withJitter <= 1100)).to.equal(true);
-        }
-      });
-      
-      it('never returns values less than zero', function() {
-        for (let i = 0; i < 10; i++) {
-          expect(applyJitter(10, 1000) >= 0).to.equal(true);
-        }
-      });
-    });
-
-    it('should resolve after 1 retries and an eventual delay in range of 80-120 ms', async function() {
-      var initialDelay = 100;
-      var delayJitter = 20;
-
-      // Given
-      var callback = sinon.stub();
-      callback.rejects(this.soRejected);
-      callback.onCall(1).resolves(this.soResolved);
-
-      // When
-      var startTime = moment();
-      const result = await retry(callback, { max: 5, backoffBase: initialDelay, backoffJitter: delayJitter });
-      var endTime = moment();
-
-      // Then
-      expect(result).to.equal(this.soResolved);
-      expect(callback.callCount).to.equal(2);
-      expect(endTime.diff(startTime)).to.be.within(75, 125);
-    });
-  });
-});
Index: ckend/node_modules/retry-as-promised/tsconfig.json
===================================================================
--- backend/node_modules/retry-as-promised/tsconfig.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,104 +1,0 @@
-{
-  "compilerOptions": {
-    /* Visit https://aka.ms/tsconfig to read more about this file */
-
-    /* Projects */
-    // "incremental": true,                              /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
-    // "composite": true,                                /* Enable constraints that allow a TypeScript project to be used with project references. */
-    // "tsBuildInfoFile": "./.tsbuildinfo",              /* Specify the path to .tsbuildinfo incremental compilation file. */
-    // "disableSourceOfProjectReferenceRedirect": true,  /* Disable preferring source files instead of declaration files when referencing composite projects. */
-    // "disableSolutionSearching": true,                 /* Opt a project out of multi-project reference checking when editing. */
-    // "disableReferencedProjectLoad": true,             /* Reduce the number of projects loaded automatically by TypeScript. */
-
-    /* Language and Environment */
-    "target": "es2016",                                  /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
-    // "lib": [],                                        /* Specify a set of bundled library declaration files that describe the target runtime environment. */
-    // "jsx": "preserve",                                /* Specify what JSX code is generated. */
-    // "experimentalDecorators": true,                   /* Enable experimental support for TC39 stage 2 draft decorators. */
-    // "emitDecoratorMetadata": true,                    /* Emit design-type metadata for decorated declarations in source files. */
-    // "jsxFactory": "",                                 /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
-    // "jsxFragmentFactory": "",                         /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
-    // "jsxImportSource": "",                            /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
-    // "reactNamespace": "",                             /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
-    // "noLib": true,                                    /* Disable including any library files, including the default lib.d.ts. */
-    // "useDefineForClassFields": true,                  /* Emit ECMAScript-standard-compliant class fields. */
-    // "moduleDetection": "auto",                        /* Control what method is used to detect module-format JS files. */
-
-    /* Modules */
-    "module": "commonjs",                                /* Specify what module code is generated. */
-    // "rootDir": "./",                                  /* Specify the root folder within your source files. */
-    // "moduleResolution": "node",                       /* Specify how TypeScript looks up a file from a given module specifier. */
-    // "baseUrl": "./",                                  /* Specify the base directory to resolve non-relative module names. */
-    // "paths": {},                                      /* Specify a set of entries that re-map imports to additional lookup locations. */
-    // "rootDirs": [],                                   /* Allow multiple folders to be treated as one when resolving modules. */
-    // "typeRoots": [],                                  /* Specify multiple folders that act like './node_modules/@types'. */
-    // "types": [],                                      /* Specify type package names to be included without being referenced in a source file. */
-    // "allowUmdGlobalAccess": true,                     /* Allow accessing UMD globals from modules. */
-    // "moduleSuffixes": [],                             /* List of file name suffixes to search when resolving a module. */
-    // "resolveJsonModule": true,                        /* Enable importing .json files. */
-    // "noResolve": true,                                /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
-
-    /* JavaScript Support */
-    // "allowJs": true,                                  /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
-    // "checkJs": true,                                  /* Enable error reporting in type-checked JavaScript files. */
-    // "maxNodeModuleJsDepth": 1,                        /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
-
-    /* Emit */
-    "declaration": true,                              /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
-    // "declarationMap": true,                           /* Create sourcemaps for d.ts files. */
-    // "emitDeclarationOnly": true,                      /* Only output d.ts files and not JavaScript files. */
-    // "sourceMap": true,                                /* Create source map files for emitted JavaScript files. */
-    // "outFile": "./",                                  /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
-    "outDir": "./dist/",                                   /* Specify an output folder for all emitted files. */
-    // "removeComments": true,                           /* Disable emitting comments. */
-    // "noEmit": true,                                   /* Disable emitting files from a compilation. */
-    // "importHelpers": true,                            /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
-    // "importsNotUsedAsValues": "remove",               /* Specify emit/checking behavior for imports that are only used for types. */
-    // "downlevelIteration": true,                       /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
-    // "sourceRoot": "",                                 /* Specify the root path for debuggers to find the reference source code. */
-    // "mapRoot": "",                                    /* Specify the location where debugger should locate map files instead of generated locations. */
-    // "inlineSourceMap": true,                          /* Include sourcemap files inside the emitted JavaScript. */
-    // "inlineSources": true,                            /* Include source code in the sourcemaps inside the emitted JavaScript. */
-    // "emitBOM": true,                                  /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
-    // "newLine": "crlf",                                /* Set the newline character for emitting files. */
-    // "stripInternal": true,                            /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
-    // "noEmitHelpers": true,                            /* Disable generating custom helper functions like '__extends' in compiled output. */
-    // "noEmitOnError": true,                            /* Disable emitting files if any type checking errors are reported. */
-    // "preserveConstEnums": true,                       /* Disable erasing 'const enum' declarations in generated code. */
-    // "declarationDir": "./",                           /* Specify the output directory for generated declaration files. */
-    // "preserveValueImports": true,                     /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
-
-    /* Interop Constraints */
-    // "isolatedModules": true,                          /* Ensure that each file can be safely transpiled without relying on other imports. */
-    // "allowSyntheticDefaultImports": true,             /* Allow 'import x from y' when a module doesn't have a default export. */
-    "esModuleInterop": true,                             /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
-    // "preserveSymlinks": true,                         /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
-    "forceConsistentCasingInFileNames": true,            /* Ensure that casing is correct in imports. */
-
-    /* Type Checking */
-    "strict": true,                                      /* Enable all strict type-checking options. */
-    "noImplicitAny": true,                            /* Enable error reporting for expressions and declarations with an implied 'any' type. */
-    "strictNullChecks": true,                         /* When type checking, take into account 'null' and 'undefined'. */
-    // "strictFunctionTypes": true,                      /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
-    // "strictBindCallApply": true,                      /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
-    // "strictPropertyInitialization": true,             /* Check for class properties that are declared but not set in the constructor. */
-    "noImplicitThis": true,                           /* Enable error reporting when 'this' is given the type 'any'. */
-    // "useUnknownInCatchVariables": true,               /* Default catch clause variables as 'unknown' instead of 'any'. */
-    // "alwaysStrict": true,                             /* Ensure 'use strict' is always emitted. */
-    "noUnusedLocals": true,                           /* Enable error reporting when local variables aren't read. */
-    // "noUnusedParameters": true,                       /* Raise an error when a function parameter isn't read. */
-    // "exactOptionalPropertyTypes": true,               /* Interpret optional property types as written, rather than adding 'undefined'. */
-    // "noImplicitReturns": true,                        /* Enable error reporting for codepaths that do not explicitly return in a function. */
-    "noFallthroughCasesInSwitch": true,               /* Enable error reporting for fallthrough cases in switch statements. */
-    // "noUncheckedIndexedAccess": true,                 /* Add 'undefined' to a type when accessed using an index. */
-    // "noImplicitOverride": true,                       /* Ensure overriding members in derived classes are marked with an override modifier. */
-    // "noPropertyAccessFromIndexSignature": true,       /* Enforces using indexed accessors for keys declared using an indexed type. */
-    // "allowUnusedLabels": true,                        /* Disable error reporting for unused labels. */
-    // "allowUnreachableCode": true,                     /* Disable error reporting for unreachable code. */
-
-    /* Completeness */
-    // "skipDefaultLibCheck": true,                      /* Skip type checking .d.ts files that are included with TypeScript. */
-    "skipLibCheck": true                                 /* Skip type checking all .d.ts files. */
-  },
-  "files": ["index.ts"]
-}
Index: ckend/node_modules/sequelize-pool/CHANGELOG.md
===================================================================
--- backend/node_modules/sequelize-pool/CHANGELOG.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-# Changelog
-
-## 7.x
-
-- breaking: Support only `Node >= 10`
-- fix: `acquire` not resolving after destroying available resources
-
-## 6.0.0
-
-- change: `destory` (and `destoryAllNow`) are async now, they wait for `factory.destory`
-
-## 5.0.0
-
-- Typescript conversion. API is unchanged.
-
-## 4.0.0
-
-- Flow typed code. API is unchanged.
-
-## v3.1.0
-
-- added `maxUses` options [#18](https://github.com/sequelize/sequelize-pool/pull/18)
Index: ckend/node_modules/sequelize-pool/LICENSE
===================================================================
--- backend/node_modules/sequelize-pool/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-(The MIT License)
-
-Copyright (c) 2018-present Sushant <sushantdhiman@outlook.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
---------------------------------
-
-(Original Fork License)
-
-[generic-pool@2.5]
-
-Copyright (c) 2010-2016 James Cooper <james@bitmechanic.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-'Software'), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/sequelize-pool/README.md
===================================================================
--- backend/node_modules/sequelize-pool/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,149 +1,0 @@
-# Sequelize Pool
-
-[![npm](https://img.shields.io/npm/v/sequelize-pool.svg?style=flat-square)](https://www.npmjs.com/package/sequelize-pool)
-[![Actions Status](https://github.com/sequelize/sequelize-pool/workflows/CI/badge.svg)](https://github.com/sequelize/sequelize-pool/actions)
-
-Resource pool implementation. It can be used to throttle expensive resources.
-
-**Note:**
-This is a fork from [generic-pool@v2.5](https://github.com/coopernurse/node-pool/tree/v2.5).
-
-## Installation
-
-```sh
-npm i sequelize-pool
-```
-
-## API Documentation
-
-You can find full API documentation in [docs/README.md](docs/README.md)
-
-## Example
-
-### Step 1 - Create pool using a factory object
-
-```js
-// Create a MySQL connection pool
-var Pool = require('sequelize-pool').Pool;
-var mysql2 = require('mysql2/promise');
-
-var pool = new Pool({
-  name: 'mysql',
-  create: async () => {
-    // create a new connection
-    // return as a promise
-    return mysql2.createConnection({
-      user: 'scott',
-      password: 'tiger',
-      database: 'mydb',
-    });
-  },
-  destroy: (connection) => {
-    // this function should destroy connection. Pool waits for promise (if returned).
-    // connection is removed from pool and this method is called and awaited for.
-    connection.end();
-  },
-  validate: (connection) => connection.closed !== true,
-  max: 5,
-  min: 0,
-});
-```
-
-### Step 2 - Use pool in your code to acquire/release resources
-
-```js
-// acquire connection
-(async () => {
-  // Get new connection from pool.
-  // This method can throw TimeoutError if connection was not created in
-  // specified `factory.acquireTimeoutMillis` time.
-  const connection = await pool.acquire();
-
-  const result = connection.query('select * from foo');
-
-  // return connection back to pool so it can be reused
-  pool.release(connection);
-})();
-```
-
-### Step 3 - Drain pool during shutdown (optional)
-
-If you are shutting down a long-lived process, you may notice
-that node fails to exit for 30 seconds or so. This is a side
-effect of the `idleTimeoutMillis` behaviour -- the pool has a
-`setTimeout()` call registered that is in the event loop queue, so
-node won't terminate until all resources have timed out, and the pool
-stops trying to manage them.
-
-This behavior will be more problematic when you set `factory.min > 0`,
-as the pool will never become empty, and the `setTimeout` calls will
-never end.
-
-In these cases, use the `pool.drain()` function. This sets the pool
-into a "draining" state which will gracefully wait until all
-idle resources have timed out. For example, you can call:
-
-```js
-// Only call this once in your application -- at the point you want
-// to shutdown and stop using this pool.
-pool.drain().then(() => pool.destroyAllNow());
-```
-
-If you do this, your node process will exit gracefully.
-
-## Draining
-
-If you know would like to terminate all the resources in your pool before
-their timeouts have been reached, you can use `destroyAllNow()` in conjunction
-with `drain()`:
-
-```js
-pool.drain().then(() => pool.destroyAllNow());
-```
-
-One side-effect of calling `drain()` is that subsequent calls to `acquire()`
-will throw an Error.
-
-## Using `maxUses` option
-
-Imagine a scenario where you have 10 app servers (hosting an API) that each connect to a read-replica set of 3 members, accessible behind a DNS name that round-robins IPs for the 3 replicas. Each app server rus a connection pool of 25 connections.
-
-You start your app servers with an ambient traffic load of 50 http requests per second, and the connection pools likely fill up in a minute or two. Everything is great at this point.
-
-But when you hit weekly traffic peaks, you might reach up to 1,000 http requests per second. If you have a DB with elastic read replicas, you might quickly add 10 more read replicas during this peak time and scale them back down during slower times of the week in order to reduce cost and avoid the additional replication lag you might see with larger numbers or read replicas.
-
-When you add these 10 read replicas, assuming the first 3 remain healthy, the connection pool with not inherently adopt these new replicas because the pools are full and the connections are healthy, so connections are continuously reused with no need to create new ones. Some level of intervention is needed to fill the connection pool with connections that are balanced between all the replicas.
-
-If you set the `maxUses` configuration option, the pool will proactively retire a resource (connection) once it has been acquired and released `maxUses` number of times, which over a period of time will eventually lead to a relatively balanced pool.
-
-One way to calculate a reasonable value for `maxUses` is to identify an acceptable window for rebalancing and then solve for `maxUses`:
-
-```sh
-   maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize
-```
-
-In the example above, assuming we acquire and release 1 connection per request and we are aiming for a 30 minute rebalancing window:
-
-```sh
-    maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize
-       7200 =        1800            *          1000          /        10       /    25
-```
-
-...in other words we would retire and replace a connection after every 7200 uses, which we expect to be around 30 minutes under peak load.
-
-Of course, you'll want to test scenarios for your own application since every app and every traffic pattern is different.
-
-## Contributing
-
-We use [Node Tap](https://node-tap.org/) for testing.
-
-```sh
-npm install
-npm test
-```
-
-Documentation is generated with `typedoc`
-
-```sh
-npm run docs
-```
Index: ckend/node_modules/sequelize-pool/lib/AggregateError.js
===================================================================
--- backend/node_modules/sequelize-pool/lib/AggregateError.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.AggregateError = void 0;
-class AggregateError extends Error {
-    constructor(errors) {
-        super();
-        this.errors = errors;
-        this.name = 'AggregateError';
-    }
-    toString() {
-        const message = `AggregateError of:\n${this.errors
-            .map((error) => error === this
-            ? '[Circular AggregateError]'
-            : error instanceof AggregateError
-                ? String(error).replace(/\n$/, '').replace(/^/gm, '  ')
-                : String(error).replace(/^/gm, '    ').substring(2))
-            .join('\n')}\n`;
-        return message;
-    }
-}
-exports.AggregateError = AggregateError;
-//# sourceMappingURL=AggregateError.js.map
Index: ckend/node_modules/sequelize-pool/lib/AggregateError.js.map
===================================================================
--- backend/node_modules/sequelize-pool/lib/AggregateError.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"AggregateError.js","sourceRoot":"","sources":["../src/AggregateError.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAe,SAAQ,KAAK;IAGvC,YAAY,MAAe;QACzB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,uBAAuB,IAAI,CAAC,MAAM;aAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,KAAK,KAAK,IAAI;YACZ,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,KAAK,YAAY,cAAc;gBACjC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;gBACvD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CACtD;aACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AArBD,wCAqBC"}
Index: ckend/node_modules/sequelize-pool/lib/Deferred.js
===================================================================
--- backend/node_modules/sequelize-pool/lib/Deferred.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,38 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Deferred = void 0;
-const TimeoutError_1 = require("./TimeoutError");
-class Deferred {
-    constructor() {
-        this._promise = new Promise((resolve, reject) => {
-            this._reject = reject;
-            this._resolve = resolve;
-        });
-    }
-    registerTimeout(timeoutInMillis, callback) {
-        if (this._timeout)
-            return;
-        this._timeout = setTimeout(() => {
-            callback();
-            this.reject(new TimeoutError_1.TimeoutError('Operation timeout'));
-        }, timeoutInMillis);
-    }
-    _clearTimeout() {
-        if (!this._timeout)
-            return;
-        clearTimeout(this._timeout);
-    }
-    resolve(value) {
-        this._clearTimeout();
-        this._resolve(value);
-    }
-    reject(error) {
-        this._clearTimeout();
-        this._reject(error);
-    }
-    promise() {
-        return this._promise;
-    }
-}
-exports.Deferred = Deferred;
-//# sourceMappingURL=Deferred.js.map
Index: ckend/node_modules/sequelize-pool/lib/Deferred.js.map
===================================================================
--- backend/node_modules/sequelize-pool/lib/Deferred.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../src/Deferred.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAO9C,MAAa,QAAQ;IAMnB;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe,CAAC,eAAuB,EAAE,QAAkB;QACzD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,QAAQ,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,2BAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACrD,CAAC,EAAE,eAAe,CAAC,CAAC;IACtB,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,KAAQ;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,KAAY;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAxCD,4BAwCC"}
Index: ckend/node_modules/sequelize-pool/lib/Pool.js
===================================================================
--- backend/node_modules/sequelize-pool/lib/Pool.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,291 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Pool = void 0;
-const Deferred_1 = require("./Deferred");
-const AggregateError_1 = require("./AggregateError");
-class Pool {
-    constructor(factory) {
-        this.log = false;
-        if (!factory.create) {
-            throw new Error('create function is required');
-        }
-        if (!factory.destroy) {
-            throw new Error('destroy function is required');
-        }
-        if (!factory.validate) {
-            throw new Error('validate function is required');
-        }
-        if (typeof factory.min !== 'number' ||
-            factory.min < 0 ||
-            factory.min !== Math.round(factory.min)) {
-            throw new Error('min must be an integer >= 0');
-        }
-        if (typeof factory.max !== 'number' ||
-            factory.max <= 0 ||
-            factory.max !== Math.round(factory.max)) {
-            throw new Error('max must be an integer > 0');
-        }
-        if (factory.min > factory.max) {
-            throw new Error('max is smaller than min');
-        }
-        if (factory.maxUses !== undefined &&
-            (typeof factory.maxUses !== 'number' || factory.maxUses < 0)) {
-            throw new Error('maxUses must be an integer >= 0');
-        }
-        this.idleTimeoutMillis = factory.idleTimeoutMillis || 30000;
-        this.acquireTimeoutMillis = factory.acquireTimeoutMillis || 30000;
-        this.reapIntervalMillis = factory.reapIntervalMillis || 1000;
-        this.maxUsesPerResource = factory.maxUses || Infinity;
-        this.log = factory.log || false;
-        this._factory = factory;
-        this._count = 0;
-        this._draining = false;
-        this._pendingAcquires = [];
-        this._inUseObjects = [];
-        this._availableObjects = [];
-        this._removeIdleScheduled = false;
-    }
-    get size() {
-        return this._count;
-    }
-    get name() {
-        return this._factory.name;
-    }
-    get available() {
-        return this._availableObjects.length;
-    }
-    get using() {
-        return this._inUseObjects.length;
-    }
-    get waiting() {
-        return this._pendingAcquires.length;
-    }
-    get maxSize() {
-        return this._factory.max;
-    }
-    get minSize() {
-        return this._factory.min;
-    }
-    _log(message, level) {
-        if (typeof this.log === 'function') {
-            this.log(message, level);
-        }
-        else if (this.log) {
-            console.log(`${level.toUpperCase()} pool ${this.name || ''} - ${message}`);
-        }
-    }
-    _removeIdle() {
-        const toRemove = [];
-        const now = Date.now();
-        let i;
-        let available = this._availableObjects.length;
-        const maxRemovable = this.size - this.minSize;
-        let timeout;
-        this._removeIdleScheduled = false;
-        for (i = 0; i < available && maxRemovable > toRemove.length; i++) {
-            timeout = this._availableObjects[i].timeout;
-            if (now >= timeout) {
-                this._log('removeIdle() destroying obj - now:' + now + ' timeout:' + timeout, 'verbose');
-                toRemove.push(this._availableObjects[i].resource);
-            }
-        }
-        toRemove.forEach(this.destroy, this);
-        available = this._availableObjects.length;
-        if (available > 0) {
-            this._log('this._availableObjects.length=' + available, 'verbose');
-            this._scheduleRemoveIdle();
-        }
-        else {
-            this._log('removeIdle() all objects removed', 'verbose');
-        }
-    }
-    _scheduleRemoveIdle() {
-        if (!this._removeIdleScheduled) {
-            this._removeIdleScheduled = true;
-            this._removeIdleTimer = setTimeout(() => {
-                this._removeIdle();
-            }, this.reapIntervalMillis);
-        }
-    }
-    _dispense() {
-        let wrappedResource = null;
-        const waitingCount = this._pendingAcquires.length;
-        this._log(`dispense() clients=${waitingCount} available=${this._availableObjects.length}`, 'info');
-        if (waitingCount < 1) {
-            return;
-        }
-        while (this._availableObjects.length > 0) {
-            this._log('dispense() - reusing obj', 'verbose');
-            wrappedResource = this._availableObjects[this._availableObjects.length - 1];
-            if (!this._factory.validate(wrappedResource.resource)) {
-                this.destroy(wrappedResource.resource);
-                continue;
-            }
-            this._availableObjects.pop();
-            this._addResourceToInUseObjects(wrappedResource.resource, wrappedResource.useCount);
-            const deferred = this._pendingAcquires.shift();
-            return deferred.resolve(wrappedResource.resource);
-        }
-        if (this.size < this.maxSize) {
-            this._createResource();
-        }
-    }
-    _createResource() {
-        this._count += 1;
-        this._log(`createResource() - creating obj - count=${this.size} min=${this.minSize} max=${this.maxSize}`, 'verbose');
-        this._factory
-            .create()
-            .then((resource) => {
-            const deferred = this._pendingAcquires.shift();
-            if (deferred) {
-                this._addResourceToInUseObjects(resource, 0);
-                deferred.resolve(resource);
-            }
-            else {
-                this._addResourceToAvailableObjects(resource, 0);
-            }
-        })
-            .catch((error) => {
-            const deferred = this._pendingAcquires.shift();
-            this._count -= 1;
-            if (this._count < 0)
-                this._count = 0;
-            if (deferred) {
-                deferred.reject(error);
-            }
-            process.nextTick(() => {
-                this._dispense();
-            });
-        });
-    }
-    _addResourceToAvailableObjects(resource, useCount) {
-        const wrappedResource = {
-            resource: resource,
-            useCount: useCount,
-            timeout: Date.now() + this.idleTimeoutMillis,
-        };
-        this._availableObjects.push(wrappedResource);
-        this._dispense();
-        this._scheduleRemoveIdle();
-    }
-    _addResourceToInUseObjects(resource, useCount) {
-        const wrappedResource = {
-            resource: resource,
-            useCount: useCount,
-        };
-        this._inUseObjects.push(wrappedResource);
-    }
-    _ensureMinimum() {
-        let i, diff;
-        if (!this._draining && this.size < this.minSize) {
-            diff = this.minSize - this.size;
-            for (i = 0; i < diff; i++) {
-                this._createResource();
-            }
-        }
-    }
-    acquire() {
-        if (this._draining) {
-            return Promise.reject(new Error('pool is draining and cannot accept work'));
-        }
-        const deferred = new Deferred_1.Deferred();
-        deferred.registerTimeout(this.acquireTimeoutMillis, () => {
-            this._pendingAcquires = this._pendingAcquires.filter((pending) => pending !== deferred);
-        });
-        this._pendingAcquires.push(deferred);
-        this._dispense();
-        return deferred.promise();
-    }
-    release(resource) {
-        if (this._availableObjects.some((resourceWithTimeout) => resourceWithTimeout.resource === resource)) {
-            this._log('release called twice for the same resource: ' + new Error().stack, 'error');
-            return;
-        }
-        const index = this._inUseObjects.findIndex((wrappedResource) => wrappedResource.resource === resource);
-        if (index < 0) {
-            this._log('attempt to release an invalid resource: ' + new Error().stack, 'error');
-            return;
-        }
-        const wrappedResource = this._inUseObjects[index];
-        wrappedResource.useCount += 1;
-        if (wrappedResource.useCount >= this.maxUsesPerResource) {
-            this._log('release() destroying obj - useCount:' +
-                wrappedResource.useCount +
-                ' maxUsesPerResource:' +
-                this.maxUsesPerResource, 'verbose');
-            this.destroy(wrappedResource.resource);
-            this._dispense();
-        }
-        else {
-            this._inUseObjects.splice(index, 1);
-            this._addResourceToAvailableObjects(wrappedResource.resource, wrappedResource.useCount);
-        }
-    }
-    async destroy(resource) {
-        const available = this._availableObjects.length;
-        const using = this._inUseObjects.length;
-        this._availableObjects = this._availableObjects.filter((object) => object.resource !== resource);
-        this._inUseObjects = this._inUseObjects.filter((object) => object.resource !== resource);
-        if (available === this._availableObjects.length &&
-            using === this._inUseObjects.length) {
-            this._ensureMinimum();
-            return;
-        }
-        this._count -= 1;
-        if (this._count < 0)
-            this._count = 0;
-        try {
-            await this._factory.destroy(resource);
-        }
-        finally {
-            this._ensureMinimum();
-            if (!this._draining) {
-                process.nextTick(() => {
-                    this._dispense();
-                });
-            }
-        }
-    }
-    drain() {
-        this._log('draining', 'info');
-        this._draining = true;
-        const check = (callback) => {
-            if (this._pendingAcquires.length > 0) {
-                this._dispense();
-                setTimeout(() => {
-                    check(callback);
-                }, 100);
-                return;
-            }
-            if (this._availableObjects.length !== this._count) {
-                setTimeout(() => {
-                    check(callback);
-                }, 100);
-                return;
-            }
-            callback();
-        };
-        return new Promise((resolve) => check(resolve));
-    }
-    async destroyAllNow() {
-        this._log('force destroying all objects', 'info');
-        this._removeIdleScheduled = false;
-        clearTimeout(this._removeIdleTimer);
-        const resources = this._availableObjects.map((resource) => resource.resource);
-        const errors = [];
-        for (const resource of resources) {
-            try {
-                await this.destroy(resource);
-            }
-            catch (ex) {
-                this._log('Error destroying resource: ' + ex.stack, 'error');
-                errors.push(ex);
-            }
-        }
-        if (errors.length > 0) {
-            throw new AggregateError_1.AggregateError(errors);
-        }
-    }
-}
-exports.Pool = Pool;
-//# sourceMappingURL=Pool.js.map
Index: ckend/node_modules/sequelize-pool/lib/Pool.js.map
===================================================================
--- backend/node_modules/sequelize-pool/lib/Pool.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"Pool.js","sourceRoot":"","sources":["../src/Pool.ts"],"names":[],"mappings":"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"}
Index: ckend/node_modules/sequelize-pool/lib/TimeoutError.js
===================================================================
--- backend/node_modules/sequelize-pool/lib/TimeoutError.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.TimeoutError = void 0;
-class TimeoutError extends Error {
-}
-exports.TimeoutError = TimeoutError;
-//# sourceMappingURL=TimeoutError.js.map
Index: ckend/node_modules/sequelize-pool/lib/TimeoutError.js.map
===================================================================
--- backend/node_modules/sequelize-pool/lib/TimeoutError.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"TimeoutError.js","sourceRoot":"","sources":["../src/TimeoutError.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAa,SAAQ,KAAK;CAAG;AAA1C,oCAA0C"}
Index: ckend/node_modules/sequelize-pool/lib/index.js
===================================================================
--- backend/node_modules/sequelize-pool/lib/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.Pool = exports.AggregateError = exports.TimeoutError = void 0;
-var TimeoutError_1 = require("./TimeoutError");
-Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return TimeoutError_1.TimeoutError; } });
-var AggregateError_1 = require("./AggregateError");
-Object.defineProperty(exports, "AggregateError", { enumerable: true, get: function () { return AggregateError_1.AggregateError; } });
-var Pool_1 = require("./Pool");
-Object.defineProperty(exports, "Pool", { enumerable: true, get: function () { return Pool_1.Pool; } });
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize-pool/lib/index.js.map
===================================================================
--- backend/node_modules/sequelize-pool/lib/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,+BAA8C;AAArC,4FAAA,IAAI,OAAA"}
Index: ckend/node_modules/sequelize-pool/package.json
===================================================================
--- backend/node_modules/sequelize-pool/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,51 +1,0 @@
-{
-  "name": "sequelize-pool",
-  "description": "Resource pooling for Node.JS",
-  "version": "7.1.0",
-  "author": "Sushant <sushantdhiman@outlook.com>",
-  "keywords": [
-    "pool",
-    "pooling",
-    "throttle",
-    "sequelize"
-  ],
-  "main": "lib/index.js",
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/sushantdhiman/sequelize-pool.git"
-  },
-  "files": [
-    "lib",
-    "types"
-  ],
-  "types": "types",
-  "dependencies": {},
-  "devDependencies": {
-    "@types/node": "^10.17.54",
-    "@typescript-eslint/eslint-plugin": "^4.0.0",
-    "@typescript-eslint/parser": "^4.0.0",
-    "eslint": "^7.0.0",
-    "eslint-config-prettier": "^7.0.0",
-    "eslint-plugin-prettier": "^3.1.2",
-    "prettier": "^2.0.2",
-    "tap": "^14.10.7",
-    "typedoc": "^0.20.30",
-    "typedoc-plugin-markdown": "^3.6.0",
-    "typescript": "~4.2.2"
-  },
-  "engines": {
-    "node": ">= 10.0.0"
-  },
-  "scripts": {
-    "build": "tsc",
-    "test": "npm run lint && npm run test:raw",
-    "lint": "eslint --ext .js,.ts src/**/* test/**/*",
-    "pretty": "prettier src/**/*.ts test/**/*.js --write",
-    "docs": "typedoc",
-    "test:raw": "tap test/**/*-test.js"
-  },
-  "prettier": {
-    "singleQuote": true
-  },
-  "license": "MIT"
-}
Index: ckend/node_modules/sequelize-pool/types/AggregateError.d.ts
===================================================================
--- backend/node_modules/sequelize-pool/types/AggregateError.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export declare class AggregateError extends Error {
-    errors: Error[];
-    constructor(errors: Error[]);
-    toString(): string;
-}
Index: ckend/node_modules/sequelize-pool/types/Deferred.d.ts
===================================================================
--- backend/node_modules/sequelize-pool/types/Deferred.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-/// <reference types="node" />
-export declare class Deferred<T> {
-    protected _promise: Promise<T>;
-    protected _resolve: (value: T) => void;
-    protected _reject: (error: Error) => void;
-    protected _timeout: NodeJS.Timer;
-    constructor();
-    registerTimeout(timeoutInMillis: number, callback: Function): void;
-    protected _clearTimeout(): void;
-    resolve(value: T): void;
-    reject(error: Error): void;
-    promise(): Promise<T>;
-}
Index: ckend/node_modules/sequelize-pool/types/Pool.d.ts
===================================================================
--- backend/node_modules/sequelize-pool/types/Pool.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,63 +1,0 @@
-/// <reference types="node" />
-import { Deferred } from './Deferred';
-declare type LogLevel = 'verbose' | 'info' | 'error';
-declare type FactoryLogger = (message: string, level: LogLevel) => void;
-declare type PooledObject<T> = {
-    resource: T;
-    timeout: number;
-    useCount: number;
-};
-declare type InUseObject<T> = {
-    resource: T;
-    useCount: number;
-};
-export interface FactoryOptions<T> {
-    name?: string;
-    create: () => Promise<T>;
-    destroy: (resource: T) => void | Promise<void>;
-    validate: (resource: T) => boolean;
-    max: number;
-    min: number;
-    maxUses?: number;
-    idleTimeoutMillis?: number;
-    acquireTimeoutMillis?: number;
-    reapIntervalMillis?: number;
-    log?: FactoryLogger | boolean;
-}
-export declare class Pool<RawResource> {
-    protected _factory: FactoryOptions<RawResource>;
-    protected _count: number;
-    protected _draining: boolean;
-    protected idleTimeoutMillis: number;
-    protected acquireTimeoutMillis: number;
-    protected reapIntervalMillis: number;
-    protected log: FactoryLogger | boolean;
-    protected maxUsesPerResource: number;
-    protected _pendingAcquires: Deferred<RawResource>[];
-    protected _inUseObjects: InUseObject<RawResource>[];
-    protected _availableObjects: PooledObject<RawResource>[];
-    protected _removeIdleTimer: NodeJS.Timeout;
-    protected _removeIdleScheduled: boolean;
-    constructor(factory: FactoryOptions<RawResource>);
-    get size(): number;
-    get name(): string;
-    get available(): number;
-    get using(): number;
-    get waiting(): number;
-    get maxSize(): number;
-    get minSize(): number;
-    protected _log(message: string, level: LogLevel): void;
-    protected _removeIdle(): void;
-    protected _scheduleRemoveIdle(): void;
-    protected _dispense(): void;
-    protected _createResource(): void;
-    protected _addResourceToAvailableObjects(resource: RawResource, useCount: number): void;
-    protected _addResourceToInUseObjects(resource: RawResource, useCount: number): void;
-    protected _ensureMinimum(): void;
-    acquire(): Promise<RawResource>;
-    release(resource: RawResource): void;
-    destroy(resource: RawResource): Promise<void>;
-    drain(): Promise<void>;
-    destroyAllNow(): Promise<void>;
-}
-export {};
Index: ckend/node_modules/sequelize-pool/types/TimeoutError.d.ts
===================================================================
--- backend/node_modules/sequelize-pool/types/TimeoutError.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-export declare class TimeoutError extends Error {
-}
Index: ckend/node_modules/sequelize-pool/types/index.d.ts
===================================================================
--- backend/node_modules/sequelize-pool/types/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export { TimeoutError } from './TimeoutError';
-export { AggregateError } from './AggregateError';
-export { Pool, FactoryOptions } from './Pool';
Index: ckend/node_modules/sequelize/LICENSE
===================================================================
--- backend/node_modules/sequelize/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-MIT License
-
-Copyright (c) 2014-present Sequelize contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/sequelize/README.md
===================================================================
--- backend/node_modules/sequelize/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,83 +1,0 @@
-<p align="center">
-  <img src="logo.svg" width="100" alt="Sequelize logo" />
-  <h1 align="center"><a href="https://sequelize.org">Sequelize</a></h1>
-</p>
-
-[![npm version](https://badgen.net/npm/v/sequelize)](https://www.npmjs.com/package/sequelize)
-[![Build Status](https://github.com/sequelize/sequelize/workflows/CI/badge.svg)](https://github.com/sequelize/sequelize/actions?query=workflow%3ACI)
-[![npm downloads](https://badgen.net/npm/dm/sequelize)](https://www.npmjs.com/package/sequelize)
-[![contributors](https://img.shields.io/github/contributors/sequelize/sequelize)](https://github.com/sequelize/sequelize/graphs/contributors)
-[![Open Collective](https://img.shields.io/opencollective/backers/sequelize)](https://opencollective.com/sequelize#section-contributors)
-[![sponsor](https://img.shields.io/opencollective/all/sequelize?label=sponsors)](https://opencollective.com/sequelize)
-[![Merged PRs](https://badgen.net/github/merged-prs/sequelize/sequelize)](https://github.com/sequelize/sequelize)
-[![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release)
-[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
-
-Sequelize is an easy-to-use and promise-based [Node.js](https://nodejs.org/en/about/) [ORM tool](https://en.wikipedia.org/wiki/Object-relational_mapping) for [Postgres](https://en.wikipedia.org/wiki/PostgreSQL), [MySQL](https://en.wikipedia.org/wiki/MySQL), [MariaDB](https://en.wikipedia.org/wiki/MariaDB), [SQLite](https://en.wikipedia.org/wiki/SQLite), [DB2](https://en.wikipedia.org/wiki/IBM_Db2_Family), [Microsoft SQL Server](https://en.wikipedia.org/wiki/Microsoft_SQL_Server), and [Snowflake](https://www.snowflake.com/). It features solid transaction support, relations, eager and lazy loading, read replication and more.
-
-Would you like to contribute? Read [our contribution guidelines](https://github.com/sequelize/sequelize/blob/main/CONTRIBUTING.md) to know more. There are many ways to help! 😃
-
-## 🚀 Seeking New Maintainers for Sequelize! 🚀  
-
-We're looking for new maintainers to help finalize and release the next major version of Sequelize! If you're passionate about open-source and database ORMs, we'd love to have you onboard.  
-
-### 💰 Funding Available  
-We distribute **$2,500 per quarter** among maintainers and have additional funds for full-time contributions.  
-
-### 🛠️ What You’ll Work On  
-- Finalizing and releasing Sequelize’s next major version  
-- Improving TypeScript support and database integrations  
-- Fixing critical issues and shaping the ORM’s future  
-
-### 🤝 How to Get Involved  
-Interested? Join our Slack and reach out to **@WikiRik** or **@sdepold**:  
-➡️ **[sequelize.org/slack](https://sequelize.org/slack)**  
-
-We’d love to have you on board! 🚀  
-
-## :computer: Getting Started
-
-Ready to start using Sequelize? Head to [sequelize.org](https://sequelize.org) to begin!
-
-- [Our Getting Started guide for Sequelize 6 (stable)](https://sequelize.org/docs/v6/getting-started)
-
-## :money_with_wings: Supporting the project
-
-Do you like Sequelize and would like to give back to the engineering team behind it?
-
-We have recently created an [OpenCollective based money pool](https://opencollective.com/sequelize) which is shared amongst all core maintainers based on their contributions. Every support is wholeheartedly welcome. ❤️
-
-## :pencil: Major version changelog
-
-Please find upgrade information to major versions here:
-
-- [Upgrade from v5 to v6](https://sequelize.org/docs/v6/other-topics/upgrade-to-v6)
-
-## :book: Resources
-
-- [Documentation](https://sequelize.org)
-- [Databases Compatibility Table](https://sequelize.org/releases/)
-- [Changelog](https://github.com/sequelize/sequelize/releases)
-- [Discussions](https://github.com/sequelize/sequelize/discussions)
-- [Slack](https://sequelize.org/slack)
-- [Stack Overflow](https://stackoverflow.com/questions/tagged/sequelize.js)
-
-### :wrench: Tools
-
-- [CLI](https://github.com/sequelize/cli)
-- [With TypeScript](https://sequelize.org/docs/v6/other-topics/typescript)
-- [Enhanced TypeScript with decorators](https://github.com/RobinBuschmann/sequelize-typescript)
-- [For GraphQL](https://github.com/mickhansen/graphql-sequelize)
-- [For CockroachDB](https://github.com/cockroachdb/sequelize-cockroachdb)
-- [Awesome Sequelize](https://sequelize.org/docs/v6/other-topics/resources/)
-- [For YugabyteDB](https://github.com/yugabyte/sequelize-yugabytedb)
-
-### :speech_balloon: Translations
-
-- [English](https://sequelize.org) (Official)
-- [中文文档](https://github.com/demopark/sequelize-docs-Zh-CN) (Unofficial)
-
-## :warning: Responsible disclosure
-
-If you have security issues to report, please refer to our
-[Responsible Disclosure Policy](https://github.com/sequelize/sequelize/blob/main/SECURITY.md) for more details.
Index: ckend/node_modules/sequelize/index.js
===================================================================
--- backend/node_modules/sequelize/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-'use strict';
-
-// TODO [>=7]: remove me. I've been moved to 'exports' in package.json
-
-/**
-  * A Sequelize module that contains the sequelize entry point.
-  *
-  * @module sequelize
-  */
-
-/** Exports the sequelize entry point. */
-module.exports = require('./lib');
Index: ckend/node_modules/sequelize/lib/associations/base.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/base.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,33 +1,0 @@
-"use strict";
-const { AssociationError } = require("./../errors");
-class Association {
-  constructor(source, target, options = {}) {
-    this.source = source;
-    this.target = target;
-    this.options = options;
-    this.scope = options.scope;
-    this.isSelfAssociation = this.source === this.target;
-    this.as = options.as;
-    this.associationType = "";
-    if (source.hasAlias(options.as)) {
-      throw new AssociationError(`You have used the alias ${options.as} in two separate associations. Aliased associations must have unique aliases.`);
-    }
-  }
-  toInstanceArray(input) {
-    if (!Array.isArray(input)) {
-      input = [input];
-    }
-    return input.map((element) => {
-      if (element instanceof this.target)
-        return element;
-      const tmpInstance = {};
-      tmpInstance[this.target.primaryKeyAttribute] = element;
-      return this.target.build(tmpInstance, { isNewRecord: false });
-    });
-  }
-  [Symbol.for("nodejs.util.inspect.custom")]() {
-    return this.as;
-  }
-}
-module.exports = Association;
-//# sourceMappingURL=base.js.map
Index: ckend/node_modules/sequelize/lib/associations/base.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/base.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/base.js"],
-  "sourcesContent": ["'use strict';\n\nconst { AssociationError } = require('./../errors');\n\n/**\n * Creating associations in sequelize is done by calling one of the belongsTo / hasOne / hasMany / belongsToMany functions on a model (the source), and providing another model as the first argument to the function (the target).\n *\n * * hasOne - adds a foreign key to the target and singular association mixins to the source.\n * * belongsTo - add a foreign key and singular association mixins to the source.\n * * hasMany - adds a foreign key to target and plural association mixins to the source.\n * * belongsToMany - creates an N:M association with a join table and adds plural association mixins to the source. The junction table is created with sourceId and targetId.\n *\n * Creating an association will add a foreign key constraint to the attributes. All associations use `CASCADE` on update and `SET NULL` on delete, except for n:m, which also uses `CASCADE` on delete.\n *\n * When creating associations, you can provide an alias, via the `as` option. This is useful if the same model is associated twice, or you want your association to be called something other than the name of the target model.\n *\n * As an example, consider the case where users have many pictures, one of which is their profile picture. All pictures have a `userId`, but in addition the user model also has a `profilePictureId`, to be able to easily load the user's profile picture.\n *\n * ```js\n * User.hasMany(Picture)\n * User.belongsTo(Picture, { as: 'ProfilePicture', constraints: false })\n *\n * user.getPictures() // gets you all pictures\n * user.getProfilePicture() // gets you only the profile picture\n *\n * User.findAll({\n *   where: ...,\n *   include: [\n *     { model: Picture }, // load all pictures\n *     { model: Picture, as: 'ProfilePicture' }, // load the profile picture.\n *     // Notice that the spelling must be the exact same as the one in the association\n *   ]\n * })\n * ```\n * To get full control over the foreign key column added by sequelize, you can use the `foreignKey` option. It can either be a string, that specifies the name, or and object type definition,\n * equivalent to those passed to `sequelize.define`.\n *\n * ```js\n * User.hasMany(Picture, { foreignKey: 'uid' })\n * ```\n *\n * The foreign key column in Picture will now be called `uid` instead of the default `userId`.\n *\n * ```js\n * User.hasMany(Picture, {\n *   foreignKey: {\n *     name: 'uid',\n *     allowNull: false\n *   }\n * })\n * ```\n *\n * This specifies that the `uid` column cannot be null. In most cases this will already be covered by the foreign key constraints, which sequelize creates automatically, but can be useful in case where the foreign keys are disabled, e.g. due to circular references (see `constraints: false` below).\n *\n * When fetching associated models, you can limit your query to only load some models. These queries are written in the same way as queries to `find`/`findAll`. To only get pictures in JPG, you can do:\n *\n * ```js\n * user.getPictures({\n *   where: {\n *     format: 'jpg'\n *   }\n * })\n * ```\n *\n * There are several ways to update and add new associations. Continuing with our example of users and pictures:\n * ```js\n * user.addPicture(p) // Add a single picture\n * user.setPictures([p1, p2]) // Associate user with ONLY these two picture, all other associations will be deleted\n * user.addPictures([p1, p2]) // Associate user with these two pictures, but don't touch any current associations\n * ```\n *\n * You don't have to pass in a complete object to the association functions, if your associated model has a single primary key:\n *\n * ```js\n * user.addPicture(req.query.pid) // Here pid is just an integer, representing the primary key of the picture\n * ```\n *\n * In the example above we have specified that a user belongs to his profile picture. Conceptually, this might not make sense, but since we want to add the foreign key to the user model this is the way to do it.\n *\n * Note how we also specified `constraints: false` for profile picture. This is because we add a foreign key from user to picture (profilePictureId), and from picture to user (userId). If we were to add foreign keys to both, it would create a cyclic dependency, and sequelize would not know which table to create first, since user depends on picture, and picture depends on user. These kinds of problems are detected by sequelize before the models are synced to the database, and you will get an error along the lines of `Error: Cyclic dependency found. 'users' is dependent of itself`. If you encounter this, you should either disable some constraints, or rethink your associations completely.\n */\nclass Association {\n  constructor(source, target, options = {}) {\n    /**\n     * @type {Model}\n     */\n    this.source = source;\n\n    /**\n     * @type {Model}\n     */\n    this.target = target;\n\n    this.options = options;\n    this.scope = options.scope;\n    this.isSelfAssociation = this.source === this.target;\n    this.as = options.as;\n\n    /**\n     * The type of the association. One of `HasMany`, `BelongsTo`, `HasOne`, `BelongsToMany`\n     *\n     * @type {string}\n     */\n    this.associationType = '';\n\n    if (source.hasAlias(options.as)) {\n      throw new AssociationError(`You have used the alias ${options.as} in two separate associations. ` +\n      'Aliased associations must have unique aliases.'\n      );\n    }\n  }\n\n  /**\n   * Normalize input\n   *\n   * @param {Array|string} input it may be array or single obj, instance or primary key\n   *\n   * @private\n   * @returns {Array} built objects\n   */\n  toInstanceArray(input) {\n    if (!Array.isArray(input)) {\n      input = [input];\n    }\n\n    return input.map(element => {\n      if (element instanceof this.target) return element;\n\n      const tmpInstance = {};\n      tmpInstance[this.target.primaryKeyAttribute] = element;\n\n      return this.target.build(tmpInstance, { isNewRecord: false });\n    });\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')]() {\n    return this.as;\n  }\n}\n\nmodule.exports = Association;\n"],
-  "mappings": ";AAEA,MAAM,EAAE,qBAAqB,QAAQ;AA+ErC,kBAAkB;AAAA,EAChB,YAAY,QAAQ,QAAQ,UAAU,IAAI;AAIxC,SAAK,SAAS;AAKd,SAAK,SAAS;AAEd,SAAK,UAAU;AACf,SAAK,QAAQ,QAAQ;AACrB,SAAK,oBAAoB,KAAK,WAAW,KAAK;AAC9C,SAAK,KAAK,QAAQ;AAOlB,SAAK,kBAAkB;AAEvB,QAAI,OAAO,SAAS,QAAQ,KAAK;AAC/B,YAAM,IAAI,iBAAiB,2BAA2B,QAAQ;AAAA;AAAA;AAAA,EAclE,gBAAgB,OAAO;AACrB,QAAI,CAAC,MAAM,QAAQ,QAAQ;AACzB,cAAQ,CAAC;AAAA;AAGX,WAAO,MAAM,IAAI,aAAW;AAC1B,UAAI,mBAAmB,KAAK;AAAQ,eAAO;AAE3C,YAAM,cAAc;AACpB,kBAAY,KAAK,OAAO,uBAAuB;AAE/C,aAAO,KAAK,OAAO,MAAM,aAAa,EAAE,aAAa;AAAA;AAAA;AAAA,GAIxD,OAAO,IAAI,iCAAiC;AAC3C,WAAO,KAAK;AAAA;AAAA;AAIhB,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/belongs-to-many.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/belongs-to-many.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,566 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const Utils = require("./../utils");
-const Helpers = require("./helpers");
-const _ = require("lodash");
-const Association = require("./base");
-const BelongsTo = require("./belongs-to");
-const HasMany = require("./has-many");
-const HasOne = require("./has-one");
-const AssociationError = require("../errors").AssociationError;
-const EmptyResultError = require("../errors").EmptyResultError;
-const Op = require("../operators");
-class BelongsToMany extends Association {
-  constructor(source, target, options) {
-    super(source, target, options);
-    if (this.options.through === void 0 || this.options.through === true || this.options.through === null) {
-      throw new AssociationError(`${source.name}.belongsToMany(${target.name}) requires through option, pass either a string or a model`);
-    }
-    if (!this.options.through.model) {
-      this.options.through = {
-        model: options.through
-      };
-    }
-    this.associationType = "BelongsToMany";
-    this.targetAssociation = null;
-    this.sequelize = source.sequelize;
-    this.through = __spreadValues({}, this.options.through);
-    this.isMultiAssociation = true;
-    this.doubleLinked = false;
-    if (!this.as && this.isSelfAssociation) {
-      throw new AssociationError("'as' must be defined for many-to-many self-associations");
-    }
-    if (this.as) {
-      this.isAliased = true;
-      if (_.isPlainObject(this.as)) {
-        this.options.name = this.as;
-        this.as = this.as.plural;
-      } else {
-        this.options.name = {
-          plural: this.as,
-          singular: Utils.singularize(this.as)
-        };
-      }
-    } else {
-      this.as = this.target.options.name.plural;
-      this.options.name = this.target.options.name;
-    }
-    this.combinedTableName = Utils.combineTableNames(this.source.tableName, this.isSelfAssociation ? this.as || this.target.tableName : this.target.tableName);
-    if (this.isSelfAssociation) {
-      this.targetAssociation = this;
-    }
-    _.each(this.target.associations, (association) => {
-      if (association.associationType !== "BelongsToMany")
-        return;
-      if (association.target !== this.source)
-        return;
-      if (this.options.through.model === association.options.through.model) {
-        this.paired = association;
-        association.paired = this;
-      }
-    });
-    this.sourceKey = this.options.sourceKey || this.source.primaryKeyAttribute;
-    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;
-    if (this.options.targetKey) {
-      this.targetKey = this.options.targetKey;
-      this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;
-    } else {
-      this.targetKeyDefault = true;
-      this.targetKey = this.target.primaryKeyAttribute;
-      this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;
-    }
-    this._createForeignAndOtherKeys();
-    if (typeof this.through.model === "string") {
-      if (!this.sequelize.isDefined(this.through.model)) {
-        this.through.model = this.sequelize.define(this.through.model, {}, Object.assign(this.options, {
-          tableName: this.through.model,
-          indexes: [],
-          paranoid: this.through.paranoid ? this.through.paranoid : false,
-          validate: {}
-        }));
-      } else {
-        this.through.model = this.sequelize.model(this.through.model);
-      }
-    }
-    Object.assign(this.options, _.pick(this.through.model.options, [
-      "timestamps",
-      "createdAt",
-      "updatedAt",
-      "deletedAt",
-      "paranoid"
-    ]));
-    if (this.paired) {
-      let needInjectPaired = false;
-      if (this.targetKeyDefault) {
-        this.targetKey = this.paired.sourceKey;
-        this.targetKeyField = this.paired.sourceKeyField;
-        this._createForeignAndOtherKeys();
-      }
-      if (this.paired.targetKeyDefault) {
-        if (this.paired.targetKey !== this.sourceKey) {
-          delete this.through.model.rawAttributes[this.paired.otherKey];
-          this.paired.targetKey = this.sourceKey;
-          this.paired.targetKeyField = this.sourceKeyField;
-          this.paired._createForeignAndOtherKeys();
-          needInjectPaired = true;
-        }
-      }
-      if (this.otherKeyDefault) {
-        this.otherKey = this.paired.foreignKey;
-      }
-      if (this.paired.otherKeyDefault) {
-        if (this.paired.otherKey !== this.foreignKey) {
-          delete this.through.model.rawAttributes[this.paired.otherKey];
-          this.paired.otherKey = this.foreignKey;
-          needInjectPaired = true;
-        }
-      }
-      if (needInjectPaired) {
-        this.paired._injectAttributes();
-      }
-    }
-    if (this.through) {
-      this.throughModel = this.through.model;
-    }
-    this.options.tableName = this.combinedName = this.through.model === Object(this.through.model) ? this.through.model.tableName : this.through.model;
-    this.associationAccessor = this.as;
-    const plural = _.upperFirst(this.options.name.plural);
-    const singular = _.upperFirst(this.options.name.singular);
-    this.accessors = {
-      get: `get${plural}`,
-      set: `set${plural}`,
-      addMultiple: `add${plural}`,
-      add: `add${singular}`,
-      create: `create${singular}`,
-      remove: `remove${singular}`,
-      removeMultiple: `remove${plural}`,
-      hasSingle: `has${singular}`,
-      hasAll: `has${plural}`,
-      count: `count${plural}`
-    };
-  }
-  _createForeignAndOtherKeys() {
-    if (_.isObject(this.options.foreignKey)) {
-      this.foreignKeyAttribute = this.options.foreignKey;
-      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;
-    } else {
-      this.foreignKeyAttribute = {};
-      this.foreignKey = this.options.foreignKey || Utils.camelize([
-        this.source.options.name.singular,
-        this.sourceKey
-      ].join("_"));
-    }
-    if (_.isObject(this.options.otherKey)) {
-      this.otherKeyAttribute = this.options.otherKey;
-      this.otherKey = this.otherKeyAttribute.name || this.otherKeyAttribute.fieldName;
-    } else {
-      if (!this.options.otherKey) {
-        this.otherKeyDefault = true;
-      }
-      this.otherKeyAttribute = {};
-      this.otherKey = this.options.otherKey || Utils.camelize([
-        this.isSelfAssociation ? Utils.singularize(this.as) : this.target.options.name.singular,
-        this.targetKey
-      ].join("_"));
-    }
-  }
-  _injectAttributes() {
-    this.identifier = this.foreignKey;
-    this.foreignIdentifier = this.otherKey;
-    _.each(this.through.model.rawAttributes, (attribute, attributeName) => {
-      if (attribute.primaryKey === true && attribute._autoGenerated === true) {
-        if ([this.foreignKey, this.otherKey].includes(attributeName)) {
-          attribute.primaryKey = false;
-        } else {
-          delete this.through.model.rawAttributes[attributeName];
-        }
-        this.primaryKeyDeleted = true;
-      }
-    });
-    const sourceKey = this.source.rawAttributes[this.sourceKey];
-    const sourceKeyType = sourceKey.type;
-    const sourceKeyField = this.sourceKeyField;
-    const targetKey = this.target.rawAttributes[this.targetKey];
-    const targetKeyType = targetKey.type;
-    const targetKeyField = this.targetKeyField;
-    const sourceAttribute = __spreadValues({ type: sourceKeyType }, this.foreignKeyAttribute);
-    const targetAttribute = __spreadValues({ type: targetKeyType }, this.otherKeyAttribute);
-    if (this.primaryKeyDeleted === true) {
-      targetAttribute.primaryKey = sourceAttribute.primaryKey = true;
-    } else if (this.through.unique !== false) {
-      let uniqueKey;
-      if (typeof this.options.uniqueKey === "string" && this.options.uniqueKey !== "") {
-        uniqueKey = this.options.uniqueKey;
-      } else {
-        uniqueKey = [this.through.model.tableName, this.foreignKey, this.otherKey, "unique"].join("_");
-      }
-      targetAttribute.unique = sourceAttribute.unique = uniqueKey;
-    }
-    if (!this.through.model.rawAttributes[this.foreignKey]) {
-      this.through.model.rawAttributes[this.foreignKey] = {
-        _autoGenerated: true
-      };
-    }
-    if (!this.through.model.rawAttributes[this.otherKey]) {
-      this.through.model.rawAttributes[this.otherKey] = {
-        _autoGenerated: true
-      };
-    }
-    if (this.options.constraints !== false) {
-      sourceAttribute.references = {
-        model: this.source.getTableName(),
-        key: sourceKeyField
-      };
-      sourceAttribute.onDelete = this.options.onDelete || this.through.model.rawAttributes[this.foreignKey].onDelete;
-      sourceAttribute.onUpdate = this.options.onUpdate || this.through.model.rawAttributes[this.foreignKey].onUpdate;
-      if (!sourceAttribute.onDelete)
-        sourceAttribute.onDelete = "CASCADE";
-      if (!sourceAttribute.onUpdate)
-        sourceAttribute.onUpdate = "CASCADE";
-      targetAttribute.references = {
-        model: this.target.getTableName(),
-        key: targetKeyField
-      };
-      targetAttribute.onDelete = this.through.model.rawAttributes[this.otherKey].onDelete || this.options.onDelete;
-      targetAttribute.onUpdate = this.through.model.rawAttributes[this.otherKey].onUpdate || this.options.onUpdate;
-      if (!targetAttribute.onDelete)
-        targetAttribute.onDelete = "CASCADE";
-      if (!targetAttribute.onUpdate)
-        targetAttribute.onUpdate = "CASCADE";
-    }
-    Object.assign(this.through.model.rawAttributes[this.foreignKey], sourceAttribute);
-    Object.assign(this.through.model.rawAttributes[this.otherKey], targetAttribute);
-    this.through.model.refreshAttributes();
-    this.identifierField = this.through.model.rawAttributes[this.foreignKey].field || this.foreignKey;
-    this.foreignIdentifierField = this.through.model.rawAttributes[this.otherKey].field || this.otherKey;
-    if (this.options.sequelize.options.dialect === "db2" && this.source.rawAttributes[this.sourceKey].primaryKey !== true) {
-      this.source.rawAttributes[this.sourceKey].unique = true;
-    }
-    if (this.paired && !this.paired.foreignIdentifierField) {
-      this.paired.foreignIdentifierField = this.through.model.rawAttributes[this.paired.otherKey].field || this.paired.otherKey;
-    }
-    this.toSource = new BelongsTo(this.through.model, this.source, {
-      foreignKey: this.foreignKey
-    });
-    this.manyFromSource = new HasMany(this.source, this.through.model, {
-      foreignKey: this.foreignKey
-    });
-    this.oneFromSource = new HasOne(this.source, this.through.model, {
-      foreignKey: this.foreignKey,
-      sourceKey: this.sourceKey,
-      as: this.through.model.name
-    });
-    this.toTarget = new BelongsTo(this.through.model, this.target, {
-      foreignKey: this.otherKey
-    });
-    this.manyFromTarget = new HasMany(this.target, this.through.model, {
-      foreignKey: this.otherKey
-    });
-    this.oneFromTarget = new HasOne(this.target, this.through.model, {
-      foreignKey: this.otherKey,
-      sourceKey: this.targetKey,
-      as: this.through.model.name
-    });
-    if (this.paired && this.paired.otherKeyDefault) {
-      this.paired.toTarget = new BelongsTo(this.paired.through.model, this.paired.target, {
-        foreignKey: this.paired.otherKey
-      });
-      this.paired.oneFromTarget = new HasOne(this.paired.target, this.paired.through.model, {
-        foreignKey: this.paired.otherKey,
-        sourceKey: this.paired.targetKey,
-        as: this.paired.through.model.name
-      });
-    }
-    Helpers.checkNamingCollision(this);
-    return this;
-  }
-  mixin(obj) {
-    const methods = ["get", "count", "hasSingle", "hasAll", "set", "add", "addMultiple", "remove", "removeMultiple", "create"];
-    const aliases = {
-      hasSingle: "has",
-      hasAll: "has",
-      addMultiple: "add",
-      removeMultiple: "remove"
-    };
-    Helpers.mixinMethods(this, obj, methods, aliases);
-  }
-  async get(instance, options) {
-    options = Utils.cloneDeep(options) || {};
-    const through = this.through;
-    let scopeWhere;
-    let throughWhere;
-    if (this.scope) {
-      scopeWhere = __spreadValues({}, this.scope);
-    }
-    options.where = {
-      [Op.and]: [
-        scopeWhere,
-        options.where
-      ]
-    };
-    if (Object(through.model) === through.model) {
-      throughWhere = {};
-      throughWhere[this.foreignKey] = instance.get(this.sourceKey);
-      if (through.scope) {
-        Object.assign(throughWhere, through.scope);
-      }
-      if (options.through && options.through.where) {
-        throughWhere = {
-          [Op.and]: [throughWhere, options.through.where]
-        };
-      }
-      options.include = options.include || [];
-      options.include.push({
-        association: this.oneFromTarget,
-        attributes: options.joinTableAttributes,
-        required: true,
-        paranoid: _.get(options.through, "paranoid", true),
-        where: throughWhere
-      });
-    }
-    let model = this.target;
-    if (Object.prototype.hasOwnProperty.call(options, "scope")) {
-      if (!options.scope) {
-        model = model.unscoped();
-      } else {
-        model = model.scope(options.scope);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "schema")) {
-      model = model.schema(options.schema, options.schemaDelimiter);
-    }
-    return model.findAll(options);
-  }
-  async count(instance, options) {
-    const sequelize = this.target.sequelize;
-    options = Utils.cloneDeep(options);
-    options.attributes = [
-      [sequelize.fn("COUNT", sequelize.col([this.target.name, this.targetKeyField].join("."))), "count"]
-    ];
-    options.joinTableAttributes = [];
-    options.raw = true;
-    options.plain = true;
-    const result = await this.get(instance, options);
-    return parseInt(result.count, 10);
-  }
-  async has(sourceInstance, instances, options) {
-    if (!Array.isArray(instances)) {
-      instances = [instances];
-    }
-    options = __spreadProps(__spreadValues({
-      raw: true
-    }, options), {
-      scope: false,
-      attributes: [this.targetKey],
-      joinTableAttributes: []
-    });
-    const instancePrimaryKeys = instances.map((instance) => {
-      if (instance instanceof this.target) {
-        return instance.where();
-      }
-      return {
-        [this.targetKey]: instance
-      };
-    });
-    options.where = {
-      [Op.and]: [
-        { [Op.or]: instancePrimaryKeys },
-        options.where
-      ]
-    };
-    const associatedObjects = await this.get(sourceInstance, options);
-    return _.differenceWith(instancePrimaryKeys, associatedObjects, (a, b) => _.isEqual(a[this.targetKey], b[this.targetKey])).length === 0;
-  }
-  async set(sourceInstance, newAssociatedObjects, options) {
-    options = options || {};
-    const sourceKey = this.sourceKey;
-    const targetKey = this.targetKey;
-    const identifier = this.identifier;
-    const foreignIdentifier = this.foreignIdentifier;
-    if (newAssociatedObjects === null) {
-      newAssociatedObjects = [];
-    } else {
-      newAssociatedObjects = this.toInstanceArray(newAssociatedObjects);
-    }
-    const where = __spreadValues({
-      [identifier]: sourceInstance.get(sourceKey)
-    }, this.through.scope);
-    const updateAssociations = (currentRows) => {
-      const obsoleteAssociations = [];
-      const promises = [];
-      const defaultAttributes = options.through || {};
-      const unassociatedObjects = newAssociatedObjects.filter((obj) => !currentRows.some((currentRow) => currentRow[foreignIdentifier] === obj.get(targetKey)));
-      for (const currentRow of currentRows) {
-        const newObj = newAssociatedObjects.find((obj) => currentRow[foreignIdentifier] === obj.get(targetKey));
-        if (!newObj) {
-          obsoleteAssociations.push(currentRow);
-        } else {
-          let throughAttributes = newObj[this.through.model.name];
-          if (throughAttributes instanceof this.through.model) {
-            throughAttributes = {};
-          }
-          const attributes = __spreadValues(__spreadValues({}, defaultAttributes), throughAttributes);
-          if (Object.keys(attributes).length) {
-            promises.push(this.through.model.update(attributes, Object.assign(options, {
-              where: {
-                [identifier]: sourceInstance.get(sourceKey),
-                [foreignIdentifier]: newObj.get(targetKey)
-              }
-            })));
-          }
-        }
-      }
-      if (obsoleteAssociations.length > 0) {
-        promises.push(this.through.model.destroy(__spreadProps(__spreadValues({}, options), {
-          where: __spreadValues({
-            [identifier]: sourceInstance.get(sourceKey),
-            [foreignIdentifier]: obsoleteAssociations.map((obsoleteAssociation) => obsoleteAssociation[foreignIdentifier])
-          }, this.through.scope)
-        })));
-      }
-      if (unassociatedObjects.length > 0) {
-        const bulk = unassociatedObjects.map((unassociatedObject) => {
-          return __spreadValues(__spreadProps(__spreadValues(__spreadValues({}, defaultAttributes), unassociatedObject[this.through.model.name]), {
-            [identifier]: sourceInstance.get(sourceKey),
-            [foreignIdentifier]: unassociatedObject.get(targetKey)
-          }), this.through.scope);
-        });
-        promises.push(this.through.model.bulkCreate(bulk, __spreadValues({ validate: true }, options)));
-      }
-      return Promise.all(promises);
-    };
-    try {
-      const currentRows = await this.through.model.findAll(__spreadProps(__spreadValues({}, options), { where, raw: true }));
-      return await updateAssociations(currentRows);
-    } catch (error) {
-      if (error instanceof EmptyResultError)
-        return updateAssociations([]);
-      throw error;
-    }
-  }
-  async add(sourceInstance, newInstances, options) {
-    if (!newInstances)
-      return Promise.resolve();
-    options = __spreadValues({}, options);
-    const association = this;
-    const sourceKey = association.sourceKey;
-    const targetKey = association.targetKey;
-    const identifier = association.identifier;
-    const foreignIdentifier = association.foreignIdentifier;
-    const defaultAttributes = options.through || {};
-    newInstances = association.toInstanceArray(newInstances);
-    const where = __spreadValues({
-      [identifier]: sourceInstance.get(sourceKey),
-      [foreignIdentifier]: newInstances.map((newInstance) => newInstance.get(targetKey))
-    }, association.through.scope);
-    const updateAssociations = (currentRows) => {
-      const promises = [];
-      const unassociatedObjects = [];
-      const changedAssociations = [];
-      for (const obj of newInstances) {
-        const existingAssociation = currentRows && currentRows.find((current) => current[foreignIdentifier] === obj.get(targetKey));
-        if (!existingAssociation) {
-          unassociatedObjects.push(obj);
-        } else {
-          const throughAttributes = obj[association.through.model.name];
-          const attributes = __spreadValues(__spreadValues({}, defaultAttributes), throughAttributes);
-          if (Object.keys(attributes).some((attribute) => attributes[attribute] !== existingAssociation[attribute])) {
-            changedAssociations.push(obj);
-          }
-        }
-      }
-      if (unassociatedObjects.length > 0) {
-        const bulk = unassociatedObjects.map((unassociatedObject) => {
-          const throughAttributes = unassociatedObject[association.through.model.name];
-          const attributes = __spreadValues(__spreadValues({}, defaultAttributes), throughAttributes);
-          attributes[identifier] = sourceInstance.get(sourceKey);
-          attributes[foreignIdentifier] = unassociatedObject.get(targetKey);
-          Object.assign(attributes, association.through.scope);
-          return attributes;
-        });
-        promises.push(association.through.model.bulkCreate(bulk, __spreadValues({ validate: true }, options)));
-      }
-      for (const assoc of changedAssociations) {
-        let throughAttributes = assoc[association.through.model.name];
-        const attributes = __spreadValues(__spreadValues({}, defaultAttributes), throughAttributes);
-        if (throughAttributes instanceof association.through.model) {
-          throughAttributes = {};
-        }
-        promises.push(association.through.model.update(attributes, Object.assign(options, { where: {
-          [identifier]: sourceInstance.get(sourceKey),
-          [foreignIdentifier]: assoc.get(targetKey)
-        } })));
-      }
-      return Promise.all(promises);
-    };
-    try {
-      const currentRows = await association.through.model.findAll(__spreadProps(__spreadValues({}, options), { where, raw: true }));
-      const [associations] = await updateAssociations(currentRows);
-      return associations;
-    } catch (error) {
-      if (error instanceof EmptyResultError)
-        return updateAssociations();
-      throw error;
-    }
-  }
-  remove(sourceInstance, oldAssociatedObjects, options) {
-    const association = this;
-    options = options || {};
-    oldAssociatedObjects = association.toInstanceArray(oldAssociatedObjects);
-    const where = {
-      [association.identifier]: sourceInstance.get(association.sourceKey),
-      [association.foreignIdentifier]: oldAssociatedObjects.map((newInstance) => newInstance.get(association.targetKey))
-    };
-    return association.through.model.destroy(__spreadProps(__spreadValues({}, options), { where }));
-  }
-  async create(sourceInstance, values, options) {
-    const association = this;
-    options = options || {};
-    values = values || {};
-    if (Array.isArray(options)) {
-      options = {
-        fields: options
-      };
-    }
-    if (association.scope) {
-      Object.assign(values, association.scope);
-      if (options.fields) {
-        options.fields = options.fields.concat(Object.keys(association.scope));
-      }
-    }
-    const newAssociatedObject = await association.target.create(values, options);
-    await sourceInstance[association.accessors.add](newAssociatedObject, _.omit(options, ["fields"]));
-    return newAssociatedObject;
-  }
-  verifyAssociationAlias(alias) {
-    if (typeof alias === "string") {
-      return this.as === alias;
-    }
-    if (alias && alias.plural) {
-      return this.as === alias.plural;
-    }
-    return !this.isAliased;
-  }
-}
-module.exports = BelongsToMany;
-module.exports.BelongsToMany = BelongsToMany;
-module.exports.default = BelongsToMany;
-//# sourceMappingURL=belongs-to-many.js.map
Index: ckend/node_modules/sequelize/lib/associations/belongs-to-many.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/belongs-to-many.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/belongs-to-many.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('./../utils');\nconst Helpers = require('./helpers');\nconst _ = require('lodash');\nconst Association = require('./base');\nconst BelongsTo = require('./belongs-to');\nconst HasMany = require('./has-many');\nconst HasOne = require('./has-one');\nconst AssociationError = require('../errors').AssociationError;\nconst EmptyResultError = require('../errors').EmptyResultError;\nconst Op = require('../operators');\n\n/**\n * Many-to-many association with a join table.\n *\n * When the join table has additional attributes, these can be passed in the options object:\n *\n * ```js\n * UserProject = sequelize.define('user_project', {\n *   role: Sequelize.STRING\n * });\n * User.belongsToMany(Project, { through: UserProject });\n * Project.belongsToMany(User, { through: UserProject });\n * // through is required!\n *\n * user.addProject(project, { through: { role: 'manager' }});\n * ```\n *\n * All methods allow you to pass either a persisted instance, its primary key, or a mixture:\n *\n * ```js\n * const project = await Project.create({ id: 11 });\n * await user.addProjects([project, 12]);\n * ```\n *\n * If you want to set several target instances, but with different attributes you have to set the attributes on the instance, using a property with the name of the through model:\n *\n * ```js\n * p1.UserProjects = {\n *   started: true\n * }\n * user.setProjects([p1, p2], { through: { started: false }}) // The default value is false, but p1 overrides that.\n * ```\n *\n * Similarly, when fetching through a join table with custom attributes, these attributes will be available as an object with the name of the through model.\n * ```js\n * const projects = await user.getProjects();\n * const p1 = projects[0];\n * p1.UserProjects.started // Is this project started yet?\n * ```\n *\n * In the API reference below, add the name of the association to the method, e.g. for `User.belongsToMany(Project)` the getter will be `user.getProjects()`.\n *\n * @see {@link Model.belongsToMany}\n */\nclass BelongsToMany extends Association {\n  constructor(source, target, options) {\n    super(source, target, options);\n\n    if (this.options.through === undefined || this.options.through === true || this.options.through === null) {\n      throw new AssociationError(`${source.name}.belongsToMany(${target.name}) requires through option, pass either a string or a model`);\n    }\n\n    if (!this.options.through.model) {\n      this.options.through = {\n        model: options.through\n      };\n    }\n\n    this.associationType = 'BelongsToMany';\n    this.targetAssociation = null;\n    this.sequelize = source.sequelize;\n    this.through = { ...this.options.through };\n    this.isMultiAssociation = true;\n    this.doubleLinked = false;\n\n    if (!this.as && this.isSelfAssociation) {\n      throw new AssociationError('\\'as\\' must be defined for many-to-many self-associations');\n    }\n\n    if (this.as) {\n      this.isAliased = true;\n\n      if (_.isPlainObject(this.as)) {\n        this.options.name = this.as;\n        this.as = this.as.plural;\n      } else {\n        this.options.name = {\n          plural: this.as,\n          singular: Utils.singularize(this.as)\n        };\n      }\n    } else {\n      this.as = this.target.options.name.plural;\n      this.options.name = this.target.options.name;\n    }\n\n    this.combinedTableName = Utils.combineTableNames(\n      this.source.tableName,\n      this.isSelfAssociation ? this.as || this.target.tableName : this.target.tableName\n    );\n\n    /*\n    * If self association, this is the target association - Unless we find a pairing association\n    */\n    if (this.isSelfAssociation) {\n      this.targetAssociation = this;\n    }\n\n    /*\n    * Find paired association (if exists)\n    */\n    _.each(this.target.associations, association => {\n      if (association.associationType !== 'BelongsToMany') return;\n      if (association.target !== this.source) return;\n\n      if (this.options.through.model === association.options.through.model) {\n        this.paired = association;\n        association.paired = this;\n      }\n    });\n\n    /*\n    * Default/generated source/target keys\n    */\n    this.sourceKey = this.options.sourceKey || this.source.primaryKeyAttribute;\n    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;\n\n    if (this.options.targetKey) {\n      this.targetKey = this.options.targetKey;\n      this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;\n    } else {\n      this.targetKeyDefault = true;\n      this.targetKey = this.target.primaryKeyAttribute;\n      this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;\n    }\n\n    this._createForeignAndOtherKeys();\n\n    if (typeof this.through.model === 'string') {\n      if (!this.sequelize.isDefined(this.through.model)) {\n        this.through.model = this.sequelize.define(this.through.model, {}, Object.assign(this.options, {\n          tableName: this.through.model,\n          indexes: [], //we don't want indexes here (as referenced in #2416)\n          paranoid: this.through.paranoid ? this.through.paranoid : false, // Default to non-paranoid join (referenced in #11991)\n          validate: {} // Don't propagate model-level validations\n        }));\n      } else {\n        this.through.model = this.sequelize.model(this.through.model);\n      }\n    }\n\n    Object.assign(this.options, _.pick(this.through.model.options, [\n      'timestamps', 'createdAt', 'updatedAt', 'deletedAt', 'paranoid'\n    ]));\n\n    if (this.paired) {\n      let needInjectPaired = false;\n\n      if (this.targetKeyDefault) {\n        this.targetKey = this.paired.sourceKey;\n        this.targetKeyField = this.paired.sourceKeyField;\n        this._createForeignAndOtherKeys();\n      }\n      if (this.paired.targetKeyDefault) {\n        // in this case paired.otherKey depends on paired.targetKey,\n        // so cleanup previously wrong generated otherKey\n        if (this.paired.targetKey !== this.sourceKey) {\n          delete this.through.model.rawAttributes[this.paired.otherKey];\n          this.paired.targetKey = this.sourceKey;\n          this.paired.targetKeyField = this.sourceKeyField;\n          this.paired._createForeignAndOtherKeys();\n          needInjectPaired = true;\n        }\n      }\n\n      if (this.otherKeyDefault) {\n        this.otherKey = this.paired.foreignKey;\n      }\n      if (this.paired.otherKeyDefault) {\n        // If paired otherKey was inferred we should make sure to clean it up\n        // before adding a new one that matches the foreignKey\n        if (this.paired.otherKey !== this.foreignKey) {\n          delete this.through.model.rawAttributes[this.paired.otherKey];\n          this.paired.otherKey = this.foreignKey;\n          needInjectPaired = true;\n        }\n      }\n\n      if (needInjectPaired) {\n        this.paired._injectAttributes();\n      }\n    }\n\n    if (this.through) {\n      this.throughModel = this.through.model;\n    }\n\n    this.options.tableName = this.combinedName = this.through.model === Object(this.through.model) ? this.through.model.tableName : this.through.model;\n\n    this.associationAccessor = this.as;\n\n    // Get singular and plural names, trying to uppercase the first letter, unless the model forbids it\n    const plural = _.upperFirst(this.options.name.plural);\n    const singular = _.upperFirst(this.options.name.singular);\n\n    this.accessors = {\n      get: `get${plural}`,\n      set: `set${plural}`,\n      addMultiple: `add${plural}`,\n      add: `add${singular}`,\n      create: `create${singular}`,\n      remove: `remove${singular}`,\n      removeMultiple: `remove${plural}`,\n      hasSingle: `has${singular}`,\n      hasAll: `has${plural}`,\n      count: `count${plural}`\n    };\n  }\n\n  _createForeignAndOtherKeys() {\n    /*\n    * Default/generated foreign/other keys\n    */\n    if (_.isObject(this.options.foreignKey)) {\n      this.foreignKeyAttribute = this.options.foreignKey;\n      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;\n    } else {\n      this.foreignKeyAttribute = {};\n      this.foreignKey = this.options.foreignKey || Utils.camelize(\n        [\n          this.source.options.name.singular,\n          this.sourceKey\n        ].join('_')\n      );\n    }\n\n    if (_.isObject(this.options.otherKey)) {\n      this.otherKeyAttribute = this.options.otherKey;\n      this.otherKey = this.otherKeyAttribute.name || this.otherKeyAttribute.fieldName;\n    } else {\n      if (!this.options.otherKey) {\n        this.otherKeyDefault = true;\n      }\n\n      this.otherKeyAttribute = {};\n      this.otherKey = this.options.otherKey || Utils.camelize(\n        [\n          this.isSelfAssociation ? Utils.singularize(this.as) : this.target.options.name.singular,\n          this.targetKey\n        ].join('_')\n      );\n    }\n  }\n\n  // the id is in the target table\n  // or in an extra table which connects two tables\n  _injectAttributes() {\n    this.identifier = this.foreignKey;\n    this.foreignIdentifier = this.otherKey;\n\n    // remove any PKs previously defined by sequelize\n    // but ignore any keys that are part of this association (#5865)\n    _.each(this.through.model.rawAttributes, (attribute, attributeName) => {\n      if (attribute.primaryKey === true && attribute._autoGenerated === true) {\n        if ([this.foreignKey, this.otherKey].includes(attributeName)) {\n          // this key is still needed as it's part of the association\n          // so just set primaryKey to false\n          attribute.primaryKey = false;\n        }\n        else {\n          delete this.through.model.rawAttributes[attributeName];\n        }\n        this.primaryKeyDeleted = true;\n      }\n    });\n\n    const sourceKey = this.source.rawAttributes[this.sourceKey];\n    const sourceKeyType = sourceKey.type;\n    const sourceKeyField = this.sourceKeyField;\n    const targetKey = this.target.rawAttributes[this.targetKey];\n    const targetKeyType = targetKey.type;\n    const targetKeyField = this.targetKeyField;\n    const sourceAttribute = { type: sourceKeyType, ...this.foreignKeyAttribute };\n    const targetAttribute = { type: targetKeyType, ...this.otherKeyAttribute };\n\n    if (this.primaryKeyDeleted === true) {\n      targetAttribute.primaryKey = sourceAttribute.primaryKey = true;\n    } else if (this.through.unique !== false) {\n      let uniqueKey;\n      if (typeof this.options.uniqueKey === 'string' && this.options.uniqueKey !== '') {\n        uniqueKey = this.options.uniqueKey;\n      } else {\n        uniqueKey = [this.through.model.tableName, this.foreignKey, this.otherKey, 'unique'].join('_');\n      }\n      targetAttribute.unique = sourceAttribute.unique = uniqueKey;\n    }\n\n    if (!this.through.model.rawAttributes[this.foreignKey]) {\n      this.through.model.rawAttributes[this.foreignKey] = {\n        _autoGenerated: true\n      };\n    }\n\n    if (!this.through.model.rawAttributes[this.otherKey]) {\n      this.through.model.rawAttributes[this.otherKey] = {\n        _autoGenerated: true\n      };\n    }\n\n    if (this.options.constraints !== false) {\n      sourceAttribute.references = {\n        model: this.source.getTableName(),\n        key: sourceKeyField\n      };\n      // For the source attribute the passed option is the priority\n      sourceAttribute.onDelete = this.options.onDelete || this.through.model.rawAttributes[this.foreignKey].onDelete;\n      sourceAttribute.onUpdate = this.options.onUpdate || this.through.model.rawAttributes[this.foreignKey].onUpdate;\n\n      if (!sourceAttribute.onDelete) sourceAttribute.onDelete = 'CASCADE';\n      if (!sourceAttribute.onUpdate) sourceAttribute.onUpdate = 'CASCADE';\n\n      targetAttribute.references = {\n        model: this.target.getTableName(),\n        key: targetKeyField\n      };\n      // But the for target attribute the previously defined option is the priority (since it could've been set by another belongsToMany call)\n      targetAttribute.onDelete = this.through.model.rawAttributes[this.otherKey].onDelete || this.options.onDelete;\n      targetAttribute.onUpdate = this.through.model.rawAttributes[this.otherKey].onUpdate || this.options.onUpdate;\n\n      if (!targetAttribute.onDelete) targetAttribute.onDelete = 'CASCADE';\n      if (!targetAttribute.onUpdate) targetAttribute.onUpdate = 'CASCADE';\n    }\n\n    Object.assign(this.through.model.rawAttributes[this.foreignKey], sourceAttribute);\n    Object.assign(this.through.model.rawAttributes[this.otherKey], targetAttribute);\n\n    this.through.model.refreshAttributes();\n\n    this.identifierField = this.through.model.rawAttributes[this.foreignKey].field || this.foreignKey;\n    this.foreignIdentifierField = this.through.model.rawAttributes[this.otherKey].field || this.otherKey;\n\n    // For Db2 server, a reference column of a FOREIGN KEY must be unique\n    // else, server throws SQL0573N error. Hence, setting it here explicitly\n    // for non primary columns.\n    if (this.options.sequelize.options.dialect === 'db2' &&\n        this.source.rawAttributes[this.sourceKey].primaryKey !== true) {\n      this.source.rawAttributes[this.sourceKey].unique = true;\n    }\n\n    if (this.paired && !this.paired.foreignIdentifierField) {\n      this.paired.foreignIdentifierField = this.through.model.rawAttributes[this.paired.otherKey].field || this.paired.otherKey;\n    }\n\n    this.toSource = new BelongsTo(this.through.model, this.source, {\n      foreignKey: this.foreignKey\n    });\n    this.manyFromSource = new HasMany(this.source, this.through.model, {\n      foreignKey: this.foreignKey\n    });\n    this.oneFromSource = new HasOne(this.source, this.through.model, {\n      foreignKey: this.foreignKey,\n      sourceKey: this.sourceKey,\n      as: this.through.model.name\n    });\n\n    this.toTarget = new BelongsTo(this.through.model, this.target, {\n      foreignKey: this.otherKey\n    });\n    this.manyFromTarget = new HasMany(this.target, this.through.model, {\n      foreignKey: this.otherKey\n    });\n    this.oneFromTarget = new HasOne(this.target, this.through.model, {\n      foreignKey: this.otherKey,\n      sourceKey: this.targetKey,\n      as: this.through.model.name\n    });\n\n    if (this.paired && this.paired.otherKeyDefault) {\n      this.paired.toTarget = new BelongsTo(this.paired.through.model, this.paired.target, {\n        foreignKey: this.paired.otherKey\n      });\n\n      this.paired.oneFromTarget = new HasOne(this.paired.target, this.paired.through.model, {\n        foreignKey: this.paired.otherKey,\n        sourceKey: this.paired.targetKey,\n        as: this.paired.through.model.name\n      });\n    }\n\n    Helpers.checkNamingCollision(this);\n\n    return this;\n  }\n\n  mixin(obj) {\n    const methods = ['get', 'count', 'hasSingle', 'hasAll', 'set', 'add', 'addMultiple', 'remove', 'removeMultiple', 'create'];\n    const aliases = {\n      hasSingle: 'has',\n      hasAll: 'has',\n      addMultiple: 'add',\n      removeMultiple: 'remove'\n    };\n\n    Helpers.mixinMethods(this, obj, methods, aliases);\n  }\n\n  /**\n   * Get everything currently associated with this, using an optional where clause.\n   *\n   * @see\n   * {@link Model} for a full explanation of options\n   *\n   * @param {Model} instance instance\n   * @param {object} [options] find options\n   * @param {object} [options.where] An optional where clause to limit the associated models\n   * @param {string|boolean} [options.scope] Apply a scope on the related model, or remove its default scope by passing false\n   * @param {string} [options.schema] Apply a schema on the related model\n   * @param {object} [options.through.where] An optional where clause applied to through model (join table)\n   * @param {boolean} [options.through.paranoid=true] If true, only non-deleted records will be returned from the join table. If false, both deleted and non-deleted records will be returned. Only applies if through model is paranoid\n   *\n   * @returns {Promise<Array<Model>>}\n   */\n  async get(instance, options) {\n    options = Utils.cloneDeep(options) || {};\n\n    const through = this.through;\n    let scopeWhere;\n    let throughWhere;\n\n    if (this.scope) {\n      scopeWhere = { ...this.scope };\n    }\n\n    options.where = {\n      [Op.and]: [\n        scopeWhere,\n        options.where\n      ]\n    };\n\n    if (Object(through.model) === through.model) {\n      throughWhere = {};\n      throughWhere[this.foreignKey] = instance.get(this.sourceKey);\n\n      if (through.scope) {\n        Object.assign(throughWhere, through.scope);\n      }\n\n      //If a user pass a where on the options through options, make an \"and\" with the current throughWhere\n      if (options.through && options.through.where) {\n        throughWhere = {\n          [Op.and]: [throughWhere, options.through.where]\n        };\n      }\n\n      options.include = options.include || [];\n      options.include.push({\n        association: this.oneFromTarget,\n        attributes: options.joinTableAttributes,\n        required: true,\n        paranoid: _.get(options.through, 'paranoid', true),\n        where: throughWhere\n      });\n    }\n\n    let model = this.target;\n    if (Object.prototype.hasOwnProperty.call(options, 'scope')) {\n      if (!options.scope) {\n        model = model.unscoped();\n      } else {\n        model = model.scope(options.scope);\n      }\n    }\n\n    if (Object.prototype.hasOwnProperty.call(options, 'schema')) {\n      model = model.schema(options.schema, options.schemaDelimiter);\n    }\n\n    return model.findAll(options);\n  }\n\n  /**\n   * Count everything currently associated with this, using an optional where clause.\n   *\n   * @param {Model} instance instance\n   * @param {object} [options] find options\n   * @param {object} [options.where] An optional where clause to limit the associated models\n   * @param {string|boolean} [options.scope] Apply a scope on the related model, or remove its default scope by passing false\n   *\n   * @returns {Promise<number>}\n   */\n  async count(instance, options) {\n    const sequelize = this.target.sequelize;\n\n    options = Utils.cloneDeep(options);\n    options.attributes = [\n      [sequelize.fn('COUNT', sequelize.col([this.target.name, this.targetKeyField].join('.'))), 'count']\n    ];\n    options.joinTableAttributes = [];\n    options.raw = true;\n    options.plain = true;\n\n    const result = await this.get(instance, options);\n\n    return parseInt(result.count, 10);\n  }\n\n  /**\n   * Check if one or more instance(s) are associated with this. If a list of instances is passed, the function returns true if _all_ instances are associated\n   *\n   * @param {Model} sourceInstance source instance to check for an association with\n   * @param {Model|Model[]|string[]|string|number[]|number} [instances] Can be an array of instances or their primary keys\n   * @param {object} [options] Options passed to getAssociations\n   *\n   * @returns {Promise<boolean>}\n   */\n  async has(sourceInstance, instances, options) {\n    if (!Array.isArray(instances)) {\n      instances = [instances];\n    }\n\n    options = {\n      raw: true,\n      ...options,\n      scope: false,\n      attributes: [this.targetKey],\n      joinTableAttributes: []\n    };\n\n    const instancePrimaryKeys = instances.map(instance => {\n      if (instance instanceof this.target) {\n        return instance.where();\n      }\n      return {\n        [this.targetKey]: instance\n      };\n    });\n\n    options.where = {\n      [Op.and]: [\n        { [Op.or]: instancePrimaryKeys },\n        options.where\n      ]\n    };\n\n    const associatedObjects = await this.get(sourceInstance, options);\n\n    return _.differenceWith(instancePrimaryKeys, associatedObjects,\n      (a, b) => _.isEqual(a[this.targetKey], b[this.targetKey])).length === 0;\n  }\n\n  /**\n   * Set the associated models by passing an array of instances or their primary keys.\n   * Everything that it not in the passed array will be un-associated.\n   *\n   * @param {Model} sourceInstance source instance to associate new instances with\n   * @param {Model|Model[]|string[]|string|number[]|number} [newAssociatedObjects] A single instance or primary key, or a mixed array of persisted instances or primary keys\n   * @param {object} [options] Options passed to `through.findAll`, `bulkCreate`, `update` and `destroy`\n   * @param {object} [options.validate] Run validation for the join model\n   * @param {object} [options.through] Additional attributes for the join table.\n   *\n   * @returns {Promise}\n   */\n  async set(sourceInstance, newAssociatedObjects, options) {\n    options = options || {};\n\n    const sourceKey = this.sourceKey;\n    const targetKey = this.targetKey;\n    const identifier = this.identifier;\n    const foreignIdentifier = this.foreignIdentifier;\n\n    if (newAssociatedObjects === null) {\n      newAssociatedObjects = [];\n    } else {\n      newAssociatedObjects = this.toInstanceArray(newAssociatedObjects);\n    }\n    const where = {\n      [identifier]: sourceInstance.get(sourceKey),\n      ...this.through.scope\n    };\n\n    const updateAssociations = currentRows => {\n      const obsoleteAssociations = [];\n      const promises = [];\n      const defaultAttributes = options.through || {};\n\n      const unassociatedObjects = newAssociatedObjects.filter(obj =>\n        !currentRows.some(currentRow => currentRow[foreignIdentifier] === obj.get(targetKey))\n      );\n\n      for (const currentRow of currentRows) {\n        const newObj = newAssociatedObjects.find(obj => currentRow[foreignIdentifier] === obj.get(targetKey));\n\n        if (!newObj) {\n          obsoleteAssociations.push(currentRow);\n        } else {\n          let throughAttributes = newObj[this.through.model.name];\n          // Quick-fix for subtle bug when using existing objects that might have the through model attached (not as an attribute object)\n          if (throughAttributes instanceof this.through.model) {\n            throughAttributes = {};\n          }\n\n          const attributes = { ...defaultAttributes, ...throughAttributes };\n\n          if (Object.keys(attributes).length) {\n            promises.push(\n              this.through.model.update(attributes, Object.assign(options, {\n                where: {\n                  [identifier]: sourceInstance.get(sourceKey),\n                  [foreignIdentifier]: newObj.get(targetKey)\n                }\n              }\n              ))\n            );\n          }\n        }\n      }\n\n      if (obsoleteAssociations.length > 0) {\n        promises.push(\n          this.through.model.destroy({\n            ...options,\n            where: {\n              [identifier]: sourceInstance.get(sourceKey),\n              [foreignIdentifier]: obsoleteAssociations.map(obsoleteAssociation => obsoleteAssociation[foreignIdentifier]),\n              ...this.through.scope\n            }\n          })\n        );\n      }\n\n      if (unassociatedObjects.length > 0) {\n        const bulk = unassociatedObjects.map(unassociatedObject => {\n          return {\n            ...defaultAttributes,\n            ...unassociatedObject[this.through.model.name],\n            [identifier]: sourceInstance.get(sourceKey),\n            [foreignIdentifier]: unassociatedObject.get(targetKey),\n            ...this.through.scope\n          };\n        });\n\n        promises.push(this.through.model.bulkCreate(bulk, { validate: true, ...options }));\n      }\n\n      return Promise.all(promises);\n    };\n\n    try {\n      const currentRows = await this.through.model.findAll({ ...options, where, raw: true });\n      return await updateAssociations(currentRows);\n    } catch (error) {\n      if (error instanceof EmptyResultError) return updateAssociations([]);\n      throw error;\n    }\n  }\n\n  /**\n   * Associate one or several rows with source instance. It will not un-associate any already associated instance\n   * that may be missing from `newInstances`.\n   *\n   * @param {Model} sourceInstance source instance to associate new instances with\n   * @param {Model|Model[]|string[]|string|number[]|number} [newInstances] A single instance or primary key, or a mixed array of persisted instances or primary keys\n   * @param {object} [options] Options passed to `through.findAll`, `bulkCreate` and `update`\n   * @param {object} [options.validate] Run validation for the join model.\n   * @param {object} [options.through] Additional attributes for the join table.\n   *\n   * @returns {Promise}\n   */\n  async add(sourceInstance, newInstances, options) {\n    // If newInstances is null or undefined, no-op\n    if (!newInstances) return Promise.resolve();\n\n    options = { ...options };\n\n    const association = this;\n    const sourceKey = association.sourceKey;\n    const targetKey = association.targetKey;\n    const identifier = association.identifier;\n    const foreignIdentifier = association.foreignIdentifier;\n    const defaultAttributes = options.through || {};\n\n    newInstances = association.toInstanceArray(newInstances);\n\n    const where = {\n      [identifier]: sourceInstance.get(sourceKey),\n      [foreignIdentifier]: newInstances.map(newInstance => newInstance.get(targetKey)),\n      ...association.through.scope\n    };\n\n    const updateAssociations = currentRows => {\n      const promises = [];\n      const unassociatedObjects = [];\n      const changedAssociations = [];\n      for (const obj of newInstances) {\n        const existingAssociation = currentRows && currentRows.find(current => current[foreignIdentifier] === obj.get(targetKey));\n\n        if (!existingAssociation) {\n          unassociatedObjects.push(obj);\n        } else {\n          const throughAttributes = obj[association.through.model.name];\n          const attributes = { ...defaultAttributes, ...throughAttributes };\n\n          if (Object.keys(attributes).some(attribute => attributes[attribute] !== existingAssociation[attribute])) {\n            changedAssociations.push(obj);\n          }\n        }\n      }\n\n      if (unassociatedObjects.length > 0) {\n        const bulk = unassociatedObjects.map(unassociatedObject => {\n          const throughAttributes = unassociatedObject[association.through.model.name];\n          const attributes = { ...defaultAttributes, ...throughAttributes };\n\n          attributes[identifier] = sourceInstance.get(sourceKey);\n          attributes[foreignIdentifier] = unassociatedObject.get(targetKey);\n\n          Object.assign(attributes, association.through.scope);\n\n          return attributes;\n        });\n\n        promises.push(association.through.model.bulkCreate(bulk, { validate: true, ...options }));\n      }\n\n      for (const assoc of changedAssociations) {\n        let throughAttributes = assoc[association.through.model.name];\n        const attributes = { ...defaultAttributes, ...throughAttributes };\n        // Quick-fix for subtle bug when using existing objects that might have the through model attached (not as an attribute object)\n        if (throughAttributes instanceof association.through.model) {\n          throughAttributes = {};\n        }\n\n        promises.push(association.through.model.update(attributes, Object.assign(options, { where: {\n          [identifier]: sourceInstance.get(sourceKey),\n          [foreignIdentifier]: assoc.get(targetKey)\n        } })));\n      }\n\n      return Promise.all(promises);\n    };\n\n    try {\n      const currentRows = await association.through.model.findAll({ ...options, where, raw: true });\n      const [associations] = await updateAssociations(currentRows);\n      return associations;\n    } catch (error) {\n      if (error instanceof EmptyResultError) return updateAssociations();\n      throw error;\n    }\n  }\n\n  /**\n   * Un-associate one or more instance(s).\n   *\n   * @param {Model} sourceInstance instance to un associate instances with\n   * @param {Model|Model[]|string|string[]|number|number[]} [oldAssociatedObjects] Can be an Instance or its primary key, or a mixed array of instances and primary keys\n   * @param {object} [options] Options passed to `through.destroy`\n   *\n   * @returns {Promise}\n   */\n  remove(sourceInstance, oldAssociatedObjects, options) {\n    const association = this;\n\n    options = options || {};\n\n    oldAssociatedObjects = association.toInstanceArray(oldAssociatedObjects);\n\n    const where = {\n      [association.identifier]: sourceInstance.get(association.sourceKey),\n      [association.foreignIdentifier]: oldAssociatedObjects.map(newInstance => newInstance.get(association.targetKey))\n    };\n\n    return association.through.model.destroy({ ...options, where });\n  }\n\n  /**\n   * Create a new instance of the associated model and associate it with this.\n   *\n   * @param {Model} sourceInstance source instance\n   * @param {object} [values] values for target model\n   * @param {object} [options] Options passed to create and add\n   * @param {object} [options.through] Additional attributes for the join table\n   *\n   * @returns {Promise}\n   */\n  async create(sourceInstance, values, options) {\n    const association = this;\n\n    options = options || {};\n    values = values || {};\n\n    if (Array.isArray(options)) {\n      options = {\n        fields: options\n      };\n    }\n\n    if (association.scope) {\n      Object.assign(values, association.scope);\n      if (options.fields) {\n        options.fields = options.fields.concat(Object.keys(association.scope));\n      }\n    }\n\n    // Create the related model instance\n    const newAssociatedObject = await association.target.create(values, options);\n\n    await sourceInstance[association.accessors.add](newAssociatedObject, _.omit(options, ['fields']));\n    return newAssociatedObject;\n  }\n\n  verifyAssociationAlias(alias) {\n    if (typeof alias === 'string') {\n      return this.as === alias;\n    }\n\n    if (alias && alias.plural) {\n      return this.as === alias.plural;\n    }\n\n    return !this.isAliased;\n  }\n}\n\nmodule.exports = BelongsToMany;\nmodule.exports.BelongsToMany = BelongsToMany;\nmodule.exports.default = BelongsToMany;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/belongs-to.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/belongs-to.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,172 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const Utils = require("./../utils");
-const Helpers = require("./helpers");
-const _ = require("lodash");
-const Association = require("./base");
-const Op = require("../operators");
-class BelongsTo extends Association {
-  constructor(source, target, options) {
-    super(source, target, options);
-    this.associationType = "BelongsTo";
-    this.isSingleAssociation = true;
-    this.foreignKeyAttribute = {};
-    if (this.as) {
-      this.isAliased = true;
-      this.options.name = {
-        singular: this.as
-      };
-    } else {
-      this.as = this.target.options.name.singular;
-      this.options.name = this.target.options.name;
-    }
-    if (_.isObject(this.options.foreignKey)) {
-      this.foreignKeyAttribute = this.options.foreignKey;
-      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;
-    } else if (this.options.foreignKey) {
-      this.foreignKey = this.options.foreignKey;
-    }
-    if (!this.foreignKey) {
-      this.foreignKey = Utils.camelize([
-        this.as,
-        this.target.primaryKeyAttribute
-      ].join("_"));
-    }
-    this.identifier = this.foreignKey;
-    if (this.source.rawAttributes[this.identifier]) {
-      this.identifierField = this.source.rawAttributes[this.identifier].field || this.identifier;
-    }
-    if (this.options.targetKey && !this.target.rawAttributes[this.options.targetKey]) {
-      throw new Error(`Unknown attribute "${this.options.targetKey}" passed as targetKey, define this attribute on model "${this.target.name}" first`);
-    }
-    this.targetKey = this.options.targetKey || this.target.primaryKeyAttribute;
-    this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;
-    this.targetKeyIsPrimary = this.targetKey === this.target.primaryKeyAttribute;
-    this.targetIdentifier = this.targetKey;
-    this.associationAccessor = this.as;
-    this.options.useHooks = options.useHooks;
-    const singular = _.upperFirst(this.options.name.singular);
-    this.accessors = {
-      get: `get${singular}`,
-      set: `set${singular}`,
-      create: `create${singular}`
-    };
-  }
-  _injectAttributes() {
-    const newAttributes = {
-      [this.foreignKey]: __spreadValues({
-        type: this.options.keyType || this.target.rawAttributes[this.targetKey].type,
-        allowNull: true
-      }, this.foreignKeyAttribute)
-    };
-    if (this.options.constraints !== false) {
-      const source = this.source.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];
-      this.options.onDelete = this.options.onDelete || (source.allowNull ? "SET NULL" : "NO ACTION");
-      this.options.onUpdate = this.options.onUpdate || "CASCADE";
-    }
-    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.target, this.source, this.options, this.targetKeyField);
-    Utils.mergeDefaults(this.source.rawAttributes, newAttributes);
-    this.source.refreshAttributes();
-    this.identifierField = this.source.rawAttributes[this.foreignKey].field || this.foreignKey;
-    Helpers.checkNamingCollision(this);
-    return this;
-  }
-  mixin(obj) {
-    const methods = ["get", "set", "create"];
-    Helpers.mixinMethods(this, obj, methods);
-  }
-  async get(instances, options) {
-    const where = {};
-    let Target = this.target;
-    let instance;
-    options = Utils.cloneDeep(options);
-    if (Object.prototype.hasOwnProperty.call(options, "scope")) {
-      if (!options.scope) {
-        Target = Target.unscoped();
-      } else {
-        Target = Target.scope(options.scope);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "schema")) {
-      Target = Target.schema(options.schema, options.schemaDelimiter);
-    }
-    if (!Array.isArray(instances)) {
-      instance = instances;
-      instances = void 0;
-    }
-    if (instances) {
-      where[this.targetKey] = {
-        [Op.in]: instances.map((_instance) => _instance.get(this.foreignKey))
-      };
-    } else {
-      if (this.targetKeyIsPrimary && !options.where) {
-        return Target.findByPk(instance.get(this.foreignKey), options);
-      }
-      where[this.targetKey] = instance.get(this.foreignKey);
-      options.limit = null;
-    }
-    options.where = options.where ? { [Op.and]: [where, options.where] } : where;
-    if (instances) {
-      const results = await Target.findAll(options);
-      const result = {};
-      for (const _instance of instances) {
-        result[_instance.get(this.foreignKey, { raw: true })] = null;
-      }
-      for (const _instance of results) {
-        result[_instance.get(this.targetKey, { raw: true })] = _instance;
-      }
-      return result;
-    }
-    return Target.findOne(options);
-  }
-  async set(sourceInstance, associatedInstance, options = {}) {
-    let value = associatedInstance;
-    if (associatedInstance instanceof this.target) {
-      value = associatedInstance[this.targetKey];
-    }
-    sourceInstance.set(this.foreignKey, value);
-    if (options.save === false)
-      return;
-    options = __spreadValues({
-      fields: [this.foreignKey],
-      allowNull: [this.foreignKey],
-      association: true
-    }, options);
-    return await sourceInstance.save(options);
-  }
-  async create(sourceInstance, values, options) {
-    values = values || {};
-    options = options || {};
-    const newAssociatedObject = await this.target.create(values, options);
-    await sourceInstance[this.accessors.set](newAssociatedObject, options);
-    return newAssociatedObject;
-  }
-  verifyAssociationAlias(alias) {
-    if (typeof alias === "string") {
-      return this.as === alias;
-    }
-    if (alias && alias.singular) {
-      return this.as === alias.singular;
-    }
-    return !this.isAliased;
-  }
-}
-module.exports = BelongsTo;
-module.exports.BelongsTo = BelongsTo;
-module.exports.default = BelongsTo;
-//# sourceMappingURL=belongs-to.js.map
Index: ckend/node_modules/sequelize/lib/associations/belongs-to.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/belongs-to.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/belongs-to.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('./../utils');\nconst Helpers = require('./helpers');\nconst _ = require('lodash');\nconst Association = require('./base');\nconst Op = require('../operators');\n\n/**\n * One-to-one association\n *\n * In the API reference below, add the name of the association to the method, e.g. for `User.belongsTo(Project)` the getter will be `user.getProject()`.\n *\n * @see {@link Model.belongsTo}\n */\nclass BelongsTo extends Association {\n  constructor(source, target, options) {\n    super(source, target, options);\n\n    this.associationType = 'BelongsTo';\n    this.isSingleAssociation = true;\n    this.foreignKeyAttribute = {};\n\n    if (this.as) {\n      this.isAliased = true;\n      this.options.name = {\n        singular: this.as\n      };\n    } else {\n      this.as = this.target.options.name.singular;\n      this.options.name = this.target.options.name;\n    }\n\n    if (_.isObject(this.options.foreignKey)) {\n      this.foreignKeyAttribute = this.options.foreignKey;\n      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;\n    } else if (this.options.foreignKey) {\n      this.foreignKey = this.options.foreignKey;\n    }\n\n    if (!this.foreignKey) {\n      this.foreignKey = Utils.camelize(\n        [\n          this.as,\n          this.target.primaryKeyAttribute\n        ].join('_')\n      );\n    }\n\n    this.identifier = this.foreignKey;\n    if (this.source.rawAttributes[this.identifier]) {\n      this.identifierField = this.source.rawAttributes[this.identifier].field || this.identifier;\n    }\n\n    if (\n      this.options.targetKey\n      && !this.target.rawAttributes[this.options.targetKey]\n    ) {\n      throw new Error(`Unknown attribute \"${this.options.targetKey}\" passed as targetKey, define this attribute on model \"${this.target.name}\" first`);\n    }\n\n    this.targetKey = this.options.targetKey || this.target.primaryKeyAttribute;\n    this.targetKeyField = this.target.rawAttributes[this.targetKey].field || this.targetKey;\n    this.targetKeyIsPrimary = this.targetKey === this.target.primaryKeyAttribute;\n    this.targetIdentifier = this.targetKey;\n\n    this.associationAccessor = this.as;\n    this.options.useHooks = options.useHooks;\n\n    // Get singular name, trying to uppercase the first letter, unless the model forbids it\n    const singular = _.upperFirst(this.options.name.singular);\n\n    this.accessors = {\n      get: `get${singular}`,\n      set: `set${singular}`,\n      create: `create${singular}`\n    };\n  }\n\n  // the id is in the source table\n  _injectAttributes() {\n    const newAttributes = {\n      [this.foreignKey]: {\n        type: this.options.keyType || this.target.rawAttributes[this.targetKey].type,\n        allowNull: true,\n        ...this.foreignKeyAttribute\n      }\n    };\n\n    if (this.options.constraints !== false) {\n      const source = this.source.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];\n      this.options.onDelete = this.options.onDelete || (source.allowNull ? 'SET NULL' : 'NO ACTION');\n      this.options.onUpdate = this.options.onUpdate || 'CASCADE';\n    }\n\n    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.target, this.source, this.options, this.targetKeyField);\n    Utils.mergeDefaults(this.source.rawAttributes, newAttributes);\n\n    this.source.refreshAttributes();\n\n    this.identifierField = this.source.rawAttributes[this.foreignKey].field || this.foreignKey;\n\n    Helpers.checkNamingCollision(this);\n\n    return this;\n  }\n\n  mixin(obj) {\n    const methods = ['get', 'set', 'create'];\n\n    Helpers.mixinMethods(this, obj, methods);\n  }\n\n  /**\n   * Get the associated instance.\n   *\n   * @param {Model|Array<Model>} instances source instances\n   * @param {object}         [options] find options\n   * @param {string|boolean} [options.scope]  Apply a scope on the related model, or remove its default scope by passing false.\n   * @param {string}         [options.schema] Apply a schema on the related model\n   *\n   * @see\n   * {@link Model.findOne} for a full explanation of options\n   *\n   * @returns {Promise<Model>}\n   */\n  async get(instances, options) {\n    const where = {};\n    let Target = this.target;\n    let instance;\n\n    options = Utils.cloneDeep(options);\n\n    if (Object.prototype.hasOwnProperty.call(options, 'scope')) {\n      if (!options.scope) {\n        Target = Target.unscoped();\n      } else {\n        Target = Target.scope(options.scope);\n      }\n    }\n\n    if (Object.prototype.hasOwnProperty.call(options, 'schema')) {\n      Target = Target.schema(options.schema, options.schemaDelimiter);\n    }\n\n    if (!Array.isArray(instances)) {\n      instance = instances;\n      instances = undefined;\n    }\n\n    if (instances) {\n      where[this.targetKey] = {\n        [Op.in]: instances.map(_instance => _instance.get(this.foreignKey))\n      };\n    } else {\n      if (this.targetKeyIsPrimary && !options.where) {\n        return Target.findByPk(instance.get(this.foreignKey), options);\n      }\n      where[this.targetKey] = instance.get(this.foreignKey);\n      options.limit = null;\n    }\n\n    options.where = options.where ?\n      { [Op.and]: [where, options.where] } :\n      where;\n\n    if (instances) {\n      const results = await Target.findAll(options);\n      const result = {};\n      for (const _instance of instances) {\n        result[_instance.get(this.foreignKey, { raw: true })] = null;\n      }\n\n      for (const _instance of results) {\n        result[_instance.get(this.targetKey, { raw: true })] = _instance;\n      }\n\n      return result;\n    }\n\n    return Target.findOne(options);\n  }\n\n  /**\n   * Set the associated model.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {?Model|string|number} [associatedInstance] An persisted instance or the primary key of an instance to associate with this. Pass `null` or `undefined` to remove the association.\n   * @param {object} [options={}] options passed to `this.save`\n   * @param {boolean} [options.save=true] Skip saving this after setting the foreign key if false.\n   *\n   *  @returns {Promise}\n   */\n  async set(sourceInstance, associatedInstance, options = {}) {\n    let value = associatedInstance;\n\n    if (associatedInstance instanceof this.target) {\n      value = associatedInstance[this.targetKey];\n    }\n\n    sourceInstance.set(this.foreignKey, value);\n\n    if (options.save === false) return;\n\n    options = {\n      fields: [this.foreignKey],\n      allowNull: [this.foreignKey],\n      association: true,\n      ...options\n    };\n\n    // passes the changed field to save, so only that field get updated.\n    return await sourceInstance.save(options);\n  }\n\n  /**\n   * Create a new instance of the associated model and associate it with this.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {object} [values={}] values to create associated model instance with\n   * @param {object} [options={}] Options passed to `target.create` and setAssociation.\n   *\n   * @see\n   * {@link Model#create}  for a full explanation of options\n   *\n   * @returns {Promise<Model>} The created target model\n   */\n  async create(sourceInstance, values, options) {\n    values = values || {};\n    options = options || {};\n\n    const newAssociatedObject = await this.target.create(values, options);\n    await sourceInstance[this.accessors.set](newAssociatedObject, options);\n\n    return newAssociatedObject;\n  }\n\n  verifyAssociationAlias(alias) {\n    if (typeof alias === 'string') {\n      return this.as === alias;\n    }\n\n    if (alias && alias.singular) {\n      return this.as === alias.singular;\n    }\n\n    return !this.isAliased;\n  }\n}\n\nmodule.exports = BelongsTo;\nmodule.exports.BelongsTo = BelongsTo;\nmodule.exports.default = BelongsTo;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/has-many.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/has-many.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,316 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const Utils = require("./../utils");
-const Helpers = require("./helpers");
-const _ = require("lodash");
-const Association = require("./base");
-const Op = require("../operators");
-class HasMany extends Association {
-  constructor(source, target, options) {
-    super(source, target, options);
-    this.associationType = "HasMany";
-    this.targetAssociation = null;
-    this.sequelize = source.sequelize;
-    this.isMultiAssociation = true;
-    this.foreignKeyAttribute = {};
-    if (this.options.through) {
-      throw new Error("N:M associations are not supported with hasMany. Use belongsToMany instead");
-    }
-    if (this.isSelfAssociation) {
-      this.targetAssociation = this;
-    }
-    if (this.as) {
-      this.isAliased = true;
-      if (_.isPlainObject(this.as)) {
-        this.options.name = this.as;
-        this.as = this.as.plural;
-      } else {
-        this.options.name = {
-          plural: this.as,
-          singular: Utils.singularize(this.as)
-        };
-      }
-    } else {
-      this.as = this.target.options.name.plural;
-      this.options.name = this.target.options.name;
-    }
-    if (_.isObject(this.options.foreignKey)) {
-      this.foreignKeyAttribute = this.options.foreignKey;
-      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;
-    } else if (this.options.foreignKey) {
-      this.foreignKey = this.options.foreignKey;
-    }
-    if (!this.foreignKey) {
-      this.foreignKey = Utils.camelize([
-        this.source.options.name.singular,
-        this.source.primaryKeyAttribute
-      ].join("_"));
-    }
-    if (this.target.rawAttributes[this.foreignKey]) {
-      this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-      this.foreignKeyField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-    }
-    this.sourceKey = this.options.sourceKey || this.source.primaryKeyAttribute;
-    if (this.source.rawAttributes[this.sourceKey]) {
-      this.sourceKeyAttribute = this.sourceKey;
-      this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;
-    } else {
-      this.sourceKeyAttribute = this.source.primaryKeyAttribute;
-      this.sourceKeyField = this.source.primaryKeyField;
-    }
-    const plural = _.upperFirst(this.options.name.plural);
-    const singular = _.upperFirst(this.options.name.singular);
-    this.associationAccessor = this.as;
-    this.accessors = {
-      get: `get${plural}`,
-      set: `set${plural}`,
-      addMultiple: `add${plural}`,
-      add: `add${singular}`,
-      create: `create${singular}`,
-      remove: `remove${singular}`,
-      removeMultiple: `remove${plural}`,
-      hasSingle: `has${singular}`,
-      hasAll: `has${plural}`,
-      count: `count${plural}`
-    };
-  }
-  _injectAttributes() {
-    const newAttributes = {
-      [this.foreignKey]: __spreadValues({
-        type: this.options.keyType || this.source.rawAttributes[this.sourceKeyAttribute].type,
-        allowNull: true
-      }, this.foreignKeyAttribute)
-    };
-    const constraintOptions = __spreadValues({}, this.options);
-    if (this.options.constraints !== false) {
-      const target = this.target.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];
-      constraintOptions.onDelete = constraintOptions.onDelete || (target.allowNull ? "SET NULL" : "CASCADE");
-      constraintOptions.onUpdate = constraintOptions.onUpdate || "CASCADE";
-    }
-    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.source, this.target, constraintOptions, this.sourceKeyField);
-    Utils.mergeDefaults(this.target.rawAttributes, newAttributes);
-    this.target.refreshAttributes();
-    this.source.refreshAttributes();
-    this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-    this.foreignKeyField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;
-    Helpers.checkNamingCollision(this);
-    return this;
-  }
-  mixin(obj) {
-    const methods = ["get", "count", "hasSingle", "hasAll", "set", "add", "addMultiple", "remove", "removeMultiple", "create"];
-    const aliases = {
-      hasSingle: "has",
-      hasAll: "has",
-      addMultiple: "add",
-      removeMultiple: "remove"
-    };
-    Helpers.mixinMethods(this, obj, methods, aliases);
-  }
-  async get(instances, options = {}) {
-    const where = {};
-    let Model = this.target;
-    let instance;
-    let values;
-    if (!Array.isArray(instances)) {
-      instance = instances;
-      instances = void 0;
-    }
-    options = __spreadValues({}, options);
-    if (this.scope) {
-      Object.assign(where, this.scope);
-    }
-    if (instances) {
-      values = instances.map((_instance) => _instance.get(this.sourceKey, { raw: true }));
-      if (options.limit && instances.length > 1) {
-        options.groupedLimit = {
-          limit: options.limit,
-          on: this,
-          values
-        };
-        delete options.limit;
-      } else {
-        where[this.foreignKey] = {
-          [Op.in]: values
-        };
-        delete options.groupedLimit;
-      }
-    } else {
-      where[this.foreignKey] = instance.get(this.sourceKey, { raw: true });
-    }
-    options.where = options.where ? { [Op.and]: [where, options.where] } : where;
-    if (Object.prototype.hasOwnProperty.call(options, "scope")) {
-      if (!options.scope) {
-        Model = Model.unscoped();
-      } else {
-        Model = Model.scope(options.scope);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "schema")) {
-      Model = Model.schema(options.schema, options.schemaDelimiter);
-    }
-    const results = await Model.findAll(options);
-    if (instance)
-      return results;
-    const result = {};
-    for (const _instance of instances) {
-      result[_instance.get(this.sourceKey, { raw: true })] = [];
-    }
-    for (const _instance of results) {
-      result[_instance.get(this.foreignKey, { raw: true })].push(_instance);
-    }
-    return result;
-  }
-  async count(instance, options) {
-    options = Utils.cloneDeep(options);
-    options.attributes = [
-      [
-        this.sequelize.fn("COUNT", this.sequelize.col(`${this.target.name}.${this.target.primaryKeyField}`)),
-        "count"
-      ]
-    ];
-    options.raw = true;
-    options.plain = true;
-    const result = await this.get(instance, options);
-    return parseInt(result.count, 10);
-  }
-  async has(sourceInstance, targetInstances, options) {
-    const where = {};
-    if (!Array.isArray(targetInstances)) {
-      targetInstances = [targetInstances];
-    }
-    options = __spreadProps(__spreadValues({}, options), {
-      scope: false,
-      attributes: [this.target.primaryKeyAttribute],
-      raw: true
-    });
-    where[Op.or] = targetInstances.map((instance) => {
-      if (instance instanceof this.target) {
-        return instance.where();
-      }
-      return {
-        [this.target.primaryKeyAttribute]: instance
-      };
-    });
-    options.where = {
-      [Op.and]: [
-        where,
-        options.where
-      ]
-    };
-    const associatedObjects = await this.get(sourceInstance, options);
-    return associatedObjects.length === targetInstances.length;
-  }
-  async set(sourceInstance, targetInstances, options) {
-    if (targetInstances === null) {
-      targetInstances = [];
-    } else {
-      targetInstances = this.toInstanceArray(targetInstances);
-    }
-    const oldAssociations = await this.get(sourceInstance, __spreadProps(__spreadValues({}, options), { scope: false, raw: true }));
-    const promises = [];
-    const obsoleteAssociations = oldAssociations.filter((old) => !targetInstances.find((obj) => obj[this.target.primaryKeyAttribute] === old[this.target.primaryKeyAttribute]));
-    const unassociatedObjects = targetInstances.filter((obj) => !oldAssociations.find((old) => obj[this.target.primaryKeyAttribute] === old[this.target.primaryKeyAttribute]));
-    let updateWhere;
-    let update;
-    if (obsoleteAssociations.length > 0) {
-      update = {};
-      update[this.foreignKey] = null;
-      updateWhere = {
-        [this.target.primaryKeyAttribute]: obsoleteAssociations.map((associatedObject) => associatedObject[this.target.primaryKeyAttribute])
-      };
-      promises.push(this.target.unscoped().update(update, __spreadProps(__spreadValues({}, options), {
-        where: updateWhere
-      })));
-    }
-    if (unassociatedObjects.length > 0) {
-      updateWhere = {};
-      update = {};
-      update[this.foreignKey] = sourceInstance.get(this.sourceKey);
-      Object.assign(update, this.scope);
-      updateWhere[this.target.primaryKeyAttribute] = unassociatedObjects.map((unassociatedObject) => unassociatedObject[this.target.primaryKeyAttribute]);
-      promises.push(this.target.unscoped().update(update, __spreadProps(__spreadValues({}, options), {
-        where: updateWhere
-      })));
-    }
-    await Promise.all(promises);
-    return sourceInstance;
-  }
-  async add(sourceInstance, targetInstances, options = {}) {
-    if (!targetInstances)
-      return Promise.resolve();
-    targetInstances = this.toInstanceArray(targetInstances);
-    const update = __spreadValues({
-      [this.foreignKey]: sourceInstance.get(this.sourceKey)
-    }, this.scope);
-    const where = {
-      [this.target.primaryKeyAttribute]: targetInstances.map((unassociatedObject) => unassociatedObject.get(this.target.primaryKeyAttribute))
-    };
-    await this.target.unscoped().update(update, __spreadProps(__spreadValues({}, options), { where }));
-    return sourceInstance;
-  }
-  async remove(sourceInstance, targetInstances, options = {}) {
-    const update = {
-      [this.foreignKey]: null
-    };
-    targetInstances = this.toInstanceArray(targetInstances);
-    const where = {
-      [this.foreignKey]: sourceInstance.get(this.sourceKey),
-      [this.target.primaryKeyAttribute]: targetInstances.map((targetInstance) => targetInstance.get(this.target.primaryKeyAttribute))
-    };
-    await this.target.unscoped().update(update, __spreadProps(__spreadValues({}, options), { where }));
-    return this;
-  }
-  async create(sourceInstance, values, options = {}) {
-    if (Array.isArray(options)) {
-      options = {
-        fields: options
-      };
-    }
-    if (values === void 0) {
-      values = {};
-    }
-    if (this.scope) {
-      for (const attribute of Object.keys(this.scope)) {
-        values[attribute] = this.scope[attribute];
-        if (options.fields)
-          options.fields.push(attribute);
-      }
-    }
-    values[this.foreignKey] = sourceInstance.get(this.sourceKey);
-    if (options.fields)
-      options.fields.push(this.foreignKey);
-    return await this.target.create(values, options);
-  }
-  verifyAssociationAlias(alias) {
-    if (typeof alias === "string") {
-      return this.as === alias;
-    }
-    if (alias && alias.plural) {
-      return this.as === alias.plural;
-    }
-    return !this.isAliased;
-  }
-}
-module.exports = HasMany;
-module.exports.HasMany = HasMany;
-module.exports.default = HasMany;
-//# sourceMappingURL=has-many.js.map
Index: ckend/node_modules/sequelize/lib/associations/has-many.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/has-many.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/has-many.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('./../utils');\nconst Helpers = require('./helpers');\nconst _ = require('lodash');\nconst Association = require('./base');\nconst Op = require('../operators');\n\n/**\n * One-to-many association\n *\n * In the API reference below, add the name of the association to the method, e.g. for `User.hasMany(Project)` the getter will be `user.getProjects()`.\n * If the association is aliased, use the alias instead, e.g. `User.hasMany(Project, { as: 'jobs' })` will be `user.getJobs()`.\n *\n * @see {@link Model.hasMany}\n */\nclass HasMany extends Association {\n  constructor(source, target, options) {\n    super(source, target, options);\n\n    this.associationType = 'HasMany';\n    this.targetAssociation = null;\n    this.sequelize = source.sequelize;\n    this.isMultiAssociation = true;\n    this.foreignKeyAttribute = {};\n\n    if (this.options.through) {\n      throw new Error('N:M associations are not supported with hasMany. Use belongsToMany instead');\n    }\n\n    /*\n    * If self association, this is the target association\n    */\n    if (this.isSelfAssociation) {\n      this.targetAssociation = this;\n    }\n\n    if (this.as) {\n      this.isAliased = true;\n\n      if (_.isPlainObject(this.as)) {\n        this.options.name = this.as;\n        this.as = this.as.plural;\n      } else {\n        this.options.name = {\n          plural: this.as,\n          singular: Utils.singularize(this.as)\n        };\n      }\n    } else {\n      this.as = this.target.options.name.plural;\n      this.options.name = this.target.options.name;\n    }\n\n    /*\n     * Foreign key setup\n     */\n    if (_.isObject(this.options.foreignKey)) {\n      this.foreignKeyAttribute = this.options.foreignKey;\n      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;\n    } else if (this.options.foreignKey) {\n      this.foreignKey = this.options.foreignKey;\n    }\n\n    if (!this.foreignKey) {\n      this.foreignKey = Utils.camelize(\n        [\n          this.source.options.name.singular,\n          this.source.primaryKeyAttribute\n        ].join('_')\n      );\n    }\n\n    if (this.target.rawAttributes[this.foreignKey]) {\n      this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n      this.foreignKeyField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n    }\n\n    /*\n     * Source key setup\n     */\n    this.sourceKey = this.options.sourceKey || this.source.primaryKeyAttribute;\n\n    if (this.source.rawAttributes[this.sourceKey]) {\n      this.sourceKeyAttribute = this.sourceKey;\n      this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;\n    } else {\n      this.sourceKeyAttribute = this.source.primaryKeyAttribute;\n      this.sourceKeyField = this.source.primaryKeyField;\n    }\n\n    // Get singular and plural names\n    // try to uppercase the first letter, unless the model forbids it\n    const plural = _.upperFirst(this.options.name.plural);\n    const singular = _.upperFirst(this.options.name.singular);\n\n    this.associationAccessor = this.as;\n    this.accessors = {\n      get: `get${plural}`,\n      set: `set${plural}`,\n      addMultiple: `add${plural}`,\n      add: `add${singular}`,\n      create: `create${singular}`,\n      remove: `remove${singular}`,\n      removeMultiple: `remove${plural}`,\n      hasSingle: `has${singular}`,\n      hasAll: `has${plural}`,\n      count: `count${plural}`\n    };\n  }\n\n  // the id is in the target table\n  // or in an extra table which connects two tables\n  _injectAttributes() {\n    const newAttributes = {\n      [this.foreignKey]: {\n        type: this.options.keyType || this.source.rawAttributes[this.sourceKeyAttribute].type,\n        allowNull: true,\n        ...this.foreignKeyAttribute\n      }\n    };\n\n    // Create a new options object for use with addForeignKeyConstraints, to avoid polluting this.options in case it is later used for a n:m\n    const constraintOptions = { ...this.options };\n\n    if (this.options.constraints !== false) {\n      const target = this.target.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];\n      constraintOptions.onDelete = constraintOptions.onDelete || (target.allowNull ? 'SET NULL' : 'CASCADE');\n      constraintOptions.onUpdate = constraintOptions.onUpdate || 'CASCADE';\n    }\n\n    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.source, this.target, constraintOptions, this.sourceKeyField);\n    Utils.mergeDefaults(this.target.rawAttributes, newAttributes);\n\n    this.target.refreshAttributes();\n    this.source.refreshAttributes();\n\n    this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n    this.foreignKeyField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;\n\n    Helpers.checkNamingCollision(this);\n\n    return this;\n  }\n\n  mixin(obj) {\n    const methods = ['get', 'count', 'hasSingle', 'hasAll', 'set', 'add', 'addMultiple', 'remove', 'removeMultiple', 'create'];\n    const aliases = {\n      hasSingle: 'has',\n      hasAll: 'has',\n      addMultiple: 'add',\n      removeMultiple: 'remove'\n    };\n\n    Helpers.mixinMethods(this, obj, methods, aliases);\n  }\n\n  /**\n   * Get everything currently associated with this, using an optional where clause.\n   *\n   * @param {Model|Array<Model>} instances source instances\n   * @param {object} [options] find options\n   * @param {object} [options.where] An optional where clause to limit the associated models\n   * @param {string|boolean} [options.scope] Apply a scope on the related model, or remove its default scope by passing false\n   * @param {string} [options.schema] Apply a schema on the related model\n   *\n   * @see\n   * {@link Model.findAll}  for a full explanation of options\n   *\n   * @returns {Promise<Array<Model>>}\n   */\n  async get(instances, options = {}) {\n    const where = {};\n\n    let Model = this.target;\n    let instance;\n    let values;\n\n    if (!Array.isArray(instances)) {\n      instance = instances;\n      instances = undefined;\n    }\n\n    options = { ...options };\n\n    if (this.scope) {\n      Object.assign(where, this.scope);\n    }\n\n    if (instances) {\n      values = instances.map(_instance => _instance.get(this.sourceKey, { raw: true }));\n\n      if (options.limit && instances.length > 1) {\n        options.groupedLimit = {\n          limit: options.limit,\n          on: this, // association\n          values\n        };\n\n        delete options.limit;\n      } else {\n        where[this.foreignKey] = {\n          [Op.in]: values\n        };\n        delete options.groupedLimit;\n      }\n    } else {\n      where[this.foreignKey] = instance.get(this.sourceKey, { raw: true });\n    }\n\n    options.where = options.where ?\n      { [Op.and]: [where, options.where] } :\n      where;\n\n    if (Object.prototype.hasOwnProperty.call(options, 'scope')) {\n      if (!options.scope) {\n        Model = Model.unscoped();\n      } else {\n        Model = Model.scope(options.scope);\n      }\n    }\n\n    if (Object.prototype.hasOwnProperty.call(options, 'schema')) {\n      Model = Model.schema(options.schema, options.schemaDelimiter);\n    }\n\n    const results = await Model.findAll(options);\n    if (instance) return results;\n\n    const result = {};\n    for (const _instance of instances) {\n      result[_instance.get(this.sourceKey, { raw: true })] = [];\n    }\n\n    for (const _instance of results) {\n      result[_instance.get(this.foreignKey, { raw: true })].push(_instance);\n    }\n\n    return result;\n  }\n\n  /**\n   * Count everything currently associated with this, using an optional where clause.\n   *\n   * @param {Model}        instance the source instance\n   * @param {object}         [options] find & count options\n   * @param {object}         [options.where] An optional where clause to limit the associated models\n   * @param {string|boolean} [options.scope] Apply a scope on the related model, or remove its default scope by passing false\n   *\n   * @returns {Promise<number>}\n   */\n  async count(instance, options) {\n    options = Utils.cloneDeep(options);\n\n    options.attributes = [\n      [\n        this.sequelize.fn(\n          'COUNT',\n          this.sequelize.col(`${this.target.name}.${this.target.primaryKeyField}`)\n        ),\n        'count'\n      ]\n    ];\n    options.raw = true;\n    options.plain = true;\n\n    const result = await this.get(instance, options);\n\n    return parseInt(result.count, 10);\n  }\n\n  /**\n   * Check if one or more rows are associated with `this`.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {Model|Model[]|string[]|string|number[]|number} [targetInstances] Can be an array of instances or their primary keys\n   * @param {object} [options] Options passed to getAssociations\n   *\n   * @returns {Promise}\n   */\n  async has(sourceInstance, targetInstances, options) {\n    const where = {};\n\n    if (!Array.isArray(targetInstances)) {\n      targetInstances = [targetInstances];\n    }\n\n    options = {\n      ...options,\n      scope: false,\n      attributes: [this.target.primaryKeyAttribute],\n      raw: true\n    };\n\n    where[Op.or] = targetInstances.map(instance => {\n      if (instance instanceof this.target) {\n        return instance.where();\n      }\n      return {\n        [this.target.primaryKeyAttribute]: instance\n      };\n    });\n\n    options.where = {\n      [Op.and]: [\n        where,\n        options.where\n      ]\n    };\n\n    const associatedObjects = await this.get(sourceInstance, options);\n\n    return associatedObjects.length === targetInstances.length;\n  }\n\n  /**\n   * Set the associated models by passing an array of persisted instances or their primary keys. Everything that is not in the passed array will be un-associated\n   *\n   * @param {Model} sourceInstance source instance to associate new instances with\n   * @param {Model|Model[]|string[]|string|number[]|number} [targetInstances] An array of persisted instances or primary key of instances to associate with this. Pass `null` or `undefined` to remove all associations.\n   * @param {object} [options] Options passed to `target.findAll` and `update`.\n   * @param {object} [options.validate] Run validation for the join model\n   *\n   * @returns {Promise}\n   */\n  async set(sourceInstance, targetInstances, options) {\n    if (targetInstances === null) {\n      targetInstances = [];\n    } else {\n      targetInstances = this.toInstanceArray(targetInstances);\n    }\n\n    const oldAssociations = await this.get(sourceInstance, { ...options, scope: false, raw: true });\n    const promises = [];\n    const obsoleteAssociations = oldAssociations.filter(old =>\n      !targetInstances.find(obj =>\n        obj[this.target.primaryKeyAttribute] === old[this.target.primaryKeyAttribute]\n      )\n    );\n    const unassociatedObjects = targetInstances.filter(obj =>\n      !oldAssociations.find(old =>\n        obj[this.target.primaryKeyAttribute] === old[this.target.primaryKeyAttribute]\n      )\n    );\n    let updateWhere;\n    let update;\n\n    if (obsoleteAssociations.length > 0) {\n      update = {};\n      update[this.foreignKey] = null;\n\n      updateWhere = {\n        [this.target.primaryKeyAttribute]: obsoleteAssociations.map(associatedObject =>\n          associatedObject[this.target.primaryKeyAttribute]\n        )\n      };\n\n\n      promises.push(this.target.unscoped().update(\n        update,\n        {\n          ...options,\n          where: updateWhere\n        }\n      ));\n    }\n\n    if (unassociatedObjects.length > 0) {\n      updateWhere = {};\n\n      update = {};\n      update[this.foreignKey] = sourceInstance.get(this.sourceKey);\n\n      Object.assign(update, this.scope);\n      updateWhere[this.target.primaryKeyAttribute] = unassociatedObjects.map(unassociatedObject =>\n        unassociatedObject[this.target.primaryKeyAttribute]\n      );\n\n      promises.push(this.target.unscoped().update(\n        update,\n        {\n          ...options,\n          where: updateWhere\n        }\n      ));\n    }\n\n    await Promise.all(promises);\n\n    return sourceInstance;\n  }\n\n  /**\n   * Associate one or more target rows with `this`. This method accepts a Model / string / number to associate a single row,\n   * or a mixed array of Model / string / numbers to associate multiple rows.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {Model|Model[]|string[]|string|number[]|number} [targetInstances] A single instance or primary key, or a mixed array of persisted instances or primary keys\n   * @param {object} [options] Options passed to `target.update`.\n   *\n   * @returns {Promise}\n   */\n  async add(sourceInstance, targetInstances, options = {}) {\n    if (!targetInstances) return Promise.resolve();\n\n\n    targetInstances = this.toInstanceArray(targetInstances);\n\n    const update = {\n      [this.foreignKey]: sourceInstance.get(this.sourceKey),\n      ...this.scope\n    };\n\n    const where = {\n      [this.target.primaryKeyAttribute]: targetInstances.map(unassociatedObject =>\n        unassociatedObject.get(this.target.primaryKeyAttribute)\n      )\n    };\n\n    await this.target.unscoped().update(update, { ...options, where });\n\n    return sourceInstance;\n  }\n\n  /**\n   * Un-associate one or several target rows.\n   *\n   * @param {Model} sourceInstance instance to un associate instances with\n   * @param {Model|Model[]|string|string[]|number|number[]} [targetInstances] Can be an Instance or its primary key, or a mixed array of instances and primary keys\n   * @param {object} [options] Options passed to `target.update`\n   *\n   * @returns {Promise}\n   */\n  async remove(sourceInstance, targetInstances, options = {}) {\n    const update = {\n      [this.foreignKey]: null\n    };\n\n    targetInstances = this.toInstanceArray(targetInstances);\n\n    const where = {\n      [this.foreignKey]: sourceInstance.get(this.sourceKey),\n      [this.target.primaryKeyAttribute]: targetInstances.map(targetInstance =>\n        targetInstance.get(this.target.primaryKeyAttribute)\n      )\n    };\n\n    await this.target.unscoped().update(update, { ...options, where });\n\n    return this;\n  }\n\n  /**\n   * Create a new instance of the associated model and associate it with this.\n   *\n   * @param {Model} sourceInstance source instance\n   * @param {object} [values] values for target model instance\n   * @param {object} [options] Options passed to `target.create`\n   *\n   * @returns {Promise}\n   */\n  async create(sourceInstance, values, options = {}) {\n    if (Array.isArray(options)) {\n      options = {\n        fields: options\n      };\n    }\n\n    if (values === undefined) {\n      values = {};\n    }\n\n    if (this.scope) {\n      for (const attribute of Object.keys(this.scope)) {\n        values[attribute] = this.scope[attribute];\n        if (options.fields) options.fields.push(attribute);\n      }\n    }\n\n    values[this.foreignKey] = sourceInstance.get(this.sourceKey);\n    if (options.fields) options.fields.push(this.foreignKey);\n    return await this.target.create(values, options);\n  }\n\n  verifyAssociationAlias(alias) {\n    if (typeof alias === 'string') {\n      return this.as === alias;\n    }\n\n    if (alias && alias.plural) {\n      return this.as === alias.plural;\n    }\n\n    return !this.isAliased;\n  }\n}\n\nmodule.exports = HasMany;\nmodule.exports.HasMany = HasMany;\nmodule.exports.default = HasMany;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/has-one.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/has-one.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,191 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const Utils = require("./../utils");
-const Helpers = require("./helpers");
-const _ = require("lodash");
-const Association = require("./base");
-const Op = require("../operators");
-class HasOne extends Association {
-  constructor(source, target, options) {
-    super(source, target, options);
-    this.associationType = "HasOne";
-    this.isSingleAssociation = true;
-    this.foreignKeyAttribute = {};
-    if (this.as) {
-      this.isAliased = true;
-      this.options.name = {
-        singular: this.as
-      };
-    } else {
-      this.as = this.target.options.name.singular;
-      this.options.name = this.target.options.name;
-    }
-    if (_.isObject(this.options.foreignKey)) {
-      this.foreignKeyAttribute = this.options.foreignKey;
-      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;
-    } else if (this.options.foreignKey) {
-      this.foreignKey = this.options.foreignKey;
-    }
-    if (!this.foreignKey) {
-      this.foreignKey = Utils.camelize([
-        Utils.singularize(this.options.as || this.source.name),
-        this.source.primaryKeyAttribute
-      ].join("_"));
-    }
-    if (this.options.sourceKey && !this.source.rawAttributes[this.options.sourceKey]) {
-      throw new Error(`Unknown attribute "${this.options.sourceKey}" passed as sourceKey, define this attribute on model "${this.source.name}" first`);
-    }
-    this.sourceKey = this.sourceKeyAttribute = this.options.sourceKey || this.source.primaryKeyAttribute;
-    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;
-    this.sourceKeyIsPrimary = this.sourceKey === this.source.primaryKeyAttribute;
-    this.associationAccessor = this.as;
-    this.options.useHooks = options.useHooks;
-    if (this.target.rawAttributes[this.foreignKey]) {
-      this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-    }
-    const singular = _.upperFirst(this.options.name.singular);
-    this.accessors = {
-      get: `get${singular}`,
-      set: `set${singular}`,
-      create: `create${singular}`
-    };
-  }
-  _injectAttributes() {
-    const newAttributes = {
-      [this.foreignKey]: __spreadValues({
-        type: this.options.keyType || this.source.rawAttributes[this.sourceKey].type,
-        allowNull: true
-      }, this.foreignKeyAttribute)
-    };
-    if (this.options.constraints !== false) {
-      const target = this.target.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];
-      this.options.onDelete = this.options.onDelete || (target.allowNull ? "SET NULL" : "CASCADE");
-      this.options.onUpdate = this.options.onUpdate || "CASCADE";
-    }
-    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.source, this.target, this.options, this.sourceKeyField);
-    Utils.mergeDefaults(this.target.rawAttributes, newAttributes);
-    this.target.refreshAttributes();
-    this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;
-    Helpers.checkNamingCollision(this);
-    return this;
-  }
-  mixin(obj) {
-    const methods = ["get", "set", "create"];
-    Helpers.mixinMethods(this, obj, methods);
-  }
-  async get(instances, options) {
-    const where = {};
-    let Target = this.target;
-    let instance;
-    options = Utils.cloneDeep(options);
-    if (Object.prototype.hasOwnProperty.call(options, "scope")) {
-      if (!options.scope) {
-        Target = Target.unscoped();
-      } else {
-        Target = Target.scope(options.scope);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "schema")) {
-      Target = Target.schema(options.schema, options.schemaDelimiter);
-    }
-    if (!Array.isArray(instances)) {
-      instance = instances;
-      instances = void 0;
-    }
-    if (instances) {
-      where[this.foreignKey] = {
-        [Op.in]: instances.map((_instance) => _instance.get(this.sourceKey))
-      };
-    } else {
-      where[this.foreignKey] = instance.get(this.sourceKey);
-    }
-    if (this.scope) {
-      Object.assign(where, this.scope);
-    }
-    options.where = options.where ? { [Op.and]: [where, options.where] } : where;
-    if (instances) {
-      const results = await Target.findAll(options);
-      const result = {};
-      for (const _instance of instances) {
-        result[_instance.get(this.sourceKey, { raw: true })] = null;
-      }
-      for (const _instance of results) {
-        result[_instance.get(this.foreignKey, { raw: true })] = _instance;
-      }
-      return result;
-    }
-    return Target.findOne(options);
-  }
-  async set(sourceInstance, associatedInstance, options) {
-    options = __spreadProps(__spreadValues({}, options), { scope: false });
-    const oldInstance = await sourceInstance[this.accessors.get](options);
-    const alreadyAssociated = oldInstance && associatedInstance && this.target.primaryKeyAttributes.every((attribute) => oldInstance.get(attribute, { raw: true }) === (associatedInstance.get ? associatedInstance.get(attribute, { raw: true }) : associatedInstance));
-    if (oldInstance && !alreadyAssociated) {
-      oldInstance[this.foreignKey] = null;
-      await oldInstance.save(__spreadProps(__spreadValues({}, options), {
-        fields: [this.foreignKey],
-        allowNull: [this.foreignKey],
-        association: true
-      }));
-    }
-    if (associatedInstance && !alreadyAssociated) {
-      if (!(associatedInstance instanceof this.target)) {
-        const tmpInstance = {};
-        tmpInstance[this.target.primaryKeyAttribute] = associatedInstance;
-        associatedInstance = this.target.build(tmpInstance, {
-          isNewRecord: false
-        });
-      }
-      Object.assign(associatedInstance, this.scope);
-      associatedInstance.set(this.foreignKey, sourceInstance.get(this.sourceKeyAttribute));
-      return associatedInstance.save(options);
-    }
-    return null;
-  }
-  async create(sourceInstance, values, options) {
-    values = values || {};
-    options = options || {};
-    if (this.scope) {
-      for (const attribute of Object.keys(this.scope)) {
-        values[attribute] = this.scope[attribute];
-        if (options.fields) {
-          options.fields.push(attribute);
-        }
-      }
-    }
-    values[this.foreignKey] = sourceInstance.get(this.sourceKeyAttribute);
-    if (options.fields) {
-      options.fields.push(this.foreignKey);
-    }
-    return await this.target.create(values, options);
-  }
-  verifyAssociationAlias(alias) {
-    if (typeof alias === "string") {
-      return this.as === alias;
-    }
-    if (alias && alias.singular) {
-      return this.as === alias.singular;
-    }
-    return !this.isAliased;
-  }
-}
-module.exports = HasOne;
-//# sourceMappingURL=has-one.js.map
Index: ckend/node_modules/sequelize/lib/associations/has-one.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/has-one.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/has-one.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('./../utils');\nconst Helpers = require('./helpers');\nconst _ = require('lodash');\nconst Association = require('./base');\nconst Op = require('../operators');\n\n/**\n * One-to-one association\n *\n * In the API reference below, add the name of the association to the method, e.g. for `User.hasOne(Project)` the getter will be `user.getProject()`.\n * This is almost the same as `belongsTo` with one exception - The foreign key will be defined on the target model.\n *\n * @see {@link Model.hasOne}\n */\nclass HasOne extends Association {\n  constructor(source, target, options) {\n    super(source, target, options);\n\n    this.associationType = 'HasOne';\n    this.isSingleAssociation = true;\n    this.foreignKeyAttribute = {};\n\n    if (this.as) {\n      this.isAliased = true;\n      this.options.name = {\n        singular: this.as\n      };\n    } else {\n      this.as = this.target.options.name.singular;\n      this.options.name = this.target.options.name;\n    }\n\n    if (_.isObject(this.options.foreignKey)) {\n      this.foreignKeyAttribute = this.options.foreignKey;\n      this.foreignKey = this.foreignKeyAttribute.name || this.foreignKeyAttribute.fieldName;\n    } else if (this.options.foreignKey) {\n      this.foreignKey = this.options.foreignKey;\n    }\n\n    if (!this.foreignKey) {\n      this.foreignKey = Utils.camelize(\n        [\n          Utils.singularize(this.options.as || this.source.name),\n          this.source.primaryKeyAttribute\n        ].join('_')\n      );\n    }\n\n    if (\n      this.options.sourceKey\n      && !this.source.rawAttributes[this.options.sourceKey]\n    ) {\n      throw new Error(`Unknown attribute \"${this.options.sourceKey}\" passed as sourceKey, define this attribute on model \"${this.source.name}\" first`);\n    }\n\n    this.sourceKey = this.sourceKeyAttribute = this.options.sourceKey || this.source.primaryKeyAttribute;\n    this.sourceKeyField = this.source.rawAttributes[this.sourceKey].field || this.sourceKey;\n    this.sourceKeyIsPrimary = this.sourceKey === this.source.primaryKeyAttribute;\n\n    this.associationAccessor = this.as;\n    this.options.useHooks = options.useHooks;\n\n    if (this.target.rawAttributes[this.foreignKey]) {\n      this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n    }\n\n    // Get singular name, trying to uppercase the first letter, unless the model forbids it\n    const singular = _.upperFirst(this.options.name.singular);\n\n    this.accessors = {\n      get: `get${singular}`,\n      set: `set${singular}`,\n      create: `create${singular}`\n    };\n  }\n\n  // the id is in the target table\n  _injectAttributes() {\n    const newAttributes = {\n      [this.foreignKey]: {\n        type: this.options.keyType || this.source.rawAttributes[this.sourceKey].type,\n        allowNull: true,\n        ...this.foreignKeyAttribute\n      }\n    };\n\n    if (this.options.constraints !== false) {\n      const target = this.target.rawAttributes[this.foreignKey] || newAttributes[this.foreignKey];\n      this.options.onDelete = this.options.onDelete || (target.allowNull ? 'SET NULL' : 'CASCADE');\n      this.options.onUpdate = this.options.onUpdate || 'CASCADE';\n    }\n\n    Helpers.addForeignKeyConstraints(newAttributes[this.foreignKey], this.source, this.target, this.options, this.sourceKeyField);\n    Utils.mergeDefaults(this.target.rawAttributes, newAttributes);\n\n    this.target.refreshAttributes();\n\n    this.identifierField = this.target.rawAttributes[this.foreignKey].field || this.foreignKey;\n\n    Helpers.checkNamingCollision(this);\n\n    return this;\n  }\n\n  mixin(obj) {\n    const methods = ['get', 'set', 'create'];\n\n    Helpers.mixinMethods(this, obj, methods);\n  }\n\n  /**\n   * Get the associated instance.\n   *\n   * @param {Model|Array<Model>} instances source instances\n   * @param {object}         [options] find options\n   * @param {string|boolean} [options.scope] Apply a scope on the related model, or remove its default scope by passing false\n   * @param {string} [options.schema] Apply a schema on the related model\n   *\n   * @see\n   * {@link Model.findOne} for a full explanation of options\n   *\n   * @returns {Promise<Model>}\n   */\n  async get(instances, options) {\n    const where = {};\n\n    let Target = this.target;\n    let instance;\n\n    options = Utils.cloneDeep(options);\n\n    if (Object.prototype.hasOwnProperty.call(options, 'scope')) {\n      if (!options.scope) {\n        Target = Target.unscoped();\n      } else {\n        Target = Target.scope(options.scope);\n      }\n    }\n\n    if (Object.prototype.hasOwnProperty.call(options, 'schema')) {\n      Target = Target.schema(options.schema, options.schemaDelimiter);\n    }\n\n    if (!Array.isArray(instances)) {\n      instance = instances;\n      instances = undefined;\n    }\n\n    if (instances) {\n      where[this.foreignKey] = {\n        [Op.in]: instances.map(_instance => _instance.get(this.sourceKey))\n      };\n    } else {\n      where[this.foreignKey] = instance.get(this.sourceKey);\n    }\n\n    if (this.scope) {\n      Object.assign(where, this.scope);\n    }\n\n    options.where = options.where ?\n      { [Op.and]: [where, options.where] } :\n      where;\n\n    if (instances) {\n      const results = await Target.findAll(options);\n      const result = {};\n      for (const _instance of instances) {\n        result[_instance.get(this.sourceKey, { raw: true })] = null;\n      }\n\n      for (const _instance of results) {\n        result[_instance.get(this.foreignKey, { raw: true })] = _instance;\n      }\n\n      return result;\n    }\n\n    return Target.findOne(options);\n  }\n\n  /**\n   * Set the associated model.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {?Model|string|number} [associatedInstance] An persisted instance or the primary key of an instance to associate with this. Pass `null` or `undefined` to remove the association.\n   * @param {object} [options] Options passed to getAssociation and `target.save`\n   *\n   * @returns {Promise}\n   */\n  async set(sourceInstance, associatedInstance, options) {\n    options = { ...options, scope: false };\n\n    const oldInstance = await sourceInstance[this.accessors.get](options);\n    // TODO Use equals method once #5605 is resolved\n    const alreadyAssociated = oldInstance && associatedInstance && this.target.primaryKeyAttributes.every(attribute =>\n      oldInstance.get(attribute, { raw: true }) === (associatedInstance.get ? associatedInstance.get(attribute, { raw: true }) : associatedInstance)\n    );\n\n    if (oldInstance && !alreadyAssociated) {\n      oldInstance[this.foreignKey] = null;\n\n      await oldInstance.save({\n        ...options,\n        fields: [this.foreignKey],\n        allowNull: [this.foreignKey],\n        association: true\n      });\n    }\n    if (associatedInstance && !alreadyAssociated) {\n      if (!(associatedInstance instanceof this.target)) {\n        const tmpInstance = {};\n        tmpInstance[this.target.primaryKeyAttribute] = associatedInstance;\n        associatedInstance = this.target.build(tmpInstance, {\n          isNewRecord: false\n        });\n      }\n\n      Object.assign(associatedInstance, this.scope);\n      associatedInstance.set(this.foreignKey, sourceInstance.get(this.sourceKeyAttribute));\n\n      return associatedInstance.save(options);\n    }\n\n    return null;\n  }\n\n  /**\n   * Create a new instance of the associated model and associate it with this.\n   *\n   * @param {Model} sourceInstance the source instance\n   * @param {object} [values={}] values to create associated model instance with\n   * @param {object} [options] Options passed to `target.create` and setAssociation.\n   *\n   * @see\n   * {@link Model#create} for a full explanation of options\n   *\n   * @returns {Promise<Model>} The created target model\n   */\n  async create(sourceInstance, values, options) {\n    values = values || {};\n    options = options || {};\n\n    if (this.scope) {\n      for (const attribute of Object.keys(this.scope)) {\n        values[attribute] = this.scope[attribute];\n        if (options.fields) {\n          options.fields.push(attribute);\n        }\n      }\n    }\n\n    values[this.foreignKey] = sourceInstance.get(this.sourceKeyAttribute);\n    if (options.fields) {\n      options.fields.push(this.foreignKey);\n    }\n\n    return await this.target.create(values, options);\n  }\n\n  verifyAssociationAlias(alias) {\n    if (typeof alias === 'string') {\n      return this.as === alias;\n    }\n\n    if (alias && alias.singular) {\n      return this.as === alias.singular;\n    }\n\n    return !this.isAliased;\n  }\n}\n\nmodule.exports = HasOne;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/helpers.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/helpers.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-"use strict";
-function checkNamingCollision(association) {
-  if (Object.prototype.hasOwnProperty.call(association.source.rawAttributes, association.as)) {
-    throw new Error(`Naming collision between attribute '${association.as}' and association '${association.as}' on model ${association.source.name}. To remedy this, change either foreignKey or as in your association definition`);
-  }
-}
-exports.checkNamingCollision = checkNamingCollision;
-function addForeignKeyConstraints(newAttribute, source, target, options, key) {
-  if (options.foreignKeyConstraint || options.onDelete || options.onUpdate) {
-    const primaryKeys = Object.keys(source.primaryKeys).map((primaryKeyAttribute) => source.rawAttributes[primaryKeyAttribute].field || primaryKeyAttribute);
-    if (primaryKeys.length === 1 || !primaryKeys.includes(key)) {
-      newAttribute.references = {
-        model: source.getTableName(),
-        key: key || primaryKeys[0]
-      };
-      newAttribute.onDelete = options.onDelete;
-      newAttribute.onUpdate = options.onUpdate;
-    }
-  }
-}
-exports.addForeignKeyConstraints = addForeignKeyConstraints;
-function mixinMethods(association, obj, methods, aliases) {
-  aliases = aliases || {};
-  for (const method of methods) {
-    if (!Object.prototype.hasOwnProperty.call(obj, association.accessors[method])) {
-      const realMethod = aliases[method] || method;
-      obj[association.accessors[method]] = function() {
-        return association[realMethod](this, ...Array.from(arguments));
-      };
-    }
-  }
-}
-exports.mixinMethods = mixinMethods;
-//# sourceMappingURL=helpers.js.map
Index: ckend/node_modules/sequelize/lib/associations/helpers.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/helpers.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/helpers.js"],
-  "sourcesContent": ["'use strict';\n\nfunction checkNamingCollision(association) {\n  if (Object.prototype.hasOwnProperty.call(association.source.rawAttributes, association.as)) {\n    throw new Error(\n      `Naming collision between attribute '${association.as}'` +\n      ` and association '${association.as}' on model ${association.source.name}` +\n      '. To remedy this, change either foreignKey or as in your association definition'\n    );\n  }\n}\nexports.checkNamingCollision = checkNamingCollision;\n\nfunction addForeignKeyConstraints(newAttribute, source, target, options, key) {\n  // FK constraints are opt-in: users must either set `foreignKeyConstraints`\n  // on the association, or request an `onDelete` or `onUpdate` behavior\n\n  if (options.foreignKeyConstraint || options.onDelete || options.onUpdate) {\n    // Find primary keys: composite keys not supported with this approach\n    const primaryKeys = Object.keys(source.primaryKeys)\n      .map(primaryKeyAttribute => source.rawAttributes[primaryKeyAttribute].field || primaryKeyAttribute);\n\n    if (primaryKeys.length === 1 || !primaryKeys.includes(key)) {\n      newAttribute.references = {\n        model: source.getTableName(),\n        key: key || primaryKeys[0]\n      };\n\n      newAttribute.onDelete = options.onDelete;\n      newAttribute.onUpdate = options.onUpdate;\n    }\n  }\n}\nexports.addForeignKeyConstraints = addForeignKeyConstraints;\n\n/**\n * Mixin (inject) association methods to model prototype\n *\n * @private\n *\n * @param {object} association instance\n * @param {object} obj Model prototype\n * @param {Array} methods Method names to inject\n * @param {object} aliases Mapping between model and association method names\n *\n */\nfunction mixinMethods(association, obj, methods, aliases) {\n  aliases = aliases || {};\n\n  for (const method of methods) {\n    // don't override custom methods\n    if (!Object.prototype.hasOwnProperty.call(obj, association.accessors[method])) {\n      const realMethod = aliases[method] || method;\n\n      obj[association.accessors[method]] = function() {\n        return association[realMethod](this, ...Array.from(arguments));\n      };\n    }\n  }\n}\nexports.mixinMethods = mixinMethods;\n"],
-  "mappings": ";AAEA,8BAA8B,aAAa;AACzC,MAAI,OAAO,UAAU,eAAe,KAAK,YAAY,OAAO,eAAe,YAAY,KAAK;AAC1F,UAAM,IAAI,MACR,uCAAuC,YAAY,wBAC9B,YAAY,gBAAgB,YAAY,OAAO;AAAA;AAAA;AAK1E,QAAQ,uBAAuB;AAE/B,kCAAkC,cAAc,QAAQ,QAAQ,SAAS,KAAK;AAI5E,MAAI,QAAQ,wBAAwB,QAAQ,YAAY,QAAQ,UAAU;AAExE,UAAM,cAAc,OAAO,KAAK,OAAO,aACpC,IAAI,yBAAuB,OAAO,cAAc,qBAAqB,SAAS;AAEjF,QAAI,YAAY,WAAW,KAAK,CAAC,YAAY,SAAS,MAAM;AAC1D,mBAAa,aAAa;AAAA,QACxB,OAAO,OAAO;AAAA,QACd,KAAK,OAAO,YAAY;AAAA;AAG1B,mBAAa,WAAW,QAAQ;AAChC,mBAAa,WAAW,QAAQ;AAAA;AAAA;AAAA;AAItC,QAAQ,2BAA2B;AAanC,sBAAsB,aAAa,KAAK,SAAS,SAAS;AACxD,YAAU,WAAW;AAErB,aAAW,UAAU,SAAS;AAE5B,QAAI,CAAC,OAAO,UAAU,eAAe,KAAK,KAAK,YAAY,UAAU,UAAU;AAC7E,YAAM,aAAa,QAAQ,WAAW;AAEtC,UAAI,YAAY,UAAU,WAAW,WAAW;AAC9C,eAAO,YAAY,YAAY,MAAM,GAAG,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAK3D,QAAQ,eAAe;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/index.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-"use strict";
-const Association = require("./base");
-Association.BelongsTo = require("./belongs-to");
-Association.HasOne = require("./has-one");
-Association.HasMany = require("./has-many");
-Association.BelongsToMany = require("./belongs-to-many");
-module.exports = Association;
-module.exports.default = Association;
-module.exports.Association = Association;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/associations/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst Association = require('./base');\n\nAssociation.BelongsTo = require('./belongs-to');\nAssociation.HasOne = require('./has-one');\nAssociation.HasMany = require('./has-many');\nAssociation.BelongsToMany = require('./belongs-to-many');\n\nmodule.exports = Association;\nmodule.exports.default = Association;\nmodule.exports.Association = Association;\n"],
-  "mappings": ";AAEA,MAAM,cAAc,QAAQ;AAE5B,YAAY,YAAY,QAAQ;AAChC,YAAY,SAAS,QAAQ;AAC7B,YAAY,UAAU,QAAQ;AAC9B,YAAY,gBAAgB,QAAQ;AAEpC,OAAO,UAAU;AACjB,OAAO,QAAQ,UAAU;AACzB,OAAO,QAAQ,cAAc;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/associations/mixin.js
===================================================================
--- backend/node_modules/sequelize/lib/associations/mixin.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const HasOne = require("./has-one");
-const HasMany = require("./has-many");
-const BelongsToMany = require("./belongs-to-many");
-const BelongsTo = require("./belongs-to");
-function isModel(model, sequelize) {
-  return model && model.prototype && model.prototype instanceof sequelize.Sequelize.Model;
-}
-const Mixin = {
-  hasMany(target, options = {}) {
-    if (!isModel(target, this.sequelize)) {
-      throw new Error(`${this.name}.hasMany called with something that's not a subclass of Sequelize.Model`);
-    }
-    const source = this;
-    options.hooks = options.hooks === void 0 ? false : Boolean(options.hooks);
-    options.useHooks = options.hooks;
-    Object.assign(options, _.omit(source.options, ["hooks"]));
-    if (options.useHooks) {
-      this.runHooks("beforeAssociate", { source, target, type: HasMany }, options);
-    }
-    const association = new HasMany(source, target, options);
-    source.associations[association.associationAccessor] = association;
-    association._injectAttributes();
-    association.mixin(source.prototype);
-    if (options.useHooks) {
-      this.runHooks("afterAssociate", { source, target, type: HasMany, association }, options);
-    }
-    return association;
-  },
-  belongsToMany(target, options = {}) {
-    if (!isModel(target, this.sequelize)) {
-      throw new Error(`${this.name}.belongsToMany called with something that's not a subclass of Sequelize.Model`);
-    }
-    const source = this;
-    options.hooks = options.hooks === void 0 ? false : Boolean(options.hooks);
-    options.useHooks = options.hooks;
-    options.timestamps = options.timestamps === void 0 ? this.sequelize.options.timestamps : options.timestamps;
-    Object.assign(options, _.omit(source.options, ["hooks", "timestamps", "scopes", "defaultScope"]));
-    if (options.useHooks) {
-      this.runHooks("beforeAssociate", { source, target, type: BelongsToMany }, options);
-    }
-    const association = new BelongsToMany(source, target, options);
-    source.associations[association.associationAccessor] = association;
-    association._injectAttributes();
-    association.mixin(source.prototype);
-    if (options.useHooks) {
-      this.runHooks("afterAssociate", { source, target, type: BelongsToMany, association }, options);
-    }
-    return association;
-  },
-  getAssociations(target) {
-    return Object.values(this.associations).filter((association) => association.target.name === target.name);
-  },
-  getAssociationForAlias(target, alias) {
-    return this.getAssociations(target).find((association) => association.verifyAssociationAlias(alias)) || null;
-  }
-};
-function singleLinked(Type) {
-  return function(target, options = {}) {
-    const source = this;
-    if (!isModel(target, source.sequelize)) {
-      throw new Error(`${source.name}.${_.lowerFirst(Type.name)} called with something that's not a subclass of Sequelize.Model`);
-    }
-    options.hooks = options.hooks === void 0 ? false : Boolean(options.hooks);
-    options.useHooks = options.hooks;
-    if (options.useHooks) {
-      source.runHooks("beforeAssociate", { source, target, type: Type }, options);
-    }
-    const association = new Type(source, target, Object.assign(options, source.options));
-    source.associations[association.associationAccessor] = association;
-    association._injectAttributes();
-    association.mixin(source.prototype);
-    if (options.useHooks) {
-      source.runHooks("afterAssociate", { source, target, type: Type, association }, options);
-    }
-    return association;
-  };
-}
-Mixin.hasOne = singleLinked(HasOne);
-Mixin.belongsTo = singleLinked(BelongsTo);
-module.exports = Mixin;
-module.exports.Mixin = Mixin;
-module.exports.default = Mixin;
-//# sourceMappingURL=mixin.js.map
Index: ckend/node_modules/sequelize/lib/associations/mixin.js.map
===================================================================
--- backend/node_modules/sequelize/lib/associations/mixin.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/associations/mixin.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst HasOne = require('./has-one');\nconst HasMany = require('./has-many');\nconst BelongsToMany = require('./belongs-to-many');\nconst BelongsTo = require('./belongs-to');\n\nfunction isModel(model, sequelize) {\n  return model\n    && model.prototype\n    && model.prototype instanceof sequelize.Sequelize.Model;\n}\n\nconst Mixin = {\n  hasMany(target, options = {}) {\n    if (!isModel(target, this.sequelize)) {\n      throw new Error(`${this.name}.hasMany called with something that's not a subclass of Sequelize.Model`);\n    }\n\n    const source = this;\n\n    // Since this is a mixin, we'll need a unique letiable name for hooks (since Model will override our hooks option)\n    options.hooks = options.hooks === undefined ? false : Boolean(options.hooks);\n    options.useHooks = options.hooks;\n\n    Object.assign(options, _.omit(source.options, ['hooks']));\n\n    if (options.useHooks) {\n      this.runHooks('beforeAssociate', { source, target, type: HasMany }, options);\n    }\n\n    // the id is in the foreign table or in a connecting table\n    const association = new HasMany(source, target, options);\n    source.associations[association.associationAccessor] = association;\n\n    association._injectAttributes();\n    association.mixin(source.prototype);\n\n    if (options.useHooks) {\n      this.runHooks('afterAssociate', { source, target, type: HasMany, association }, options);\n    }\n\n    return association;\n  },\n\n  belongsToMany(target, options = {}) {\n    if (!isModel(target, this.sequelize)) {\n      throw new Error(`${this.name}.belongsToMany called with something that's not a subclass of Sequelize.Model`);\n    }\n\n    const source = this;\n\n    // Since this is a mixin, we'll need a unique letiable name for hooks (since Model will override our hooks option)\n    options.hooks = options.hooks === undefined ? false : Boolean(options.hooks);\n    options.useHooks = options.hooks;\n    options.timestamps = options.timestamps === undefined ? this.sequelize.options.timestamps : options.timestamps;\n    Object.assign(options, _.omit(source.options, ['hooks', 'timestamps', 'scopes', 'defaultScope']));\n\n    if (options.useHooks) {\n      this.runHooks('beforeAssociate', { source, target, type: BelongsToMany }, options);\n    }\n    // the id is in the foreign table or in a connecting table\n    const association = new BelongsToMany(source, target, options);\n    source.associations[association.associationAccessor] = association;\n\n    association._injectAttributes();\n    association.mixin(source.prototype);\n\n    if (options.useHooks) {\n      this.runHooks('afterAssociate', { source, target, type: BelongsToMany, association }, options);\n    }\n\n    return association;\n  },\n\n  getAssociations(target) {\n    return Object.values(this.associations).filter(association => association.target.name === target.name);\n  },\n\n  getAssociationForAlias(target, alias) {\n    // Two associations cannot have the same alias, so we can use find instead of filter\n    return this.getAssociations(target).find(association => association.verifyAssociationAlias(alias)) || null;\n  }\n};\n\n// The logic for hasOne and belongsTo is exactly the same\nfunction singleLinked(Type) {\n  return function(target, options = {}) {\n    // eslint-disable-next-line no-invalid-this\n    const source = this;\n    if (!isModel(target, source.sequelize)) {\n      throw new Error(`${source.name}.${_.lowerFirst(Type.name)} called with something that's not a subclass of Sequelize.Model`);\n    }\n\n\n    // Since this is a mixin, we'll need a unique letiable name for hooks (since Model will override our hooks option)\n    options.hooks = options.hooks === undefined ? false : Boolean(options.hooks);\n    options.useHooks = options.hooks;\n\n    if (options.useHooks) {\n      source.runHooks('beforeAssociate', { source, target, type: Type }, options);\n    }\n    // the id is in the foreign table\n    const association = new Type(source, target, Object.assign(options, source.options));\n    source.associations[association.associationAccessor] = association;\n\n    association._injectAttributes();\n    association.mixin(source.prototype);\n\n    if (options.useHooks) {\n      source.runHooks('afterAssociate', { source, target, type: Type, association }, options);\n    }\n\n    return association;\n  };\n}\n\nMixin.hasOne = singleLinked(HasOne);\nMixin.belongsTo = singleLinked(BelongsTo);\n\nmodule.exports = Mixin;\nmodule.exports.Mixin = Mixin;\nmodule.exports.default = Mixin;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,669 +1,0 @@
-"use strict";
-const util = require("util");
-const _ = require("lodash");
-const wkx = require("wkx");
-const sequelizeErrors = require("./errors");
-const Validator = require("./utils/validator-extras").validator;
-const momentTz = require("moment-timezone");
-const moment = require("moment");
-const { logger } = require("./utils/logger");
-const warnings = {};
-const { classToInvokable } = require("./utils/class-to-invokable");
-const { joinSQLFragments } = require("./utils/join-sql-fragments");
-class ABSTRACT {
-  toString(options) {
-    return this.toSql(options);
-  }
-  toSql() {
-    return this.key;
-  }
-  stringify(value, options) {
-    if (this._stringify) {
-      return this._stringify(value, options);
-    }
-    return value;
-  }
-  bindParam(value, options) {
-    if (this._bindParam) {
-      return this._bindParam(value, options);
-    }
-    return options.bindParam(this.stringify(value, options));
-  }
-  static toString() {
-    return this.name;
-  }
-  static warn(link, text) {
-    if (!warnings[text]) {
-      warnings[text] = true;
-      logger.warn(`${text} 
->> Check: ${link}`);
-    }
-  }
-  static extend(oldType) {
-    return new this(oldType.options);
-  }
-}
-ABSTRACT.prototype.dialectTypes = "";
-class STRING extends ABSTRACT {
-  constructor(length, binary) {
-    super();
-    const options = typeof length === "object" && length || { length, binary };
-    this.options = options;
-    this._binary = options.binary;
-    this._length = options.length || 255;
-  }
-  toSql() {
-    return joinSQLFragments([
-      `VARCHAR(${this._length})`,
-      this._binary && "BINARY"
-    ]);
-  }
-  validate(value) {
-    if (Object.prototype.toString.call(value) !== "[object String]") {
-      if (this.options.binary && Buffer.isBuffer(value) || typeof value === "number") {
-        return true;
-      }
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid string", value));
-    }
-    return true;
-  }
-  get BINARY() {
-    this._binary = true;
-    this.options.binary = true;
-    return this;
-  }
-  static get BINARY() {
-    return new this().BINARY;
-  }
-}
-class CHAR extends STRING {
-  constructor(length, binary) {
-    super(typeof length === "object" && length || { length, binary });
-  }
-  toSql() {
-    return joinSQLFragments([
-      `CHAR(${this._length})`,
-      this._binary && "BINARY"
-    ]);
-  }
-}
-class TEXT extends ABSTRACT {
-  constructor(length) {
-    super();
-    const options = typeof length === "object" && length || { length };
-    this.options = options;
-    this._length = options.length || "";
-  }
-  toSql() {
-    switch (this._length.toLowerCase()) {
-      case "tiny":
-        return "TINYTEXT";
-      case "medium":
-        return "MEDIUMTEXT";
-      case "long":
-        return "LONGTEXT";
-      default:
-        return this.key;
-    }
-  }
-  validate(value) {
-    if (typeof value !== "string") {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid string", value));
-    }
-    return true;
-  }
-}
-class CITEXT extends ABSTRACT {
-  toSql() {
-    return "CITEXT";
-  }
-  validate(value) {
-    if (typeof value !== "string") {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid string", value));
-    }
-    return true;
-  }
-}
-class NUMBER extends ABSTRACT {
-  constructor(options = {}) {
-    super();
-    if (typeof options === "number") {
-      options = {
-        length: options
-      };
-    }
-    this.options = options;
-    this._length = options.length;
-    this._zerofill = options.zerofill;
-    this._decimals = options.decimals;
-    this._precision = options.precision;
-    this._scale = options.scale;
-    this._unsigned = options.unsigned;
-  }
-  toSql() {
-    let result = this.key;
-    if (this._length) {
-      result += `(${this._length}`;
-      if (typeof this._decimals === "number") {
-        result += `,${this._decimals}`;
-      }
-      result += ")";
-    }
-    if (this._unsigned) {
-      result += " UNSIGNED";
-    }
-    if (this._zerofill) {
-      result += " ZEROFILL";
-    }
-    return result;
-  }
-  validate(value) {
-    if (!Validator.isFloat(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format(`%j is not a valid ${this.key.toLowerCase()}`, value));
-    }
-    return true;
-  }
-  _stringify(number) {
-    if (typeof number === "number" || typeof number === "bigint" || typeof number === "boolean" || number === null || number === void 0) {
-      return number;
-    }
-    if (typeof number.toString === "function") {
-      return number.toString();
-    }
-    return number;
-  }
-  get UNSIGNED() {
-    this._unsigned = true;
-    this.options.unsigned = true;
-    return this;
-  }
-  get ZEROFILL() {
-    this._zerofill = true;
-    this.options.zerofill = true;
-    return this;
-  }
-  static get UNSIGNED() {
-    return new this().UNSIGNED;
-  }
-  static get ZEROFILL() {
-    return new this().ZEROFILL;
-  }
-}
-class INTEGER extends NUMBER {
-  validate(value) {
-    if (!Validator.isInt(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format(`%j is not a valid ${this.key.toLowerCase()}`, value));
-    }
-    return true;
-  }
-}
-class TINYINT extends INTEGER {
-}
-class SMALLINT extends INTEGER {
-}
-class MEDIUMINT extends INTEGER {
-}
-class BIGINT extends INTEGER {
-}
-class FLOAT extends NUMBER {
-  constructor(length, decimals) {
-    super(typeof length === "object" && length || { length, decimals });
-  }
-  validate(value) {
-    if (!Validator.isFloat(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid float", value));
-    }
-    return true;
-  }
-}
-class REAL extends NUMBER {
-  constructor(length, decimals) {
-    super(typeof length === "object" && length || { length, decimals });
-  }
-}
-class DOUBLE extends NUMBER {
-  constructor(length, decimals) {
-    super(typeof length === "object" && length || { length, decimals });
-  }
-}
-class DECIMAL extends NUMBER {
-  constructor(precision, scale) {
-    super(typeof precision === "object" && precision || { precision, scale });
-  }
-  toSql() {
-    if (this._precision || this._scale) {
-      return `DECIMAL(${[this._precision, this._scale].filter(_.identity).join(",")})`;
-    }
-    return "DECIMAL";
-  }
-  validate(value) {
-    if (!Validator.isDecimal(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid decimal", value));
-    }
-    return true;
-  }
-}
-const protoExtensions = {
-  escape: false,
-  _value(value) {
-    if (isNaN(value)) {
-      return "NaN";
-    }
-    if (!isFinite(value)) {
-      const sign = value < 0 ? "-" : "";
-      return `${sign}Infinity`;
-    }
-    return value;
-  },
-  _stringify(value) {
-    return `'${this._value(value)}'`;
-  },
-  _bindParam(value, options) {
-    return options.bindParam(this._value(value));
-  }
-};
-for (const floating of [FLOAT, DOUBLE, REAL]) {
-  Object.assign(floating.prototype, protoExtensions);
-}
-class BOOLEAN extends ABSTRACT {
-  toSql() {
-    return "TINYINT(1)";
-  }
-  validate(value) {
-    if (!Validator.isBoolean(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid boolean", value));
-    }
-    return true;
-  }
-  _sanitize(value) {
-    if (value !== null && value !== void 0) {
-      if (Buffer.isBuffer(value) && value.length === 1) {
-        value = value[0];
-      }
-      const type = typeof value;
-      if (type === "string") {
-        return value === "true" ? true : value === "false" ? false : value;
-      }
-      if (type === "number") {
-        return value === 1 ? true : value === 0 ? false : value;
-      }
-    }
-    return value;
-  }
-}
-BOOLEAN.parse = BOOLEAN.prototype._sanitize;
-class TIME extends ABSTRACT {
-  toSql() {
-    return "TIME";
-  }
-}
-class DATE extends ABSTRACT {
-  constructor(length) {
-    super();
-    const options = typeof length === "object" && length || { length };
-    this.options = options;
-    this._length = options.length || "";
-  }
-  toSql() {
-    return "DATETIME";
-  }
-  validate(value) {
-    if (!Validator.isDate(String(value))) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid date", value));
-    }
-    return true;
-  }
-  _sanitize(value, options) {
-    if ((!options || options && !options.raw) && !(value instanceof Date) && !!value) {
-      return new Date(value);
-    }
-    return value;
-  }
-  _isChanged(value, originalValue) {
-    if (originalValue && !!value && (value === originalValue || value instanceof Date && originalValue instanceof Date && value.getTime() === originalValue.getTime())) {
-      return false;
-    }
-    if (!originalValue && !value && originalValue === value) {
-      return false;
-    }
-    return true;
-  }
-  _applyTimezone(date, options) {
-    if (options.timezone) {
-      if (momentTz.tz.zone(options.timezone)) {
-        return momentTz(date).tz(options.timezone);
-      }
-      return date = moment(date).utcOffset(options.timezone);
-    }
-    return momentTz(date);
-  }
-  _stringify(date, options) {
-    if (!moment.isMoment(date)) {
-      date = this._applyTimezone(date, options);
-    }
-    return date.format("YYYY-MM-DD HH:mm:ss.SSS Z");
-  }
-}
-class DATEONLY extends ABSTRACT {
-  toSql() {
-    return "DATE";
-  }
-  _stringify(date) {
-    return moment(date).format("YYYY-MM-DD");
-  }
-  _sanitize(value, options) {
-    if ((!options || options && !options.raw) && !!value) {
-      return moment(value).format("YYYY-MM-DD");
-    }
-    return value;
-  }
-  _isChanged(value, originalValue) {
-    if (originalValue && !!value && originalValue === value) {
-      return false;
-    }
-    if (!originalValue && !value && originalValue === value) {
-      return false;
-    }
-    return true;
-  }
-}
-class HSTORE extends ABSTRACT {
-  validate(value) {
-    if (!_.isPlainObject(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid hstore", value));
-    }
-    return true;
-  }
-}
-class JSONTYPE extends ABSTRACT {
-  validate() {
-    return true;
-  }
-  _stringify(value) {
-    return JSON.stringify(value);
-  }
-}
-class JSONB extends JSONTYPE {
-}
-class NOW extends ABSTRACT {
-}
-class BLOB extends ABSTRACT {
-  constructor(length) {
-    super();
-    const options = typeof length === "object" && length || { length };
-    this.options = options;
-    this._length = options.length || "";
-  }
-  toSql() {
-    switch (this._length.toLowerCase()) {
-      case "tiny":
-        return "TINYBLOB";
-      case "medium":
-        return "MEDIUMBLOB";
-      case "long":
-        return "LONGBLOB";
-      default:
-        return this.key;
-    }
-  }
-  validate(value) {
-    if (typeof value !== "string" && !Buffer.isBuffer(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid blob", value));
-    }
-    return true;
-  }
-  _stringify(value) {
-    if (!Buffer.isBuffer(value)) {
-      if (Array.isArray(value)) {
-        value = Buffer.from(value);
-      } else {
-        value = Buffer.from(value.toString());
-      }
-    }
-    const hex = value.toString("hex");
-    return this._hexify(hex);
-  }
-  _hexify(hex) {
-    return `X'${hex}'`;
-  }
-  _bindParam(value, options) {
-    if (!Buffer.isBuffer(value)) {
-      if (Array.isArray(value)) {
-        value = Buffer.from(value);
-      } else {
-        value = Buffer.from(value.toString());
-      }
-    }
-    return options.bindParam(value);
-  }
-}
-BLOB.prototype.escape = false;
-class RANGE extends ABSTRACT {
-  constructor(subtype) {
-    super();
-    const options = _.isPlainObject(subtype) ? subtype : { subtype };
-    if (!options.subtype)
-      options.subtype = new INTEGER();
-    if (typeof options.subtype === "function") {
-      options.subtype = new options.subtype();
-    }
-    this._subtype = options.subtype.key;
-    this.options = options;
-  }
-  validate(value) {
-    if (!Array.isArray(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid range", value));
-    }
-    if (value.length !== 2) {
-      throw new sequelizeErrors.ValidationError("A range must be an array with two elements");
-    }
-    return true;
-  }
-}
-class UUID extends ABSTRACT {
-  validate(value, options) {
-    if (typeof value !== "string" || !Validator.isUUID(value) && (!options || !options.acceptStrings)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid uuid", value));
-    }
-    return true;
-  }
-}
-class UUIDV1 extends ABSTRACT {
-  validate(value, options) {
-    if (typeof value !== "string" || !Validator.isUUID(value) && (!options || !options.acceptStrings)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid uuid", value));
-    }
-    return true;
-  }
-}
-class UUIDV4 extends ABSTRACT {
-  validate(value, options) {
-    if (typeof value !== "string" || !Validator.isUUID(value, 4) && (!options || !options.acceptStrings)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid uuidv4", value));
-    }
-    return true;
-  }
-}
-class VIRTUAL extends ABSTRACT {
-  constructor(ReturnType, fields) {
-    super();
-    if (typeof ReturnType === "function")
-      ReturnType = new ReturnType();
-    this.returnType = ReturnType;
-    this.fields = fields;
-  }
-}
-class ENUM extends ABSTRACT {
-  constructor(...args) {
-    super();
-    const value = args[0];
-    const options = typeof value === "object" && !Array.isArray(value) && value || {
-      values: args.reduce((result, element) => {
-        return result.concat(Array.isArray(element) ? element : [element]);
-      }, [])
-    };
-    this.values = options.values;
-    this.options = options;
-  }
-  validate(value) {
-    if (!this.values.includes(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid choice in %j", value, this.values));
-    }
-    return true;
-  }
-}
-class ARRAY extends ABSTRACT {
-  constructor(type) {
-    super();
-    const options = _.isPlainObject(type) ? type : { type };
-    this.options = options;
-    this.type = typeof options.type === "function" ? new options.type() : options.type;
-  }
-  toSql() {
-    return `${this.type.toSql()}[]`;
-  }
-  validate(value) {
-    if (!Array.isArray(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid array", value));
-    }
-    return true;
-  }
-  static is(obj, type) {
-    return obj instanceof ARRAY && obj.type instanceof type;
-  }
-}
-class GEOMETRY extends ABSTRACT {
-  constructor(type, srid) {
-    super();
-    const options = _.isPlainObject(type) ? type : { type, srid };
-    this.options = options;
-    this.type = options.type;
-    this.srid = options.srid;
-  }
-  _stringify(value, options) {
-    return `ST_GeomFromText(${options.escape(wkx.Geometry.parseGeoJSON(value).toWkt())})`;
-  }
-  _bindParam(value, options) {
-    return `ST_GeomFromText(${options.bindParam(wkx.Geometry.parseGeoJSON(value).toWkt())})`;
-  }
-}
-GEOMETRY.prototype.escape = false;
-class GEOGRAPHY extends ABSTRACT {
-  constructor(type, srid) {
-    super();
-    const options = _.isPlainObject(type) ? type : { type, srid };
-    this.options = options;
-    this.type = options.type;
-    this.srid = options.srid;
-  }
-  _stringify(value, options) {
-    return `ST_GeomFromText(${options.escape(wkx.Geometry.parseGeoJSON(value).toWkt())})`;
-  }
-  _bindParam(value, options) {
-    return `ST_GeomFromText(${options.bindParam(wkx.Geometry.parseGeoJSON(value).toWkt())})`;
-  }
-}
-GEOGRAPHY.prototype.escape = false;
-class CIDR extends ABSTRACT {
-  validate(value) {
-    if (typeof value !== "string" || !Validator.isIPRange(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid CIDR", value));
-    }
-    return true;
-  }
-}
-class INET extends ABSTRACT {
-  validate(value) {
-    if (typeof value !== "string" || !Validator.isIP(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid INET", value));
-    }
-    return true;
-  }
-}
-class MACADDR extends ABSTRACT {
-  validate(value) {
-    if (typeof value !== "string" || !Validator.isMACAddress(value)) {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid MACADDR", value));
-    }
-    return true;
-  }
-}
-class TSVECTOR extends ABSTRACT {
-  validate(value) {
-    if (typeof value !== "string") {
-      throw new sequelizeErrors.ValidationError(util.format("%j is not a valid string", value));
-    }
-    return true;
-  }
-}
-const DataTypes = module.exports = {
-  ABSTRACT,
-  STRING,
-  CHAR,
-  TEXT,
-  NUMBER,
-  TINYINT,
-  SMALLINT,
-  MEDIUMINT,
-  INTEGER,
-  BIGINT,
-  FLOAT,
-  TIME,
-  DATE,
-  DATEONLY,
-  BOOLEAN,
-  NOW,
-  BLOB,
-  DECIMAL,
-  NUMERIC: DECIMAL,
-  UUID,
-  UUIDV1,
-  UUIDV4,
-  HSTORE,
-  JSON: JSONTYPE,
-  JSONB,
-  VIRTUAL,
-  ARRAY,
-  ENUM,
-  RANGE,
-  REAL,
-  "DOUBLE PRECISION": DOUBLE,
-  DOUBLE,
-  GEOMETRY,
-  GEOGRAPHY,
-  CIDR,
-  INET,
-  MACADDR,
-  CITEXT,
-  TSVECTOR
-};
-_.each(DataTypes, (dataType, name) => {
-  if (!Object.prototype.hasOwnProperty.call(dataType, "key")) {
-    dataType.types = {};
-    dataType.key = dataType.prototype.key = name;
-  }
-});
-const dialectMap = {};
-dialectMap.postgres = require("./dialects/postgres/data-types")(DataTypes);
-dialectMap.mysql = require("./dialects/mysql/data-types")(DataTypes);
-dialectMap.mariadb = require("./dialects/mariadb/data-types")(DataTypes);
-dialectMap.sqlite = require("./dialects/sqlite/data-types")(DataTypes);
-dialectMap.mssql = require("./dialects/mssql/data-types")(DataTypes);
-dialectMap.db2 = require("./dialects/db2/data-types")(DataTypes);
-dialectMap.snowflake = require("./dialects/snowflake/data-types")(DataTypes);
-dialectMap.oracle = require("./dialects/oracle/data-types")(DataTypes);
-const dialectList = Object.values(dialectMap);
-for (const dataTypes of dialectList) {
-  _.each(dataTypes, (DataType, key) => {
-    if (!DataType.key) {
-      DataType.key = DataType.prototype.key = key;
-    }
-  });
-}
-for (const dataTypes of [DataTypes, ...dialectList]) {
-  _.each(dataTypes, (DataType, key) => {
-    dataTypes[key] = classToInvokable(DataType);
-  });
-}
-Object.assign(DataTypes, dialectMap);
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst util = require('util');\nconst _ = require('lodash');\nconst wkx = require('wkx');\nconst sequelizeErrors = require('./errors');\nconst Validator = require('./utils/validator-extras').validator;\nconst momentTz = require('moment-timezone');\nconst moment = require('moment');\nconst { logger } = require('./utils/logger');\nconst warnings = {};\nconst { classToInvokable } = require('./utils/class-to-invokable');\nconst { joinSQLFragments } = require('./utils/join-sql-fragments');\n\nclass ABSTRACT {\n  toString(options) {\n    return this.toSql(options);\n  }\n  toSql() {\n    return this.key;\n  }\n  stringify(value, options) {\n    if (this._stringify) {\n      return this._stringify(value, options);\n    }\n    return value;\n  }\n  bindParam(value, options) {\n    if (this._bindParam) {\n      return this._bindParam(value, options);\n    }\n    return options.bindParam(this.stringify(value, options));\n  }\n  static toString() {\n    return this.name;\n  }\n  static warn(link, text) {\n    if (!warnings[text]) {\n      warnings[text] = true;\n      logger.warn(`${text} \\n>> Check: ${link}`);\n    }\n  }\n  static extend(oldType) {\n    return new this(oldType.options);\n  }\n}\n\nABSTRACT.prototype.dialectTypes = '';\n\n/**\n * STRING A variable length string\n */\nclass STRING extends ABSTRACT {\n  /**\n   * @param {number} [length=255] length of string\n   * @param {boolean} [binary=false] Is this binary?\n   */\n  constructor(length, binary) {\n    super();\n    const options = typeof length === 'object' && length || { length, binary };\n    this.options = options;\n    this._binary = options.binary;\n    this._length = options.length || 255;\n  }\n  toSql() {\n    return joinSQLFragments([\n      `VARCHAR(${this._length})`,\n      this._binary && 'BINARY'\n    ]);\n  }\n  validate(value) {\n    if (Object.prototype.toString.call(value) !== '[object String]') {\n      if (this.options.binary && Buffer.isBuffer(value) || typeof value === 'number') {\n        return true;\n      }\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid string', value));\n    }\n    return true;\n  }\n\n  get BINARY() {\n    this._binary = true;\n    this.options.binary = true;\n    return this;\n  }\n\n  static get BINARY() {\n    return new this().BINARY;\n  }\n}\n\n/**\n * CHAR A fixed length string\n */\nclass CHAR extends STRING {\n  /**\n   * @param {number} [length=255] length of string\n   * @param {boolean} [binary=false] Is this binary?\n   */\n  constructor(length, binary) {\n    super(typeof length === 'object' && length || { length, binary });\n  }\n  toSql() {\n    return joinSQLFragments([\n      `CHAR(${this._length})`,\n      this._binary && 'BINARY'\n    ]);\n  }\n}\n\n/**\n * Unlimited length TEXT column\n */\nclass TEXT extends ABSTRACT {\n  /**\n   * @param {string} [length=''] could be tiny, medium, long.\n   */\n  constructor(length) {\n    super();\n    const options = typeof length === 'object' && length || { length };\n    this.options = options;\n    this._length = options.length || '';\n  }\n  toSql() {\n    switch (this._length.toLowerCase()) {\n      case 'tiny':\n        return 'TINYTEXT';\n      case 'medium':\n        return 'MEDIUMTEXT';\n      case 'long':\n        return 'LONGTEXT';\n      default:\n        return this.key;\n    }\n  }\n  validate(value) {\n    if (typeof value !== 'string') {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid string', value));\n    }\n    return true;\n  }\n}\n\n/**\n * An unlimited length case-insensitive text column.\n * Original case is preserved but acts case-insensitive when comparing values (such as when finding or unique constraints).\n * Only available in Postgres and SQLite.\n *\n */\nclass CITEXT extends ABSTRACT {\n  toSql() {\n    return 'CITEXT';\n  }\n  validate(value) {\n    if (typeof value !== 'string') {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid string', value));\n    }\n    return true;\n  }\n}\n\n/**\n * Base number type which is used to build other types\n */\nclass NUMBER extends ABSTRACT {\n  /**\n   * @param {object} options type options\n   * @param {string|number} [options.length] length of type, like `INT(4)`\n   * @param {boolean} [options.zerofill] Is zero filled?\n   * @param {boolean} [options.unsigned] Is unsigned?\n   * @param {string|number} [options.decimals] number of decimal points, used with length `FLOAT(5, 4)`\n   * @param {string|number} [options.precision] defines precision for decimal type\n   * @param {string|number} [options.scale] defines scale for decimal type\n   */\n  constructor(options = {}) {\n    super();\n    if (typeof options === 'number') {\n      options = {\n        length: options\n      };\n    }\n    this.options = options;\n    this._length = options.length;\n    this._zerofill = options.zerofill;\n    this._decimals = options.decimals;\n    this._precision = options.precision;\n    this._scale = options.scale;\n    this._unsigned = options.unsigned;\n  }\n  toSql() {\n    let result = this.key;\n    if (this._length) {\n      result += `(${this._length}`;\n      if (typeof this._decimals === 'number') {\n        result += `,${this._decimals}`;\n      }\n      result += ')';\n    }\n    if (this._unsigned) {\n      result += ' UNSIGNED';\n    }\n    if (this._zerofill) {\n      result += ' ZEROFILL';\n    }\n    return result;\n  }\n  validate(value) {\n    if (!Validator.isFloat(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format(`%j is not a valid ${this.key.toLowerCase()}`, value));\n    }\n    return true;\n  }\n  _stringify(number) {\n    if (typeof number === 'number' || typeof number === 'bigint' || typeof number === 'boolean' || number === null || number === undefined) {\n      return number;\n    }\n    if (typeof number.toString === 'function') {\n      return number.toString();\n    }\n    return number;\n  }\n\n  get UNSIGNED() {\n    this._unsigned = true;\n    this.options.unsigned = true;\n    return this;\n  }\n\n  get ZEROFILL() {\n    this._zerofill = true;\n    this.options.zerofill = true;\n    return this;\n  }\n\n  static get UNSIGNED() {\n    return new this().UNSIGNED;\n  }\n\n  static get ZEROFILL() {\n    return new this().ZEROFILL;\n  }\n}\n\n/**\n * A 32 bit integer\n */\nclass INTEGER extends NUMBER {\n  validate(value) {\n    if (!Validator.isInt(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format(`%j is not a valid ${this.key.toLowerCase()}`, value));\n    }\n    return true;\n  }\n}\n\n/**\n * A 8 bit integer\n */\nclass TINYINT extends INTEGER {\n}\n\n/**\n * A 16 bit integer\n */\nclass SMALLINT extends INTEGER {\n}\n\n/**\n * A 24 bit integer\n */\nclass MEDIUMINT extends INTEGER {\n}\n\n/**\n * A 64 bit integer\n */\nclass BIGINT extends INTEGER {\n}\n\n/**\n * Floating point number (4-byte precision).\n */\nclass FLOAT extends NUMBER {\n  /**\n   * @param {string|number} [length] length of type, like `FLOAT(4)`\n   * @param {string|number} [decimals] number of decimal points, used with length `FLOAT(5, 4)`\n   */\n  constructor(length, decimals) {\n    super(typeof length === 'object' && length || { length, decimals });\n  }\n  validate(value) {\n    if (!Validator.isFloat(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid float', value));\n    }\n    return true;\n  }\n}\n\n/**\n * Floating point number (4-byte precision).\n */\nclass REAL extends NUMBER {\n  /**\n   * @param {string|number} [length] length of type, like `REAL(4)`\n   * @param {string|number} [decimals] number of decimal points, used with length `REAL(5, 4)`\n   */\n  constructor(length, decimals) {\n    super(typeof length === 'object' && length || { length, decimals });\n  }\n}\n\n/**\n * Floating point number (8-byte precision).\n */\nclass DOUBLE extends NUMBER {\n  /**\n   * @param {string|number} [length] length of type, like `DOUBLE PRECISION(25)`\n   * @param {string|number} [decimals] number of decimal points, used with length `DOUBLE PRECISION(25, 10)`\n   */\n  constructor(length, decimals) {\n    super(typeof length === 'object' && length || { length, decimals });\n  }\n}\n\n/**\n * Decimal type, variable precision, take length as specified by user\n */\nclass DECIMAL extends NUMBER {\n  /**\n   * @param {string|number} [precision] defines precision\n   * @param {string|number} [scale] defines scale\n   */\n  constructor(precision, scale) {\n    super(typeof precision === 'object' && precision || { precision, scale });\n  }\n  toSql() {\n    if (this._precision || this._scale) {\n      return `DECIMAL(${[this._precision, this._scale].filter(_.identity).join(',')})`;\n    }\n    return 'DECIMAL';\n  }\n  validate(value) {\n    if (!Validator.isDecimal(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid decimal', value));\n    }\n    return true;\n  }\n}\n\n// TODO: Create intermediate class\nconst protoExtensions = {\n  escape: false,\n  _value(value) {\n    if (isNaN(value)) {\n      return 'NaN';\n    }\n    if (!isFinite(value)) {\n      const sign = value < 0 ? '-' : '';\n      return `${sign}Infinity`;\n    }\n\n    return value;\n  },\n  _stringify(value) {\n    return `'${this._value(value)}'`;\n  },\n  _bindParam(value, options) {\n    return options.bindParam(this._value(value));\n  }\n};\n\nfor (const floating of [FLOAT, DOUBLE, REAL]) {\n  Object.assign(floating.prototype, protoExtensions);\n}\n\n/**\n * A boolean / tinyint column, depending on dialect\n */\nclass BOOLEAN extends ABSTRACT {\n  toSql() {\n    return 'TINYINT(1)';\n  }\n  validate(value) {\n    if (!Validator.isBoolean(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid boolean', value));\n    }\n    return true;\n  }\n  _sanitize(value) {\n    if (value !== null && value !== undefined) {\n      if (Buffer.isBuffer(value) && value.length === 1) {\n        // Bit fields are returned as buffers\n        value = value[0];\n      }\n      const type = typeof value;\n      if (type === 'string') {\n        // Only take action on valid boolean strings.\n        return value === 'true' ? true : value === 'false' ? false : value;\n      }\n      if (type === 'number') {\n        // Only take action on valid boolean integers.\n        return value === 1 ? true : value === 0 ? false : value;\n      }\n    }\n    return value;\n  }\n}\n\n\nBOOLEAN.parse = BOOLEAN.prototype._sanitize;\n\n/**\n * A time column\n *\n */\nclass TIME extends ABSTRACT {\n  toSql() {\n    return 'TIME';\n  }\n}\n\n/**\n * Date column with timezone, default is UTC\n */\nclass DATE extends ABSTRACT {\n  /**\n   * @param {string|number} [length] precision to allow storing milliseconds\n   */\n  constructor(length) {\n    super();\n    const options = typeof length === 'object' && length || { length };\n    this.options = options;\n    this._length = options.length || '';\n  }\n  toSql() {\n    return 'DATETIME';\n  }\n  validate(value) {\n    if (!Validator.isDate(String(value))) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid date', value));\n    }\n    return true;\n  }\n  _sanitize(value, options) {\n    if ((!options || options && !options.raw) && !(value instanceof Date) && !!value) {\n      return new Date(value);\n    }\n    return value;\n  }\n  _isChanged(value, originalValue) {\n    if (originalValue && !!value &&\n      (value === originalValue ||\n        value instanceof Date && originalValue instanceof Date && value.getTime() === originalValue.getTime())) {\n      return false;\n    }\n    // not changed when set to same empty value\n    if (!originalValue && !value && originalValue === value) {\n      return false;\n    }\n    return true;\n  }\n  _applyTimezone(date, options) {\n    if (options.timezone) {\n      if (momentTz.tz.zone(options.timezone)) {\n        return momentTz(date).tz(options.timezone);\n      }\n      return date = moment(date).utcOffset(options.timezone);\n    }\n    return momentTz(date);\n  }\n  _stringify(date, options) {\n    if (!moment.isMoment(date)) {\n      date = this._applyTimezone(date, options);\n    }\n    // Z here means current timezone, _not_ UTC\n    return date.format('YYYY-MM-DD HH:mm:ss.SSS Z');\n  }\n}\n\n/**\n * A date only column (no timestamp)\n */\nclass DATEONLY extends ABSTRACT {\n  toSql() {\n    return 'DATE';\n  }\n  _stringify(date) {\n    return moment(date).format('YYYY-MM-DD');\n  }\n  _sanitize(value, options) {\n    if ((!options || options && !options.raw) && !!value) {\n      return moment(value).format('YYYY-MM-DD');\n    }\n    return value;\n  }\n  _isChanged(value, originalValue) {\n    if (originalValue && !!value && originalValue === value) {\n      return false;\n    }\n    // not changed when set to same empty value\n    if (!originalValue && !value && originalValue === value) {\n      return false;\n    }\n    return true;\n  }\n}\n\n/**\n * A key / value store column. Only available in Postgres.\n */\nclass HSTORE extends ABSTRACT {\n  validate(value) {\n    if (!_.isPlainObject(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid hstore', value));\n    }\n    return true;\n  }\n}\n\n/**\n * A JSON string column. Available in MySQL, Postgres and SQLite\n */\nclass JSONTYPE extends ABSTRACT {\n  validate() {\n    return true;\n  }\n  _stringify(value) {\n    return JSON.stringify(value);\n  }\n}\n\n/**\n * A binary storage JSON column. Only available in Postgres.\n */\nclass JSONB extends JSONTYPE {\n}\n\n/**\n * A default value of the current timestamp\n */\nclass NOW extends ABSTRACT {\n}\n\n/**\n * Binary storage\n */\nclass BLOB extends ABSTRACT {\n  /**\n   * @param {string} [length=''] could be tiny, medium, long.\n   */\n  constructor(length) {\n    super();\n    const options = typeof length === 'object' && length || { length };\n    this.options = options;\n    this._length = options.length || '';\n  }\n  toSql() {\n    switch (this._length.toLowerCase()) {\n      case 'tiny':\n        return 'TINYBLOB';\n      case 'medium':\n        return 'MEDIUMBLOB';\n      case 'long':\n        return 'LONGBLOB';\n      default:\n        return this.key;\n    }\n  }\n  validate(value) {\n    if (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid blob', value));\n    }\n    return true;\n  }\n  _stringify(value) {\n    if (!Buffer.isBuffer(value)) {\n      if (Array.isArray(value)) {\n        value = Buffer.from(value);\n      }\n      else {\n        value = Buffer.from(value.toString());\n      }\n    }\n    const hex = value.toString('hex');\n    return this._hexify(hex);\n  }\n  _hexify(hex) {\n    return `X'${hex}'`;\n  }\n  _bindParam(value, options) {\n    if (!Buffer.isBuffer(value)) {\n      if (Array.isArray(value)) {\n        value = Buffer.from(value);\n      }\n      else {\n        value = Buffer.from(value.toString());\n      }\n    }\n    return options.bindParam(value);\n  }\n}\n\n\nBLOB.prototype.escape = false;\n\n/**\n * Range types are data types representing a range of values of some element type (called the range's subtype).\n * Only available in Postgres. See [the Postgres documentation](http://www.postgresql.org/docs/9.4/static/rangetypes.html) for more details\n */\nclass RANGE extends ABSTRACT {\n  /**\n   * @param {ABSTRACT} subtype A subtype for range, like RANGE(DATE)\n   */\n  constructor(subtype) {\n    super();\n    const options = _.isPlainObject(subtype) ? subtype : { subtype };\n    if (!options.subtype)\n      options.subtype = new INTEGER();\n    if (typeof options.subtype === 'function') {\n      options.subtype = new options.subtype();\n    }\n    this._subtype = options.subtype.key;\n    this.options = options;\n  }\n  validate(value) {\n    if (!Array.isArray(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid range', value));\n    }\n    if (value.length !== 2) {\n      throw new sequelizeErrors.ValidationError('A range must be an array with two elements');\n    }\n    return true;\n  }\n}\n\n/**\n * A column storing a unique universal identifier.\n * Use with `UUIDV1` or `UUIDV4` for default values.\n */\nclass UUID extends ABSTRACT {\n  validate(value, options) {\n    if (typeof value !== 'string' || !Validator.isUUID(value) && (!options || !options.acceptStrings)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid uuid', value));\n    }\n    return true;\n  }\n}\n\n/**\n * A default unique universal identifier generated following the UUID v1 standard\n */\nclass UUIDV1 extends ABSTRACT {\n  validate(value, options) {\n    if (typeof value !== 'string' || !Validator.isUUID(value) && (!options || !options.acceptStrings)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid uuid', value));\n    }\n    return true;\n  }\n}\n\n/**\n * A default unique universal identifier generated following the UUID v4 standard\n */\nclass UUIDV4 extends ABSTRACT {\n  validate(value, options) {\n    if (typeof value !== 'string' || !Validator.isUUID(value, 4) && (!options || !options.acceptStrings)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid uuidv4', value));\n    }\n    return true;\n  }\n}\n\n/**\n * A virtual value that is not stored in the DB. This could for example be useful if you want to provide a default value in your model that is returned to the user but not stored in the DB.\n *\n * You could also use it to validate a value before permuting and storing it. VIRTUAL also takes a return type and dependency fields as arguments\n * If a virtual attribute is present in `attributes` it will automatically pull in the extra fields as well.\n * Return type is mostly useful for setups that rely on types like GraphQL.\n *\n * @example <caption>Checking password length before hashing it</caption>\n * sequelize.define('user', {\n *   password_hash: DataTypes.STRING,\n *   password: {\n *     type: DataTypes.VIRTUAL,\n *     set: function (val) {\n *        // Remember to set the data value, otherwise it won't be validated\n *        this.setDataValue('password', val);\n *        this.setDataValue('password_hash', this.salt + val);\n *      },\n *      validate: {\n *         isLongEnough: function (val) {\n *           if (val.length < 7) {\n *             throw new Error(\"Please choose a longer password\")\n *          }\n *       }\n *     }\n *   }\n * })\n *\n * # In the above code the password is stored plainly in the password field so it can be validated, but is never stored in the DB.\n *\n * @example <caption>Virtual with dependency fields</caption>\n * {\n *   active: {\n *     type: new DataTypes.VIRTUAL(DataTypes.BOOLEAN, ['createdAt']),\n *     get: function() {\n *       return this.get('createdAt') > Date.now() - (7 * 24 * 60 * 60 * 1000)\n *     }\n *   }\n * }\n *\n */\nclass VIRTUAL extends ABSTRACT {\n  /**\n   * @param {ABSTRACT} [ReturnType] return type for virtual type\n   * @param {Array} [fields] array of fields this virtual type is dependent on\n   */\n  constructor(ReturnType, fields) {\n    super();\n    if (typeof ReturnType === 'function')\n      ReturnType = new ReturnType();\n    this.returnType = ReturnType;\n    this.fields = fields;\n  }\n}\n\n/**\n * An enumeration, Postgres Only\n *\n * @example\n * DataTypes.ENUM('value', 'another value')\n * DataTypes.ENUM(['value', 'another value'])\n * DataTypes.ENUM({\n *   values: ['value', 'another value']\n * })\n */\nclass ENUM extends ABSTRACT {\n  /**\n   * @param {...any|{ values: any[] }|any[]} args either array of values or options object with values array. It also supports variadic values\n   */\n  constructor(...args) {\n    super();\n    const value = args[0];\n    const options = typeof value === 'object' && !Array.isArray(value) && value || {\n      values: args.reduce((result, element) => {\n        return result.concat(Array.isArray(element) ? element : [element]);\n      }, [])\n    };\n    this.values = options.values;\n    this.options = options;\n  }\n  validate(value) {\n    if (!this.values.includes(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid choice in %j', value, this.values));\n    }\n    return true;\n  }\n}\n\n/**\n * An array of `type`. Only available in Postgres.\n *\n * @example\n * DataTypes.ARRAY(DataTypes.DECIMAL)\n */\nclass ARRAY extends ABSTRACT {\n  /**\n   * @param {ABSTRACT} type type of array values\n   */\n  constructor(type) {\n    super();\n    const options = _.isPlainObject(type) ? type : { type };\n    this.options = options;\n    this.type = typeof options.type === 'function' ? new options.type() : options.type;\n  }\n  toSql() {\n    return `${this.type.toSql()}[]`;\n  }\n  validate(value) {\n    if (!Array.isArray(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid array', value));\n    }\n    return true;\n  }\n  static is(obj, type) {\n    return obj instanceof ARRAY && obj.type instanceof type;\n  }\n}\n\n/**\n * A column storing Geometry information.\n * It is only available in PostgreSQL (with PostGIS), MariaDB or MySQL.\n *\n * GeoJSON is accepted as input and returned as output.\n *\n * In PostGIS, the GeoJSON is parsed using the PostGIS function `ST_GeomFromGeoJSON`.\n * In MySQL it is parsed using the function `ST_GeomFromText`.\n *\n * Therefore, one can just follow the [GeoJSON spec](https://tools.ietf.org/html/rfc7946) for handling geometry objects.  See the following examples:\n *\n * @example <caption>Defining a Geometry type attribute</caption>\n * DataTypes.GEOMETRY\n * DataTypes.GEOMETRY('POINT')\n * DataTypes.GEOMETRY('POINT', 4326)\n *\n * @example <caption>Create a new point</caption>\n * const point = { type: 'Point', coordinates: [-76.984722, 39.807222]}; // GeoJson format: [lng, lat]\n *\n * User.create({username: 'username', geometry: point });\n *\n * @example <caption>Create a new linestring</caption>\n * const line = { type: 'LineString', 'coordinates': [ [100.0, 0.0], [101.0, 1.0] ] };\n *\n * User.create({username: 'username', geometry: line });\n *\n * @example <caption>Create a new polygon</caption>\n * const polygon = { type: 'Polygon', coordinates: [\n *                 [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],\n *                   [100.0, 1.0], [100.0, 0.0] ]\n *                 ]};\n *\n * User.create({username: 'username', geometry: polygon });\n *\n * @example <caption>Create a new point with a custom SRID</caption>\n * const point = {\n *   type: 'Point',\n *   coordinates: [-76.984722, 39.807222], // GeoJson format: [lng, lat]\n *   crs: { type: 'name', properties: { name: 'EPSG:4326'} }\n * };\n *\n * User.create({username: 'username', geometry: point })\n *\n *\n * @see {@link DataTypes.GEOGRAPHY}\n */\nclass GEOMETRY extends ABSTRACT {\n  /**\n   * @param {string} [type] Type of geometry data\n   * @param {string} [srid] SRID of type\n   */\n  constructor(type, srid) {\n    super();\n    const options = _.isPlainObject(type) ? type : { type, srid };\n    this.options = options;\n    this.type = options.type;\n    this.srid = options.srid;\n  }\n  _stringify(value, options) {\n    return `ST_GeomFromText(${options.escape(wkx.Geometry.parseGeoJSON(value).toWkt())})`;\n  }\n  _bindParam(value, options) {\n    return `ST_GeomFromText(${options.bindParam(wkx.Geometry.parseGeoJSON(value).toWkt())})`;\n  }\n}\n\nGEOMETRY.prototype.escape = false;\n\n/**\n * A geography datatype represents two dimensional spacial objects in an elliptic coord system.\n *\n * __The difference from geometry and geography type:__\n *\n * PostGIS 1.5 introduced a new spatial type called geography, which uses geodetic measurement instead of Cartesian measurement.\n * Coordinate points in the geography type are always represented in WGS 84 lon lat degrees (SRID 4326),\n * but measurement functions and relationships ST_Distance, ST_DWithin, ST_Length, and ST_Area always return answers in meters or assume inputs in meters.\n *\n * __What is best to use? It depends:__\n *\n * When choosing between the geometry and geography type for data storage, you should consider what you\u2019ll be using it for.\n * If all you do are simple measurements and relationship checks on your data, and your data covers a fairly large area, then most likely you\u2019ll be better off storing your data using the new geography type.\n * Although the new geography data type can cover the globe, the geometry type is far from obsolete.\n * The geometry type has a much richer set of functions than geography, relationship checks are generally faster, and it has wider support currently across desktop and web-mapping tools\n *\n * @example <caption>Defining a Geography type attribute</caption>\n * DataTypes.GEOGRAPHY\n * DataTypes.GEOGRAPHY('POINT')\n * DataTypes.GEOGRAPHY('POINT', 4326)\n */\nclass GEOGRAPHY extends ABSTRACT {\n  /**\n   * @param {string} [type] Type of geography data\n   * @param {string} [srid] SRID of type\n   */\n  constructor(type, srid) {\n    super();\n    const options = _.isPlainObject(type) ? type : { type, srid };\n    this.options = options;\n    this.type = options.type;\n    this.srid = options.srid;\n  }\n  _stringify(value, options) {\n    return `ST_GeomFromText(${options.escape(wkx.Geometry.parseGeoJSON(value).toWkt())})`;\n  }\n  _bindParam(value, options) {\n    return `ST_GeomFromText(${options.bindParam(wkx.Geometry.parseGeoJSON(value).toWkt())})`;\n  }\n}\n\n\nGEOGRAPHY.prototype.escape = false;\n\n/**\n * The cidr type holds an IPv4 or IPv6 network specification. Takes 7 or 19 bytes.\n *\n * Only available for Postgres\n */\nclass CIDR extends ABSTRACT {\n  validate(value) {\n    if (typeof value !== 'string' || !Validator.isIPRange(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid CIDR', value));\n    }\n    return true;\n  }\n}\n\n/**\n * The INET type holds an IPv4 or IPv6 host address, and optionally its subnet. Takes 7 or 19 bytes\n *\n * Only available for Postgres\n */\nclass INET extends ABSTRACT {\n  validate(value) {\n    if (typeof value !== 'string' || !Validator.isIP(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid INET', value));\n    }\n    return true;\n  }\n}\n\n/**\n * The MACADDR type stores MAC addresses. Takes 6 bytes\n *\n * Only available for Postgres\n *\n */\nclass MACADDR extends ABSTRACT {\n  validate(value) {\n    if (typeof value !== 'string' || !Validator.isMACAddress(value)) {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid MACADDR', value));\n    }\n    return true;\n  }\n}\n\n/**\n * The TSVECTOR type stores text search vectors.\n *\n * Only available for Postgres\n *\n */\nclass TSVECTOR extends ABSTRACT {\n  validate(value) {\n    if (typeof value !== 'string') {\n      throw new sequelizeErrors.ValidationError(util.format('%j is not a valid string', value));\n    }\n    return true;\n  }\n}\n\n/**\n * A convenience class holding commonly used data types. The data types are used when defining a new model using `Sequelize.define`, like this:\n * ```js\n * sequelize.define('model', {\n *   column: DataTypes.INTEGER\n * })\n * ```\n * When defining a model you can just as easily pass a string as type, but often using the types defined here is beneficial. For example, using `DataTypes.BLOB`, mean\n * that that column will be returned as an instance of `Buffer` when being fetched by sequelize.\n *\n * To provide a length for the data type, you can invoke it like a function: `INTEGER(2)`\n *\n * Some data types have special properties that can be accessed in order to change the data type.\n * For example, to get an unsigned integer with zerofill you can do `DataTypes.INTEGER.UNSIGNED.ZEROFILL`.\n * The order you access the properties in do not matter, so `DataTypes.INTEGER.ZEROFILL.UNSIGNED` is fine as well.\n *\n * * All number types (`INTEGER`, `BIGINT`, `FLOAT`, `DOUBLE`, `REAL`, `DECIMAL`) expose the properties `UNSIGNED` and `ZEROFILL`\n * * The `CHAR` and `STRING` types expose the `BINARY` property\n *\n * Three of the values provided here (`NOW`, `UUIDV1` and `UUIDV4`) are special default values, that should not be used to define types. Instead they are used as shorthands for\n * defining default values. For example, to get a uuid field with a default value generated following v1 of the UUID standard:\n * ```js\n * sequelize.define('model', {\n *   uuid: {\n *     type: DataTypes.UUID,\n *     defaultValue: DataTypes.UUIDV1,\n *     primaryKey: true\n *   }\n * })\n * ```\n * There may be times when you want to generate your own UUID conforming to some other algorithm. This is accomplished\n * using the defaultValue property as well, but instead of specifying one of the supplied UUID types, you return a value\n * from a function.\n * ```js\n * sequelize.define('model', {\n *   uuid: {\n *     type: DataTypes.UUID,\n *     defaultValue: function() {\n *       return generateMyId()\n *     },\n *     primaryKey: true\n *   }\n * })\n * ```\n */\nconst DataTypes = module.exports = {\n  ABSTRACT,\n  STRING,\n  CHAR,\n  TEXT,\n  NUMBER,\n  TINYINT,\n  SMALLINT,\n  MEDIUMINT,\n  INTEGER,\n  BIGINT,\n  FLOAT,\n  TIME,\n  DATE,\n  DATEONLY,\n  BOOLEAN,\n  NOW,\n  BLOB,\n  DECIMAL,\n  NUMERIC: DECIMAL,\n  UUID,\n  UUIDV1,\n  UUIDV4,\n  HSTORE,\n  JSON: JSONTYPE,\n  JSONB,\n  VIRTUAL,\n  ARRAY,\n  ENUM,\n  RANGE,\n  REAL,\n  'DOUBLE PRECISION': DOUBLE,\n  DOUBLE,\n  GEOMETRY,\n  GEOGRAPHY,\n  CIDR,\n  INET,\n  MACADDR,\n  CITEXT,\n  TSVECTOR\n};\n\n_.each(DataTypes, (dataType, name) => {\n  // guard for aliases\n  if (!Object.prototype.hasOwnProperty.call(dataType, 'key')) {\n    dataType.types = {};\n    dataType.key = dataType.prototype.key = name;\n  }\n});\n\nconst dialectMap = {};\ndialectMap.postgres = require('./dialects/postgres/data-types')(DataTypes);\ndialectMap.mysql = require('./dialects/mysql/data-types')(DataTypes);\ndialectMap.mariadb = require('./dialects/mariadb/data-types')(DataTypes);\ndialectMap.sqlite = require('./dialects/sqlite/data-types')(DataTypes);\ndialectMap.mssql = require('./dialects/mssql/data-types')(DataTypes);\ndialectMap.db2 = require('./dialects/db2/data-types')(DataTypes);\ndialectMap.snowflake = require('./dialects/snowflake/data-types')(DataTypes);\ndialectMap.oracle = require('./dialects/oracle/data-types')(DataTypes);\n\nconst dialectList = Object.values(dialectMap);\n\nfor (const dataTypes of dialectList) {\n  _.each(dataTypes, (DataType, key) => {\n    if (!DataType.key) {\n      DataType.key = DataType.prototype.key = key;\n    }\n  });\n}\n\n// Wrap all data types to not require `new`\nfor (const dataTypes of [DataTypes, ...dialectList]) {\n  _.each(dataTypes, (DataType, key) => {\n    dataTypes[key] = classToInvokable(DataType);\n  });\n}\n\nObject.assign(DataTypes, dialectMap);\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/deferrable.js
===================================================================
--- backend/node_modules/sequelize/lib/deferrable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-"use strict";
-const { classToInvokable } = require("./utils");
-class ABSTRACT {
-  static toString(...args) {
-    return new this().toString(...args);
-  }
-  toString(...args) {
-    return this.toSql(...args);
-  }
-  toSql() {
-    throw new Error("toSql implementation missing");
-  }
-}
-class INITIALLY_DEFERRED extends ABSTRACT {
-  toSql() {
-    return "DEFERRABLE INITIALLY DEFERRED";
-  }
-}
-class INITIALLY_IMMEDIATE extends ABSTRACT {
-  toSql() {
-    return "DEFERRABLE INITIALLY IMMEDIATE";
-  }
-}
-class NOT extends ABSTRACT {
-  toSql() {
-    return "NOT DEFERRABLE";
-  }
-}
-class SET_DEFERRED extends ABSTRACT {
-  constructor(constraints) {
-    super();
-    this.constraints = constraints;
-  }
-  toSql(queryGenerator) {
-    return queryGenerator.setDeferredQuery(this.constraints);
-  }
-}
-class SET_IMMEDIATE extends ABSTRACT {
-  constructor(constraints) {
-    super();
-    this.constraints = constraints;
-  }
-  toSql(queryGenerator) {
-    return queryGenerator.setImmediateQuery(this.constraints);
-  }
-}
-const Deferrable = {
-  INITIALLY_DEFERRED: classToInvokable(INITIALLY_DEFERRED),
-  INITIALLY_IMMEDIATE: classToInvokable(INITIALLY_IMMEDIATE),
-  NOT: classToInvokable(NOT),
-  SET_DEFERRED: classToInvokable(SET_DEFERRED),
-  SET_IMMEDIATE: classToInvokable(SET_IMMEDIATE)
-};
-module.exports = Deferrable;
-//# sourceMappingURL=deferrable.js.map
Index: ckend/node_modules/sequelize/lib/deferrable.js.map
===================================================================
--- backend/node_modules/sequelize/lib/deferrable.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/deferrable.js"],
-  "sourcesContent": ["'use strict';\n\nconst { classToInvokable } = require('./utils');\n\nclass ABSTRACT {\n  static toString(...args) {\n    return new this().toString(...args);\n  }\n\n  toString(...args) {\n    return this.toSql(...args);\n  }\n\n  toSql() {\n    throw new Error('toSql implementation missing');\n  }\n}\n\nclass INITIALLY_DEFERRED extends ABSTRACT {\n  toSql() {\n    return 'DEFERRABLE INITIALLY DEFERRED';\n  }\n}\n\nclass INITIALLY_IMMEDIATE extends ABSTRACT {\n  toSql() {\n    return 'DEFERRABLE INITIALLY IMMEDIATE';\n  }\n}\n\nclass NOT extends ABSTRACT {\n  toSql() {\n    return 'NOT DEFERRABLE';\n  }\n}\n\nclass SET_DEFERRED extends ABSTRACT {\n  constructor(constraints) {\n    super();\n    this.constraints = constraints;\n  }\n\n  toSql(queryGenerator) {\n    return queryGenerator.setDeferredQuery(this.constraints);\n  }\n}\n\nclass SET_IMMEDIATE extends ABSTRACT {\n  constructor(constraints) {\n    super();\n    this.constraints = constraints;\n  }\n\n  toSql(queryGenerator) {\n    return queryGenerator.setImmediateQuery(this.constraints);\n  }\n}\n\n/**\n * A collection of properties related to deferrable constraints. It can be used to\n * make foreign key constraints deferrable and to set the constraints within a\n * transaction. This is only supported in PostgreSQL.\n *\n * The foreign keys can be configured like this. It will create a foreign key\n * that will check the constraints immediately when the data was inserted.\n *\n * ```js\n * sequelize.define('Model', {\n *   foreign_id: {\n *     type: Sequelize.INTEGER,\n *     references: {\n *       model: OtherModel,\n *       key: 'id',\n *       deferrable: Sequelize.Deferrable.INITIALLY_IMMEDIATE\n *     }\n *   }\n * });\n * ```\n *\n * The constraints can be configured in a transaction like this. It will\n * trigger a query once the transaction has been started and set the constraints\n * to be checked at the very end of the transaction.\n *\n * ```js\n * sequelize.transaction({\n *   deferrable: Sequelize.Deferrable.SET_DEFERRED\n * });\n * ```\n *\n * @property INITIALLY_DEFERRED    Use when declaring a constraint. Allow and enable by default this constraint's checks to be deferred at the end of transactions.\n * @property INITIALLY_IMMEDIATE   Use when declaring a constraint. Allow the constraint's checks to be deferred at the end of transactions.\n * @property NOT                   Use when declaring a constraint. Set the constraint to not deferred. This is the default in PostgreSQL and makes it impossible to dynamically defer the constraints within a transaction.\n * @property SET_DEFERRED          Use when declaring a transaction. Defer the deferrable checks involved in this transaction at commit.\n * @property SET_IMMEDIATE         Use when declaring a transaction. Execute the deferrable checks involved in this transaction immediately.\n */\n\nconst Deferrable = {\n  INITIALLY_DEFERRED: classToInvokable(INITIALLY_DEFERRED),\n  INITIALLY_IMMEDIATE: classToInvokable(INITIALLY_IMMEDIATE),\n  NOT: classToInvokable(NOT),\n  SET_DEFERRED: classToInvokable(SET_DEFERRED),\n  SET_IMMEDIATE: classToInvokable(SET_IMMEDIATE)\n};\n\nmodule.exports = Deferrable;\n"],
-  "mappings": ";AAEA,MAAM,EAAE,qBAAqB,QAAQ;AAErC,eAAe;AAAA,SACN,YAAY,MAAM;AACvB,WAAO,IAAI,OAAO,SAAS,GAAG;AAAA;AAAA,EAGhC,YAAY,MAAM;AAChB,WAAO,KAAK,MAAM,GAAG;AAAA;AAAA,EAGvB,QAAQ;AACN,UAAM,IAAI,MAAM;AAAA;AAAA;AAIpB,iCAAiC,SAAS;AAAA,EACxC,QAAQ;AACN,WAAO;AAAA;AAAA;AAIX,kCAAkC,SAAS;AAAA,EACzC,QAAQ;AACN,WAAO;AAAA;AAAA;AAIX,kBAAkB,SAAS;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA;AAAA;AAIX,2BAA2B,SAAS;AAAA,EAClC,YAAY,aAAa;AACvB;AACA,SAAK,cAAc;AAAA;AAAA,EAGrB,MAAM,gBAAgB;AACpB,WAAO,eAAe,iBAAiB,KAAK;AAAA;AAAA;AAIhD,4BAA4B,SAAS;AAAA,EACnC,YAAY,aAAa;AACvB;AACA,SAAK,cAAc;AAAA;AAAA,EAGrB,MAAM,gBAAgB;AACpB,WAAO,eAAe,kBAAkB,KAAK;AAAA;AAAA;AA0CjD,MAAM,aAAa;AAAA,EACjB,oBAAoB,iBAAiB;AAAA,EACrC,qBAAqB,iBAAiB;AAAA,EACtC,KAAK,iBAAiB;AAAA,EACtB,cAAc,iBAAiB;AAAA,EAC/B,eAAe,iBAAiB;AAAA;AAGlC,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,241 +1,0 @@
-"use strict";
-const { Pool, TimeoutError } = require("sequelize-pool");
-const _ = require("lodash");
-const semver = require("semver");
-const errors = require("../../errors");
-const { logger } = require("../../utils/logger");
-const deprecations = require("../../utils/deprecations");
-const debug = logger.debugContext("pool");
-class ConnectionManager {
-  constructor(dialect, sequelize) {
-    const config = _.cloneDeep(sequelize.config);
-    this.sequelize = sequelize;
-    this.config = config;
-    this.dialect = dialect;
-    this.versionPromise = null;
-    this.dialectName = this.sequelize.options.dialect;
-    if (config.pool === false) {
-      throw new Error("Support for pool:false was removed in v4.0");
-    }
-    config.pool = _.defaults(config.pool || {}, {
-      max: 5,
-      min: 0,
-      idle: 1e4,
-      acquire: 6e4,
-      evict: 1e3,
-      validate: this._validate.bind(this)
-    });
-    this.initPools();
-  }
-  refreshTypeParser(dataTypes) {
-    _.each(dataTypes, (dataType) => {
-      if (Object.prototype.hasOwnProperty.call(dataType, "parse")) {
-        if (dataType.types[this.dialectName]) {
-          this._refreshTypeParser(dataType);
-        } else {
-          throw new Error(`Parse function not supported for type ${dataType.key} in dialect ${this.dialectName}`);
-        }
-      }
-    });
-  }
-  _loadDialectModule(moduleName) {
-    try {
-      if (this.sequelize.config.dialectModulePath) {
-        return require(this.sequelize.config.dialectModulePath);
-      }
-      if (this.sequelize.config.dialectModule) {
-        return this.sequelize.config.dialectModule;
-      }
-      return require(moduleName);
-    } catch (err) {
-      if (err.code === "MODULE_NOT_FOUND") {
-        if (this.sequelize.config.dialectModulePath) {
-          throw new Error(`Unable to find dialect at ${this.sequelize.config.dialectModulePath}`);
-        }
-        throw new Error(`Please install ${moduleName} package manually`);
-      }
-      throw err;
-    }
-  }
-  async _onProcessExit() {
-    if (!this.pool) {
-      return;
-    }
-    await this.pool.drain();
-    debug("connection drain due to process exit");
-    return await this.pool.destroyAllNow();
-  }
-  async close() {
-    this.getConnection = async function getConnection() {
-      throw new Error("ConnectionManager.getConnection was called after the connection manager was closed!");
-    };
-    return await this._onProcessExit();
-  }
-  initPools() {
-    const config = this.config;
-    if (!config.replication) {
-      this.pool = new Pool({
-        name: "sequelize",
-        create: () => this._connect(config),
-        destroy: async (connection) => {
-          const result = await this._disconnect(connection);
-          debug("connection destroy");
-          return result;
-        },
-        validate: config.pool.validate,
-        max: config.pool.max,
-        min: config.pool.min,
-        acquireTimeoutMillis: config.pool.acquire,
-        idleTimeoutMillis: config.pool.idle,
-        reapIntervalMillis: config.pool.evict,
-        maxUses: config.pool.maxUses
-      });
-      debug(`pool created with max/min: ${config.pool.max}/${config.pool.min}, no replication`);
-      return;
-    }
-    if (!Array.isArray(config.replication.read)) {
-      config.replication.read = [config.replication.read];
-    }
-    config.replication.write = _.defaults(config.replication.write, _.omit(config, "replication"));
-    config.replication.read = config.replication.read.map((readConfig) => _.defaults(readConfig, _.omit(this.config, "replication")));
-    let reads = 0;
-    this.pool = {
-      release: (client) => {
-        if (client.queryType === "read") {
-          this.pool.read.release(client);
-        } else {
-          this.pool.write.release(client);
-        }
-      },
-      acquire: (queryType, useMaster) => {
-        useMaster = useMaster === void 0 ? false : useMaster;
-        if (queryType === "SELECT" && !useMaster) {
-          return this.pool.read.acquire();
-        }
-        return this.pool.write.acquire();
-      },
-      destroy: (connection) => {
-        this.pool[connection.queryType].destroy(connection);
-        debug("connection destroy");
-      },
-      destroyAllNow: async () => {
-        await Promise.all([
-          this.pool.read.destroyAllNow(),
-          this.pool.write.destroyAllNow()
-        ]);
-        debug("all connections destroyed");
-      },
-      drain: async () => Promise.all([
-        this.pool.write.drain(),
-        this.pool.read.drain()
-      ]),
-      read: new Pool({
-        name: "sequelize:read",
-        create: async () => {
-          const nextRead = reads++ % config.replication.read.length;
-          const connection = await this._connect(config.replication.read[nextRead]);
-          connection.queryType = "read";
-          return connection;
-        },
-        destroy: (connection) => this._disconnect(connection),
-        validate: config.pool.validate,
-        max: config.pool.max,
-        min: config.pool.min,
-        acquireTimeoutMillis: config.pool.acquire,
-        idleTimeoutMillis: config.pool.idle,
-        reapIntervalMillis: config.pool.evict,
-        maxUses: config.pool.maxUses
-      }),
-      write: new Pool({
-        name: "sequelize:write",
-        create: async () => {
-          const connection = await this._connect(config.replication.write);
-          connection.queryType = "write";
-          return connection;
-        },
-        destroy: (connection) => this._disconnect(connection),
-        validate: config.pool.validate,
-        max: config.pool.max,
-        min: config.pool.min,
-        acquireTimeoutMillis: config.pool.acquire,
-        idleTimeoutMillis: config.pool.idle,
-        reapIntervalMillis: config.pool.evict,
-        maxUses: config.pool.maxUses
-      })
-    };
-    debug(`pool created with max/min: ${config.pool.max}/${config.pool.min}, with replication`);
-  }
-  async getConnection(options) {
-    options = options || {};
-    if (this.sequelize.options.databaseVersion === 0) {
-      if (!this.versionPromise) {
-        this.versionPromise = (async () => {
-          try {
-            const connection = await this._connect(this.config.replication.write || this.config);
-            const _options = {};
-            _options.transaction = { connection };
-            _options.logging = () => {
-            };
-            _options.logging.__testLoggingFn = true;
-            if (this.sequelize.options.databaseVersion === 0) {
-              const version = await this.sequelize.databaseVersion(_options);
-              const parsedVersion = _.get(semver.coerce(version), "version") || version;
-              this.sequelize.options.databaseVersion = semver.valid(parsedVersion) ? parsedVersion : this.dialect.defaultVersion;
-            }
-            if (semver.lt(this.sequelize.options.databaseVersion, this.dialect.defaultVersion)) {
-              deprecations.unsupportedEngine();
-              debug(`Unsupported database engine version ${this.sequelize.options.databaseVersion}`);
-            }
-            this.versionPromise = null;
-            return await this._disconnect(connection);
-          } catch (err) {
-            this.versionPromise = null;
-            throw err;
-          }
-        })();
-      }
-      await this.versionPromise;
-    }
-    let result;
-    try {
-      await this.sequelize.runHooks("beforePoolAcquire", options);
-      result = await this.pool.acquire(options.type, options.useMaster);
-      await this.sequelize.runHooks("afterPoolAcquire", result, options);
-    } catch (error) {
-      if (error instanceof TimeoutError)
-        throw new errors.ConnectionAcquireTimeoutError(error);
-      throw error;
-    }
-    debug("connection acquired");
-    return result;
-  }
-  releaseConnection(connection) {
-    this.pool.release(connection);
-    debug("connection released");
-  }
-  async destroyConnection(connection) {
-    await this.pool.destroy(connection);
-    debug(`connection ${connection.uuid} destroyed`);
-  }
-  async _connect(config) {
-    await this.sequelize.runHooks("beforeConnect", config);
-    const connection = await this.dialect.connectionManager.connect(config);
-    await this.sequelize.runHooks("afterConnect", connection, config);
-    return connection;
-  }
-  async _disconnect(connection) {
-    await this.sequelize.runHooks("beforeDisconnect", connection);
-    await this.dialect.connectionManager.disconnect(connection);
-    return this.sequelize.runHooks("afterDisconnect", connection);
-  }
-  _validate(connection) {
-    if (!this.dialect.connectionManager.validate) {
-      return true;
-    }
-    return this.dialect.connectionManager.validate(connection);
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/abstract/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst { Pool, TimeoutError } = require('sequelize-pool');\nconst _ = require('lodash');\nconst semver = require('semver');\nconst errors = require('../../errors');\nconst { logger } = require('../../utils/logger');\nconst deprecations = require('../../utils/deprecations');\nconst debug = logger.debugContext('pool');\n\n/**\n * Abstract Connection Manager\n *\n * Connection manager which handles pooling & replication.\n * Uses sequelize-pool for pooling\n *\n * @private\n */\nclass ConnectionManager {\n  constructor(dialect, sequelize) {\n    const config = _.cloneDeep(sequelize.config);\n\n    this.sequelize = sequelize;\n    this.config = config;\n    this.dialect = dialect;\n    this.versionPromise = null;\n    this.dialectName = this.sequelize.options.dialect;\n\n    if (config.pool === false) {\n      throw new Error('Support for pool:false was removed in v4.0');\n    }\n\n    config.pool = _.defaults(config.pool || {}, {\n      max: 5,\n      min: 0,\n      idle: 10000,\n      acquire: 60000,\n      evict: 1000,\n      validate: this._validate.bind(this)\n    });\n\n    this.initPools();\n  }\n\n  refreshTypeParser(dataTypes) {\n    _.each(dataTypes, dataType => {\n      if (Object.prototype.hasOwnProperty.call(dataType, 'parse')) {\n        if (dataType.types[this.dialectName]) {\n          this._refreshTypeParser(dataType);\n        } else {\n          throw new Error(`Parse function not supported for type ${dataType.key} in dialect ${this.dialectName}`);\n        }\n      }\n    });\n  }\n\n  /**\n   * Try to load dialect module from various configured options.\n   * Priority goes like dialectModulePath > dialectModule > require(default)\n   *\n   * @param {string} moduleName Name of dialect module to lookup\n   *\n   * @private\n   * @returns {object}\n   */\n  _loadDialectModule(moduleName) {\n    try {\n      if (this.sequelize.config.dialectModulePath) {\n        return require(this.sequelize.config.dialectModulePath);\n      }\n      if (this.sequelize.config.dialectModule) {\n        return this.sequelize.config.dialectModule;\n      }\n      return require(moduleName);\n\n    } catch (err) {\n      if (err.code === 'MODULE_NOT_FOUND') {\n        if (this.sequelize.config.dialectModulePath) {\n          throw new Error(`Unable to find dialect at ${this.sequelize.config.dialectModulePath}`);\n        }\n        throw new Error(`Please install ${moduleName} package manually`);\n      }\n\n      throw err;\n    }\n  }\n\n  /**\n   * Handler which executes on process exit or connection manager shutdown\n   *\n   * @private\n   * @returns {Promise}\n   */\n  async _onProcessExit() {\n    if (!this.pool) {\n      return;\n    }\n\n    await this.pool.drain();\n    debug('connection drain due to process exit');\n\n    return await this.pool.destroyAllNow();\n  }\n\n  /**\n   * Drain the pool and close it permanently\n   *\n   * @returns {Promise}\n   */\n  async close() {\n    // Mark close of pool\n    this.getConnection = async function getConnection() {\n      throw new Error('ConnectionManager.getConnection was called after the connection manager was closed!');\n    };\n\n    return await this._onProcessExit();\n  }\n\n  /**\n   * Initialize connection pool. By default pool autostart is set to false, so no connection will be\n   * be created unless `pool.acquire` is called.\n   */\n  initPools() {\n    const config = this.config;\n\n    if (!config.replication) {\n      this.pool = new Pool({\n        name: 'sequelize',\n        create: () => this._connect(config),\n        destroy: async connection => {\n          const result = await this._disconnect(connection);\n          debug('connection destroy');\n          return result;\n        },\n        validate: config.pool.validate,\n        max: config.pool.max,\n        min: config.pool.min,\n        acquireTimeoutMillis: config.pool.acquire,\n        idleTimeoutMillis: config.pool.idle,\n        reapIntervalMillis: config.pool.evict,\n        maxUses: config.pool.maxUses\n      });\n\n      debug(`pool created with max/min: ${config.pool.max}/${config.pool.min}, no replication`);\n\n      return;\n    }\n\n    if (!Array.isArray(config.replication.read)) {\n      config.replication.read = [config.replication.read];\n    }\n\n    // Map main connection config\n    config.replication.write = _.defaults(config.replication.write, _.omit(config, 'replication'));\n\n    // Apply defaults to each read config\n    config.replication.read = config.replication.read.map(readConfig =>\n      _.defaults(readConfig, _.omit(this.config, 'replication'))\n    );\n\n    // custom pooling for replication (original author @janmeier)\n    let reads = 0;\n    this.pool = {\n      release: client => {\n        if (client.queryType === 'read') {\n          this.pool.read.release(client);\n        } else {\n          this.pool.write.release(client);\n        }\n      },\n      acquire: (queryType, useMaster) => {\n        useMaster = useMaster === undefined ? false : useMaster;\n        if (queryType === 'SELECT' && !useMaster) {\n          return this.pool.read.acquire();\n        }\n        return this.pool.write.acquire();\n      },\n      destroy: connection => {\n        this.pool[connection.queryType].destroy(connection);\n        debug('connection destroy');\n      },\n      destroyAllNow: async () => {\n        await Promise.all([\n          this.pool.read.destroyAllNow(),\n          this.pool.write.destroyAllNow()\n        ]);\n\n        debug('all connections destroyed');\n      },\n      drain: async () => Promise.all([\n        this.pool.write.drain(),\n        this.pool.read.drain()\n      ]),\n      read: new Pool({\n        name: 'sequelize:read',\n        create: async () => {\n          // round robin config\n          const nextRead = reads++ % config.replication.read.length;\n          const connection = await this._connect(config.replication.read[nextRead]);\n          connection.queryType = 'read';\n          return connection;\n        },\n        destroy: connection => this._disconnect(connection),\n        validate: config.pool.validate,\n        max: config.pool.max,\n        min: config.pool.min,\n        acquireTimeoutMillis: config.pool.acquire,\n        idleTimeoutMillis: config.pool.idle,\n        reapIntervalMillis: config.pool.evict,\n        maxUses: config.pool.maxUses\n      }),\n      write: new Pool({\n        name: 'sequelize:write',\n        create: async () => {\n          const connection = await this._connect(config.replication.write);\n          connection.queryType = 'write';\n          return connection;\n        },\n        destroy: connection => this._disconnect(connection),\n        validate: config.pool.validate,\n        max: config.pool.max,\n        min: config.pool.min,\n        acquireTimeoutMillis: config.pool.acquire,\n        idleTimeoutMillis: config.pool.idle,\n        reapIntervalMillis: config.pool.evict,\n        maxUses: config.pool.maxUses\n      })\n    };\n\n    debug(`pool created with max/min: ${config.pool.max}/${config.pool.min}, with replication`);\n  }\n\n  /**\n   * Get connection from pool. It sets database version if it's not already set.\n   * Call pool.acquire to get a connection\n   *\n   * @param {object}   [options]                 Pool options\n   * @param {string}   [options.type]            Set which replica to use. Available options are `read` and `write`\n   * @param {boolean}  [options.useMaster=false] Force master or write replica to get connection from\n   *\n   * @returns {Promise<Connection>}\n   */\n  async getConnection(options) {\n    options = options || {};\n\n    if (this.sequelize.options.databaseVersion === 0) {\n      if (!this.versionPromise) {\n        this.versionPromise = (async () => {\n          try {\n            const connection = await this._connect(this.config.replication.write || this.config);\n            const _options = {};\n\n            _options.transaction = { connection }; // Cheat .query to use our private connection\n            _options.logging = () => {};\n            _options.logging.__testLoggingFn = true;\n\n            //connection might have set databaseVersion value at initialization,\n            //avoiding a useless round trip\n            if (this.sequelize.options.databaseVersion === 0) {\n              const version = await this.sequelize.databaseVersion(_options);\n              const parsedVersion = _.get(semver.coerce(version), 'version') || version;\n              this.sequelize.options.databaseVersion = semver.valid(parsedVersion)\n                ? parsedVersion\n                : this.dialect.defaultVersion;\n            }\n\n            if (semver.lt(this.sequelize.options.databaseVersion, this.dialect.defaultVersion)) {\n              deprecations.unsupportedEngine();\n              debug(`Unsupported database engine version ${this.sequelize.options.databaseVersion}`);\n            }\n\n            this.versionPromise = null;\n            return await this._disconnect(connection);\n          } catch (err) {\n            this.versionPromise = null;\n            throw err;\n          }\n        })();\n      }\n      await this.versionPromise;\n    }\n\n    let result;\n\n    try {\n\n      await this.sequelize.runHooks('beforePoolAcquire', options);\n\n      result = await this.pool.acquire(options.type, options.useMaster);\n\n      await this.sequelize.runHooks('afterPoolAcquire', result, options);\n\n    } catch (error) {\n      if (error instanceof TimeoutError) throw new errors.ConnectionAcquireTimeoutError(error);\n      throw error;\n    }\n\n    debug('connection acquired');\n\n    return result;\n  }\n\n  /**\n   * Release a pooled connection so it can be utilized by other connection requests\n   *\n   * @param {Connection} connection\n   */\n  releaseConnection(connection) {\n    this.pool.release(connection);\n    debug('connection released');\n  }\n\n  /**\n   * Destroys a pooled connection and removes it from the pool.\n   *\n   * @param {Connection} connection\n   */\n  async destroyConnection(connection) {\n    await this.pool.destroy(connection);\n    debug(`connection ${connection.uuid} destroyed`);\n  }\n\n  /**\n   * Call dialect library to get connection\n   *\n   * @param {*} config Connection config\n   * @private\n   * @returns {Promise<Connection>}\n   */\n  async _connect(config) {\n    await this.sequelize.runHooks('beforeConnect', config);\n    const connection = await this.dialect.connectionManager.connect(config);\n    await this.sequelize.runHooks('afterConnect', connection, config);\n    return connection;\n  }\n\n  /**\n   * Call dialect library to disconnect a connection\n   *\n   * @param {Connection} connection\n   * @private\n   * @returns {Promise}\n   */\n  async _disconnect(connection) {\n    await this.sequelize.runHooks('beforeDisconnect', connection);\n    await this.dialect.connectionManager.disconnect(connection);\n    return this.sequelize.runHooks('afterDisconnect', connection);\n  }\n\n  /**\n   * Determine if a connection is still valid or not\n   *\n   * @param {Connection} connection\n   *\n   * @returns {boolean}\n   */\n  _validate(connection) {\n    if (!this.dialect.connectionManager.validate) {\n      return true;\n    }\n\n    return this.dialect.connectionManager.validate(connection);\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-"use strict";
-class AbstractDialect {
-  canBackslashEscape() {
-    return false;
-  }
-}
-AbstractDialect.prototype.supports = {
-  "DEFAULT": true,
-  "DEFAULT VALUES": false,
-  "VALUES ()": false,
-  "LIMIT ON UPDATE": false,
-  "ON DUPLICATE KEY": true,
-  "ORDER NULLS": false,
-  "UNION": true,
-  "UNION ALL": true,
-  "RIGHT JOIN": true,
-  returnValues: false,
-  autoIncrement: {
-    identityInsert: false,
-    defaultValue: true,
-    update: true
-  },
-  bulkDefault: false,
-  schemas: false,
-  transactions: true,
-  settingIsolationLevelDuringTransaction: true,
-  transactionOptions: {
-    type: false
-  },
-  migrations: true,
-  upserts: true,
-  inserts: {
-    ignoreDuplicates: "",
-    updateOnDuplicate: false,
-    onConflictDoNothing: "",
-    onConflictWhere: false,
-    conflictFields: false
-  },
-  constraints: {
-    restrict: true,
-    addConstraint: true,
-    dropConstraint: true,
-    unique: true,
-    default: false,
-    check: true,
-    foreignKey: true,
-    primaryKey: true
-  },
-  index: {
-    collate: true,
-    length: false,
-    parser: false,
-    concurrently: false,
-    type: false,
-    using: true,
-    functionBased: false,
-    operator: false
-  },
-  groupedLimit: true,
-  indexViaAlter: false,
-  JSON: false,
-  deferrableConstraints: false,
-  escapeStringConstants: false
-};
-module.exports = AbstractDialect;
-module.exports.AbstractDialect = AbstractDialect;
-module.exports.default = AbstractDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/abstract/index.js"],
-  "sourcesContent": ["'use strict';\n\nclass AbstractDialect {\n  /**\n   * Whether this dialect can use \\ in strings to escape string delimiters.\n   *\n   * @returns {boolean}\n   */\n  canBackslashEscape() {\n    return false;\n  }\n}\n\nAbstractDialect.prototype.supports = {\n  'DEFAULT': true,\n  'DEFAULT VALUES': false,\n  'VALUES ()': false,\n  'LIMIT ON UPDATE': false,\n  'ON DUPLICATE KEY': true,\n  'ORDER NULLS': false,\n  'UNION': true,\n  'UNION ALL': true,\n  'RIGHT JOIN': true,\n\n  /* does the dialect support returning values for inserted/updated fields */\n  returnValues: false,\n\n  /* features specific to autoIncrement values */\n  autoIncrement: {\n    /* does the dialect require modification of insert queries when inserting auto increment fields */\n    identityInsert: false,\n\n    /* does the dialect support inserting default/null values for autoincrement fields */\n    defaultValue: true,\n\n    /* does the dialect support updating autoincrement fields */\n    update: true\n  },\n  /* Do we need to say DEFAULT for bulk insert */\n  bulkDefault: false,\n  schemas: false,\n  transactions: true,\n  settingIsolationLevelDuringTransaction: true,\n  transactionOptions: {\n    type: false\n  },\n  migrations: true,\n  upserts: true,\n  inserts: {\n    ignoreDuplicates: '', /* dialect specific words for INSERT IGNORE or DO NOTHING */\n    updateOnDuplicate: false, /* whether dialect supports ON DUPLICATE KEY UPDATE */\n    onConflictDoNothing: '', /* dialect specific words for ON CONFLICT DO NOTHING */\n    onConflictWhere: false, /* whether dialect supports ON CONFLICT WHERE */\n    conflictFields: false /* whether the dialect supports specifying conflict fields or not */\n  },\n  constraints: {\n    restrict: true,\n    addConstraint: true,\n    dropConstraint: true,\n    unique: true,\n    default: false,\n    check: true,\n    foreignKey: true,\n    primaryKey: true\n  },\n  index: {\n    collate: true,\n    length: false,\n    parser: false,\n    concurrently: false,\n    type: false,\n    using: true,\n    functionBased: false,\n    operator: false\n  },\n  groupedLimit: true,\n  indexViaAlter: false,\n  JSON: false,\n  /**\n   * This dialect supports marking a column's constraints as deferrable.\n   * e.g. 'DEFERRABLE' and 'INITIALLY DEFERRED'\n   */\n  deferrableConstraints: false,\n  escapeStringConstants: false\n};\n\nmodule.exports = AbstractDialect;\nmodule.exports.AbstractDialect = AbstractDialect;\nmodule.exports.default = AbstractDialect;\n"],
-  "mappings": ";AAEA,sBAAsB;AAAA,EAMpB,qBAAqB;AACnB,WAAO;AAAA;AAAA;AAIX,gBAAgB,UAAU,WAAW;AAAA,EACnC,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,aAAa;AAAA,EACb,cAAc;AAAA,EAGd,cAAc;AAAA,EAGd,eAAe;AAAA,IAEb,gBAAgB;AAAA,IAGhB,cAAc;AAAA,IAGd,QAAQ;AAAA;AAAA,EAGV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,cAAc;AAAA,EACd,wCAAwC;AAAA,EACxC,oBAAoB;AAAA,IAClB,MAAM;AAAA;AAAA,EAER,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,IACP,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA;AAAA,EAElB,aAAa;AAAA,IACX,UAAU;AAAA,IACV,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,YAAY;AAAA;AAAA,EAEd,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,eAAe;AAAA,IACf,UAAU;AAAA;AAAA,EAEZ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,MAAM;AAAA,EAKN,uBAAuB;AAAA,EACvB,uBAAuB;AAAA;AAGzB,OAAO,UAAU;AACjB,OAAO,QAAQ,kBAAkB;AACjC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2143 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const util = require("util");
-const _ = require("lodash");
-const uuidv4 = require("uuid").v4;
-const Utils = require("../../utils");
-const deprecations = require("../../utils/deprecations");
-const SqlString = require("../../sql-string");
-const DataTypes = require("../../data-types");
-const Model = require("../../model");
-const Association = require("../../associations/base");
-const BelongsTo = require("../../associations/belongs-to");
-const BelongsToMany = require("../../associations/belongs-to-many");
-const HasMany = require("../../associations/has-many");
-const Op = require("../../operators");
-const sequelizeError = require("../../errors");
-const IndexHints = require("../../index-hints");
-class QueryGenerator {
-  constructor(options) {
-    if (!options.sequelize)
-      throw new Error("QueryGenerator initialized without options.sequelize");
-    if (!options._dialect)
-      throw new Error("QueryGenerator initialized without options._dialect");
-    this.sequelize = options.sequelize;
-    this.options = options.sequelize.options;
-    this.dialect = options._dialect.name;
-    this._dialect = options._dialect;
-    this._initQuoteIdentifier();
-  }
-  extractTableDetails(tableName, options) {
-    options = options || {};
-    tableName = tableName || {};
-    return {
-      schema: tableName.schema || options.schema || this.options.schema || "public",
-      tableName: _.isPlainObject(tableName) ? tableName.tableName : tableName,
-      delimiter: tableName.delimiter || options.delimiter || "."
-    };
-  }
-  addSchema(param) {
-    if (!param._schema)
-      return param.tableName || param;
-    const self = this;
-    return {
-      tableName: param.tableName || param,
-      table: param.tableName || param,
-      name: param.name || param,
-      schema: param._schema,
-      delimiter: param._schemaDelimiter || ".",
-      toString() {
-        return self.quoteTable(this);
-      }
-    };
-  }
-  dropSchema(tableName, options) {
-    return this.dropTableQuery(tableName, options);
-  }
-  describeTableQuery(tableName, schema, schemaDelimiter) {
-    const table = this.quoteTable(this.addSchema({
-      tableName,
-      _schema: schema,
-      _schemaDelimiter: schemaDelimiter
-    }));
-    return `DESCRIBE ${table};`;
-  }
-  dropTableQuery(tableName) {
-    return `DROP TABLE IF EXISTS ${this.quoteTable(tableName)};`;
-  }
-  renameTableQuery(before, after) {
-    return `ALTER TABLE ${this.quoteTable(before)} RENAME TO ${this.quoteTable(after)};`;
-  }
-  populateInsertQueryReturnIntoBinds() {
-  }
-  insertQuery(table, valueHash, modelAttributes, options) {
-    options = options || {};
-    _.defaults(options, this.options);
-    const modelAttributeMap = {};
-    const bind = options.bind || [];
-    const fields = [];
-    const returningModelAttributes = [];
-    const returnTypes = [];
-    const values = [];
-    const quotedTable = this.quoteTable(table);
-    const bindParam = options.bindParam === void 0 ? this.bindParam(bind) : options.bindParam;
-    const returnAttributes = [];
-    let query;
-    let valueQuery = "";
-    let emptyQuery = "";
-    let outputFragment = "";
-    let returningFragment = "";
-    let identityWrapperRequired = false;
-    let tmpTable = "";
-    if (modelAttributes) {
-      _.each(modelAttributes, (attribute, key) => {
-        modelAttributeMap[key] = attribute;
-        if (attribute.field) {
-          modelAttributeMap[attribute.field] = attribute;
-        }
-      });
-    }
-    if (this._dialect.supports["DEFAULT VALUES"]) {
-      emptyQuery += " DEFAULT VALUES";
-    } else if (this._dialect.supports["VALUES ()"]) {
-      emptyQuery += " VALUES ()";
-    }
-    if ((this._dialect.supports.returnValues || this._dialect.supports.returnIntoValues) && options.returning) {
-      const returnValues = this.generateReturnValues(modelAttributes, options);
-      returningModelAttributes.push(...returnValues.returnFields);
-      if (this._dialect.supports.returnIntoValues) {
-        returnTypes.push(...returnValues.returnTypes);
-      }
-      returningFragment = returnValues.returningFragment;
-      tmpTable = returnValues.tmpTable || "";
-      outputFragment = returnValues.outputFragment || "";
-    }
-    if (_.get(this, ["sequelize", "options", "dialectOptions", "prependSearchPath"]) || options.searchPath) {
-      options.bindParam = false;
-    }
-    if (this._dialect.supports.EXCEPTION && options.exception) {
-      options.bindParam = false;
-    }
-    valueHash = Utils.removeNullValuesFromHash(valueHash, this.options.omitNull);
-    for (const key in valueHash) {
-      if (Object.prototype.hasOwnProperty.call(valueHash, key)) {
-        const value = valueHash[key];
-        fields.push(this.quoteIdentifier(key));
-        if (modelAttributeMap && modelAttributeMap[key] && modelAttributeMap[key].autoIncrement === true && value == null) {
-          if (!this._dialect.supports.autoIncrement.defaultValue) {
-            fields.splice(-1, 1);
-          } else if (this._dialect.supports.DEFAULT) {
-            values.push("DEFAULT");
-          } else {
-            values.push(this.escape(null));
-          }
-        } else {
-          if (modelAttributeMap && modelAttributeMap[key] && modelAttributeMap[key].autoIncrement === true) {
-            identityWrapperRequired = true;
-          }
-          if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {
-            values.push(this.escape(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "INSERT" }));
-          } else {
-            values.push(this.format(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "INSERT" }, bindParam));
-          }
-        }
-      }
-    }
-    let onDuplicateKeyUpdate = "";
-    if (!_.isEmpty(options.conflictWhere) && !this._dialect.supports.inserts.onConflictWhere) {
-      throw new Error("missing dialect support for conflictWhere option");
-    }
-    if (this._dialect.supports.inserts.updateOnDuplicate && options.updateOnDuplicate) {
-      if (this._dialect.supports.inserts.updateOnDuplicate == " ON CONFLICT DO UPDATE SET") {
-        const conflictKeys = options.upsertKeys.map((attr) => this.quoteIdentifier(attr));
-        const updateKeys = options.updateOnDuplicate.map((attr) => `${this.quoteIdentifier(attr)}=EXCLUDED.${this.quoteIdentifier(attr)}`);
-        const fragments = [
-          "ON CONFLICT",
-          "(",
-          conflictKeys.join(","),
-          ")"
-        ];
-        if (!_.isEmpty(options.conflictWhere)) {
-          fragments.push(this.whereQuery(options.conflictWhere, options));
-        }
-        if (_.isEmpty(updateKeys)) {
-          fragments.push("DO NOTHING");
-        } else {
-          fragments.push("DO UPDATE SET", updateKeys.join(","));
-        }
-        onDuplicateKeyUpdate = ` ${Utils.joinSQLFragments(fragments)}`;
-      } else {
-        const valueKeys = options.updateOnDuplicate.map((attr) => `${this.quoteIdentifier(attr)}=VALUES(${this.quoteIdentifier(attr)})`);
-        if (_.isEmpty(valueKeys) && options.upsertKeys) {
-          valueKeys.push(...options.upsertKeys.map((attr) => `${this.quoteIdentifier(attr)}=${this.quoteIdentifier(attr)}`));
-        }
-        if (_.isEmpty(valueKeys)) {
-          throw new Error("No update values found for ON DUPLICATE KEY UPDATE clause, and no identifier fields could be found to use instead.");
-        }
-        onDuplicateKeyUpdate += `${this._dialect.supports.inserts.updateOnDuplicate} ${valueKeys.join(",")}`;
-      }
-    }
-    const replacements = {
-      ignoreDuplicates: options.ignoreDuplicates ? this._dialect.supports.inserts.ignoreDuplicates : "",
-      onConflictDoNothing: options.ignoreDuplicates ? this._dialect.supports.inserts.onConflictDoNothing : "",
-      attributes: fields.join(","),
-      output: outputFragment,
-      values: values.join(","),
-      tmpTable
-    };
-    valueQuery = `${tmpTable}INSERT${replacements.ignoreDuplicates} INTO ${quotedTable} (${replacements.attributes})${replacements.output} VALUES (${replacements.values})${onDuplicateKeyUpdate}${replacements.onConflictDoNothing}${valueQuery}`;
-    emptyQuery = `${tmpTable}INSERT${replacements.ignoreDuplicates} INTO ${quotedTable}${replacements.output}${onDuplicateKeyUpdate}${replacements.onConflictDoNothing}${emptyQuery}`;
-    if (this._dialect.supports.EXCEPTION && options.exception) {
-      const dropFunction = "DROP FUNCTION IF EXISTS pg_temp.testfunc()";
-      if (returningModelAttributes.length === 0) {
-        returningModelAttributes.push("*");
-      }
-      const delimiter = `$func_${uuidv4().replace(/-/g, "")}$`;
-      const selectQuery = `SELECT (testfunc.response).${returningModelAttributes.join(", (testfunc.response).")}, testfunc.sequelize_caught_exception FROM pg_temp.testfunc();`;
-      options.exception = "WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL;";
-      valueQuery = `CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response ${quotedTable}, OUT sequelize_caught_exception text) RETURNS RECORD AS ${delimiter} BEGIN ${valueQuery} RETURNING * INTO response; EXCEPTION ${options.exception} END ${delimiter} LANGUAGE plpgsql; ${selectQuery} ${dropFunction}`;
-    } else {
-      valueQuery += returningFragment;
-      emptyQuery += returningFragment;
-    }
-    if (this._dialect.supports.returnIntoValues && options.returning) {
-      this.populateInsertQueryReturnIntoBinds(returningModelAttributes, returnTypes, bind.length, returnAttributes, options);
-    }
-    query = `${replacements.attributes.length ? valueQuery : emptyQuery}${returnAttributes.join(",")};`;
-    if (this._dialect.supports.finalTable) {
-      query = `SELECT * FROM FINAL TABLE(${replacements.attributes.length ? valueQuery : emptyQuery});`;
-    }
-    if (identityWrapperRequired && this._dialect.supports.autoIncrement.identityInsert) {
-      query = `SET IDENTITY_INSERT ${quotedTable} ON; ${query} SET IDENTITY_INSERT ${quotedTable} OFF;`;
-    }
-    const result = { query };
-    if (options.bindParam !== false) {
-      result.bind = bind;
-    }
-    return result;
-  }
-  bulkInsertQuery(tableName, fieldValueHashes, options, fieldMappedAttributes) {
-    options = options || {};
-    fieldMappedAttributes = fieldMappedAttributes || {};
-    const tuples = [];
-    const serials = {};
-    const allAttributes = [];
-    let onDuplicateKeyUpdate = "";
-    for (const fieldValueHash of fieldValueHashes) {
-      _.forOwn(fieldValueHash, (value, key) => {
-        if (!allAttributes.includes(key)) {
-          allAttributes.push(key);
-        }
-        if (fieldMappedAttributes[key] && fieldMappedAttributes[key].autoIncrement === true) {
-          serials[key] = true;
-        }
-      });
-    }
-    for (const fieldValueHash of fieldValueHashes) {
-      const values = allAttributes.map((key) => {
-        if (this._dialect.supports.bulkDefault && serials[key] === true) {
-          return fieldValueHash[key] != null ? fieldValueHash[key] : "DEFAULT";
-        }
-        return this.escape(fieldValueHash[key], fieldMappedAttributes[key], { context: "INSERT" });
-      });
-      tuples.push(`(${values.join(",")})`);
-    }
-    if (this._dialect.supports.inserts.updateOnDuplicate && options.updateOnDuplicate) {
-      if (this._dialect.supports.inserts.updateOnDuplicate == " ON CONFLICT DO UPDATE SET") {
-        const conflictKeys = options.upsertKeys.map((attr) => this.quoteIdentifier(attr));
-        const updateKeys = options.updateOnDuplicate.map((attr) => `${this.quoteIdentifier(attr)}=EXCLUDED.${this.quoteIdentifier(attr)}`);
-        let whereClause = false;
-        if (options.conflictWhere) {
-          if (!this._dialect.supports.inserts.onConflictWhere) {
-            throw new Error(`conflictWhere not supported for dialect ${this._dialect.name}`);
-          }
-          whereClause = this.whereQuery(options.conflictWhere, options);
-        }
-        onDuplicateKeyUpdate = [
-          "ON CONFLICT",
-          "(",
-          conflictKeys.join(","),
-          ")",
-          whereClause,
-          "DO UPDATE SET",
-          updateKeys.join(",")
-        ];
-      } else {
-        if (options.conflictWhere) {
-          throw new Error(`conflictWhere not supported for dialect ${this._dialect.name}`);
-        }
-        const valueKeys = options.updateOnDuplicate.map((attr) => `${this.quoteIdentifier(attr)}=VALUES(${this.quoteIdentifier(attr)})`);
-        onDuplicateKeyUpdate = `${this._dialect.supports.inserts.updateOnDuplicate} ${valueKeys.join(",")}`;
-      }
-    }
-    const ignoreDuplicates = options.ignoreDuplicates ? this._dialect.supports.inserts.ignoreDuplicates : "";
-    const attributes = allAttributes.map((attr) => this.quoteIdentifier(attr)).join(",");
-    const onConflictDoNothing = options.ignoreDuplicates ? this._dialect.supports.inserts.onConflictDoNothing : "";
-    let returning = "";
-    if (this._dialect.supports.returnValues && options.returning) {
-      const returnValues = this.generateReturnValues(fieldMappedAttributes, options);
-      returning += returnValues.returningFragment;
-    }
-    return Utils.joinSQLFragments([
-      "INSERT",
-      ignoreDuplicates,
-      "INTO",
-      this.quoteTable(tableName),
-      `(${attributes})`,
-      "VALUES",
-      tuples.join(","),
-      onDuplicateKeyUpdate,
-      onConflictDoNothing,
-      returning,
-      ";"
-    ]);
-  }
-  updateQuery(tableName, attrValueHash, where, options, attributes) {
-    options = options || {};
-    _.defaults(options, this.options);
-    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);
-    const values = [];
-    const bind = [];
-    const modelAttributeMap = {};
-    let outputFragment = "";
-    let tmpTable = "";
-    let suffix = "";
-    if (_.get(this, ["sequelize", "options", "dialectOptions", "prependSearchPath"]) || options.searchPath) {
-      options.bindParam = false;
-    }
-    const bindParam = options.bindParam === void 0 ? this.bindParam(bind) : options.bindParam;
-    if (this._dialect.supports["LIMIT ON UPDATE"] && options.limit) {
-      if (!["mssql", "db2", "oracle"].includes(this.dialect)) {
-        suffix = ` LIMIT ${this.escape(options.limit)} `;
-      } else if (this.dialect === "oracle") {
-        if (where && (where.length && where.length > 0 || Object.keys(where).length > 0)) {
-          suffix += " AND ";
-        } else {
-          suffix += " WHERE ";
-        }
-        suffix += `rownum <= ${this.escape(options.limit)} `;
-      }
-    }
-    if (this._dialect.supports.returnValues && options.returning) {
-      const returnValues = this.generateReturnValues(attributes, options);
-      suffix += returnValues.returningFragment;
-      tmpTable = returnValues.tmpTable || "";
-      outputFragment = returnValues.outputFragment || "";
-      if (!this._dialect.supports.returnValues.output && options.returning) {
-        options.mapToModel = true;
-      }
-    }
-    if (attributes) {
-      _.each(attributes, (attribute, key) => {
-        modelAttributeMap[key] = attribute;
-        if (attribute.field) {
-          modelAttributeMap[attribute.field] = attribute;
-        }
-      });
-    }
-    for (const key in attrValueHash) {
-      if (modelAttributeMap && modelAttributeMap[key] && modelAttributeMap[key].autoIncrement === true && !this._dialect.supports.autoIncrement.update) {
-        continue;
-      }
-      const value = attrValueHash[key];
-      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {
-        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" })}`);
-      } else {
-        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" }, bindParam)}`);
-      }
-    }
-    const whereOptions = __spreadProps(__spreadValues({}, options), { bindParam });
-    if (values.length === 0) {
-      return "";
-    }
-    const query = `${tmpTable}UPDATE ${this.quoteTable(tableName)} SET ${values.join(",")}${outputFragment} ${this.whereQuery(where, whereOptions)}${suffix}`.trim();
-    const result = { query };
-    if (options.bindParam !== false) {
-      result.bind = bind;
-    }
-    return result;
-  }
-  arithmeticQuery(operator, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {
-    options = options || {};
-    _.defaults(options, { returning: true });
-    extraAttributesToBeUpdated = Utils.removeNullValuesFromHash(extraAttributesToBeUpdated, this.options.omitNull);
-    let outputFragment = "";
-    let returningFragment = "";
-    if (this._dialect.supports.returnValues && options.returning) {
-      const returnValues = this.generateReturnValues(null, options);
-      outputFragment = returnValues.outputFragment;
-      returningFragment = returnValues.returningFragment;
-    }
-    const updateSetSqlFragments = [];
-    for (const field in incrementAmountsByField) {
-      const incrementAmount = incrementAmountsByField[field];
-      const quotedField = this.quoteIdentifier(field);
-      const escapedAmount = this.escape(incrementAmount);
-      updateSetSqlFragments.push(`${quotedField}=${quotedField}${operator} ${escapedAmount}`);
-    }
-    for (const field in extraAttributesToBeUpdated) {
-      const newValue = extraAttributesToBeUpdated[field];
-      const quotedField = this.quoteIdentifier(field);
-      const escapedValue = this.escape(newValue);
-      updateSetSqlFragments.push(`${quotedField}=${escapedValue}`);
-    }
-    return Utils.joinSQLFragments([
-      "UPDATE",
-      this.quoteTable(tableName),
-      "SET",
-      updateSetSqlFragments.join(","),
-      outputFragment,
-      this.whereQuery(where),
-      returningFragment
-    ]);
-  }
-  addIndexQuery(tableName, attributes, options, rawTablename) {
-    options = options || {};
-    if (!Array.isArray(attributes)) {
-      options = attributes;
-      attributes = void 0;
-    } else {
-      options.fields = attributes;
-    }
-    options.prefix = options.prefix || rawTablename || tableName;
-    if (options.prefix && typeof options.prefix === "string") {
-      options.prefix = options.prefix.replace(/\./g, "_");
-      options.prefix = options.prefix.replace(/("|')/g, "");
-    }
-    const fieldsSql = options.fields.map((field) => {
-      if (field instanceof Utils.SequelizeMethod) {
-        return this.handleSequelizeMethod(field);
-      }
-      if (typeof field === "string") {
-        field = {
-          name: field
-        };
-      }
-      let result = "";
-      if (field.attribute) {
-        field.name = field.attribute;
-      }
-      if (!field.name) {
-        throw new Error(`The following index field has no name: ${util.inspect(field)}`);
-      }
-      result += this.quoteIdentifier(field.name);
-      if (this._dialect.supports.index.collate && field.collate) {
-        result += ` COLLATE ${this.quoteIdentifier(field.collate)}`;
-      }
-      if (this._dialect.supports.index.operator) {
-        const operator = field.operator || options.operator;
-        if (operator) {
-          result += ` ${operator}`;
-        }
-      }
-      if (this._dialect.supports.index.length && field.length) {
-        result += `(${field.length})`;
-      }
-      if (field.order) {
-        result += ` ${field.order}`;
-      }
-      return result;
-    });
-    if (!options.name) {
-      options = Utils.nameIndex(options, options.prefix);
-    }
-    options = Model._conformIndex(options);
-    if (!this._dialect.supports.index.type) {
-      delete options.type;
-    }
-    if (options.where) {
-      options.where = this.whereQuery(options.where);
-    }
-    if (typeof tableName === "string") {
-      tableName = this.quoteIdentifiers(tableName);
-    } else {
-      tableName = this.quoteTable(tableName);
-    }
-    const concurrently = this._dialect.supports.index.concurrently && options.concurrently ? "CONCURRENTLY" : void 0;
-    let ind;
-    if (this._dialect.supports.indexViaAlter) {
-      ind = [
-        "ALTER TABLE",
-        tableName,
-        concurrently,
-        "ADD"
-      ];
-    } else {
-      ind = ["CREATE"];
-    }
-    ind = ind.concat(options.unique ? "UNIQUE" : "", options.type, "INDEX", !this._dialect.supports.indexViaAlter ? concurrently : void 0, this.quoteIdentifiers(options.name), this._dialect.supports.index.using === 1 && options.using ? `USING ${options.using}` : "", !this._dialect.supports.indexViaAlter ? `ON ${tableName}` : void 0, this._dialect.supports.index.using === 2 && options.using ? `USING ${options.using}` : "", `(${fieldsSql.join(", ")})`, this._dialect.supports.index.parser && options.parser ? `WITH PARSER ${options.parser}` : void 0, this._dialect.supports.index.where && options.where ? options.where : void 0);
-    return _.compact(ind).join(" ");
-  }
-  addConstraintQuery(tableName, options) {
-    if (typeof tableName === "string") {
-      tableName = this.quoteIdentifiers(tableName);
-    } else {
-      tableName = this.quoteTable(tableName);
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      tableName,
-      "ADD",
-      this.getConstraintSnippet(tableName, options || {}),
-      ";"
-    ]);
-  }
-  getConstraintSnippet(tableName, options) {
-    let constraintSnippet, constraintName;
-    const fieldsSql = options.fields.map((field) => {
-      if (typeof field === "string") {
-        return this.quoteIdentifier(field);
-      }
-      if (field instanceof Utils.SequelizeMethod) {
-        return this.handleSequelizeMethod(field);
-      }
-      if (field.attribute) {
-        field.name = field.attribute;
-      }
-      if (!field.name) {
-        throw new Error(`The following index field has no name: ${field}`);
-      }
-      return this.quoteIdentifier(field.name);
-    });
-    const fieldsSqlQuotedString = fieldsSql.join(", ");
-    const fieldsSqlString = fieldsSql.join("_");
-    switch (options.type.toUpperCase()) {
-      case "UNIQUE":
-        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_uk`);
-        constraintSnippet = `CONSTRAINT ${constraintName} UNIQUE (${fieldsSqlQuotedString})`;
-        break;
-      case "CHECK":
-        options.where = this.whereItemsQuery(options.where);
-        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_ck`);
-        constraintSnippet = `CONSTRAINT ${constraintName} CHECK (${options.where})`;
-        break;
-      case "DEFAULT":
-        if (options.defaultValue === void 0) {
-          throw new Error("Default value must be specified for DEFAULT CONSTRAINT");
-        }
-        if (this._dialect.name !== "mssql") {
-          throw new Error("Default constraints are supported only for MSSQL dialect.");
-        }
-        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_df`);
-        constraintSnippet = `CONSTRAINT ${constraintName} DEFAULT (${this.escape(options.defaultValue)}) FOR ${fieldsSql[0]}`;
-        break;
-      case "PRIMARY KEY":
-        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_pk`);
-        constraintSnippet = `CONSTRAINT ${constraintName} PRIMARY KEY (${fieldsSqlQuotedString})`;
-        break;
-      case "FOREIGN KEY":
-        const references = options.references;
-        if (!references || !references.table || !(references.field || references.fields)) {
-          throw new Error("references object with table and field must be specified");
-        }
-        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_${references.table}_fk`);
-        const quotedReferences = typeof references.field !== "undefined" ? this.quoteIdentifier(references.field) : references.fields.map((f) => this.quoteIdentifier(f)).join(", ");
-        const referencesSnippet = `${this.quoteTable(references.table)} (${quotedReferences})`;
-        constraintSnippet = `CONSTRAINT ${constraintName} `;
-        constraintSnippet += `FOREIGN KEY (${fieldsSqlQuotedString}) REFERENCES ${referencesSnippet}`;
-        if (options.onUpdate) {
-          constraintSnippet += ` ON UPDATE ${options.onUpdate.toUpperCase()}`;
-        }
-        if (options.onDelete) {
-          constraintSnippet += ` ON DELETE ${options.onDelete.toUpperCase()}`;
-        }
-        break;
-      default:
-        throw new Error(`${options.type} is invalid.`);
-    }
-    if (options.deferrable && ["UNIQUE", "PRIMARY KEY", "FOREIGN KEY"].includes(options.type.toUpperCase())) {
-      constraintSnippet += ` ${this.deferConstraintsQuery(options)}`;
-    }
-    return constraintSnippet;
-  }
-  removeConstraintQuery(tableName, constraintName) {
-    if (typeof tableName === "string") {
-      tableName = this.quoteIdentifiers(tableName);
-    } else {
-      tableName = this.quoteTable(tableName);
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      tableName,
-      "DROP CONSTRAINT",
-      this.quoteIdentifiers(constraintName)
-    ]);
-  }
-  quote(collection, parent, connector) {
-    const validOrderOptions = [
-      "ASC",
-      "DESC",
-      "ASC NULLS LAST",
-      "DESC NULLS LAST",
-      "ASC NULLS FIRST",
-      "DESC NULLS FIRST",
-      "NULLS FIRST",
-      "NULLS LAST"
-    ];
-    connector = connector || ".";
-    if (typeof collection === "string") {
-      return this.quoteIdentifiers(collection);
-    }
-    if (Array.isArray(collection)) {
-      collection.forEach((item2, index) => {
-        const previous = collection[index - 1];
-        let previousAssociation;
-        let previousModel;
-        if (!previous && parent !== void 0) {
-          previousModel = parent;
-        } else if (previous && previous instanceof Association) {
-          previousAssociation = previous;
-          previousModel = previous.target;
-        }
-        if (previousModel && previousModel.prototype instanceof Model) {
-          let model;
-          let as;
-          if (typeof item2 === "function" && item2.prototype instanceof Model) {
-            model = item2;
-          } else if (_.isPlainObject(item2) && item2.model && item2.model.prototype instanceof Model) {
-            model = item2.model;
-            as = item2.as;
-          }
-          if (model) {
-            if (!as && previousAssociation && previousAssociation instanceof Association && previousAssociation.through && previousAssociation.through.model === model) {
-              item2 = new Association(previousModel, model, {
-                as: model.name
-              });
-            } else {
-              item2 = previousModel.getAssociationForAlias(model, as);
-              if (!item2) {
-                item2 = previousModel.getAssociationForAlias(model, model.name);
-              }
-            }
-            if (!(item2 instanceof Association)) {
-              throw new Error(util.format("Unable to find a valid association for model, '%s'", model.name));
-            }
-          }
-        }
-        if (typeof item2 === "string") {
-          const orderIndex = validOrderOptions.indexOf(item2.toUpperCase());
-          if (index > 0 && orderIndex !== -1) {
-            item2 = this.sequelize.literal(` ${validOrderOptions[orderIndex]}`);
-          } else if (previousModel && previousModel.prototype instanceof Model) {
-            if (previousModel.associations !== void 0 && previousModel.associations[item2]) {
-              item2 = previousModel.associations[item2];
-            } else if (previousModel.rawAttributes !== void 0 && previousModel.rawAttributes[item2] && item2 !== previousModel.rawAttributes[item2].field) {
-              item2 = previousModel.rawAttributes[item2].field;
-            } else if (item2.includes(".") && previousModel.rawAttributes !== void 0) {
-              const itemSplit = item2.split(".");
-              if (previousModel.rawAttributes[itemSplit[0]].type instanceof DataTypes.JSON) {
-                const identifier = this.quoteIdentifiers(`${previousModel.name}.${previousModel.rawAttributes[itemSplit[0]].field}`);
-                const path = itemSplit.slice(1);
-                item2 = this.jsonPathExtractionQuery(identifier, path);
-                item2 = this.sequelize.literal(item2);
-              }
-            }
-          }
-        }
-        collection[index] = item2;
-      }, this);
-      const collectionLength = collection.length;
-      const tableNames = [];
-      let item;
-      let i = 0;
-      for (i = 0; i < collectionLength - 1; i++) {
-        item = collection[i];
-        if (typeof item === "string" || item._modelAttribute || item instanceof Utils.SequelizeMethod) {
-          break;
-        } else if (item instanceof Association) {
-          tableNames[i] = item.as;
-        }
-      }
-      let sql = "";
-      if (i > 0) {
-        sql += `${this.quoteIdentifier(tableNames.join(connector))}.`;
-      } else if (typeof collection[0] === "string" && parent) {
-        sql += `${this.quoteIdentifier(parent.name)}.`;
-      }
-      collection.slice(i).forEach((collectionItem) => {
-        sql += this.quote(collectionItem, parent, connector);
-      }, this);
-      return sql;
-    }
-    if (collection._modelAttribute) {
-      return `${this.quoteTable(collection.Model.name)}.${this.quoteIdentifier(collection.fieldName)}`;
-    }
-    if (collection instanceof Utils.SequelizeMethod) {
-      return this.handleSequelizeMethod(collection);
-    }
-    if (_.isPlainObject(collection) && collection.raw) {
-      throw new Error('The `{raw: "..."}` syntax is no longer supported.  Use `sequelize.literal` instead.');
-    }
-    throw new Error(`Unknown structure passed to order / group: ${util.inspect(collection)}`);
-  }
-  _initQuoteIdentifier() {
-    this._quoteIdentifier = this.quoteIdentifier;
-    this.quoteIdentifier = function(identifier, force) {
-      if (identifier === "*")
-        return identifier;
-      return this._quoteIdentifier(identifier, force);
-    };
-  }
-  quoteIdentifier(identifier, force) {
-    throw new Error(`quoteIdentifier for Dialect "${this.dialect}" is not implemented`);
-  }
-  quoteIdentifiers(identifiers) {
-    if (identifiers.includes(".")) {
-      identifiers = identifiers.split(".");
-      const head = identifiers.slice(0, identifiers.length - 1).join("->");
-      const tail = identifiers[identifiers.length - 1];
-      return `${this.quoteIdentifier(head)}.${this.quoteIdentifier(tail)}`;
-    }
-    return this.quoteIdentifier(identifiers);
-  }
-  quoteAttribute(attribute, model) {
-    if (model && attribute in model.rawAttributes) {
-      return this.quoteIdentifier(attribute);
-    }
-    return this.quoteIdentifiers(attribute);
-  }
-  getAliasToken() {
-    return "AS";
-  }
-  quoteTable(param, alias) {
-    let table = "";
-    if (alias === true) {
-      alias = param.as || param.name || param;
-    }
-    if (_.isObject(param)) {
-      if (this._dialect.supports.schemas) {
-        if (param.schema) {
-          table += `${this.quoteIdentifier(param.schema)}.`;
-        }
-        table += this.quoteIdentifier(param.tableName);
-      } else {
-        if (param.schema) {
-          table += param.schema + (param.delimiter || ".");
-        }
-        table += param.tableName;
-        table = this.quoteIdentifier(table);
-      }
-    } else {
-      table = this.quoteIdentifier(param);
-    }
-    if (alias) {
-      table += ` ${this.getAliasToken()} ${this.quoteIdentifier(alias)}`;
-    }
-    return table;
-  }
-  escape(value, field, options) {
-    options = options || {};
-    if (value !== null && value !== void 0) {
-      if (value instanceof Utils.SequelizeMethod) {
-        return this.handleSequelizeMethod(value);
-      }
-      if (field && field.type) {
-        if (field.type instanceof DataTypes.STRING && ["mysql", "mariadb"].includes(this.dialect) && ["number", "boolean"].includes(typeof value)) {
-          value = String(Number(value));
-        }
-        this.validate(value, field, options);
-        if (field.type.stringify) {
-          const simpleEscape = (escVal) => SqlString.escape(escVal, this.options.timezone, this.dialect);
-          value = field.type.stringify(value, { escape: simpleEscape, field, timezone: this.options.timezone, operation: options.operation });
-          if (field.type.escape === false) {
-            return value;
-          }
-        }
-      }
-    }
-    return SqlString.escape(value, this.options.timezone, this.dialect);
-  }
-  bindParam(bind) {
-    return (value) => {
-      bind.push(value);
-      return `$${bind.length}`;
-    };
-  }
-  format(value, field, options, bindParam) {
-    options = options || {};
-    if (value !== null && value !== void 0) {
-      if (value instanceof Utils.SequelizeMethod) {
-        throw new Error("Cannot pass SequelizeMethod as a bind parameter - use escape instead");
-      }
-      if (field && field.type) {
-        this.validate(value, field, options);
-        if (field.type.bindParam) {
-          return field.type.bindParam(value, { escape: _.identity, field, timezone: this.options.timezone, operation: options.operation, bindParam });
-        }
-      }
-    }
-    return bindParam(value);
-  }
-  validate(value, field, options) {
-    if (this.typeValidation && field.type.validate && value) {
-      try {
-        if (options.isList && Array.isArray(value)) {
-          for (const item of value) {
-            field.type.validate(item, options);
-          }
-        } else {
-          field.type.validate(value, options);
-        }
-      } catch (error) {
-        if (error instanceof sequelizeError.ValidationError) {
-          error.errors.push(new sequelizeError.ValidationErrorItem(error.message, "Validation error", field.fieldName, value, null, `${field.type.key} validator`));
-        }
-        throw error;
-      }
-    }
-  }
-  isIdentifierQuoted(identifier) {
-    return /^\s*(?:([`"'])(?:(?!\1).|\1{2})*\1\.?)+\s*$/i.test(identifier);
-  }
-  jsonPathExtractionQuery(column, path, isJson) {
-    let paths = _.toPath(path);
-    let pathStr;
-    const quotedColumn = this.isIdentifierQuoted(column) ? column : this.quoteIdentifier(column);
-    switch (this.dialect) {
-      case "mysql":
-      case "mariadb":
-      case "sqlite":
-        if (this.dialect === "mysql") {
-          paths = paths.map((subPath) => {
-            return /\D/.test(subPath) ? Utils.addTicks(subPath, '"') : subPath;
-          });
-        }
-        pathStr = this.escape(["$"].concat(paths).join(".").replace(/\.(\d+)(?:(?=\.)|$)/g, (__, digit) => `[${digit}]`));
-        if (this.dialect === "sqlite") {
-          return `json_extract(${quotedColumn},${pathStr})`;
-        }
-        return `json_unquote(json_extract(${quotedColumn},${pathStr}))`;
-      case "postgres":
-        const join = isJson ? "#>" : "#>>";
-        pathStr = this.escape(`{${paths.join(",")}}`);
-        return `(${quotedColumn}${join}${pathStr})`;
-      default:
-        throw new Error(`Unsupported ${this.dialect} for JSON operations`);
-    }
-  }
-  selectQuery(tableName, options, model) {
-    options = options || {};
-    const limit = options.limit;
-    const mainQueryItems = [];
-    const subQueryItems = [];
-    const subQuery = options.subQuery === void 0 ? limit && options.hasMultiAssociation : options.subQuery;
-    const attributes = {
-      main: options.attributes && options.attributes.slice(),
-      subQuery: null
-    };
-    const mainTable = {
-      name: tableName,
-      quotedName: null,
-      as: null,
-      model
-    };
-    const topLevelInfo = {
-      names: mainTable,
-      options,
-      subQuery
-    };
-    let mainJoinQueries = [];
-    let subJoinQueries = [];
-    let query;
-    if (this.options.minifyAliases && !options.aliasesMapping) {
-      options.aliasesMapping = /* @__PURE__ */ new Map();
-      options.aliasesByTable = {};
-      options.includeAliases = /* @__PURE__ */ new Map();
-    }
-    if (options.tableAs) {
-      mainTable.as = this.quoteIdentifier(options.tableAs);
-    } else if (!Array.isArray(mainTable.name) && mainTable.model) {
-      mainTable.as = this.quoteIdentifier(mainTable.model.name);
-    }
-    mainTable.quotedName = !Array.isArray(mainTable.name) ? this.quoteTable(mainTable.name) : tableName.map((t) => {
-      return Array.isArray(t) ? this.quoteTable(t[0], t[1]) : this.quoteTable(t, true);
-    }).join(", ");
-    if (subQuery && attributes.main) {
-      for (const keyAtt of mainTable.model.primaryKeyAttributes) {
-        if (!attributes.main.some((attr) => keyAtt === attr || keyAtt === attr[0] || keyAtt === attr[1])) {
-          attributes.main.push(mainTable.model.rawAttributes[keyAtt].field ? [keyAtt, mainTable.model.rawAttributes[keyAtt].field] : keyAtt);
-        }
-      }
-    }
-    attributes.main = this.escapeAttributes(attributes.main, options, mainTable.as);
-    attributes.main = attributes.main || (options.include ? [`${mainTable.as}.*`] : ["*"]);
-    if (subQuery || options.groupedLimit) {
-      attributes.subQuery = attributes.main;
-      attributes.main = [`${mainTable.as || mainTable.quotedName}.*`];
-    }
-    if (options.include) {
-      for (const include of options.include) {
-        if (include.separate) {
-          continue;
-        }
-        const joinQueries = this.generateInclude(include, { externalAs: mainTable.as, internalAs: mainTable.as }, topLevelInfo);
-        subJoinQueries = subJoinQueries.concat(joinQueries.subQuery);
-        mainJoinQueries = mainJoinQueries.concat(joinQueries.mainQuery);
-        if (joinQueries.attributes.main.length > 0) {
-          attributes.main = _.uniq(attributes.main.concat(joinQueries.attributes.main));
-        }
-        if (joinQueries.attributes.subQuery.length > 0) {
-          attributes.subQuery = _.uniq(attributes.subQuery.concat(joinQueries.attributes.subQuery));
-        }
-      }
-    }
-    if (subQuery) {
-      subQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.subQuery, mainTable.quotedName, mainTable.as));
-      subQueryItems.push(subJoinQueries.join(""));
-    } else {
-      if (options.groupedLimit) {
-        if (!mainTable.as) {
-          mainTable.as = mainTable.quotedName;
-        }
-        const where = __spreadValues({}, options.where);
-        let groupedLimitOrder, whereKey, include, groupedTableName = mainTable.as;
-        if (typeof options.groupedLimit.on === "string") {
-          whereKey = options.groupedLimit.on;
-        } else if (options.groupedLimit.on instanceof HasMany) {
-          whereKey = options.groupedLimit.on.foreignKeyField;
-        }
-        if (options.groupedLimit.on instanceof BelongsToMany) {
-          groupedTableName = options.groupedLimit.on.manyFromSource.as;
-          const groupedLimitOptions = Model._validateIncludedElements({
-            include: [{
-              association: options.groupedLimit.on.manyFromSource,
-              duplicating: false,
-              required: true,
-              where: __spreadValues({
-                [Op.placeholder]: true
-              }, options.groupedLimit.through && options.groupedLimit.through.where)
-            }],
-            model
-          });
-          options.hasJoin = true;
-          options.hasMultiAssociation = true;
-          options.includeMap = Object.assign(groupedLimitOptions.includeMap, options.includeMap);
-          options.includeNames = groupedLimitOptions.includeNames.concat(options.includeNames || []);
-          include = groupedLimitOptions.include;
-          if (Array.isArray(options.order)) {
-            options.order.forEach((order, i) => {
-              if (Array.isArray(order)) {
-                order = order[0];
-              }
-              let alias = `subquery_order_${i}`;
-              options.attributes.push([order, alias]);
-              alias = this.sequelize.literal(this.quote(alias));
-              if (Array.isArray(options.order[i])) {
-                options.order[i][0] = alias;
-              } else {
-                options.order[i] = alias;
-              }
-            });
-            groupedLimitOrder = options.order;
-          }
-        } else {
-          groupedLimitOrder = options.order;
-          if (!this._dialect.supports.topLevelOrderByRequired) {
-            delete options.order;
-          }
-          where[Op.placeholder] = true;
-        }
-        const baseQuery = `SELECT * FROM (${this.selectQuery(tableName, {
-          attributes: options.attributes,
-          offset: options.offset,
-          limit: options.groupedLimit.limit,
-          order: groupedLimitOrder,
-          aliasesMapping: options.aliasesMapping,
-          aliasesByTable: options.aliasesByTable,
-          where,
-          include,
-          model
-        }, model).replace(/;$/, "")}) ${this.getAliasToken()} sub`;
-        const placeHolder = this.whereItemQuery(Op.placeholder, true, { model });
-        const splicePos = baseQuery.indexOf(placeHolder);
-        mainQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.main, `(${options.groupedLimit.values.map((value) => {
-          let groupWhere;
-          if (whereKey) {
-            groupWhere = {
-              [whereKey]: value
-            };
-          }
-          if (include) {
-            groupWhere = {
-              [options.groupedLimit.on.foreignIdentifierField]: value
-            };
-          }
-          return Utils.spliceStr(baseQuery, splicePos, placeHolder.length, this.getWhereConditions(groupWhere, groupedTableName));
-        }).join(this._dialect.supports["UNION ALL"] ? " UNION ALL " : " UNION ")})`, mainTable.as));
-      } else {
-        mainQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.main, mainTable.quotedName, mainTable.as));
-      }
-      mainQueryItems.push(mainJoinQueries.join(""));
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "where") && !options.groupedLimit) {
-      options.where = this.getWhereConditions(options.where, mainTable.as || tableName, model, options);
-      if (options.where) {
-        if (subQuery) {
-          subQueryItems.push(` WHERE ${options.where}`);
-        } else {
-          mainQueryItems.push(` WHERE ${options.where}`);
-          mainQueryItems.forEach((value, key) => {
-            if (value.startsWith("SELECT")) {
-              mainQueryItems[key] = this.selectFromTableFragment(options, model, attributes.main, mainTable.quotedName, mainTable.as, options.where);
-            }
-          });
-        }
-      }
-    }
-    if (options.group) {
-      options.group = Array.isArray(options.group) ? options.group.map((t) => this.aliasGrouping(t, model, mainTable.as, options)).join(", ") : this.aliasGrouping(options.group, model, mainTable.as, options);
-      if (subQuery && options.group) {
-        subQueryItems.push(` GROUP BY ${options.group}`);
-      } else if (options.group) {
-        mainQueryItems.push(` GROUP BY ${options.group}`);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(options, "having")) {
-      options.having = this.getWhereConditions(options.having, tableName, model, options, false);
-      if (options.having) {
-        if (subQuery) {
-          subQueryItems.push(` HAVING ${options.having}`);
-        } else {
-          mainQueryItems.push(` HAVING ${options.having}`);
-        }
-      }
-    }
-    if (options.order) {
-      const orders = this.getQueryOrders(options, model, subQuery);
-      if (orders.mainQueryOrder.length) {
-        mainQueryItems.push(` ORDER BY ${orders.mainQueryOrder.join(", ")}`);
-      }
-      if (orders.subQueryOrder.length) {
-        subQueryItems.push(` ORDER BY ${orders.subQueryOrder.join(", ")}`);
-      }
-    }
-    const limitOrder = this.addLimitAndOffset(options, mainTable.model);
-    if (limitOrder && !options.groupedLimit) {
-      if (subQuery) {
-        subQueryItems.push(limitOrder);
-      } else {
-        mainQueryItems.push(limitOrder);
-      }
-    }
-    if (subQuery) {
-      this._throwOnEmptyAttributes(attributes.main, { modelName: model && model.name, as: mainTable.as });
-      query = `SELECT ${attributes.main.join(", ")} FROM (${subQueryItems.join("")}) ${this.getAliasToken()} ${mainTable.as}${mainJoinQueries.join("")}${mainQueryItems.join("")}`;
-    } else {
-      query = mainQueryItems.join("");
-    }
-    if (options.lock && this._dialect.supports.lock) {
-      let lock = options.lock;
-      if (typeof options.lock === "object") {
-        lock = options.lock.level;
-      }
-      if (this._dialect.supports.lockKey && ["KEY SHARE", "NO KEY UPDATE"].includes(lock)) {
-        query += ` FOR ${lock}`;
-      } else if (lock === "SHARE") {
-        query += ` ${this._dialect.supports.forShare}`;
-      } else {
-        query += " FOR UPDATE";
-      }
-      if (this._dialect.supports.lockOf && options.lock.of && options.lock.of.prototype instanceof Model) {
-        query += ` OF ${this.quoteTable(options.lock.of.name)}`;
-      }
-      if (this._dialect.supports.skipLocked && options.skipLocked) {
-        query += " SKIP LOCKED";
-      }
-    }
-    return `${query};`;
-  }
-  aliasGrouping(field, model, tableName, options) {
-    const src = Array.isArray(field) ? field[0] : field;
-    return this.quote(this._getAliasForField(tableName, src, options) || src, model);
-  }
-  escapeAttributes(attributes, options, mainTableAs) {
-    return attributes && attributes.map((attr) => {
-      let addTable = true;
-      if (attr instanceof Utils.SequelizeMethod) {
-        return this.handleSequelizeMethod(attr);
-      }
-      if (Array.isArray(attr)) {
-        if (attr.length !== 2) {
-          throw new Error(`${JSON.stringify(attr)} is not a valid attribute definition. Please use the following format: ['attribute definition', 'alias']`);
-        }
-        attr = attr.slice();
-        if (attr[0] instanceof Utils.SequelizeMethod) {
-          attr[0] = this.handleSequelizeMethod(attr[0]);
-          addTable = false;
-        } else if (this.options.attributeBehavior === "escape" || !attr[0].includes("(") && !attr[0].includes(")")) {
-          attr[0] = this.quoteIdentifier(attr[0]);
-        } else if (this.options.attributeBehavior !== "unsafe-legacy") {
-          throw new Error(`Attributes cannot include parentheses in Sequelize 6:
-In order to fix the vulnerability CVE-2023-22578, we had to remove support for treating attributes as raw SQL if they included parentheses.
-Sequelize 7 escapes all attributes, even if they include parentheses.
-For Sequelize 6, because we're introducing this change in a minor release, we've opted for throwing an error instead of silently escaping the attribute as a way to warn you about this change.
-
-Here is what you can do to fix this error:
-- Wrap the attribute in a literal() call. This will make Sequelize treat it as raw SQL.
-- Set the "attributeBehavior" sequelize option to "escape" to make Sequelize escape the attribute, like in Sequelize v7. We highly recommend this option.
-- Set the "attributeBehavior" sequelize option to "unsafe-legacy" to make Sequelize escape the attribute, like in Sequelize v5.
-
-We sincerely apologize for the inconvenience this may cause you. You can find more information on the following threads:
-https://github.com/sequelize/sequelize/security/advisories/GHSA-f598-mfpv-gmfx
-https://github.com/sequelize/sequelize/discussions/15694`);
-        }
-        let alias = attr[1];
-        if (this.options.minifyAliases) {
-          alias = this._getMinifiedAlias(alias, mainTableAs, options);
-        }
-        attr = [attr[0], this.quoteIdentifier(alias)].join(" AS ");
-      } else {
-        attr = !attr.includes(Utils.TICK_CHAR) && !attr.includes('"') ? this.quoteAttribute(attr, options.model) : this.escape(attr);
-      }
-      if (!_.isEmpty(options.include) && (!attr.includes(".") || options.dotNotation) && addTable) {
-        attr = `${mainTableAs}.${attr}`;
-      }
-      return attr;
-    });
-  }
-  generateInclude(include, parentTableName, topLevelInfo) {
-    const joinQueries = {
-      mainQuery: [],
-      subQuery: []
-    };
-    const mainChildIncludes = [];
-    const subChildIncludes = [];
-    let requiredMismatch = false;
-    const includeAs = {
-      internalAs: include.as,
-      externalAs: include.as
-    };
-    const attributes = {
-      main: [],
-      subQuery: []
-    };
-    let joinQuery;
-    topLevelInfo.options.keysEscaped = true;
-    if (topLevelInfo.names.name !== parentTableName.externalAs && topLevelInfo.names.as !== parentTableName.externalAs) {
-      includeAs.internalAs = `${parentTableName.internalAs}->${include.as}`;
-      includeAs.externalAs = `${parentTableName.externalAs}.${include.as}`;
-    }
-    if (topLevelInfo.options.includeIgnoreAttributes !== false) {
-      include.model._expandAttributes(include);
-      Utils.mapFinderOptions(include, include.model);
-      const includeAttributes = include.attributes.map((attr) => {
-        let attrAs = attr;
-        let verbatim = false;
-        if (Array.isArray(attr) && attr.length === 2) {
-          if (attr[0] instanceof Utils.SequelizeMethod && (attr[0] instanceof Utils.Literal || attr[0] instanceof Utils.Cast || attr[0] instanceof Utils.Fn)) {
-            verbatim = true;
-          }
-          attr = attr.map((attr2) => attr2 instanceof Utils.SequelizeMethod ? this.handleSequelizeMethod(attr2) : attr2);
-          attrAs = attr[1];
-          attr = attr[0];
-        }
-        if (attr instanceof Utils.Literal) {
-          return attr.val;
-        }
-        if (attr instanceof Utils.Cast || attr instanceof Utils.Fn) {
-          throw new Error("Tried to select attributes using Sequelize.cast or Sequelize.fn without specifying an alias for the result, during eager loading. This means the attribute will not be added to the returned instance");
-        }
-        let prefix;
-        if (verbatim === true) {
-          prefix = attr;
-        } else if (/#>>|->>/.test(attr)) {
-          prefix = `(${this.quoteIdentifier(includeAs.internalAs)}.${attr.replace(/\(|\)/g, "")})`;
-        } else if (/json_extract\(/.test(attr)) {
-          prefix = attr.replace(/json_extract\(/i, `json_extract(${this.quoteIdentifier(includeAs.internalAs)}.`);
-        } else if (/json_value\(/.test(attr)) {
-          prefix = attr.replace(/json_value\(/i, `json_value(${this.quoteIdentifier(includeAs.internalAs)}.`);
-        } else {
-          prefix = `${this.quoteIdentifier(includeAs.internalAs)}.${this.quoteIdentifier(attr)}`;
-        }
-        let alias = `${includeAs.externalAs}.${attrAs}`;
-        if (this.options.minifyAliases) {
-          alias = this._getMinifiedAlias(alias, includeAs.internalAs, topLevelInfo.options);
-        }
-        return Utils.joinSQLFragments([
-          prefix,
-          "AS",
-          this.quoteIdentifier(alias, true)
-        ]);
-      });
-      if (include.subQuery && topLevelInfo.subQuery) {
-        for (const attr of includeAttributes) {
-          attributes.subQuery.push(attr);
-        }
-      } else {
-        for (const attr of includeAttributes) {
-          attributes.main.push(attr);
-        }
-      }
-    }
-    if (include.through) {
-      joinQuery = this.generateThroughJoin(include, includeAs, parentTableName.internalAs, topLevelInfo);
-    } else {
-      this._generateSubQueryFilter(include, includeAs, topLevelInfo);
-      joinQuery = this.generateJoin(include, topLevelInfo);
-    }
-    if (joinQuery.attributes.main.length > 0) {
-      attributes.main = attributes.main.concat(joinQuery.attributes.main);
-    }
-    if (joinQuery.attributes.subQuery.length > 0) {
-      attributes.subQuery = attributes.subQuery.concat(joinQuery.attributes.subQuery);
-    }
-    if (include.include) {
-      for (const childInclude of include.include) {
-        if (childInclude.separate || childInclude._pseudo) {
-          continue;
-        }
-        const childJoinQueries = this.generateInclude(childInclude, includeAs, topLevelInfo);
-        if (include.required === false && childInclude.required === true) {
-          requiredMismatch = true;
-        }
-        if (childInclude.subQuery && topLevelInfo.subQuery) {
-          subChildIncludes.push(childJoinQueries.subQuery);
-        }
-        if (childJoinQueries.mainQuery) {
-          mainChildIncludes.push(childJoinQueries.mainQuery);
-        }
-        if (childJoinQueries.attributes.main.length > 0) {
-          attributes.main = attributes.main.concat(childJoinQueries.attributes.main);
-        }
-        if (childJoinQueries.attributes.subQuery.length > 0) {
-          attributes.subQuery = attributes.subQuery.concat(childJoinQueries.attributes.subQuery);
-        }
-      }
-    }
-    if (include.subQuery && topLevelInfo.subQuery) {
-      if (requiredMismatch && subChildIncludes.length > 0) {
-        joinQueries.subQuery.push(` ${joinQuery.join} ( ${joinQuery.body}${subChildIncludes.join("")} ) ON ${joinQuery.condition}`);
-      } else {
-        joinQueries.subQuery.push(` ${joinQuery.join} ${joinQuery.body} ON ${joinQuery.condition}`);
-        if (subChildIncludes.length > 0) {
-          joinQueries.subQuery.push(subChildIncludes.join(""));
-        }
-      }
-      joinQueries.mainQuery.push(mainChildIncludes.join(""));
-    } else {
-      if (requiredMismatch && mainChildIncludes.length > 0) {
-        joinQueries.mainQuery.push(` ${joinQuery.join} ( ${joinQuery.body}${mainChildIncludes.join("")} ) ON ${joinQuery.condition}`);
-      } else {
-        joinQueries.mainQuery.push(` ${joinQuery.join} ${joinQuery.body} ON ${joinQuery.condition}`);
-        if (mainChildIncludes.length > 0) {
-          joinQueries.mainQuery.push(mainChildIncludes.join(""));
-        }
-      }
-      joinQueries.subQuery.push(subChildIncludes.join(""));
-    }
-    return {
-      mainQuery: joinQueries.mainQuery.join(""),
-      subQuery: joinQueries.subQuery.join(""),
-      attributes
-    };
-  }
-  _getMinifiedAlias(alias, tableName, options) {
-    if (options.aliasesByTable[`${tableName}${alias}`]) {
-      return options.aliasesByTable[`${tableName}${alias}`];
-    }
-    if (alias.match(/subquery_order_[0-9]/)) {
-      return alias;
-    }
-    const minifiedAlias = `_${options.aliasesMapping.size}`;
-    options.aliasesMapping.set(minifiedAlias, alias);
-    options.aliasesByTable[`${tableName}${alias}`] = minifiedAlias;
-    return minifiedAlias;
-  }
-  _getAliasForField(tableName, field, options) {
-    if (this.options.minifyAliases) {
-      if (options.aliasesByTable[`${tableName}${field}`]) {
-        return options.aliasesByTable[`${tableName}${field}`];
-      }
-    }
-    return null;
-  }
-  generateJoin(include, topLevelInfo) {
-    const association = include.association;
-    const parent = include.parent;
-    const parentIsTop = !!parent && !include.parent.association && include.parent.model.name === topLevelInfo.options.model.name;
-    let $parent;
-    let joinWhere;
-    const left = association.source;
-    const attrLeft = association instanceof BelongsTo ? association.identifier : association.sourceKeyAttribute || left.primaryKeyAttribute;
-    const fieldLeft = association instanceof BelongsTo ? association.identifierField : left.rawAttributes[association.sourceKeyAttribute || left.primaryKeyAttribute].field;
-    let asLeft;
-    const right = include.model;
-    const tableRight = right.getTableName();
-    const fieldRight = association instanceof BelongsTo ? right.rawAttributes[association.targetIdentifier || right.primaryKeyAttribute].field : association.identifierField;
-    let asRight = include.as;
-    while (($parent = $parent && $parent.parent || include.parent) && $parent.association) {
-      if (asLeft) {
-        asLeft = `${$parent.as}->${asLeft}`;
-      } else {
-        asLeft = $parent.as;
-      }
-    }
-    if (!asLeft)
-      asLeft = parent.as || parent.model.name;
-    else
-      asRight = `${asLeft}->${asRight}`;
-    let joinOn = `${this.quoteTable(asLeft)}.${this.quoteIdentifier(fieldLeft)}`;
-    const subqueryAttributes = [];
-    if (topLevelInfo.options.groupedLimit && parentIsTop || topLevelInfo.subQuery && include.parent.subQuery && !include.subQuery) {
-      if (parentIsTop) {
-        const tableName = this.quoteTable(parent.as || parent.model.name);
-        joinOn = this._getAliasForField(tableName, attrLeft, topLevelInfo.options) || `${tableName}.${this.quoteIdentifier(attrLeft)}`;
-        if (topLevelInfo.subQuery) {
-          const dbIdentifier = `${tableName}.${this.quoteIdentifier(fieldLeft)}`;
-          subqueryAttributes.push(dbIdentifier !== joinOn ? `${dbIdentifier} AS ${this.quoteIdentifier(attrLeft)}` : dbIdentifier);
-        }
-      } else {
-        const joinSource = `${asLeft.replace(/->/g, ".")}.${attrLeft}`;
-        joinOn = this._getAliasForField(asLeft, joinSource, topLevelInfo.options) || this.quoteIdentifier(joinSource);
-      }
-    }
-    joinOn += ` = ${this.quoteIdentifier(asRight)}.${this.quoteIdentifier(fieldRight)}`;
-    if (include.on) {
-      joinOn = this.whereItemsQuery(include.on, {
-        prefix: this.sequelize.literal(this.quoteIdentifier(asRight)),
-        model: include.model
-      });
-    }
-    if (include.where) {
-      joinWhere = this.whereItemsQuery(include.where, {
-        prefix: this.sequelize.literal(this.quoteIdentifier(asRight)),
-        model: include.model
-      });
-      if (joinWhere) {
-        if (include.or) {
-          joinOn += ` OR ${joinWhere}`;
-        } else {
-          joinOn += ` AND ${joinWhere}`;
-        }
-      }
-    }
-    this.aliasAs(asRight, topLevelInfo);
-    return {
-      join: include.required ? "INNER JOIN" : include.right && this._dialect.supports["RIGHT JOIN"] ? "RIGHT OUTER JOIN" : "LEFT OUTER JOIN",
-      body: this.quoteTable(tableRight, asRight),
-      condition: joinOn,
-      attributes: {
-        main: [],
-        subQuery: subqueryAttributes
-      }
-    };
-  }
-  generateReturnValues(modelAttributes, options) {
-    const returnFields = [];
-    const returnTypes = [];
-    let outputFragment = "";
-    let returningFragment = "";
-    let tmpTable = "";
-    if (Array.isArray(options.returning)) {
-      returnFields.push(...options.returning.map((field) => this.quoteIdentifier(field)));
-    } else if (modelAttributes) {
-      _.each(modelAttributes, (attribute) => {
-        if (!(attribute.type instanceof DataTypes.VIRTUAL)) {
-          returnFields.push(this.quoteIdentifier(attribute.field));
-          returnTypes.push(attribute.type);
-        }
-      });
-    }
-    if (_.isEmpty(returnFields)) {
-      returnFields.push("*");
-    }
-    if (this._dialect.supports.returnValues.returning) {
-      returningFragment = ` RETURNING ${returnFields.join(",")}`;
-    } else if (this._dialect.supports.returnIntoValues) {
-      returningFragment = ` RETURNING ${returnFields.join(",")} INTO `;
-    } else if (this._dialect.supports.returnValues.output) {
-      outputFragment = ` OUTPUT ${returnFields.map((field) => `INSERTED.${field}`).join(",")}`;
-      if (options.hasTrigger && this._dialect.supports.tmpTableTrigger) {
-        const tmpColumns = returnFields.map((field, i) => `${field} ${returnTypes[i].toSql()}`);
-        tmpTable = `DECLARE @tmp TABLE (${tmpColumns.join(",")}); `;
-        outputFragment += " INTO @tmp";
-        returningFragment = "; SELECT * FROM @tmp";
-      }
-    }
-    return { outputFragment, returnFields, returnTypes, returningFragment, tmpTable };
-  }
-  generateThroughJoin(include, includeAs, parentTableName, topLevelInfo) {
-    const through = include.through;
-    const throughTable = through.model.getTableName();
-    const throughAs = `${includeAs.internalAs}->${through.as}`;
-    const externalThroughAs = `${includeAs.externalAs}.${through.as}`;
-    const throughAttributes = through.attributes.map((attr) => {
-      let alias = `${externalThroughAs}.${Array.isArray(attr) ? attr[1] : attr}`;
-      if (this.options.minifyAliases) {
-        alias = this._getMinifiedAlias(alias, throughAs, topLevelInfo.options);
-      }
-      return Utils.joinSQLFragments([
-        `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(Array.isArray(attr) ? attr[0] : attr)}`,
-        "AS",
-        this.quoteIdentifier(alias)
-      ]);
-    });
-    const association = include.association;
-    const parentIsTop = !include.parent.association && include.parent.model.name === topLevelInfo.options.model.name;
-    const tableSource = parentTableName;
-    const identSource = association.identifierField;
-    const tableTarget = includeAs.internalAs;
-    const identTarget = association.foreignIdentifierField;
-    const attrTarget = association.targetKeyField;
-    const joinType = include.required ? "INNER JOIN" : include.right && this._dialect.supports["RIGHT JOIN"] ? "RIGHT OUTER JOIN" : "LEFT OUTER JOIN";
-    let joinBody;
-    let joinCondition;
-    const attributes = {
-      main: [],
-      subQuery: []
-    };
-    let attrSource = association.sourceKey;
-    let sourceJoinOn;
-    let targetJoinOn;
-    let throughWhere;
-    let targetWhere;
-    if (topLevelInfo.options.includeIgnoreAttributes !== false) {
-      for (const attr of throughAttributes) {
-        attributes.main.push(attr);
-      }
-    }
-    if (!topLevelInfo.subQuery) {
-      attrSource = association.sourceKeyField;
-    }
-    if (topLevelInfo.subQuery && !include.subQuery && !include.parent.subQuery && include.parent.model !== topLevelInfo.options.mainModel) {
-      attrSource = association.sourceKeyField;
-    }
-    if (topLevelInfo.subQuery && !include.subQuery && include.parent.subQuery && !parentIsTop) {
-      const joinSource = this._getAliasForField(tableSource, `${tableSource}.${attrSource}`, topLevelInfo.options) || `${tableSource}.${attrSource}`;
-      sourceJoinOn = `${this.quoteIdentifier(joinSource)} = `;
-    } else {
-      const aliasedSource = this._getAliasForField(tableSource, attrSource, topLevelInfo.options) || attrSource;
-      sourceJoinOn = `${this.quoteTable(tableSource)}.${this.quoteIdentifier(aliasedSource)} = `;
-    }
-    sourceJoinOn += `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(identSource)}`;
-    targetJoinOn = `${this.quoteIdentifier(tableTarget)}.${this.quoteIdentifier(attrTarget)} = `;
-    targetJoinOn += `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(identTarget)}`;
-    if (through.where) {
-      throughWhere = this.getWhereConditions(through.where, this.sequelize.literal(this.quoteIdentifier(throughAs)), through.model);
-    }
-    this.aliasAs(includeAs.internalAs, topLevelInfo);
-    joinBody = `( ${this.quoteTable(throughTable, throughAs)} INNER JOIN ${this.quoteTable(include.model.getTableName(), includeAs.internalAs)} ON ${targetJoinOn}`;
-    if (throughWhere) {
-      joinBody += ` AND ${throughWhere}`;
-    }
-    joinBody += ")";
-    joinCondition = sourceJoinOn;
-    if (include.where || include.through.where) {
-      if (include.where) {
-        targetWhere = this.getWhereConditions(include.where, this.sequelize.literal(this.quoteIdentifier(includeAs.internalAs)), include.model, topLevelInfo.options);
-        if (targetWhere) {
-          joinCondition += ` AND ${targetWhere}`;
-        }
-      }
-    }
-    this._generateSubQueryFilter(include, includeAs, topLevelInfo);
-    return {
-      join: joinType,
-      body: joinBody,
-      condition: joinCondition,
-      attributes
-    };
-  }
-  aliasAs(as, topLevelInfo) {
-    if (this.options.minifyAliases && as.length >= 64) {
-      const alias = `%${topLevelInfo.options.includeAliases.size}`;
-      topLevelInfo.options.includeAliases.set(alias, as);
-    }
-  }
-  _generateSubQueryFilter(include, includeAs, topLevelInfo) {
-    if (!topLevelInfo.subQuery || !include.subQueryFilter) {
-      return;
-    }
-    if (!topLevelInfo.options.where) {
-      topLevelInfo.options.where = {};
-    }
-    let parent = include;
-    let child = include;
-    let nestedIncludes = this._getRequiredClosure(include).include;
-    let query;
-    while (parent = parent.parent) {
-      if (parent.parent && !parent.required) {
-        return;
-      }
-      if (parent.subQueryFilter) {
-        return;
-      }
-      nestedIncludes = [__spreadProps(__spreadValues({}, child), { include: nestedIncludes, attributes: [] })];
-      child = parent;
-    }
-    const topInclude = nestedIncludes[0];
-    const topParent = topInclude.parent;
-    const topAssociation = topInclude.association;
-    topInclude.association = void 0;
-    if (topInclude.through && Object(topInclude.through.model) === topInclude.through.model) {
-      query = this.selectQuery(topInclude.through.model.getTableName(), {
-        attributes: [topInclude.through.model.primaryKeyField],
-        include: Model._validateIncludedElements({
-          model: topInclude.through.model,
-          include: [{
-            association: topAssociation.toTarget,
-            required: true,
-            where: topInclude.where,
-            include: topInclude.include
-          }]
-        }).include,
-        model: topInclude.through.model,
-        where: {
-          [Op.and]: [
-            this.sequelize.literal([
-              `${this.quoteTable(topParent.model.name)}.${this.quoteIdentifier(topParent.model.primaryKeyField)}`,
-              `${this.quoteIdentifier(topInclude.through.model.name)}.${this.quoteIdentifier(topAssociation.identifierField)}`
-            ].join(" = ")),
-            topInclude.through.where
-          ]
-        },
-        limit: 1,
-        includeIgnoreAttributes: false
-      }, topInclude.through.model);
-    } else {
-      const isBelongsTo = topAssociation.associationType === "BelongsTo";
-      const sourceField = isBelongsTo ? topAssociation.identifierField : topAssociation.sourceKeyField || topParent.model.primaryKeyField;
-      const targetField = isBelongsTo ? topAssociation.sourceKeyField || topInclude.model.primaryKeyField : topAssociation.identifierField;
-      const join = [
-        `${this.quoteIdentifier(topInclude.as)}.${this.quoteIdentifier(targetField)}`,
-        `${this.quoteTable(topParent.as || topParent.model.name)}.${this.quoteIdentifier(sourceField)}`
-      ].join(" = ");
-      query = this.selectQuery(topInclude.model.getTableName(), {
-        attributes: [targetField],
-        include: Model._validateIncludedElements(topInclude).include,
-        model: topInclude.model,
-        where: {
-          [Op.and]: [
-            topInclude.where,
-            { [Op.join]: this.sequelize.literal(join) }
-          ]
-        },
-        limit: 1,
-        tableAs: topInclude.as,
-        includeIgnoreAttributes: false
-      }, topInclude.model);
-    }
-    if (!topLevelInfo.options.where[Op.and]) {
-      topLevelInfo.options.where[Op.and] = [];
-    }
-    topLevelInfo.options.where[`__${includeAs.internalAs}`] = this.sequelize.literal([
-      "(",
-      query.replace(/;$/, ""),
-      ")",
-      "IS NOT NULL"
-    ].join(" "));
-  }
-  _getRequiredClosure(include) {
-    const copy = __spreadProps(__spreadValues({}, include), { attributes: [], include: [] });
-    if (Array.isArray(include.include)) {
-      copy.include = include.include.filter((i) => i.required).map((inc) => this._getRequiredClosure(inc));
-    }
-    return copy;
-  }
-  getQueryOrders(options, model, subQuery) {
-    const mainQueryOrder = [];
-    const subQueryOrder = [];
-    if (Array.isArray(options.order)) {
-      for (let order of options.order) {
-        if (!Array.isArray(order)) {
-          order = [order];
-        }
-        if (subQuery && Array.isArray(order) && order[0] && !(order[0] instanceof Association) && !(typeof order[0] === "function" && order[0].prototype instanceof Model) && !(typeof order[0].model === "function" && order[0].model.prototype instanceof Model) && !(typeof order[0] === "string" && model && model.associations !== void 0 && model.associations[order[0]])) {
-          const field = model.rawAttributes[order[0]] ? model.rawAttributes[order[0]].field : order[0];
-          const subQueryAlias = this._getAliasForField(this.quoteIdentifier(model.name), field, options);
-          let parent = null;
-          let orderToQuote = [];
-          if (subQueryAlias === null) {
-            orderToQuote = order;
-            parent = model;
-          } else {
-            orderToQuote = [subQueryAlias, order.length > 1 ? order[1] : "ASC"];
-            parent = null;
-          }
-          subQueryOrder.push(this.quote(orderToQuote, parent, "->"));
-        }
-        if (options.attributes && model) {
-          const aliasedAttribute = options.attributes.find((attr) => Array.isArray(attr) && attr[1] && (attr[0] === order[0] || attr[1] === order[0]));
-          if (aliasedAttribute) {
-            const modelName = this.quoteIdentifier(model.name);
-            const alias = this._getAliasForField(modelName, aliasedAttribute[1], options);
-            order[0] = new Utils.Col(alias || aliasedAttribute[1]);
-          }
-        }
-        mainQueryOrder.push(this.quote(order, model, "->"));
-      }
-    } else if (options.order instanceof Utils.SequelizeMethod) {
-      const sql = this.quote(options.order, model, "->");
-      if (subQuery) {
-        subQueryOrder.push(sql);
-      }
-      mainQueryOrder.push(sql);
-    } else {
-      throw new Error("Order must be type of array or instance of a valid sequelize method.");
-    }
-    return { mainQueryOrder, subQueryOrder };
-  }
-  _throwOnEmptyAttributes(attributes, extraInfo = {}) {
-    if (attributes.length > 0)
-      return;
-    const asPart = extraInfo.as && `as ${extraInfo.as}` || "";
-    const namePart = extraInfo.modelName && `for model '${extraInfo.modelName}'` || "";
-    const message = `Attempted a SELECT query ${namePart} ${asPart} without selecting any columns`;
-    throw new sequelizeError.QueryError(message.replace(/ +/g, " "));
-  }
-  selectFromTableFragment(options, model, attributes, tables, mainTableAs) {
-    this._throwOnEmptyAttributes(attributes, { modelName: model && model.name, as: mainTableAs });
-    let fragment = `SELECT ${attributes.join(", ")} FROM ${tables}`;
-    if (mainTableAs) {
-      fragment += ` ${this.getAliasToken()} ${mainTableAs}`;
-    }
-    if (options.indexHints && this._dialect.supports.indexHints) {
-      for (const hint of options.indexHints) {
-        if (IndexHints[hint.type]) {
-          fragment += ` ${IndexHints[hint.type]} INDEX (${hint.values.map((indexName) => this.quoteIdentifiers(indexName)).join(",")})`;
-        }
-      }
-    }
-    return fragment;
-  }
-  addLimitAndOffset(options) {
-    let fragment = "";
-    if (options.offset != null && options.limit == null) {
-      fragment += " LIMIT " + this.escape(options.offset) + ", " + 1e13;
-    } else if (options.limit != null) {
-      if (options.offset != null) {
-        fragment += " LIMIT " + this.escape(options.offset) + ", " + this.escape(options.limit);
-      } else {
-        fragment += " LIMIT " + this.escape(options.limit);
-      }
-    }
-    return fragment;
-  }
-  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
-    let result;
-    if (Object.prototype.hasOwnProperty.call(this.OperatorMap, smth.comparator)) {
-      smth.comparator = this.OperatorMap[smth.comparator];
-    }
-    if (smth instanceof Utils.Where) {
-      let value = smth.logic;
-      let key;
-      if (smth.attribute instanceof Utils.SequelizeMethod) {
-        key = this.getWhereConditions(smth.attribute, tableName, factory, options, prepend);
-      } else {
-        key = `${this.quoteTable(smth.attribute.Model.name)}.${this.quoteIdentifier(smth.attribute.field || smth.attribute.fieldName)}`;
-      }
-      if (value && value instanceof Utils.SequelizeMethod) {
-        value = this.getWhereConditions(value, tableName, factory, options, prepend);
-        if (value === "NULL") {
-          if (smth.comparator === "=") {
-            smth.comparator = "IS";
-          }
-          if (smth.comparator === "!=") {
-            smth.comparator = "IS NOT";
-          }
-        }
-        return [key, value].join(` ${smth.comparator} `);
-      }
-      if (_.isPlainObject(value)) {
-        return this.whereItemQuery(smth.attribute, value, {
-          model: factory
-        });
-      }
-      if ([this.OperatorMap[Op.between], this.OperatorMap[Op.notBetween]].includes(smth.comparator)) {
-        value = `${this.escape(value[0])} AND ${this.escape(value[1])}`;
-      } else if (typeof value === "boolean") {
-        value = this.booleanValue(value);
-      } else {
-        value = this.escape(value);
-      }
-      if (value === "NULL") {
-        if (smth.comparator === "=") {
-          smth.comparator = "IS";
-        }
-        if (smth.comparator === "!=") {
-          smth.comparator = "IS NOT";
-        }
-      }
-      return [key, value].join(` ${smth.comparator} `);
-    }
-    if (smth instanceof Utils.Literal) {
-      return smth.val;
-    }
-    if (smth instanceof Utils.Cast) {
-      if (smth.val instanceof Utils.SequelizeMethod) {
-        result = this.handleSequelizeMethod(smth.val, tableName, factory, options, prepend);
-      } else if (_.isPlainObject(smth.val)) {
-        result = this.whereItemsQuery(smth.val);
-      } else {
-        result = this.escape(smth.val);
-      }
-      return `CAST(${result} AS ${smth.type.toUpperCase()})`;
-    }
-    if (smth instanceof Utils.Fn) {
-      return `${smth.fn}(${smth.args.map((arg) => {
-        if (arg instanceof Utils.SequelizeMethod) {
-          return this.handleSequelizeMethod(arg, tableName, factory, options, prepend);
-        }
-        if (_.isPlainObject(arg)) {
-          return this.whereItemsQuery(arg);
-        }
-        return this.escape(typeof arg === "string" ? arg.replace(/\$/g, "$$$") : arg);
-      }).join(", ")})`;
-    }
-    if (smth instanceof Utils.Col) {
-      if (Array.isArray(smth.col) && !factory) {
-        throw new Error("Cannot call Sequelize.col() with array outside of order / group clause");
-      }
-      if (smth.col.startsWith("*")) {
-        return "*";
-      }
-      return this.quote(smth.col, factory);
-    }
-    return smth.toString(this, factory);
-  }
-  whereQuery(where, options) {
-    const query = this.whereItemsQuery(where, options);
-    if (query && query.length) {
-      return `WHERE ${query}`;
-    }
-    return "";
-  }
-  whereItemsQuery(where, options, binding) {
-    if (where === null || where === void 0 || Utils.getComplexSize(where) === 0) {
-      return "";
-    }
-    if (typeof where === "string") {
-      throw new Error("Support for `{where: 'raw query'}` has been removed.");
-    }
-    const items = [];
-    binding = binding || "AND";
-    if (binding[0] !== " ")
-      binding = ` ${binding} `;
-    if (_.isPlainObject(where)) {
-      Utils.getComplexKeys(where).forEach((prop) => {
-        const item = where[prop];
-        items.push(this.whereItemQuery(prop, item, options));
-      });
-    } else {
-      items.push(this.whereItemQuery(void 0, where, options));
-    }
-    return items.length && items.filter((item) => item && item.length).join(binding) || "";
-  }
-  whereItemQuery(key, value, options = {}) {
-    if (value === void 0) {
-      throw new Error(`WHERE parameter "${key}" has invalid "undefined" value`);
-    }
-    if (typeof key === "string" && key.includes(".") && options.model) {
-      const keyParts = key.split(".");
-      if (options.model.rawAttributes[keyParts[0]] && options.model.rawAttributes[keyParts[0]].type instanceof DataTypes.JSON) {
-        const tmp = {};
-        const field2 = options.model.rawAttributes[keyParts[0]];
-        _.set(tmp, keyParts.slice(1), value);
-        return this.whereItemQuery(field2.field || keyParts[0], tmp, __spreadValues({ field: field2 }, options));
-      }
-    }
-    const field = this._findField(key, options);
-    const fieldType = field && field.type || options.type;
-    const isPlainObject = _.isPlainObject(value);
-    const isArray = !isPlainObject && Array.isArray(value);
-    key = this.OperatorsAliasMap && this.OperatorsAliasMap[key] || key;
-    if (isPlainObject) {
-      value = this._replaceAliases(value);
-    }
-    const valueKeys = isPlainObject && Utils.getComplexKeys(value);
-    if (key === void 0) {
-      if (typeof value === "string") {
-        return value;
-      }
-      if (isPlainObject && valueKeys.length === 1) {
-        return this.whereItemQuery(valueKeys[0], value[valueKeys[0]], options);
-      }
-    }
-    if (value === null) {
-      const opValue2 = options.bindParam ? "NULL" : this.escape(value, field);
-      return this._joinKeyValue(key, opValue2, this.OperatorMap[Op.is], options.prefix);
-    }
-    if (!value) {
-      const opValue2 = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);
-      return this._joinKeyValue(key, opValue2, this.OperatorMap[Op.eq], options.prefix);
-    }
-    if (value instanceof Utils.SequelizeMethod && !(key !== void 0 && value instanceof Utils.Fn)) {
-      return this.handleSequelizeMethod(value);
-    }
-    if (key === void 0 && isArray) {
-      if (Utils.canTreatArrayAsAnd(value)) {
-        key = Op.and;
-      } else {
-        throw new Error("Support for literal replacements in the `where` object has been removed.");
-      }
-    }
-    if (key === Op.or || key === Op.and || key === Op.not) {
-      return this._whereGroupBind(key, value, options);
-    }
-    if (value[Op.or]) {
-      return this._whereBind(this.OperatorMap[Op.or], key, value[Op.or], options);
-    }
-    if (value[Op.and]) {
-      return this._whereBind(this.OperatorMap[Op.and], key, value[Op.and], options);
-    }
-    if (isArray && fieldType instanceof DataTypes.ARRAY) {
-      const opValue2 = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);
-      return this._joinKeyValue(key, opValue2, this.OperatorMap[Op.eq], options.prefix);
-    }
-    if (isPlainObject && fieldType instanceof DataTypes.JSON && options.json !== false) {
-      return this._whereJSON(key, value, options);
-    }
-    if (isPlainObject && valueKeys.length > 1) {
-      return this._whereBind(this.OperatorMap[Op.and], key, value, options);
-    }
-    if (isArray) {
-      return this._whereParseSingleValueObject(key, field, Op.in, value, options);
-    }
-    if (isPlainObject) {
-      if (this.OperatorMap[valueKeys[0]]) {
-        return this._whereParseSingleValueObject(key, field, valueKeys[0], value[valueKeys[0]], options);
-      }
-      return this._whereParseSingleValueObject(key, field, this.OperatorMap[Op.eq], value, options);
-    }
-    if (key === Op.placeholder) {
-      const opValue2 = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);
-      return this._joinKeyValue(this.OperatorMap[key], opValue2, this.OperatorMap[Op.eq], options.prefix);
-    }
-    const opValue = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);
-    return this._joinKeyValue(key, opValue, this.OperatorMap[Op.eq], options.prefix);
-  }
-  _findField(key, options) {
-    if (options.field) {
-      return options.field;
-    }
-    if (options.model && options.model.rawAttributes && options.model.rawAttributes[key]) {
-      return options.model.rawAttributes[key];
-    }
-    if (options.model && options.model.fieldRawAttributesMap && options.model.fieldRawAttributesMap[key]) {
-      return options.model.fieldRawAttributesMap[key];
-    }
-  }
-  _whereGroupBind(key, value, options) {
-    const binding = key === Op.or ? this.OperatorMap[Op.or] : this.OperatorMap[Op.and];
-    const outerBinding = key === Op.not ? "NOT " : "";
-    if (Array.isArray(value)) {
-      value = value.map((item) => {
-        let itemQuery = this.whereItemsQuery(item, options, this.OperatorMap[Op.and]);
-        if (itemQuery && itemQuery.length && (Array.isArray(item) || _.isPlainObject(item)) && Utils.getComplexSize(item) > 1) {
-          itemQuery = `(${itemQuery})`;
-        }
-        return itemQuery;
-      }).filter((item) => item && item.length);
-      value = value.length && value.join(binding);
-    } else {
-      value = this.whereItemsQuery(value, options, binding);
-    }
-    if ((key === Op.or || key === Op.not) && !value) {
-      return "0 = 1";
-    }
-    return value ? `${outerBinding}(${value})` : void 0;
-  }
-  _whereBind(binding, key, value, options) {
-    if (_.isPlainObject(value)) {
-      value = Utils.getComplexKeys(value).map((prop) => {
-        const item = value[prop];
-        return this.whereItemQuery(key, { [prop]: item }, options);
-      });
-    } else {
-      value = value.map((item) => this.whereItemQuery(key, item, options));
-    }
-    value = value.filter((item) => item && item.length);
-    return value.length ? `(${value.join(binding)})` : void 0;
-  }
-  _whereJSON(key, value, options) {
-    const items = [];
-    let baseKey = this.quoteIdentifier(key);
-    if (options.prefix) {
-      if (options.prefix instanceof Utils.Literal) {
-        baseKey = `${this.handleSequelizeMethod(options.prefix)}.${baseKey}`;
-      } else {
-        baseKey = `${this.quoteTable(options.prefix)}.${baseKey}`;
-      }
-    }
-    Utils.getOperators(value).forEach((op) => {
-      const where = {
-        [op]: value[op]
-      };
-      items.push(this.whereItemQuery(key, where, __spreadProps(__spreadValues({}, options), { json: false })));
-    });
-    _.forOwn(value, (item, prop) => {
-      this._traverseJSON(items, baseKey, prop, item, [prop]);
-    });
-    const result = items.join(this.OperatorMap[Op.and]);
-    return items.length > 1 ? `(${result})` : result;
-  }
-  _traverseJSON(items, baseKey, prop, item, path) {
-    let cast;
-    if (path[path.length - 1].includes("::")) {
-      const tmp = path[path.length - 1].split("::");
-      cast = tmp[1];
-      path[path.length - 1] = tmp[0];
-    }
-    let pathKey = this.jsonPathExtractionQuery(baseKey, path);
-    if (_.isPlainObject(item)) {
-      Utils.getOperators(item).forEach((op) => {
-        const value = this._toJSONValue(item[op]);
-        let isJson = false;
-        if (typeof value === "string" && op === Op.contains) {
-          try {
-            JSON.stringify(value);
-            isJson = true;
-          } catch (e) {
-          }
-        }
-        pathKey = this.jsonPathExtractionQuery(baseKey, path, isJson);
-        items.push(this.whereItemQuery(this._castKey(pathKey, value, cast), { [op]: value }));
-      });
-      _.forOwn(item, (value, itemProp) => {
-        this._traverseJSON(items, baseKey, itemProp, value, path.concat([itemProp]));
-      });
-      return;
-    }
-    item = this._toJSONValue(item);
-    items.push(this.whereItemQuery(this._castKey(pathKey, item, cast), { [Op.eq]: item }));
-  }
-  _toJSONValue(value) {
-    return value;
-  }
-  _castKey(key, value, cast, json) {
-    cast = cast || this._getJsonCast(Array.isArray(value) ? value[0] : value);
-    if (cast) {
-      return new Utils.Literal(this.handleSequelizeMethod(new Utils.Cast(new Utils.Literal(key), cast, json)));
-    }
-    return new Utils.Literal(key);
-  }
-  _getJsonCast(value) {
-    if (typeof value === "number") {
-      return "double precision";
-    }
-    if (value instanceof Date) {
-      return "timestamptz";
-    }
-    if (typeof value === "boolean") {
-      return "boolean";
-    }
-    return;
-  }
-  _joinKeyValue(key, value, comparator, prefix) {
-    if (!key) {
-      return value;
-    }
-    if (comparator === void 0) {
-      throw new Error(`${key} and ${value} has no comparator`);
-    }
-    key = this._getSafeKey(key, prefix);
-    return [key, value].join(` ${comparator} `);
-  }
-  _getSafeKey(key, prefix) {
-    if (key instanceof Utils.SequelizeMethod) {
-      key = this.handleSequelizeMethod(key);
-      return this._prefixKey(this.handleSequelizeMethod(key), prefix);
-    }
-    if (Utils.isColString(key)) {
-      key = key.substr(1, key.length - 2).split(".");
-      if (key.length > 2) {
-        key = [
-          key.slice(0, -1).join("->"),
-          key[key.length - 1]
-        ];
-      }
-      return key.map((identifier) => this.quoteIdentifier(identifier)).join(".");
-    }
-    return this._prefixKey(this.quoteIdentifier(key), prefix);
-  }
-  _prefixKey(key, prefix) {
-    if (prefix) {
-      if (prefix instanceof Utils.Literal) {
-        return [this.handleSequelizeMethod(prefix), key].join(".");
-      }
-      return [this.quoteTable(prefix), key].join(".");
-    }
-    return key;
-  }
-  _whereParseSingleValueObject(key, field, prop, value, options) {
-    if (prop === Op.not) {
-      if (Array.isArray(value)) {
-        prop = Op.notIn;
-      } else if (value !== null && value !== true && value !== false) {
-        prop = Op.ne;
-      }
-    }
-    let comparator = this.OperatorMap[prop] || this.OperatorMap[Op.eq];
-    switch (prop) {
-      case Op.in:
-      case Op.notIn:
-        if (value instanceof Utils.Literal) {
-          return this._joinKeyValue(key, value.val, comparator, options.prefix);
-        }
-        if (value.length) {
-          return this._joinKeyValue(key, `(${value.map((item) => this.escape(item, field)).join(", ")})`, comparator, options.prefix);
-        }
-        if (comparator === this.OperatorMap[Op.in]) {
-          return this._joinKeyValue(key, "(NULL)", comparator, options.prefix);
-        }
-        return "";
-      case Op.any:
-      case Op.all:
-        comparator = `${this.OperatorMap[Op.eq]} ${comparator}`;
-        if (value[Op.values]) {
-          return this._joinKeyValue(key, `(VALUES ${value[Op.values].map((item) => `(${this.escape(item)})`).join(", ")})`, comparator, options.prefix);
-        }
-        return this._joinKeyValue(key, `(${this.escape(value, field)})`, comparator, options.prefix);
-      case Op.between:
-      case Op.notBetween:
-        return this._joinKeyValue(key, `${this.escape(value[0], field)} AND ${this.escape(value[1], field)}`, comparator, options.prefix);
-      case Op.raw:
-        throw new Error("The `$raw` where property is no longer supported.  Use `sequelize.literal` instead.");
-      case Op.col:
-        comparator = this.OperatorMap[Op.eq];
-        value = value.split(".");
-        if (value.length > 2) {
-          value = [
-            value.slice(0, -1).join("->"),
-            value[value.length - 1]
-          ];
-        }
-        return this._joinKeyValue(key, value.map((identifier) => this.quoteIdentifier(identifier)).join("."), comparator, options.prefix);
-      case Op.startsWith:
-      case Op.endsWith:
-      case Op.substring:
-        comparator = this.OperatorMap[Op.like];
-        if (value instanceof Utils.Literal) {
-          value = value.val;
-        }
-        let pattern = `${value}%`;
-        if (prop === Op.endsWith)
-          pattern = `%${value}`;
-        if (prop === Op.substring)
-          pattern = `%${value}%`;
-        return this._joinKeyValue(key, this.escape(pattern), comparator, options.prefix);
-    }
-    const escapeOptions = {
-      acceptStrings: comparator.includes(this.OperatorMap[Op.like])
-    };
-    if (_.isPlainObject(value)) {
-      if (value[Op.col]) {
-        return this._joinKeyValue(key, this.whereItemQuery(null, value), comparator, options.prefix);
-      }
-      if (value[Op.any]) {
-        escapeOptions.isList = true;
-        return this._joinKeyValue(key, `(${this.escape(value[Op.any], field, escapeOptions)})`, `${comparator} ${this.OperatorMap[Op.any]}`, options.prefix);
-      }
-      if (value[Op.all]) {
-        escapeOptions.isList = true;
-        return this._joinKeyValue(key, `(${this.escape(value[Op.all], field, escapeOptions)})`, `${comparator} ${this.OperatorMap[Op.all]}`, options.prefix);
-      }
-    }
-    if (value === null && comparator === this.OperatorMap[Op.eq]) {
-      return this._joinKeyValue(key, this.escape(value, field, escapeOptions), this.OperatorMap[Op.is], options.prefix);
-    }
-    if (value === null && comparator === this.OperatorMap[Op.ne]) {
-      return this._joinKeyValue(key, this.escape(value, field, escapeOptions), this.OperatorMap[Op.not], options.prefix);
-    }
-    return this._joinKeyValue(key, this.escape(value, field, escapeOptions), comparator, options.prefix);
-  }
-  getWhereConditions(smth, tableName, factory, options, prepend) {
-    const where = {};
-    if (Array.isArray(tableName)) {
-      tableName = tableName[0];
-      if (Array.isArray(tableName)) {
-        tableName = tableName[1];
-      }
-    }
-    options = options || {};
-    if (prepend === void 0) {
-      prepend = true;
-    }
-    if (smth && smth instanceof Utils.SequelizeMethod) {
-      return this.handleSequelizeMethod(smth, tableName, factory, options, prepend);
-    }
-    if (_.isPlainObject(smth)) {
-      return this.whereItemsQuery(smth, {
-        model: factory,
-        prefix: prepend && tableName,
-        type: options.type
-      });
-    }
-    if (typeof smth === "number" || typeof smth === "bigint") {
-      let primaryKeys = factory ? Object.keys(factory.primaryKeys) : [];
-      if (primaryKeys.length > 0) {
-        primaryKeys = primaryKeys[0];
-      } else {
-        primaryKeys = "id";
-      }
-      where[primaryKeys] = smth;
-      return this.whereItemsQuery(where, {
-        model: factory,
-        prefix: prepend && tableName
-      });
-    }
-    if (typeof smth === "string") {
-      return this.whereItemsQuery(smth, {
-        model: factory,
-        prefix: prepend && tableName
-      });
-    }
-    if (Buffer.isBuffer(smth)) {
-      return this.escape(smth);
-    }
-    if (Array.isArray(smth)) {
-      if (smth.length === 0 || smth.length > 0 && smth[0].length === 0)
-        return "1=1";
-      if (Utils.canTreatArrayAsAnd(smth)) {
-        const _smth = { [Op.and]: smth };
-        return this.getWhereConditions(_smth, tableName, factory, options, prepend);
-      }
-      throw new Error("Support for literal replacements in the `where` object has been removed.");
-    }
-    if (smth == null) {
-      return this.whereItemsQuery(smth, {
-        model: factory,
-        prefix: prepend && tableName
-      });
-    }
-    throw new Error(`Unsupported where option value: ${util.inspect(smth)}. Please refer to the Sequelize documentation to learn more about which values are accepted as part of the where option.`);
-  }
-  parseConditionObject(conditions, path) {
-    path = path || [];
-    return _.reduce(conditions, (result, value, key) => {
-      if (_.isObject(value)) {
-        return result.concat(this.parseConditionObject(value, path.concat(key)));
-      }
-      result.push({ path: path.concat(key), value });
-      return result;
-    }, []);
-  }
-  booleanValue(value) {
-    return value;
-  }
-  authTestQuery() {
-    return "SELECT 1+1 AS result";
-  }
-}
-Object.assign(QueryGenerator.prototype, require("./query-generator/operators"));
-Object.assign(QueryGenerator.prototype, require("./query-generator/transaction"));
-module.exports = QueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/abstract/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst util = require('util');\nconst _ = require('lodash');\nconst uuidv4 = require('uuid').v4;\n\nconst Utils = require('../../utils');\nconst deprecations = require('../../utils/deprecations');\nconst SqlString = require('../../sql-string');\nconst DataTypes = require('../../data-types');\nconst Model = require('../../model');\nconst Association = require('../../associations/base');\nconst BelongsTo = require('../../associations/belongs-to');\nconst BelongsToMany = require('../../associations/belongs-to-many');\nconst HasMany = require('../../associations/has-many');\nconst Op = require('../../operators');\nconst sequelizeError = require('../../errors');\nconst IndexHints = require('../../index-hints');\n\n\n/**\n * Abstract Query Generator\n *\n * @private\n */\nclass QueryGenerator {\n  constructor(options) {\n    if (!options.sequelize) throw new Error('QueryGenerator initialized without options.sequelize');\n    if (!options._dialect) throw new Error('QueryGenerator initialized without options._dialect');\n\n    this.sequelize = options.sequelize;\n    this.options = options.sequelize.options;\n\n    // dialect name\n    this.dialect = options._dialect.name;\n    this._dialect = options._dialect;\n\n    // wrap quoteIdentifier with common logic\n    this._initQuoteIdentifier();\n  }\n\n  extractTableDetails(tableName, options) {\n    options = options || {};\n    tableName = tableName || {};\n    return {\n      schema: tableName.schema || options.schema || this.options.schema || 'public',\n      tableName: _.isPlainObject(tableName) ? tableName.tableName : tableName,\n      delimiter: tableName.delimiter || options.delimiter || '.'\n    };\n  }\n\n  addSchema(param) {\n    if (!param._schema) return param.tableName || param;\n    const self = this;\n    return {\n      tableName: param.tableName || param,\n      table: param.tableName || param,\n      name: param.name || param,\n      schema: param._schema,\n      delimiter: param._schemaDelimiter || '.',\n      toString() {\n        return self.quoteTable(this);\n      }\n    };\n  }\n\n  dropSchema(tableName, options) {\n    return this.dropTableQuery(tableName, options);\n  }\n\n  describeTableQuery(tableName, schema, schemaDelimiter) {\n    const table = this.quoteTable(\n      this.addSchema({\n        tableName,\n        _schema: schema,\n        _schemaDelimiter: schemaDelimiter\n      })\n    );\n\n    return `DESCRIBE ${table};`;\n  }\n\n  dropTableQuery(tableName) {\n    return `DROP TABLE IF EXISTS ${this.quoteTable(tableName)};`;\n  }\n\n  renameTableQuery(before, after) {\n    return `ALTER TABLE ${this.quoteTable(before)} RENAME TO ${this.quoteTable(after)};`;\n  }\n\n  /**\n   * Helper method for populating the returning into bind information\n   * that is needed by some dialects (currently Oracle)\n   *\n   * @private\n   */\n  populateInsertQueryReturnIntoBinds() {\n    // noop by default\n  }\n\n  /**\n   * Returns an insert into command\n   *\n   * @param {string} table\n   * @param {object} valueHash       attribute value pairs\n   * @param {object} modelAttributes\n   * @param {object} [options]\n   *\n   * @private\n   */\n  insertQuery(table, valueHash, modelAttributes, options) {\n    options = options || {};\n    _.defaults(options, this.options);\n\n    const modelAttributeMap = {};\n    const bind = options.bind || [];\n    const fields = [];\n    const returningModelAttributes = [];\n    const returnTypes = [];\n    const values = [];\n    const quotedTable = this.quoteTable(table);\n    const bindParam = options.bindParam === undefined ? this.bindParam(bind) : options.bindParam;\n    const returnAttributes = [];\n    let query;\n    let valueQuery = '';\n    let emptyQuery = '';\n    let outputFragment = '';\n    let returningFragment = '';\n    let identityWrapperRequired = false;\n    let tmpTable = ''; //tmpTable declaration for trigger\n\n    if (modelAttributes) {\n      _.each(modelAttributes, (attribute, key) => {\n        modelAttributeMap[key] = attribute;\n        if (attribute.field) {\n          modelAttributeMap[attribute.field] = attribute;\n        }\n      });\n    }\n\n    if (this._dialect.supports['DEFAULT VALUES']) {\n      emptyQuery += ' DEFAULT VALUES';\n    } else if (this._dialect.supports['VALUES ()']) {\n      emptyQuery += ' VALUES ()';\n    }\n\n    if ((this._dialect.supports.returnValues || this._dialect.supports.returnIntoValues) && options.returning) {\n      const returnValues = this.generateReturnValues(modelAttributes, options);\n\n      returningModelAttributes.push(...returnValues.returnFields);\n      // Storing the returnTypes for dialects that need to have returning into bind information for outbinds\n      if (this._dialect.supports.returnIntoValues) {\n        returnTypes.push(...returnValues.returnTypes);\n      }\n      returningFragment = returnValues.returningFragment;\n      tmpTable = returnValues.tmpTable || '';\n      outputFragment = returnValues.outputFragment || '';\n    }\n\n    if (_.get(this, ['sequelize', 'options', 'dialectOptions', 'prependSearchPath']) || options.searchPath) {\n      // Not currently supported with search path (requires output of multiple queries)\n      options.bindParam = false;\n    }\n\n    if (this._dialect.supports.EXCEPTION && options.exception) {\n      // Not currently supported with bind parameters (requires output of multiple queries)\n      options.bindParam = false;\n    }\n\n    valueHash = Utils.removeNullValuesFromHash(valueHash, this.options.omitNull);\n    for (const key in valueHash) {\n      if (Object.prototype.hasOwnProperty.call(valueHash, key)) {\n        const value = valueHash[key];\n        fields.push(this.quoteIdentifier(key));\n\n        // SERIALS' can't be NULL in postgresql, use DEFAULT where supported\n        if (modelAttributeMap && modelAttributeMap[key] && modelAttributeMap[key].autoIncrement === true && value == null) {\n          if (!this._dialect.supports.autoIncrement.defaultValue) {\n            fields.splice(-1, 1);\n          } else if (this._dialect.supports.DEFAULT) {\n            values.push('DEFAULT');\n          } else {\n            values.push(this.escape(null));\n          }\n        } else {\n          if (modelAttributeMap && modelAttributeMap[key] && modelAttributeMap[key].autoIncrement === true) {\n            identityWrapperRequired = true;\n          }\n\n          if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {\n            values.push(this.escape(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'INSERT' }));\n          } else {\n            values.push(this.format(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'INSERT' }, bindParam));\n          }\n        }\n      }\n    }\n\n    let onDuplicateKeyUpdate = '';\n\n    if (\n      !_.isEmpty(options.conflictWhere)\n      && !this._dialect.supports.inserts.onConflictWhere\n    ) {\n      throw new Error('missing dialect support for conflictWhere option');\n    }\n\n    // `options.updateOnDuplicate` is the list of field names to update if a duplicate key is hit during the insert.  It\n    // contains just the field names.  This option is _usually_ explicitly set by the corresponding query-interface\n    // upsert function.\n    if (this._dialect.supports.inserts.updateOnDuplicate && options.updateOnDuplicate) {\n      if (this._dialect.supports.inserts.updateOnDuplicate == ' ON CONFLICT DO UPDATE SET') { // postgres / sqlite\n        // If no conflict target columns were specified, use the primary key names from options.upsertKeys\n        const conflictKeys = options.upsertKeys.map(attr => this.quoteIdentifier(attr));\n        const updateKeys = options.updateOnDuplicate.map(attr => `${this.quoteIdentifier(attr)}=EXCLUDED.${this.quoteIdentifier(attr)}`);\n\n        const fragments = [\n          'ON CONFLICT',\n          '(',\n          conflictKeys.join(','),\n          ')'\n        ];\n\n        if (!_.isEmpty(options.conflictWhere)) {\n          fragments.push(this.whereQuery(options.conflictWhere, options));\n        }\n\n        // if update keys are provided, then apply them here.  if there are no updateKeys provided, then do not try to\n        // do an update.  Instead, fall back to DO NOTHING.\n        if (_.isEmpty(updateKeys)) {\n          fragments.push('DO NOTHING');\n        } else {\n          fragments.push('DO UPDATE SET', updateKeys.join(','));\n        }\n\n        onDuplicateKeyUpdate = ` ${Utils.joinSQLFragments(fragments)}`;\n\n      } else {\n        const valueKeys = options.updateOnDuplicate.map(attr => `${this.quoteIdentifier(attr)}=VALUES(${this.quoteIdentifier(attr)})`);\n        // the rough equivalent to ON CONFLICT DO NOTHING in mysql, etc is ON DUPLICATE KEY UPDATE id = id\n        // So, if no update values were provided, fall back to the identifier columns provided in the upsertKeys array.\n        // This will be the primary key in most cases, but it could be some other constraint.\n        if (_.isEmpty(valueKeys) && options.upsertKeys) {\n          valueKeys.push(...options.upsertKeys.map(attr => `${this.quoteIdentifier(attr)}=${this.quoteIdentifier(attr)}`));\n        }\n\n        // edge case... but if for some reason there were no valueKeys, and there were also no upsertKeys... then we\n        // can no longer build the requested query without a syntax error.  Let's throw something more graceful here\n        // so the devs know what the problem is.\n        if (_.isEmpty(valueKeys)) {\n          throw new Error('No update values found for ON DUPLICATE KEY UPDATE clause, and no identifier fields could be found to use instead.');\n        }\n        onDuplicateKeyUpdate += `${this._dialect.supports.inserts.updateOnDuplicate} ${valueKeys.join(',')}`;\n      }\n    }\n\n    const replacements = {\n      ignoreDuplicates: options.ignoreDuplicates ? this._dialect.supports.inserts.ignoreDuplicates : '',\n      onConflictDoNothing: options.ignoreDuplicates ? this._dialect.supports.inserts.onConflictDoNothing : '',\n      attributes: fields.join(','),\n      output: outputFragment,\n      values: values.join(','),\n      tmpTable\n    };\n\n    valueQuery = `${tmpTable}INSERT${replacements.ignoreDuplicates} INTO ${quotedTable} (${replacements.attributes})${replacements.output} VALUES (${replacements.values})${onDuplicateKeyUpdate}${replacements.onConflictDoNothing}${valueQuery}`;\n    emptyQuery = `${tmpTable}INSERT${replacements.ignoreDuplicates} INTO ${quotedTable}${replacements.output}${onDuplicateKeyUpdate}${replacements.onConflictDoNothing}${emptyQuery}`;\n\n    // Mostly for internal use, so we expect the user to know what he's doing!\n    // pg_temp functions are private per connection, so we never risk this function interfering with another one.\n    if (this._dialect.supports.EXCEPTION && options.exception) {\n      const dropFunction = 'DROP FUNCTION IF EXISTS pg_temp.testfunc()';\n\n      if (returningModelAttributes.length === 0) {\n        returningModelAttributes.push('*');\n      }\n\n      const delimiter = `$func_${uuidv4().replace(/-/g, '')}$`;\n      const selectQuery = `SELECT (testfunc.response).${returningModelAttributes.join(', (testfunc.response).')}, testfunc.sequelize_caught_exception FROM pg_temp.testfunc();`;\n\n      options.exception = 'WHEN unique_violation THEN GET STACKED DIAGNOSTICS sequelize_caught_exception = PG_EXCEPTION_DETAIL;';\n      valueQuery = `CREATE OR REPLACE FUNCTION pg_temp.testfunc(OUT response ${quotedTable}, OUT sequelize_caught_exception text) RETURNS RECORD AS ${delimiter} BEGIN ${valueQuery} RETURNING * INTO response; EXCEPTION ${options.exception} END ${delimiter} LANGUAGE plpgsql; ${selectQuery} ${dropFunction}`;\n    } else {\n      valueQuery += returningFragment;\n      emptyQuery += returningFragment;\n    }\n\n    if (this._dialect.supports.returnIntoValues && options.returning) {\n      // Populating the returnAttributes array and performing operations needed for output binds of insertQuery\n      this.populateInsertQueryReturnIntoBinds(returningModelAttributes, returnTypes, bind.length, returnAttributes, options);\n    }\n\n    query = `${replacements.attributes.length ? valueQuery : emptyQuery}${returnAttributes.join(',')};`;\n    if (this._dialect.supports.finalTable) {\n      query = `SELECT * FROM FINAL TABLE(${ replacements.attributes.length ? valueQuery : emptyQuery });`;\n    }\n    if (identityWrapperRequired && this._dialect.supports.autoIncrement.identityInsert) {\n      query = `SET IDENTITY_INSERT ${quotedTable} ON; ${query} SET IDENTITY_INSERT ${quotedTable} OFF;`;\n    }\n\n    // Used by Postgres upsertQuery and calls to here with options.exception set to true\n    const result = { query };\n    if (options.bindParam !== false) {\n      result.bind = bind;\n    }\n\n    return result;\n  }\n\n  /**\n   * Returns an insert into command for multiple values.\n   *\n   * @param {string} tableName\n   * @param {object} fieldValueHashes\n   * @param {object} options\n   * @param {object} fieldMappedAttributes\n   *\n   * @private\n   */\n  bulkInsertQuery(tableName, fieldValueHashes, options, fieldMappedAttributes) {\n    options = options || {};\n    fieldMappedAttributes = fieldMappedAttributes || {};\n\n    const tuples = [];\n    const serials = {};\n    const allAttributes = [];\n    let onDuplicateKeyUpdate = '';\n\n    for (const fieldValueHash of fieldValueHashes) {\n      _.forOwn(fieldValueHash, (value, key) => {\n        if (!allAttributes.includes(key)) {\n          allAttributes.push(key);\n        }\n        if (\n          fieldMappedAttributes[key]\n          && fieldMappedAttributes[key].autoIncrement === true\n        ) {\n          serials[key] = true;\n        }\n      });\n    }\n\n    for (const fieldValueHash of fieldValueHashes) {\n      const values = allAttributes.map(key => {\n        if (\n          this._dialect.supports.bulkDefault\n          && serials[key] === true\n        ) {\n          // fieldValueHashes[key] ?? 'DEFAULT'\n          return fieldValueHash[key] != null ? fieldValueHash[key] : 'DEFAULT';\n        }\n\n        return this.escape(fieldValueHash[key], fieldMappedAttributes[key], { context: 'INSERT' });\n      });\n\n      tuples.push(`(${values.join(',')})`);\n    }\n\n    // `options.updateOnDuplicate` is the list of field names to update if a duplicate key is hit during the insert.  It\n    // contains just the field names.  This option is _usually_ explicitly set by the corresponding query-interface\n    // upsert function.\n    if (this._dialect.supports.inserts.updateOnDuplicate && options.updateOnDuplicate) {\n      if (this._dialect.supports.inserts.updateOnDuplicate == ' ON CONFLICT DO UPDATE SET') { // postgres / sqlite\n        // If no conflict target columns were specified, use the primary key names from options.upsertKeys\n        const conflictKeys = options.upsertKeys.map(attr => this.quoteIdentifier(attr));\n        const updateKeys = options.updateOnDuplicate.map(attr => `${this.quoteIdentifier(attr)}=EXCLUDED.${this.quoteIdentifier(attr)}`);\n\n        let whereClause = false;\n        if (options.conflictWhere) {\n          if (!this._dialect.supports.inserts.onConflictWhere) {\n            throw new Error(`conflictWhere not supported for dialect ${this._dialect.name}`);\n          }\n\n          whereClause = this.whereQuery(options.conflictWhere, options);\n        }\n\n        // The Utils.joinSQLFragments later on will join this as it handles nested arrays.\n        onDuplicateKeyUpdate = [\n          'ON CONFLICT',\n          '(',\n          conflictKeys.join(','),\n          ')',\n          whereClause,\n          'DO UPDATE SET',\n          updateKeys.join(',')\n        ];\n      } else { // mysql / maria\n        if (options.conflictWhere) {\n          throw new Error(`conflictWhere not supported for dialect ${this._dialect.name}`);\n        }\n\n        const valueKeys = options.updateOnDuplicate.map(attr => `${this.quoteIdentifier(attr)}=VALUES(${this.quoteIdentifier(attr)})`);\n        onDuplicateKeyUpdate = `${this._dialect.supports.inserts.updateOnDuplicate} ${valueKeys.join(',')}`;\n      }\n    }\n\n    const ignoreDuplicates = options.ignoreDuplicates ? this._dialect.supports.inserts.ignoreDuplicates : '';\n    const attributes = allAttributes.map(attr => this.quoteIdentifier(attr)).join(',');\n    const onConflictDoNothing = options.ignoreDuplicates ? this._dialect.supports.inserts.onConflictDoNothing : '';\n    let returning = '';\n\n    if (this._dialect.supports.returnValues && options.returning) {\n      const returnValues = this.generateReturnValues(fieldMappedAttributes, options);\n\n      returning += returnValues.returningFragment;\n    }\n\n    return Utils.joinSQLFragments([\n      'INSERT',\n      ignoreDuplicates,\n      'INTO',\n      this.quoteTable(tableName),\n      `(${attributes})`,\n      'VALUES',\n      tuples.join(','),\n      onDuplicateKeyUpdate,\n      onConflictDoNothing,\n      returning,\n      ';'\n    ]);\n  }\n\n  /**\n   * Returns an update query\n   *\n   * @param {string} tableName\n   * @param {object} attrValueHash\n   * @param {object} where A hash with conditions (e.g. {name: 'foo'}) OR an ID as integer\n   * @param {object} options\n   * @param {object} attributes\n   *\n   * @private\n   */\n  updateQuery(tableName, attrValueHash, where, options, attributes) {\n    options = options || {};\n    _.defaults(options, this.options);\n\n    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);\n\n    const values = [];\n    const bind = [];\n    const modelAttributeMap = {};\n    let outputFragment = '';\n    let tmpTable = ''; // tmpTable declaration for trigger\n    let suffix = '';\n\n    if (_.get(this, ['sequelize', 'options', 'dialectOptions', 'prependSearchPath']) || options.searchPath) {\n      // Not currently supported with search path (requires output of multiple queries)\n      options.bindParam = false;\n    }\n\n    const bindParam = options.bindParam === undefined ? this.bindParam(bind) : options.bindParam;\n\n    if (this._dialect.supports['LIMIT ON UPDATE'] && options.limit) {\n      if (!['mssql', 'db2', 'oracle'].includes(this.dialect)) {\n        suffix = ` LIMIT ${this.escape(options.limit)} `;\n      } else if (this.dialect === 'oracle') {\n        // This cannot be setted in where because rownum will be quoted\n        if (where && (where.length && where.length > 0 || Object.keys(where).length > 0)) {\n          // If we have a where clause, we add AND\n          suffix += ' AND ';\n        } else {\n          // No where clause, we add where\n          suffix += ' WHERE ';\n        }\n        suffix += `rownum <= ${this.escape(options.limit)} `;\n      }\n    }\n\n    if (this._dialect.supports.returnValues && options.returning) {\n      const returnValues = this.generateReturnValues(attributes, options);\n\n      suffix += returnValues.returningFragment;\n      tmpTable = returnValues.tmpTable || '';\n      outputFragment = returnValues.outputFragment || '';\n\n      // ensure that the return output is properly mapped to model fields.\n      if (!this._dialect.supports.returnValues.output && options.returning) {\n        options.mapToModel = true;\n      }\n    }\n\n    if (attributes) {\n      _.each(attributes, (attribute, key) => {\n        modelAttributeMap[key] = attribute;\n        if (attribute.field) {\n          modelAttributeMap[attribute.field] = attribute;\n        }\n      });\n    }\n\n    for (const key in attrValueHash) {\n      if (modelAttributeMap && modelAttributeMap[key] &&\n        modelAttributeMap[key].autoIncrement === true &&\n        !this._dialect.supports.autoIncrement.update) {\n        // not allowed to update identity column\n        continue;\n      }\n\n      const value = attrValueHash[key];\n\n      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {\n        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' })}`);\n      } else {\n        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' }, bindParam)}`);\n      }\n    }\n\n    const whereOptions = { ...options, bindParam };\n\n    if (values.length === 0) {\n      return '';\n    }\n\n    const query = `${tmpTable}UPDATE ${this.quoteTable(tableName)} SET ${values.join(',')}${outputFragment} ${this.whereQuery(where, whereOptions)}${suffix}`.trim();\n    // Used by Postgres upsertQuery and calls to here with options.exception set to true\n    const result = { query };\n    if (options.bindParam !== false) {\n      result.bind = bind;\n    }\n    return result;\n  }\n\n  /**\n   * Returns an update query using arithmetic operator\n   *\n   * @param {string} operator                    String with the arithmetic operator (e.g. '+' or '-')\n   * @param {string} tableName                   Name of the table\n   * @param {object} where                       A plain-object with conditions (e.g. {name: 'foo'}) OR an ID as integer\n   * @param {object} incrementAmountsByField     A plain-object with attribute-value-pairs\n   * @param {object} extraAttributesToBeUpdated  A plain-object with attribute-value-pairs\n   * @param {object} options\n   *\n   * @private\n   */\n  arithmeticQuery(operator, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {\n    options = options || {};\n    _.defaults(options, { returning: true });\n\n    extraAttributesToBeUpdated = Utils.removeNullValuesFromHash(extraAttributesToBeUpdated, this.options.omitNull);\n\n    let outputFragment = '';\n    let returningFragment = '';\n\n    if (this._dialect.supports.returnValues && options.returning) {\n      const returnValues = this.generateReturnValues(null, options);\n\n      outputFragment = returnValues.outputFragment;\n      returningFragment = returnValues.returningFragment;\n    }\n\n    const updateSetSqlFragments = [];\n    for (const field in incrementAmountsByField) {\n      const incrementAmount = incrementAmountsByField[field];\n      const quotedField = this.quoteIdentifier(field);\n      const escapedAmount = this.escape(incrementAmount);\n      updateSetSqlFragments.push(`${quotedField}=${quotedField}${operator} ${escapedAmount}`);\n    }\n    for (const field in extraAttributesToBeUpdated) {\n      const newValue = extraAttributesToBeUpdated[field];\n      const quotedField = this.quoteIdentifier(field);\n      const escapedValue = this.escape(newValue);\n      updateSetSqlFragments.push(`${quotedField}=${escapedValue}`);\n    }\n\n    return Utils.joinSQLFragments([\n      'UPDATE',\n      this.quoteTable(tableName),\n      'SET',\n      updateSetSqlFragments.join(','),\n      outputFragment,\n      this.whereQuery(where),\n      returningFragment\n    ]);\n  }\n\n  /*\n    Returns an add index query.\n    Parameters:\n      - tableName -> Name of an existing table, possibly with schema.\n      - options:\n        - type: UNIQUE|FULLTEXT|SPATIAL\n        - name: The name of the index. Default is <table>_<attr1>_<attr2>\n        - fields: An array of attributes as string or as hash.\n                  If the attribute is a hash, it must have the following content:\n                  - name: The name of the attribute/column\n                  - length: An integer. Optional\n                  - order: 'ASC' or 'DESC'. Optional\n        - parser\n        - using\n        - operator\n        - concurrently: Pass CONCURRENT so other operations run while the index is created\n      - rawTablename, the name of the table, without schema. Used to create the name of the index\n   @private\n  */\n  addIndexQuery(tableName, attributes, options, rawTablename) {\n    options = options || {};\n\n    if (!Array.isArray(attributes)) {\n      options = attributes;\n      attributes = undefined;\n    } else {\n      options.fields = attributes;\n    }\n\n    options.prefix = options.prefix || rawTablename || tableName;\n    if (options.prefix && typeof options.prefix === 'string') {\n      options.prefix = options.prefix.replace(/\\./g, '_');\n      options.prefix = options.prefix.replace(/(\"|')/g, '');\n    }\n\n    const fieldsSql = options.fields.map(field => {\n      if (field instanceof Utils.SequelizeMethod) {\n        return this.handleSequelizeMethod(field);\n      }\n      if (typeof field === 'string') {\n        field = {\n          name: field\n        };\n      }\n      let result = '';\n\n      if (field.attribute) {\n        field.name = field.attribute;\n      }\n\n      if (!field.name) {\n        throw new Error(`The following index field has no name: ${util.inspect(field)}`);\n      }\n\n      result += this.quoteIdentifier(field.name);\n\n      if (this._dialect.supports.index.collate && field.collate) {\n        result += ` COLLATE ${this.quoteIdentifier(field.collate)}`;\n      }\n\n      if (this._dialect.supports.index.operator) {\n        const operator = field.operator || options.operator;\n        if (operator) {\n          result += ` ${operator}`;\n        }\n      }\n\n      if (this._dialect.supports.index.length && field.length) {\n        result += `(${field.length})`;\n      }\n\n      if (field.order) {\n        result += ` ${field.order}`;\n      }\n\n      return result;\n    });\n\n    if (!options.name) {\n      // Mostly for cases where addIndex is called directly by the user without an options object (for example in migrations)\n      // All calls that go through sequelize should already have a name\n      options = Utils.nameIndex(options, options.prefix);\n    }\n\n    options = Model._conformIndex(options);\n\n    if (!this._dialect.supports.index.type) {\n      delete options.type;\n    }\n\n    if (options.where) {\n      options.where = this.whereQuery(options.where);\n    }\n\n    if (typeof tableName === 'string') {\n      tableName = this.quoteIdentifiers(tableName);\n    } else {\n      tableName = this.quoteTable(tableName);\n    }\n\n    const concurrently = this._dialect.supports.index.concurrently && options.concurrently ? 'CONCURRENTLY' : undefined;\n    let ind;\n    if (this._dialect.supports.indexViaAlter) {\n      ind = [\n        'ALTER TABLE',\n        tableName,\n        concurrently,\n        'ADD'\n      ];\n    } else {\n      ind = ['CREATE'];\n    }\n\n    ind = ind.concat(\n      options.unique ? 'UNIQUE' : '',\n      options.type, 'INDEX',\n      !this._dialect.supports.indexViaAlter ? concurrently : undefined,\n      this.quoteIdentifiers(options.name),\n      this._dialect.supports.index.using === 1 && options.using ? `USING ${options.using}` : '',\n      !this._dialect.supports.indexViaAlter ? `ON ${tableName}` : undefined,\n      this._dialect.supports.index.using === 2 && options.using ? `USING ${options.using}` : '',\n      `(${fieldsSql.join(', ')})`,\n      this._dialect.supports.index.parser && options.parser ? `WITH PARSER ${options.parser}` : undefined,\n      this._dialect.supports.index.where && options.where ? options.where : undefined\n    );\n\n    return _.compact(ind).join(' ');\n  }\n\n  addConstraintQuery(tableName, options) {\n    if (typeof tableName === 'string') {\n      tableName = this.quoteIdentifiers(tableName);\n    } else {\n      tableName = this.quoteTable(tableName);\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      tableName,\n      'ADD',\n      this.getConstraintSnippet(tableName, options || {}),\n      ';'\n    ]);\n  }\n\n  getConstraintSnippet(tableName, options) {\n    let constraintSnippet, constraintName;\n\n    const fieldsSql = options.fields.map(field => {\n      if (typeof field === 'string') {\n        return this.quoteIdentifier(field);\n      }\n      if (field instanceof Utils.SequelizeMethod) {\n        return this.handleSequelizeMethod(field);\n      }\n      if (field.attribute) {\n        field.name = field.attribute;\n      }\n\n      if (!field.name) {\n        throw new Error(`The following index field has no name: ${field}`);\n      }\n\n      return this.quoteIdentifier(field.name);\n    });\n\n    const fieldsSqlQuotedString = fieldsSql.join(', ');\n    const fieldsSqlString = fieldsSql.join('_');\n\n    switch (options.type.toUpperCase()) {\n      case 'UNIQUE':\n        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_uk`);\n        constraintSnippet = `CONSTRAINT ${constraintName} UNIQUE (${fieldsSqlQuotedString})`;\n        break;\n      case 'CHECK':\n        options.where = this.whereItemsQuery(options.where);\n        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_ck`);\n        constraintSnippet = `CONSTRAINT ${constraintName} CHECK (${options.where})`;\n        break;\n      case 'DEFAULT':\n        if (options.defaultValue === undefined) {\n          throw new Error('Default value must be specified for DEFAULT CONSTRAINT');\n        }\n\n        if (this._dialect.name !== 'mssql') {\n          throw new Error('Default constraints are supported only for MSSQL dialect.');\n        }\n\n        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_df`);\n        constraintSnippet = `CONSTRAINT ${constraintName} DEFAULT (${this.escape(options.defaultValue)}) FOR ${fieldsSql[0]}`;\n        break;\n      case 'PRIMARY KEY':\n        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_pk`);\n        constraintSnippet = `CONSTRAINT ${constraintName} PRIMARY KEY (${fieldsSqlQuotedString})`;\n        break;\n      case 'FOREIGN KEY':\n        const references = options.references;\n        if (!references || !references.table || !(references.field || references.fields)) {\n          throw new Error('references object with table and field must be specified');\n        }\n        constraintName = this.quoteIdentifier(options.name || `${tableName}_${fieldsSqlString}_${references.table}_fk`);\n        const quotedReferences =\n          typeof references.field !== 'undefined'\n            ? this.quoteIdentifier(references.field)\n            : references.fields.map(f => this.quoteIdentifier(f)).join(', ');\n        const referencesSnippet = `${this.quoteTable(references.table)} (${quotedReferences})`;\n        constraintSnippet = `CONSTRAINT ${constraintName} `;\n        constraintSnippet += `FOREIGN KEY (${fieldsSqlQuotedString}) REFERENCES ${referencesSnippet}`;\n        if (options.onUpdate) {\n          constraintSnippet += ` ON UPDATE ${options.onUpdate.toUpperCase()}`;\n        }\n        if (options.onDelete) {\n          constraintSnippet += ` ON DELETE ${options.onDelete.toUpperCase()}`;\n        }\n        break;\n      default: throw new Error(`${options.type} is invalid.`);\n    }\n\n    if (options.deferrable && ['UNIQUE', 'PRIMARY KEY', 'FOREIGN KEY'].includes(options.type.toUpperCase())) {\n      constraintSnippet += ` ${this.deferConstraintsQuery(options)}`;\n    }\n\n    return constraintSnippet;\n  }\n\n  removeConstraintQuery(tableName, constraintName) {\n    if (typeof tableName === 'string') {\n      tableName = this.quoteIdentifiers(tableName);\n    } else {\n      tableName = this.quoteTable(tableName);\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      tableName,\n      'DROP CONSTRAINT',\n      this.quoteIdentifiers(constraintName)\n    ]);\n  }\n\n  /*\n    Quote an object based on its type. This is a more general version of quoteIdentifiers\n    Strings: should proxy to quoteIdentifiers\n    Arrays:\n      * Expects array in the form: [<model> (optional), <model> (optional),... String, String (optional)]\n        Each <model> can be a model, or an object {model: Model, as: String}, matching include, or an\n        association object, or the name of an association.\n      * Zero or more models can be included in the array and are used to trace a path through the tree of\n        included nested associations. This produces the correct table name for the ORDER BY/GROUP BY SQL\n        and quotes it.\n      * If a single string is appended to end of array, it is quoted.\n        If two strings appended, the 1st string is quoted, the 2nd string unquoted.\n    Objects:\n      * If raw is set, that value should be returned verbatim, without quoting\n      * If fn is set, the string should start with the value of fn, starting paren, followed by\n        the values of cols (which is assumed to be an array), quoted and joined with ', ',\n        unless they are themselves objects\n      * If direction is set, should be prepended\n\n    Currently this function is only used for ordering / grouping columns and Sequelize.col(), but it could\n    potentially also be used for other places where we want to be able to call SQL functions (e.g. as default values)\n   @private\n  */\n  quote(collection, parent, connector) {\n    // init\n    const validOrderOptions = [\n      'ASC',\n      'DESC',\n      'ASC NULLS LAST',\n      'DESC NULLS LAST',\n      'ASC NULLS FIRST',\n      'DESC NULLS FIRST',\n      'NULLS FIRST',\n      'NULLS LAST'\n    ];\n\n    // default\n    connector = connector || '.';\n\n    // just quote as identifiers if string\n    if (typeof collection === 'string') {\n      return this.quoteIdentifiers(collection);\n    }\n    if (Array.isArray(collection)) {\n      // iterate through the collection and mutate objects into associations\n      collection.forEach((item, index) => {\n        const previous = collection[index - 1];\n        let previousAssociation;\n        let previousModel;\n\n        // set the previous as the parent when previous is undefined or the target of the association\n        if (!previous && parent !== undefined) {\n          previousModel = parent;\n        } else if (previous && previous instanceof Association) {\n          previousAssociation = previous;\n          previousModel = previous.target;\n        }\n\n        // if the previous item is a model, then attempt getting an association\n        if (previousModel && previousModel.prototype instanceof Model) {\n          let model;\n          let as;\n\n          if (typeof item === 'function' && item.prototype instanceof Model) {\n            // set\n            model = item;\n          } else if (_.isPlainObject(item) && item.model && item.model.prototype instanceof Model) {\n            // set\n            model = item.model;\n            as = item.as;\n          }\n\n          if (model) {\n            // set the as to either the through name or the model name\n            if (!as && previousAssociation && previousAssociation instanceof Association && previousAssociation.through && previousAssociation.through.model === model) {\n              // get from previous association\n              item = new Association(previousModel, model, {\n                as: model.name\n              });\n            } else {\n              // get association from previous model\n              item = previousModel.getAssociationForAlias(model, as);\n\n              // attempt to use the model name if the item is still null\n              if (!item) {\n                item = previousModel.getAssociationForAlias(model, model.name);\n              }\n            }\n\n            // make sure we have an association\n            if (!(item instanceof Association)) {\n              throw new Error(util.format('Unable to find a valid association for model, \\'%s\\'', model.name));\n            }\n          }\n        }\n\n        if (typeof item === 'string') {\n          // get order index\n          const orderIndex = validOrderOptions.indexOf(item.toUpperCase());\n\n          // see if this is an order\n          if (index > 0 && orderIndex !== -1) {\n            item = this.sequelize.literal(` ${validOrderOptions[orderIndex]}`);\n          } else if (previousModel && previousModel.prototype instanceof Model) {\n            // only go down this path if we have preivous model and check only once\n            if (previousModel.associations !== undefined && previousModel.associations[item]) {\n              // convert the item to an association\n              item = previousModel.associations[item];\n            } else if (previousModel.rawAttributes !== undefined && previousModel.rawAttributes[item] && item !== previousModel.rawAttributes[item].field) {\n              // convert the item attribute from its alias\n              item = previousModel.rawAttributes[item].field;\n            } else if (\n              item.includes('.')\n              && previousModel.rawAttributes !== undefined\n            ) {\n              const itemSplit = item.split('.');\n\n              if (previousModel.rawAttributes[itemSplit[0]].type instanceof DataTypes.JSON) {\n                // just quote identifiers for now\n                const identifier = this.quoteIdentifiers(`${previousModel.name}.${previousModel.rawAttributes[itemSplit[0]].field}`);\n\n                // get path\n                const path = itemSplit.slice(1);\n\n                // extract path\n                item = this.jsonPathExtractionQuery(identifier, path);\n\n                // literal because we don't want to append the model name when string\n                item = this.sequelize.literal(item);\n              }\n            }\n          }\n        }\n\n        collection[index] = item;\n      }, this);\n\n      // loop through array, adding table names of models to quoted\n      const collectionLength = collection.length;\n      const tableNames = [];\n      let item;\n      let i = 0;\n\n      for (i = 0; i < collectionLength - 1; i++) {\n        item = collection[i];\n        if (typeof item === 'string' || item._modelAttribute || item instanceof Utils.SequelizeMethod) {\n          break;\n        } else if (item instanceof Association) {\n          tableNames[i] = item.as;\n        }\n      }\n\n      // start building sql\n      let sql = '';\n\n      if (i > 0) {\n        sql += `${this.quoteIdentifier(tableNames.join(connector))}.`;\n      } else if (typeof collection[0] === 'string' && parent) {\n        sql += `${this.quoteIdentifier(parent.name)}.`;\n      }\n\n      // loop through everything past i and append to the sql\n      collection.slice(i).forEach(collectionItem => {\n        sql += this.quote(collectionItem, parent, connector);\n      }, this);\n\n      return sql;\n    }\n    if (collection._modelAttribute) {\n      return `${this.quoteTable(collection.Model.name)}.${this.quoteIdentifier(collection.fieldName)}`;\n    }\n    if (collection instanceof Utils.SequelizeMethod) {\n      return this.handleSequelizeMethod(collection);\n    }\n    if (_.isPlainObject(collection) && collection.raw) {\n      // simple objects with raw is no longer supported\n      throw new Error('The `{raw: \"...\"}` syntax is no longer supported.  Use `sequelize.literal` instead.');\n    }\n    throw new Error(`Unknown structure passed to order / group: ${util.inspect(collection)}`);\n  }\n\n  _initQuoteIdentifier() {\n    this._quoteIdentifier = this.quoteIdentifier;\n    this.quoteIdentifier = function(identifier, force) {\n      if (identifier === '*') return identifier;\n      return this._quoteIdentifier(identifier, force);\n    };\n  }\n\n  /**\n   * Adds quotes to identifier\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    throw new Error(`quoteIdentifier for Dialect \"${this.dialect}\" is not implemented`);\n  }\n\n  /**\n   * Split a list of identifiers by \".\" and quote each part.\n   *\n   * @param {string} identifiers\n   *\n   * @returns {string}\n   */\n  quoteIdentifiers(identifiers) {\n    if (identifiers.includes('.')) {\n      identifiers = identifiers.split('.');\n\n      const head = identifiers.slice(0, identifiers.length - 1).join('->');\n      const tail = identifiers[identifiers.length - 1];\n\n      return `${this.quoteIdentifier(head)}.${this.quoteIdentifier(tail)}`;\n    }\n\n    return this.quoteIdentifier(identifiers);\n  }\n\n  quoteAttribute(attribute, model) {\n    if (model && attribute in model.rawAttributes) {\n      return this.quoteIdentifier(attribute);\n    }\n    return this.quoteIdentifiers(attribute);\n  }\n\n  /**\n   * Returns the alias token\n   *\n   * @returns {string}\n   */\n  getAliasToken() {\n    return 'AS';\n  }\n\n  /**\n   * Quote table name with optional alias and schema attribution\n   *\n   * @param {string|object}  param table string or object\n   * @param {string|boolean} alias alias name\n   *\n   * @returns {string}\n   */\n  quoteTable(param, alias) {\n    let table = '';\n\n    if (alias === true) {\n      alias = param.as || param.name || param;\n    }\n\n    if (_.isObject(param)) {\n      if (this._dialect.supports.schemas) {\n        if (param.schema) {\n          table += `${this.quoteIdentifier(param.schema)}.`;\n        }\n\n        table += this.quoteIdentifier(param.tableName);\n      } else {\n        if (param.schema) {\n          table += param.schema + (param.delimiter || '.');\n        }\n\n        table += param.tableName;\n        table = this.quoteIdentifier(table);\n      }\n    } else {\n      table = this.quoteIdentifier(param);\n    }\n\n    if (alias) {\n      table += ` ${this.getAliasToken()} ${this.quoteIdentifier(alias)}`;\n    }\n\n    return table;\n  }\n\n  /*\n    Escape a value (e.g. a string, number or date)\n    @private\n  */\n  escape(value, field, options) {\n    options = options || {};\n\n    if (value !== null && value !== undefined) {\n      if (value instanceof Utils.SequelizeMethod) {\n        return this.handleSequelizeMethod(value);\n      }\n      if (field && field.type) {\n        if (field.type instanceof DataTypes.STRING\n            && ['mysql', 'mariadb'].includes(this.dialect)\n            && ['number', 'boolean'].includes(typeof value)) {\n          value = String(Number(value));\n        }\n              \n        this.validate(value, field, options);\n\n        if (field.type.stringify) {\n          // Users shouldn't have to worry about these args - just give them a function that takes a single arg\n          const simpleEscape = escVal => SqlString.escape(escVal, this.options.timezone, this.dialect);\n\n          value = field.type.stringify(value, { escape: simpleEscape, field, timezone: this.options.timezone, operation: options.operation });\n\n          if (field.type.escape === false) {\n            // The data-type already did the required escaping\n            return value;\n          }\n        }\n      }\n    }\n    return SqlString.escape(value, this.options.timezone, this.dialect);\n  }\n\n  bindParam(bind) {\n    return value => {\n      bind.push(value);\n      return `$${bind.length}`;\n    };\n  }\n\n  /*\n    Returns a bind parameter representation of a value (e.g. a string, number or date)\n    @private\n  */\n  format(value, field, options, bindParam) {\n    options = options || {};\n\n    if (value !== null && value !== undefined) {\n      if (value instanceof Utils.SequelizeMethod) {\n        throw new Error('Cannot pass SequelizeMethod as a bind parameter - use escape instead');\n      }\n      if (field && field.type) {\n        this.validate(value, field, options);\n\n        if (field.type.bindParam) {\n          return field.type.bindParam(value, { escape: _.identity, field, timezone: this.options.timezone, operation: options.operation, bindParam });\n        }\n      }\n    }\n\n    return bindParam(value);\n  }\n\n  /*\n    Validate a value against a field specification\n    @private\n  */\n  validate(value, field, options) {\n    if (this.typeValidation && field.type.validate && value) {\n      try {\n        if (options.isList && Array.isArray(value)) {\n          for (const item of value) {\n            field.type.validate(item, options);\n          }\n        } else {\n          field.type.validate(value, options);\n        }\n      } catch (error) {\n        if (error instanceof sequelizeError.ValidationError) {\n          error.errors.push(new sequelizeError.ValidationErrorItem(\n            error.message,\n            'Validation error',\n            field.fieldName,\n            value,\n            null,\n            `${field.type.key} validator`\n          ));\n        }\n\n        throw error;\n      }\n    }\n  }\n\n  isIdentifierQuoted(identifier) {\n    return /^\\s*(?:([`\"'])(?:(?!\\1).|\\1{2})*\\1\\.?)+\\s*$/i.test(identifier);\n  }\n\n  /**\n   * Generates an SQL query that extract JSON property of given path.\n   *\n   * @param   {string}               column   The JSON column\n   * @param   {string|Array<string>} [path]   The path to extract (optional)\n   * @param   {boolean}              [isJson] The value is JSON use alt symbols (optional)\n   * @returns {string}                        The generated sql query\n   * @private\n   */\n  jsonPathExtractionQuery(column, path, isJson) {\n    let paths = _.toPath(path);\n    let pathStr;\n    const quotedColumn = this.isIdentifierQuoted(column)\n      ? column\n      : this.quoteIdentifier(column);\n\n    switch (this.dialect) {\n      case 'mysql':\n      case 'mariadb':\n      case 'sqlite':\n        /**\n         * Non digit sub paths need to be quoted as ECMAScript identifiers\n         * https://bugs.mysql.com/bug.php?id=81896\n         */\n        if (this.dialect === 'mysql') {\n          paths = paths.map(subPath => {\n            return /\\D/.test(subPath)\n              ? Utils.addTicks(subPath, '\"')\n              : subPath;\n          });\n        }\n\n        pathStr = this.escape(['$']\n          .concat(paths)\n          .join('.')\n          .replace(/\\.(\\d+)(?:(?=\\.)|$)/g, (__, digit) => `[${digit}]`));\n\n        if (this.dialect === 'sqlite') {\n          return `json_extract(${quotedColumn},${pathStr})`;\n        }\n\n        return `json_unquote(json_extract(${quotedColumn},${pathStr}))`;\n\n      case 'postgres':\n        const join = isJson ? '#>' : '#>>';\n        pathStr = this.escape(`{${paths.join(',')}}`);\n        return `(${quotedColumn}${join}${pathStr})`;\n\n      default:\n        throw new Error(`Unsupported ${this.dialect} for JSON operations`);\n    }\n  }\n\n  /*\n    Returns a query for selecting elements in the table <tableName>.\n    Options:\n      - attributes -> An array of attributes (e.g. ['name', 'birthday']). Default: *\n      - where -> A hash with conditions (e.g. {name: 'foo'})\n                 OR an ID as integer\n      - order -> e.g. 'id DESC'\n      - group\n      - limit -> The maximum count you want to get.\n      - offset -> An offset value to start from. Only useable with limit!\n   @private\n  */\n  selectQuery(tableName, options, model) {\n    options = options || {};\n    const limit = options.limit;\n    const mainQueryItems = [];\n    const subQueryItems = [];\n    const subQuery = options.subQuery === undefined ? limit && options.hasMultiAssociation : options.subQuery;\n    const attributes = {\n      main: options.attributes && options.attributes.slice(),\n      subQuery: null\n    };\n    const mainTable = {\n      name: tableName,\n      quotedName: null,\n      as: null,\n      model\n    };\n    const topLevelInfo = {\n      names: mainTable,\n      options,\n      subQuery\n    };\n    let mainJoinQueries = [];\n    let subJoinQueries = [];\n    let query;\n\n    // Aliases can be passed through subqueries and we don't want to reset them\n    if (this.options.minifyAliases && !options.aliasesMapping) {\n      options.aliasesMapping = new Map();\n      options.aliasesByTable = {};\n      options.includeAliases = new Map();\n    }\n\n    // resolve table name options\n    if (options.tableAs) {\n      mainTable.as = this.quoteIdentifier(options.tableAs);\n    } else if (!Array.isArray(mainTable.name) && mainTable.model) {\n      mainTable.as = this.quoteIdentifier(mainTable.model.name);\n    }\n\n    mainTable.quotedName = !Array.isArray(mainTable.name) ? this.quoteTable(mainTable.name) : tableName.map(t => {\n      return Array.isArray(t) ? this.quoteTable(t[0], t[1]) : this.quoteTable(t, true);\n    }).join(', ');\n\n    if (subQuery && attributes.main) {\n      for (const keyAtt of mainTable.model.primaryKeyAttributes) {\n        // Check if mainAttributes contain the primary key of the model either as a field or an aliased field\n        if (!attributes.main.some(attr => keyAtt === attr || keyAtt === attr[0] || keyAtt === attr[1])) {\n          attributes.main.push(mainTable.model.rawAttributes[keyAtt].field ? [keyAtt, mainTable.model.rawAttributes[keyAtt].field] : keyAtt);\n        }\n      }\n    }\n\n    attributes.main = this.escapeAttributes(attributes.main, options, mainTable.as);\n    attributes.main = attributes.main || (options.include ? [`${mainTable.as}.*`] : ['*']);\n\n    // If subquery, we add the mainAttributes to the subQuery and set the mainAttributes to select * from subquery\n    if (subQuery || options.groupedLimit) {\n      // We need primary keys\n      attributes.subQuery = attributes.main;\n      attributes.main = [`${mainTable.as || mainTable.quotedName}.*`];\n    }\n\n    if (options.include) {\n      for (const include of options.include) {\n        if (include.separate) {\n          continue;\n        }\n        const joinQueries = this.generateInclude(include, { externalAs: mainTable.as, internalAs: mainTable.as }, topLevelInfo);\n\n        subJoinQueries = subJoinQueries.concat(joinQueries.subQuery);\n        mainJoinQueries = mainJoinQueries.concat(joinQueries.mainQuery);\n\n        if (joinQueries.attributes.main.length > 0) {\n          attributes.main = _.uniq(attributes.main.concat(joinQueries.attributes.main));\n        }\n        if (joinQueries.attributes.subQuery.length > 0) {\n          attributes.subQuery = _.uniq(attributes.subQuery.concat(joinQueries.attributes.subQuery));\n        }\n      }\n    }\n\n    if (subQuery) {\n      subQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.subQuery, mainTable.quotedName, mainTable.as));\n      subQueryItems.push(subJoinQueries.join(''));\n    } else {\n      if (options.groupedLimit) {\n        if (!mainTable.as) {\n          mainTable.as = mainTable.quotedName;\n        }\n        const where = { ...options.where };\n        let groupedLimitOrder,\n          whereKey,\n          include,\n          groupedTableName = mainTable.as;\n\n        if (typeof options.groupedLimit.on === 'string') {\n          whereKey = options.groupedLimit.on;\n        } else if (options.groupedLimit.on instanceof HasMany) {\n          whereKey = options.groupedLimit.on.foreignKeyField;\n        }\n\n        if (options.groupedLimit.on instanceof BelongsToMany) {\n          // BTM includes needs to join the through table on to check ID\n          groupedTableName = options.groupedLimit.on.manyFromSource.as;\n          const groupedLimitOptions = Model._validateIncludedElements({\n            include: [{\n              association: options.groupedLimit.on.manyFromSource,\n              duplicating: false, // The UNION'ed query may contain duplicates, but each sub-query cannot\n              required: true,\n              where: {\n                [Op.placeholder]: true,\n                ...options.groupedLimit.through && options.groupedLimit.through.where\n              }\n            }],\n            model\n          });\n\n          // Make sure attributes from the join table are mapped back to models\n          options.hasJoin = true;\n          options.hasMultiAssociation = true;\n          options.includeMap = Object.assign(groupedLimitOptions.includeMap, options.includeMap);\n          options.includeNames = groupedLimitOptions.includeNames.concat(options.includeNames || []);\n          include = groupedLimitOptions.include;\n\n          if (Array.isArray(options.order)) {\n            // We need to make sure the order by attributes are available to the parent query\n            options.order.forEach((order, i) => {\n              if (Array.isArray(order)) {\n                order = order[0];\n              }\n\n              let alias = `subquery_order_${i}`;\n              options.attributes.push([order, alias]);\n\n              // We don't want to prepend model name when we alias the attributes, so quote them here\n              alias = this.sequelize.literal(this.quote(alias));\n\n              if (Array.isArray(options.order[i])) {\n                options.order[i][0] = alias;\n              } else {\n                options.order[i] = alias;\n              }\n            });\n            groupedLimitOrder = options.order;\n          }\n        } else {\n          // Ordering is handled by the subqueries, so ordering the UNION'ed result is not needed\n          groupedLimitOrder = options.order;\n\n          // For the Oracle dialect, the result of a select is a set, not a sequence, and so is the result of UNION.\n          // So the top level ORDER BY is required\n          if (!this._dialect.supports.topLevelOrderByRequired) {\n            delete options.order;\n          }\n          where[Op.placeholder] = true;\n        }\n\n        // Caching the base query and splicing the where part into it is consistently > twice\n        // as fast than generating from scratch each time for values.length >= 5\n        const baseQuery = `SELECT * FROM (${this.selectQuery(\n          tableName,\n          {\n            attributes: options.attributes,\n            offset: options.offset,\n            limit: options.groupedLimit.limit,\n            order: groupedLimitOrder,\n            aliasesMapping: options.aliasesMapping,\n            aliasesByTable: options.aliasesByTable,\n            where,\n            include,\n            model\n          },\n          model\n        ).replace(/;$/, '')}) ${this.getAliasToken()} sub`; // Every derived table must have its own alias\n        const placeHolder = this.whereItemQuery(Op.placeholder, true, { model });\n        const splicePos = baseQuery.indexOf(placeHolder);\n\n        mainQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.main, `(${\n          options.groupedLimit.values.map(value => {\n            let groupWhere;\n            if (whereKey) {\n              groupWhere = {\n                [whereKey]: value\n              };\n            }\n            if (include) {\n              groupWhere = {\n                [options.groupedLimit.on.foreignIdentifierField]: value\n              };\n            }\n\n            return Utils.spliceStr(baseQuery, splicePos, placeHolder.length, this.getWhereConditions(groupWhere, groupedTableName));\n          }).join(\n            this._dialect.supports['UNION ALL'] ? ' UNION ALL ' : ' UNION '\n          )\n        })`, mainTable.as));\n      } else {\n        mainQueryItems.push(this.selectFromTableFragment(options, mainTable.model, attributes.main, mainTable.quotedName, mainTable.as));\n      }\n\n      mainQueryItems.push(mainJoinQueries.join(''));\n    }\n\n    // Add WHERE to sub or main query\n    if (Object.prototype.hasOwnProperty.call(options, 'where') && !options.groupedLimit) {\n      options.where = this.getWhereConditions(options.where, mainTable.as || tableName, model, options);\n      if (options.where) {\n        if (subQuery) {\n          subQueryItems.push(` WHERE ${options.where}`);\n        } else {\n          mainQueryItems.push(` WHERE ${options.where}`);\n          // Walk the main query to update all selects\n          mainQueryItems.forEach((value, key) => {\n            if (value.startsWith('SELECT')) {\n              mainQueryItems[key] = this.selectFromTableFragment(options, model, attributes.main, mainTable.quotedName, mainTable.as, options.where);\n            }\n          });\n        }\n      }\n    }\n\n    // Add GROUP BY to sub or main query\n    if (options.group) {\n      options.group = Array.isArray(options.group) ? options.group.map(t => this.aliasGrouping(t, model, mainTable.as, options)).join(', ') : this.aliasGrouping(options.group, model, mainTable.as, options);\n\n      if (subQuery && options.group) {\n        subQueryItems.push(` GROUP BY ${options.group}`);\n      } else if (options.group) {\n        mainQueryItems.push(` GROUP BY ${options.group}`);\n      }\n    }\n\n    // Add HAVING to sub or main query\n    if (Object.prototype.hasOwnProperty.call(options, 'having')) {\n      options.having = this.getWhereConditions(options.having, tableName, model, options, false);\n      if (options.having) {\n        if (subQuery) {\n          subQueryItems.push(` HAVING ${options.having}`);\n        } else {\n          mainQueryItems.push(` HAVING ${options.having}`);\n        }\n      }\n    }\n\n    // Add ORDER to sub or main query\n    if (options.order) {\n      const orders = this.getQueryOrders(options, model, subQuery);\n      if (orders.mainQueryOrder.length) {\n        mainQueryItems.push(` ORDER BY ${orders.mainQueryOrder.join(', ')}`);\n      }\n      if (orders.subQueryOrder.length) {\n        subQueryItems.push(` ORDER BY ${orders.subQueryOrder.join(', ')}`);\n      }\n    }\n\n    // Add LIMIT, OFFSET to sub or main query\n    const limitOrder = this.addLimitAndOffset(options, mainTable.model);\n    if (limitOrder && !options.groupedLimit) {\n      if (subQuery) {\n        subQueryItems.push(limitOrder);\n      } else {\n        mainQueryItems.push(limitOrder);\n      }\n    }\n\n    if (subQuery) {\n      this._throwOnEmptyAttributes(attributes.main, { modelName: model && model.name, as: mainTable.as });\n      query = `SELECT ${attributes.main.join(', ')} FROM (${subQueryItems.join('')}) ${this.getAliasToken()} ${mainTable.as}${mainJoinQueries.join('')}${mainQueryItems.join('')}`;\n    } else {\n      query = mainQueryItems.join('');\n    }\n\n    if (options.lock && this._dialect.supports.lock) {\n      let lock = options.lock;\n      if (typeof options.lock === 'object') {\n        lock = options.lock.level;\n      }\n      if (this._dialect.supports.lockKey && ['KEY SHARE', 'NO KEY UPDATE'].includes(lock)) {\n        query += ` FOR ${lock}`;\n      } else if (lock === 'SHARE') {\n        query += ` ${this._dialect.supports.forShare}`;\n      } else {\n        query += ' FOR UPDATE';\n      }\n      if (this._dialect.supports.lockOf && options.lock.of && options.lock.of.prototype instanceof Model) {\n        query += ` OF ${this.quoteTable(options.lock.of.name)}`;\n      }\n      if (this._dialect.supports.skipLocked && options.skipLocked) {\n        query += ' SKIP LOCKED';\n      }\n    }\n\n    return `${query};`;\n  }\n\n  aliasGrouping(field, model, tableName, options) {\n    const src = Array.isArray(field) ? field[0] : field;\n\n    return this.quote(this._getAliasForField(tableName, src, options) || src, model);\n  }\n\n  escapeAttributes(attributes, options, mainTableAs) {\n    return attributes && attributes.map(attr => {\n      let addTable = true;\n\n      if (attr instanceof Utils.SequelizeMethod) {\n        return this.handleSequelizeMethod(attr);\n      }\n      if (Array.isArray(attr)) {\n        if (attr.length !== 2) {\n          throw new Error(`${JSON.stringify(attr)} is not a valid attribute definition. Please use the following format: ['attribute definition', 'alias']`);\n        }\n        attr = attr.slice();\n\n        if (attr[0] instanceof Utils.SequelizeMethod) {\n          attr[0] = this.handleSequelizeMethod(attr[0]);\n          addTable = false;\n        } else if (this.options.attributeBehavior === 'escape' || !attr[0].includes('(') && !attr[0].includes(')')) {\n          attr[0] = this.quoteIdentifier(attr[0]);\n        } else if (this.options.attributeBehavior !== 'unsafe-legacy') {\n          throw new Error(`Attributes cannot include parentheses in Sequelize 6:\nIn order to fix the vulnerability CVE-2023-22578, we had to remove support for treating attributes as raw SQL if they included parentheses.\nSequelize 7 escapes all attributes, even if they include parentheses.\nFor Sequelize 6, because we're introducing this change in a minor release, we've opted for throwing an error instead of silently escaping the attribute as a way to warn you about this change.\n\nHere is what you can do to fix this error:\n- Wrap the attribute in a literal() call. This will make Sequelize treat it as raw SQL.\n- Set the \"attributeBehavior\" sequelize option to \"escape\" to make Sequelize escape the attribute, like in Sequelize v7. We highly recommend this option.\n- Set the \"attributeBehavior\" sequelize option to \"unsafe-legacy\" to make Sequelize escape the attribute, like in Sequelize v5.\n\nWe sincerely apologize for the inconvenience this may cause you. You can find more information on the following threads:\nhttps://github.com/sequelize/sequelize/security/advisories/GHSA-f598-mfpv-gmfx\nhttps://github.com/sequelize/sequelize/discussions/15694`);\n        }\n\n        let alias = attr[1];\n\n        if (this.options.minifyAliases) {\n          alias = this._getMinifiedAlias(alias, mainTableAs, options);\n        }\n\n        attr = [attr[0], this.quoteIdentifier(alias)].join(' AS ');\n      } else {\n        attr = !attr.includes(Utils.TICK_CHAR) && !attr.includes('\"')\n          ? this.quoteAttribute(attr, options.model)\n          : this.escape(attr);\n      }\n      if (!_.isEmpty(options.include) && (!attr.includes('.') || options.dotNotation) && addTable) {\n        attr = `${mainTableAs}.${attr}`;\n      }\n\n      return attr;\n    });\n  }\n\n  generateInclude(include, parentTableName, topLevelInfo) {\n    const joinQueries = {\n      mainQuery: [],\n      subQuery: []\n    };\n    const mainChildIncludes = [];\n    const subChildIncludes = [];\n    let requiredMismatch = false;\n    const includeAs = {\n      internalAs: include.as,\n      externalAs: include.as\n    };\n    const attributes = {\n      main: [],\n      subQuery: []\n    };\n    let joinQuery;\n\n    topLevelInfo.options.keysEscaped = true;\n\n    if (topLevelInfo.names.name !== parentTableName.externalAs && topLevelInfo.names.as !== parentTableName.externalAs) {\n      includeAs.internalAs = `${parentTableName.internalAs}->${include.as}`;\n      includeAs.externalAs = `${parentTableName.externalAs}.${include.as}`;\n    }\n\n    // includeIgnoreAttributes is used by aggregate functions\n    if (topLevelInfo.options.includeIgnoreAttributes !== false) {\n      include.model._expandAttributes(include);\n      Utils.mapFinderOptions(include, include.model);\n\n      const includeAttributes = include.attributes.map(attr => {\n        let attrAs = attr;\n        let verbatim = false;\n\n        if (Array.isArray(attr) && attr.length === 2) {\n          if (attr[0] instanceof Utils.SequelizeMethod && (\n            attr[0] instanceof Utils.Literal ||\n            attr[0] instanceof Utils.Cast ||\n            attr[0] instanceof Utils.Fn\n          )) {\n            verbatim = true;\n          }\n\n          attr = attr.map(attr => attr instanceof Utils.SequelizeMethod ? this.handleSequelizeMethod(attr) : attr);\n\n          attrAs = attr[1];\n          attr = attr[0];\n        }\n        if (attr instanceof Utils.Literal) {\n          return attr.val; // We trust the user to rename the field correctly\n        }\n        if (attr instanceof Utils.Cast || attr instanceof Utils.Fn) {\n          throw new Error(\n            'Tried to select attributes using Sequelize.cast or Sequelize.fn without specifying an alias for the result, during eager loading. ' +\n            'This means the attribute will not be added to the returned instance'\n          );\n        }\n\n        let prefix;\n        if (verbatim === true) {\n          prefix = attr;\n        } else if (/#>>|->>/.test(attr)) {\n          prefix = `(${this.quoteIdentifier(includeAs.internalAs)}.${attr.replace(/\\(|\\)/g, '')})`;\n        } else if (/json_extract\\(/.test(attr)) {\n          prefix = attr.replace(/json_extract\\(/i, `json_extract(${this.quoteIdentifier(includeAs.internalAs)}.`);\n        } else if (/json_value\\(/.test(attr)) {\n          prefix = attr.replace(/json_value\\(/i, `json_value(${this.quoteIdentifier(includeAs.internalAs)}.`);\n        } else {\n          prefix = `${this.quoteIdentifier(includeAs.internalAs)}.${this.quoteIdentifier(attr)}`;\n        }\n        let alias = `${includeAs.externalAs}.${attrAs}`;\n\n        if (this.options.minifyAliases) {\n          alias = this._getMinifiedAlias(alias, includeAs.internalAs, topLevelInfo.options);\n        }\n\n        return Utils.joinSQLFragments([\n          prefix,\n          'AS',\n          this.quoteIdentifier(alias, true)\n        ]);\n      });\n      if (include.subQuery && topLevelInfo.subQuery) {\n        for (const attr of includeAttributes) {\n          attributes.subQuery.push(attr);\n        }\n      } else {\n        for (const attr of includeAttributes) {\n          attributes.main.push(attr);\n        }\n      }\n    }\n\n    //through\n    if (include.through) {\n      joinQuery = this.generateThroughJoin(include, includeAs, parentTableName.internalAs, topLevelInfo);\n    } else {\n      this._generateSubQueryFilter(include, includeAs, topLevelInfo);\n      joinQuery = this.generateJoin(include, topLevelInfo);\n    }\n\n    // handle possible new attributes created in join\n    if (joinQuery.attributes.main.length > 0) {\n      attributes.main = attributes.main.concat(joinQuery.attributes.main);\n    }\n\n    if (joinQuery.attributes.subQuery.length > 0) {\n      attributes.subQuery = attributes.subQuery.concat(joinQuery.attributes.subQuery);\n    }\n\n    if (include.include) {\n      for (const childInclude of include.include) {\n        if (childInclude.separate || childInclude._pseudo) {\n          continue;\n        }\n\n        const childJoinQueries = this.generateInclude(childInclude, includeAs, topLevelInfo);\n\n        if (include.required === false && childInclude.required === true) {\n          requiredMismatch = true;\n        }\n        // if the child is a sub query we just give it to the\n        if (childInclude.subQuery && topLevelInfo.subQuery) {\n          subChildIncludes.push(childJoinQueries.subQuery);\n        }\n        if (childJoinQueries.mainQuery) {\n          mainChildIncludes.push(childJoinQueries.mainQuery);\n        }\n        if (childJoinQueries.attributes.main.length > 0) {\n          attributes.main = attributes.main.concat(childJoinQueries.attributes.main);\n        }\n        if (childJoinQueries.attributes.subQuery.length > 0) {\n          attributes.subQuery = attributes.subQuery.concat(childJoinQueries.attributes.subQuery);\n        }\n      }\n    }\n\n    if (include.subQuery && topLevelInfo.subQuery) {\n      if (requiredMismatch && subChildIncludes.length > 0) {\n        joinQueries.subQuery.push(` ${joinQuery.join} ( ${joinQuery.body}${subChildIncludes.join('')} ) ON ${joinQuery.condition}`);\n      } else {\n        joinQueries.subQuery.push(` ${joinQuery.join} ${joinQuery.body} ON ${joinQuery.condition}`);\n        if (subChildIncludes.length > 0) {\n          joinQueries.subQuery.push(subChildIncludes.join(''));\n        }\n      }\n      joinQueries.mainQuery.push(mainChildIncludes.join(''));\n    } else {\n      if (requiredMismatch && mainChildIncludes.length > 0) {\n        joinQueries.mainQuery.push(` ${joinQuery.join} ( ${joinQuery.body}${mainChildIncludes.join('')} ) ON ${joinQuery.condition}`);\n      } else {\n        joinQueries.mainQuery.push(` ${joinQuery.join} ${joinQuery.body} ON ${joinQuery.condition}`);\n        if (mainChildIncludes.length > 0) {\n          joinQueries.mainQuery.push(mainChildIncludes.join(''));\n        }\n      }\n      joinQueries.subQuery.push(subChildIncludes.join(''));\n    }\n\n    return {\n      mainQuery: joinQueries.mainQuery.join(''),\n      subQuery: joinQueries.subQuery.join(''),\n      attributes\n    };\n  }\n\n  _getMinifiedAlias(alias, tableName, options) {\n    // We do not want to re-alias in case of a subquery\n    if (options.aliasesByTable[`${tableName}${alias}`]) {\n      return options.aliasesByTable[`${tableName}${alias}`];\n    }\n\n    // Do not alias custom suquery_orders\n    if (alias.match(/subquery_order_[0-9]/)) {\n      return alias;\n    }\n\n    const minifiedAlias = `_${options.aliasesMapping.size}`;\n\n    options.aliasesMapping.set(minifiedAlias, alias);\n    options.aliasesByTable[`${tableName}${alias}`] = minifiedAlias;\n\n    return minifiedAlias;\n  }\n\n  _getAliasForField(tableName, field, options) {\n    if (this.options.minifyAliases) {\n      if (options.aliasesByTable[`${tableName}${field}`]) {\n        return options.aliasesByTable[`${tableName}${field}`];\n      }\n    }\n    return null;\n  }\n\n  generateJoin(include, topLevelInfo) {\n    const association = include.association;\n    const parent = include.parent;\n    const parentIsTop = !!parent && !include.parent.association && include.parent.model.name === topLevelInfo.options.model.name;\n    let $parent;\n    let joinWhere;\n    /* Attributes for the left side */\n    const left = association.source;\n    const attrLeft = association instanceof BelongsTo ?\n      association.identifier :\n      association.sourceKeyAttribute || left.primaryKeyAttribute;\n    const fieldLeft = association instanceof BelongsTo ?\n      association.identifierField :\n      left.rawAttributes[association.sourceKeyAttribute || left.primaryKeyAttribute].field;\n    let asLeft;\n    /* Attributes for the right side */\n    const right = include.model;\n    const tableRight = right.getTableName();\n    const fieldRight = association instanceof BelongsTo ?\n      right.rawAttributes[association.targetIdentifier || right.primaryKeyAttribute].field :\n      association.identifierField;\n    let asRight = include.as;\n\n    while (($parent = $parent && $parent.parent || include.parent) && $parent.association) {\n      if (asLeft) {\n        asLeft = `${$parent.as}->${asLeft}`;\n      } else {\n        asLeft = $parent.as;\n      }\n    }\n\n    if (!asLeft) asLeft = parent.as || parent.model.name;\n    else asRight = `${asLeft}->${asRight}`;\n\n    let joinOn = `${this.quoteTable(asLeft)}.${this.quoteIdentifier(fieldLeft)}`;\n    const subqueryAttributes = [];\n\n    if (topLevelInfo.options.groupedLimit && parentIsTop || topLevelInfo.subQuery && include.parent.subQuery && !include.subQuery) {\n      if (parentIsTop) {\n        // The main model attributes is not aliased to a prefix\n        const tableName = this.quoteTable(parent.as || parent.model.name);\n\n        // Check for potential aliased JOIN condition\n        joinOn = this._getAliasForField(tableName, attrLeft, topLevelInfo.options) || `${tableName}.${this.quoteIdentifier(attrLeft)}`;\n\n        if (topLevelInfo.subQuery) {\n          const dbIdentifier = `${tableName}.${this.quoteIdentifier(fieldLeft)}`;\n          subqueryAttributes.push(dbIdentifier !== joinOn ? `${dbIdentifier} AS ${this.quoteIdentifier(attrLeft)}` : dbIdentifier);\n        }\n      } else {\n        const joinSource = `${asLeft.replace(/->/g, '.')}.${attrLeft}`;\n\n        // Check for potential aliased JOIN condition\n        joinOn = this._getAliasForField(asLeft, joinSource, topLevelInfo.options) || this.quoteIdentifier(joinSource);\n      }\n    }\n\n    joinOn += ` = ${this.quoteIdentifier(asRight)}.${this.quoteIdentifier(fieldRight)}`;\n\n    if (include.on) {\n      joinOn = this.whereItemsQuery(include.on, {\n        prefix: this.sequelize.literal(this.quoteIdentifier(asRight)),\n        model: include.model\n      });\n    }\n\n    if (include.where) {\n      joinWhere = this.whereItemsQuery(include.where, {\n        prefix: this.sequelize.literal(this.quoteIdentifier(asRight)),\n        model: include.model\n      });\n      if (joinWhere) {\n        if (include.or) {\n          joinOn += ` OR ${joinWhere}`;\n        } else {\n          joinOn += ` AND ${joinWhere}`;\n        }\n      }\n    }\n\n    this.aliasAs(asRight, topLevelInfo);\n\n    return {\n      join: include.required ? 'INNER JOIN' : include.right && this._dialect.supports['RIGHT JOIN'] ? 'RIGHT OUTER JOIN' : 'LEFT OUTER JOIN',\n      body: this.quoteTable(tableRight, asRight),\n      condition: joinOn,\n      attributes: {\n        main: [],\n        subQuery: subqueryAttributes\n      }\n    };\n  }\n\n  /**\n   * Returns the SQL fragments to handle returning the attributes from an insert/update query.\n   *\n   * @param  {object} modelAttributes An object with the model attributes.\n   * @param  {object} options         An object with options.\n   *\n   * @private\n   */\n  generateReturnValues(modelAttributes, options) {\n    const returnFields = [];\n    const returnTypes = [];\n    let outputFragment = '';\n    let returningFragment = '';\n    let tmpTable = '';\n\n    if (Array.isArray(options.returning)) {\n      returnFields.push(...options.returning.map(field => this.quoteIdentifier(field)));\n    } else if (modelAttributes) {\n      _.each(modelAttributes, attribute => {\n        if (!(attribute.type instanceof DataTypes.VIRTUAL)) {\n          returnFields.push(this.quoteIdentifier(attribute.field));\n          returnTypes.push(attribute.type);\n        }\n      });\n    }\n\n    if (_.isEmpty(returnFields)) {\n      returnFields.push('*');\n    }\n\n    if (this._dialect.supports.returnValues.returning) {\n      returningFragment = ` RETURNING ${returnFields.join(',')}`;\n    } else if (this._dialect.supports.returnIntoValues) {\n      returningFragment = ` RETURNING ${returnFields.join(',')} INTO `;\n    } else if (this._dialect.supports.returnValues.output) {\n      outputFragment = ` OUTPUT ${returnFields.map(field => `INSERTED.${field}`).join(',')}`;\n\n      //To capture output rows when there is a trigger on MSSQL DB\n      if (options.hasTrigger && this._dialect.supports.tmpTableTrigger) {\n        const tmpColumns = returnFields.map((field, i) => `${field} ${returnTypes[i].toSql()}`);\n\n        tmpTable = `DECLARE @tmp TABLE (${tmpColumns.join(',')}); `;\n        outputFragment += ' INTO @tmp';\n        returningFragment = '; SELECT * FROM @tmp';\n      }\n    }\n\n    return { outputFragment, returnFields, returnTypes, returningFragment, tmpTable };\n  }\n\n  generateThroughJoin(include, includeAs, parentTableName, topLevelInfo) {\n    const through = include.through;\n    const throughTable = through.model.getTableName();\n    const throughAs = `${includeAs.internalAs}->${through.as}`;\n    const externalThroughAs = `${includeAs.externalAs}.${through.as}`;\n    const throughAttributes = through.attributes.map(attr => {\n      let alias = `${externalThroughAs}.${Array.isArray(attr) ? attr[1] : attr}`;\n\n      if (this.options.minifyAliases) {\n        alias = this._getMinifiedAlias(alias, throughAs, topLevelInfo.options);\n      }\n\n      return Utils.joinSQLFragments([\n        `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(Array.isArray(attr) ? attr[0] : attr)}`,\n        'AS',\n        this.quoteIdentifier(alias)\n      ]);\n    });\n    const association = include.association;\n    const parentIsTop = !include.parent.association && include.parent.model.name === topLevelInfo.options.model.name;\n    const tableSource = parentTableName;\n    const identSource = association.identifierField;\n    const tableTarget = includeAs.internalAs;\n    const identTarget = association.foreignIdentifierField;\n    const attrTarget = association.targetKeyField;\n\n    const joinType = include.required ? 'INNER JOIN' : include.right && this._dialect.supports['RIGHT JOIN'] ? 'RIGHT OUTER JOIN' : 'LEFT OUTER JOIN';\n    let joinBody;\n    let joinCondition;\n    const attributes = {\n      main: [],\n      subQuery: []\n    };\n    let attrSource = association.sourceKey;\n    let sourceJoinOn;\n    let targetJoinOn;\n    let throughWhere;\n    let targetWhere;\n\n    if (topLevelInfo.options.includeIgnoreAttributes !== false) {\n      // Through includes are always hasMany, so we need to add the attributes to the mainAttributes no matter what (Real join will never be executed in subquery)\n      for (const attr of throughAttributes) {\n        attributes.main.push(attr);\n      }\n    }\n\n    // Figure out if we need to use field or attribute\n    if (!topLevelInfo.subQuery) {\n      attrSource = association.sourceKeyField;\n    }\n    if (topLevelInfo.subQuery && !include.subQuery && !include.parent.subQuery && include.parent.model !== topLevelInfo.options.mainModel) {\n      attrSource = association.sourceKeyField;\n    }\n\n    // Filter statement for left side of through\n    // Used by both join and subquery where\n    // If parent include was in a subquery need to join on the aliased attribute\n    if (topLevelInfo.subQuery && !include.subQuery && include.parent.subQuery && !parentIsTop) {\n      // If we are minifying aliases and our JOIN target has been minified, we need to use the alias instead of the original column name\n      const joinSource = this._getAliasForField(tableSource, `${tableSource}.${attrSource}`, topLevelInfo.options) || `${tableSource}.${attrSource}`;\n\n      sourceJoinOn = `${this.quoteIdentifier(joinSource)} = `;\n    } else {\n      // If we are minifying aliases and our JOIN target has been minified, we need to use the alias instead of the original column name\n      const aliasedSource = this._getAliasForField(tableSource, attrSource, topLevelInfo.options) || attrSource;\n\n      sourceJoinOn = `${this.quoteTable(tableSource)}.${this.quoteIdentifier(aliasedSource)} = `;\n    }\n    sourceJoinOn += `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(identSource)}`;\n\n    // Filter statement for right side of through\n    // Used by both join and subquery where\n    targetJoinOn = `${this.quoteIdentifier(tableTarget)}.${this.quoteIdentifier(attrTarget)} = `;\n    targetJoinOn += `${this.quoteIdentifier(throughAs)}.${this.quoteIdentifier(identTarget)}`;\n\n    if (through.where) {\n      throughWhere = this.getWhereConditions(through.where, this.sequelize.literal(this.quoteIdentifier(throughAs)), through.model);\n    }\n\n    this.aliasAs(includeAs.internalAs, topLevelInfo);\n\n    // Generate a wrapped join so that the through table join can be dependent on the target join\n    joinBody = `( ${this.quoteTable(throughTable, throughAs)} INNER JOIN ${this.quoteTable(include.model.getTableName(), includeAs.internalAs)} ON ${targetJoinOn}`;\n    if (throughWhere) {\n      joinBody += ` AND ${throughWhere}`;\n    }\n    joinBody += ')';\n    joinCondition = sourceJoinOn;\n\n    if (include.where || include.through.where) {\n      if (include.where) {\n        targetWhere = this.getWhereConditions(include.where, this.sequelize.literal(this.quoteIdentifier(includeAs.internalAs)), include.model, topLevelInfo.options);\n        if (targetWhere) {\n          joinCondition += ` AND ${targetWhere}`;\n        }\n      }\n    }\n\n    this._generateSubQueryFilter(include, includeAs, topLevelInfo);\n\n    return {\n      join: joinType,\n      body: joinBody,\n      condition: joinCondition,\n      attributes\n    };\n  }\n\n  /*\n   * Appends to the alias cache if the alias 64+ characters long and minifyAliases is true.\n   * This helps to avoid character limits in PostgreSQL.\n   */\n  aliasAs(as, topLevelInfo) {\n    if (this.options.minifyAliases && as.length >= 64) {\n      const alias = `%${topLevelInfo.options.includeAliases.size}`;\n\n      topLevelInfo.options.includeAliases.set(alias, as);\n    }\n  }\n\n  /*\n   * Generates subQueryFilter - a select nested in the where clause of the subQuery.\n   * For a given include a query is generated that contains all the way from the subQuery\n   * table to the include table plus everything that's in required transitive closure of the\n   * given include.\n   */\n  _generateSubQueryFilter(include, includeAs, topLevelInfo) {\n    if (!topLevelInfo.subQuery || !include.subQueryFilter) {\n      return;\n    }\n\n    if (!topLevelInfo.options.where) {\n      topLevelInfo.options.where = {};\n    }\n    let parent = include;\n    let child = include;\n    let nestedIncludes = this._getRequiredClosure(include).include;\n    let query;\n\n    while ((parent = parent.parent)) { // eslint-disable-line\n      if (parent.parent && !parent.required) {\n        return; // only generate subQueryFilter if all the parents of this include are required\n      }\n\n      if (parent.subQueryFilter) {\n        // the include is already handled as this parent has the include on its required closure\n        // skip to prevent duplicate subQueryFilter\n        return;\n      }\n\n      nestedIncludes = [{ ...child, include: nestedIncludes, attributes: [] }];\n      child = parent;\n    }\n\n    const topInclude = nestedIncludes[0];\n    const topParent = topInclude.parent;\n    const topAssociation = topInclude.association;\n    topInclude.association = undefined;\n\n    if (topInclude.through && Object(topInclude.through.model) === topInclude.through.model) {\n      query = this.selectQuery(topInclude.through.model.getTableName(), {\n        attributes: [topInclude.through.model.primaryKeyField],\n        include: Model._validateIncludedElements({\n          model: topInclude.through.model,\n          include: [{\n            association: topAssociation.toTarget,\n            required: true,\n            where: topInclude.where,\n            include: topInclude.include\n          }]\n        }).include,\n        model: topInclude.through.model,\n        where: {\n          [Op.and]: [\n            this.sequelize.literal([\n              `${this.quoteTable(topParent.model.name)}.${this.quoteIdentifier(topParent.model.primaryKeyField)}`,\n              `${this.quoteIdentifier(topInclude.through.model.name)}.${this.quoteIdentifier(topAssociation.identifierField)}`\n            ].join(' = ')),\n            topInclude.through.where\n          ]\n        },\n        limit: 1,\n        includeIgnoreAttributes: false\n      }, topInclude.through.model);\n    } else {\n      const isBelongsTo = topAssociation.associationType === 'BelongsTo';\n      const sourceField = isBelongsTo ? topAssociation.identifierField : topAssociation.sourceKeyField || topParent.model.primaryKeyField;\n      const targetField = isBelongsTo ? topAssociation.sourceKeyField || topInclude.model.primaryKeyField : topAssociation.identifierField;\n\n      const join = [\n        `${this.quoteIdentifier(topInclude.as)}.${this.quoteIdentifier(targetField)}`,\n        `${this.quoteTable(topParent.as || topParent.model.name)}.${this.quoteIdentifier(sourceField)}`\n      ].join(' = ');\n\n      query = this.selectQuery(topInclude.model.getTableName(), {\n        attributes: [targetField],\n        include: Model._validateIncludedElements(topInclude).include,\n        model: topInclude.model,\n        where: {\n          [Op.and]: [\n            topInclude.where,\n            { [Op.join]: this.sequelize.literal(join) }\n          ]\n        },\n        limit: 1,\n        tableAs: topInclude.as,\n        includeIgnoreAttributes: false\n      }, topInclude.model);\n    }\n\n    if (!topLevelInfo.options.where[Op.and]) {\n      topLevelInfo.options.where[Op.and] = [];\n    }\n\n    topLevelInfo.options.where[`__${includeAs.internalAs}`] = this.sequelize.literal([\n      '(',\n      query.replace(/;$/, ''),\n      ')',\n      'IS NOT NULL'\n    ].join(' '));\n  }\n\n  /*\n   * For a given include hierarchy creates a copy of it where only the required includes\n   * are preserved.\n   */\n  _getRequiredClosure(include) {\n    const copy = { ...include, attributes: [], include: [] };\n\n    if (Array.isArray(include.include)) {\n      copy.include = include.include\n        .filter(i => i.required)\n        .map(inc => this._getRequiredClosure(inc));\n    }\n\n    return copy;\n  }\n\n  getQueryOrders(options, model, subQuery) {\n    const mainQueryOrder = [];\n    const subQueryOrder = [];\n\n    if (Array.isArray(options.order)) {\n      for (let order of options.order) {\n\n        // wrap if not array\n        if (!Array.isArray(order)) {\n          order = [order];\n        }\n\n        if (\n          subQuery\n          && Array.isArray(order)\n          && order[0]\n          && !(order[0] instanceof Association)\n          && !(typeof order[0] === 'function' && order[0].prototype instanceof Model)\n          && !(typeof order[0].model === 'function' && order[0].model.prototype instanceof Model)\n          && !(typeof order[0] === 'string' && model && model.associations !== undefined && model.associations[order[0]])\n        ) {\n          const field = model.rawAttributes[order[0]] ? model.rawAttributes[order[0]].field : order[0];\n          const subQueryAlias = this._getAliasForField(this.quoteIdentifier(model.name), field, options);\n\n          let parent = null;\n          let orderToQuote = [];\n\n          // we need to ensure that the parent is null if we use the subquery alias, else we'll get an exception since\n          // \"model_name\".\"alias\" doesn't exist - only \"alias\" does. we also need to ensure that we preserve order direction\n          // by pushing order[1] to the subQueryOrder as well - in case it doesn't exist, we want to push \"ASC\"\n          if (subQueryAlias === null) {\n            orderToQuote = order;\n            parent = model;\n          } else {\n            orderToQuote = [subQueryAlias, order.length > 1 ? order[1] : 'ASC'];\n            parent = null;\n          }\n\n          subQueryOrder.push(this.quote(orderToQuote, parent, '->'));\n        }\n\n        // Handle case where renamed attributes are used to order by,\n        // see https://github.com/sequelize/sequelize/issues/8739\n        // need to check if either of the attribute options match the order\n        if (options.attributes && model) {\n          const aliasedAttribute = options.attributes.find(attr => Array.isArray(attr)\n              && attr[1]\n              && (attr[0] === order[0] || attr[1] === order[0]));\n\n          if (aliasedAttribute) {\n            const modelName = this.quoteIdentifier(model.name);\n            const alias = this._getAliasForField(modelName, aliasedAttribute[1], options);\n\n            order[0] = new Utils.Col(alias || aliasedAttribute[1]);\n          }\n        }\n\n        mainQueryOrder.push(this.quote(order, model, '->'));\n      }\n    } else if (options.order instanceof Utils.SequelizeMethod) {\n      const sql = this.quote(options.order, model, '->');\n      if (subQuery) {\n        subQueryOrder.push(sql);\n      }\n      mainQueryOrder.push(sql);\n    } else {\n      throw new Error('Order must be type of array or instance of a valid sequelize method.');\n    }\n\n    return { mainQueryOrder, subQueryOrder };\n  }\n\n  _throwOnEmptyAttributes(attributes, extraInfo = {}) {\n    if (attributes.length > 0) return;\n    const asPart = extraInfo.as && `as ${extraInfo.as}` || '';\n    const namePart = extraInfo.modelName && `for model '${extraInfo.modelName}'` || '';\n    const message = `Attempted a SELECT query ${namePart} ${asPart} without selecting any columns`;\n    throw new sequelizeError.QueryError(message.replace(/ +/g, ' '));\n  }\n\n  selectFromTableFragment(options, model, attributes, tables, mainTableAs) {\n    this._throwOnEmptyAttributes(attributes, { modelName: model && model.name, as: mainTableAs });\n\n    let fragment = `SELECT ${attributes.join(', ')} FROM ${tables}`;\n\n    if (mainTableAs) {\n      fragment += ` ${this.getAliasToken()} ${mainTableAs}`;\n    }\n\n    if (options.indexHints && this._dialect.supports.indexHints) {\n      for (const hint of options.indexHints) {\n        if (IndexHints[hint.type]) {\n          fragment += ` ${IndexHints[hint.type]} INDEX (${hint.values.map(indexName => this.quoteIdentifiers(indexName)).join(',')})`;\n        }\n      }\n    }\n\n    return fragment;\n  }\n\n  /**\n   * Returns an SQL fragment for adding result constraints.\n   *\n   * @param  {object} options An object with selectQuery options.\n   * @returns {string}         The generated sql query.\n   * @private\n   */\n  addLimitAndOffset(options) {\n    let fragment = '';\n\n    /* eslint-disable */\n    if (options.offset != null && options.limit == null) {\n      fragment += ' LIMIT ' + this.escape(options.offset) + ', ' + 10000000000000;\n    } else if (options.limit != null) {\n      if (options.offset != null) {\n        fragment += ' LIMIT ' + this.escape(options.offset) + ', ' + this.escape(options.limit);\n      } else {\n        fragment += ' LIMIT ' + this.escape(options.limit);\n      }\n    }\n    /* eslint-enable */\n\n    return fragment;\n  }\n\n  handleSequelizeMethod(smth, tableName, factory, options, prepend) {\n    let result;\n\n    if (Object.prototype.hasOwnProperty.call(this.OperatorMap, smth.comparator)) {\n      smth.comparator = this.OperatorMap[smth.comparator];\n    }\n\n    if (smth instanceof Utils.Where) {\n      let value = smth.logic;\n      let key;\n\n      if (smth.attribute instanceof Utils.SequelizeMethod) {\n        key = this.getWhereConditions(smth.attribute, tableName, factory, options, prepend);\n      } else {\n        key = `${this.quoteTable(smth.attribute.Model.name)}.${this.quoteIdentifier(smth.attribute.field || smth.attribute.fieldName)}`;\n      }\n\n      if (value && value instanceof Utils.SequelizeMethod) {\n        value = this.getWhereConditions(value, tableName, factory, options, prepend);\n\n        if (value === 'NULL') {\n          if (smth.comparator === '=') {\n            smth.comparator = 'IS';\n          }\n          if (smth.comparator === '!=') {\n            smth.comparator = 'IS NOT';\n          }\n        }\n\n        return [key, value].join(` ${smth.comparator} `);\n      }\n      if (_.isPlainObject(value)) {\n        return this.whereItemQuery(smth.attribute, value, {\n          model: factory\n        });\n      }\n      if ([this.OperatorMap[Op.between], this.OperatorMap[Op.notBetween]].includes(smth.comparator)) {\n        value = `${this.escape(value[0])} AND ${this.escape(value[1])}`;\n      } else if (typeof value === 'boolean') {\n        value = this.booleanValue(value);\n      } else {\n        value = this.escape(value);\n      }\n\n      if (value === 'NULL') {\n        if (smth.comparator === '=') {\n          smth.comparator = 'IS';\n        }\n        if (smth.comparator === '!=') {\n          smth.comparator = 'IS NOT';\n        }\n      }\n\n      return [key, value].join(` ${smth.comparator} `);\n    }\n    if (smth instanceof Utils.Literal) {\n      return smth.val;\n    }\n    if (smth instanceof Utils.Cast) {\n      if (smth.val instanceof Utils.SequelizeMethod) {\n        result = this.handleSequelizeMethod(smth.val, tableName, factory, options, prepend);\n      } else if (_.isPlainObject(smth.val)) {\n        result = this.whereItemsQuery(smth.val);\n      } else {\n        result = this.escape(smth.val);\n      }\n\n      return `CAST(${result} AS ${smth.type.toUpperCase()})`;\n    }\n    if (smth instanceof Utils.Fn) {\n      return `${smth.fn}(${\n        smth.args.map(arg => {\n          if (arg instanceof Utils.SequelizeMethod) {\n            return this.handleSequelizeMethod(arg, tableName, factory, options, prepend);\n          }\n          if (_.isPlainObject(arg)) {\n            return this.whereItemsQuery(arg);\n          }\n          return this.escape(typeof arg === 'string' ? arg.replace(/\\$/g, '$$$') : arg);\n        }).join(', ')\n      })`;\n    }\n    if (smth instanceof Utils.Col) {\n      if (Array.isArray(smth.col) && !factory) {\n        throw new Error('Cannot call Sequelize.col() with array outside of order / group clause');\n      }\n      if (smth.col.startsWith('*')) {\n        return '*';\n      }\n      return this.quote(smth.col, factory);\n    }\n    return smth.toString(this, factory);\n  }\n\n  whereQuery(where, options) {\n    const query = this.whereItemsQuery(where, options);\n    if (query && query.length) {\n      return `WHERE ${query}`;\n    }\n    return '';\n  }\n\n  whereItemsQuery(where, options, binding) {\n    if (\n      where === null ||\n      where === undefined ||\n      Utils.getComplexSize(where) === 0\n    ) {\n      // NO OP\n      return '';\n    }\n\n    if (typeof where === 'string') {\n      throw new Error('Support for `{where: \\'raw query\\'}` has been removed.');\n    }\n\n    const items = [];\n\n    binding = binding || 'AND';\n    if (binding[0] !== ' ') binding = ` ${binding} `;\n\n    if (_.isPlainObject(where)) {\n      Utils.getComplexKeys(where).forEach(prop => {\n        const item = where[prop];\n        items.push(this.whereItemQuery(prop, item, options));\n      });\n    } else {\n      items.push(this.whereItemQuery(undefined, where, options));\n    }\n\n    return items.length && items.filter(item => item && item.length).join(binding) || '';\n  }\n\n  whereItemQuery(key, value, options = {}) {\n    if (value === undefined) {\n      throw new Error(`WHERE parameter \"${key}\" has invalid \"undefined\" value`);\n    }\n\n    if (typeof key === 'string' && key.includes('.') && options.model) {\n      const keyParts = key.split('.');\n      if (options.model.rawAttributes[keyParts[0]] && options.model.rawAttributes[keyParts[0]].type instanceof DataTypes.JSON) {\n        const tmp = {};\n        const field = options.model.rawAttributes[keyParts[0]];\n        _.set(tmp, keyParts.slice(1), value);\n        return this.whereItemQuery(field.field || keyParts[0], tmp, { field, ...options });\n      }\n    }\n\n    const field = this._findField(key, options);\n    const fieldType = field && field.type || options.type;\n\n    const isPlainObject = _.isPlainObject(value);\n    const isArray = !isPlainObject && Array.isArray(value);\n    key = this.OperatorsAliasMap && this.OperatorsAliasMap[key] || key;\n    if (isPlainObject) {\n      value = this._replaceAliases(value);\n    }\n    const valueKeys = isPlainObject && Utils.getComplexKeys(value);\n\n    if (key === undefined) {\n      if (typeof value === 'string') {\n        return value;\n      }\n\n      if (isPlainObject && valueKeys.length === 1) {\n        return this.whereItemQuery(valueKeys[0], value[valueKeys[0]], options);\n      }\n    }\n\n    if (value === null) {\n      const opValue = options.bindParam ? 'NULL' : this.escape(value, field);\n      return this._joinKeyValue(key, opValue, this.OperatorMap[Op.is], options.prefix);\n    }\n\n    if (!value) {\n      const opValue = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);\n      return this._joinKeyValue(key, opValue, this.OperatorMap[Op.eq], options.prefix);\n    }\n\n    if (value instanceof Utils.SequelizeMethod && !(key !== undefined && value instanceof Utils.Fn)) {\n      return this.handleSequelizeMethod(value);\n    }\n\n    // Convert where: [] to Op.and if possible, else treat as literal/replacements\n    if (key === undefined && isArray) {\n      if (Utils.canTreatArrayAsAnd(value)) {\n        key = Op.and;\n      } else {\n        throw new Error('Support for literal replacements in the `where` object has been removed.');\n      }\n    }\n\n    if (key === Op.or || key === Op.and || key === Op.not) {\n      return this._whereGroupBind(key, value, options);\n    }\n\n\n    if (value[Op.or]) {\n      return this._whereBind(this.OperatorMap[Op.or], key, value[Op.or], options);\n    }\n\n    if (value[Op.and]) {\n      return this._whereBind(this.OperatorMap[Op.and], key, value[Op.and], options);\n    }\n\n    if (isArray && fieldType instanceof DataTypes.ARRAY) {\n      const opValue = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);\n      return this._joinKeyValue(key, opValue, this.OperatorMap[Op.eq], options.prefix);\n    }\n\n    if (isPlainObject && fieldType instanceof DataTypes.JSON && options.json !== false) {\n      return this._whereJSON(key, value, options);\n    }\n    // If multiple keys we combine the different logic conditions\n    if (isPlainObject && valueKeys.length > 1) {\n      return this._whereBind(this.OperatorMap[Op.and], key, value, options);\n    }\n\n    if (isArray) {\n      return this._whereParseSingleValueObject(key, field, Op.in, value, options);\n    }\n    if (isPlainObject) {\n      if (this.OperatorMap[valueKeys[0]]) {\n        return this._whereParseSingleValueObject(key, field, valueKeys[0], value[valueKeys[0]], options);\n      }\n      return this._whereParseSingleValueObject(key, field, this.OperatorMap[Op.eq], value, options);\n    }\n\n    if (key === Op.placeholder) {\n      const opValue = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);\n      return this._joinKeyValue(this.OperatorMap[key], opValue, this.OperatorMap[Op.eq], options.prefix);\n    }\n\n    const opValue = options.bindParam ? this.format(value, field, options, options.bindParam) : this.escape(value, field);\n    return this._joinKeyValue(key, opValue, this.OperatorMap[Op.eq], options.prefix);\n  }\n\n  _findField(key, options) {\n    if (options.field) {\n      return options.field;\n    }\n\n    if (options.model && options.model.rawAttributes && options.model.rawAttributes[key]) {\n      return options.model.rawAttributes[key];\n    }\n\n    if (options.model && options.model.fieldRawAttributesMap && options.model.fieldRawAttributesMap[key]) {\n      return options.model.fieldRawAttributesMap[key];\n    }\n  }\n\n  // OR/AND/NOT grouping logic\n  _whereGroupBind(key, value, options) {\n    const binding = key === Op.or ? this.OperatorMap[Op.or] : this.OperatorMap[Op.and];\n    const outerBinding = key === Op.not ? 'NOT ' : '';\n\n    if (Array.isArray(value)) {\n      value = value.map(item => {\n        let itemQuery = this.whereItemsQuery(item, options, this.OperatorMap[Op.and]);\n        if (itemQuery && itemQuery.length && (Array.isArray(item) || _.isPlainObject(item)) && Utils.getComplexSize(item) > 1) {\n          itemQuery = `(${itemQuery})`;\n        }\n        return itemQuery;\n      }).filter(item => item && item.length);\n\n      value = value.length && value.join(binding);\n    } else {\n      value = this.whereItemsQuery(value, options, binding);\n    }\n    // Op.or: [] should return no data.\n    // Op.not of no restriction should also return no data\n    if ((key === Op.or || key === Op.not) && !value) {\n      return '0 = 1';\n    }\n\n    return value ? `${outerBinding}(${value})` : undefined;\n  }\n\n  _whereBind(binding, key, value, options) {\n    if (_.isPlainObject(value)) {\n      value = Utils.getComplexKeys(value).map(prop => {\n        const item = value[prop];\n        return this.whereItemQuery(key, { [prop]: item }, options);\n      });\n    } else {\n      value = value.map(item => this.whereItemQuery(key, item, options));\n    }\n\n    value = value.filter(item => item && item.length);\n\n    return value.length ? `(${value.join(binding)})` : undefined;\n  }\n\n  _whereJSON(key, value, options) {\n    const items = [];\n    let baseKey = this.quoteIdentifier(key);\n    if (options.prefix) {\n      if (options.prefix instanceof Utils.Literal) {\n        baseKey = `${this.handleSequelizeMethod(options.prefix)}.${baseKey}`;\n      } else {\n        baseKey = `${this.quoteTable(options.prefix)}.${baseKey}`;\n      }\n    }\n\n    Utils.getOperators(value).forEach(op => {\n      const where = {\n        [op]: value[op]\n      };\n      items.push(this.whereItemQuery(key, where, { ...options, json: false }));\n    });\n\n    _.forOwn(value, (item, prop) => {\n      this._traverseJSON(items, baseKey, prop, item, [prop]);\n    });\n\n    const result = items.join(this.OperatorMap[Op.and]);\n    return items.length > 1 ? `(${result})` : result;\n  }\n\n  _traverseJSON(items, baseKey, prop, item, path) {\n    let cast;\n\n    if (path[path.length - 1].includes('::')) {\n      const tmp = path[path.length - 1].split('::');\n      cast = tmp[1];\n      path[path.length - 1] = tmp[0];\n    }\n\n    let pathKey = this.jsonPathExtractionQuery(baseKey, path);\n\n    if (_.isPlainObject(item)) {\n      Utils.getOperators(item).forEach(op => {\n        const value = this._toJSONValue(item[op]);\n        let isJson = false;\n        if (typeof value === 'string' && op === Op.contains) {\n          try {\n            JSON.stringify(value);\n            isJson = true;\n          } catch (e) {\n            // failed to parse, is not json so isJson remains false\n          }\n        }\n        pathKey = this.jsonPathExtractionQuery(baseKey, path, isJson);\n        items.push(this.whereItemQuery(this._castKey(pathKey, value, cast), { [op]: value }));\n      });\n      _.forOwn(item, (value, itemProp) => {\n        this._traverseJSON(items, baseKey, itemProp, value, path.concat([itemProp]));\n      });\n\n      return;\n    }\n\n    item = this._toJSONValue(item);\n    items.push(this.whereItemQuery(this._castKey(pathKey, item, cast), { [Op.eq]: item }));\n  }\n\n  _toJSONValue(value) {\n    return value;\n  }\n\n  _castKey(key, value, cast, json) {\n    cast = cast || this._getJsonCast(Array.isArray(value) ? value[0] : value);\n    if (cast) {\n      return new Utils.Literal(this.handleSequelizeMethod(new Utils.Cast(new Utils.Literal(key), cast, json)));\n    }\n\n    return new Utils.Literal(key);\n  }\n\n  _getJsonCast(value) {\n    if (typeof value === 'number') {\n      return 'double precision';\n    }\n    if (value instanceof Date) {\n      return 'timestamptz';\n    }\n    if (typeof value === 'boolean') {\n      return 'boolean';\n    }\n    return;\n  }\n\n  _joinKeyValue(key, value, comparator, prefix) {\n    if (!key) {\n      return value;\n    }\n    if (comparator === undefined) {\n      throw new Error(`${key} and ${value} has no comparator`);\n    }\n    key = this._getSafeKey(key, prefix);\n    return [key, value].join(` ${comparator} `);\n  }\n\n  _getSafeKey(key, prefix) {\n    if (key instanceof Utils.SequelizeMethod) {\n      key = this.handleSequelizeMethod(key);\n      return this._prefixKey(this.handleSequelizeMethod(key), prefix);\n    }\n\n    if (Utils.isColString(key)) {\n      key = key.substr(1, key.length - 2).split('.');\n\n      if (key.length > 2) {\n        key = [\n          // join the tables by -> to match out internal namings\n          key.slice(0, -1).join('->'),\n          key[key.length - 1]\n        ];\n      }\n\n      return key.map(identifier => this.quoteIdentifier(identifier)).join('.');\n    }\n\n    return this._prefixKey(this.quoteIdentifier(key), prefix);\n  }\n\n  _prefixKey(key, prefix) {\n    if (prefix) {\n      if (prefix instanceof Utils.Literal) {\n        return [this.handleSequelizeMethod(prefix), key].join('.');\n      }\n\n      return [this.quoteTable(prefix), key].join('.');\n    }\n\n    return key;\n  }\n\n  _whereParseSingleValueObject(key, field, prop, value, options) {\n    if (prop === Op.not) {\n      if (Array.isArray(value)) {\n        prop = Op.notIn;\n      } else if (value !== null && value !== true && value !== false) {\n        prop = Op.ne;\n      }\n    }\n\n    let comparator = this.OperatorMap[prop] || this.OperatorMap[Op.eq];\n\n    switch (prop) {\n      case Op.in:\n      case Op.notIn:\n        if (value instanceof Utils.Literal) {\n          return this._joinKeyValue(key, value.val, comparator, options.prefix);\n        }\n\n        if (value.length) {\n          return this._joinKeyValue(key, `(${value.map(item => this.escape(item, field)).join(', ')})`, comparator, options.prefix);\n        }\n\n        if (comparator === this.OperatorMap[Op.in]) {\n          return this._joinKeyValue(key, '(NULL)', comparator, options.prefix);\n        }\n\n        return '';\n      case Op.any:\n      case Op.all:\n        comparator = `${this.OperatorMap[Op.eq]} ${comparator}`;\n        if (value[Op.values]) {\n          return this._joinKeyValue(key, `(VALUES ${value[Op.values].map(item => `(${this.escape(item)})`).join(', ')})`, comparator, options.prefix);\n        }\n\n        return this._joinKeyValue(key, `(${this.escape(value, field)})`, comparator, options.prefix);\n      case Op.between:\n      case Op.notBetween:\n        return this._joinKeyValue(key, `${this.escape(value[0], field)} AND ${this.escape(value[1], field)}`, comparator, options.prefix);\n      case Op.raw:\n        throw new Error('The `$raw` where property is no longer supported.  Use `sequelize.literal` instead.');\n      case Op.col:\n        comparator = this.OperatorMap[Op.eq];\n        value = value.split('.');\n\n        if (value.length > 2) {\n          value = [\n            // join the tables by -> to match out internal namings\n            value.slice(0, -1).join('->'),\n            value[value.length - 1]\n          ];\n        }\n\n        return this._joinKeyValue(key, value.map(identifier => this.quoteIdentifier(identifier)).join('.'), comparator, options.prefix);\n      case Op.startsWith:\n      case Op.endsWith:\n      case Op.substring:\n        comparator = this.OperatorMap[Op.like];\n\n        if (value instanceof Utils.Literal) {\n          value = value.val;\n        }\n\n        let pattern = `${value}%`;\n\n        if (prop === Op.endsWith) pattern = `%${value}`;\n        if (prop === Op.substring) pattern = `%${value}%`;\n\n        return this._joinKeyValue(key, this.escape(pattern), comparator, options.prefix);\n    }\n\n    const escapeOptions = {\n      acceptStrings: comparator.includes(this.OperatorMap[Op.like])\n    };\n\n    if (_.isPlainObject(value)) {\n      if (value[Op.col]) {\n        return this._joinKeyValue(key, this.whereItemQuery(null, value), comparator, options.prefix);\n      }\n      if (value[Op.any]) {\n        escapeOptions.isList = true;\n        return this._joinKeyValue(key, `(${this.escape(value[Op.any], field, escapeOptions)})`, `${comparator} ${this.OperatorMap[Op.any]}`, options.prefix);\n      }\n      if (value[Op.all]) {\n        escapeOptions.isList = true;\n        return this._joinKeyValue(key, `(${this.escape(value[Op.all], field, escapeOptions)})`, `${comparator} ${this.OperatorMap[Op.all]}`, options.prefix);\n      }\n    }\n\n    if (value === null && comparator === this.OperatorMap[Op.eq]) {\n      return this._joinKeyValue(key, this.escape(value, field, escapeOptions), this.OperatorMap[Op.is], options.prefix);\n    }\n    if (value === null && comparator === this.OperatorMap[Op.ne]) {\n      return this._joinKeyValue(key, this.escape(value, field, escapeOptions), this.OperatorMap[Op.not], options.prefix);\n    }\n\n    return this._joinKeyValue(key, this.escape(value, field, escapeOptions), comparator, options.prefix);\n  }\n\n  /*\n    Takes something and transforms it into values of a where condition.\n   @private\n  */\n  getWhereConditions(smth, tableName, factory, options, prepend) {\n    const where = {};\n\n    if (Array.isArray(tableName)) {\n      tableName = tableName[0];\n      if (Array.isArray(tableName)) {\n        tableName = tableName[1];\n      }\n    }\n\n    options = options || {};\n\n    if (prepend === undefined) {\n      prepend = true;\n    }\n\n    if (smth && smth instanceof Utils.SequelizeMethod) { // Checking a property is cheaper than a lot of instanceof calls\n      return this.handleSequelizeMethod(smth, tableName, factory, options, prepend);\n    }\n    if (_.isPlainObject(smth)) {\n      return this.whereItemsQuery(smth, {\n        model: factory,\n        prefix: prepend && tableName,\n        type: options.type\n      });\n    }\n    if (typeof smth === 'number' || typeof smth === 'bigint') {\n      let primaryKeys = factory ? Object.keys(factory.primaryKeys) : [];\n\n      if (primaryKeys.length > 0) {\n        // Since we're just a number, assume only the first key\n        primaryKeys = primaryKeys[0];\n      } else {\n        primaryKeys = 'id';\n      }\n\n      where[primaryKeys] = smth;\n\n      return this.whereItemsQuery(where, {\n        model: factory,\n        prefix: prepend && tableName\n      });\n    }\n    if (typeof smth === 'string') {\n      return this.whereItemsQuery(smth, {\n        model: factory,\n        prefix: prepend && tableName\n      });\n    }\n    if (Buffer.isBuffer(smth)) {\n      return this.escape(smth);\n    }\n    if (Array.isArray(smth)) {\n      if (smth.length === 0 || smth.length > 0 && smth[0].length === 0) return '1=1';\n      if (Utils.canTreatArrayAsAnd(smth)) {\n        const _smth = { [Op.and]: smth };\n        return this.getWhereConditions(_smth, tableName, factory, options, prepend);\n      }\n      throw new Error('Support for literal replacements in the `where` object has been removed.');\n    }\n    if (smth == null) {\n      return this.whereItemsQuery(smth, {\n        model: factory,\n        prefix: prepend && tableName\n      });\n    }\n\n    throw new Error(`Unsupported where option value: ${util.inspect(smth)}. Please refer to the Sequelize documentation to learn more about which values are accepted as part of the where option.`);\n  }\n\n  // A recursive parser for nested where conditions\n  parseConditionObject(conditions, path) {\n    path = path || [];\n    return _.reduce(conditions, (result, value, key) => {\n      if (_.isObject(value)) {\n        return result.concat(this.parseConditionObject(value, path.concat(key))); // Recursively parse objects\n      }\n      result.push({ path: path.concat(key), value });\n      return result;\n    }, []);\n  }\n\n  booleanValue(value) {\n    return value;\n  }\n\n  /**\n   * Returns the authenticate test query string\n   */\n  authTestQuery() {\n    return 'SELECT 1+1 AS result';\n  }\n}\n\nObject.assign(QueryGenerator.prototype, require('./query-generator/operators'));\nObject.assign(QueryGenerator.prototype, require('./query-generator/transaction'));\n\nmodule.exports = QueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator/operators.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator/operators.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,94 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const _ = require("lodash");
-const Op = require("../../../operators");
-const Utils = require("../../../utils");
-const OperatorHelpers = {
-  OperatorMap: {
-    [Op.eq]: "=",
-    [Op.ne]: "!=",
-    [Op.gte]: ">=",
-    [Op.gt]: ">",
-    [Op.lte]: "<=",
-    [Op.lt]: "<",
-    [Op.not]: "IS NOT",
-    [Op.is]: "IS",
-    [Op.in]: "IN",
-    [Op.notIn]: "NOT IN",
-    [Op.like]: "LIKE",
-    [Op.notLike]: "NOT LIKE",
-    [Op.iLike]: "ILIKE",
-    [Op.notILike]: "NOT ILIKE",
-    [Op.startsWith]: "LIKE",
-    [Op.endsWith]: "LIKE",
-    [Op.substring]: "LIKE",
-    [Op.regexp]: "~",
-    [Op.notRegexp]: "!~",
-    [Op.iRegexp]: "~*",
-    [Op.notIRegexp]: "!~*",
-    [Op.between]: "BETWEEN",
-    [Op.notBetween]: "NOT BETWEEN",
-    [Op.overlap]: "&&",
-    [Op.contains]: "@>",
-    [Op.contained]: "<@",
-    [Op.adjacent]: "-|-",
-    [Op.strictLeft]: "<<",
-    [Op.strictRight]: ">>",
-    [Op.noExtendRight]: "&<",
-    [Op.noExtendLeft]: "&>",
-    [Op.any]: "ANY",
-    [Op.all]: "ALL",
-    [Op.and]: " AND ",
-    [Op.or]: " OR ",
-    [Op.col]: "COL",
-    [Op.placeholder]: "$$PLACEHOLDER$$",
-    [Op.match]: "@@"
-  },
-  OperatorsAliasMap: {},
-  setOperatorsAliases(aliases) {
-    if (!aliases || _.isEmpty(aliases)) {
-      this.OperatorsAliasMap = false;
-    } else {
-      this.OperatorsAliasMap = __spreadValues({}, aliases);
-    }
-  },
-  _replaceAliases(orig) {
-    const obj = {};
-    if (!this.OperatorsAliasMap) {
-      return orig;
-    }
-    Utils.getOperators(orig).forEach((op) => {
-      const item = orig[op];
-      if (_.isPlainObject(item)) {
-        obj[op] = this._replaceAliases(item);
-      } else {
-        obj[op] = item;
-      }
-    });
-    _.forOwn(orig, (item, prop) => {
-      prop = this.OperatorsAliasMap[prop] || prop;
-      if (_.isPlainObject(item)) {
-        item = this._replaceAliases(item);
-      }
-      obj[prop] = item;
-    });
-    return obj;
-  }
-};
-module.exports = OperatorHelpers;
-//# sourceMappingURL=operators.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator/operators.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator/operators.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../../src/dialects/abstract/query-generator/operators.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Op = require('../../../operators');\nconst Utils = require('../../../utils');\n\nconst OperatorHelpers = {\n  OperatorMap: {\n    [Op.eq]: '=',\n    [Op.ne]: '!=',\n    [Op.gte]: '>=',\n    [Op.gt]: '>',\n    [Op.lte]: '<=',\n    [Op.lt]: '<',\n    [Op.not]: 'IS NOT',\n    [Op.is]: 'IS',\n    [Op.in]: 'IN',\n    [Op.notIn]: 'NOT IN',\n    [Op.like]: 'LIKE',\n    [Op.notLike]: 'NOT LIKE',\n    [Op.iLike]: 'ILIKE',\n    [Op.notILike]: 'NOT ILIKE',\n    [Op.startsWith]: 'LIKE',\n    [Op.endsWith]: 'LIKE',\n    [Op.substring]: 'LIKE',\n    [Op.regexp]: '~',\n    [Op.notRegexp]: '!~',\n    [Op.iRegexp]: '~*',\n    [Op.notIRegexp]: '!~*',\n    [Op.between]: 'BETWEEN',\n    [Op.notBetween]: 'NOT BETWEEN',\n    [Op.overlap]: '&&',\n    [Op.contains]: '@>',\n    [Op.contained]: '<@',\n    [Op.adjacent]: '-|-',\n    [Op.strictLeft]: '<<',\n    [Op.strictRight]: '>>',\n    [Op.noExtendRight]: '&<',\n    [Op.noExtendLeft]: '&>',\n    [Op.any]: 'ANY',\n    [Op.all]: 'ALL',\n    [Op.and]: ' AND ',\n    [Op.or]: ' OR ',\n    [Op.col]: 'COL',\n    [Op.placeholder]: '$$PLACEHOLDER$$',\n    [Op.match]: '@@'\n  },\n\n  OperatorsAliasMap: {},\n\n  setOperatorsAliases(aliases) {\n    if (!aliases || _.isEmpty(aliases)) {\n      this.OperatorsAliasMap = false;\n    } else {\n      this.OperatorsAliasMap = { ...aliases };\n    }\n  },\n\n  _replaceAliases(orig) {\n    const obj = {};\n    if (!this.OperatorsAliasMap) {\n      return orig;\n    }\n\n    Utils.getOperators(orig).forEach(op => {\n      const item = orig[op];\n      if (_.isPlainObject(item)) {\n        obj[op] = this._replaceAliases(item);\n      } else {\n        obj[op] = item;\n      }\n    });\n\n    _.forOwn(orig, (item, prop) => {\n      prop = this.OperatorsAliasMap[prop] || prop;\n      if (_.isPlainObject(item)) {\n        item = this._replaceAliases(item);\n      }\n      obj[prop] = item;\n    });\n    return obj;\n  }\n};\n\nmodule.exports = OperatorHelpers;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,KAAK,QAAQ;AACnB,MAAM,QAAQ,QAAQ;AAEtB,MAAM,kBAAkB;AAAA,EACtB,aAAa;AAAA,KACV,GAAG,KAAK;AAAA,KACR,GAAG,KAAK;AAAA,KACR,GAAG,MAAM;AAAA,KACT,GAAG,KAAK;AAAA,KACR,GAAG,MAAM;AAAA,KACT,GAAG,KAAK;AAAA,KACR,GAAG,MAAM;AAAA,KACT,GAAG,KAAK;AAAA,KACR,GAAG,KAAK;AAAA,KACR,GAAG,QAAQ;AAAA,KACX,GAAG,OAAO;AAAA,KACV,GAAG,UAAU;AAAA,KACb,GAAG,QAAQ;AAAA,KACX,GAAG,WAAW;AAAA,KACd,GAAG,aAAa;AAAA,KAChB,GAAG,WAAW;AAAA,KACd,GAAG,YAAY;AAAA,KACf,GAAG,SAAS;AAAA,KACZ,GAAG,YAAY;AAAA,KACf,GAAG,UAAU;AAAA,KACb,GAAG,aAAa;AAAA,KAChB,GAAG,UAAU;AAAA,KACb,GAAG,aAAa;AAAA,KAChB,GAAG,UAAU;AAAA,KACb,GAAG,WAAW;AAAA,KACd,GAAG,YAAY;AAAA,KACf,GAAG,WAAW;AAAA,KACd,GAAG,aAAa;AAAA,KAChB,GAAG,cAAc;AAAA,KACjB,GAAG,gBAAgB;AAAA,KACnB,GAAG,eAAe;AAAA,KAClB,GAAG,MAAM;AAAA,KACT,GAAG,MAAM;AAAA,KACT,GAAG,MAAM;AAAA,KACT,GAAG,KAAK;AAAA,KACR,GAAG,MAAM;AAAA,KACT,GAAG,cAAc;AAAA,KACjB,GAAG,QAAQ;AAAA;AAAA,EAGd,mBAAmB;AAAA,EAEnB,oBAAoB,SAAS;AAC3B,QAAI,CAAC,WAAW,EAAE,QAAQ,UAAU;AAClC,WAAK,oBAAoB;AAAA,WACpB;AACL,WAAK,oBAAoB,mBAAK;AAAA;AAAA;AAAA,EAIlC,gBAAgB,MAAM;AACpB,UAAM,MAAM;AACZ,QAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAO;AAAA;AAGT,UAAM,aAAa,MAAM,QAAQ,QAAM;AACrC,YAAM,OAAO,KAAK;AAClB,UAAI,EAAE,cAAc,OAAO;AACzB,YAAI,MAAM,KAAK,gBAAgB;AAAA,aAC1B;AACL,YAAI,MAAM;AAAA;AAAA;AAId,MAAE,OAAO,MAAM,CAAC,MAAM,SAAS;AAC7B,aAAO,KAAK,kBAAkB,SAAS;AACvC,UAAI,EAAE,cAAc,OAAO;AACzB,eAAO,KAAK,gBAAgB;AAAA;AAE9B,UAAI,QAAQ;AAAA;AAEd,WAAO;AAAA;AAAA;AAIX,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator/transaction.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator/transaction.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-"use strict";
-const uuidv4 = require("uuid").v4;
-const TransactionQueries = {
-  setIsolationLevelQuery(value, options) {
-    if (options.parent) {
-      return;
-    }
-    return `SET TRANSACTION ISOLATION LEVEL ${value};`;
-  },
-  generateTransactionId() {
-    return uuidv4();
-  },
-  startTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `SAVEPOINT ${this.quoteIdentifier(transaction.name, true)};`;
-    }
-    return "START TRANSACTION;";
-  },
-  deferConstraintsQuery() {
-  },
-  setConstraintQuery() {
-  },
-  setDeferredQuery() {
-  },
-  setImmediateQuery() {
-  },
-  commitTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return;
-    }
-    return "COMMIT;";
-  },
-  rollbackTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `ROLLBACK TO SAVEPOINT ${this.quoteIdentifier(transaction.name, true)};`;
-    }
-    return "ROLLBACK;";
-  }
-};
-module.exports = TransactionQueries;
-//# sourceMappingURL=transaction.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-generator/transaction.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-generator/transaction.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../../src/dialects/abstract/query-generator/transaction.js"],
-  "sourcesContent": ["'use strict';\n\nconst uuidv4 = require('uuid').v4;\n\nconst TransactionQueries = {\n  /**\n   * Returns a query that sets the transaction isolation level.\n   *\n   * @param  {string} value   The isolation level.\n   * @param  {object} options An object with options.\n   * @returns {string}         The generated sql query.\n   * @private\n   */\n  setIsolationLevelQuery(value, options) {\n    if (options.parent) {\n      return;\n    }\n\n    return `SET TRANSACTION ISOLATION LEVEL ${value};`;\n  },\n\n  generateTransactionId() {\n    return uuidv4();\n  },\n\n  /**\n   * Returns a query that starts a transaction.\n   *\n   * @param  {Transaction} transaction\n   * @returns {string}         The generated sql query.\n   * @private\n   */\n  startTransactionQuery(transaction) {\n    if (transaction.parent) {\n      // force quoting of savepoint identifiers for postgres\n      return `SAVEPOINT ${this.quoteIdentifier(transaction.name, true)};`;\n    }\n\n    return 'START TRANSACTION;';\n  },\n\n  deferConstraintsQuery() {},\n\n  setConstraintQuery() {},\n  setDeferredQuery() {},\n  setImmediateQuery() {},\n\n  /**\n   * Returns a query that commits a transaction.\n   *\n   * @param  {Transaction} transaction An object with options.\n   * @returns {string}         The generated sql query.\n   * @private\n   */\n  commitTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return;\n    }\n\n    return 'COMMIT;';\n  },\n\n  /**\n   * Returns a query that rollbacks a transaction.\n   *\n   * @param  {Transaction} transaction\n   * @returns {string}         The generated sql query.\n   * @private\n   */\n  rollbackTransactionQuery(transaction) {\n    if (transaction.parent) {\n      // force quoting of savepoint identifiers for postgres\n      return `ROLLBACK TO SAVEPOINT ${this.quoteIdentifier(transaction.name, true)};`;\n    }\n\n    return 'ROLLBACK;';\n  }\n};\n\nmodule.exports = TransactionQueries;\n"],
-  "mappings": ";AAEA,MAAM,SAAS,QAAQ,QAAQ;AAE/B,MAAM,qBAAqB;AAAA,EASzB,uBAAuB,OAAO,SAAS;AACrC,QAAI,QAAQ,QAAQ;AAClB;AAAA;AAGF,WAAO,mCAAmC;AAAA;AAAA,EAG5C,wBAAwB;AACtB,WAAO;AAAA;AAAA,EAUT,sBAAsB,aAAa;AACjC,QAAI,YAAY,QAAQ;AAEtB,aAAO,aAAa,KAAK,gBAAgB,YAAY,MAAM;AAAA;AAG7D,WAAO;AAAA;AAAA,EAGT,wBAAwB;AAAA;AAAA,EAExB,qBAAqB;AAAA;AAAA,EACrB,mBAAmB;AAAA;AAAA,EACnB,oBAAoB;AAAA;AAAA,EASpB,uBAAuB,aAAa;AAClC,QAAI,YAAY,QAAQ;AACtB;AAAA;AAGF,WAAO;AAAA;AAAA,EAUT,yBAAyB,aAAa;AACpC,QAAI,YAAY,QAAQ;AAEtB,aAAO,yBAAyB,KAAK,gBAAgB,YAAY,MAAM;AAAA;AAGzE,WAAO;AAAA;AAAA;AAIX,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,569 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const _ = require("lodash");
-const Utils = require("../../utils");
-const DataTypes = require("../../data-types");
-const Transaction = require("../../transaction");
-const QueryTypes = require("../../query-types");
-class QueryInterface {
-  constructor(sequelize, queryGenerator) {
-    this.sequelize = sequelize;
-    this.queryGenerator = queryGenerator;
-  }
-  async createDatabase(database, options) {
-    options = options || {};
-    const sql = this.queryGenerator.createDatabaseQuery(database, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async dropDatabase(database, options) {
-    options = options || {};
-    const sql = this.queryGenerator.dropDatabaseQuery(database);
-    return await this.sequelize.query(sql, options);
-  }
-  async createSchema(schema, options) {
-    options = options || {};
-    const sql = this.queryGenerator.createSchema(schema);
-    return await this.sequelize.query(sql, options);
-  }
-  async dropSchema(schema, options) {
-    options = options || {};
-    const sql = this.queryGenerator.dropSchema(schema);
-    return await this.sequelize.query(sql, options);
-  }
-  async dropAllSchemas(options) {
-    options = options || {};
-    if (!this.queryGenerator._dialect.supports.schemas) {
-      return this.sequelize.drop(options);
-    }
-    const schemas = await this.showAllSchemas(options);
-    return Promise.all(schemas.map((schemaName) => this.dropSchema(schemaName, options)));
-  }
-  async showAllSchemas(options) {
-    options = __spreadProps(__spreadValues({}, options), {
-      raw: true,
-      type: this.sequelize.QueryTypes.SELECT
-    });
-    const showSchemasSql = this.queryGenerator.showSchemasQuery(options);
-    const schemaNames = await this.sequelize.query(showSchemasSql, options);
-    return _.flatten(schemaNames.map((value) => value.schema_name ? value.schema_name : value));
-  }
-  async databaseVersion(options) {
-    return await this.sequelize.query(this.queryGenerator.versionQuery(), __spreadProps(__spreadValues({}, options), { type: QueryTypes.VERSION }));
-  }
-  async createTable(tableName, attributes, options, model) {
-    let sql = "";
-    options = __spreadValues({}, options);
-    if (options && options.uniqueKeys) {
-      _.forOwn(options.uniqueKeys, (uniqueKey) => {
-        if (uniqueKey.customIndex === void 0) {
-          uniqueKey.customIndex = true;
-        }
-      });
-    }
-    if (model) {
-      options.uniqueKeys = options.uniqueKeys || model.uniqueKeys;
-    }
-    attributes = _.mapValues(attributes, (attribute) => this.sequelize.normalizeAttribute(attribute));
-    await this.ensureEnums(tableName, attributes, options, model);
-    if (!tableName.schema && (options.schema || !!model && model._schema)) {
-      tableName = this.queryGenerator.addSchema({
-        tableName,
-        _schema: !!model && model._schema || options.schema
-      });
-    }
-    attributes = this.queryGenerator.attributesToSQL(attributes, {
-      table: tableName,
-      context: "createTable",
-      withoutForeignKeyConstraints: options.withoutForeignKeyConstraints
-    });
-    sql = this.queryGenerator.createTableQuery(tableName, attributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async tableExists(tableName, options) {
-    const sql = this.queryGenerator.tableExistsQuery(tableName);
-    const out = await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), {
-      type: QueryTypes.SHOWTABLES
-    }));
-    return out.length === 1;
-  }
-  async dropTable(tableName, options) {
-    options = __spreadValues({}, options);
-    options.cascade = options.cascade || options.force || false;
-    const sql = this.queryGenerator.dropTableQuery(tableName, options);
-    await this.sequelize.query(sql, options);
-  }
-  async _dropAllTables(tableNames, skip, options) {
-    for (const tableName of tableNames) {
-      if (!skip.includes(tableName.tableName || tableName)) {
-        await this.dropTable(tableName, __spreadProps(__spreadValues({}, options), { cascade: true }));
-      }
-    }
-  }
-  async dropAllTables(options) {
-    options = options || {};
-    const skip = options.skip || [];
-    const tableNames = await this.showAllTables(options);
-    const foreignKeys = await this.getForeignKeysForTables(tableNames, options);
-    for (const tableName of tableNames) {
-      let normalizedTableName = tableName;
-      if (_.isObject(tableName)) {
-        normalizedTableName = `${tableName.schema}.${tableName.tableName}`;
-      }
-      for (const foreignKey of foreignKeys[normalizedTableName]) {
-        await this.sequelize.query(this.queryGenerator.dropForeignKeyQuery(tableName, foreignKey));
-      }
-    }
-    await this._dropAllTables(tableNames, skip, options);
-  }
-  async renameTable(before, after, options) {
-    options = options || {};
-    const sql = this.queryGenerator.renameTableQuery(before, after);
-    return await this.sequelize.query(sql, options);
-  }
-  async showAllTables(options) {
-    options = __spreadProps(__spreadValues({}, options), {
-      raw: true,
-      type: QueryTypes.SHOWTABLES
-    });
-    const showTablesSql = this.queryGenerator.showTablesQuery(this.sequelize.config.database);
-    const tableNames = await this.sequelize.query(showTablesSql, options);
-    return _.flatten(tableNames);
-  }
-  async describeTable(tableName, options) {
-    let schema = null;
-    let schemaDelimiter = null;
-    if (typeof options === "string") {
-      schema = options;
-    } else if (typeof options === "object" && options !== null) {
-      schema = options.schema || null;
-      schemaDelimiter = options.schemaDelimiter || null;
-    }
-    if (typeof tableName === "object" && tableName !== null) {
-      schema = tableName.schema;
-      tableName = tableName.tableName;
-    }
-    const sql = this.queryGenerator.describeTableQuery(tableName, schema, schemaDelimiter);
-    options = __spreadProps(__spreadValues({}, options), { type: QueryTypes.DESCRIBE });
-    try {
-      const data = await this.sequelize.query(sql, options);
-      if (_.isEmpty(data)) {
-        throw new Error(`No description found for "${tableName}" table. Check the table name and schema; remember, they _are_ case sensitive.`);
-      }
-      return data;
-    } catch (e) {
-      if (e.original && e.original.code === "ER_NO_SUCH_TABLE") {
-        throw new Error(`No description found for "${tableName}" table. Check the table name and schema; remember, they _are_ case sensitive.`);
-      }
-      throw e;
-    }
-  }
-  async addColumn(table, key, attribute, options) {
-    if (!table || !key || !attribute) {
-      throw new Error("addColumn takes at least 3 arguments (table, attribute name, attribute definition)");
-    }
-    options = options || {};
-    attribute = this.sequelize.normalizeAttribute(attribute);
-    return await this.sequelize.query(this.queryGenerator.addColumnQuery(table, key, attribute), options);
-  }
-  async removeColumn(tableName, attributeName, options) {
-    return this.sequelize.query(this.queryGenerator.removeColumnQuery(tableName, attributeName), options);
-  }
-  normalizeAttribute(dataTypeOrOptions) {
-    let attribute;
-    if (Object.values(DataTypes).includes(dataTypeOrOptions)) {
-      attribute = { type: dataTypeOrOptions, allowNull: true };
-    } else {
-      attribute = dataTypeOrOptions;
-    }
-    return this.sequelize.normalizeAttribute(attribute);
-  }
-  quoteIdentifier(identifier2, force) {
-    return this.queryGenerator.quoteIdentifier(identifier2, force);
-  }
-  quoteIdentifiers(identifiers) {
-    return this.queryGenerator.quoteIdentifiers(identifiers);
-  }
-  async changeColumn(tableName, attributeName, dataTypeOrOptions, options) {
-    options = options || {};
-    const query = this.queryGenerator.attributesToSQL({
-      [attributeName]: this.normalizeAttribute(dataTypeOrOptions)
-    }, {
-      context: "changeColumn",
-      table: tableName
-    });
-    const sql = this.queryGenerator.changeColumnQuery(tableName, query);
-    return this.sequelize.query(sql, options);
-  }
-  async assertTableHasColumn(tableName, columnName, options) {
-    const description = await this.describeTable(tableName, options);
-    if (description[columnName]) {
-      return description;
-    }
-    throw new Error(`Table ${tableName} doesn't have the column ${columnName}`);
-  }
-  async renameColumn(tableName, attrNameBefore, attrNameAfter, options) {
-    options = options || {};
-    const data = (await this.assertTableHasColumn(tableName, attrNameBefore, options))[attrNameBefore];
-    const _options = {};
-    _options[attrNameAfter] = {
-      attribute: attrNameAfter,
-      type: data.type,
-      allowNull: data.allowNull,
-      defaultValue: data.defaultValue
-    };
-    if (data.defaultValue === null && !data.allowNull) {
-      delete _options[attrNameAfter].defaultValue;
-    }
-    const sql = this.queryGenerator.renameColumnQuery(tableName, attrNameBefore, this.queryGenerator.attributesToSQL(_options));
-    return await this.sequelize.query(sql, options);
-  }
-  async addIndex(tableName, attributes, options, rawTablename) {
-    if (!Array.isArray(attributes)) {
-      rawTablename = options;
-      options = attributes;
-      attributes = options.fields;
-    }
-    if (!rawTablename) {
-      rawTablename = tableName;
-    }
-    options = Utils.cloneDeep(options);
-    options.fields = attributes;
-    const sql = this.queryGenerator.addIndexQuery(tableName, options, rawTablename);
-    return await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { supportsSearchPath: false }));
-  }
-  async showIndex(tableName, options) {
-    const sql = this.queryGenerator.showIndexesQuery(tableName, options);
-    return await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { type: QueryTypes.SHOWINDEXES }));
-  }
-  async getForeignKeysForTables(tableNames, options) {
-    if (tableNames.length === 0) {
-      return {};
-    }
-    options = __spreadProps(__spreadValues({}, options), { type: QueryTypes.FOREIGNKEYS });
-    const results = await Promise.all(tableNames.map((tableName) => this.sequelize.query(this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.database), options)));
-    const result = {};
-    tableNames.forEach((tableName, i) => {
-      if (_.isObject(tableName)) {
-        tableName = `${tableName.schema}.${tableName.tableName}`;
-      }
-      result[tableName] = Array.isArray(results[i]) ? results[i].map((r) => r.constraint_name) : [results[i] && results[i].constraint_name];
-      result[tableName] = result[tableName].filter(_.identity);
-    });
-    return result;
-  }
-  async getForeignKeyReferencesForTable(tableName, options) {
-    const queryOptions = __spreadProps(__spreadValues({}, options), {
-      type: QueryTypes.FOREIGNKEYS
-    });
-    const query = this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.database);
-    return this.sequelize.query(query, queryOptions);
-  }
-  async removeIndex(tableName, indexNameOrAttributes, options) {
-    options = options || {};
-    const sql = this.queryGenerator.removeIndexQuery(tableName, indexNameOrAttributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async addConstraint(tableName, options) {
-    if (!options.fields) {
-      throw new Error("Fields must be specified through options.fields");
-    }
-    if (!options.type) {
-      throw new Error("Constraint type must be specified through options.type");
-    }
-    options = Utils.cloneDeep(options);
-    const sql = this.queryGenerator.addConstraintQuery(tableName, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async showConstraint(tableName, constraintName, options) {
-    const sql = this.queryGenerator.showConstraintsQuery(tableName, constraintName);
-    return await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { type: QueryTypes.SHOWCONSTRAINTS }));
-  }
-  async removeConstraint(tableName, constraintName, options) {
-    return this.sequelize.query(this.queryGenerator.removeConstraintQuery(tableName, constraintName), options);
-  }
-  async insert(instance, tableName, values, options) {
-    options = Utils.cloneDeep(options);
-    options.hasTrigger = instance && instance.constructor.options.hasTrigger;
-    const sql = this.queryGenerator.insertQuery(tableName, values, instance && instance.constructor.rawAttributes, options);
-    options.type = QueryTypes.INSERT;
-    options.instance = instance;
-    const results = await this.sequelize.query(sql, options);
-    if (instance)
-      results[0].isNewRecord = false;
-    return results;
-  }
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    options = __spreadValues({}, options);
-    const model = options.model;
-    options.type = QueryTypes.UPSERT;
-    options.updateOnDuplicate = Object.keys(updateValues);
-    options.upsertKeys = options.conflictFields || [];
-    if (options.upsertKeys.length === 0) {
-      const primaryKeys = Object.values(model.primaryKeys).map((item) => item.field);
-      const uniqueKeys = Object.values(model.uniqueKeys).filter((c) => c.fields.length > 0).map((c) => c.fields);
-      const indexKeys = Object.values(model._indexes).filter((c) => c.unique && c.fields.length > 0).map((c) => c.fields);
-      for (const field of options.updateOnDuplicate) {
-        const uniqueKey = uniqueKeys.find((fields) => fields.includes(field));
-        if (uniqueKey) {
-          options.upsertKeys = uniqueKey;
-          break;
-        }
-        const indexKey = indexKeys.find((fields) => fields.includes(field));
-        if (indexKey) {
-          options.upsertKeys = indexKey;
-          break;
-        }
-      }
-      if (options.upsertKeys.length === 0 || _.intersection(options.updateOnDuplicate, primaryKeys).length) {
-        options.upsertKeys = primaryKeys;
-      }
-      options.upsertKeys = _.uniq(options.upsertKeys);
-    }
-    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async bulkInsert(tableName, records, options, attributes) {
-    options = __spreadValues({}, options);
-    options.type = QueryTypes.INSERT;
-    const results = await this.sequelize.query(this.queryGenerator.bulkInsertQuery(tableName, records, options, attributes), options);
-    return results[0];
-  }
-  async update(instance, tableName, values, identifier2, options) {
-    options = __spreadValues({}, options);
-    options.hasTrigger = instance && instance.constructor.options.hasTrigger;
-    const sql = this.queryGenerator.updateQuery(tableName, values, identifier2, options, instance.constructor.rawAttributes);
-    options.type = QueryTypes.UPDATE;
-    options.instance = instance;
-    return await this.sequelize.query(sql, options);
-  }
-  async bulkUpdate(tableName, values, identifier2, options, attributes) {
-    options = Utils.cloneDeep(options);
-    if (typeof identifier2 === "object")
-      identifier2 = Utils.cloneDeep(identifier2);
-    const sql = this.queryGenerator.updateQuery(tableName, values, identifier2, options, attributes);
-    const table = _.isObject(tableName) ? tableName : { tableName };
-    const model = options.model ? options.model : _.find(this.sequelize.modelManager.models, { tableName: table.tableName });
-    options.type = QueryTypes.BULKUPDATE;
-    options.model = model;
-    return await this.sequelize.query(sql, options);
-  }
-  async delete(instance, tableName, identifier2, options) {
-    const cascades = [];
-    const sql = this.queryGenerator.deleteQuery(tableName, identifier2, {}, instance.constructor);
-    options = __spreadValues({}, options);
-    if (!!instance.constructor && !!instance.constructor.associations) {
-      const keys = Object.keys(instance.constructor.associations);
-      const length = keys.length;
-      let association;
-      for (let i = 0; i < length; i++) {
-        association = instance.constructor.associations[keys[i]];
-        if (association.options && association.options.onDelete && association.options.onDelete.toLowerCase() === "cascade" && association.options.useHooks === true) {
-          cascades.push(association.accessors.get);
-        }
-      }
-    }
-    for (const cascade of cascades) {
-      let instances = await instance[cascade](options);
-      if (!instances)
-        continue;
-      if (!Array.isArray(instances))
-        instances = [instances];
-      for (const _instance of instances)
-        await _instance.destroy(options);
-    }
-    options.instance = instance;
-    return await this.sequelize.query(sql, options);
-  }
-  async bulkDelete(tableName, where, options, model) {
-    options = Utils.cloneDeep(options);
-    options = _.defaults(options, { limit: null });
-    if (options.truncate === true) {
-      return this.sequelize.query(this.queryGenerator.truncateTableQuery(tableName, options), options);
-    }
-    if (typeof identifier === "object")
-      where = Utils.cloneDeep(where);
-    return await this.sequelize.query(this.queryGenerator.deleteQuery(tableName, where, options, model), options);
-  }
-  async select(model, tableName, optionsArg) {
-    const options = __spreadProps(__spreadValues({}, optionsArg), { type: QueryTypes.SELECT, model });
-    return await this.sequelize.query(this.queryGenerator.selectQuery(tableName, options, model), options);
-  }
-  async increment(model, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {
-    options = Utils.cloneDeep(options);
-    const sql = this.queryGenerator.arithmeticQuery("+", tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);
-    options.type = QueryTypes.UPDATE;
-    options.model = model;
-    return await this.sequelize.query(sql, options);
-  }
-  async decrement(model, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {
-    options = Utils.cloneDeep(options);
-    const sql = this.queryGenerator.arithmeticQuery("-", tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);
-    options.type = QueryTypes.UPDATE;
-    options.model = model;
-    return await this.sequelize.query(sql, options);
-  }
-  async rawSelect(tableName, options, attributeSelector, Model) {
-    options = Utils.cloneDeep(options);
-    options = _.defaults(options, {
-      raw: true,
-      plain: true,
-      type: QueryTypes.SELECT
-    });
-    const sql = this.queryGenerator.selectQuery(tableName, options, Model);
-    if (attributeSelector === void 0) {
-      throw new Error("Please pass an attribute selector!");
-    }
-    const data = await this.sequelize.query(sql, options);
-    if (!options.plain) {
-      return data;
-    }
-    const result = data ? data[attributeSelector] : null;
-    if (!options || !options.dataType) {
-      return result;
-    }
-    const dataType = options.dataType;
-    if (dataType instanceof DataTypes.DECIMAL || dataType instanceof DataTypes.FLOAT) {
-      if (result !== null) {
-        return parseFloat(result);
-      }
-    }
-    if (dataType instanceof DataTypes.INTEGER || dataType instanceof DataTypes.BIGINT) {
-      if (result !== null) {
-        return parseInt(result, 10);
-      }
-    }
-    if (dataType instanceof DataTypes.DATE) {
-      if (result !== null && !(result instanceof Date)) {
-        return new Date(result);
-      }
-    }
-    return result;
-  }
-  async createTrigger(tableName, triggerName, timingType, fireOnArray, functionName, functionParams, optionsArray, options) {
-    const sql = this.queryGenerator.createTrigger(tableName, triggerName, timingType, fireOnArray, functionName, functionParams, optionsArray);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async dropTrigger(tableName, triggerName, options) {
-    const sql = this.queryGenerator.dropTrigger(tableName, triggerName);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async renameTrigger(tableName, oldTriggerName, newTriggerName, options) {
-    const sql = this.queryGenerator.renameTrigger(tableName, oldTriggerName, newTriggerName);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async createFunction(functionName, params, returnType, language, body, optionsArray, options) {
-    const sql = this.queryGenerator.createFunction(functionName, params, returnType, language, body, optionsArray, options);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async dropFunction(functionName, params, options) {
-    const sql = this.queryGenerator.dropFunction(functionName, params);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async renameFunction(oldFunctionName, params, newFunctionName, options) {
-    const sql = this.queryGenerator.renameFunction(oldFunctionName, params, newFunctionName);
-    options = options || {};
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  ensureEnums() {
-  }
-  async setIsolationLevel(transaction, value, options) {
-    if (!transaction || !(transaction instanceof Transaction)) {
-      throw new Error("Unable to set isolation level for a transaction without transaction object!");
-    }
-    if (transaction.parent || !value) {
-      return;
-    }
-    options = __spreadProps(__spreadValues({}, options), { transaction: transaction.parent || transaction });
-    const sql = this.queryGenerator.setIsolationLevelQuery(value, {
-      parent: transaction.parent
-    });
-    if (!sql)
-      return;
-    return await this.sequelize.query(sql, options);
-  }
-  async startTransaction(transaction, options) {
-    if (!transaction || !(transaction instanceof Transaction)) {
-      throw new Error("Unable to start a transaction without transaction object!");
-    }
-    options = __spreadProps(__spreadValues({}, options), { transaction: transaction.parent || transaction });
-    options.transaction.name = transaction.parent ? transaction.name : void 0;
-    const sql = this.queryGenerator.startTransactionQuery(transaction);
-    return await this.sequelize.query(sql, options);
-  }
-  async deferConstraints(transaction, options) {
-    options = __spreadProps(__spreadValues({}, options), { transaction: transaction.parent || transaction });
-    const sql = this.queryGenerator.deferConstraintsQuery(options);
-    if (sql) {
-      return await this.sequelize.query(sql, options);
-    }
-  }
-  async commitTransaction(transaction, options) {
-    if (!transaction || !(transaction instanceof Transaction)) {
-      throw new Error("Unable to commit a transaction without transaction object!");
-    }
-    if (transaction.parent) {
-      return;
-    }
-    options = __spreadProps(__spreadValues({}, options), {
-      transaction: transaction.parent || transaction,
-      supportsSearchPath: false,
-      completesTransaction: true
-    });
-    const sql = this.queryGenerator.commitTransactionQuery(transaction);
-    const promise = this.sequelize.query(sql, options);
-    transaction.finished = "commit";
-    return await promise;
-  }
-  async rollbackTransaction(transaction, options) {
-    if (!transaction || !(transaction instanceof Transaction)) {
-      throw new Error("Unable to rollback a transaction without transaction object!");
-    }
-    options = __spreadProps(__spreadValues({}, options), {
-      transaction: transaction.parent || transaction,
-      supportsSearchPath: false,
-      completesTransaction: true
-    });
-    options.transaction.name = transaction.parent ? transaction.name : void 0;
-    const sql = this.queryGenerator.rollbackTransactionQuery(transaction);
-    const promise = this.sequelize.query(sql, options);
-    transaction.finished = "rollback";
-    return await promise;
-  }
-}
-exports.QueryInterface = QueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/abstract/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\n\nconst Utils = require('../../utils');\nconst DataTypes = require('../../data-types');\nconst Transaction = require('../../transaction');\nconst QueryTypes = require('../../query-types');\n\n/**\n * The interface that Sequelize uses to talk to all databases\n */\nclass QueryInterface {\n  constructor(sequelize, queryGenerator) {\n    this.sequelize = sequelize;\n    this.queryGenerator = queryGenerator;\n  }\n\n  /**\n   * Create a database\n   *\n   * @param {string} database  Database name to create\n   * @param {object} [options] Query options\n   * @param {string} [options.charset] Database default character set, MYSQL only\n   * @param {string} [options.collate] Database default collation\n   * @param {string} [options.encoding] Database default character set, PostgreSQL only\n   * @param {string} [options.ctype] Database character classification, PostgreSQL only\n   * @param {string} [options.template] The name of the template from which to create the new database, PostgreSQL only\n   *\n   * @returns {Promise}\n   */\n  async createDatabase(database, options) {\n    options = options || {};\n    const sql = this.queryGenerator.createDatabaseQuery(database, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Drop a database\n   *\n   * @param {string} database  Database name to drop\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async dropDatabase(database, options) {\n    options = options || {};\n    const sql = this.queryGenerator.dropDatabaseQuery(database);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Create a schema\n   *\n   * @param {string} schema    Schema name to create\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async createSchema(schema, options) {\n    options = options || {};\n    const sql = this.queryGenerator.createSchema(schema);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Drop a schema\n   *\n   * @param {string} schema    Schema name to drop\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async dropSchema(schema, options) {\n    options = options || {};\n    const sql = this.queryGenerator.dropSchema(schema);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Drop all schemas\n   *\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async dropAllSchemas(options) {\n    options = options || {};\n\n    if (!this.queryGenerator._dialect.supports.schemas) {\n      return this.sequelize.drop(options);\n    }\n    const schemas = await this.showAllSchemas(options);\n    return Promise.all(schemas.map(schemaName => this.dropSchema(schemaName, options)));\n  }\n\n  /**\n   * Show all schemas\n   *\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise<Array>}\n   */\n  async showAllSchemas(options) {\n    options = {\n      ...options,\n      raw: true,\n      type: this.sequelize.QueryTypes.SELECT\n    };\n\n    const showSchemasSql = this.queryGenerator.showSchemasQuery(options);\n\n    const schemaNames = await this.sequelize.query(showSchemasSql, options);\n\n    return _.flatten(schemaNames.map(value => value.schema_name ? value.schema_name : value));\n  }\n\n  /**\n   * Return database version\n   *\n   * @param {object}    [options]      Query options\n   * @param {QueryType} [options.type] Query type\n   *\n   * @returns {Promise}\n   * @private\n   */\n  async databaseVersion(options) {\n    return await this.sequelize.query(\n      this.queryGenerator.versionQuery(),\n      { ...options, type: QueryTypes.VERSION }\n    );\n  }\n\n  /**\n   * Create a table with given set of attributes\n   *\n   * ```js\n   * queryInterface.createTable(\n   *   'nameOfTheNewTable',\n   *   {\n   *     id: {\n   *       type: Sequelize.INTEGER,\n   *       primaryKey: true,\n   *       autoIncrement: true\n   *     },\n   *     createdAt: {\n   *       type: Sequelize.DATE\n   *     },\n   *     updatedAt: {\n   *       type: Sequelize.DATE\n   *     },\n   *     attr1: Sequelize.STRING,\n   *     attr2: Sequelize.INTEGER,\n   *     attr3: {\n   *       type: Sequelize.BOOLEAN,\n   *       defaultValue: false,\n   *       allowNull: false\n   *     },\n   *     //foreign key usage\n   *     attr4: {\n   *       type: Sequelize.INTEGER,\n   *       references: {\n   *         model: 'another_table_name',\n   *         key: 'id'\n   *       },\n   *       onUpdate: 'cascade',\n   *       onDelete: 'cascade'\n   *     }\n   *   },\n   *   {\n   *     engine: 'MYISAM',    // default: 'InnoDB'\n   *     charset: 'latin1',   // default: null\n   *     schema: 'public',    // default: public, PostgreSQL only.\n   *     comment: 'my table', // comment for table\n   *     collate: 'latin1_danish_ci' // collation, MYSQL only\n   *   }\n   * )\n   * ```\n   *\n   * @param {string} tableName  Name of table to create\n   * @param {object} attributes Object representing a list of table attributes to create\n   * @param {object} [options] create table and query options\n   * @param {Model}  [model] model class\n   *\n   * @returns {Promise}\n   */\n  async createTable(tableName, attributes, options, model) {\n    let sql = '';\n\n    options = { ...options };\n\n    if (options && options.uniqueKeys) {\n      _.forOwn(options.uniqueKeys, uniqueKey => {\n        if (uniqueKey.customIndex === undefined) {\n          uniqueKey.customIndex = true;\n        }\n      });\n    }\n\n    if (model) {\n      options.uniqueKeys = options.uniqueKeys || model.uniqueKeys;\n    }\n\n    attributes = _.mapValues(\n      attributes,\n      attribute => this.sequelize.normalizeAttribute(attribute)\n    );\n\n    // Postgres requires special SQL commands for ENUM/ENUM[]\n    await this.ensureEnums(tableName, attributes, options, model);\n\n    if (\n      !tableName.schema &&\n      (options.schema || !!model && model._schema)\n    ) {\n      tableName = this.queryGenerator.addSchema({\n        tableName,\n        _schema: !!model && model._schema || options.schema\n      });\n    }\n\n    attributes = this.queryGenerator.attributesToSQL(attributes, {\n      table: tableName,\n      context: 'createTable',\n      withoutForeignKeyConstraints: options.withoutForeignKeyConstraints\n    });\n    sql = this.queryGenerator.createTableQuery(tableName, attributes, options);\n\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Returns a promise that will resolve to true if the table exists in the database, false otherwise.\n   *\n   * @param {TableName} tableName - The name of the table\n   * @param {QueryOptions} options - Query options\n   * @returns {Promise<boolean>}\n   */\n  async tableExists(tableName, options) {\n    const sql = this.queryGenerator.tableExistsQuery(tableName);\n\n    const out = await this.sequelize.query(sql, {\n      ...options,\n      type: QueryTypes.SHOWTABLES\n    });\n\n    return out.length === 1;\n  }\n\n  /**\n   * Drop a table from database\n   *\n   * @param {string} tableName Table name to drop\n   * @param {object} options   Query options\n   *\n   * @returns {Promise}\n   */\n  async dropTable(tableName, options) {\n    // if we're forcing we should be cascading unless explicitly stated otherwise\n    options = { ...options };\n    options.cascade = options.cascade || options.force || false;\n\n    const sql = this.queryGenerator.dropTableQuery(tableName, options);\n\n    await this.sequelize.query(sql, options);\n  }\n\n  async _dropAllTables(tableNames, skip, options) {\n    for (const tableName of tableNames) {\n      // if tableName is not in the Array of tables names then don't drop it\n      if (!skip.includes(tableName.tableName || tableName)) {\n        await this.dropTable(tableName, { ...options, cascade: true } );\n      }\n    }\n  }\n\n  /**\n   * Drop all tables from database\n   *\n   * @param {object} [options] query options\n   * @param {Array}  [options.skip] List of table to skip\n   *\n   * @returns {Promise}\n   */\n  async dropAllTables(options) {\n    options = options || {};\n    const skip = options.skip || [];\n\n    const tableNames = await this.showAllTables(options);\n    const foreignKeys = await this.getForeignKeysForTables(tableNames, options);\n\n    for (const tableName of tableNames) {\n      let normalizedTableName = tableName;\n      if (_.isObject(tableName)) {\n        normalizedTableName = `${tableName.schema}.${tableName.tableName}`;\n      }\n\n      for (const foreignKey of foreignKeys[normalizedTableName]) {\n        await this.sequelize.query(this.queryGenerator.dropForeignKeyQuery(tableName, foreignKey));\n      }\n    }\n    await this._dropAllTables(tableNames, skip, options);\n  }\n\n  /**\n   * Rename a table\n   *\n   * @param {string} before    Current name of table\n   * @param {string} after     New name from table\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async renameTable(before, after, options) {\n    options = options || {};\n    const sql = this.queryGenerator.renameTableQuery(before, after);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Get all tables in current database\n   *\n   * @param {object}    [options] Query options\n   * @param {boolean}   [options.raw=true] Run query in raw mode\n   * @param {QueryType} [options.type=QueryType.SHOWTABLE] query type\n   *\n   * @returns {Promise<Array>}\n   * @private\n   */\n  async showAllTables(options) {\n    options = {\n      ...options,\n      raw: true,\n      type: QueryTypes.SHOWTABLES\n    };\n\n    const showTablesSql = this.queryGenerator.showTablesQuery(this.sequelize.config.database);\n    const tableNames = await this.sequelize.query(showTablesSql, options);\n    return _.flatten(tableNames);\n  }\n\n  /**\n   * Describe a table structure\n   *\n   * This method returns an array of hashes containing information about all attributes in the table.\n   *\n   * ```js\n   * {\n   *    name: {\n   *      type:         'VARCHAR(255)', // this will be 'CHARACTER VARYING' for pg!\n   *      allowNull:    true,\n   *      defaultValue: null\n   *    },\n   *    isBetaMember: {\n   *      type:         'TINYINT(1)', // this will be 'BOOLEAN' for pg!\n   *      allowNull:    false,\n   *      defaultValue: false\n   *    }\n   * }\n   * ```\n   *\n   * @param {string} tableName table name\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise<object>}\n   */\n  async describeTable(tableName, options) {\n    let schema = null;\n    let schemaDelimiter = null;\n\n    if (typeof options === 'string') {\n      schema = options;\n    } else if (typeof options === 'object' && options !== null) {\n      schema = options.schema || null;\n      schemaDelimiter = options.schemaDelimiter || null;\n    }\n\n    if (typeof tableName === 'object' && tableName !== null) {\n      schema = tableName.schema;\n      tableName = tableName.tableName;\n    }\n\n    const sql = this.queryGenerator.describeTableQuery(tableName, schema, schemaDelimiter);\n    options = { ...options, type: QueryTypes.DESCRIBE };\n\n    try {\n      const data = await this.sequelize.query(sql, options);\n      /*\n       * If no data is returned from the query, then the table name may be wrong.\n       * Query generators that use information_schema for retrieving table info will just return an empty result set,\n       * it will not throw an error like built-ins do (e.g. DESCRIBE on MySql).\n       */\n      if (_.isEmpty(data)) {\n        throw new Error(`No description found for \"${tableName}\" table. Check the table name and schema; remember, they _are_ case sensitive.`);\n      }\n\n      return data;\n    } catch (e) {\n      if (e.original && e.original.code === 'ER_NO_SUCH_TABLE') {\n        throw new Error(`No description found for \"${tableName}\" table. Check the table name and schema; remember, they _are_ case sensitive.`);\n      }\n\n      throw e;\n    }\n  }\n\n  /**\n   * Add a new column to a table\n   *\n   * ```js\n   * queryInterface.addColumn('tableA', 'columnC', Sequelize.STRING, {\n   *    after: 'columnB' // after option is only supported by MySQL\n   * });\n   * ```\n   *\n   * @param {string} table     Table to add column to\n   * @param {string} key       Column name\n   * @param {object} attribute Attribute definition\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async addColumn(table, key, attribute, options) {\n    if (!table || !key || !attribute) {\n      throw new Error('addColumn takes at least 3 arguments (table, attribute name, attribute definition)');\n    }\n\n    options = options || {};\n    attribute = this.sequelize.normalizeAttribute(attribute);\n    return await this.sequelize.query(this.queryGenerator.addColumnQuery(table, key, attribute), options);\n  }\n\n  /**\n   * Remove a column from a table\n   *\n   * @param {string} tableName      Table to remove column from\n   * @param {string} attributeName  Column name to remove\n   * @param {object} [options]      Query options\n   */\n  async removeColumn(tableName, attributeName, options) {\n    return this.sequelize.query(this.queryGenerator.removeColumnQuery(tableName, attributeName), options);\n  }\n\n  normalizeAttribute(dataTypeOrOptions) {\n    let attribute;\n    if (Object.values(DataTypes).includes(dataTypeOrOptions)) {\n      attribute = { type: dataTypeOrOptions, allowNull: true };\n    } else {\n      attribute = dataTypeOrOptions;\n    }\n\n    return this.sequelize.normalizeAttribute(attribute);\n  }\n\n  /**\n   * Split a list of identifiers by \".\" and quote each part\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return this.queryGenerator.quoteIdentifier(identifier, force);\n  }\n\n  /**\n   * Split a list of identifiers by \".\" and quote each part.\n   *\n   * @param {string} identifiers \n   * \n   * @returns {string}\n   */\n  quoteIdentifiers(identifiers) {\n    return this.queryGenerator.quoteIdentifiers(identifiers);\n  }\n\n  /**\n   * Change a column definition\n   *\n   * @param {string} tableName          Table name to change from\n   * @param {string} attributeName      Column name\n   * @param {object} dataTypeOrOptions  Attribute definition for new column\n   * @param {object} [options]          Query options\n   */\n  async changeColumn(tableName, attributeName, dataTypeOrOptions, options) {\n    options = options || {};\n\n    const query = this.queryGenerator.attributesToSQL({\n      [attributeName]: this.normalizeAttribute(dataTypeOrOptions)\n    }, {\n      context: 'changeColumn',\n      table: tableName\n    });\n    const sql = this.queryGenerator.changeColumnQuery(tableName, query);\n\n    return this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Rejects if the table doesn't have the specified column, otherwise returns the column description.\n   *\n   * @param {string} tableName\n   * @param {string} columnName\n   * @param {object} options\n   * @private\n   */\n  async assertTableHasColumn(tableName, columnName, options) {\n    const description = await this.describeTable(tableName, options);\n    if (description[columnName]) {\n      return description;\n    }\n    throw new Error(`Table ${tableName} doesn't have the column ${columnName}`);\n  }\n\n  /**\n   * Rename a column\n   *\n   * @param {string} tableName        Table name whose column to rename\n   * @param {string} attrNameBefore   Current column name\n   * @param {string} attrNameAfter    New column name\n   * @param {object} [options]        Query option\n   *\n   * @returns {Promise}\n   */\n  async renameColumn(tableName, attrNameBefore, attrNameAfter, options) {\n    options = options || {};\n    const data = (await this.assertTableHasColumn(tableName, attrNameBefore, options))[attrNameBefore];\n\n    const _options = {};\n\n    _options[attrNameAfter] = {\n      attribute: attrNameAfter,\n      type: data.type,\n      allowNull: data.allowNull,\n      defaultValue: data.defaultValue\n    };\n\n    // fix: a not-null column cannot have null as default value\n    if (data.defaultValue === null && !data.allowNull) {\n      delete _options[attrNameAfter].defaultValue;\n    }\n\n    const sql = this.queryGenerator.renameColumnQuery(\n      tableName,\n      attrNameBefore,\n      this.queryGenerator.attributesToSQL(_options)\n    );\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Add an index to a column\n   *\n   * @param {string|object}  tableName Table name to add index on, can be a object with schema\n   * @param {Array}   [attributes]     Use options.fields instead, List of attributes to add index on\n   * @param {object}  options          indexes options\n   * @param {Array}   options.fields   List of attributes to add index on\n   * @param {boolean} [options.concurrently] Pass CONCURRENT so other operations run while the index is created\n   * @param {boolean} [options.unique] Create a unique index\n   * @param {string}  [options.using]  Useful for GIN indexes\n   * @param {string}  [options.operator] Index operator\n   * @param {string}  [options.type]   Type of index, available options are UNIQUE|FULLTEXT|SPATIAL\n   * @param {string}  [options.name]   Name of the index. Default is <table>_<attr1>_<attr2>\n   * @param {object}  [options.where]  Where condition on index, for partial indexes\n   * @param {string}  [rawTablename]   table name, this is just for backward compatibiity\n   *\n   * @returns {Promise}\n   */\n  async addIndex(tableName, attributes, options, rawTablename) {\n    // Support for passing tableName, attributes, options or tableName, options (with a fields param which is the attributes)\n    if (!Array.isArray(attributes)) {\n      rawTablename = options;\n      options = attributes;\n      attributes = options.fields;\n    }\n\n    if (!rawTablename) {\n      // Map for backwards compat\n      rawTablename = tableName;\n    }\n\n    options = Utils.cloneDeep(options);\n    options.fields = attributes;\n    const sql = this.queryGenerator.addIndexQuery(tableName, options, rawTablename);\n    return await this.sequelize.query(sql, { ...options, supportsSearchPath: false });\n  }\n\n  /**\n   * Show indexes on a table\n   *\n   * @param {string} tableName table name\n   * @param {object} [options]   Query options\n   *\n   * @returns {Promise<Array>}\n   * @private\n   */\n  async showIndex(tableName, options) {\n    const sql = this.queryGenerator.showIndexesQuery(tableName, options);\n    return await this.sequelize.query(sql, { ...options, type: QueryTypes.SHOWINDEXES });\n  }\n\n\n  /**\n   * Returns all foreign key constraints of requested tables\n   *\n   * @param {string[]} tableNames table names\n   * @param {object} [options] Query options\n   *\n   * @returns {Promise}\n   */\n  async getForeignKeysForTables(tableNames, options) {\n    if (tableNames.length === 0) {\n      return {};\n    }\n\n    options = { ...options, type: QueryTypes.FOREIGNKEYS };\n\n    const results = await Promise.all(tableNames.map(tableName =>\n      this.sequelize.query(this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.database), options)));\n\n    const result = {};\n\n    tableNames.forEach((tableName, i) => {\n      if (_.isObject(tableName)) {\n        tableName = `${tableName.schema}.${tableName.tableName}`;\n      }\n\n      result[tableName] = Array.isArray(results[i])\n        ? results[i].map(r => r.constraint_name)\n        : [results[i] && results[i].constraint_name];\n\n      result[tableName] = result[tableName].filter(_.identity);\n    });\n\n    return result;\n  }\n\n  /**\n   * Get foreign key references details for the table\n   *\n   * Those details contains constraintSchema, constraintName, constraintCatalog\n   * tableCatalog, tableSchema, tableName, columnName,\n   * referencedTableCatalog, referencedTableCatalog, referencedTableSchema, referencedTableName, referencedColumnName.\n   * Remind: constraint informations won't return if it's sqlite.\n   *\n   * @param {string} tableName table name\n   * @param {object} [options]  Query options\n   */\n  async getForeignKeyReferencesForTable(tableName, options) {\n    const queryOptions = {\n      ...options,\n      type: QueryTypes.FOREIGNKEYS\n    };\n    const query = this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.database);\n    return this.sequelize.query(query, queryOptions);\n  }\n\n  /**\n   * Remove an already existing index from a table\n   *\n   * @param {string} tableName                    Table name to drop index from\n   * @param {string|string[]} indexNameOrAttributes  Index name or list of attributes that in the index\n   * @param {object} [options]                    Query options\n   * @param {boolean} [options.concurrently]      Pass CONCURRENTLY so other operations run while the index is created\n   *\n   * @returns {Promise}\n   */\n  async removeIndex(tableName, indexNameOrAttributes, options) {\n    options = options || {};\n    const sql = this.queryGenerator.removeIndexQuery(tableName, indexNameOrAttributes, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Add a constraint to a table\n   *\n   * Available constraints:\n   * - UNIQUE\n   * - DEFAULT (MSSQL only)\n   * - CHECK (MySQL - Ignored by the database engine )\n   * - FOREIGN KEY\n   * - PRIMARY KEY\n   *\n   * @example <caption>UNIQUE</caption>\n   * queryInterface.addConstraint('Users', {\n   *   fields: ['email'],\n   *   type: 'unique',\n   *   name: 'custom_unique_constraint_name'\n   * });\n   *\n   * @example <caption>CHECK</caption>\n   * queryInterface.addConstraint('Users', {\n   *   fields: ['roles'],\n   *   type: 'check',\n   *   where: {\n   *      roles: ['user', 'admin', 'moderator', 'guest']\n   *   }\n   * });\n   *\n   * @example <caption>Default - MSSQL only</caption>\n   * queryInterface.addConstraint('Users', {\n   *    fields: ['roles'],\n   *    type: 'default',\n   *    defaultValue: 'guest'\n   * });\n   *\n   * @example <caption>Primary Key</caption>\n   * queryInterface.addConstraint('Users', {\n   *    fields: ['username'],\n   *    type: 'primary key',\n   *    name: 'custom_primary_constraint_name'\n   * });\n   *\n   * @example <caption>Foreign Key</caption>\n   * queryInterface.addConstraint('Posts', {\n   *   fields: ['username'],\n   *   type: 'foreign key',\n   *   name: 'custom_fkey_constraint_name',\n   *   references: { //Required field\n   *     table: 'target_table_name',\n   *     field: 'target_column_name'\n   *   },\n   *   onDelete: 'cascade',\n   *   onUpdate: 'cascade'\n   * });\n   *\n   * @example <caption>Composite Foreign Key</caption>\n   * queryInterface.addConstraint('TableName', {\n   *   fields: ['source_column_name', 'other_source_column_name'],\n   *   type: 'foreign key',\n   *   name: 'custom_fkey_constraint_name',\n   *   references: { //Required field\n   *     table: 'target_table_name',\n   *     fields: ['target_column_name', 'other_target_column_name']\n   *   },\n   *   onDelete: 'cascade',\n   *   onUpdate: 'cascade'\n   * });\n   *\n   * @param {string} tableName                   Table name where you want to add a constraint\n   * @param {object} options                     An object to define the constraint name, type etc\n   * @param {string} options.type                Type of constraint. One of the values in available constraints(case insensitive)\n   * @param {Array}  options.fields              Array of column names to apply the constraint over\n   * @param {string} [options.name]              Name of the constraint. If not specified, sequelize automatically creates a named constraint based on constraint type, table & column names\n   * @param {string} [options.defaultValue]      The value for the default constraint\n   * @param {object} [options.where]             Where clause/expression for the CHECK constraint\n   * @param {object} [options.references]        Object specifying target table, column name to create foreign key constraint\n   * @param {string} [options.references.table]  Target table name\n   * @param {string} [options.references.field]  Target column name\n   * @param {string} [options.references.fields] Target column names for a composite primary key. Must match the order of fields in options.fields.\n   * @param {string} [options.deferrable]        Sets the constraint to be deferred or immediately checked. See Sequelize.Deferrable. PostgreSQL Only\n   *\n   * @returns {Promise}\n   */\n  async addConstraint(tableName, options) {\n    if (!options.fields) {\n      throw new Error('Fields must be specified through options.fields');\n    }\n\n    if (!options.type) {\n      throw new Error('Constraint type must be specified through options.type');\n    }\n\n    options = Utils.cloneDeep(options);\n\n    const sql = this.queryGenerator.addConstraintQuery(tableName, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  async showConstraint(tableName, constraintName, options) {\n    const sql = this.queryGenerator.showConstraintsQuery(tableName, constraintName);\n    return await this.sequelize.query(sql, { ...options, type: QueryTypes.SHOWCONSTRAINTS });\n  }\n\n  /**\n   * Remove a constraint from a table\n   *\n   * @param {string} tableName       Table name to drop constraint from\n   * @param {string} constraintName  Constraint name\n   * @param {object} options         Query options\n   */\n  async removeConstraint(tableName, constraintName, options) {\n    return this.sequelize.query(this.queryGenerator.removeConstraintQuery(tableName, constraintName), options);\n  }\n\n  async insert(instance, tableName, values, options) {\n    options = Utils.cloneDeep(options);\n    options.hasTrigger = instance && instance.constructor.options.hasTrigger;\n    const sql = this.queryGenerator.insertQuery(tableName, values, instance && instance.constructor.rawAttributes, options);\n\n    options.type = QueryTypes.INSERT;\n    options.instance = instance;\n\n    const results = await this.sequelize.query(sql, options);\n    if (instance) results[0].isNewRecord = false;\n\n    return results;\n  }\n\n  /**\n   * Upsert\n   *\n   * @param {string} tableName    table to upsert on\n   * @param {object} insertValues values to be inserted, mapped to field name\n   * @param {object} updateValues values to be updated, mapped to field name\n   * @param {object} where        where conditions, which can be used for UPDATE part when INSERT fails\n   * @param {object} options      query options\n   *\n   * @returns {Promise<boolean,?number>} Resolves an array with <created, primaryKey>\n   */\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    options = { ...options };\n\n    const model = options.model;\n\n    options.type = QueryTypes.UPSERT;\n    options.updateOnDuplicate = Object.keys(updateValues);\n    options.upsertKeys = options.conflictFields || [];\n\n    if (options.upsertKeys.length === 0) {\n      const primaryKeys = Object.values(model.primaryKeys).map(item => item.field);\n      const uniqueKeys = Object.values(model.uniqueKeys).filter(c => c.fields.length > 0).map(c => c.fields);\n      const indexKeys = Object.values(model._indexes).filter(c => c.unique && c.fields.length > 0).map(c => c.fields);\n      // For fields in updateValues, try to find a constraint or unique index\n      // that includes given field. Only first matching upsert key is used.\n      for (const field of options.updateOnDuplicate) {\n        const uniqueKey = uniqueKeys.find(fields => fields.includes(field));\n        if (uniqueKey) {\n          options.upsertKeys = uniqueKey;\n          break;\n        }\n\n        const indexKey = indexKeys.find(fields => fields.includes(field));\n        if (indexKey) {\n          options.upsertKeys = indexKey;\n          break;\n        }\n      }\n\n      // Always use PK, if no constraint available OR update data contains PK\n      if (\n        options.upsertKeys.length === 0\n        || _.intersection(options.updateOnDuplicate, primaryKeys).length\n      ) {\n        options.upsertKeys = primaryKeys;\n      }\n\n      options.upsertKeys = _.uniq(options.upsertKeys);\n    }\n\n    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Insert multiple records into a table\n   *\n   * @example\n   * queryInterface.bulkInsert('roles', [{\n   *    label: 'user',\n   *    createdAt: new Date(),\n   *    updatedAt: new Date()\n   *  }, {\n   *    label: 'admin',\n   *    createdAt: new Date(),\n   *    updatedAt: new Date()\n   *  }]);\n   *\n   * @param {string} tableName   Table name to insert record to\n   * @param {Array}  records     List of records to insert\n   * @param {object} options     Various options, please see Model.bulkCreate options\n   * @param {object} attributes  Various attributes mapped by field name\n   *\n   * @returns {Promise}\n   */\n  async bulkInsert(tableName, records, options, attributes) {\n    options = { ...options };\n    options.type = QueryTypes.INSERT;\n\n    const results = await this.sequelize.query(\n      this.queryGenerator.bulkInsertQuery(tableName, records, options, attributes),\n      options\n    );\n\n    return results[0];\n  }\n\n  async update(instance, tableName, values, identifier, options) {\n    options = { ...options };\n    options.hasTrigger = instance && instance.constructor.options.hasTrigger;\n\n    const sql = this.queryGenerator.updateQuery(tableName, values, identifier, options, instance.constructor.rawAttributes);\n\n    options.type = QueryTypes.UPDATE;\n\n    options.instance = instance;\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Update multiple records of a table\n   *\n   * @example\n   * queryInterface.bulkUpdate('roles', {\n   *     label: 'admin',\n   *   }, {\n   *     userType: 3,\n   *   },\n   * );\n   *\n   * @param {string} tableName     Table name to update\n   * @param {object} values        Values to be inserted, mapped to field name\n   * @param {object} identifier    A hash with conditions OR an ID as integer OR a string with conditions\n   * @param {object} [options]     Various options, please see Model.bulkCreate options\n   * @param {object} [attributes]  Attributes on return objects if supported by SQL dialect\n   *\n   * @returns {Promise}\n   */\n  async bulkUpdate(tableName, values, identifier, options, attributes) {\n    options = Utils.cloneDeep(options);\n    if (typeof identifier === 'object') identifier = Utils.cloneDeep(identifier);\n\n    const sql = this.queryGenerator.updateQuery(tableName, values, identifier, options, attributes);\n    const table = _.isObject(tableName) ? tableName : { tableName };\n    const model = options.model ? options.model : _.find(this.sequelize.modelManager.models, { tableName: table.tableName });\n\n    options.type = QueryTypes.BULKUPDATE;\n    options.model = model;\n    return await this.sequelize.query(sql, options);\n  }\n\n  async delete(instance, tableName, identifier, options) {\n    const cascades = [];\n    const sql = this.queryGenerator.deleteQuery(tableName, identifier, {}, instance.constructor);\n\n    options = { ...options };\n\n    // Check for a restrict field\n    if (!!instance.constructor && !!instance.constructor.associations) {\n      const keys = Object.keys(instance.constructor.associations);\n      const length = keys.length;\n      let association;\n\n      for (let i = 0; i < length; i++) {\n        association = instance.constructor.associations[keys[i]];\n        if (association.options && association.options.onDelete &&\n          association.options.onDelete.toLowerCase() === 'cascade' &&\n          association.options.useHooks === true) {\n          cascades.push(association.accessors.get);\n        }\n      }\n    }\n\n    for (const cascade of cascades) {\n      let instances = await instance[cascade](options);\n      // Check for hasOne relationship with non-existing associate (\"has zero\")\n      if (!instances) continue;\n      if (!Array.isArray(instances)) instances = [instances];\n      for (const _instance of instances) await _instance.destroy(options);\n    }\n    options.instance = instance;\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * Delete multiple records from a table\n   *\n   * @param {string}  tableName            table name from where to delete records\n   * @param {object}  where                where conditions to find records to delete\n   * @param {object}  [options]            options\n   * @param {boolean} [options.truncate]   Use truncate table command\n   * @param {boolean} [options.cascade=false]         Only used in conjunction with TRUNCATE. Truncates  all tables that have foreign-key references to the named table, or to any tables added to the group due to CASCADE.\n   * @param {boolean} [options.restartIdentity=false] Only used in conjunction with TRUNCATE. Automatically restart sequences owned by columns of the truncated table.\n   * @param {Model}   [model]              Model\n   *\n   * @returns {Promise}\n   */\n  async bulkDelete(tableName, where, options, model) {\n    options = Utils.cloneDeep(options);\n    options = _.defaults(options, { limit: null });\n\n    if (options.truncate === true) {\n      return this.sequelize.query(\n        this.queryGenerator.truncateTableQuery(tableName, options),\n        options\n      );\n    }\n\n    if (typeof identifier === 'object') where = Utils.cloneDeep(where);\n\n    return await this.sequelize.query(\n      this.queryGenerator.deleteQuery(tableName, where, options, model),\n      options\n    );\n  }\n\n  async select(model, tableName, optionsArg) {\n    const options = { ...optionsArg, type: QueryTypes.SELECT, model };\n\n    return await this.sequelize.query(\n      this.queryGenerator.selectQuery(tableName, options, model),\n      options\n    );\n  }\n\n  async increment(model, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {\n    options = Utils.cloneDeep(options);\n\n    const sql = this.queryGenerator.arithmeticQuery('+', tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);\n\n    options.type = QueryTypes.UPDATE;\n    options.model = model;\n\n    return await this.sequelize.query(sql, options);\n  }\n\n  async decrement(model, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options) {\n    options = Utils.cloneDeep(options);\n\n    const sql = this.queryGenerator.arithmeticQuery('-', tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);\n\n    options.type = QueryTypes.UPDATE;\n    options.model = model;\n\n    return await this.sequelize.query(sql, options);\n  }\n\n  async rawSelect(tableName, options, attributeSelector, Model) {\n    options = Utils.cloneDeep(options);\n    options = _.defaults(options, {\n      raw: true,\n      plain: true,\n      type: QueryTypes.SELECT\n    });\n\n    const sql = this.queryGenerator.selectQuery(tableName, options, Model);\n\n    if (attributeSelector === undefined) {\n      throw new Error('Please pass an attribute selector!');\n    }\n\n    const data = await this.sequelize.query(sql, options);\n    if (!options.plain) {\n      return data;\n    }\n\n    const result = data ? data[attributeSelector] : null;\n\n    if (!options || !options.dataType) {\n      return result;\n    }\n\n    const dataType = options.dataType;\n\n    if (dataType instanceof DataTypes.DECIMAL || dataType instanceof DataTypes.FLOAT) {\n      if (result !== null) {\n        return parseFloat(result);\n      }\n    }\n    if (dataType instanceof DataTypes.INTEGER || dataType instanceof DataTypes.BIGINT) {\n      if (result !== null) {\n        return parseInt(result, 10);\n      }\n    }\n    if (dataType instanceof DataTypes.DATE) {\n      if (result !== null && !(result instanceof Date)) {\n        return new Date(result);\n      }\n    }\n    return result;\n  }\n\n  async createTrigger(\n    tableName,\n    triggerName,\n    timingType,\n    fireOnArray,\n    functionName,\n    functionParams,\n    optionsArray,\n    options\n  ) {\n    const sql = this.queryGenerator.createTrigger(tableName, triggerName, timingType, fireOnArray, functionName, functionParams, optionsArray);\n    options = options || {};\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  async dropTrigger(tableName, triggerName, options) {\n    const sql = this.queryGenerator.dropTrigger(tableName, triggerName);\n    options = options || {};\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  async renameTrigger(tableName, oldTriggerName, newTriggerName, options) {\n    const sql = this.queryGenerator.renameTrigger(tableName, oldTriggerName, newTriggerName);\n    options = options || {};\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  /**\n   * Create an SQL function\n   *\n   * @example\n   * queryInterface.createFunction(\n   *   'someFunction',\n   *   [\n   *     {type: 'integer', name: 'param', direction: 'IN'}\n   *   ],\n   *   'integer',\n   *   'plpgsql',\n   *   'RETURN param + 1;',\n   *   [\n   *     'IMMUTABLE',\n   *     'LEAKPROOF'\n   *   ],\n   *   {\n   *    variables:\n   *      [\n   *        {type: 'integer', name: 'myVar', default: 100}\n   *      ],\n   *      force: true\n   *   };\n   * );\n   *\n   * @param {string}  functionName  Name of SQL function to create\n   * @param {Array}   params        List of parameters declared for SQL function\n   * @param {string}  returnType    SQL type of function returned value\n   * @param {string}  language      The name of the language that the function is implemented in\n   * @param {string}  body          Source code of function\n   * @param {Array}   optionsArray  Extra-options for creation\n   * @param {object}  [options]     query options\n   * @param {boolean} options.force If force is true, any existing functions with the same parameters will be replaced. For postgres, this means using `CREATE OR REPLACE FUNCTION` instead of `CREATE FUNCTION`. Default is false\n   * @param {Array<object>}   options.variables List of declared variables. Each variable should be an object with string fields `type` and `name`, and optionally having a `default` field as well.\n   *\n   * @returns {Promise}\n   */\n  async createFunction(functionName, params, returnType, language, body, optionsArray, options) {\n    const sql = this.queryGenerator.createFunction(functionName, params, returnType, language, body, optionsArray, options);\n    options = options || {};\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  /**\n   * Drop an SQL function\n   *\n   * @example\n   * queryInterface.dropFunction(\n   *   'someFunction',\n   *   [\n   *     {type: 'varchar', name: 'param1', direction: 'IN'},\n   *     {type: 'integer', name: 'param2', direction: 'INOUT'}\n   *   ]\n   * );\n   *\n   * @param {string} functionName Name of SQL function to drop\n   * @param {Array}  params       List of parameters declared for SQL function\n   * @param {object} [options]    query options\n   *\n   * @returns {Promise}\n   */\n  async dropFunction(functionName, params, options) {\n    const sql = this.queryGenerator.dropFunction(functionName, params);\n    options = options || {};\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  /**\n   * Rename an SQL function\n   *\n   * @example\n   * queryInterface.renameFunction(\n   *   'fooFunction',\n   *   [\n   *     {type: 'varchar', name: 'param1', direction: 'IN'},\n   *     {type: 'integer', name: 'param2', direction: 'INOUT'}\n   *   ],\n   *   'barFunction'\n   * );\n   *\n   * @param {string} oldFunctionName  Current name of function\n   * @param {Array}  params           List of parameters declared for SQL function\n   * @param {string} newFunctionName  New name of function\n   * @param {object} [options]        query options\n   *\n   * @returns {Promise}\n   */\n  async renameFunction(oldFunctionName, params, newFunctionName, options) {\n    const sql = this.queryGenerator.renameFunction(oldFunctionName, params, newFunctionName);\n    options = options || {};\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  // Helper methods useful for querying\n\n  /**\n   * @private\n   */\n  ensureEnums() {\n    // noop by default\n  }\n\n  async setIsolationLevel(transaction, value, options) {\n    if (!transaction || !(transaction instanceof Transaction)) {\n      throw new Error('Unable to set isolation level for a transaction without transaction object!');\n    }\n\n    if (transaction.parent || !value) {\n      // Not possible to set a separate isolation level for savepoints\n      return;\n    }\n\n    options = { ...options, transaction: transaction.parent || transaction };\n\n    const sql = this.queryGenerator.setIsolationLevelQuery(value, {\n      parent: transaction.parent\n    });\n\n    if (!sql) return;\n\n    return await this.sequelize.query(sql, options);\n  }\n\n  async startTransaction(transaction, options) {\n    if (!transaction || !(transaction instanceof Transaction)) {\n      throw new Error('Unable to start a transaction without transaction object!');\n    }\n\n    options = { ...options, transaction: transaction.parent || transaction };\n    options.transaction.name = transaction.parent ? transaction.name : undefined;\n    const sql = this.queryGenerator.startTransactionQuery(transaction);\n\n    return await this.sequelize.query(sql, options);\n  }\n\n  async deferConstraints(transaction, options) {\n    options = { ...options, transaction: transaction.parent || transaction };\n\n    const sql = this.queryGenerator.deferConstraintsQuery(options);\n\n    if (sql) {\n      return await this.sequelize.query(sql, options);\n    }\n  }\n\n  async commitTransaction(transaction, options) {\n    if (!transaction || !(transaction instanceof Transaction)) {\n      throw new Error('Unable to commit a transaction without transaction object!');\n    }\n    if (transaction.parent) {\n      // Savepoints cannot be committed\n      return;\n    }\n\n    options = {\n      ...options,\n      transaction: transaction.parent || transaction,\n      supportsSearchPath: false,\n      completesTransaction: true\n    };\n\n    const sql = this.queryGenerator.commitTransactionQuery(transaction);\n    const promise = this.sequelize.query(sql, options);\n\n    transaction.finished = 'commit';\n\n    return await promise;\n  }\n\n  async rollbackTransaction(transaction, options) {\n    if (!transaction || !(transaction instanceof Transaction)) {\n      throw new Error('Unable to rollback a transaction without transaction object!');\n    }\n\n    options = {\n      ...options,\n      transaction: transaction.parent || transaction,\n      supportsSearchPath: false,\n      completesTransaction: true\n    };\n    options.transaction.name = transaction.parent ? transaction.name : undefined;\n    const sql = this.queryGenerator.rollbackTransactionQuery(transaction);\n    const promise = this.sequelize.query(sql, options);\n\n    transaction.finished = 'rollback';\n\n    return await promise;\n  }\n}\n\nexports.QueryInterface = QueryInterface;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,546 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const _ = require("lodash");
-const SqlString = require("../../sql-string");
-const QueryTypes = require("../../query-types");
-const Dot = require("dottie");
-const deprecations = require("../../utils/deprecations");
-const uuid = require("uuid").v4;
-const { safeStringifyJson } = require("../../utils.js");
-class AbstractQuery {
-  constructor(connection, sequelize, options) {
-    this.uuid = uuid();
-    this.connection = connection;
-    this.instance = options.instance;
-    this.model = options.model;
-    this.sequelize = sequelize;
-    this.options = __spreadValues({
-      plain: false,
-      raw: false,
-      logging: console.log
-    }, options);
-    this.checkLoggingOption();
-    if (options.rawErrors) {
-      this.formatError = AbstractQuery.prototype.formatError;
-    }
-  }
-  static formatBindParameters(sql, values, dialect, replacementFunc, options) {
-    if (!values) {
-      return [sql, []];
-    }
-    options = options || {};
-    if (typeof replacementFunc !== "function") {
-      options = replacementFunc || {};
-      replacementFunc = void 0;
-    }
-    if (!replacementFunc) {
-      if (options.skipValueReplace) {
-        replacementFunc = (match, key, values2) => {
-          if (values2[key] !== void 0) {
-            return match;
-          }
-          return void 0;
-        };
-      } else {
-        replacementFunc = (match, key, values2, timeZone2, dialect2) => {
-          if (values2[key] !== void 0) {
-            return SqlString.escape(values2[key], timeZone2, dialect2);
-          }
-          return void 0;
-        };
-      }
-    } else if (options.skipValueReplace) {
-      const origReplacementFunc = replacementFunc;
-      replacementFunc = (match, key, values2, timeZone2, dialect2, options2) => {
-        if (origReplacementFunc(match, key, values2, timeZone2, dialect2, options2) !== void 0) {
-          return match;
-        }
-        return void 0;
-      };
-    }
-    const timeZone = null;
-    const list = Array.isArray(values);
-    sql = sql.replace(/\B\$(\$|\w+)/g, (match, key) => {
-      if (key === "$") {
-        return options.skipUnescape ? match : key;
-      }
-      let replVal;
-      if (list) {
-        if (key.match(/^[1-9]\d*$/)) {
-          key = key - 1;
-          replVal = replacementFunc(match, key, values, timeZone, dialect, options);
-        }
-      } else if (!key.match(/^\d*$/)) {
-        replVal = replacementFunc(match, key, values, timeZone, dialect, options);
-      }
-      if (replVal === void 0) {
-        throw new Error(`Named bind parameter "${match}" has no value in the given object.`);
-      }
-      return replVal;
-    });
-    return [sql, []];
-  }
-  formatError(error, errStack) {
-    error.stack = errStack;
-    return error;
-  }
-  run() {
-    throw new Error("The run method wasn't overwritten!");
-  }
-  checkLoggingOption() {
-    if (this.options.logging === true) {
-      deprecations.noTrueLogging();
-      this.options.logging = console.log;
-    }
-  }
-  getInsertIdField() {
-    return "insertId";
-  }
-  getUniqueConstraintErrorMessage(field) {
-    let message = field ? `${field} must be unique` : "Must be unique";
-    if (field && this.model) {
-      for (const key of Object.keys(this.model.uniqueKeys)) {
-        if (this.model.uniqueKeys[key].fields.includes(field.replace(/"/g, ""))) {
-          if (this.model.uniqueKeys[key].msg) {
-            message = this.model.uniqueKeys[key].msg;
-          }
-        }
-      }
-    }
-    return message;
-  }
-  isRawQuery() {
-    return this.options.type === QueryTypes.RAW;
-  }
-  isVersionQuery() {
-    return this.options.type === QueryTypes.VERSION;
-  }
-  isUpsertQuery() {
-    return this.options.type === QueryTypes.UPSERT;
-  }
-  isInsertQuery(results, metaData) {
-    let result = true;
-    if (this.options.type === QueryTypes.INSERT) {
-      return true;
-    }
-    result = result && this.sql.toLowerCase().startsWith("insert into");
-    result = result && (!results || Object.prototype.hasOwnProperty.call(results, this.getInsertIdField()));
-    result = result && (!metaData || Object.prototype.hasOwnProperty.call(metaData, this.getInsertIdField()));
-    return result;
-  }
-  handleInsertQuery(results, metaData) {
-    if (this.instance) {
-      const autoIncrementAttribute = this.model.autoIncrementAttribute;
-      let id = null;
-      id = id || results && results[this.getInsertIdField()];
-      id = id || metaData && metaData[this.getInsertIdField()];
-      this.instance[autoIncrementAttribute] = id;
-    }
-  }
-  isShowTablesQuery() {
-    return this.options.type === QueryTypes.SHOWTABLES;
-  }
-  handleShowTablesQuery(results) {
-    return _.flatten(results.map((resultSet) => Object.values(resultSet)));
-  }
-  isShowIndexesQuery() {
-    return this.options.type === QueryTypes.SHOWINDEXES;
-  }
-  isShowConstraintsQuery() {
-    return this.options.type === QueryTypes.SHOWCONSTRAINTS;
-  }
-  isDescribeQuery() {
-    return this.options.type === QueryTypes.DESCRIBE;
-  }
-  isSelectQuery() {
-    return this.options.type === QueryTypes.SELECT;
-  }
-  isBulkUpdateQuery() {
-    return this.options.type === QueryTypes.BULKUPDATE;
-  }
-  isBulkDeleteQuery() {
-    return this.options.type === QueryTypes.BULKDELETE;
-  }
-  isForeignKeysQuery() {
-    return this.options.type === QueryTypes.FOREIGNKEYS;
-  }
-  isUpdateQuery() {
-    return this.options.type === QueryTypes.UPDATE;
-  }
-  handleSelectQuery(results) {
-    let result = null;
-    if (this.options.fieldMap) {
-      const fieldMap = this.options.fieldMap;
-      results = results.map((result2) => _.reduce(fieldMap, (result3, name, field) => {
-        if (result3[field] !== void 0 && name !== field) {
-          result3[name] = result3[field];
-          delete result3[field];
-        }
-        return result3;
-      }, result2));
-    }
-    if (this.options.raw) {
-      result = results.map((result2) => {
-        let o = {};
-        for (const key in result2) {
-          if (Object.prototype.hasOwnProperty.call(result2, key)) {
-            o[key] = result2[key];
-          }
-        }
-        if (this.options.nest) {
-          o = Dot.transform(o);
-        }
-        return o;
-      });
-    } else if (this.options.hasJoin === true) {
-      results = AbstractQuery._groupJoinData(results, {
-        model: this.model,
-        includeMap: this.options.includeMap,
-        includeNames: this.options.includeNames
-      }, {
-        checkExisting: this.options.hasMultiAssociation
-      });
-      result = this.model.bulkBuild(results, {
-        isNewRecord: false,
-        include: this.options.include,
-        includeNames: this.options.includeNames,
-        includeMap: this.options.includeMap,
-        includeValidated: true,
-        attributes: this.options.originalAttributes || this.options.attributes,
-        raw: true
-      });
-    } else {
-      result = this.model.bulkBuild(results, {
-        isNewRecord: false,
-        raw: true,
-        attributes: this.options.originalAttributes || this.options.attributes
-      });
-    }
-    if (this.options.plain) {
-      result = result.length === 0 ? null : result[0];
-    }
-    return result;
-  }
-  isShowOrDescribeQuery() {
-    let result = false;
-    result = result || this.sql.toLowerCase().startsWith("show");
-    result = result || this.sql.toLowerCase().startsWith("describe");
-    return result;
-  }
-  isCallQuery() {
-    return this.sql.toLowerCase().startsWith("call");
-  }
-  _logQuery(sql, debugContext, parameters) {
-    const { connection, options } = this;
-    const benchmark = this.sequelize.options.benchmark || options.benchmark;
-    const logQueryParameters = this.sequelize.options.logQueryParameters || options.logQueryParameters;
-    const startTime = Date.now();
-    let logParameter = "";
-    if (logQueryParameters && parameters) {
-      const delimiter = sql.endsWith(";") ? "" : ";";
-      let paramStr;
-      if (Array.isArray(parameters)) {
-        paramStr = parameters.map((p) => safeStringifyJson(p)).join(", ");
-      } else {
-        paramStr = safeStringifyJson(parameters);
-      }
-      logParameter = `${delimiter} ${paramStr}`;
-    }
-    const fmt = `(${connection.uuid || "default"}): ${sql}${logParameter}`;
-    const msg = `Executing ${fmt}`;
-    debugContext(msg);
-    if (!benchmark) {
-      this.sequelize.log(`Executing ${fmt}`, options);
-    }
-    return () => {
-      const afterMsg = `Executed ${fmt}`;
-      debugContext(afterMsg);
-      if (benchmark) {
-        this.sequelize.log(afterMsg, Date.now() - startTime, options);
-      }
-    };
-  }
-  static _groupJoinData(rows, includeOptions, options) {
-    if (!rows.length) {
-      return [];
-    }
-    let i;
-    let length;
-    let $i;
-    let $length;
-    let rowsI;
-    let row;
-    const rowsLength = rows.length;
-    let keys;
-    let key;
-    let keyI;
-    let keyLength;
-    let prevKey;
-    let values;
-    let topValues;
-    let topExists;
-    const checkExisting = options.checkExisting;
-    let itemHash;
-    let parentHash;
-    let topHash;
-    const results = checkExisting ? [] : new Array(rowsLength);
-    const resultMap = {};
-    const includeMap = {};
-    let $keyPrefix;
-    let $keyPrefixString;
-    let $prevKeyPrefixString;
-    let $prevKeyPrefix;
-    let $lastKeyPrefix;
-    let $current;
-    let $parent;
-    let previousPiece;
-    const buildIncludeMap = (piece) => {
-      if (Object.prototype.hasOwnProperty.call($current.includeMap, piece)) {
-        includeMap[key] = $current = $current.includeMap[piece];
-        if (previousPiece) {
-          previousPiece = `${previousPiece}.${piece}`;
-        } else {
-          previousPiece = piece;
-        }
-        includeMap[previousPiece] = $current;
-      }
-    };
-    const keyPrefixStringMemo = {};
-    const keyPrefixString = (key2, memo) => {
-      if (!Object.prototype.hasOwnProperty.call(memo, key2)) {
-        memo[key2] = key2.substr(0, key2.lastIndexOf("."));
-      }
-      return memo[key2];
-    };
-    const removeKeyPrefixMemo = {};
-    const removeKeyPrefix = (key2) => {
-      if (!Object.prototype.hasOwnProperty.call(removeKeyPrefixMemo, key2)) {
-        const index = key2.lastIndexOf(".");
-        removeKeyPrefixMemo[key2] = key2.substr(index === -1 ? 0 : index + 1);
-      }
-      return removeKeyPrefixMemo[key2];
-    };
-    const keyPrefixMemo = {};
-    const keyPrefix = (key2) => {
-      if (!Object.prototype.hasOwnProperty.call(keyPrefixMemo, key2)) {
-        const prefixString = keyPrefixString(key2, keyPrefixStringMemo);
-        if (!Object.prototype.hasOwnProperty.call(keyPrefixMemo, prefixString)) {
-          keyPrefixMemo[prefixString] = prefixString ? prefixString.split(".") : [];
-        }
-        keyPrefixMemo[key2] = keyPrefixMemo[prefixString];
-      }
-      return keyPrefixMemo[key2];
-    };
-    const lastKeyPrefixMemo = {};
-    const lastKeyPrefix = (key2) => {
-      if (!Object.prototype.hasOwnProperty.call(lastKeyPrefixMemo, key2)) {
-        const prefix2 = keyPrefix(key2);
-        const length2 = prefix2.length;
-        lastKeyPrefixMemo[key2] = !length2 ? "" : prefix2[length2 - 1];
-      }
-      return lastKeyPrefixMemo[key2];
-    };
-    const getUniqueKeyAttributes = (model) => {
-      let uniqueKeyAttributes2 = _.chain(model.uniqueKeys);
-      uniqueKeyAttributes2 = uniqueKeyAttributes2.result(`${uniqueKeyAttributes2.findKey()}.fields`).map((field) => _.findKey(model.attributes, (chr) => chr.field === field)).value();
-      return uniqueKeyAttributes2;
-    };
-    const stringify = (obj) => obj instanceof Buffer ? obj.toString("hex") : obj;
-    let primaryKeyAttributes;
-    let uniqueKeyAttributes;
-    let prefix;
-    for (rowsI = 0; rowsI < rowsLength; rowsI++) {
-      row = rows[rowsI];
-      if (rowsI === 0) {
-        keys = _.sortBy(Object.keys(row), (item) => [item.split(".").length]);
-        keyLength = keys.length;
-      }
-      if (checkExisting) {
-        topExists = false;
-        $length = includeOptions.model.primaryKeyAttributes.length;
-        topHash = "";
-        if ($length === 1) {
-          topHash = stringify(row[includeOptions.model.primaryKeyAttributes[0]]);
-        } else if ($length > 1) {
-          for ($i = 0; $i < $length; $i++) {
-            topHash += stringify(row[includeOptions.model.primaryKeyAttributes[$i]]);
-          }
-        } else if (!_.isEmpty(includeOptions.model.uniqueKeys)) {
-          uniqueKeyAttributes = getUniqueKeyAttributes(includeOptions.model);
-          for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {
-            topHash += row[uniqueKeyAttributes[$i]];
-          }
-        }
-      }
-      topValues = values = {};
-      $prevKeyPrefix = void 0;
-      for (keyI = 0; keyI < keyLength; keyI++) {
-        key = keys[keyI];
-        $keyPrefixString = keyPrefixString(key, keyPrefixStringMemo);
-        $keyPrefix = keyPrefix(key);
-        if (rowsI === 0 && !Object.prototype.hasOwnProperty.call(includeMap, key)) {
-          if (!$keyPrefix.length) {
-            includeMap[key] = includeMap[""] = includeOptions;
-          } else {
-            $current = includeOptions;
-            previousPiece = void 0;
-            $keyPrefix.forEach(buildIncludeMap);
-          }
-        }
-        if ($prevKeyPrefix !== void 0 && $prevKeyPrefix !== $keyPrefix) {
-          if (checkExisting) {
-            length = $prevKeyPrefix.length;
-            $parent = null;
-            parentHash = null;
-            if (length) {
-              for (i = 0; i < length; i++) {
-                prefix = $parent ? `${$parent}.${$prevKeyPrefix[i]}` : $prevKeyPrefix[i];
-                primaryKeyAttributes = includeMap[prefix].model.primaryKeyAttributes;
-                $length = primaryKeyAttributes.length;
-                itemHash = prefix;
-                if ($length === 1) {
-                  itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[0]}`]);
-                } else if ($length > 1) {
-                  for ($i = 0; $i < $length; $i++) {
-                    itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[$i]}`]);
-                  }
-                } else if (!_.isEmpty(includeMap[prefix].model.uniqueKeys)) {
-                  uniqueKeyAttributes = getUniqueKeyAttributes(includeMap[prefix].model);
-                  for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {
-                    itemHash += row[`${prefix}.${uniqueKeyAttributes[$i]}`];
-                  }
-                }
-                if (!parentHash) {
-                  parentHash = topHash;
-                }
-                itemHash = parentHash + itemHash;
-                $parent = prefix;
-                if (i < length - 1) {
-                  parentHash = itemHash;
-                }
-              }
-            } else {
-              itemHash = topHash;
-            }
-            if (itemHash === topHash) {
-              if (!resultMap[itemHash]) {
-                resultMap[itemHash] = values;
-              } else {
-                topExists = true;
-              }
-            } else if (!resultMap[itemHash]) {
-              $parent = resultMap[parentHash];
-              $lastKeyPrefix = lastKeyPrefix(prevKey);
-              if (includeMap[prevKey].association.isSingleAssociation) {
-                if ($parent) {
-                  $parent[$lastKeyPrefix] = resultMap[itemHash] = values;
-                }
-              } else {
-                if (!$parent[$lastKeyPrefix]) {
-                  $parent[$lastKeyPrefix] = [];
-                }
-                $parent[$lastKeyPrefix].push(resultMap[itemHash] = values);
-              }
-            }
-            values = {};
-          } else {
-            $current = topValues;
-            length = $keyPrefix.length;
-            if (length) {
-              for (i = 0; i < length; i++) {
-                if (i === length - 1) {
-                  values = $current[$keyPrefix[i]] = {};
-                }
-                $current = $current[$keyPrefix[i]] || {};
-              }
-            }
-          }
-        }
-        values[removeKeyPrefix(key)] = row[key];
-        prevKey = key;
-        $prevKeyPrefix = $keyPrefix;
-        $prevKeyPrefixString = $keyPrefixString;
-      }
-      if (checkExisting) {
-        length = $prevKeyPrefix.length;
-        $parent = null;
-        parentHash = null;
-        if (length) {
-          for (i = 0; i < length; i++) {
-            prefix = $parent ? `${$parent}.${$prevKeyPrefix[i]}` : $prevKeyPrefix[i];
-            primaryKeyAttributes = includeMap[prefix].model.primaryKeyAttributes;
-            $length = primaryKeyAttributes.length;
-            itemHash = prefix;
-            if ($length === 1) {
-              itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[0]}`]);
-            } else if ($length > 0) {
-              for ($i = 0; $i < $length; $i++) {
-                itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[$i]}`]);
-              }
-            } else if (!_.isEmpty(includeMap[prefix].model.uniqueKeys)) {
-              uniqueKeyAttributes = getUniqueKeyAttributes(includeMap[prefix].model);
-              for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {
-                itemHash += row[`${prefix}.${uniqueKeyAttributes[$i]}`];
-              }
-            }
-            if (!parentHash) {
-              parentHash = topHash;
-            }
-            itemHash = parentHash + itemHash;
-            $parent = prefix;
-            if (i < length - 1) {
-              parentHash = itemHash;
-            }
-          }
-        } else {
-          itemHash = topHash;
-        }
-        if (itemHash === topHash) {
-          if (!resultMap[itemHash]) {
-            resultMap[itemHash] = values;
-          } else {
-            topExists = true;
-          }
-        } else if (!resultMap[itemHash]) {
-          $parent = resultMap[parentHash];
-          $lastKeyPrefix = lastKeyPrefix(prevKey);
-          if (includeMap[prevKey].association.isSingleAssociation) {
-            if ($parent) {
-              $parent[$lastKeyPrefix] = resultMap[itemHash] = values;
-            }
-          } else {
-            if (!$parent[$lastKeyPrefix]) {
-              $parent[$lastKeyPrefix] = [];
-            }
-            $parent[$lastKeyPrefix].push(resultMap[itemHash] = values);
-          }
-        }
-        if (!topExists) {
-          results.push(topValues);
-        }
-      } else {
-        results[rowsI] = topValues;
-      }
-    }
-    return results;
-  }
-}
-module.exports = AbstractQuery;
-module.exports.AbstractQuery = AbstractQuery;
-module.exports.default = AbstractQuery;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/abstract/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/abstract/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/abstract/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst SqlString = require('../../sql-string');\nconst QueryTypes = require('../../query-types');\nconst Dot = require('dottie');\nconst deprecations = require('../../utils/deprecations');\nconst uuid = require('uuid').v4;\nconst { safeStringifyJson } = require('../../utils.js');\n\nclass AbstractQuery {\n\n  constructor(connection, sequelize, options) {\n    this.uuid = uuid();\n    this.connection = connection;\n    this.instance = options.instance;\n    this.model = options.model;\n    this.sequelize = sequelize;\n    this.options = {\n      plain: false,\n      raw: false,\n      // eslint-disable-next-line no-console\n      logging: console.log,\n      ...options\n    };\n    this.checkLoggingOption();\n\n    if (options.rawErrors) {\n      // The default implementation in AbstractQuery just returns the same\n      // error object. By overidding this.formatError, this saves every dialect\n      // having to check for options.rawErrors in their own formatError\n      // implementations.\n      this.formatError = AbstractQuery.prototype.formatError;\n    }\n  }\n\n  /**\n   * rewrite query with parameters\n   *\n   * Examples:\n   *\n   *   query.formatBindParameters('select $1 as foo', ['fooval']);\n   *\n   *   query.formatBindParameters('select $foo as foo', { foo: 'fooval' });\n   *\n   * Options\n   *   skipUnescape: bool, skip unescaping $$\n   *   skipValueReplace: bool, do not replace (but do unescape $$). Check correct syntax and if all values are available\n   *\n   * @param {string} sql\n   * @param {object|Array} values\n   * @param {string} dialect\n   * @param {Function} [replacementFunc]\n   * @param {object} [options]\n   * @private\n   */\n  static formatBindParameters(sql, values, dialect, replacementFunc, options) {\n    if (!values) {\n      return [sql, []];\n    }\n\n    options = options || {};\n    if (typeof replacementFunc !== 'function') {\n      options = replacementFunc || {};\n      replacementFunc = undefined;\n    }\n\n    if (!replacementFunc) {\n      if (options.skipValueReplace) {\n        replacementFunc = (match, key, values) => {\n          if (values[key] !== undefined) {\n            return match;\n          }\n          return undefined;\n        };\n      } else {\n        replacementFunc = (match, key, values, timeZone, dialect) => {\n          if (values[key] !== undefined) {\n            return SqlString.escape(values[key], timeZone, dialect);\n          }\n          return undefined;\n        };\n      }\n    } else if (options.skipValueReplace) {\n      const origReplacementFunc = replacementFunc;\n      replacementFunc = (match, key, values, timeZone, dialect, options) => {\n        if (origReplacementFunc(match, key, values, timeZone, dialect, options) !== undefined) {\n          return match;\n        }\n        return undefined;\n      };\n    }\n\n    const timeZone = null;\n    const list = Array.isArray(values);\n    sql = sql.replace(/\\B\\$(\\$|\\w+)/g, (match, key) => {\n      if ('$' === key) {\n        return options.skipUnescape ? match : key;\n      }\n\n      let replVal;\n      if (list) {\n        if (key.match(/^[1-9]\\d*$/)) {\n          key = key - 1;\n          replVal = replacementFunc(match, key, values, timeZone, dialect, options);\n        }\n      } else if (!key.match(/^\\d*$/)) {\n        replVal = replacementFunc(match, key, values, timeZone, dialect, options);\n      }\n      if (replVal === undefined) {\n        throw new Error(`Named bind parameter \"${match}\" has no value in the given object.`);\n      }\n      return replVal;\n    });\n    return [sql, []];\n  }\n\n  /**\n   * Formats a raw database error from the database library into a common Sequelize exception.\n   *\n   * @param {Error} error The exception object.\n   * @param {object} errStack The stack trace that started the database query.\n   * @returns {BaseError} the new formatted error object.\n   */\n  formatError(error, errStack) {\n    // Default implementation, no formatting.\n    // Each dialect overrides this method to parse errors from their respective the database engines.\n    error.stack = errStack;\n\n    return error;\n  }\n\n  /**\n   * Execute the passed sql query.\n   *\n   * Examples:\n   *\n   *     query.run('SELECT 1')\n   *\n   * @private\n   */\n  run() {\n    throw new Error('The run method wasn\\'t overwritten!');\n  }\n\n  /**\n   * Check the logging option of the instance and print deprecation warnings.\n   *\n   * @private\n   */\n  checkLoggingOption() {\n    if (this.options.logging === true) {\n      deprecations.noTrueLogging();\n      // eslint-disable-next-line no-console\n      this.options.logging = console.log;\n    }\n  }\n\n  /**\n   * Get the attributes of an insert query, which contains the just inserted id.\n   *\n   * @returns {string} The field name.\n   * @private\n   */\n  getInsertIdField() {\n    return 'insertId';\n  }\n\n  getUniqueConstraintErrorMessage(field) {\n    let message = field ? `${field} must be unique` : 'Must be unique';\n\n    if (field && this.model) {\n      for (const key of Object.keys(this.model.uniqueKeys)) {\n        if (this.model.uniqueKeys[key].fields.includes(field.replace(/\"/g, ''))) {\n          if (this.model.uniqueKeys[key].msg) {\n            message = this.model.uniqueKeys[key].msg;\n          }\n        }\n      }\n    }\n    return message;\n  }\n\n  isRawQuery() {\n    return this.options.type === QueryTypes.RAW;\n  }\n\n  isVersionQuery() {\n    return this.options.type === QueryTypes.VERSION;\n  }\n\n  isUpsertQuery() {\n    return this.options.type === QueryTypes.UPSERT;\n  }\n\n  isInsertQuery(results, metaData) {\n    let result = true;\n\n    if (this.options.type === QueryTypes.INSERT) {\n      return true;\n    }\n\n    // is insert query if sql contains insert into\n    result = result && this.sql.toLowerCase().startsWith('insert into');\n\n    // is insert query if no results are passed or if the result has the inserted id\n    result = result && (!results || Object.prototype.hasOwnProperty.call(results, this.getInsertIdField()));\n\n    // is insert query if no metadata are passed or if the metadata has the inserted id\n    result = result && (!metaData || Object.prototype.hasOwnProperty.call(metaData, this.getInsertIdField()));\n\n    return result;\n  }\n\n  handleInsertQuery(results, metaData) {\n    if (this.instance) {\n      // add the inserted row id to the instance\n      const autoIncrementAttribute = this.model.autoIncrementAttribute;\n      let id = null;\n\n      id = id || results && results[this.getInsertIdField()];\n      id = id || metaData && metaData[this.getInsertIdField()];\n\n      this.instance[autoIncrementAttribute] = id;\n    }\n  }\n\n  isShowTablesQuery() {\n    return this.options.type === QueryTypes.SHOWTABLES;\n  }\n\n  handleShowTablesQuery(results) {\n    return _.flatten(results.map(resultSet => Object.values(resultSet)));\n  }\n\n  isShowIndexesQuery() {\n    return this.options.type === QueryTypes.SHOWINDEXES;\n  }\n\n  isShowConstraintsQuery() {\n    return this.options.type === QueryTypes.SHOWCONSTRAINTS;\n  }\n\n  isDescribeQuery() {\n    return this.options.type === QueryTypes.DESCRIBE;\n  }\n\n  isSelectQuery() {\n    return this.options.type === QueryTypes.SELECT;\n  }\n\n  isBulkUpdateQuery() {\n    return this.options.type === QueryTypes.BULKUPDATE;\n  }\n\n  isBulkDeleteQuery() {\n    return this.options.type === QueryTypes.BULKDELETE;\n  }\n\n  isForeignKeysQuery() {\n    return this.options.type === QueryTypes.FOREIGNKEYS;\n  }\n\n  isUpdateQuery() {\n    return this.options.type === QueryTypes.UPDATE;\n  }\n\n  handleSelectQuery(results) {\n    let result = null;\n\n    // Map raw fields to names if a mapping is provided\n    if (this.options.fieldMap) {\n      const fieldMap = this.options.fieldMap;\n      results = results.map(result => _.reduce(fieldMap, (result, name, field) => {\n        if (result[field] !== undefined && name !== field) {\n          result[name] = result[field];\n          delete result[field];\n        }\n        return result;\n      }, result));\n    }\n\n    // Raw queries\n    if (this.options.raw) {\n      result = results.map(result => {\n        let o = {};\n\n        for (const key in result) {\n          if (Object.prototype.hasOwnProperty.call(result, key)) {\n            o[key] = result[key];\n          }\n        }\n\n        if (this.options.nest) {\n          o = Dot.transform(o);\n        }\n\n        return o;\n      });\n    // Queries with include\n    } else if (this.options.hasJoin === true) {\n      results = AbstractQuery._groupJoinData(results, {\n        model: this.model,\n        includeMap: this.options.includeMap,\n        includeNames: this.options.includeNames\n      }, {\n        checkExisting: this.options.hasMultiAssociation\n      });\n\n      result = this.model.bulkBuild(results, {\n        isNewRecord: false,\n        include: this.options.include,\n        includeNames: this.options.includeNames,\n        includeMap: this.options.includeMap,\n        includeValidated: true,\n        attributes: this.options.originalAttributes || this.options.attributes,\n        raw: true\n      });\n    // Regular queries\n    } else {\n      result = this.model.bulkBuild(results, {\n        isNewRecord: false,\n        raw: true,\n        attributes: this.options.originalAttributes || this.options.attributes\n      });\n    }\n\n    // return the first real model instance if options.plain is set (e.g. Model.find)\n    if (this.options.plain) {\n      result = result.length === 0 ? null : result[0];\n    }\n    return result;\n  }\n\n  isShowOrDescribeQuery() {\n    let result = false;\n\n    result = result || this.sql.toLowerCase().startsWith('show');\n    result = result || this.sql.toLowerCase().startsWith('describe');\n\n    return result;\n  }\n\n  isCallQuery() {\n    return this.sql.toLowerCase().startsWith('call');\n  }\n\n  /**\n   * @param {string} sql\n   * @param {Function} debugContext\n   * @param {Array|object} parameters\n   * @protected\n   * @returns {Function} A function to call after the query was completed.\n   */\n  _logQuery(sql, debugContext, parameters) {\n    const { connection, options } = this;\n    const benchmark = this.sequelize.options.benchmark || options.benchmark;\n    const logQueryParameters = this.sequelize.options.logQueryParameters || options.logQueryParameters;\n    const startTime = Date.now();\n    let logParameter = '';\n\n    if (logQueryParameters && parameters) {\n      const delimiter = sql.endsWith(';') ? '' : ';';\n      let paramStr;\n      if (Array.isArray(parameters)) {\n        paramStr = parameters.map(p=>safeStringifyJson(p)).join(', ');\n      } else {\n        paramStr = safeStringifyJson(parameters);\n      }\n      logParameter = `${delimiter} ${paramStr}`;\n    }\n    const fmt = `(${connection.uuid || 'default'}): ${sql}${logParameter}`;\n    const msg = `Executing ${fmt}`;\n    debugContext(msg);\n    if (!benchmark) {\n      this.sequelize.log(`Executing ${fmt}`, options);\n    }\n    return () => {\n      const afterMsg = `Executed ${fmt}`;\n      debugContext(afterMsg);\n      if (benchmark) {\n        this.sequelize.log(afterMsg, Date.now() - startTime, options);\n      }\n    };\n  }\n\n  /**\n   * The function takes the result of the query execution and groups\n   * the associated data by the callee.\n   *\n   * Example:\n   *   groupJoinData([\n   *     {\n   *       some: 'data',\n   *       id: 1,\n   *       association: { foo: 'bar', id: 1 }\n   *     }, {\n   *       some: 'data',\n   *       id: 1,\n   *       association: { foo: 'bar', id: 2 }\n   *     }, {\n   *       some: 'data',\n   *       id: 1,\n   *       association: { foo: 'bar', id: 3 }\n   *     }\n   *   ])\n   *\n   * Result:\n   *   Something like this:\n   *\n   *   [\n   *     {\n   *       some: 'data',\n   *       id: 1,\n   *       association: [\n   *         { foo: 'bar', id: 1 },\n   *         { foo: 'bar', id: 2 },\n   *         { foo: 'bar', id: 3 }\n   *       ]\n   *     }\n   *   ]\n   *\n   * @param {Array} rows\n   * @param {object} includeOptions\n   * @param {object} options\n   * @private\n   */\n  static _groupJoinData(rows, includeOptions, options) {\n\n    /*\n     * Assumptions\n     * ID is not necessarily the first field\n     * All fields for a level is grouped in the same set (i.e. Panel.id, Task.id, Panel.title is not possible)\n     * Parent keys will be seen before any include/child keys\n     * Previous set won't necessarily be parent set (one parent could have two children, one child would then be previous set for the other)\n     */\n\n    /*\n     * Author (MH) comment: This code is an unreadable mess, but it's performant.\n     * groupJoinData is a performance critical function so we prioritize perf over readability.\n     */\n    if (!rows.length) {\n      return [];\n    }\n\n    // Generic looping\n    let i;\n    let length;\n    let $i;\n    let $length;\n    // Row specific looping\n    let rowsI;\n    let row;\n    const rowsLength = rows.length;\n    // Key specific looping\n    let keys;\n    let key;\n    let keyI;\n    let keyLength;\n    let prevKey;\n    let values;\n    let topValues;\n    let topExists;\n    const checkExisting = options.checkExisting;\n    // If we don't have to deduplicate we can pre-allocate the resulting array\n    let itemHash;\n    let parentHash;\n    let topHash;\n    const results = checkExisting ? [] : new Array(rowsLength);\n    const resultMap = {};\n    const includeMap = {};\n    // Result variables for the respective functions\n    let $keyPrefix;\n    let $keyPrefixString;\n    let $prevKeyPrefixString; // eslint-disable-line\n    let $prevKeyPrefix;\n    let $lastKeyPrefix;\n    let $current;\n    let $parent;\n    // Map each key to an include option\n    let previousPiece;\n    const buildIncludeMap = piece => {\n      if (Object.prototype.hasOwnProperty.call($current.includeMap, piece)) {\n        includeMap[key] = $current = $current.includeMap[piece];\n        if (previousPiece) {\n          previousPiece = `${previousPiece}.${piece}`;\n        } else {\n          previousPiece = piece;\n        }\n        includeMap[previousPiece] = $current;\n      }\n    };\n    // Calculate the string prefix of a key ('User.Results' for 'User.Results.id')\n    const keyPrefixStringMemo = {};\n    const keyPrefixString = (key, memo) => {\n      if (!Object.prototype.hasOwnProperty.call(memo, key)) {\n        memo[key] = key.substr(0, key.lastIndexOf('.'));\n      }\n      return memo[key];\n    };\n    // Removes the prefix from a key ('id' for 'User.Results.id')\n    const removeKeyPrefixMemo = {};\n    const removeKeyPrefix = key => {\n      if (!Object.prototype.hasOwnProperty.call(removeKeyPrefixMemo, key)) {\n        const index = key.lastIndexOf('.');\n        removeKeyPrefixMemo[key] = key.substr(index === -1 ? 0 : index + 1);\n      }\n      return removeKeyPrefixMemo[key];\n    };\n    // Calculates the array prefix of a key (['User', 'Results'] for 'User.Results.id')\n    const keyPrefixMemo = {};\n    const keyPrefix = key => {\n      // We use a double memo and keyPrefixString so that different keys with the same prefix will receive the same array instead of differnet arrays with equal values\n      if (!Object.prototype.hasOwnProperty.call(keyPrefixMemo, key)) {\n        const prefixString = keyPrefixString(key, keyPrefixStringMemo);\n        if (!Object.prototype.hasOwnProperty.call(keyPrefixMemo, prefixString)) {\n          keyPrefixMemo[prefixString] = prefixString ? prefixString.split('.') : [];\n        }\n        keyPrefixMemo[key] = keyPrefixMemo[prefixString];\n      }\n      return keyPrefixMemo[key];\n    };\n    // Calcuate the last item in the array prefix ('Results' for 'User.Results.id')\n    const lastKeyPrefixMemo = {};\n    const lastKeyPrefix = key => {\n      if (!Object.prototype.hasOwnProperty.call(lastKeyPrefixMemo, key)) {\n        const prefix = keyPrefix(key);\n        const length = prefix.length;\n\n        lastKeyPrefixMemo[key] = !length ? '' : prefix[length - 1];\n      }\n      return lastKeyPrefixMemo[key];\n    };\n    const getUniqueKeyAttributes = model => {\n      let uniqueKeyAttributes = _.chain(model.uniqueKeys);\n      uniqueKeyAttributes = uniqueKeyAttributes\n        .result(`${uniqueKeyAttributes.findKey()}.fields`)\n        .map(field => _.findKey(model.attributes, chr => chr.field === field))\n        .value();\n\n      return uniqueKeyAttributes;\n    };\n    const stringify = obj => obj instanceof Buffer ? obj.toString('hex') : obj;\n    let primaryKeyAttributes;\n    let uniqueKeyAttributes;\n    let prefix;\n\n    for (rowsI = 0; rowsI < rowsLength; rowsI++) {\n      row = rows[rowsI];\n\n      // Keys are the same for all rows, so only need to compute them on the first row\n      if (rowsI === 0) {\n        keys = _.sortBy(Object.keys(row), item => [item.split('.').length]);\n        keyLength = keys.length;\n      }\n\n      if (checkExisting) {\n        topExists = false;\n\n        // Compute top level hash key (this is usually just the primary key values)\n        $length = includeOptions.model.primaryKeyAttributes.length;\n        topHash = '';\n        if ($length === 1) {\n          topHash = stringify(row[includeOptions.model.primaryKeyAttributes[0]]);\n        }\n        else if ($length > 1) {\n          for ($i = 0; $i < $length; $i++) {\n            topHash += stringify(row[includeOptions.model.primaryKeyAttributes[$i]]);\n          }\n        }\n        else if (!_.isEmpty(includeOptions.model.uniqueKeys)) {\n          uniqueKeyAttributes = getUniqueKeyAttributes(includeOptions.model);\n          for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {\n            topHash += row[uniqueKeyAttributes[$i]];\n          }\n        }\n      }\n\n      topValues = values = {};\n      $prevKeyPrefix = undefined;\n      for (keyI = 0; keyI < keyLength; keyI++) {\n        key = keys[keyI];\n\n        // The string prefix isn't actualy needed\n        // We use it so keyPrefix for different keys will resolve to the same array if they have the same prefix\n        // TODO: Find a better way?\n        $keyPrefixString = keyPrefixString(key, keyPrefixStringMemo);\n        $keyPrefix = keyPrefix(key);\n\n        // On the first row we compute the includeMap\n        if (rowsI === 0 && !Object.prototype.hasOwnProperty.call(includeMap, key)) {\n          if (!$keyPrefix.length) {\n            includeMap[key] = includeMap[''] = includeOptions;\n          } else {\n            $current = includeOptions;\n            previousPiece = undefined;\n            $keyPrefix.forEach(buildIncludeMap);\n          }\n        }\n        // End of key set\n        if ($prevKeyPrefix !== undefined && $prevKeyPrefix !== $keyPrefix) {\n          if (checkExisting) {\n            // Compute hash key for this set instance\n            // TODO: Optimize\n            length = $prevKeyPrefix.length;\n            $parent = null;\n            parentHash = null;\n\n            if (length) {\n              for (i = 0; i < length; i++) {\n                prefix = $parent ? `${$parent}.${$prevKeyPrefix[i]}` : $prevKeyPrefix[i];\n                primaryKeyAttributes = includeMap[prefix].model.primaryKeyAttributes;\n                $length = primaryKeyAttributes.length;\n                itemHash = prefix;\n                if ($length === 1) {\n                  itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[0]}`]);\n                }\n                else if ($length > 1) {\n                  for ($i = 0; $i < $length; $i++) {\n                    itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[$i]}`]);\n                  }\n                }\n                else if (!_.isEmpty(includeMap[prefix].model.uniqueKeys)) {\n                  uniqueKeyAttributes = getUniqueKeyAttributes(includeMap[prefix].model);\n                  for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {\n                    itemHash += row[`${prefix}.${uniqueKeyAttributes[$i]}`];\n                  }\n                }\n                if (!parentHash) {\n                  parentHash = topHash;\n                }\n\n                itemHash = parentHash + itemHash;\n                $parent = prefix;\n                if (i < length - 1) {\n                  parentHash = itemHash;\n                }\n              }\n            } else {\n              itemHash = topHash;\n            }\n\n            if (itemHash === topHash) {\n              if (!resultMap[itemHash]) {\n                resultMap[itemHash] = values;\n              } else {\n                topExists = true;\n              }\n            } else if (!resultMap[itemHash]) {\n              $parent = resultMap[parentHash];\n              $lastKeyPrefix = lastKeyPrefix(prevKey);\n\n              if (includeMap[prevKey].association.isSingleAssociation) {\n                if ($parent) {\n                  $parent[$lastKeyPrefix] = resultMap[itemHash] = values;\n                }\n              } else {\n                if (!$parent[$lastKeyPrefix]) {\n                  $parent[$lastKeyPrefix] = [];\n                }\n                $parent[$lastKeyPrefix].push(resultMap[itemHash] = values);\n              }\n            }\n\n            // Reset values\n            values = {};\n          } else {\n            // If checkExisting is false it's because there's only 1:1 associations in this query\n            // However we still need to map onto the appropriate parent\n            // For 1:1 we map forward, initializing the value object on the parent to be filled in the next iterations of the loop\n            $current = topValues;\n            length = $keyPrefix.length;\n            if (length) {\n              for (i = 0; i < length; i++) {\n                if (i === length - 1) {\n                  values = $current[$keyPrefix[i]] = {};\n                }\n                $current = $current[$keyPrefix[i]] || {};\n              }\n            }\n          }\n        }\n\n        // End of iteration, set value and set prev values (for next iteration)\n        values[removeKeyPrefix(key)] = row[key];\n        prevKey = key;\n        $prevKeyPrefix = $keyPrefix;\n        $prevKeyPrefixString = $keyPrefixString;\n      }\n\n      if (checkExisting) {\n        length = $prevKeyPrefix.length;\n        $parent = null;\n        parentHash = null;\n\n        if (length) {\n          for (i = 0; i < length; i++) {\n            prefix = $parent ? `${$parent}.${$prevKeyPrefix[i]}` : $prevKeyPrefix[i];\n            primaryKeyAttributes = includeMap[prefix].model.primaryKeyAttributes;\n            $length = primaryKeyAttributes.length;\n            itemHash = prefix;\n            if ($length === 1) {\n              itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[0]}`]);\n            }\n            else if ($length > 0) {\n              for ($i = 0; $i < $length; $i++) {\n                itemHash += stringify(row[`${prefix}.${primaryKeyAttributes[$i]}`]);\n              }\n            }\n            else if (!_.isEmpty(includeMap[prefix].model.uniqueKeys)) {\n              uniqueKeyAttributes = getUniqueKeyAttributes(includeMap[prefix].model);\n              for ($i = 0; $i < uniqueKeyAttributes.length; $i++) {\n                itemHash += row[`${prefix}.${uniqueKeyAttributes[$i]}`];\n              }\n            }\n            if (!parentHash) {\n              parentHash = topHash;\n            }\n\n            itemHash = parentHash + itemHash;\n            $parent = prefix;\n            if (i < length - 1) {\n              parentHash = itemHash;\n            }\n          }\n        } else {\n          itemHash = topHash;\n        }\n\n        if (itemHash === topHash) {\n          if (!resultMap[itemHash]) {\n            resultMap[itemHash] = values;\n          } else {\n            topExists = true;\n          }\n        } else if (!resultMap[itemHash]) {\n          $parent = resultMap[parentHash];\n          $lastKeyPrefix = lastKeyPrefix(prevKey);\n\n          if (includeMap[prevKey].association.isSingleAssociation) {\n            if ($parent) {\n              $parent[$lastKeyPrefix] = resultMap[itemHash] = values;\n            }\n          } else {\n            if (!$parent[$lastKeyPrefix]) {\n              $parent[$lastKeyPrefix] = [];\n            }\n            $parent[$lastKeyPrefix].push(resultMap[itemHash] = values);\n          }\n        }\n        if (!topExists) {\n          results.push(topValues);\n        }\n      } else {\n        results[rowsI] = topValues;\n      }\n    }\n\n    return results;\n  }\n}\n\nmodule.exports = AbstractQuery;\nmodule.exports.AbstractQuery = AbstractQuery;\nmodule.exports.default = AbstractQuery;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,YAAY,QAAQ;AAC1B,MAAM,aAAa,QAAQ;AAC3B,MAAM,MAAM,QAAQ;AACpB,MAAM,eAAe,QAAQ;AAC7B,MAAM,OAAO,QAAQ,QAAQ;AAC7B,MAAM,EAAE,sBAAsB,QAAQ;AAEtC,oBAAoB;AAAA,EAElB,YAAY,YAAY,WAAW,SAAS;AAC1C,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,WAAW,QAAQ;AACxB,SAAK,QAAQ,QAAQ;AACrB,SAAK,YAAY;AACjB,SAAK,UAAU;AAAA,MACb,OAAO;AAAA,MACP,KAAK;AAAA,MAEL,SAAS,QAAQ;AAAA,OACd;AAEL,SAAK;AAEL,QAAI,QAAQ,WAAW;AAKrB,WAAK,cAAc,cAAc,UAAU;AAAA;AAAA;AAAA,SAwBxC,qBAAqB,KAAK,QAAQ,SAAS,iBAAiB,SAAS;AAC1E,QAAI,CAAC,QAAQ;AACX,aAAO,CAAC,KAAK;AAAA;AAGf,cAAU,WAAW;AACrB,QAAI,OAAO,oBAAoB,YAAY;AACzC,gBAAU,mBAAmB;AAC7B,wBAAkB;AAAA;AAGpB,QAAI,CAAC,iBAAiB;AACpB,UAAI,QAAQ,kBAAkB;AAC5B,0BAAkB,CAAC,OAAO,KAAK,YAAW;AACxC,cAAI,QAAO,SAAS,QAAW;AAC7B,mBAAO;AAAA;AAET,iBAAO;AAAA;AAAA,aAEJ;AACL,0BAAkB,CAAC,OAAO,KAAK,SAAQ,WAAU,aAAY;AAC3D,cAAI,QAAO,SAAS,QAAW;AAC7B,mBAAO,UAAU,OAAO,QAAO,MAAM,WAAU;AAAA;AAEjD,iBAAO;AAAA;AAAA;AAAA,eAGF,QAAQ,kBAAkB;AACnC,YAAM,sBAAsB;AAC5B,wBAAkB,CAAC,OAAO,KAAK,SAAQ,WAAU,UAAS,aAAY;AACpE,YAAI,oBAAoB,OAAO,KAAK,SAAQ,WAAU,UAAS,cAAa,QAAW;AACrF,iBAAO;AAAA;AAET,eAAO;AAAA;AAAA;AAIX,UAAM,WAAW;AACjB,UAAM,OAAO,MAAM,QAAQ;AAC3B,UAAM,IAAI,QAAQ,iBAAiB,CAAC,OAAO,QAAQ;AACjD,UAAI,AAAQ,QAAR,KAAa;AACf,eAAO,QAAQ,eAAe,QAAQ;AAAA;AAGxC,UAAI;AACJ,UAAI,MAAM;AACR,YAAI,IAAI,MAAM,eAAe;AAC3B,gBAAM,MAAM;AACZ,oBAAU,gBAAgB,OAAO,KAAK,QAAQ,UAAU,SAAS;AAAA;AAAA,iBAE1D,CAAC,IAAI,MAAM,UAAU;AAC9B,kBAAU,gBAAgB,OAAO,KAAK,QAAQ,UAAU,SAAS;AAAA;AAEnE,UAAI,YAAY,QAAW;AACzB,cAAM,IAAI,MAAM,yBAAyB;AAAA;AAE3C,aAAO;AAAA;AAET,WAAO,CAAC,KAAK;AAAA;AAAA,EAUf,YAAY,OAAO,UAAU;AAG3B,UAAM,QAAQ;AAEd,WAAO;AAAA;AAAA,EAYT,MAAM;AACJ,UAAM,IAAI,MAAM;AAAA;AAAA,EAQlB,qBAAqB;AACnB,QAAI,KAAK,QAAQ,YAAY,MAAM;AACjC,mBAAa;AAEb,WAAK,QAAQ,UAAU,QAAQ;AAAA;AAAA;AAAA,EAUnC,mBAAmB;AACjB,WAAO;AAAA;AAAA,EAGT,gCAAgC,OAAO;AACrC,QAAI,UAAU,QAAQ,GAAG,yBAAyB;AAElD,QAAI,SAAS,KAAK,OAAO;AACvB,iBAAW,OAAO,OAAO,KAAK,KAAK,MAAM,aAAa;AACpD,YAAI,KAAK,MAAM,WAAW,KAAK,OAAO,SAAS,MAAM,QAAQ,MAAM,MAAM;AACvE,cAAI,KAAK,MAAM,WAAW,KAAK,KAAK;AAClC,sBAAU,KAAK,MAAM,WAAW,KAAK;AAAA;AAAA;AAAA;AAAA;AAK7C,WAAO;AAAA;AAAA,EAGT,aAAa;AACX,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,iBAAiB;AACf,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,gBAAgB;AACd,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,cAAc,SAAS,UAAU;AAC/B,QAAI,SAAS;AAEb,QAAI,KAAK,QAAQ,SAAS,WAAW,QAAQ;AAC3C,aAAO;AAAA;AAIT,aAAS,UAAU,KAAK,IAAI,cAAc,WAAW;AAGrD,aAAS,UAAW,EAAC,WAAW,OAAO,UAAU,eAAe,KAAK,SAAS,KAAK;AAGnF,aAAS,UAAW,EAAC,YAAY,OAAO,UAAU,eAAe,KAAK,UAAU,KAAK;AAErF,WAAO;AAAA;AAAA,EAGT,kBAAkB,SAAS,UAAU;AACnC,QAAI,KAAK,UAAU;AAEjB,YAAM,yBAAyB,KAAK,MAAM;AAC1C,UAAI,KAAK;AAET,WAAK,MAAM,WAAW,QAAQ,KAAK;AACnC,WAAK,MAAM,YAAY,SAAS,KAAK;AAErC,WAAK,SAAS,0BAA0B;AAAA;AAAA;AAAA,EAI5C,oBAAoB;AAClB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,sBAAsB,SAAS;AAC7B,WAAO,EAAE,QAAQ,QAAQ,IAAI,eAAa,OAAO,OAAO;AAAA;AAAA,EAG1D,qBAAqB;AACnB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,yBAAyB;AACvB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,kBAAkB;AAChB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,gBAAgB;AACd,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,oBAAoB;AAClB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,oBAAoB;AAClB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,qBAAqB;AACnB,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,gBAAgB;AACd,WAAO,KAAK,QAAQ,SAAS,WAAW;AAAA;AAAA,EAG1C,kBAAkB,SAAS;AACzB,QAAI,SAAS;AAGb,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,WAAW,KAAK,QAAQ;AAC9B,gBAAU,QAAQ,IAAI,aAAU,EAAE,OAAO,UAAU,CAAC,SAAQ,MAAM,UAAU;AAC1E,YAAI,QAAO,WAAW,UAAa,SAAS,OAAO;AACjD,kBAAO,QAAQ,QAAO;AACtB,iBAAO,QAAO;AAAA;AAEhB,eAAO;AAAA,SACN;AAAA;AAIL,QAAI,KAAK,QAAQ,KAAK;AACpB,eAAS,QAAQ,IAAI,aAAU;AAC7B,YAAI,IAAI;AAER,mBAAW,OAAO,SAAQ;AACxB,cAAI,OAAO,UAAU,eAAe,KAAK,SAAQ,MAAM;AACrD,cAAE,OAAO,QAAO;AAAA;AAAA;AAIpB,YAAI,KAAK,QAAQ,MAAM;AACrB,cAAI,IAAI,UAAU;AAAA;AAGpB,eAAO;AAAA;AAAA,eAGA,KAAK,QAAQ,YAAY,MAAM;AACxC,gBAAU,cAAc,eAAe,SAAS;AAAA,QAC9C,OAAO,KAAK;AAAA,QACZ,YAAY,KAAK,QAAQ;AAAA,QACzB,cAAc,KAAK,QAAQ;AAAA,SAC1B;AAAA,QACD,eAAe,KAAK,QAAQ;AAAA;AAG9B,eAAS,KAAK,MAAM,UAAU,SAAS;AAAA,QACrC,aAAa;AAAA,QACb,SAAS,KAAK,QAAQ;AAAA,QACtB,cAAc,KAAK,QAAQ;AAAA,QAC3B,YAAY,KAAK,QAAQ;AAAA,QACzB,kBAAkB;AAAA,QAClB,YAAY,KAAK,QAAQ,sBAAsB,KAAK,QAAQ;AAAA,QAC5D,KAAK;AAAA;AAAA,WAGF;AACL,eAAS,KAAK,MAAM,UAAU,SAAS;AAAA,QACrC,aAAa;AAAA,QACb,KAAK;AAAA,QACL,YAAY,KAAK,QAAQ,sBAAsB,KAAK,QAAQ;AAAA;AAAA;AAKhE,QAAI,KAAK,QAAQ,OAAO;AACtB,eAAS,OAAO,WAAW,IAAI,OAAO,OAAO;AAAA;AAE/C,WAAO;AAAA;AAAA,EAGT,wBAAwB;AACtB,QAAI,SAAS;AAEb,aAAS,UAAU,KAAK,IAAI,cAAc,WAAW;AACrD,aAAS,UAAU,KAAK,IAAI,cAAc,WAAW;AAErD,WAAO;AAAA;AAAA,EAGT,cAAc;AACZ,WAAO,KAAK,IAAI,cAAc,WAAW;AAAA;AAAA,EAU3C,UAAU,KAAK,cAAc,YAAY;AACvC,UAAM,EAAE,YAAY,YAAY;AAChC,UAAM,YAAY,KAAK,UAAU,QAAQ,aAAa,QAAQ;AAC9D,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAsB,QAAQ;AAChF,UAAM,YAAY,KAAK;AACvB,QAAI,eAAe;AAEnB,QAAI,sBAAsB,YAAY;AACpC,YAAM,YAAY,IAAI,SAAS,OAAO,KAAK;AAC3C,UAAI;AACJ,UAAI,MAAM,QAAQ,aAAa;AAC7B,mBAAW,WAAW,IAAI,OAAG,kBAAkB,IAAI,KAAK;AAAA,aACnD;AACL,mBAAW,kBAAkB;AAAA;AAE/B,qBAAe,GAAG,aAAa;AAAA;AAEjC,UAAM,MAAM,IAAI,WAAW,QAAQ,eAAe,MAAM;AACxD,UAAM,MAAM,aAAa;AACzB,iBAAa;AACb,QAAI,CAAC,WAAW;AACd,WAAK,UAAU,IAAI,aAAa,OAAO;AAAA;AAEzC,WAAO,MAAM;AACX,YAAM,WAAW,YAAY;AAC7B,mBAAa;AACb,UAAI,WAAW;AACb,aAAK,UAAU,IAAI,UAAU,KAAK,QAAQ,WAAW;AAAA;AAAA;AAAA;AAAA,SA8CpD,eAAe,MAAM,gBAAgB,SAAS;AAcnD,QAAI,CAAC,KAAK,QAAQ;AAChB,aAAO;AAAA;AAIT,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI;AACJ,QAAI;AACJ,UAAM,aAAa,KAAK;AAExB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,gBAAgB,QAAQ;AAE9B,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,UAAM,UAAU,gBAAgB,KAAK,IAAI,MAAM;AAC/C,UAAM,YAAY;AAClB,UAAM,aAAa;AAEnB,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI;AACJ,UAAM,kBAAkB,WAAS;AAC/B,UAAI,OAAO,UAAU,eAAe,KAAK,SAAS,YAAY,QAAQ;AACpE,mBAAW,OAAO,WAAW,SAAS,WAAW;AACjD,YAAI,eAAe;AACjB,0BAAgB,GAAG,iBAAiB;AAAA,eAC/B;AACL,0BAAgB;AAAA;AAElB,mBAAW,iBAAiB;AAAA;AAAA;AAIhC,UAAM,sBAAsB;AAC5B,UAAM,kBAAkB,CAAC,MAAK,SAAS;AACrC,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,OAAM;AACpD,aAAK,QAAO,KAAI,OAAO,GAAG,KAAI,YAAY;AAAA;AAE5C,aAAO,KAAK;AAAA;AAGd,UAAM,sBAAsB;AAC5B,UAAM,kBAAkB,UAAO;AAC7B,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,qBAAqB,OAAM;AACnE,cAAM,QAAQ,KAAI,YAAY;AAC9B,4BAAoB,QAAO,KAAI,OAAO,UAAU,KAAK,IAAI,QAAQ;AAAA;AAEnE,aAAO,oBAAoB;AAAA;AAG7B,UAAM,gBAAgB;AACtB,UAAM,YAAY,UAAO;AAEvB,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,eAAe,OAAM;AAC7D,cAAM,eAAe,gBAAgB,MAAK;AAC1C,YAAI,CAAC,OAAO,UAAU,eAAe,KAAK,eAAe,eAAe;AACtE,wBAAc,gBAAgB,eAAe,aAAa,MAAM,OAAO;AAAA;AAEzE,sBAAc,QAAO,cAAc;AAAA;AAErC,aAAO,cAAc;AAAA;AAGvB,UAAM,oBAAoB;AAC1B,UAAM,gBAAgB,UAAO;AAC3B,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,mBAAmB,OAAM;AACjE,cAAM,UAAS,UAAU;AACzB,cAAM,UAAS,QAAO;AAEtB,0BAAkB,QAAO,CAAC,UAAS,KAAK,QAAO,UAAS;AAAA;AAE1D,aAAO,kBAAkB;AAAA;AAE3B,UAAM,yBAAyB,WAAS;AACtC,UAAI,uBAAsB,EAAE,MAAM,MAAM;AACxC,6BAAsB,qBACnB,OAAO,GAAG,qBAAoB,oBAC9B,IAAI,WAAS,EAAE,QAAQ,MAAM,YAAY,SAAO,IAAI,UAAU,QAC9D;AAEH,aAAO;AAAA;AAET,UAAM,YAAY,SAAO,eAAe,SAAS,IAAI,SAAS,SAAS;AACvE,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,SAAK,QAAQ,GAAG,QAAQ,YAAY,SAAS;AAC3C,YAAM,KAAK;AAGX,UAAI,UAAU,GAAG;AACf,eAAO,EAAE,OAAO,OAAO,KAAK,MAAM,UAAQ,CAAC,KAAK,MAAM,KAAK;AAC3D,oBAAY,KAAK;AAAA;AAGnB,UAAI,eAAe;AACjB,oBAAY;AAGZ,kBAAU,eAAe,MAAM,qBAAqB;AACpD,kBAAU;AACV,YAAI,YAAY,GAAG;AACjB,oBAAU,UAAU,IAAI,eAAe,MAAM,qBAAqB;AAAA,mBAE3D,UAAU,GAAG;AACpB,eAAK,KAAK,GAAG,KAAK,SAAS,MAAM;AAC/B,uBAAW,UAAU,IAAI,eAAe,MAAM,qBAAqB;AAAA;AAAA,mBAG9D,CAAC,EAAE,QAAQ,eAAe,MAAM,aAAa;AACpD,gCAAsB,uBAAuB,eAAe;AAC5D,eAAK,KAAK,GAAG,KAAK,oBAAoB,QAAQ,MAAM;AAClD,uBAAW,IAAI,oBAAoB;AAAA;AAAA;AAAA;AAKzC,kBAAY,SAAS;AACrB,uBAAiB;AACjB,WAAK,OAAO,GAAG,OAAO,WAAW,QAAQ;AACvC,cAAM,KAAK;AAKX,2BAAmB,gBAAgB,KAAK;AACxC,qBAAa,UAAU;AAGvB,YAAI,UAAU,KAAK,CAAC,OAAO,UAAU,eAAe,KAAK,YAAY,MAAM;AACzE,cAAI,CAAC,WAAW,QAAQ;AACtB,uBAAW,OAAO,WAAW,MAAM;AAAA,iBAC9B;AACL,uBAAW;AACX,4BAAgB;AAChB,uBAAW,QAAQ;AAAA;AAAA;AAIvB,YAAI,mBAAmB,UAAa,mBAAmB,YAAY;AACjE,cAAI,eAAe;AAGjB,qBAAS,eAAe;AACxB,sBAAU;AACV,yBAAa;AAEb,gBAAI,QAAQ;AACV,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,yBAAS,UAAU,GAAG,WAAW,eAAe,OAAO,eAAe;AACtE,uCAAuB,WAAW,QAAQ,MAAM;AAChD,0BAAU,qBAAqB;AAC/B,2BAAW;AACX,oBAAI,YAAY,GAAG;AACjB,8BAAY,UAAU,IAAI,GAAG,UAAU,qBAAqB;AAAA,2BAErD,UAAU,GAAG;AACpB,uBAAK,KAAK,GAAG,KAAK,SAAS,MAAM;AAC/B,gCAAY,UAAU,IAAI,GAAG,UAAU,qBAAqB;AAAA;AAAA,2BAGvD,CAAC,EAAE,QAAQ,WAAW,QAAQ,MAAM,aAAa;AACxD,wCAAsB,uBAAuB,WAAW,QAAQ;AAChE,uBAAK,KAAK,GAAG,KAAK,oBAAoB,QAAQ,MAAM;AAClD,gCAAY,IAAI,GAAG,UAAU,oBAAoB;AAAA;AAAA;AAGrD,oBAAI,CAAC,YAAY;AACf,+BAAa;AAAA;AAGf,2BAAW,aAAa;AACxB,0BAAU;AACV,oBAAI,IAAI,SAAS,GAAG;AAClB,+BAAa;AAAA;AAAA;AAAA,mBAGZ;AACL,yBAAW;AAAA;AAGb,gBAAI,aAAa,SAAS;AACxB,kBAAI,CAAC,UAAU,WAAW;AACxB,0BAAU,YAAY;AAAA,qBACjB;AACL,4BAAY;AAAA;AAAA,uBAEL,CAAC,UAAU,WAAW;AAC/B,wBAAU,UAAU;AACpB,+BAAiB,cAAc;AAE/B,kBAAI,WAAW,SAAS,YAAY,qBAAqB;AACvD,oBAAI,SAAS;AACX,0BAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA,qBAE7C;AACL,oBAAI,CAAC,QAAQ,iBAAiB;AAC5B,0BAAQ,kBAAkB;AAAA;AAE5B,wBAAQ,gBAAgB,KAAK,UAAU,YAAY;AAAA;AAAA;AAKvD,qBAAS;AAAA,iBACJ;AAIL,uBAAW;AACX,qBAAS,WAAW;AACpB,gBAAI,QAAQ;AACV,mBAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,oBAAI,MAAM,SAAS,GAAG;AACpB,2BAAS,SAAS,WAAW,MAAM;AAAA;AAErC,2BAAW,SAAS,WAAW,OAAO;AAAA;AAAA;AAAA;AAAA;AAO9C,eAAO,gBAAgB,QAAQ,IAAI;AACnC,kBAAU;AACV,yBAAiB;AACjB,+BAAuB;AAAA;AAGzB,UAAI,eAAe;AACjB,iBAAS,eAAe;AACxB,kBAAU;AACV,qBAAa;AAEb,YAAI,QAAQ;AACV,eAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,qBAAS,UAAU,GAAG,WAAW,eAAe,OAAO,eAAe;AACtE,mCAAuB,WAAW,QAAQ,MAAM;AAChD,sBAAU,qBAAqB;AAC/B,uBAAW;AACX,gBAAI,YAAY,GAAG;AACjB,0BAAY,UAAU,IAAI,GAAG,UAAU,qBAAqB;AAAA,uBAErD,UAAU,GAAG;AACpB,mBAAK,KAAK,GAAG,KAAK,SAAS,MAAM;AAC/B,4BAAY,UAAU,IAAI,GAAG,UAAU,qBAAqB;AAAA;AAAA,uBAGvD,CAAC,EAAE,QAAQ,WAAW,QAAQ,MAAM,aAAa;AACxD,oCAAsB,uBAAuB,WAAW,QAAQ;AAChE,mBAAK,KAAK,GAAG,KAAK,oBAAoB,QAAQ,MAAM;AAClD,4BAAY,IAAI,GAAG,UAAU,oBAAoB;AAAA;AAAA;AAGrD,gBAAI,CAAC,YAAY;AACf,2BAAa;AAAA;AAGf,uBAAW,aAAa;AACxB,sBAAU;AACV,gBAAI,IAAI,SAAS,GAAG;AAClB,2BAAa;AAAA;AAAA;AAAA,eAGZ;AACL,qBAAW;AAAA;AAGb,YAAI,aAAa,SAAS;AACxB,cAAI,CAAC,UAAU,WAAW;AACxB,sBAAU,YAAY;AAAA,iBACjB;AACL,wBAAY;AAAA;AAAA,mBAEL,CAAC,UAAU,WAAW;AAC/B,oBAAU,UAAU;AACpB,2BAAiB,cAAc;AAE/B,cAAI,WAAW,SAAS,YAAY,qBAAqB;AACvD,gBAAI,SAAS;AACX,sBAAQ,kBAAkB,UAAU,YAAY;AAAA;AAAA,iBAE7C;AACL,gBAAI,CAAC,QAAQ,iBAAiB;AAC5B,sBAAQ,kBAAkB;AAAA;AAE5B,oBAAQ,gBAAgB,KAAK,UAAU,YAAY;AAAA;AAAA;AAGvD,YAAI,CAAC,WAAW;AACd,kBAAQ,KAAK;AAAA;AAAA,aAEV;AACL,gBAAQ,SAAS;AAAA;AAAA;AAIrB,WAAO;AAAA;AAAA;AAIX,OAAO,UAAU;AACjB,OAAO,QAAQ,gBAAgB;AAC/B,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-"use strict";
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const sequelizeErrors = require("../../errors");
-const { logger } = require("../../utils/logger");
-const DataTypes = require("../../data-types").db2;
-const debug = logger.debugContext("connection:db2");
-const parserStore = require("../parserStore")("db2");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 3306;
-    super(dialect, sequelize);
-    this.lib = this._loadDialectModule("ibm_db");
-    this.refreshTypeParser(DataTypes);
-  }
-  static _typecast(field, next) {
-    if (parserStore.get(field.type)) {
-      return parserStore.get(field.type)(field, this.sequelize.options, next);
-    }
-    return next();
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  async connect(config) {
-    const connectionConfig = {
-      database: config.database,
-      hostname: config.host,
-      port: config.port,
-      uid: config.username,
-      pwd: config.password
-    };
-    if (config.ssl) {
-      connectionConfig["security"] = config.ssl;
-    }
-    if (config.sslcertificate) {
-      connectionConfig["SSLServerCertificate"] = config.sslcertificate;
-    }
-    if (config.dialectOptions) {
-      for (const key of Object.keys(config.dialectOptions)) {
-        connectionConfig[key] = config.dialectOptions[key];
-      }
-    }
-    try {
-      const connection = await new Promise((resolve, reject) => {
-        const connection2 = new this.lib.Database();
-        connection2.lib = this.lib;
-        connection2.open(connectionConfig, (error) => {
-          if (error) {
-            if (error.message && error.message.includes("SQL30081N")) {
-              return reject(new sequelizeErrors.ConnectionRefusedError(error));
-            }
-            return reject(new sequelizeErrors.ConnectionError(error));
-          }
-          return resolve(connection2);
-        });
-      });
-      return connection;
-    } catch (err) {
-      throw new sequelizeErrors.ConnectionError(err);
-    }
-  }
-  disconnect(connection) {
-    if (connection.connected) {
-      connection.close((error) => {
-        if (error) {
-          debug(error);
-        } else {
-          debug("connection closed");
-        }
-      });
-    }
-    return Promise.resolve();
-  }
-  validate(connection) {
-    return connection && connection.connected;
-  }
-  _disconnect(connection) {
-    return this.dialect.connectionManager.disconnect(connection);
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst sequelizeErrors = require('../../errors');\nconst { logger } = require('../../utils/logger');\nconst DataTypes = require('../../data-types').db2;\nconst debug = logger.debugContext('connection:db2');\nconst parserStore = require('../parserStore')('db2');\n\n/**\n * DB2 Connection Manager\n *\n * Get connections, validate and disconnect them.\n * AbstractConnectionManager pooling use it to handle DB2 specific connections\n * Use https://github.com/ibmdb/node-ibm_db to connect with DB2 server\n *\n * @private\n */\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 3306;\n    super(dialect, sequelize);\n    this.lib = this._loadDialectModule('ibm_db');\n    this.refreshTypeParser(DataTypes);\n  }\n\n  static _typecast(field, next) {\n    if (parserStore.get(field.type)) {\n      return parserStore.get(field.type)(field, this.sequelize.options, next);\n    }\n    return next();\n  }\n\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  /**\n   * Connect with DB2 database based on config, Handle any errors in connection\n   * Set the pool handlers on connection.error\n   * Also set proper timezone once connection is connected.\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  async connect(config) {\n    const connectionConfig = {\n      database: config.database,\n      hostname: config.host,\n      port: config.port,\n      uid: config.username,\n      pwd: config.password\n    };\n\n    if (config.ssl) {\n      connectionConfig['security'] = config.ssl;\n    }\n    if (config.sslcertificate) {\n      connectionConfig['SSLServerCertificate'] = config.sslcertificate;\n    }\n    if (config.dialectOptions) {\n      for (const key of Object.keys(config.dialectOptions)) {\n        connectionConfig[key] = config.dialectOptions[key];\n      }\n    }\n\n    try {\n      const connection = await new Promise((resolve, reject) => {\n        const connection = new this.lib.Database();\n        connection.lib = this.lib;\n        connection.open(connectionConfig, error => {\n          if (error) {\n            if (error.message && error.message.includes('SQL30081N')) {\n              return reject(new sequelizeErrors.ConnectionRefusedError(error));\n            }\n            return reject(new sequelizeErrors.ConnectionError(error));\n          }\n          return resolve(connection);\n        });\n      });\n      return connection;\n    } catch (err) {\n      throw new sequelizeErrors.ConnectionError(err);\n    }\n  }\n\n  disconnect(connection) {\n    // Don't disconnect a connection that is already disconnected\n    if (connection.connected) {\n      connection.close(error => {\n        if (error) { debug(error); }\n        else { debug('connection closed'); }\n      });\n    }\n    return Promise.resolve();\n  }\n\n  validate(connection) {\n    return connection && connection.connected;\n  }\n\n  /**\n   * Call dialect library to disconnect a connection\n   *\n   * @param {Connection} connection\n   * @private\n   * @returns {Promise}\n   */\n  _disconnect(connection) {\n    return this.dialect.connectionManager.disconnect(connection);\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";AAEA,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,cAAc,QAAQ,kBAAkB;AAW9C,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,cAAU,OAAO,OAAO,UAAU,OAAO,QAAQ;AACjD,UAAM,SAAS;AACf,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,SAGlB,UAAU,OAAO,MAAM;AAC5B,QAAI,YAAY,IAAI,MAAM,OAAO;AAC/B,aAAO,YAAY,IAAI,MAAM,MAAM,OAAO,KAAK,UAAU,SAAS;AAAA;AAEpE,WAAO;AAAA;AAAA,EAGT,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,QAYR,QAAQ,QAAQ;AACpB,UAAM,mBAAmB;AAAA,MACvB,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,MAAM,OAAO;AAAA,MACb,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA;AAGd,QAAI,OAAO,KAAK;AACd,uBAAiB,cAAc,OAAO;AAAA;AAExC,QAAI,OAAO,gBAAgB;AACzB,uBAAiB,0BAA0B,OAAO;AAAA;AAEpD,QAAI,OAAO,gBAAgB;AACzB,iBAAW,OAAO,OAAO,KAAK,OAAO,iBAAiB;AACpD,yBAAiB,OAAO,OAAO,eAAe;AAAA;AAAA;AAIlD,QAAI;AACF,YAAM,aAAa,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxD,cAAM,cAAa,IAAI,KAAK,IAAI;AAChC,oBAAW,MAAM,KAAK;AACtB,oBAAW,KAAK,kBAAkB,WAAS;AACzC,cAAI,OAAO;AACT,gBAAI,MAAM,WAAW,MAAM,QAAQ,SAAS,cAAc;AACxD,qBAAO,OAAO,IAAI,gBAAgB,uBAAuB;AAAA;AAE3D,mBAAO,OAAO,IAAI,gBAAgB,gBAAgB;AAAA;AAEpD,iBAAO,QAAQ;AAAA;AAAA;AAGnB,aAAO;AAAA,aACA,KAAP;AACA,YAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAAA;AAAA,EAI9C,WAAW,YAAY;AAErB,QAAI,WAAW,WAAW;AACxB,iBAAW,MAAM,WAAS;AACxB,YAAI,OAAO;AAAE,gBAAM;AAAA,eACd;AAAE,gBAAM;AAAA;AAAA;AAAA;AAGjB,WAAO,QAAQ;AAAA;AAAA,EAGjB,SAAS,YAAY;AACnB,WAAO,cAAc,WAAW;AAAA;AAAA,EAUlC,YAAY,YAAY;AACtB,WAAO,KAAK,QAAQ,kBAAkB,WAAW;AAAA;AAAA;AAIrD,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,294 +1,0 @@
-"use strict";
-const momentTz = require("moment-timezone");
-const moment = require("moment");
-module.exports = (BaseTypes) => {
-  const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.sql.ref.doc/doc/r0008478.html");
-  function removeUnsupportedIntegerOptions(dataType) {
-    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {
-      warn(`Db2 does not support '${dataType.key}' with options. Plain '${dataType.key}' will be used instead.`);
-      dataType._length = void 0;
-      dataType.options.length = void 0;
-      dataType._unsigned = void 0;
-      dataType._zerofill = void 0;
-    }
-  }
-  BaseTypes.DATE.types.db2 = ["TIMESTAMP"];
-  BaseTypes.STRING.types.db2 = ["VARCHAR"];
-  BaseTypes.CHAR.types.db2 = ["CHAR"];
-  BaseTypes.TEXT.types.db2 = ["VARCHAR", "CLOB"];
-  BaseTypes.TINYINT.types.db2 = ["SMALLINT"];
-  BaseTypes.SMALLINT.types.db2 = ["SMALLINT"];
-  BaseTypes.MEDIUMINT.types.db2 = ["INTEGER"];
-  BaseTypes.INTEGER.types.db2 = ["INTEGER"];
-  BaseTypes.BIGINT.types.db2 = ["BIGINT"];
-  BaseTypes.FLOAT.types.db2 = ["DOUBLE", "REAL", "FLOAT"];
-  BaseTypes.TIME.types.db2 = ["TIME"];
-  BaseTypes.DATEONLY.types.db2 = ["DATE"];
-  BaseTypes.BOOLEAN.types.db2 = ["BOOLEAN", "BOOL", "SMALLINT", "BIT"];
-  BaseTypes.BLOB.types.db2 = ["BLOB"];
-  BaseTypes.DECIMAL.types.db2 = ["DECIMAL"];
-  BaseTypes.UUID.types.db2 = ["CHAR () FOR BIT DATA"];
-  BaseTypes.ENUM.types.db2 = ["VARCHAR"];
-  BaseTypes.REAL.types.db2 = ["REAL"];
-  BaseTypes.DOUBLE.types.db2 = ["DOUBLE"];
-  BaseTypes.GEOMETRY.types.db2 = false;
-  class BLOB extends BaseTypes.BLOB {
-    toSql() {
-      if (this._length) {
-        if (this._length.toLowerCase() === "tiny") {
-          return "BLOB(255)";
-        }
-        if (this._length.toLowerCase() === "medium") {
-          return "BLOB(16M)";
-        }
-        if (this._length.toLowerCase() === "long") {
-          return "BLOB(2G)";
-        }
-        return `BLOB(${this._length})`;
-      }
-      return "BLOB";
-    }
-    escape(blob) {
-      return `BLOB('${blob.toString().replace(/'/g, "''")}')`;
-    }
-    _stringify(value) {
-      if (Buffer.isBuffer(value)) {
-        return `BLOB('${value.toString().replace(/'/g, "''")}')`;
-      }
-      if (Array.isArray(value)) {
-        value = Buffer.from(value);
-      } else {
-        value = Buffer.from(value.toString());
-      }
-      const hex = value.toString("hex");
-      return this._hexify(hex);
-    }
-    _hexify(hex) {
-      return `x'${hex}'`;
-    }
-  }
-  class STRING extends BaseTypes.STRING {
-    toSql() {
-      if (!this._binary) {
-        if (this._length <= 4e3) {
-          return `VARCHAR(${this._length})`;
-        }
-        return `CLOB(${this._length})`;
-      }
-      if (this._length < 255) {
-        return `CHAR(${this._length}) FOR BIT DATA`;
-      }
-      if (this._length <= 4e3) {
-        return `VARCHAR(${this._length}) FOR BIT DATA`;
-      }
-      return `BLOB(${this._length})`;
-    }
-    _stringify(value, options) {
-      if (this._binary) {
-        return BLOB.prototype._hexify(value.toString("hex"));
-      }
-      return options.escape(value);
-    }
-    _bindParam(value, options) {
-      return options.bindParam(this._binary ? Buffer.from(value) : value);
-    }
-  }
-  STRING.prototype.escape = false;
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      let len = 0;
-      if (this._length) {
-        switch (this._length.toLowerCase()) {
-          case "tiny":
-            len = 256;
-            break;
-          case "medium":
-            len = 8192;
-            break;
-          case "long":
-            len = 65536;
-            break;
-        }
-        if (isNaN(this._length)) {
-          this._length = 32672;
-        }
-        if (len > 0) {
-          this._length = len;
-        }
-      } else {
-        this._length = 32672;
-      }
-      if (this._length > 32672) {
-        len = `CLOB(${this._length})`;
-      } else {
-        len = `VARCHAR(${this._length})`;
-      }
-      warn(`Db2 does not support TEXT datatype. ${len} will be used instead.`);
-      return len;
-    }
-  }
-  class BOOLEAN extends BaseTypes.BOOLEAN {
-    toSql() {
-      return "BOOLEAN";
-    }
-    _sanitize(value) {
-      if (value !== null && value !== void 0) {
-        if (Buffer.isBuffer(value) && value.length === 1) {
-          value = value[0];
-        }
-        if (typeof value === "string") {
-          value = value === "true" ? true : value === "false" ? false : value;
-          value = value === "" ? true : value === "\0" ? false : value;
-        } else if (typeof value === "number") {
-          value = value === 1 ? true : value === 0 ? false : value;
-        }
-      }
-      return value;
-    }
-  }
-  BOOLEAN.parse = BOOLEAN.prototype._sanitize;
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "CHAR(36) FOR BIT DATA";
-    }
-  }
-  class NOW extends BaseTypes.NOW {
-    toSql() {
-      return "CURRENT TIME";
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      if (this._length < 0) {
-        this._length = 0;
-      }
-      if (this._length > 6) {
-        this._length = 6;
-      }
-      return `TIMESTAMP${this._length ? `(${this._length})` : ""}`;
-    }
-    _stringify(date, options) {
-      if (!moment.isMoment(date)) {
-        date = this._applyTimezone(date, options);
-      }
-      if (this._length > 0) {
-        let msec = ".";
-        for (let i = 0; i < this._length && i < 6; i++) {
-          msec += "S";
-        }
-        return date.format(`YYYY-MM-DD HH:mm:ss${msec}`);
-      }
-      return date.format("YYYY-MM-DD HH:mm:ss");
-    }
-    static parse(value) {
-      if (typeof value !== "string") {
-        value = value.string();
-      }
-      if (value === null) {
-        return value;
-      }
-      value = new Date(momentTz.utc(value));
-      return value;
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(value) {
-      return momentTz(value).format("YYYY-MM-DD");
-    }
-  }
-  class INTEGER extends BaseTypes.INTEGER {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class TINYINT extends BaseTypes.TINYINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class SMALLINT extends BaseTypes.SMALLINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class BIGINT extends BaseTypes.BIGINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class REAL extends BaseTypes.REAL {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._length || this.options.length || this._unsigned || this._zerofill) {
-        warn("Db2 does not support REAL with options. Plain `REAL` will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._unsigned = void 0;
-        this._zerofill = void 0;
-      }
-    }
-  }
-  class FLOAT extends BaseTypes.FLOAT {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._decimals) {
-        warn("Db2 does not support Float with decimals. Plain `FLOAT` will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-      }
-      if (this._unsigned) {
-        warn("Db2 does not support Float unsigned. `UNSIGNED` was removed.");
-        this._unsigned = void 0;
-      }
-      if (this._zerofill) {
-        warn("Db2 does not support Float zerofill. `ZEROFILL` was removed.");
-        this._zerofill = void 0;
-      }
-    }
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql() {
-      return "VARCHAR(255)";
-    }
-  }
-  class DOUBLE extends BaseTypes.DOUBLE {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._length || this.options.length || this._unsigned || this._zerofill) {
-        warn("db2 does not support DOUBLE with options. Plain DOUBLE will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._unsigned = void 0;
-        this._zerofill = void 0;
-      }
-    }
-    toSql() {
-      return "DOUBLE";
-    }
-  }
-  DOUBLE.prototype.key = DOUBLE.key = "DOUBLE";
-  return {
-    BLOB,
-    BOOLEAN,
-    ENUM,
-    STRING,
-    UUID,
-    DATE,
-    DATEONLY,
-    NOW,
-    TINYINT,
-    SMALLINT,
-    INTEGER,
-    DOUBLE,
-    "DOUBLE PRECISION": DOUBLE,
-    BIGINT,
-    REAL,
-    FLOAT,
-    TEXT
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst momentTz = require('moment-timezone');\nconst moment = require('moment');\n\nmodule.exports = BaseTypes => {\n  const warn = BaseTypes.ABSTRACT.warn.bind(undefined,\n    'https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/' +\n    'com.ibm.db2.luw.sql.ref.doc/doc/r0008478.html');\n\n  /**\n   * Removes unsupported Db2 options, i.e., LENGTH, UNSIGNED and ZEROFILL,\n   * for the integer data types.\n   *\n   * @param {object} dataType The base integer data type.\n   * @private\n   */\n  function removeUnsupportedIntegerOptions(dataType) {\n    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {\n      warn(`Db2 does not support '${dataType.key}' with options. Plain '${dataType.key}' will be used instead.`);\n      dataType._length = undefined;\n      dataType.options.length = undefined;\n      dataType._unsigned = undefined;\n      dataType._zerofill = undefined;\n    }\n  }\n\n  /**\n   * types: [hex, ...]\n   *\n   * @see Data types and table columns: https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0055357.html \n   */\n\n  BaseTypes.DATE.types.db2 = ['TIMESTAMP'];\n  BaseTypes.STRING.types.db2 = ['VARCHAR'];\n  BaseTypes.CHAR.types.db2 = ['CHAR'];\n  BaseTypes.TEXT.types.db2 = ['VARCHAR', 'CLOB'];\n  BaseTypes.TINYINT.types.db2 = ['SMALLINT'];\n  BaseTypes.SMALLINT.types.db2 = ['SMALLINT'];\n  BaseTypes.MEDIUMINT.types.db2 = ['INTEGER'];\n  BaseTypes.INTEGER.types.db2 = ['INTEGER'];\n  BaseTypes.BIGINT.types.db2 = ['BIGINT'];\n  BaseTypes.FLOAT.types.db2 = ['DOUBLE', 'REAL', 'FLOAT'];\n  BaseTypes.TIME.types.db2 = ['TIME'];\n  BaseTypes.DATEONLY.types.db2 = ['DATE'];\n  BaseTypes.BOOLEAN.types.db2 = ['BOOLEAN', 'BOOL', 'SMALLINT', 'BIT'];\n  BaseTypes.BLOB.types.db2 = ['BLOB'];\n  BaseTypes.DECIMAL.types.db2 = ['DECIMAL'];\n  BaseTypes.UUID.types.db2 = ['CHAR () FOR BIT DATA'];\n  BaseTypes.ENUM.types.db2 = ['VARCHAR'];\n  BaseTypes.REAL.types.db2 = ['REAL'];\n  BaseTypes.DOUBLE.types.db2 = ['DOUBLE'];\n  BaseTypes.GEOMETRY.types.db2 = false;\n\n  class BLOB extends BaseTypes.BLOB {\n    toSql() {\n      if (this._length) {\n        if (this._length.toLowerCase() === 'tiny') { // tiny = 255 bytes\n          return 'BLOB(255)';\n        }\n        if (this._length.toLowerCase() === 'medium') { // medium = 16M\n          return 'BLOB(16M)';\n        }\n        if (this._length.toLowerCase() === 'long') { // long = 2GB\n          return 'BLOB(2G)';\n        }\n        return `BLOB(${ this._length })`;\n      }\n      return 'BLOB'; // 1MB\n    }\n    escape(blob) {\n      return `BLOB('${ blob.toString().replace(/'/g, \"''\") }')`;\n    }\n    _stringify(value) {\n      if (Buffer.isBuffer(value)) {\n        return `BLOB('${ value.toString().replace(/'/g, \"''\") }')`;\n      }\n      if (Array.isArray(value)) {\n        value = Buffer.from(value);\n      } else {\n        value = Buffer.from(value.toString());\n      }\n      const hex = value.toString('hex');\n      return this._hexify(hex);\n    }\n    _hexify(hex) {\n      return `x'${ hex }'`;\n    }\n  }\n\n  class STRING extends BaseTypes.STRING {\n    toSql() {\n      if (!this._binary) {\n        if (this._length <= 4000) {\n          return `VARCHAR(${ this._length })`;\n        }\n        return `CLOB(${ this._length })`;\n      }\n      if (this._length < 255) {\n        return `CHAR(${ this._length }) FOR BIT DATA`;\n      }\n      if (this._length <= 4000) {\n        return `VARCHAR(${ this._length }) FOR BIT DATA`;\n      }\n      return `BLOB(${ this._length })`;\n    }\n    _stringify(value, options) {\n      if (this._binary) {\n        return BLOB.prototype._hexify(value.toString('hex'));\n      }\n      return options.escape(value);\n    }\n    _bindParam(value, options) {\n      return options.bindParam(this._binary ? Buffer.from(value) : value);\n    }\n  }\n  STRING.prototype.escape = false;\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      let len = 0;\n      if (this._length) {\n        switch (this._length.toLowerCase()) {\n          case 'tiny':\n            len = 256; // tiny = 2^8\n            break;\n          case 'medium':\n            len = 8192; // medium = 2^13 = 8k\n            break;\n          case 'long':\n            len = 65536; // long = 64k\n            break;\n        }\n        if ( isNaN(this._length) ) {\n          this._length = 32672;\n        }\n        if (len > 0 ) { this._length = len; }\n      } else { this._length = 32672; }\n      if ( this._length > 32672 )\n      {\n        len = `CLOB(${ this._length })`;\n      }\n      else\n      {\n        len = `VARCHAR(${ this._length })`;\n      }\n      warn(`Db2 does not support TEXT datatype. ${len} will be used instead.`);\n      return len;\n    }\n  }\n\n  class BOOLEAN extends BaseTypes.BOOLEAN {\n    toSql() {\n      return 'BOOLEAN';\n    }\n    _sanitize(value) {\n      if (value !== null && value !== undefined) {\n        if (Buffer.isBuffer(value) && value.length === 1) {\n          // Bit fields are returned as buffers\n          value = value[0];\n        }\n\n        if (typeof value === 'string') {\n          // Only take action on valid boolean strings.\n          value = value === 'true' ? true : value === 'false' ? false : value;\n          value = value === '\\u0001' ? true : value === '\\u0000' ? false : value;\n\n        } else if (typeof value === 'number') {\n          // Only take action on valid boolean integers.\n          value = value === 1 ? true : value === 0 ? false : value;\n        }\n      }\n\n      return value;\n    }\n  }\n  BOOLEAN.parse = BOOLEAN.prototype._sanitize;\n\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      return 'CHAR(36) FOR BIT DATA';\n    }\n  }\n\n  class NOW extends BaseTypes.NOW {\n    toSql() {\n      return 'CURRENT TIME';\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      if (this._length < 0) { this._length = 0; }\n      if (this._length > 6) { this._length = 6; }\n      return `TIMESTAMP${ this._length ? `(${ this._length })` : ''}`;\n    }\n    _stringify(date, options) {\n      if (!moment.isMoment(date)) {\n        date = this._applyTimezone(date, options);\n      }\n\n      if (this._length > 0) {\n        let msec = '.';\n        for ( let i = 0; i < this._length && i < 6; i++ ) {\n          msec += 'S';\n        }\n        return date.format(`YYYY-MM-DD HH:mm:ss${msec}`);\n      }\n      return date.format('YYYY-MM-DD HH:mm:ss');\n    }\n    static parse(value) {\n      if (typeof value !== 'string') {\n        value = value.string();\n      }\n      if (value === null) {\n        return value;\n      }\n      value = new Date(momentTz.utc(value));\n      return value;\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(value) {\n      return momentTz(value).format('YYYY-MM-DD');\n    }\n  }\n\n  class INTEGER extends BaseTypes.INTEGER {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class TINYINT extends BaseTypes.TINYINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class SMALLINT extends BaseTypes.SMALLINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class BIGINT extends BaseTypes.BIGINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class REAL extends BaseTypes.REAL {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // Db2 does not support any options for real\n      if (this._length || this.options.length || this._unsigned || this._zerofill) {\n        warn('Db2 does not support REAL with options. Plain `REAL` will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._unsigned = undefined;\n        this._zerofill = undefined;\n      }\n    }\n  }\n\n  class FLOAT extends BaseTypes.FLOAT {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // Db2 does only support lengths as option.\n      // Values between 1-24 result in 7 digits precision (4 bytes storage size)\n      // Values between 25-53 result in 15 digits precision (8 bytes size)\n      // If decimals are provided remove these and print a warning\n      if (this._decimals) {\n        warn('Db2 does not support Float with decimals. Plain `FLOAT` will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n      }\n      if (this._unsigned) {\n        warn('Db2 does not support Float unsigned. `UNSIGNED` was removed.');\n        this._unsigned = undefined;\n      }\n      if (this._zerofill) {\n        warn('Db2 does not support Float zerofill. `ZEROFILL` was removed.');\n        this._zerofill = undefined;\n      }\n    }\n  }\n\n  class ENUM extends BaseTypes.ENUM {\n    toSql() {\n      return 'VARCHAR(255)';\n    }\n  }\n\n  class DOUBLE extends BaseTypes.DOUBLE {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // db2 does not support any parameters for double\n      if (this._length || this.options.length ||\n          this._unsigned || this._zerofill)\n      {\n        warn('db2 does not support DOUBLE with options. ' +\n             'Plain DOUBLE will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._unsigned = undefined;\n        this._zerofill = undefined;\n      }\n    }\n    toSql() {\n      return 'DOUBLE';\n    }\n  }\n  DOUBLE.prototype.key = DOUBLE.key = 'DOUBLE';\n\n  return {\n    BLOB,\n    BOOLEAN,\n    ENUM,\n    STRING,\n    UUID,\n    DATE,\n    DATEONLY,\n    NOW,\n    TINYINT,\n    SMALLINT,\n    INTEGER,\n    DOUBLE,\n    'DOUBLE PRECISION': DOUBLE,\n    BIGINT,\n    REAL,\n    FLOAT,\n    TEXT\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,61 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").db2;
-const { Db2QueryInterface } = require("./query-interface");
-class Db2Dialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new Db2QueryInterface(sequelize, this.queryGenerator);
-  }
-}
-Db2Dialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "DEFAULT": true,
-  "DEFAULT VALUES": false,
-  "VALUES ()": false,
-  "LIMIT ON UPDATE": false,
-  "ORDER NULLS": false,
-  lock: false,
-  transactions: true,
-  migrations: false,
-  returnValues: false,
-  schemas: true,
-  finalTable: true,
-  autoIncrement: {
-    identityInsert: false,
-    defaultValue: false,
-    update: true
-  },
-  constraints: {
-    restrict: true,
-    default: false
-  },
-  index: {
-    collate: false,
-    length: false,
-    parser: false,
-    type: false,
-    using: false,
-    where: true
-  },
-  NUMERIC: true,
-  tmpTableTrigger: true
-});
-Db2Dialect.prototype.defaultVersion = "1.0.0";
-Db2Dialect.prototype.Query = Query;
-Db2Dialect.prototype.name = "db2";
-Db2Dialect.prototype.TICK_CHAR = '"';
-Db2Dialect.prototype.TICK_CHAR_LEFT = '"';
-Db2Dialect.prototype.TICK_CHAR_RIGHT = '"';
-Db2Dialect.prototype.DataTypes = DataTypes;
-module.exports = Db2Dialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').db2;\nconst { Db2QueryInterface } = require('./query-interface');\n\nclass Db2Dialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new Db2QueryInterface(sequelize, this.queryGenerator);\n  }\n}\n\nDb2Dialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {\n  'DEFAULT': true,\n  'DEFAULT VALUES': false,\n  'VALUES ()': false,\n  'LIMIT ON UPDATE': false,\n  'ORDER NULLS': false,\n  lock: false,\n  transactions: true,\n  migrations: false,\n  returnValues: false,\n  schemas: true,\n  finalTable: true,\n  autoIncrement: {\n    identityInsert: false,\n    defaultValue: false,\n    update: true\n  },\n  constraints: {\n    restrict: true,\n    default: false\n  },\n  index: {\n    collate: false,\n    length: false,\n    parser: false,\n    type: false,\n    using: false,\n    where: true\n  },\n  NUMERIC: true,\n  tmpTableTrigger: true\n});\n\nDb2Dialect.prototype.defaultVersion = '1.0.0'; // Db2 supported version comes here\nDb2Dialect.prototype.Query = Query;\nDb2Dialect.prototype.name = 'db2';\nDb2Dialect.prototype.TICK_CHAR = '\"';\nDb2Dialect.prototype.TICK_CHAR_LEFT = '\"';\nDb2Dialect.prototype.TICK_CHAR_RIGHT = '\"';\nDb2Dialect.prototype.DataTypes = DataTypes;\n\nmodule.exports = Db2Dialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,sBAAsB,QAAQ;AAEtC,yBAAyB,gBAAgB;AAAA,EACvC,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,kBAAkB,WAAW,KAAK;AAAA;AAAA;AAIhE,WAAW,UAAU,WAAW,EAAE,MAAM,EAAE,UAAU,gBAAgB,UAAU,WAAW;AAAA,EACvF,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,MAAM;AAAA,EACN,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,eAAe;AAAA,IACb,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,QAAQ;AAAA;AAAA,EAEV,aAAa;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA;AAAA,EAEX,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,EAET,SAAS;AAAA,EACT,iBAAiB;AAAA;AAGnB,WAAW,UAAU,iBAAiB;AACtC,WAAW,UAAU,QAAQ;AAC7B,WAAW,UAAU,OAAO;AAC5B,WAAW,UAAU,YAAY;AACjC,WAAW,UAAU,iBAAiB;AACtC,WAAW,UAAU,kBAAkB;AACvC,WAAW,UAAU,YAAY;AAEjC,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,710 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const _ = require("lodash");
-const Utils = require("../../utils");
-const DataTypes = require("../../data-types");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const randomBytes = require("crypto").randomBytes;
-const Op = require("../../operators");
-const throwMethodUndefined = function(methodName) {
-  throw new Error(`The method "${methodName}" is not defined! Please add it to your sql dialect.`);
-};
-class Db2QueryGenerator extends AbstractQueryGenerator {
-  constructor(options) {
-    super(options);
-    this.OperatorMap = __spreadProps(__spreadValues({}, this.OperatorMap), {
-      [Op.regexp]: "REGEXP_LIKE",
-      [Op.notRegexp]: "NOT REGEXP_LIKE"
-    });
-    this.autoGenValue = 1;
-  }
-  createSchema(schema) {
-    return [
-      "CREATE SCHEMA",
-      this.quoteIdentifier(schema),
-      ";"
-    ].join(" ");
-  }
-  dropSchema(schema) {
-    const query = `CALL SYSPROC.ADMIN_DROP_SCHEMA(${wrapSingleQuote(schema.trim())}, NULL, ? , ?)`;
-    const sql = { query };
-    sql.bind = [
-      { ParamType: "INOUT", Data: "ERRORSCHEMA" },
-      { ParamType: "INOUT", Data: "ERRORTABLE" }
-    ];
-    return sql;
-  }
-  showSchemasQuery() {
-    return `SELECT SCHEMANAME AS "schema_name" FROM SYSCAT.SCHEMATA WHERE (SCHEMANAME NOT LIKE 'SYS%') AND SCHEMANAME NOT IN ('NULLID', 'SQLJ', 'ERRORSCHEMA')`;
-  }
-  versionQuery() {
-    return "select service_level as VERSION from TABLE (sysproc.env_get_inst_info()) as A";
-  }
-  createTableQuery(tableName, attributes, options) {
-    const query = "CREATE TABLE <%= table %> (<%= attributes %>)", primaryKeys = [], foreignKeys = {}, attrStr = [], commentTemplate = " -- <%= comment %>, TableName = <%= table %>, ColumnName = <%= column %>;";
-    let commentStr = "";
-    for (const attr in attributes) {
-      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {
-        let dataType = attributes[attr];
-        let match;
-        if (dataType.includes("COMMENT ")) {
-          const commentMatch = dataType.match(/^(.+) (COMMENT.*)$/);
-          if (commentMatch && commentMatch.length > 2) {
-            const commentText = commentMatch[2].replace(/COMMENT/, "").trim();
-            commentStr += _.template(commentTemplate, this._templateSettings)({
-              table: this.quoteIdentifier(tableName),
-              comment: this.escape(commentText),
-              column: this.quoteIdentifier(attr)
-            });
-            dataType = commentMatch[1];
-          }
-        }
-        if (_.includes(dataType, "PRIMARY KEY")) {
-          primaryKeys.push(attr);
-          if (_.includes(dataType, "REFERENCES")) {
-            match = dataType.match(/^(.+) (REFERENCES.*)$/);
-            attrStr.push(`${this.quoteIdentifier(attr)} ${match[1].replace(/PRIMARY KEY/, "")}`);
-            foreignKeys[attr] = match[2];
-          } else {
-            attrStr.push(`${this.quoteIdentifier(attr)} ${dataType.replace(/PRIMARY KEY/, "")}`);
-          }
-        } else if (_.includes(dataType, "REFERENCES")) {
-          match = dataType.match(/^(.+) (REFERENCES.*)$/);
-          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);
-          foreignKeys[attr] = match[2];
-        } else {
-          if (options && options.uniqueKeys) {
-            for (const ukey in options.uniqueKeys) {
-              if (options.uniqueKeys[ukey].fields.includes(attr) && !_.includes(dataType, "NOT NULL")) {
-                dataType += " NOT NULL";
-                break;
-              }
-            }
-          }
-          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);
-        }
-      }
-    }
-    const values = {
-      table: this.quoteTable(tableName),
-      attributes: attrStr.join(", ")
-    }, pkString = primaryKeys.map((pk) => {
-      return this.quoteIdentifier(pk);
-    }).join(", ");
-    if (options && options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns, indexName) => {
-        if (columns.customIndex) {
-          if (!_.isString(indexName)) {
-            indexName = `uniq_${tableName}_${columns.fields.join("_")}`;
-          }
-          values.attributes += `, CONSTRAINT ${this.quoteIdentifier(indexName)} UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-        }
-      });
-    }
-    if (pkString.length > 0) {
-      values.attributes += `, PRIMARY KEY (${pkString})`;
-    }
-    for (const fkey in foreignKeys) {
-      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {
-        values.attributes += `, FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;
-      }
-    }
-    return `${_.template(query, this._templateSettings)(values).trim()};${commentStr}`;
-  }
-  describeTableQuery(tableName, schema) {
-    let sql = [
-      'SELECT NAME AS "Name", TBNAME AS "Table", TBCREATOR AS "Schema",',
-      'TRIM(COLTYPE) AS "Type", LENGTH AS "Length", SCALE AS "Scale",',
-      'NULLS AS "IsNull", DEFAULT AS "Default", COLNO AS "Colno",',
-      'IDENTITY AS "IsIdentity", KEYSEQ AS "KeySeq", REMARKS AS "Comment"',
-      "FROM",
-      "SYSIBM.SYSCOLUMNS",
-      "WHERE TBNAME =",
-      wrapSingleQuote(tableName)
-    ].join(" ");
-    if (schema) {
-      sql += ` AND TBCREATOR =${wrapSingleQuote(schema)}`;
-    } else {
-      sql += " AND TBCREATOR = USER";
-    }
-    return `${sql};`;
-  }
-  renameTableQuery(before, after) {
-    const query = "RENAME TABLE <%= before %> TO <%= after %>;";
-    return _.template(query, this._templateSettings)({
-      before: this.quoteTable(before),
-      after: this.quoteTable(after)
-    });
-  }
-  showTablesQuery() {
-    return `SELECT TABNAME AS "tableName", TRIM(TABSCHEMA) AS "tableSchema" FROM SYSCAT.TABLES WHERE TABSCHEMA = USER AND TYPE = 'T' ORDER BY TABSCHEMA, TABNAME`;
-  }
-  tableExistsQuery(table) {
-    const tableName = table.tableName || table;
-    const schemaName = table.schema || this.sequelize.config.username.toUpperCase();
-    return `SELECT name FROM sysibm.systables WHERE NAME = ${wrapSingleQuote(tableName)} AND CREATOR = ${wrapSingleQuote(schemaName)}`;
-  }
-  dropTableQuery(tableName) {
-    const query = "DROP TABLE <%= table %>";
-    const values = {
-      table: this.quoteTable(tableName)
-    };
-    return `${_.template(query, this._templateSettings)(values).trim()};`;
-  }
-  addColumnQuery(table, key, dataType) {
-    dataType.field = key;
-    const query = "ALTER TABLE <%= table %> ADD <%= attribute %>;", attribute = _.template("<%= key %> <%= definition %>", this._templateSettings)({
-      key: this.quoteIdentifier(key),
-      definition: this.attributeToSQL(dataType, {
-        context: "addColumn"
-      })
-    });
-    return _.template(query, this._templateSettings)({
-      table: this.quoteTable(table),
-      attribute
-    });
-  }
-  removeColumnQuery(tableName, attributeName) {
-    const query = "ALTER TABLE <%= tableName %> DROP COLUMN <%= attributeName %>;";
-    return _.template(query, this._templateSettings)({
-      tableName: this.quoteTable(tableName),
-      attributeName: this.quoteIdentifier(attributeName)
-    });
-  }
-  changeColumnQuery(tableName, attributes) {
-    const query = "ALTER TABLE <%= tableName %> <%= query %>;";
-    const attrString = [], constraintString = [];
-    for (const attributeName in attributes) {
-      const attrValue = attributes[attributeName];
-      let defs = [attrValue];
-      if (Array.isArray(attrValue)) {
-        defs = attrValue;
-      }
-      for (let i = 0; i < defs.length; i++) {
-        const definition = defs[i];
-        if (definition.match(/REFERENCES/)) {
-          constraintString.push(_.template("<%= fkName %> FOREIGN KEY (<%= attrName %>) <%= definition %>", this._templateSettings)({
-            fkName: this.quoteIdentifier(`${attributeName}_foreign_idx`),
-            attrName: this.quoteIdentifier(attributeName),
-            definition: definition.replace(/.+?(?=REFERENCES)/, "")
-          }));
-        } else if (_.startsWith(definition, "DROP ")) {
-          attrString.push(_.template("<%= attrName %> <%= definition %>", this._templateSettings)({
-            attrName: this.quoteIdentifier(attributeName),
-            definition
-          }));
-        } else {
-          attrString.push(_.template("<%= attrName %> SET <%= definition %>", this._templateSettings)({
-            attrName: this.quoteIdentifier(attributeName),
-            definition
-          }));
-        }
-      }
-    }
-    let finalQuery = "";
-    if (attrString.length) {
-      finalQuery += `ALTER COLUMN ${attrString.join(" ALTER COLUMN ")}`;
-      finalQuery += constraintString.length ? " " : "";
-    }
-    if (constraintString.length) {
-      finalQuery += `ADD CONSTRAINT ${constraintString.join(" ADD CONSTRAINT ")}`;
-    }
-    return _.template(query, this._templateSettings)({
-      tableName: this.quoteTable(tableName),
-      query: finalQuery
-    });
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const query = "ALTER TABLE <%= tableName %> RENAME COLUMN <%= before %> TO <%= after %>;", newName = Object.keys(attributes)[0];
-    return _.template(query, this._templateSettings)({
-      tableName: this.quoteTable(tableName),
-      before: this.quoteIdentifier(attrBefore),
-      after: this.quoteIdentifier(newName)
-    });
-  }
-  addConstraintQuery(tableName, options) {
-    options = options || {};
-    if (options.onUpdate && options.onUpdate.toUpperCase() === "CASCADE") {
-      delete options.onUpdate;
-    }
-    const constraintSnippet = this.getConstraintSnippet(tableName, options);
-    if (typeof tableName === "string") {
-      tableName = this.quoteIdentifiers(tableName);
-    } else {
-      tableName = this.quoteTable(tableName);
-    }
-    return `ALTER TABLE ${tableName} ADD ${constraintSnippet};`;
-  }
-  bulkInsertQuery(tableName, attrValueHashes, options, attributes) {
-    options = options || {};
-    attributes = attributes || {};
-    let query = "INSERT INTO <%= table %> (<%= attributes %>)<%= output %> VALUES <%= tuples %>;";
-    if (options.returning) {
-      query = "SELECT * FROM FINAL TABLE( INSERT INTO <%= table %> (<%= attributes %>)<%= output %> VALUES <%= tuples %>);";
-    }
-    const emptyQuery = "INSERT INTO <%= table %>", tuples = [], allAttributes = [], allQueries = [];
-    let outputFragment;
-    const valuesForEmptyQuery = [];
-    if (options.returning) {
-      outputFragment = "";
-    }
-    _.forEach(attrValueHashes, (attrValueHash) => {
-      const fields = Object.keys(attrValueHash);
-      const firstAttr = attributes[fields[0]];
-      if (fields.length === 1 && firstAttr && firstAttr.autoIncrement && attrValueHash[fields[0]] === null) {
-        valuesForEmptyQuery.push(`(${this.autoGenValue++})`);
-        return;
-      }
-      _.forOwn(attrValueHash, (value, key) => {
-        if (allAttributes.indexOf(key) === -1) {
-          if (value === null && attributes[key] && attributes[key].autoIncrement)
-            return;
-          allAttributes.push(key);
-        }
-      });
-    });
-    if (valuesForEmptyQuery.length > 0) {
-      allQueries.push(`${emptyQuery} VALUES ${valuesForEmptyQuery.join(",")}`);
-    }
-    if (allAttributes.length > 0) {
-      _.forEach(attrValueHashes, (attrValueHash) => {
-        tuples.push(`(${allAttributes.map((key) => this.escape(attrValueHash[key]), void 0, { context: "INSERT" }).join(",")})`);
-      });
-      allQueries.push(query);
-    }
-    const replacements = {
-      table: this.quoteTable(tableName),
-      attributes: allAttributes.map((attr) => this.quoteIdentifier(attr)).join(","),
-      tuples,
-      output: outputFragment
-    };
-    const generatedQuery = _.template(allQueries.join(";"), this._templateSettings)(replacements);
-    return generatedQuery;
-  }
-  updateQuery(tableName, attrValueHash, where, options, attributes) {
-    const sql = super.updateQuery(tableName, attrValueHash, where, options, attributes);
-    options = options || {};
-    _.defaults(options, this.options);
-    if (!options.limit) {
-      sql.query = `SELECT * FROM FINAL TABLE (${sql.query});`;
-      return sql;
-    }
-    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);
-    const modelAttributeMap = {};
-    const values = [];
-    const bind = [];
-    const bindParam = options.bindParam || this.bindParam(bind);
-    if (attributes) {
-      _.each(attributes, (attribute, key) => {
-        modelAttributeMap[key] = attribute;
-        if (attribute.field) {
-          modelAttributeMap[attribute.field] = attribute;
-        }
-      });
-    }
-    for (const key in attrValueHash) {
-      const value = attrValueHash[key];
-      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {
-        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" })}`);
-      } else {
-        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" }, bindParam)}`);
-      }
-    }
-    let query;
-    const whereOptions = _.defaults({ bindParam }, options);
-    query = `UPDATE (SELECT * FROM ${this.quoteTable(tableName)} ${this.whereQuery(where, whereOptions)} FETCH NEXT ${this.escape(options.limit)} ROWS ONLY) SET ${values.join(",")}`;
-    query = `SELECT * FROM FINAL TABLE (${query});`;
-    return { query, bind };
-  }
-  upsertQuery(tableName, insertValues, updateValues, where, model) {
-    const targetTableAlias = this.quoteTable(`${tableName}_target`);
-    const sourceTableAlias = this.quoteTable(`${tableName}_source`);
-    const primaryKeysAttrs = [];
-    const identityAttrs = [];
-    const uniqueAttrs = [];
-    const tableNameQuoted = this.quoteTable(tableName);
-    for (const key in model.rawAttributes) {
-      if (model.rawAttributes[key].primaryKey) {
-        primaryKeysAttrs.push(model.rawAttributes[key].field || key);
-      }
-      if (model.rawAttributes[key].unique) {
-        uniqueAttrs.push(model.rawAttributes[key].field || key);
-      }
-      if (model.rawAttributes[key].autoIncrement) {
-        identityAttrs.push(model.rawAttributes[key].field || key);
-      }
-    }
-    for (const index of model._indexes) {
-      if (index.unique && index.fields) {
-        for (const field of index.fields) {
-          const fieldName = typeof field === "string" ? field : field.name || field.attribute;
-          if (uniqueAttrs.indexOf(fieldName) === -1 && model.rawAttributes[fieldName]) {
-            uniqueAttrs.push(fieldName);
-          }
-        }
-      }
-    }
-    const updateKeys = Object.keys(updateValues);
-    const insertKeys = Object.keys(insertValues);
-    const insertKeysQuoted = insertKeys.map((key) => this.quoteIdentifier(key)).join(", ");
-    const insertValuesEscaped = insertKeys.map((key) => this.escape(insertValues[key])).join(", ");
-    const sourceTableQuery = `VALUES(${insertValuesEscaped})`;
-    let joinCondition;
-    const clauses = where[Op.or].filter((clause) => {
-      let valid = true;
-      for (const key in clause) {
-        if (!clause[key]) {
-          valid = false;
-          break;
-        }
-      }
-      return valid;
-    });
-    const getJoinSnippet = (array) => {
-      return array.map((key) => {
-        key = this.quoteIdentifier(key);
-        return `${targetTableAlias}.${key} = ${sourceTableAlias}.${key}`;
-      });
-    };
-    if (clauses.length === 0) {
-      throw new Error("Primary Key or Unique key should be passed to upsert query");
-    } else {
-      for (const key in clauses) {
-        const keys = Object.keys(clauses[key]);
-        if (primaryKeysAttrs.indexOf(keys[0]) !== -1) {
-          joinCondition = getJoinSnippet(primaryKeysAttrs).join(" AND ");
-          break;
-        }
-      }
-      if (!joinCondition) {
-        joinCondition = getJoinSnippet(uniqueAttrs).join(" AND ");
-      }
-    }
-    const filteredUpdateClauses = updateKeys.filter((key) => {
-      if (identityAttrs.indexOf(key) === -1) {
-        return true;
-      }
-      return false;
-    }).map((key) => {
-      const value = this.escape(updateValues[key]);
-      key = this.quoteIdentifier(key);
-      return `${targetTableAlias}.${key} = ${value}`;
-    }).join(", ");
-    const updateSnippet = filteredUpdateClauses.length > 0 ? `WHEN MATCHED THEN UPDATE SET ${filteredUpdateClauses}` : "";
-    const insertSnippet = `(${insertKeysQuoted}) VALUES(${insertValuesEscaped})`;
-    let query = `MERGE INTO ${tableNameQuoted} AS ${targetTableAlias} USING (${sourceTableQuery}) AS ${sourceTableAlias}(${insertKeysQuoted}) ON ${joinCondition}`;
-    query += ` ${updateSnippet} WHEN NOT MATCHED THEN INSERT ${insertSnippet};`;
-    return query;
-  }
-  truncateTableQuery(tableName) {
-    return `TRUNCATE TABLE ${this.quoteTable(tableName)} IMMEDIATE`;
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    const table = this.quoteTable(tableName);
-    const query = "DELETE FROM <%= table %><%= where %><%= limit %>";
-    where = this.getWhereConditions(where, null, model, options);
-    let limit = "";
-    if (options.offset > 0) {
-      limit = ` OFFSET ${this.escape(options.offset)} ROWS`;
-    }
-    if (options.limit) {
-      limit += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;
-    }
-    const replacements = {
-      limit,
-      table,
-      where
-    };
-    if (replacements.where) {
-      replacements.where = ` WHERE ${replacements.where}`;
-    }
-    return _.template(query, this._templateSettings)(replacements);
-  }
-  showIndexesQuery(tableName) {
-    let sql = 'SELECT NAME AS "name", TBNAME AS "tableName", UNIQUERULE AS "keyType", COLNAMES, INDEXTYPE AS "type" FROM SYSIBM.SYSINDEXES WHERE TBNAME = <%= tableName %>';
-    let schema = void 0;
-    if (_.isObject(tableName)) {
-      schema = tableName.schema;
-      tableName = tableName.tableName;
-    }
-    if (schema) {
-      sql = `${sql} AND TBCREATOR = <%= schemaName %>`;
-    }
-    sql = `${sql} ORDER BY NAME;`;
-    return _.template(sql, this._templateSettings)({
-      tableName: wrapSingleQuote(tableName),
-      schemaName: wrapSingleQuote(schema)
-    });
-  }
-  showConstraintsQuery(tableName, constraintName) {
-    let sql = `SELECT CONSTNAME AS "constraintName", TRIM(TABSCHEMA) AS "schemaName", TABNAME AS "tableName" FROM SYSCAT.TABCONST WHERE TABNAME = '${tableName}'`;
-    if (constraintName) {
-      sql += ` AND CONSTNAME LIKE '%${constraintName}%'`;
-    }
-    return `${sql} ORDER BY CONSTNAME;`;
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    const sql = "DROP INDEX <%= indexName %>";
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    const values = {
-      tableName: this.quoteIdentifiers(tableName),
-      indexName: this.quoteIdentifiers(indexName)
-    };
-    return _.template(sql, this._templateSettings)(values);
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    let template;
-    let changeNull = 1;
-    if (attribute.type instanceof DataTypes.ENUM) {
-      if (attribute.type.values && !attribute.values)
-        attribute.values = attribute.type.values;
-      template = attribute.type.toSql();
-      template += ` CHECK (${this.quoteIdentifier(attribute.field)} IN(${attribute.values.map((value) => {
-        return this.escape(value);
-      }).join(", ")}))`;
-    } else {
-      template = attribute.type.toString();
-    }
-    if (options && options.context === "changeColumn" && attribute.type) {
-      template = `DATA TYPE ${template}`;
-    } else if (attribute.allowNull === false || attribute.primaryKey === true || attribute.unique) {
-      template += " NOT NULL";
-      changeNull = 0;
-    }
-    if (attribute.autoIncrement) {
-      let initialValue = 1;
-      if (attribute.initialAutoIncrement) {
-        initialValue = attribute.initialAutoIncrement;
-      }
-      template += ` GENERATED BY DEFAULT AS IDENTITY(START WITH ${initialValue}, INCREMENT BY 1)`;
-    }
-    if (attribute.type !== "TEXT" && attribute.type._binary !== true && Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-    }
-    if (attribute.unique === true) {
-      template += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      template += " PRIMARY KEY";
-    }
-    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {
-      if (options && options.context === "addColumn" && options.foreignKey) {
-        const attrName = this.quoteIdentifier(options.foreignKey);
-        const fkName = `${options.tableName}_${attrName}_fidx`;
-        template += `, CONSTRAINT ${fkName} FOREIGN KEY (${attrName})`;
-      }
-      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;
-      if (attribute.references.key) {
-        template += ` (${this.quoteIdentifier(attribute.references.key)})`;
-      } else {
-        template += ` (${this.quoteIdentifier("id")})`;
-      }
-      if (attribute.onDelete) {
-        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-      }
-      if (attribute.onUpdate && attribute.onUpdate.toUpperCase() != "CASCADE") {
-        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;
-      }
-    }
-    if (options && options.context === "changeColumn" && changeNull === 1 && attribute.allowNull !== void 0) {
-      template = [template];
-      if (attribute.allowNull) {
-        template.push("DROP NOT NULL");
-      } else {
-        template.push("NOT NULL");
-      }
-    }
-    if (attribute.comment && typeof attribute.comment === "string") {
-      template += ` COMMENT ${attribute.comment}`;
-    }
-    return template;
-  }
-  attributesToSQL(attributes, options) {
-    const result = {}, existingConstraints = [];
-    let key, attribute;
-    for (key in attributes) {
-      attribute = attributes[key];
-      if (attribute.references) {
-        if (existingConstraints.indexOf(attribute.references.model.toString()) !== -1) {
-          attribute.onDelete = "";
-          attribute.onUpdate = "";
-        } else if (attribute.unique && attribute.unique === true) {
-          attribute.onDelete = "";
-          attribute.onUpdate = "";
-        } else {
-          existingConstraints.push(attribute.references.model.toString());
-        }
-      }
-      if (key && !attribute.field && typeof attribute === "object")
-        attribute.field = key;
-      result[attribute.field || key] = this.attributeToSQL(attribute, options);
-    }
-    return result;
-  }
-  createTrigger() {
-    throwMethodUndefined("createTrigger");
-  }
-  dropTrigger() {
-    throwMethodUndefined("dropTrigger");
-  }
-  renameTrigger() {
-    throwMethodUndefined("renameTrigger");
-  }
-  createFunction() {
-    throwMethodUndefined("createFunction");
-  }
-  dropFunction() {
-    throwMethodUndefined("dropFunction");
-  }
-  renameFunction() {
-    throwMethodUndefined("renameFunction");
-  }
-  _getForeignKeysQuerySQL(condition) {
-    return `SELECT R.CONSTNAME AS "constraintName", TRIM(R.TABSCHEMA) AS "constraintSchema", R.TABNAME AS "tableName", TRIM(R.TABSCHEMA) AS "tableSchema", LISTAGG(C.COLNAME,', ') WITHIN GROUP (ORDER BY C.COLNAME) AS "columnName", TRIM(R.REFTABSCHEMA) AS "referencedTableSchema", R.REFTABNAME AS "referencedTableName", TRIM(R.PK_COLNAMES) AS "referencedColumnName" FROM SYSCAT.REFERENCES R, SYSCAT.KEYCOLUSE C WHERE R.CONSTNAME = C.CONSTNAME AND R.TABSCHEMA = C.TABSCHEMA AND R.TABNAME = C.TABNAME${condition} GROUP BY R.REFTABSCHEMA, R.REFTABNAME, R.TABSCHEMA, R.TABNAME, R.CONSTNAME, R.PK_COLNAMES`;
-  }
-  getForeignKeysQuery(table, schemaName) {
-    const tableName = table.tableName || table;
-    schemaName = table.schema || schemaName;
-    let sql = "";
-    if (tableName) {
-      sql = ` AND R.TABNAME = ${wrapSingleQuote(tableName)}`;
-    }
-    if (schemaName) {
-      sql += ` AND R.TABSCHEMA = ${wrapSingleQuote(schemaName)}`;
-    }
-    return this._getForeignKeysQuerySQL(sql);
-  }
-  getForeignKeyQuery(table, columnName) {
-    const tableName = table.tableName || table;
-    const schemaName = table.schema;
-    let sql = "";
-    if (tableName) {
-      sql = ` AND R.TABNAME = ${wrapSingleQuote(tableName)}`;
-    }
-    if (schemaName) {
-      sql += ` AND R.TABSCHEMA = ${wrapSingleQuote(schemaName)}`;
-    }
-    if (columnName) {
-      sql += ` AND C.COLNAME = ${wrapSingleQuote(columnName)}`;
-    }
-    return this._getForeignKeysQuerySQL(sql);
-  }
-  getPrimaryKeyConstraintQuery(table, attributeName) {
-    const tableName = wrapSingleQuote(table.tableName || table);
-    return [
-      'SELECT TABNAME AS "tableName",',
-      'COLNAME AS "columnName",',
-      'CONSTNAME AS "constraintName"',
-      "FROM SYSCAT.KEYCOLUSE WHERE CONSTNAME LIKE 'PK_%'",
-      `AND COLNAME = ${wrapSingleQuote(attributeName)}`,
-      `AND TABNAME = ${tableName};`
-    ].join(" ");
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return _.template("ALTER TABLE <%= table %> DROP <%= key %>", this._templateSettings)({
-      table: this.quoteTable(tableName),
-      key: this.quoteIdentifier(foreignKey)
-    });
-  }
-  dropConstraintQuery(tableName, constraintName) {
-    const sql = "ALTER TABLE <%= table %> DROP CONSTRAINT <%= constraint %>;";
-    return _.template(sql, this._templateSettings)({
-      table: this.quoteTable(tableName),
-      constraint: this.quoteIdentifier(constraintName)
-    });
-  }
-  setAutocommitQuery() {
-    return "";
-  }
-  setIsolationLevelQuery() {
-  }
-  generateTransactionId() {
-    return randomBytes(10).toString("hex");
-  }
-  startTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `SAVE TRANSACTION ${this.quoteIdentifier(transaction.name)};`;
-    }
-    return "BEGIN TRANSACTION;";
-  }
-  commitTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return;
-    }
-    return "COMMIT TRANSACTION;";
-  }
-  rollbackTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `ROLLBACK TRANSACTION ${this.quoteIdentifier(transaction.name)};`;
-    }
-    return "ROLLBACK TRANSACTION;";
-  }
-  addLimitAndOffset(options) {
-    const offset = options.offset || 0;
-    let fragment = "";
-    if (offset > 0) {
-      fragment += ` OFFSET ${this.escape(offset)} ROWS`;
-    }
-    if (options.limit) {
-      fragment += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;
-    }
-    return fragment;
-  }
-  booleanValue(value) {
-    return value ? 1 : 0;
-  }
-  addUniqueFields(dataValues, rawAttributes, uniqno) {
-    uniqno = uniqno === void 0 ? 1 : uniqno;
-    for (const key in rawAttributes) {
-      if (rawAttributes[key].unique && dataValues[key] === void 0) {
-        if (rawAttributes[key].type instanceof DataTypes.DATE) {
-          dataValues[key] = Utils.now("db2");
-        } else if (rawAttributes[key].type instanceof DataTypes.STRING) {
-          dataValues[key] = `unique${uniqno++}`;
-        } else if (rawAttributes[key].type instanceof DataTypes.INTEGER) {
-          dataValues[key] = uniqno++;
-        } else if (rawAttributes[key].type instanceof DataTypes.BOOLEAN) {
-          dataValues[key] = new DataTypes.BOOLEAN(false);
-        }
-      }
-    }
-    return uniqno;
-  }
-  quoteIdentifier(identifier, force) {
-    return Utils.addTicks(Utils.removeTicks(identifier, '"'), '"');
-  }
-}
-function wrapSingleQuote(identifier) {
-  if (identifier) {
-    return `'${identifier}'`;
-  }
-  return "";
-}
-module.exports = Db2QueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst DataTypes = require('../../data-types');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst randomBytes = require('crypto').randomBytes;\nconst Op = require('../../operators');\n\n/* istanbul ignore next */\nconst throwMethodUndefined = function(methodName) {\n  throw new Error(`The method \"${methodName}\" is not defined! Please add it to your sql dialect.`);\n};\n\nclass Db2QueryGenerator extends AbstractQueryGenerator {\n  constructor(options) {\n    super(options);\n\n    this.OperatorMap = { ...this.OperatorMap, [Op.regexp]: 'REGEXP_LIKE',\n      [Op.notRegexp]: 'NOT REGEXP_LIKE' };\n    this.autoGenValue = 1;\n  }\n\n  createSchema(schema) {\n    return [\n      'CREATE SCHEMA',\n      this.quoteIdentifier(schema),\n      ';'\n    ].join(' ');\n  }\n\n  dropSchema(schema) {\n    // DROP SCHEMA Can't drop schema if it is not empty.\n    // DROP SCHEMA Can't drop objects belonging to the schema\n    // So, call the admin procedure to drop schema.\n    const query = `CALL SYSPROC.ADMIN_DROP_SCHEMA(${ wrapSingleQuote(schema.trim()) }, NULL, ? , ?)`;\n    const sql = { query };\n    sql.bind = [{ ParamType: 'INOUT', Data: 'ERRORSCHEMA' },\n      { ParamType: 'INOUT', Data: 'ERRORTABLE' }];\n    return sql;\n  }\n\n  showSchemasQuery() {\n    return 'SELECT SCHEMANAME AS \"schema_name\" FROM SYSCAT.SCHEMATA WHERE ' +\n      \"(SCHEMANAME NOT LIKE 'SYS%') AND SCHEMANAME NOT IN ('NULLID', 'SQLJ', 'ERRORSCHEMA')\";\n  }\n\n\n\n  versionQuery() {\n    return 'select service_level as VERSION from TABLE (sysproc.env_get_inst_info()) as A';\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    const query = 'CREATE TABLE <%= table %> (<%= attributes %>)',\n      primaryKeys = [],\n      foreignKeys = {},\n      attrStr = [],\n      commentTemplate = ' -- <%= comment %>, ' +\n          'TableName = <%= table %>, ColumnName = <%= column %>;';\n\n    let commentStr = '';\n\n    for (const attr in attributes) {\n      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {\n        let dataType = attributes[attr];\n        let match;\n\n        if (dataType.includes('COMMENT ')) {\n          const commentMatch = dataType.match(/^(.+) (COMMENT.*)$/);\n          if (commentMatch && commentMatch.length > 2) {\n            const commentText = commentMatch[2].replace(/COMMENT/, '').trim();\n            commentStr += _.template(commentTemplate, this._templateSettings)({\n              table: this.quoteIdentifier(tableName),\n              comment: this.escape(commentText),\n              column: this.quoteIdentifier(attr)\n            });\n            // remove comment related substring from dataType\n            dataType = commentMatch[1];\n          }\n        }\n\n        if (_.includes(dataType, 'PRIMARY KEY')) {\n          primaryKeys.push(attr);\n\n          if (_.includes(dataType, 'REFERENCES')) {\n            // Db2 doesn't support inline REFERENCES declarations: move to the end\n            match = dataType.match(/^(.+) (REFERENCES.*)$/);\n            attrStr.push(`${ this.quoteIdentifier(attr) } ${ match[1].replace(/PRIMARY KEY/, '') }`);\n            foreignKeys[attr] = match[2];\n          } else {\n            attrStr.push(`${ this.quoteIdentifier(attr) } ${ dataType.replace(/PRIMARY KEY/, '') }`);\n          }\n        } else if (_.includes(dataType, 'REFERENCES')) {\n          // Db2 doesn't support inline REFERENCES declarations: move to the end\n          match = dataType.match(/^(.+) (REFERENCES.*)$/);\n          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);\n          foreignKeys[attr] = match[2];\n        } else {\n          if (options && options.uniqueKeys) {\n            for (const ukey in options.uniqueKeys) {\n              if (options.uniqueKeys[ukey].fields.includes(attr) &&\n                  ! _.includes(dataType, 'NOT NULL'))\n              {\n                dataType += ' NOT NULL';\n                break;\n              }\n            }\n          }\n          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);\n        }\n\n      }\n    }\n\n    const values = {\n        table: this.quoteTable(tableName),\n        attributes: attrStr.join(', ')\n      },\n      pkString = primaryKeys.map(pk => { return this.quoteIdentifier(pk); }).join(', ');\n\n    if (options && options.uniqueKeys) {\n      _.each(options.uniqueKeys, (columns, indexName) => {\n        if (columns.customIndex) {\n          if (!_.isString(indexName)) {\n            indexName = `uniq_${ tableName }_${ columns.fields.join('_')}`;\n          }\n          values.attributes += `, CONSTRAINT ${this.quoteIdentifier(indexName)} UNIQUE (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ')})`;\n        }\n      });\n    }\n\n    if (pkString.length > 0) {\n      values.attributes += `, PRIMARY KEY (${pkString})`;\n    }\n\n    for (const fkey in foreignKeys) {\n      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {\n        values.attributes += `, FOREIGN KEY (${ this.quoteIdentifier(fkey) }) ${ foreignKeys[fkey] }`;\n      }\n    }\n    return `${_.template(query, this._templateSettings)(values).trim() };${ commentStr}`;\n  }\n\n\n  describeTableQuery(tableName, schema) {\n    let sql = [\n      'SELECT NAME AS \"Name\", TBNAME AS \"Table\", TBCREATOR AS \"Schema\",',\n      'TRIM(COLTYPE) AS \"Type\", LENGTH AS \"Length\", SCALE AS \"Scale\",',\n      'NULLS AS \"IsNull\", DEFAULT AS \"Default\", COLNO AS \"Colno\",',\n      'IDENTITY AS \"IsIdentity\", KEYSEQ AS \"KeySeq\", REMARKS AS \"Comment\"',\n      'FROM',\n      'SYSIBM.SYSCOLUMNS',\n      'WHERE TBNAME =', wrapSingleQuote(tableName)\n    ].join(' ');\n\n    if (schema) {\n      sql += ` AND TBCREATOR =${wrapSingleQuote(schema)}`;\n    } else {\n      sql += ' AND TBCREATOR = USER';\n    }\n\n    return `${sql};`;\n  }\n\n  renameTableQuery(before, after) {\n    const query = 'RENAME TABLE <%= before %> TO <%= after %>;';\n    return _.template(query, this._templateSettings)({\n      before: this.quoteTable(before),\n      after: this.quoteTable(after)\n    });\n  }\n\n  showTablesQuery() {\n    return \"SELECT TABNAME AS \\\"tableName\\\", TRIM(TABSCHEMA) AS \\\"tableSchema\\\" FROM SYSCAT.TABLES WHERE TABSCHEMA = USER AND TYPE = 'T' ORDER BY TABSCHEMA, TABNAME\";\n  }\n\n  tableExistsQuery(table) {\n    const tableName = table.tableName || table;\n    // The default schema is the authorization ID of the owner of the plan or package.\n    // https://www.ibm.com/docs/en/db2-for-zos/12?topic=concepts-db2-schemas-schema-qualifiers\n    const schemaName = table.schema || this.sequelize.config.username.toUpperCase();\n\n    // https://www.ibm.com/docs/en/db2-for-zos/11?topic=tables-systables\n    return `SELECT name FROM sysibm.systables WHERE NAME = ${wrapSingleQuote(tableName)} AND CREATOR = ${wrapSingleQuote(schemaName)}`;\n  }\n\n  dropTableQuery(tableName) {\n    const query = 'DROP TABLE <%= table %>';\n    const values = {\n      table: this.quoteTable(tableName)\n    };\n\n    return `${_.template(query, this._templateSettings)(values).trim()};`;\n  }\n\n  addColumnQuery(table, key, dataType) {\n    dataType.field = key;\n\n    const query = 'ALTER TABLE <%= table %> ADD <%= attribute %>;',\n      attribute = _.template('<%= key %> <%= definition %>', this._templateSettings)({\n        key: this.quoteIdentifier(key),\n        definition: this.attributeToSQL(dataType, {\n          context: 'addColumn'\n        })\n      });\n\n    return _.template(query, this._templateSettings)({\n      table: this.quoteTable(table),\n      attribute\n    });\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    const query = 'ALTER TABLE <%= tableName %> DROP COLUMN <%= attributeName %>;';\n    return _.template(query, this._templateSettings)({\n      tableName: this.quoteTable(tableName),\n      attributeName: this.quoteIdentifier(attributeName)\n    });\n  }\n\n  changeColumnQuery(tableName, attributes) {\n    const query = 'ALTER TABLE <%= tableName %> <%= query %>;';\n    const attrString = [],\n      constraintString = [];\n\n    for (const attributeName in attributes) {\n      const attrValue = attributes[attributeName];\n      let defs = [attrValue];\n      if (Array.isArray(attrValue)) {\n        defs = attrValue;\n      }\n      for (let i = 0; i < defs.length; i++) {\n        const definition = defs[i];\n        if (definition.match(/REFERENCES/)) {\n          constraintString.push(_.template('<%= fkName %> FOREIGN KEY (<%= attrName %>) <%= definition %>', this._templateSettings)({\n            fkName: this.quoteIdentifier(`${attributeName}_foreign_idx`),\n            attrName: this.quoteIdentifier(attributeName),\n            definition: definition.replace(/.+?(?=REFERENCES)/, '')\n          }));\n        } else if (_.startsWith(definition, 'DROP ')) {\n          attrString.push(_.template('<%= attrName %> <%= definition %>', this._templateSettings)({\n            attrName: this.quoteIdentifier(attributeName),\n            definition\n          }));\n        } else {\n          attrString.push(_.template('<%= attrName %> SET <%= definition %>', this._templateSettings)({\n            attrName: this.quoteIdentifier(attributeName),\n            definition\n          }));\n        }\n      }\n    }\n\n    let finalQuery = '';\n    if (attrString.length) {\n      finalQuery += `ALTER COLUMN ${attrString.join(' ALTER COLUMN ')}`;\n      finalQuery += constraintString.length ? ' ' : '';\n    }\n    if (constraintString.length) {\n      finalQuery += `ADD CONSTRAINT ${constraintString.join(' ADD CONSTRAINT ')}`;\n    }\n\n    return _.template(query, this._templateSettings)({\n      tableName: this.quoteTable(tableName),\n      query: finalQuery\n    });\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n    const query = 'ALTER TABLE <%= tableName %> RENAME COLUMN <%= before %> TO <%= after %>;',\n      newName = Object.keys(attributes)[0];\n\n    return _.template(query, this._templateSettings)({\n      tableName: this.quoteTable(tableName),\n      before: this.quoteIdentifier(attrBefore),\n      after: this.quoteIdentifier(newName)\n    });\n  }\n\n  addConstraintQuery(tableName, options) {\n    options = options || {};\n    if (options.onUpdate && options.onUpdate.toUpperCase() === 'CASCADE') {\n      // Db2 does not support ON UPDATE CASCADE, remove it.\n      delete options.onUpdate;\n    }\n    const constraintSnippet = this.getConstraintSnippet(tableName, options);\n\n    if (typeof tableName === 'string') {\n      tableName = this.quoteIdentifiers(tableName);\n    } else {\n      tableName = this.quoteTable(tableName);\n    }\n\n    return `ALTER TABLE ${tableName} ADD ${constraintSnippet};`;\n  }\n\n  bulkInsertQuery(tableName, attrValueHashes, options, attributes) {\n    options = options || {};\n    attributes = attributes || {};\n    let query = 'INSERT INTO <%= table %> (<%= attributes %>)<%= output %> VALUES <%= tuples %>;';\n    if (options.returning) {\n      query = 'SELECT * FROM FINAL TABLE( INSERT INTO <%= table %> (<%= attributes %>)<%= output %> VALUES <%= tuples %>);';\n    }\n    const emptyQuery = 'INSERT INTO <%= table %>',\n      tuples = [],\n      allAttributes = [],\n      allQueries = [];\n\n    let outputFragment;\n    const valuesForEmptyQuery = [];\n\n    if (options.returning) {\n      outputFragment = '';\n    }\n    _.forEach(attrValueHashes, attrValueHash => {\n      // special case for empty objects with primary keys\n      const fields = Object.keys(attrValueHash);\n      const firstAttr = attributes[fields[0]];\n      if (fields.length === 1 && firstAttr && firstAttr.autoIncrement && attrValueHash[fields[0]] === null) {\n        valuesForEmptyQuery.push(`(${ this.autoGenValue++ })`);\n        return;\n      }\n\n      // normal case\n      _.forOwn(attrValueHash, (value, key) => {\n        if (allAttributes.indexOf(key) === -1) {\n          if (value === null && attributes[key] && attributes[key].autoIncrement)\n            return;\n\n          allAttributes.push(key);\n        }\n      });\n    });\n    if (valuesForEmptyQuery.length > 0) {\n      allQueries.push(`${emptyQuery } VALUES ${ valuesForEmptyQuery.join(',')}`);\n    }\n\t\n    if (allAttributes.length > 0) {\n      _.forEach(attrValueHashes, attrValueHash => {\n        tuples.push(`(${\n          allAttributes.map(key =>\n            this.escape(attrValueHash[key]), undefined, { context: 'INSERT' }).join(',')})`);\n      });\n      allQueries.push(query);\n    }\n    const replacements = {\n      table: this.quoteTable(tableName),\n      attributes: allAttributes.map(attr =>\n        this.quoteIdentifier(attr)).join(','),\n      tuples,\n      output: outputFragment\n    };\n\n    const generatedQuery = _.template(allQueries.join(';'), this._templateSettings)(replacements);\n    return generatedQuery;\n  }\n\n  updateQuery(tableName, attrValueHash, where, options, attributes) {\n    const sql = super.updateQuery(tableName, attrValueHash, where, options, attributes);\n    options = options || {};\n    _.defaults(options, this.options);\n    if ( ! options.limit ) {\n      sql.query = `SELECT * FROM FINAL TABLE (${ sql.query });`;\n      return sql;\n    }\n\n    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);\n\n    const modelAttributeMap = {};\n    const values = [];\n    const bind = [];\n    const bindParam = options.bindParam || this.bindParam(bind);\n\n    if (attributes) {\n      _.each(attributes, (attribute, key) => {\n        modelAttributeMap[key] = attribute;\n        if (attribute.field) {\n          modelAttributeMap[attribute.field] = attribute;\n        }\n      });\n    }\n\n    for (const key in attrValueHash) {\n      const value = attrValueHash[key];\n\n      if (value instanceof Utils.SequelizeMethod || options.bindParam === false)\n      {\n        values.push(`${this.quoteIdentifier(key) }=${ this.escape(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' })}`);\n      } else {\n        values.push(`${this.quoteIdentifier(key) }=${ this.format(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' }, bindParam)}`);\n      }\n    }\n\n    let query;\n    const whereOptions = _.defaults({ bindParam }, options);\n\n    query = `UPDATE (SELECT * FROM ${this.quoteTable(tableName)} ${this.whereQuery(where, whereOptions)} FETCH NEXT ${this.escape(options.limit)} ROWS ONLY) SET ${values.join(',')}`;\n    query = `SELECT * FROM FINAL TABLE (${ query });`;\n    return { query, bind };\n  }\n\n  upsertQuery(tableName, insertValues, updateValues, where, model) {\n    const targetTableAlias = this.quoteTable(`${tableName}_target`);\n    const sourceTableAlias = this.quoteTable(`${tableName}_source`);\n    const primaryKeysAttrs = [];\n    const identityAttrs = [];\n    const uniqueAttrs = [];\n    const tableNameQuoted = this.quoteTable(tableName);\n\n    //Obtain primaryKeys, uniquekeys and identity attrs from rawAttributes as model is not passed\n    for (const key in model.rawAttributes) {\n      if (model.rawAttributes[key].primaryKey) {\n        primaryKeysAttrs.push(model.rawAttributes[key].field || key);\n      }\n      if (model.rawAttributes[key].unique) {\n        uniqueAttrs.push(model.rawAttributes[key].field || key);\n      }\n      if (model.rawAttributes[key].autoIncrement) {\n        identityAttrs.push(model.rawAttributes[key].field || key);\n      }\n    }\n\n    //Add unique indexes defined by indexes option to uniqueAttrs\n    for (const index of model._indexes) {\n      if (index.unique && index.fields) {\n        for (const field of index.fields) {\n          const fieldName = typeof field === 'string' ? field : field.name || field.attribute;\n          if (uniqueAttrs.indexOf(fieldName) === -1 && model.rawAttributes[fieldName]) {\n            uniqueAttrs.push(fieldName);\n          }\n        }\n      }\n    }\n\n    const updateKeys = Object.keys(updateValues);\n    const insertKeys = Object.keys(insertValues);\n    const insertKeysQuoted = insertKeys.map(key => this.quoteIdentifier(key)).join(', ');\n    const insertValuesEscaped = insertKeys.map(key => this.escape(insertValues[key])).join(', ');\n    const sourceTableQuery = `VALUES(${insertValuesEscaped})`; //Virtual Table\n    let joinCondition;\n\n    //Filter NULL Clauses\n    const clauses = where[Op.or].filter(clause => {\n      let valid = true;\n      /*\n       * Exclude NULL Composite PK/UK. Partial Composite clauses should also be excluded as it doesn't guarantee a single row\n       */\n      for (const key in clause) {\n        if (!clause[key]) {\n          valid = false;\n          break;\n        }\n      }\n      return valid;\n    });\n\n    /*\n     * Generate ON condition using PK(s).\n     * If not, generate using UK(s). Else throw error\n     */\n    const getJoinSnippet = array => {\n      return array.map(key => {\n        key = this.quoteIdentifier(key);\n        return `${targetTableAlias}.${key} = ${sourceTableAlias}.${key}`;\n      });\n    };\n\n    if (clauses.length === 0) {\n      throw new Error('Primary Key or Unique key should be passed to upsert query');\n    } else {\n      // Search for primary key attribute in clauses -- Model can have two separate unique keys\n      for (const key in clauses) {\n        const keys = Object.keys(clauses[key]);\n        if (primaryKeysAttrs.indexOf(keys[0]) !== -1) {\n          joinCondition = getJoinSnippet(primaryKeysAttrs).join(' AND ');\n          break;\n        }\n      }\n      if (!joinCondition) {\n        joinCondition = getJoinSnippet(uniqueAttrs).join(' AND ');\n      }\n    }\n\n    // Remove the IDENTITY_INSERT Column from update\n    const filteredUpdateClauses = updateKeys.filter(key => {\n      if (identityAttrs.indexOf(key) === -1) {\n        return true;\n      }\n      return false;\n    })\n      .map(key => {\n        const value = this.escape(updateValues[key]);\n        key = this.quoteIdentifier(key);\n        return `${targetTableAlias}.${key} = ${value}`;\n      }).join(', ');\n    const updateSnippet = filteredUpdateClauses.length > 0 ? `WHEN MATCHED THEN UPDATE SET ${filteredUpdateClauses}` : '';\n\t\n    const insertSnippet = `(${insertKeysQuoted}) VALUES(${insertValuesEscaped})`;\n\t\n    let query = `MERGE INTO ${tableNameQuoted} AS ${targetTableAlias} USING (${sourceTableQuery}) AS ${sourceTableAlias}(${insertKeysQuoted}) ON ${joinCondition}`;\n    query += ` ${updateSnippet} WHEN NOT MATCHED THEN INSERT ${insertSnippet};`;\n    return query;\n  }\n\n  truncateTableQuery(tableName) {\n    return `TRUNCATE TABLE ${this.quoteTable(tableName)} IMMEDIATE`;\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    const table = this.quoteTable(tableName);\n    const query = 'DELETE FROM <%= table %><%= where %><%= limit %>';\n\n    where = this.getWhereConditions(where, null, model, options);\n\n    let limit = '';\n\n    if (options.offset > 0) {\n      limit = ` OFFSET ${ this.escape(options.offset) } ROWS`;\n    }\n    if (options.limit) {\n      limit += ` FETCH NEXT ${ this.escape(options.limit) } ROWS ONLY`;\n    }\n\n    const replacements = {\n      limit,\n      table,\n      where\n    };\n\n    if (replacements.where) {\n      replacements.where = ` WHERE ${replacements.where}`;\n    }\n\n    return _.template(query, this._templateSettings)(replacements);\n  }\n\n  showIndexesQuery(tableName) {\n    let sql = 'SELECT NAME AS \"name\", TBNAME AS \"tableName\", UNIQUERULE AS \"keyType\", COLNAMES, INDEXTYPE AS \"type\" FROM SYSIBM.SYSINDEXES WHERE TBNAME = <%= tableName %>';\n    let schema = undefined;\n    if (_.isObject(tableName)) {\n      schema = tableName.schema;\n      tableName = tableName.tableName;\n    }\n    if (schema) {\n      sql = `${sql} AND TBCREATOR = <%= schemaName %>`;\n    }\n    sql = `${sql} ORDER BY NAME;`;\n    return _.template(sql, this._templateSettings)({\n      tableName: wrapSingleQuote(tableName),\n      schemaName: wrapSingleQuote(schema)\n    });\n  }\n\n  showConstraintsQuery(tableName, constraintName) {\n    let sql = `SELECT CONSTNAME AS \"constraintName\", TRIM(TABSCHEMA) AS \"schemaName\", TABNAME AS \"tableName\" FROM SYSCAT.TABCONST WHERE TABNAME = '${tableName}'`;\n\n    if (constraintName) {\n      sql += ` AND CONSTNAME LIKE '%${constraintName}%'`;\n    }\n\n    return `${sql } ORDER BY CONSTNAME;`;\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    const sql = 'DROP INDEX <%= indexName %>';\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    const values = {\n      tableName: this.quoteIdentifiers(tableName),\n      indexName: this.quoteIdentifiers(indexName)\n    };\n\n    return _.template(sql, this._templateSettings)(values);\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    let template;\n    let changeNull = 1;\n\n    if (attribute.type instanceof DataTypes.ENUM) {\n      if (attribute.type.values && !attribute.values) attribute.values = attribute.type.values;\n\n      // enums are a special case\n      template = attribute.type.toSql();\n      template += ` CHECK (${this.quoteIdentifier(attribute.field)} IN(${attribute.values.map(value => {\n        return this.escape(value);\n      }).join(', ') }))`;\n    } else {\n      template = attribute.type.toString();\n    }\n\n    if (options && options.context === 'changeColumn' && attribute.type) {\n      template = `DATA TYPE ${template}`;\n    }\n    else if (attribute.allowNull === false || attribute.primaryKey === true ||\n             attribute.unique) {\n      template += ' NOT NULL';\n      changeNull = 0;\n    }\n\n    if (attribute.autoIncrement) {\n      let initialValue = 1;\n      if (attribute.initialAutoIncrement) {\n        initialValue = attribute.initialAutoIncrement;\n      }\n      template += ` GENERATED BY DEFAULT AS IDENTITY(START WITH ${initialValue}, INCREMENT BY 1)`;\n    }\n\n    // Blobs/texts cannot have a defaultValue\n    if (attribute.type !== 'TEXT' && attribute.type._binary !== true &&\n        Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n    }\n\n    if (attribute.unique === true) {\n      template += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      template += ' PRIMARY KEY';\n    }\n\n    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {\n      if (options && options.context === 'addColumn' && options.foreignKey) {\n        const attrName = this.quoteIdentifier(options.foreignKey);\n        const fkName = `${options.tableName }_${ attrName }_fidx`;\n        template += `, CONSTRAINT ${ fkName } FOREIGN KEY (${ attrName })`;\n      }\n      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;\n\n      if (attribute.references.key) {\n        template += ` (${ this.quoteIdentifier(attribute.references.key) })`;\n      } else {\n        template += ` (${ this.quoteIdentifier('id') })`;\n      }\n\n      if (attribute.onDelete) {\n        template += ` ON DELETE ${ attribute.onDelete.toUpperCase()}`;\n      }\n\n      if (attribute.onUpdate && attribute.onUpdate.toUpperCase() != 'CASCADE') {\n        // Db2 do not support CASCADE option for ON UPDATE clause.\n        template += ` ON UPDATE ${ attribute.onUpdate.toUpperCase()}`;\n      }\n    }\n\n    if (options && options.context === 'changeColumn' && changeNull === 1 &&\n        attribute.allowNull !== undefined) {\n      template = [template];\n      if (attribute.allowNull) {\n        template.push('DROP NOT NULL');\n      } else {\n        template.push('NOT NULL');\n      }\n    }\n\n    if (attribute.comment && typeof attribute.comment === 'string') {\n      template += ` COMMENT ${attribute.comment}`;\n    }\n\n    return template;\n  }\n\n  attributesToSQL(attributes, options) {\n    const result = {},\n      existingConstraints = [];\n    let key,\n      attribute;\n\n    for (key in attributes) {\n      attribute = attributes[key];\n\n      if (attribute.references) {\n\n        if (existingConstraints.indexOf(attribute.references.model.toString()) !== -1) {\n          // no cascading constraints to a table more than once\n          attribute.onDelete = '';\n          attribute.onUpdate = '';\n        } else if (attribute.unique && attribute.unique === true) {\n          attribute.onDelete = '';\n          attribute.onUpdate = '';\n        } else {\n          existingConstraints.push(attribute.references.model.toString());\n        }\n      }\n\n      if (key && !attribute.field && typeof attribute === 'object') attribute.field = key;\n      result[attribute.field || key] = this.attributeToSQL(attribute, options);\n    }\n\n    return result;\n  }\n\n  createTrigger() {\n    throwMethodUndefined('createTrigger');\n  }\n\n  dropTrigger() {\n    throwMethodUndefined('dropTrigger');\n  }\n\n  renameTrigger() {\n    throwMethodUndefined('renameTrigger');\n  }\n\n  createFunction() {\n    throwMethodUndefined('createFunction');\n  }\n\n  dropFunction() {\n    throwMethodUndefined('dropFunction');\n  }\n\n  renameFunction() {\n    throwMethodUndefined('renameFunction');\n  }\n\n  /**\n   * Generate SQL for ForeignKeysQuery.\n   *\n   * @param {string} condition   The condition string for query.\n   * @returns {string}\n   */\n  _getForeignKeysQuerySQL(condition) {\n    return 'SELECT R.CONSTNAME AS \"constraintName\", ' +\n        'TRIM(R.TABSCHEMA) AS \"constraintSchema\", ' +\n        'R.TABNAME AS \"tableName\", ' +\n        'TRIM(R.TABSCHEMA) AS \"tableSchema\", LISTAGG(C.COLNAME,\\', \\') ' +\n        'WITHIN GROUP (ORDER BY C.COLNAME) AS \"columnName\", ' +\n        'TRIM(R.REFTABSCHEMA) AS \"referencedTableSchema\", ' +\n        'R.REFTABNAME AS \"referencedTableName\", ' +\n        'TRIM(R.PK_COLNAMES) AS \"referencedColumnName\" ' +\n        'FROM SYSCAT.REFERENCES R, SYSCAT.KEYCOLUSE C ' +\n        'WHERE R.CONSTNAME = C.CONSTNAME AND R.TABSCHEMA = C.TABSCHEMA ' +\n        `AND R.TABNAME = C.TABNAME${ condition } GROUP BY R.REFTABSCHEMA, ` +\n        'R.REFTABNAME, R.TABSCHEMA, R.TABNAME, R.CONSTNAME, R.PK_COLNAMES';\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys of a table.\n   *\n   * @param {Stirng|object} table The name of the table.\n   * @param {string} schemaName   The name of the schema. \n   * @returns {string}            The generated sql query.\n   */\n  getForeignKeysQuery(table, schemaName) {\n    const tableName = table.tableName || table;\n    schemaName = table.schema || schemaName;\n    let sql = '';\n    if (tableName) {\n      sql = ` AND R.TABNAME = ${wrapSingleQuote(tableName)}`;\n    }\n    if (schemaName) {\n      sql += ` AND R.TABSCHEMA = ${wrapSingleQuote(schemaName)}`;\n    }\n    return this._getForeignKeysQuerySQL(sql);\n  }\n\n  getForeignKeyQuery(table, columnName) {\n    const tableName = table.tableName || table;\n    const schemaName = table.schema;\n    let sql = '';\n    if (tableName) {\n      sql = ` AND R.TABNAME = ${wrapSingleQuote(tableName)}`;\n    }\n    if (schemaName) {\n      sql += ` AND R.TABSCHEMA = ${wrapSingleQuote(schemaName)}`;\n    }\n    if (columnName) {\n      sql += ` AND C.COLNAME = ${wrapSingleQuote(columnName)}`;\n    }\n    return this._getForeignKeysQuerySQL(sql);\n  }\n\n  getPrimaryKeyConstraintQuery(table, attributeName) {\n    const tableName = wrapSingleQuote(table.tableName || table);\n    return [\n      'SELECT TABNAME AS \"tableName\",',\n      'COLNAME AS \"columnName\",',\n      'CONSTNAME AS \"constraintName\"',\n      'FROM SYSCAT.KEYCOLUSE WHERE CONSTNAME LIKE \\'PK_%\\'',\n      `AND COLNAME = ${wrapSingleQuote(attributeName)}`,\n      `AND TABNAME = ${tableName};`\n    ].join(' ');\n  }\n\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return _.template('ALTER TABLE <%= table %> DROP <%= key %>', this._templateSettings)({\n      table: this.quoteTable(tableName),\n      key: this.quoteIdentifier(foreignKey)\n    });\n  }\n\n  dropConstraintQuery(tableName, constraintName) {\n    const sql = 'ALTER TABLE <%= table %> DROP CONSTRAINT <%= constraint %>;';\n    return _.template(sql, this._templateSettings)({\n      table: this.quoteTable(tableName),\n      constraint: this.quoteIdentifier(constraintName)\n    });\n  }\n\n  setAutocommitQuery() {\n    return '';\n  }\n\n  setIsolationLevelQuery() {\n\n  }\n\n  generateTransactionId() {\n    return randomBytes(10).toString('hex');\n  }\n\n  startTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `SAVE TRANSACTION ${this.quoteIdentifier(transaction.name)};`;\n    }\n\n    return 'BEGIN TRANSACTION;';\n  }\n\n  commitTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return;\n    }\n\n    return 'COMMIT TRANSACTION;';\n  }\n\n  rollbackTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `ROLLBACK TRANSACTION ${this.quoteIdentifier(transaction.name)};`;\n    }\n\n    return 'ROLLBACK TRANSACTION;';\n  }\n\n  addLimitAndOffset(options) {\n    const offset = options.offset || 0;\n    let fragment = '';\n\n    if (offset > 0) {\n      fragment += ` OFFSET ${ this.escape(offset) } ROWS`;\n    }\n\n    if (options.limit) {\n      fragment += ` FETCH NEXT ${ this.escape(options.limit) } ROWS ONLY`;\n    }\n\n    return fragment;\n  }\n\n  booleanValue(value) {\n    return value ? 1 : 0;\n  }\n\n  addUniqueFields(dataValues, rawAttributes, uniqno) {\n    uniqno = uniqno === undefined ? 1 : uniqno;\n    for (const key in rawAttributes) {\n      if (rawAttributes[key].unique && dataValues[key] === undefined) {\n        if (rawAttributes[key].type instanceof DataTypes.DATE) {\n          dataValues[key] = Utils.now('db2');\n        } else if (rawAttributes[key].type instanceof DataTypes.STRING) {\n          dataValues[key] = `unique${uniqno++}`;\n        } else if (rawAttributes[key].type instanceof DataTypes.INTEGER) {\n          dataValues[key] = uniqno++;\n        } else if (rawAttributes[key].type instanceof DataTypes.BOOLEAN) {\n          dataValues[key] = new DataTypes.BOOLEAN(false);\n        }\n      }\n    }\n    return uniqno;\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return Utils.addTicks(Utils.removeTicks(identifier, '\"'), '\"');\n  }\n\n}\n\n// private methods\nfunction wrapSingleQuote(identifier) {\n  if (identifier) {\n    return `'${ identifier }'`;\n    //return Utils.addTicks(\"'\"); // It removes quote from center too.\n  }\n  return '';\n}\n\nmodule.exports = Db2QueryGenerator;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,QAAQ,QAAQ;AACtB,MAAM,YAAY,QAAQ;AAC1B,MAAM,yBAAyB,QAAQ;AACvC,MAAM,cAAc,QAAQ,UAAU;AACtC,MAAM,KAAK,QAAQ;AAGnB,MAAM,uBAAuB,SAAS,YAAY;AAChD,QAAM,IAAI,MAAM,eAAe;AAAA;AAGjC,gCAAgC,uBAAuB;AAAA,EACrD,YAAY,SAAS;AACnB,UAAM;AAEN,SAAK,cAAc,iCAAK,KAAK,cAAV;AAAA,OAAwB,GAAG,SAAS;AAAA,OACpD,GAAG,YAAY;AAAA;AAClB,SAAK,eAAe;AAAA;AAAA,EAGtB,aAAa,QAAQ;AACnB,WAAO;AAAA,MACL;AAAA,MACA,KAAK,gBAAgB;AAAA,MACrB;AAAA,MACA,KAAK;AAAA;AAAA,EAGT,WAAW,QAAQ;AAIjB,UAAM,QAAQ,kCAAmC,gBAAgB,OAAO;AACxE,UAAM,MAAM,EAAE;AACd,QAAI,OAAO;AAAA,MAAC,EAAE,WAAW,SAAS,MAAM;AAAA,MACtC,EAAE,WAAW,SAAS,MAAM;AAAA;AAC9B,WAAO;AAAA;AAAA,EAGT,mBAAmB;AACjB,WAAO;AAAA;AAAA,EAMT,eAAe;AACb,WAAO;AAAA;AAAA,EAGT,iBAAiB,WAAW,YAAY,SAAS;AAC/C,UAAM,QAAQ,iDACZ,cAAc,IACd,cAAc,IACd,UAAU,IACV,kBAAkB;AAGpB,QAAI,aAAa;AAEjB,eAAW,QAAQ,YAAY;AAC7B,UAAI,OAAO,UAAU,eAAe,KAAK,YAAY,OAAO;AAC1D,YAAI,WAAW,WAAW;AAC1B,YAAI;AAEJ,YAAI,SAAS,SAAS,aAAa;AACjC,gBAAM,eAAe,SAAS,MAAM;AACpC,cAAI,gBAAgB,aAAa,SAAS,GAAG;AAC3C,kBAAM,cAAc,aAAa,GAAG,QAAQ,WAAW,IAAI;AAC3D,0BAAc,EAAE,SAAS,iBAAiB,KAAK,mBAAmB;AAAA,cAChE,OAAO,KAAK,gBAAgB;AAAA,cAC5B,SAAS,KAAK,OAAO;AAAA,cACrB,QAAQ,KAAK,gBAAgB;AAAA;AAG/B,uBAAW,aAAa;AAAA;AAAA;AAI5B,YAAI,EAAE,SAAS,UAAU,gBAAgB;AACvC,sBAAY,KAAK;AAEjB,cAAI,EAAE,SAAS,UAAU,eAAe;AAEtC,oBAAQ,SAAS,MAAM;AACvB,oBAAQ,KAAK,GAAI,KAAK,gBAAgB,SAAW,MAAM,GAAG,QAAQ,eAAe;AACjF,wBAAY,QAAQ,MAAM;AAAA,iBACrB;AACL,oBAAQ,KAAK,GAAI,KAAK,gBAAgB,SAAW,SAAS,QAAQ,eAAe;AAAA;AAAA,mBAE1E,EAAE,SAAS,UAAU,eAAe;AAE7C,kBAAQ,SAAS,MAAM;AACvB,kBAAQ,KAAK,GAAG,KAAK,gBAAgB,SAAS,MAAM;AACpD,sBAAY,QAAQ,MAAM;AAAA,eACrB;AACL,cAAI,WAAW,QAAQ,YAAY;AACjC,uBAAW,QAAQ,QAAQ,YAAY;AACrC,kBAAI,QAAQ,WAAW,MAAM,OAAO,SAAS,SACzC,CAAE,EAAE,SAAS,UAAU,aAC3B;AACE,4BAAY;AACZ;AAAA;AAAA;AAAA;AAIN,kBAAQ,KAAK,GAAG,KAAK,gBAAgB,SAAS;AAAA;AAAA;AAAA;AAMpD,UAAM,SAAS;AAAA,MACX,OAAO,KAAK,WAAW;AAAA,MACvB,YAAY,QAAQ,KAAK;AAAA,OAE3B,WAAW,YAAY,IAAI,QAAM;AAAE,aAAO,KAAK,gBAAgB;AAAA,OAAQ,KAAK;AAE9E,QAAI,WAAW,QAAQ,YAAY;AACjC,QAAE,KAAK,QAAQ,YAAY,CAAC,SAAS,cAAc;AACjD,YAAI,QAAQ,aAAa;AACvB,cAAI,CAAC,EAAE,SAAS,YAAY;AAC1B,wBAAY,QAAS,aAAe,QAAQ,OAAO,KAAK;AAAA;AAE1D,iBAAO,cAAc,gBAAgB,KAAK,gBAAgB,sBAAsB,QAAQ,OAAO,IAAI,WAAS,KAAK,gBAAgB,QAAQ,KAAK;AAAA;AAAA;AAAA;AAKpJ,QAAI,SAAS,SAAS,GAAG;AACvB,aAAO,cAAc,kBAAkB;AAAA;AAGzC,eAAW,QAAQ,aAAa;AAC9B,UAAI,OAAO,UAAU,eAAe,KAAK,aAAa,OAAO;AAC3D,eAAO,cAAc,kBAAmB,KAAK,gBAAgB,UAAY,YAAY;AAAA;AAAA;AAGzF,WAAO,GAAG,EAAE,SAAS,OAAO,KAAK,mBAAmB,QAAQ,UAAY;AAAA;AAAA,EAI1E,mBAAmB,WAAW,QAAQ;AACpC,QAAI,MAAM;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAAkB,gBAAgB;AAAA,MAClC,KAAK;AAEP,QAAI,QAAQ;AACV,aAAO,mBAAmB,gBAAgB;AAAA,WACrC;AACL,aAAO;AAAA;AAGT,WAAO,GAAG;AAAA;AAAA,EAGZ,iBAAiB,QAAQ,OAAO;AAC9B,UAAM,QAAQ;AACd,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA,MAC/C,QAAQ,KAAK,WAAW;AAAA,MACxB,OAAO,KAAK,WAAW;AAAA;AAAA;AAAA,EAI3B,kBAAkB;AAChB,WAAO;AAAA;AAAA,EAGT,iBAAiB,OAAO;AACtB,UAAM,YAAY,MAAM,aAAa;AAGrC,UAAM,aAAa,MAAM,UAAU,KAAK,UAAU,OAAO,SAAS;AAGlE,WAAO,kDAAkD,gBAAgB,4BAA4B,gBAAgB;AAAA;AAAA,EAGvH,eAAe,WAAW;AACxB,UAAM,QAAQ;AACd,UAAM,SAAS;AAAA,MACb,OAAO,KAAK,WAAW;AAAA;AAGzB,WAAO,GAAG,EAAE,SAAS,OAAO,KAAK,mBAAmB,QAAQ;AAAA;AAAA,EAG9D,eAAe,OAAO,KAAK,UAAU;AACnC,aAAS,QAAQ;AAEjB,UAAM,QAAQ,kDACZ,YAAY,EAAE,SAAS,gCAAgC,KAAK,mBAAmB;AAAA,MAC7E,KAAK,KAAK,gBAAgB;AAAA,MAC1B,YAAY,KAAK,eAAe,UAAU;AAAA,QACxC,SAAS;AAAA;AAAA;AAIf,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA,MAC/C,OAAO,KAAK,WAAW;AAAA,MACvB;AAAA;AAAA;AAAA,EAIJ,kBAAkB,WAAW,eAAe;AAC1C,UAAM,QAAQ;AACd,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA,MAC/C,WAAW,KAAK,WAAW;AAAA,MAC3B,eAAe,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAIxC,kBAAkB,WAAW,YAAY;AACvC,UAAM,QAAQ;AACd,UAAM,aAAa,IACjB,mBAAmB;AAErB,eAAW,iBAAiB,YAAY;AACtC,YAAM,YAAY,WAAW;AAC7B,UAAI,OAAO,CAAC;AACZ,UAAI,MAAM,QAAQ,YAAY;AAC5B,eAAO;AAAA;AAET,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,aAAa,KAAK;AACxB,YAAI,WAAW,MAAM,eAAe;AAClC,2BAAiB,KAAK,EAAE,SAAS,iEAAiE,KAAK,mBAAmB;AAAA,YACxH,QAAQ,KAAK,gBAAgB,GAAG;AAAA,YAChC,UAAU,KAAK,gBAAgB;AAAA,YAC/B,YAAY,WAAW,QAAQ,qBAAqB;AAAA;AAAA,mBAE7C,EAAE,WAAW,YAAY,UAAU;AAC5C,qBAAW,KAAK,EAAE,SAAS,qCAAqC,KAAK,mBAAmB;AAAA,YACtF,UAAU,KAAK,gBAAgB;AAAA,YAC/B;AAAA;AAAA,eAEG;AACL,qBAAW,KAAK,EAAE,SAAS,yCAAyC,KAAK,mBAAmB;AAAA,YAC1F,UAAU,KAAK,gBAAgB;AAAA,YAC/B;AAAA;AAAA;AAAA;AAAA;AAMR,QAAI,aAAa;AACjB,QAAI,WAAW,QAAQ;AACrB,oBAAc,gBAAgB,WAAW,KAAK;AAC9C,oBAAc,iBAAiB,SAAS,MAAM;AAAA;AAEhD,QAAI,iBAAiB,QAAQ;AAC3B,oBAAc,kBAAkB,iBAAiB,KAAK;AAAA;AAGxD,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA,MAC/C,WAAW,KAAK,WAAW;AAAA,MAC3B,OAAO;AAAA;AAAA;AAAA,EAIX,kBAAkB,WAAW,YAAY,YAAY;AACnD,UAAM,QAAQ,6EACZ,UAAU,OAAO,KAAK,YAAY;AAEpC,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA,MAC/C,WAAW,KAAK,WAAW;AAAA,MAC3B,QAAQ,KAAK,gBAAgB;AAAA,MAC7B,OAAO,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAIhC,mBAAmB,WAAW,SAAS;AACrC,cAAU,WAAW;AACrB,QAAI,QAAQ,YAAY,QAAQ,SAAS,kBAAkB,WAAW;AAEpE,aAAO,QAAQ;AAAA;AAEjB,UAAM,oBAAoB,KAAK,qBAAqB,WAAW;AAE/D,QAAI,OAAO,cAAc,UAAU;AACjC,kBAAY,KAAK,iBAAiB;AAAA,WAC7B;AACL,kBAAY,KAAK,WAAW;AAAA;AAG9B,WAAO,eAAe,iBAAiB;AAAA;AAAA,EAGzC,gBAAgB,WAAW,iBAAiB,SAAS,YAAY;AAC/D,cAAU,WAAW;AACrB,iBAAa,cAAc;AAC3B,QAAI,QAAQ;AACZ,QAAI,QAAQ,WAAW;AACrB,cAAQ;AAAA;AAEV,UAAM,aAAa,4BACjB,SAAS,IACT,gBAAgB,IAChB,aAAa;AAEf,QAAI;AACJ,UAAM,sBAAsB;AAE5B,QAAI,QAAQ,WAAW;AACrB,uBAAiB;AAAA;AAEnB,MAAE,QAAQ,iBAAiB,mBAAiB;AAE1C,YAAM,SAAS,OAAO,KAAK;AAC3B,YAAM,YAAY,WAAW,OAAO;AACpC,UAAI,OAAO,WAAW,KAAK,aAAa,UAAU,iBAAiB,cAAc,OAAO,QAAQ,MAAM;AACpG,4BAAoB,KAAK,IAAK,KAAK;AACnC;AAAA;AAIF,QAAE,OAAO,eAAe,CAAC,OAAO,QAAQ;AACtC,YAAI,cAAc,QAAQ,SAAS,IAAI;AACrC,cAAI,UAAU,QAAQ,WAAW,QAAQ,WAAW,KAAK;AACvD;AAEF,wBAAc,KAAK;AAAA;AAAA;AAAA;AAIzB,QAAI,oBAAoB,SAAS,GAAG;AAClC,iBAAW,KAAK,GAAG,qBAAuB,oBAAoB,KAAK;AAAA;AAGrE,QAAI,cAAc,SAAS,GAAG;AAC5B,QAAE,QAAQ,iBAAiB,mBAAiB;AAC1C,eAAO,KAAK,IACV,cAAc,IAAI,SAChB,KAAK,OAAO,cAAc,OAAO,QAAW,EAAE,SAAS,YAAY,KAAK;AAAA;AAE9E,iBAAW,KAAK;AAAA;AAElB,UAAM,eAAe;AAAA,MACnB,OAAO,KAAK,WAAW;AAAA,MACvB,YAAY,cAAc,IAAI,UAC5B,KAAK,gBAAgB,OAAO,KAAK;AAAA,MACnC;AAAA,MACA,QAAQ;AAAA;AAGV,UAAM,iBAAiB,EAAE,SAAS,WAAW,KAAK,MAAM,KAAK,mBAAmB;AAChF,WAAO;AAAA;AAAA,EAGT,YAAY,WAAW,eAAe,OAAO,SAAS,YAAY;AAChE,UAAM,MAAM,MAAM,YAAY,WAAW,eAAe,OAAO,SAAS;AACxE,cAAU,WAAW;AACrB,MAAE,SAAS,SAAS,KAAK;AACzB,QAAK,CAAE,QAAQ,OAAQ;AACrB,UAAI,QAAQ,8BAA+B,IAAI;AAC/C,aAAO;AAAA;AAGT,oBAAgB,MAAM,yBAAyB,eAAe,QAAQ,UAAU;AAEhF,UAAM,oBAAoB;AAC1B,UAAM,SAAS;AACf,UAAM,OAAO;AACb,UAAM,YAAY,QAAQ,aAAa,KAAK,UAAU;AAEtD,QAAI,YAAY;AACd,QAAE,KAAK,YAAY,CAAC,WAAW,QAAQ;AACrC,0BAAkB,OAAO;AACzB,YAAI,UAAU,OAAO;AACnB,4BAAkB,UAAU,SAAS;AAAA;AAAA;AAAA;AAK3C,eAAW,OAAO,eAAe;AAC/B,YAAM,QAAQ,cAAc;AAE5B,UAAI,iBAAiB,MAAM,mBAAmB,QAAQ,cAAc,OACpE;AACE,eAAO,KAAK,GAAG,KAAK,gBAAgB,QAAU,KAAK,OAAO,OAAO,qBAAqB,kBAAkB,QAAQ,QAAW,EAAE,SAAS;AAAA,aACjI;AACL,eAAO,KAAK,GAAG,KAAK,gBAAgB,QAAU,KAAK,OAAO,OAAO,qBAAqB,kBAAkB,QAAQ,QAAW,EAAE,SAAS,YAAY;AAAA;AAAA;AAItJ,QAAI;AACJ,UAAM,eAAe,EAAE,SAAS,EAAE,aAAa;AAE/C,YAAQ,yBAAyB,KAAK,WAAW,cAAc,KAAK,WAAW,OAAO,4BAA4B,KAAK,OAAO,QAAQ,yBAAyB,OAAO,KAAK;AAC3K,YAAQ,8BAA+B;AACvC,WAAO,EAAE,OAAO;AAAA;AAAA,EAGlB,YAAY,WAAW,cAAc,cAAc,OAAO,OAAO;AAC/D,UAAM,mBAAmB,KAAK,WAAW,GAAG;AAC5C,UAAM,mBAAmB,KAAK,WAAW,GAAG;AAC5C,UAAM,mBAAmB;AACzB,UAAM,gBAAgB;AACtB,UAAM,cAAc;AACpB,UAAM,kBAAkB,KAAK,WAAW;AAGxC,eAAW,OAAO,MAAM,eAAe;AACrC,UAAI,MAAM,cAAc,KAAK,YAAY;AACvC,yBAAiB,KAAK,MAAM,cAAc,KAAK,SAAS;AAAA;AAE1D,UAAI,MAAM,cAAc,KAAK,QAAQ;AACnC,oBAAY,KAAK,MAAM,cAAc,KAAK,SAAS;AAAA;AAErD,UAAI,MAAM,cAAc,KAAK,eAAe;AAC1C,sBAAc,KAAK,MAAM,cAAc,KAAK,SAAS;AAAA;AAAA;AAKzD,eAAW,SAAS,MAAM,UAAU;AAClC,UAAI,MAAM,UAAU,MAAM,QAAQ;AAChC,mBAAW,SAAS,MAAM,QAAQ;AAChC,gBAAM,YAAY,OAAO,UAAU,WAAW,QAAQ,MAAM,QAAQ,MAAM;AAC1E,cAAI,YAAY,QAAQ,eAAe,MAAM,MAAM,cAAc,YAAY;AAC3E,wBAAY,KAAK;AAAA;AAAA;AAAA;AAAA;AAMzB,UAAM,aAAa,OAAO,KAAK;AAC/B,UAAM,aAAa,OAAO,KAAK;AAC/B,UAAM,mBAAmB,WAAW,IAAI,SAAO,KAAK,gBAAgB,MAAM,KAAK;AAC/E,UAAM,sBAAsB,WAAW,IAAI,SAAO,KAAK,OAAO,aAAa,OAAO,KAAK;AACvF,UAAM,mBAAmB,UAAU;AACnC,QAAI;AAGJ,UAAM,UAAU,MAAM,GAAG,IAAI,OAAO,YAAU;AAC5C,UAAI,QAAQ;AAIZ,iBAAW,OAAO,QAAQ;AACxB,YAAI,CAAC,OAAO,MAAM;AAChB,kBAAQ;AACR;AAAA;AAAA;AAGJ,aAAO;AAAA;AAOT,UAAM,iBAAiB,WAAS;AAC9B,aAAO,MAAM,IAAI,SAAO;AACtB,cAAM,KAAK,gBAAgB;AAC3B,eAAO,GAAG,oBAAoB,SAAS,oBAAoB;AAAA;AAAA;AAI/D,QAAI,QAAQ,WAAW,GAAG;AACxB,YAAM,IAAI,MAAM;AAAA,WACX;AAEL,iBAAW,OAAO,SAAS;AACzB,cAAM,OAAO,OAAO,KAAK,QAAQ;AACjC,YAAI,iBAAiB,QAAQ,KAAK,QAAQ,IAAI;AAC5C,0BAAgB,eAAe,kBAAkB,KAAK;AACtD;AAAA;AAAA;AAGJ,UAAI,CAAC,eAAe;AAClB,wBAAgB,eAAe,aAAa,KAAK;AAAA;AAAA;AAKrD,UAAM,wBAAwB,WAAW,OAAO,SAAO;AACrD,UAAI,cAAc,QAAQ,SAAS,IAAI;AACrC,eAAO;AAAA;AAET,aAAO;AAAA,OAEN,IAAI,SAAO;AACV,YAAM,QAAQ,KAAK,OAAO,aAAa;AACvC,YAAM,KAAK,gBAAgB;AAC3B,aAAO,GAAG,oBAAoB,SAAS;AAAA,OACtC,KAAK;AACV,UAAM,gBAAgB,sBAAsB,SAAS,IAAI,gCAAgC,0BAA0B;AAEnH,UAAM,gBAAgB,IAAI,4BAA4B;AAEtD,QAAI,QAAQ,cAAc,sBAAsB,2BAA2B,wBAAwB,oBAAoB,wBAAwB;AAC/I,aAAS,IAAI,8CAA8C;AAC3D,WAAO;AAAA;AAAA,EAGT,mBAAmB,WAAW;AAC5B,WAAO,kBAAkB,KAAK,WAAW;AAAA;AAAA,EAG3C,YAAY,WAAW,OAAO,UAAU,IAAI,OAAO;AACjD,UAAM,QAAQ,KAAK,WAAW;AAC9B,UAAM,QAAQ;AAEd,YAAQ,KAAK,mBAAmB,OAAO,MAAM,OAAO;AAEpD,QAAI,QAAQ;AAEZ,QAAI,QAAQ,SAAS,GAAG;AACtB,cAAQ,WAAY,KAAK,OAAO,QAAQ;AAAA;AAE1C,QAAI,QAAQ,OAAO;AACjB,eAAS,eAAgB,KAAK,OAAO,QAAQ;AAAA;AAG/C,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA;AAGF,QAAI,aAAa,OAAO;AACtB,mBAAa,QAAQ,UAAU,aAAa;AAAA;AAG9C,WAAO,EAAE,SAAS,OAAO,KAAK,mBAAmB;AAAA;AAAA,EAGnD,iBAAiB,WAAW;AAC1B,QAAI,MAAM;AACV,QAAI,SAAS;AACb,QAAI,EAAE,SAAS,YAAY;AACzB,eAAS,UAAU;AACnB,kBAAY,UAAU;AAAA;AAExB,QAAI,QAAQ;AACV,YAAM,GAAG;AAAA;AAEX,UAAM,GAAG;AACT,WAAO,EAAE,SAAS,KAAK,KAAK,mBAAmB;AAAA,MAC7C,WAAW,gBAAgB;AAAA,MAC3B,YAAY,gBAAgB;AAAA;AAAA;AAAA,EAIhC,qBAAqB,WAAW,gBAAgB;AAC9C,QAAI,MAAM,uIAAuI;AAEjJ,QAAI,gBAAgB;AAClB,aAAO,yBAAyB;AAAA;AAGlC,WAAO,GAAG;AAAA;AAAA,EAGZ,iBAAiB,WAAW,uBAAuB;AACjD,UAAM,MAAM;AACZ,QAAI,YAAY;AAEhB,QAAI,OAAO,cAAc,UAAU;AACjC,kBAAY,MAAM,WAAW,GAAG,aAAa,sBAAsB,KAAK;AAAA;AAG1E,UAAM,SAAS;AAAA,MACb,WAAW,KAAK,iBAAiB;AAAA,MACjC,WAAW,KAAK,iBAAiB;AAAA;AAGnC,WAAO,EAAE,SAAS,KAAK,KAAK,mBAAmB;AAAA;AAAA,EAGjD,eAAe,WAAW,SAAS;AACjC,QAAI,CAAC,EAAE,cAAc,YAAY;AAC/B,kBAAY;AAAA,QACV,MAAM;AAAA;AAAA;AAIV,QAAI;AACJ,QAAI,aAAa;AAEjB,QAAI,UAAU,gBAAgB,UAAU,MAAM;AAC5C,UAAI,UAAU,KAAK,UAAU,CAAC,UAAU;AAAQ,kBAAU,SAAS,UAAU,KAAK;AAGlF,iBAAW,UAAU,KAAK;AAC1B,kBAAY,WAAW,KAAK,gBAAgB,UAAU,aAAa,UAAU,OAAO,IAAI,WAAS;AAC/F,eAAO,KAAK,OAAO;AAAA,SAClB,KAAK;AAAA,WACH;AACL,iBAAW,UAAU,KAAK;AAAA;AAG5B,QAAI,WAAW,QAAQ,YAAY,kBAAkB,UAAU,MAAM;AACnE,iBAAW,aAAa;AAAA,eAEjB,UAAU,cAAc,SAAS,UAAU,eAAe,QAC1D,UAAU,QAAQ;AACzB,kBAAY;AACZ,mBAAa;AAAA;AAGf,QAAI,UAAU,eAAe;AAC3B,UAAI,eAAe;AACnB,UAAI,UAAU,sBAAsB;AAClC,uBAAe,UAAU;AAAA;AAE3B,kBAAY,gDAAgD;AAAA;AAI9D,QAAI,UAAU,SAAS,UAAU,UAAU,KAAK,YAAY,QACxD,MAAM,sBAAsB,UAAU,eAAe;AACvD,kBAAY,YAAY,KAAK,OAAO,UAAU;AAAA;AAGhD,QAAI,UAAU,WAAW,MAAM;AAC7B,kBAAY;AAAA;AAGd,QAAI,UAAU,YAAY;AACxB,kBAAY;AAAA;AAGd,QAAK,EAAC,WAAW,CAAC,QAAQ,iCAAiC,UAAU,YAAY;AAC/E,UAAI,WAAW,QAAQ,YAAY,eAAe,QAAQ,YAAY;AACpE,cAAM,WAAW,KAAK,gBAAgB,QAAQ;AAC9C,cAAM,SAAS,GAAG,QAAQ,aAAe;AACzC,oBAAY,gBAAiB,uBAAyB;AAAA;AAExD,kBAAY,eAAe,KAAK,WAAW,UAAU,WAAW;AAEhE,UAAI,UAAU,WAAW,KAAK;AAC5B,oBAAY,KAAM,KAAK,gBAAgB,UAAU,WAAW;AAAA,aACvD;AACL,oBAAY,KAAM,KAAK,gBAAgB;AAAA;AAGzC,UAAI,UAAU,UAAU;AACtB,oBAAY,cAAe,UAAU,SAAS;AAAA;AAGhD,UAAI,UAAU,YAAY,UAAU,SAAS,iBAAiB,WAAW;AAEvE,oBAAY,cAAe,UAAU,SAAS;AAAA;AAAA;AAIlD,QAAI,WAAW,QAAQ,YAAY,kBAAkB,eAAe,KAChE,UAAU,cAAc,QAAW;AACrC,iBAAW,CAAC;AACZ,UAAI,UAAU,WAAW;AACvB,iBAAS,KAAK;AAAA,aACT;AACL,iBAAS,KAAK;AAAA;AAAA;AAIlB,QAAI,UAAU,WAAW,OAAO,UAAU,YAAY,UAAU;AAC9D,kBAAY,YAAY,UAAU;AAAA;AAGpC,WAAO;AAAA;AAAA,EAGT,gBAAgB,YAAY,SAAS;AACnC,UAAM,SAAS,IACb,sBAAsB;AACxB,QAAI,KACF;AAEF,SAAK,OAAO,YAAY;AACtB,kBAAY,WAAW;AAEvB,UAAI,UAAU,YAAY;AAExB,YAAI,oBAAoB,QAAQ,UAAU,WAAW,MAAM,gBAAgB,IAAI;AAE7E,oBAAU,WAAW;AACrB,oBAAU,WAAW;AAAA,mBACZ,UAAU,UAAU,UAAU,WAAW,MAAM;AACxD,oBAAU,WAAW;AACrB,oBAAU,WAAW;AAAA,eAChB;AACL,8BAAoB,KAAK,UAAU,WAAW,MAAM;AAAA;AAAA;AAIxD,UAAI,OAAO,CAAC,UAAU,SAAS,OAAO,cAAc;AAAU,kBAAU,QAAQ;AAChF,aAAO,UAAU,SAAS,OAAO,KAAK,eAAe,WAAW;AAAA;AAGlE,WAAO;AAAA;AAAA,EAGT,gBAAgB;AACd,yBAAqB;AAAA;AAAA,EAGvB,cAAc;AACZ,yBAAqB;AAAA;AAAA,EAGvB,gBAAgB;AACd,yBAAqB;AAAA;AAAA,EAGvB,iBAAiB;AACf,yBAAqB;AAAA;AAAA,EAGvB,eAAe;AACb,yBAAqB;AAAA;AAAA,EAGvB,iBAAiB;AACf,yBAAqB;AAAA;AAAA,EASvB,wBAAwB,WAAW;AACjC,WAAO,ueAU0B;AAAA;AAAA,EAWnC,oBAAoB,OAAO,YAAY;AACrC,UAAM,YAAY,MAAM,aAAa;AACrC,iBAAa,MAAM,UAAU;AAC7B,QAAI,MAAM;AACV,QAAI,WAAW;AACb,YAAM,oBAAoB,gBAAgB;AAAA;AAE5C,QAAI,YAAY;AACd,aAAO,sBAAsB,gBAAgB;AAAA;AAE/C,WAAO,KAAK,wBAAwB;AAAA;AAAA,EAGtC,mBAAmB,OAAO,YAAY;AACpC,UAAM,YAAY,MAAM,aAAa;AACrC,UAAM,aAAa,MAAM;AACzB,QAAI,MAAM;AACV,QAAI,WAAW;AACb,YAAM,oBAAoB,gBAAgB;AAAA;AAE5C,QAAI,YAAY;AACd,aAAO,sBAAsB,gBAAgB;AAAA;AAE/C,QAAI,YAAY;AACd,aAAO,oBAAoB,gBAAgB;AAAA;AAE7C,WAAO,KAAK,wBAAwB;AAAA;AAAA,EAGtC,6BAA6B,OAAO,eAAe;AACjD,UAAM,YAAY,gBAAgB,MAAM,aAAa;AACrD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB,gBAAgB;AAAA,MACjC,iBAAiB;AAAA,MACjB,KAAK;AAAA;AAAA,EAGT,oBAAoB,WAAW,YAAY;AACzC,WAAO,EAAE,SAAS,4CAA4C,KAAK,mBAAmB;AAAA,MACpF,OAAO,KAAK,WAAW;AAAA,MACvB,KAAK,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAI9B,oBAAoB,WAAW,gBAAgB;AAC7C,UAAM,MAAM;AACZ,WAAO,EAAE,SAAS,KAAK,KAAK,mBAAmB;AAAA,MAC7C,OAAO,KAAK,WAAW;AAAA,MACvB,YAAY,KAAK,gBAAgB;AAAA;AAAA;AAAA,EAIrC,qBAAqB;AACnB,WAAO;AAAA;AAAA,EAGT,yBAAyB;AAAA;AAAA,EAIzB,wBAAwB;AACtB,WAAO,YAAY,IAAI,SAAS;AAAA;AAAA,EAGlC,sBAAsB,aAAa;AACjC,QAAI,YAAY,QAAQ;AACtB,aAAO,oBAAoB,KAAK,gBAAgB,YAAY;AAAA;AAG9D,WAAO;AAAA;AAAA,EAGT,uBAAuB,aAAa;AAClC,QAAI,YAAY,QAAQ;AACtB;AAAA;AAGF,WAAO;AAAA;AAAA,EAGT,yBAAyB,aAAa;AACpC,QAAI,YAAY,QAAQ;AACtB,aAAO,wBAAwB,KAAK,gBAAgB,YAAY;AAAA;AAGlE,WAAO;AAAA;AAAA,EAGT,kBAAkB,SAAS;AACzB,UAAM,SAAS,QAAQ,UAAU;AACjC,QAAI,WAAW;AAEf,QAAI,SAAS,GAAG;AACd,kBAAY,WAAY,KAAK,OAAO;AAAA;AAGtC,QAAI,QAAQ,OAAO;AACjB,kBAAY,eAAgB,KAAK,OAAO,QAAQ;AAAA;AAGlD,WAAO;AAAA;AAAA,EAGT,aAAa,OAAO;AAClB,WAAO,QAAQ,IAAI;AAAA;AAAA,EAGrB,gBAAgB,YAAY,eAAe,QAAQ;AACjD,aAAS,WAAW,SAAY,IAAI;AACpC,eAAW,OAAO,eAAe;AAC/B,UAAI,cAAc,KAAK,UAAU,WAAW,SAAS,QAAW;AAC9D,YAAI,cAAc,KAAK,gBAAgB,UAAU,MAAM;AACrD,qBAAW,OAAO,MAAM,IAAI;AAAA,mBACnB,cAAc,KAAK,gBAAgB,UAAU,QAAQ;AAC9D,qBAAW,OAAO,SAAS;AAAA,mBAClB,cAAc,KAAK,gBAAgB,UAAU,SAAS;AAC/D,qBAAW,OAAO;AAAA,mBACT,cAAc,KAAK,gBAAgB,UAAU,SAAS;AAC/D,qBAAW,OAAO,IAAI,UAAU,QAAQ;AAAA;AAAA;AAAA;AAI9C,WAAO;AAAA;AAAA,EAWT,gBAAgB,YAAY,OAAO;AACjC,WAAO,MAAM,SAAS,MAAM,YAAY,YAAY,MAAM;AAAA;AAAA;AAM9D,yBAAyB,YAAY;AACnC,MAAI,YAAY;AACd,WAAO,IAAK;AAAA;AAGd,SAAO;AAAA;AAGT,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const _ = require("lodash");
-const Utils = require("../../utils");
-const Op = require("../../operators");
-const { QueryInterface } = require("../abstract/query-interface");
-const QueryTypes = require("../../query-types");
-class Db2QueryInterface extends QueryInterface {
-  async getForeignKeyReferencesForTable(tableName, options) {
-    const queryOptions = __spreadProps(__spreadValues({}, options), {
-      type: QueryTypes.FOREIGNKEYS
-    });
-    const query = this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.username.toUpperCase());
-    return this.sequelize.query(query, queryOptions);
-  }
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    options = __spreadValues({}, options);
-    const model = options.model;
-    const wheres = [];
-    const attributes = Object.keys(insertValues);
-    let indexes = [];
-    let indexFields;
-    options = _.clone(options);
-    if (!Utils.isWhereEmpty(where)) {
-      wheres.push(where);
-    }
-    indexes = _.map(model.uniqueKeys, (value) => {
-      return value.fields;
-    });
-    model._indexes.forEach((value) => {
-      if (value.unique) {
-        indexFields = value.fields.map((field) => {
-          if (_.isPlainObject(field)) {
-            return field.attribute;
-          }
-          return field;
-        });
-        indexes.push(indexFields);
-      }
-    });
-    for (const index of indexes) {
-      if (_.intersection(attributes, index).length === index.length) {
-        where = {};
-        for (const field of index) {
-          where[field] = insertValues[field];
-        }
-        wheres.push(where);
-      }
-    }
-    where = { [Op.or]: wheres };
-    options.type = QueryTypes.UPSERT;
-    options.raw = true;
-    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);
-    const result = await this.sequelize.query(sql, options);
-    return [result, void 0];
-  }
-  async createTable(tableName, attributes, options, model) {
-    let sql = "";
-    options = __spreadValues({}, options);
-    if (options && options.uniqueKeys) {
-      _.forOwn(options.uniqueKeys, (uniqueKey) => {
-        if (uniqueKey.customIndex === void 0) {
-          uniqueKey.customIndex = true;
-        }
-      });
-    }
-    if (model) {
-      options.uniqueKeys = options.uniqueKeys || model.uniqueKeys;
-    }
-    attributes = _.mapValues(attributes, (attribute) => this.sequelize.normalizeAttribute(attribute));
-    if (options.indexes) {
-      options.indexes.forEach((fields) => {
-        const fieldArr = fields.fields;
-        if (fieldArr.length === 1) {
-          fieldArr.forEach((field) => {
-            for (const property in attributes) {
-              if (field === attributes[property].field) {
-                attributes[property].unique = true;
-              }
-            }
-          });
-        }
-      });
-    }
-    if (options.alter) {
-      if (options.indexes) {
-        options.indexes.forEach((fields) => {
-          const fieldArr = fields.fields;
-          if (fieldArr.length === 1) {
-            fieldArr.forEach((field) => {
-              for (const property in attributes) {
-                if (field === attributes[property].field && attributes[property].unique) {
-                  attributes[property].unique = false;
-                }
-              }
-            });
-          }
-        });
-      }
-    }
-    if (!tableName.schema && (options.schema || !!model && model._schema)) {
-      tableName = this.queryGenerator.addSchema({
-        tableName,
-        _schema: !!model && model._schema || options.schema
-      });
-    }
-    attributes = this.queryGenerator.attributesToSQL(attributes, { table: tableName, context: "createTable", withoutForeignKeyConstraints: options.withoutForeignKeyConstraints });
-    sql = this.queryGenerator.createTableQuery(tableName, attributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-}
-exports.Db2QueryInterface = Db2QueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst Op = require('../../operators');\nconst { QueryInterface } = require('../abstract/query-interface');\nconst QueryTypes = require('../../query-types');\n\n/**\n * The interface that Sequelize uses to talk with Db2 database\n */\nclass Db2QueryInterface extends QueryInterface {\n  async getForeignKeyReferencesForTable(tableName, options) {\n    const queryOptions = {\n      ...options,\n      type: QueryTypes.FOREIGNKEYS\n    };\n    const query = this.queryGenerator.getForeignKeysQuery(tableName, this.sequelize.config.username.toUpperCase());\n    return this.sequelize.query(query, queryOptions);\n  }\n\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    options = { ...options };\n\n    const model = options.model;\n    const wheres = [];\n    const attributes = Object.keys(insertValues);\n    let indexes = [];\n    let indexFields;\n\n    options = _.clone(options);\n\n    if (!Utils.isWhereEmpty(where)) {\n      wheres.push(where);\n    }\n\n    // Lets combine unique keys and indexes into one\n    indexes = _.map(model.uniqueKeys, value => {\n      return value.fields;\n    });\n\n    model._indexes.forEach(value => {\n      if (value.unique) {\n        // fields in the index may both the strings or objects with an attribute property - lets sanitize that\n        indexFields = value.fields.map(field => {\n          if (_.isPlainObject(field)) {\n            return field.attribute;\n          }\n          return field;\n        });\n        indexes.push(indexFields);\n      }\n    });\n\n    for (const index of indexes) {\n      if (_.intersection(attributes, index).length === index.length) {\n        where = {};\n        for (const field of index) {\n          where[field] = insertValues[field];\n        }\n        wheres.push(where);\n      }\n    }\n\n    where = { [Op.or]: wheres };\n\n    options.type = QueryTypes.UPSERT;\n    options.raw = true;\n\n    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);\n    const result = await this.sequelize.query(sql, options);\n    return [result, undefined];\n  }\n\n  async createTable(tableName, attributes, options, model) {\n    let sql = '';\n\n    options = { ...options };\n\n    if (options && options.uniqueKeys) {\n      _.forOwn(options.uniqueKeys, uniqueKey => {\n        if (uniqueKey.customIndex === undefined) {\n          uniqueKey.customIndex = true;\n        }\n      });\n    }\n\n    if (model) {\n      options.uniqueKeys = options.uniqueKeys || model.uniqueKeys;\n    }\n    attributes = _.mapValues(\n      attributes,\n      attribute => this.sequelize.normalizeAttribute(attribute)\n    );  \n    if (options.indexes) {\n      options.indexes.forEach(fields=>{\n        const fieldArr = fields.fields;\n        if (fieldArr.length === 1) {\n          fieldArr.forEach(field=>{       \n            for (const property in attributes) {\n              if (field === attributes[property].field) {\n                attributes[property].unique = true;\n              }\n            }\n          });\n        }\n      });\n    }\n    if (options.alter) {\n      if (options.indexes) {\n        options.indexes.forEach(fields=>{\n          const fieldArr = fields.fields;\n          if (fieldArr.length === 1) {\n            fieldArr.forEach(field=>{       \n              for (const property in attributes) {\n                if (field === attributes[property].field && attributes[property].unique) {\n                  attributes[property].unique = false;\n                }\n              }\n            });\n          }\n        });\n      }\n    }\n\n    if (\n      !tableName.schema &&\n      (options.schema || !!model && model._schema)\n    ) {\n      tableName = this.queryGenerator.addSchema({\n        tableName,\n        _schema: !!model && model._schema || options.schema\n      });\n    }\n\n    attributes = this.queryGenerator.attributesToSQL(attributes, { table: tableName, context: 'createTable', withoutForeignKeyConstraints: options.withoutForeignKeyConstraints });\n    sql = this.queryGenerator.createTableQuery(tableName, attributes, options);\n\n    return await this.sequelize.query(sql, options);\n  }\n\n}\n\nexports.Db2QueryInterface = Db2QueryInterface;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/db2/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,429 +1,0 @@
-"use strict";
-const util = require("util");
-const AbstractQuery = require("../abstract/query");
-const sequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("db2");
-const _ = require("lodash");
-const { logger } = require("../../utils/logger");
-const moment = require("moment");
-const debug = logger.debugContext("sql:db2");
-class Query extends AbstractQuery {
-  getInsertIdField() {
-    return "id";
-  }
-  getSQLTypeFromJsType(value) {
-    if (Buffer.isBuffer(value)) {
-      return { ParamType: "INPUT", DataType: "BLOB", Data: value };
-    }
-    if (typeof value === "bigint") {
-      return value.toString();
-    }
-    return value;
-  }
-  async _run(connection, sql, parameters) {
-    this.sql = sql;
-    const benchmark = this.sequelize.options.benchmark || this.options.benchmark;
-    let queryBegin;
-    if (benchmark) {
-      queryBegin = Date.now();
-    } else {
-      this.sequelize.log(`Executing (${this.connection.uuid || "default"}): ${this.sql}`, this.options);
-    }
-    const errStack = new Error().stack;
-    return new Promise((resolve, reject) => {
-      if (_.startsWith(this.sql, "BEGIN TRANSACTION")) {
-        connection.beginTransaction((err) => {
-          if (err) {
-            reject(this.formatError(err, errStack));
-          } else {
-            resolve(this.formatResults());
-          }
-        });
-      } else if (_.startsWith(this.sql, "COMMIT TRANSACTION")) {
-        connection.commitTransaction((err) => {
-          if (err) {
-            reject(this.formatError(err, errStack));
-          } else {
-            resolve(this.formatResults());
-          }
-        });
-      } else if (_.startsWith(this.sql, "ROLLBACK TRANSACTION")) {
-        connection.rollbackTransaction((err) => {
-          if (err) {
-            reject(this.formatError(err, errStack));
-          } else {
-            resolve(this.formatResults());
-          }
-        });
-      } else if (_.startsWith(this.sql, "SAVE TRANSACTION")) {
-        connection.commitTransaction((err) => {
-          if (err) {
-            reject(this.formatError(err, errStack));
-          } else {
-            connection.beginTransaction((err2) => {
-              if (err2) {
-                reject(this.formatError(err2, errStack));
-              } else {
-                resolve(this.formatResults());
-              }
-            });
-          }
-        }, this.options.transaction.name);
-      } else {
-        const params = [];
-        if (parameters) {
-          _.forOwn(parameters, (value, key) => {
-            const param = this.getSQLTypeFromJsType(value, key);
-            params.push(param);
-          });
-        }
-        const SQL = this.sql.toUpperCase();
-        let newSql = this.sql;
-        if ((this.isSelectQuery() || _.startsWith(SQL, "SELECT ")) && SQL.indexOf(" FROM ", 8) === -1) {
-          if (this.sql.charAt(this.sql.length - 1) === ";") {
-            newSql = this.sql.slice(0, this.sql.length - 1);
-          }
-          newSql += " FROM SYSIBM.SYSDUMMY1;";
-        }
-        connection.prepare(newSql, (err, stmt) => {
-          if (err) {
-            reject(this.formatError(err, errStack));
-          }
-          stmt.execute(params, (err2, result, outparams) => {
-            debug(`executed(${this.connection.uuid || "default"}):${newSql} ${parameters ? util.inspect(parameters, { compact: true, breakLength: Infinity }) : ""}`);
-            if (benchmark) {
-              this.sequelize.log(`Executed (${this.connection.uuid || "default"}): ${newSql} ${parameters ? util.inspect(parameters, { compact: true, breakLength: Infinity }) : ""}`, Date.now() - queryBegin, this.options);
-            }
-            if (err2 && err2.message) {
-              err2 = this.filterSQLError(err2, this.sql, connection);
-              if (err2 === null) {
-                stmt.closeSync();
-                resolve(this.formatResults([], 0));
-              }
-            }
-            if (err2) {
-              err2.sql = sql;
-              stmt.closeSync();
-              reject(this.formatError(err2, errStack, connection, parameters));
-            } else {
-              let data = [];
-              let metadata = [];
-              let affectedRows = 0;
-              if (typeof result === "object") {
-                if (_.startsWith(this.sql, "DELETE FROM ")) {
-                  affectedRows = result.getAffectedRowsSync();
-                } else {
-                  data = result.fetchAllSync();
-                  metadata = result.getColumnMetadataSync();
-                }
-                result.closeSync();
-              }
-              stmt.closeSync();
-              const datalen = data.length;
-              if (datalen > 0) {
-                const coltypes = {};
-                for (let i = 0; i < metadata.length; i++) {
-                  coltypes[metadata[i].SQL_DESC_NAME] = metadata[i].SQL_DESC_TYPE_NAME;
-                }
-                for (let i = 0; i < datalen; i++) {
-                  for (const column in data[i]) {
-                    const parse = parserStore.get(coltypes[column]);
-                    const value = data[i][column];
-                    if (value !== null) {
-                      if (parse) {
-                        data[i][column] = parse(value);
-                      } else if (coltypes[column] === "TIMESTAMP") {
-                        data[i][column] = new Date(moment.utc(value));
-                      } else if (coltypes[column] === "BLOB") {
-                        data[i][column] = new Buffer.from(value);
-                      } else if (coltypes[column].indexOf("FOR BIT DATA") > 0) {
-                        data[i][column] = new Buffer.from(value, "hex");
-                      }
-                    }
-                  }
-                }
-                if (outparams && outparams.length) {
-                  data.unshift(outparams);
-                }
-                resolve(this.formatResults(data, datalen, metadata, connection));
-              } else {
-                resolve(this.formatResults(data, affectedRows));
-              }
-            }
-          });
-        });
-      }
-    });
-  }
-  async run(sql, parameters) {
-    return await this._run(this.connection, sql, parameters);
-  }
-  static formatBindParameters(sql, values, dialect) {
-    let bindParam = {};
-    const replacementFunc = (match, key, values2) => {
-      if (values2[key] !== void 0) {
-        bindParam[key] = values2[key];
-        return "?";
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    if (Array.isArray(values) && typeof values[0] === "object") {
-      bindParam = values;
-    }
-    return [sql, bindParam];
-  }
-  filterSQLError(err, sql, connection) {
-    if (err.message.search("SQL0204N") != -1 && _.startsWith(sql, "DROP ")) {
-      err = null;
-    } else if (err.message.search("SQL0443N") != -1) {
-      if (this.isDropSchemaQuery()) {
-        connection.querySync("DROP TABLE ERRORSCHEMA.ERRORTABLE;");
-        connection.querySync(this.sql);
-      }
-      err = null;
-    } else if (err.message.search("SQL0601N") != -1) {
-      const match = err.message.match(/SQL0601N {2}The name of the object to be created is identical to the existing name "(.*)" of type "(.*)"./);
-      if (match && match.length > 1 && match[2] === "TABLE") {
-        let table;
-        const mtarray = match[1].split(".");
-        if (mtarray[1]) {
-          table = `"${mtarray[0]}"."${mtarray[1]}"`;
-        } else {
-          table = `"${mtarray[0]}"`;
-        }
-        if (connection.dropTable !== false) {
-          connection.querySync(`DROP TABLE ${table}`);
-          err = connection.querySync(sql);
-        } else {
-          err = null;
-        }
-      } else {
-        err = null;
-      }
-    } else if (err.message.search("SQL0911N") != -1) {
-      if (err.message.search('Reason code "2"') != -1) {
-        err = null;
-      }
-    } else if (err.message.search("SQL0605W") != -1) {
-      err = null;
-    } else if (err.message.search("SQL0668N") != -1 && _.startsWith(sql, "ALTER TABLE ")) {
-      connection.querySync(`CALL SYSPROC.ADMIN_CMD('REORG TABLE ${sql.substring(12).split(" ")[0]}')`);
-      err = connection.querySync(sql);
-    }
-    if (err && err.length === 0) {
-      err = null;
-    }
-    return err;
-  }
-  formatResults(data, rowCount, metadata, conn) {
-    let result = this.instance;
-    if (this.isInsertQuery(data, metadata)) {
-      this.handleInsertQuery(data, metadata);
-      if (!this.instance) {
-        if (this.options.plain) {
-          const record = data[0];
-          result = record[Object.keys(record)[0]];
-        } else {
-          result = data;
-        }
-      }
-    }
-    if (this.isShowTablesQuery()) {
-      result = data;
-    } else if (this.isDescribeQuery()) {
-      result = {};
-      for (const _result of data) {
-        if (_result.Default) {
-          _result.Default = _result.Default.replace("('", "").replace("')", "").replace(/'/g, "");
-        }
-        result[_result.Name] = {
-          type: _result.Type.toUpperCase(),
-          allowNull: _result.IsNull === "Y" ? true : false,
-          defaultValue: _result.Default,
-          primaryKey: _result.KeySeq > 0,
-          autoIncrement: _result.IsIdentity === "Y" ? true : false,
-          comment: _result.Comment
-        };
-      }
-    } else if (this.isShowIndexesQuery()) {
-      result = this.handleShowIndexesQuery(data);
-    } else if (this.isSelectQuery()) {
-      result = this.handleSelectQuery(data);
-    } else if (this.isUpsertQuery()) {
-      result = data;
-    } else if (this.isDropSchemaQuery()) {
-      result = data[0];
-      if (conn) {
-        const query = "DROP TABLE ERRORSCHEMA.ERRORTABLE";
-        conn.querySync(query);
-      }
-    } else if (this.isCallQuery()) {
-      result = data;
-    } else if (this.isBulkUpdateQuery()) {
-      result = data.length;
-    } else if (this.isBulkDeleteQuery()) {
-      result = rowCount;
-    } else if (this.isVersionQuery()) {
-      result = data[0].VERSION;
-    } else if (this.isForeignKeysQuery()) {
-      result = data;
-    } else if (this.isInsertQuery() || this.isUpdateQuery()) {
-      result = [result, rowCount];
-    } else if (this.isShowConstraintsQuery()) {
-      result = this.handleShowConstraintsQuery(data);
-    } else if (this.isRawQuery()) {
-      result = [data, metadata];
-    } else {
-      result = data;
-    }
-    return result;
-  }
-  handleShowTablesQuery(results) {
-    return results.map((resultSet) => {
-      return {
-        tableName: resultSet.TABLE_NAME,
-        schema: resultSet.TABLE_SCHEMA
-      };
-    });
-  }
-  handleShowConstraintsQuery(data) {
-    return _.remove(data, (constraint) => {
-      return !_.startsWith(constraint.constraintName, "SQL");
-    });
-  }
-  formatError(err, errStack, conn, parameters) {
-    let match;
-    if (!(err && err.message)) {
-      err["message"] = "No error message found.";
-    }
-    match = err.message.match(/SQL0803N {2}One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by "(\d)+" constrains table "(.*)\.(.*)" from having duplicate values for the index key./);
-    if (match && match.length > 0) {
-      let uniqueIndexName = "";
-      let uniqueKey = "";
-      const fields = {};
-      let message = err.message;
-      const query = `SELECT INDNAME FROM SYSCAT.INDEXES  WHERE IID = ${match[1]} AND TABSCHEMA = '${match[2]}' AND TABNAME = '${match[3]}'`;
-      if (!!conn && match.length > 3) {
-        uniqueIndexName = conn.querySync(query);
-        uniqueIndexName = uniqueIndexName[0]["INDNAME"];
-      }
-      if (this.model && !!uniqueIndexName) {
-        uniqueKey = this.model.uniqueKeys[uniqueIndexName];
-      }
-      if (!uniqueKey && this.options.fields) {
-        uniqueKey = this.options.fields[match[1] - 1];
-      }
-      if (uniqueKey) {
-        if (this.options.where && this.options.where[uniqueKey.column] !== void 0) {
-          fields[uniqueKey.column] = this.options.where[uniqueKey.column];
-        } else if (this.options.instance && this.options.instance.dataValues && this.options.instance.dataValues[uniqueKey.column]) {
-          fields[uniqueKey.column] = this.options.instance.dataValues[uniqueKey.column];
-        } else if (parameters) {
-          fields[uniqueKey.column] = parameters["0"];
-        }
-      }
-      if (uniqueKey && !!uniqueKey.msg) {
-        message = uniqueKey.msg;
-      }
-      const errors = [];
-      _.forOwn(fields, (value, field) => {
-        errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-      });
-      return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-    }
-    match = err.message.match(/SQL0532N {2}A parent row cannot be deleted because the relationship "(.*)" restricts the deletion/) || err.message.match(/SQL0530N/) || err.message.match(/SQL0531N/);
-    if (match && match.length > 0) {
-      return new sequelizeErrors.ForeignKeyConstraintError({
-        fields: null,
-        index: match[1],
-        parent: err,
-        stack: errStack
-      });
-    }
-    match = err.message.match(/SQL0204N {2}"(.*)" is an undefined name./);
-    if (match && match.length > 1) {
-      const constraint = match[1];
-      let table = err.sql.match(/table "(.+?)"/i);
-      table = table ? table[1] : void 0;
-      return new sequelizeErrors.UnknownConstraintError({
-        message: match[0],
-        constraint,
-        table,
-        parent: err,
-        stack: errStack
-      });
-    }
-    return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-  }
-  isDropSchemaQuery() {
-    let result = false;
-    if (_.startsWith(this.sql, "CALL SYSPROC.ADMIN_DROP_SCHEMA")) {
-      result = true;
-    }
-    return result;
-  }
-  isShowOrDescribeQuery() {
-    let result = false;
-    result = result || this.sql.toLowerCase().startsWith("select c.column_name as 'name', c.data_type as 'type', c.is_nullable as 'isnull'");
-    result = result || this.sql.toLowerCase().startsWith("select tablename = t.name, name = ind.name,");
-    result = result || this.sql.toLowerCase().startsWith("exec sys.sp_helpindex @objname");
-    return result;
-  }
-  isShowIndexesQuery() {
-    let result = false;
-    result = result || this.sql.toLowerCase().startsWith("exec sys.sp_helpindex @objname");
-    result = result || this.sql.startsWith('SELECT NAME AS "name", TBNAME AS "tableName", UNIQUERULE AS "keyType", COLNAMES, INDEXTYPE AS "type" FROM SYSIBM.SYSINDEXES');
-    return result;
-  }
-  handleShowIndexesQuery(data) {
-    let currItem;
-    const result = [];
-    data.forEach((item) => {
-      if (!currItem || currItem.name !== item.Key_name) {
-        currItem = {
-          primary: item.keyType === "P",
-          fields: [],
-          name: item.name,
-          tableName: item.tableName,
-          unique: item.keyType === "U",
-          type: item.type
-        };
-        _.forEach(item.COLNAMES.replace(/\+|-/g, (x) => {
-          return ` ${x}`;
-        }).split(" "), (column) => {
-          let columnName = column.trim();
-          if (columnName) {
-            columnName = columnName.replace(/\+|-/, "");
-            currItem.fields.push({
-              attribute: columnName,
-              length: void 0,
-              order: column.indexOf("-") === -1 ? "ASC" : "DESC",
-              collate: void 0
-            });
-          }
-        });
-        result.push(currItem);
-      }
-    });
-    return result;
-  }
-  handleInsertQuery(results, metaData) {
-    if (this.instance) {
-      const autoIncrementAttribute = this.model.autoIncrementAttribute;
-      let id = null;
-      let autoIncrementAttributeAlias = null;
-      if (Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementAttribute) && this.model.rawAttributes[autoIncrementAttribute].field !== void 0)
-        autoIncrementAttributeAlias = this.model.rawAttributes[autoIncrementAttribute].field;
-      id = id || results && results[0][this.getInsertIdField()];
-      id = id || metaData && metaData[this.getInsertIdField()];
-      id = id || results && results[0][autoIncrementAttribute];
-      id = id || autoIncrementAttributeAlias && results && results[0][autoIncrementAttributeAlias];
-      this.instance[autoIncrementAttribute] = id;
-    }
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/db2/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/db2/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/db2/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst util = require('util');\n\nconst AbstractQuery = require('../abstract/query');\nconst sequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('db2');\nconst _ = require('lodash');\nconst { logger } = require('../../utils/logger');\nconst moment = require('moment');\nconst debug = logger.debugContext('sql:db2');\n\nclass Query extends AbstractQuery {\n  getInsertIdField() {\n    return 'id';\n  }\n\n  getSQLTypeFromJsType(value) {\n    if (Buffer.isBuffer(value)) {\n      return { ParamType: 'INPUT', DataType: 'BLOB', Data: value };\n    }\n\n    if (typeof value === 'bigint') {\n      // The ibm_db module does not handle bigint, send as a string instead:\n      return value.toString();\n    }\n\n    return value;\n  }\n\n  async _run(connection, sql, parameters) {\n    this.sql = sql;\n    const benchmark = this.sequelize.options.benchmark || this.options.benchmark;\n    let queryBegin;\n    if (benchmark) {\n      queryBegin = Date.now();\n    } else {\n      this.sequelize.log(`Executing (${ this.connection.uuid || 'default' }): ${ this.sql}`, this.options);\n    }\n\n    const errStack = new Error().stack;\n\n    return new Promise((resolve, reject) => {\n      // TRANSACTION SUPPORT\n      if (_.startsWith(this.sql, 'BEGIN TRANSACTION')) {\n        connection.beginTransaction(err => {\n          if (err) {\n            reject(this.formatError(err, errStack));\n          } else {\n            resolve(this.formatResults());\n          }\n        });\n      } else if (_.startsWith(this.sql, 'COMMIT TRANSACTION')) {\n        connection.commitTransaction(err => {\n          if (err) {\n            reject(this.formatError(err, errStack));\n          } else {\n            resolve(this.formatResults());\n          }\n        });\n      } else if (_.startsWith(this.sql, 'ROLLBACK TRANSACTION')) {\n        connection.rollbackTransaction(err => {\n          if (err) {\n            reject(this.formatError(err, errStack));\n          } else {\n            resolve(this.formatResults());\n          }\n        });\n      } else if (_.startsWith(this.sql, 'SAVE TRANSACTION')) {\n        connection.commitTransaction(err => {\n          if (err) {\n            reject(this.formatError(err, errStack));\n          } else {\n            connection.beginTransaction(err => {\n              if (err) {\n                reject(this.formatError(err, errStack));\n              } else {\n                resolve(this.formatResults());\n              }\n            });\n          }\n        }, this.options.transaction.name);\n      } else {\n        const params = [];\n        if (parameters) {\n          _.forOwn(parameters, (value, key) => {\n            const param = this.getSQLTypeFromJsType(value, key);\n            params.push(param);\n          });\n        }\n        const SQL = this.sql.toUpperCase();\n        let newSql = this.sql;\n        if ((this.isSelectQuery() || _.startsWith(SQL, 'SELECT ')) &&\n            SQL.indexOf(' FROM ', 8) === -1 ) {\n          if (this.sql.charAt(this.sql.length - 1) === ';') {\n            newSql = this.sql.slice(0, this.sql.length - 1);\n          }\n          newSql += ' FROM SYSIBM.SYSDUMMY1;';\n        }\n\n        connection.prepare(newSql, (err, stmt) => {\n          if (err) {\n            reject(this.formatError(err, errStack));\n          }\n\n          stmt.execute(params, (err, result, outparams) => {\n            debug(`executed(${this.connection.uuid || 'default'}):${newSql} ${parameters ? util.inspect(parameters, { compact: true, breakLength: Infinity }) : ''}`);\n\n            if (benchmark) {\n              this.sequelize.log(`Executed (${this.connection.uuid || 'default'}): ${newSql} ${parameters ? util.inspect(parameters, { compact: true, breakLength: Infinity }) : ''}`, Date.now() - queryBegin, this.options);\n            }\n\n            if (err && err.message) {\n              err = this.filterSQLError(err, this.sql, connection);\n              if (err === null) {\n                stmt.closeSync();\n                resolve(this.formatResults([], 0));\n              }\n            }\n            if (err) {\n              err.sql = sql;\n              stmt.closeSync();\n              reject(this.formatError(err, errStack, connection, parameters));\n            } else {\n              let data = [];\n              let metadata = [];\n              let affectedRows = 0;\n              if (typeof result === 'object') {\n                if (_.startsWith(this.sql, 'DELETE FROM ')) {\n                  affectedRows = result.getAffectedRowsSync();\n                } else {\n                  data = result.fetchAllSync();\n                  metadata = result.getColumnMetadataSync();\n                }\n                result.closeSync();\n              }\n              stmt.closeSync();\n              const datalen = data.length;\n              if (datalen > 0) {\n                const coltypes = {};\n                for (let i = 0; i < metadata.length; i++) {\n                  coltypes[metadata[i].SQL_DESC_NAME] =\n                      metadata[i].SQL_DESC_TYPE_NAME;\n                }\n                for (let i = 0; i < datalen; i++) {\n                  for (const column in data[i]) {\n                    const parse = parserStore.get(coltypes[column]);\n                    const value = data[i][column];\n                    if (value !== null) {\n                      if (parse) {\n                        data[i][column] = parse(value);\n                      } else if (coltypes[column] === 'TIMESTAMP') {\n                        data[i][column] = new Date(moment.utc(value));\n                      } else if (coltypes[column] === 'BLOB') {\n                        data[i][column] = new Buffer.from(value);\n                      } else if (coltypes[column].indexOf('FOR BIT DATA') > 0) {\n                        data[i][column] = new Buffer.from(value, 'hex');\n                      }\n                    }\n                  }\n                }\n                if (outparams && outparams.length) {\n                  data.unshift(outparams);\n                }\n                resolve(this.formatResults(data, datalen, metadata, connection));\n              } else {\n                resolve(this.formatResults(data, affectedRows));\n              }\n            }\n          });\n        });\n      }\n    });\n  }\n\n  async run(sql, parameters) {\n    return await this._run(this.connection, sql, parameters);\n  }\n\n  static formatBindParameters(sql, values, dialect) {\n    let bindParam = {};\n    const replacementFunc = (match, key, values) => {\n      if (values[key] !== undefined) {\n        bindParam[key] = values[key];\n        return '?';\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n    if (Array.isArray(values) && typeof values[0] === 'object') {\n      bindParam = values;\n    }\n\n    return [sql, bindParam];\n  }\n\n  filterSQLError(err, sql, connection) {\n    if (err.message.search('SQL0204N') != -1 && _.startsWith(sql, 'DROP ')) {\n      err = null; // Ignore table not found error for drop table.\n    } else if (err.message.search('SQL0443N') != -1) {\n      if (this.isDropSchemaQuery()) {\n        // Delete ERRORSCHEMA.ERRORTABLE if it exist.\n        connection.querySync('DROP TABLE ERRORSCHEMA.ERRORTABLE;');\n        // Retry deleting the schema\n        connection.querySync(this.sql);\n      }\n      err = null; // Ignore drop schema error.\n    } else if (err.message.search('SQL0601N') != -1) {\n      const match = err.message.match(/SQL0601N {2}The name of the object to be created is identical to the existing name \"(.*)\" of type \"(.*)\"./);\n      if (match && match.length > 1 && match[2] === 'TABLE') {\n        let table;\n        const mtarray = match[1].split('.');\n        if (mtarray[1]) {\n          table = `\"${mtarray[0]}\".\"${mtarray[1]}\"`;\n        } else {\n          table = `\"${mtarray[0]}\"`;\n        }\n        if (connection.dropTable !== false) {\n          connection.querySync(`DROP TABLE ${table}`);\n          err = connection.querySync(sql);\n        }\n        else {\n          err = null;\n        }\n      } else {\n        err = null; // Ignore create schema error.\n      }\n    } else if (err.message.search('SQL0911N') != -1) {\n      if (err.message.search('Reason code \"2\"') != -1) {\n        err = null; // Ignore deadlock error due to program logic.\n      }\n    } else if (err.message.search('SQL0605W') != -1) {\n      err = null; // Ignore warning.\n    } else if (err.message.search('SQL0668N') != -1 &&\n      _.startsWith(sql, 'ALTER TABLE ')) {\n      connection.querySync(`CALL SYSPROC.ADMIN_CMD('REORG TABLE ${sql.substring(12).split(' ')[0]}')`);\n      err = connection.querySync(sql);\n    }\n    if (err && err.length === 0) { err = null; }\n    return err;\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   *\n   *\n   * Example:\n   *  query.formatResults([\n   *    {\n   *      id: 1,              // this is from the main table\n   *      attr2: 'snafu',     // this is from the main table\n   *      Tasks.id: 1,        // this is from the associated table\n   *      Tasks.title: 'task' // this is from the associated table\n   *    }\n   *  ])\n   *\n   * @param {Array} data - The result of the query execution.\n   * @param {Integer} rowCount - The number of affected rows.\n   * @param {Array} metadata - Metadata of the returned result set.\n   * @param {object} conn - The connection object.\n   * @private\n   */\n  formatResults(data, rowCount, metadata, conn) {\n    let result = this.instance;\n    if (this.isInsertQuery(data, metadata)) {\n      this.handleInsertQuery(data, metadata);\n\n      if (!this.instance) {\n        if (this.options.plain) {\n          const record = data[0];\n          result = record[Object.keys(record)[0]];\n        } else {\n          result = data;\n        }\n      }\n    }\n\n    if (this.isShowTablesQuery()) {\n      result = data;\n    } else if (this.isDescribeQuery()) {\n      result = {};\n      for (const _result of data) {\n        if (_result.Default) {\n          _result.Default = _result.Default.replace(\"('\", '').replace(\"')\", '').replace(/'/g, '');\n        }\n\n        result[_result.Name] = {\n          type: _result.Type.toUpperCase(),\n          allowNull: _result.IsNull === 'Y' ? true : false,\n          defaultValue: _result.Default,\n          primaryKey: _result.KeySeq > 0,\n          autoIncrement: _result.IsIdentity === 'Y' ? true : false,\n          comment: _result.Comment\n        };\n      }\n    } else if (this.isShowIndexesQuery()) {\n      result = this.handleShowIndexesQuery(data);\n    } else if (this.isSelectQuery()) {\n      result = this.handleSelectQuery(data);\n    } else if (this.isUpsertQuery()) {\n      result = data;\n    } else if (this.isDropSchemaQuery()) {\n      result = data[0];\n      if (conn) {\n        const query = 'DROP TABLE ERRORSCHEMA.ERRORTABLE';\n        conn.querySync(query);\n      }\n    } else if (this.isCallQuery()) {\n      result = data;\n    } else if (this.isBulkUpdateQuery()) {\n      result = data.length;\n    } else if (this.isBulkDeleteQuery()) {\n      result = rowCount;\n    } else if (this.isVersionQuery()) {\n      result = data[0].VERSION;\n    } else if (this.isForeignKeysQuery()) {\n      result = data;\n    } else if (this.isInsertQuery() || this.isUpdateQuery()) {\n      result = [result, rowCount];\n    } else if (this.isShowConstraintsQuery()) {\n      result = this.handleShowConstraintsQuery(data);\n    } else if (this.isRawQuery()) {\n      // Db2 returns row data and metadata (affected rows etc) in a single object - let's standarize it, sorta\n      result = [data, metadata];\n    } else {\n      result = data;\n    }\n\n    return result;\n  }\n\n  handleShowTablesQuery(results) {\n    return results.map(resultSet => {\n      return {\n        tableName: resultSet.TABLE_NAME,\n        schema: resultSet.TABLE_SCHEMA\n      };\n    });\n  }\n\n  handleShowConstraintsQuery(data) {\n    // Remove SQL Contraints from constraints list.\n    return _.remove(data, constraint => {\n      return !_.startsWith(constraint.constraintName, 'SQL');\n    });\n  }\n\n  formatError(err, errStack, conn, parameters) {\n    let match;\n\n    if (!(err && err.message)) {\n      err['message'] = 'No error message found.';\n    }\n\n    match = err.message.match(/SQL0803N {2}One or more values in the INSERT statement, UPDATE statement, or foreign key update caused by a DELETE statement are not valid because the primary key, unique constraint or unique index identified by \"(\\d)+\" constrains table \"(.*)\\.(.*)\" from having duplicate values for the index key./);\n    if (match && match.length > 0) {\n      let uniqueIndexName = '';\n      let uniqueKey = '';\n      const fields = {};\n      let message = err.message;\n      const query = `SELECT INDNAME FROM SYSCAT.INDEXES  WHERE IID = ${match[1]} AND TABSCHEMA = '${match[2]}' AND TABNAME = '${match[3]}'`;\n\n      if (!!conn && match.length > 3) {\n        uniqueIndexName = conn.querySync(query);\n        uniqueIndexName = uniqueIndexName[0]['INDNAME'];\n      }\n\n      if (this.model && !!uniqueIndexName) {\n        uniqueKey = this.model.uniqueKeys[uniqueIndexName];\n      }\n\n      if (!uniqueKey && this.options.fields) {\n        uniqueKey = this.options.fields[match[1] - 1];\n      }\n\n      if (uniqueKey) {\n        if (this.options.where &&\n          this.options.where[uniqueKey.column] !== undefined) {\n          fields[uniqueKey.column] = this.options.where[uniqueKey.column];\n        } else if (this.options.instance && this.options.instance.dataValues &&\n          this.options.instance.dataValues[uniqueKey.column]) {\n          fields[uniqueKey.column] = this.options.instance.dataValues[uniqueKey.column];\n        } else if (parameters) {\n          fields[uniqueKey.column] = parameters['0'];\n        }\n      }\n\n      if (uniqueKey && !!uniqueKey.msg) {\n        message = uniqueKey.msg;\n      }\n\n      const errors = [];\n      _.forOwn(fields, (value, field) => {\n        errors.push(new sequelizeErrors.ValidationErrorItem(\n          this.getUniqueConstraintErrorMessage(field),\n          'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n          field,\n          value,\n          this.instance,\n          'not_unique'\n        ));\n      });\n\n      return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n    }\n\n    match = err.message.match(/SQL0532N {2}A parent row cannot be deleted because the relationship \"(.*)\" restricts the deletion/) ||\n      err.message.match(/SQL0530N/) ||\n      err.message.match(/SQL0531N/);\n    if (match && match.length > 0) {\n      return new sequelizeErrors.ForeignKeyConstraintError({\n        fields: null,\n        index: match[1],\n        parent: err,\n        stack: errStack\n      });\n    }\n\n    match = err.message.match(/SQL0204N {2}\"(.*)\" is an undefined name./);\n    if (match && match.length > 1) {\n      const constraint = match[1];\n      let table = err.sql.match(/table \"(.+?)\"/i);\n      table = table ? table[1] : undefined;\n\n      return new sequelizeErrors.UnknownConstraintError({\n        message: match[0],\n        constraint,\n        table,\n        parent: err,\n        stack: errStack\n      });\n    }\n\n    return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n  }\n\n\n  isDropSchemaQuery() {\n    let result = false;\n\n    if (_.startsWith(this.sql, 'CALL SYSPROC.ADMIN_DROP_SCHEMA')) {\n      result = true;\n    }\n    return result;\n  }\n\n  isShowOrDescribeQuery() {\n    let result = false;\n\n    result = result || this.sql.toLowerCase().startsWith(\"select c.column_name as 'name', c.data_type as 'type', c.is_nullable as 'isnull'\");\n    result = result || this.sql.toLowerCase().startsWith('select tablename = t.name, name = ind.name,');\n    result = result || this.sql.toLowerCase().startsWith('exec sys.sp_helpindex @objname');\n\n    return result;\n  }\n  isShowIndexesQuery() {\n    let result = false;\n\n    result = result || this.sql.toLowerCase().startsWith('exec sys.sp_helpindex @objname');\n    result = result || this.sql.startsWith('SELECT NAME AS \"name\", TBNAME AS \"tableName\", UNIQUERULE AS \"keyType\", COLNAMES, INDEXTYPE AS \"type\" FROM SYSIBM.SYSINDEXES');\n    return result;\n  }\n\n  handleShowIndexesQuery(data) {\n    let currItem;\n    const result = [];\n    data.forEach(item => {\n      if (!currItem || currItem.name !== item.Key_name) {\n        currItem = {\n          primary: item.keyType === 'P',\n          fields: [],\n          name: item.name,\n          tableName: item.tableName,\n          unique: item.keyType === 'U',\n          type: item.type\n        };\n\n        _.forEach(item.COLNAMES.replace(/\\+|-/g, x => { return ` ${ x}`; }).split(' '), column => {\n          let columnName = column.trim();\n          if ( columnName ) {\n            columnName = columnName.replace(/\\+|-/, '');\n            currItem.fields.push({\n              attribute: columnName,\n              length: undefined,\n              order: column.indexOf('-') === -1 ? 'ASC' : 'DESC',\n              collate: undefined\n            });\n          }\n        });\n        result.push(currItem);\n      }\n    });\n    return result;\n  }\n\n  handleInsertQuery(results, metaData) {\n    if (this.instance) {\n      // add the inserted row id to the instance\n      const autoIncrementAttribute = this.model.autoIncrementAttribute;\n      let id = null;\n      let autoIncrementAttributeAlias = null;\n\n      if (Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementAttribute) &&\n          this.model.rawAttributes[autoIncrementAttribute].field !== undefined)\n        autoIncrementAttributeAlias = this.model.rawAttributes[autoIncrementAttribute].field;\n      id = id || results && results[0][this.getInsertIdField()];\n      id = id || metaData && metaData[this.getInsertIdField()];\n      id = id || results && results[0][autoIncrementAttribute];\n      id = id || autoIncrementAttributeAlias && results && results[0][autoIncrementAttributeAlias];\n      this.instance[autoIncrementAttribute] = id;\n    }\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,118 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const semver = require("semver");
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const SequelizeErrors = require("../../errors");
-const { logger } = require("../../utils/logger");
-const DataTypes = require("../../data-types").mariadb;
-const momentTz = require("moment-timezone");
-const debug = logger.debugContext("connection:mariadb");
-const parserStore = require("../parserStore")("mariadb");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 3306;
-    super(dialect, sequelize);
-    this.lib = this._loadDialectModule("mariadb");
-    this.refreshTypeParser(DataTypes);
-  }
-  static _typecast(field, next) {
-    if (parserStore.get(field.type)) {
-      return parserStore.get(field.type)(field, this.sequelize.options, next);
-    }
-    return next();
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  async connect(config) {
-    let tzOffset = this.sequelize.options.timezone;
-    tzOffset = /\//.test(tzOffset) ? momentTz.tz(tzOffset).format("Z") : tzOffset;
-    const connectionConfig = __spreadValues({
-      host: config.host,
-      port: config.port,
-      user: config.username,
-      password: config.password,
-      database: config.database,
-      timezone: tzOffset,
-      typeCast: ConnectionManager._typecast.bind(this),
-      bigNumberStrings: false,
-      supportBigNumbers: true,
-      foundRows: false
-    }, config.dialectOptions);
-    if (!this.sequelize.config.keepDefaultTimezone) {
-      if (connectionConfig.initSql) {
-        if (!Array.isArray(connectionConfig.initSql)) {
-          connectionConfig.initSql = [connectionConfig.initSql];
-        }
-        connectionConfig.initSql.push(`SET time_zone = '${tzOffset}'`);
-      } else {
-        connectionConfig.initSql = `SET time_zone = '${tzOffset}'`;
-      }
-    }
-    try {
-      const connection = await this.lib.createConnection(connectionConfig);
-      this.sequelize.options.databaseVersion = semver.coerce(connection.serverVersion()).version;
-      debug("connection acquired");
-      connection.on("error", (error) => {
-        switch (error.code) {
-          case "ESOCKET":
-          case "ECONNRESET":
-          case "EPIPE":
-          case "PROTOCOL_CONNECTION_LOST":
-            this.pool.destroy(connection);
-        }
-      });
-      return connection;
-    } catch (err) {
-      switch (err.code) {
-        case "ECONNREFUSED":
-          throw new SequelizeErrors.ConnectionRefusedError(err);
-        case "ER_ACCESS_DENIED_ERROR":
-        case "ER_ACCESS_DENIED_NO_PASSWORD_ERROR":
-          throw new SequelizeErrors.AccessDeniedError(err);
-        case "ENOTFOUND":
-          throw new SequelizeErrors.HostNotFoundError(err);
-        case "EHOSTUNREACH":
-        case "ENETUNREACH":
-        case "EADDRNOTAVAIL":
-          throw new SequelizeErrors.HostNotReachableError(err);
-        case "EINVAL":
-          throw new SequelizeErrors.InvalidConnectionError(err);
-        default:
-          throw new SequelizeErrors.ConnectionError(err);
-      }
-    }
-  }
-  async disconnect(connection) {
-    if (!connection.isValid()) {
-      debug("connection tried to disconnect but was already at CLOSED state");
-      return;
-    }
-    return await connection.end();
-  }
-  validate(connection) {
-    return connection && connection.isValid();
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mariadb/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst semver = require('semver');\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst SequelizeErrors = require('../../errors');\nconst { logger } = require('../../utils/logger');\nconst DataTypes = require('../../data-types').mariadb;\nconst momentTz = require('moment-timezone');\nconst debug = logger.debugContext('connection:mariadb');\nconst parserStore = require('../parserStore')('mariadb');\n\n/**\n * MariaDB Connection Manager\n *\n * Get connections, validate and disconnect them.\n * AbstractConnectionManager pooling use it to handle MariaDB specific connections\n * Use https://github.com/MariaDB/mariadb-connector-nodejs to connect with MariaDB server\n *\n * @private\n */\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 3306;\n    super(dialect, sequelize);\n    this.lib = this._loadDialectModule('mariadb');\n    this.refreshTypeParser(DataTypes);\n  }\n\n  static _typecast(field, next) {\n    if (parserStore.get(field.type)) {\n      return parserStore.get(field.type)(field, this.sequelize.options, next);\n    }\n    return next();\n  }\n\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  /**\n   * Connect with MariaDB database based on config, Handle any errors in connection\n   * Set the pool handlers on connection.error\n   * Also set proper timezone once connection is connected.\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  async connect(config) {\n    // Named timezone is not supported in mariadb, convert to offset\n    let tzOffset = this.sequelize.options.timezone;\n    tzOffset = /\\//.test(tzOffset) ? momentTz.tz(tzOffset).format('Z')\n      : tzOffset;\n\n    const connectionConfig = {\n      host: config.host,\n      port: config.port,\n      user: config.username,\n      password: config.password,\n      database: config.database,\n      timezone: tzOffset,\n      typeCast: ConnectionManager._typecast.bind(this),\n      bigNumberStrings: false,\n      supportBigNumbers: true,\n      foundRows: false,\n      ...config.dialectOptions\n    };\n\n    if (!this.sequelize.config.keepDefaultTimezone) {\n      // set timezone for this connection\n      if (connectionConfig.initSql) {\n        if (!Array.isArray(\n          connectionConfig.initSql)) {\n          connectionConfig.initSql = [connectionConfig.initSql];\n        }\n        connectionConfig.initSql.push(`SET time_zone = '${tzOffset}'`);\n      } else {\n        connectionConfig.initSql = `SET time_zone = '${tzOffset}'`;\n      }\n    }\n\n    try {\n      const connection = await this.lib.createConnection(connectionConfig);\n      this.sequelize.options.databaseVersion = semver.coerce(connection.serverVersion()).version;\n\n      debug('connection acquired');\n      connection.on('error', error => {\n        switch (error.code) {\n          case 'ESOCKET':\n          case 'ECONNRESET':\n          case 'EPIPE':\n          case 'PROTOCOL_CONNECTION_LOST':\n            this.pool.destroy(connection);\n        }\n      });\n      return connection;\n    } catch (err) {\n      switch (err.code) {\n        case 'ECONNREFUSED':\n          throw new SequelizeErrors.ConnectionRefusedError(err);\n        case 'ER_ACCESS_DENIED_ERROR':\n        case 'ER_ACCESS_DENIED_NO_PASSWORD_ERROR':\n          throw new SequelizeErrors.AccessDeniedError(err);\n        case 'ENOTFOUND':\n          throw new SequelizeErrors.HostNotFoundError(err);\n        case 'EHOSTUNREACH':\n        case 'ENETUNREACH':\n        case 'EADDRNOTAVAIL':\n          throw new SequelizeErrors.HostNotReachableError(err);\n        case 'EINVAL':\n          throw new SequelizeErrors.InvalidConnectionError(err);\n        default:\n          throw new SequelizeErrors.ConnectionError(err);\n      }\n    }\n  }\n\n  async disconnect(connection) {\n    // Don't disconnect connections with CLOSED state\n    if (!connection.isValid()) {\n      debug('connection tried to disconnect but was already at CLOSED state');\n      return;\n    }\n    return await connection.end();\n  }\n\n  validate(connection) {\n    return connection && connection.isValid();\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,SAAS,QAAQ;AACvB,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,WAAW,QAAQ;AACzB,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,cAAc,QAAQ,kBAAkB;AAW9C,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,cAAU,OAAO,OAAO,UAAU,OAAO,QAAQ;AACjD,UAAM,SAAS;AACf,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,SAGlB,UAAU,OAAO,MAAM;AAC5B,QAAI,YAAY,IAAI,MAAM,OAAO;AAC/B,aAAO,YAAY,IAAI,MAAM,MAAM,OAAO,KAAK,UAAU,SAAS;AAAA;AAEpE,WAAO;AAAA;AAAA,EAGT,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,QAYR,QAAQ,QAAQ;AAEpB,QAAI,WAAW,KAAK,UAAU,QAAQ;AACtC,eAAW,KAAK,KAAK,YAAY,SAAS,GAAG,UAAU,OAAO,OAC1D;AAEJ,UAAM,mBAAmB;AAAA,MACvB,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,UAAU;AAAA,MACV,UAAU,kBAAkB,UAAU,KAAK;AAAA,MAC3C,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,WAAW;AAAA,OACR,OAAO;AAGZ,QAAI,CAAC,KAAK,UAAU,OAAO,qBAAqB;AAE9C,UAAI,iBAAiB,SAAS;AAC5B,YAAI,CAAC,MAAM,QACT,iBAAiB,UAAU;AAC3B,2BAAiB,UAAU,CAAC,iBAAiB;AAAA;AAE/C,yBAAiB,QAAQ,KAAK,oBAAoB;AAAA,aAC7C;AACL,yBAAiB,UAAU,oBAAoB;AAAA;AAAA;AAInD,QAAI;AACF,YAAM,aAAa,MAAM,KAAK,IAAI,iBAAiB;AACnD,WAAK,UAAU,QAAQ,kBAAkB,OAAO,OAAO,WAAW,iBAAiB;AAEnF,YAAM;AACN,iBAAW,GAAG,SAAS,WAAS;AAC9B,gBAAQ,MAAM;AAAA,eACP;AAAA,eACA;AAAA,eACA;AAAA,eACA;AACH,iBAAK,KAAK,QAAQ;AAAA;AAAA;AAGxB,aAAO;AAAA,aACA,KAAP;AACA,cAAQ,IAAI;AAAA,aACL;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA,aAC9C;AAAA,aACA;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AAAA,aACA;AAAA,aACA;AACH,gBAAM,IAAI,gBAAgB,sBAAsB;AAAA,aAC7C;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA;AAEjD,gBAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAAA;AAAA;AAAA,QAK5C,WAAW,YAAY;AAE3B,QAAI,CAAC,WAAW,WAAW;AACzB,YAAM;AACN;AAAA;AAEF,WAAO,MAAM,WAAW;AAAA;AAAA,EAG1B,SAAS,YAAY;AACnB,WAAO,cAAc,WAAW;AAAA;AAAA;AAIpC,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,115 +1,0 @@
-"use strict";
-const wkx = require("wkx");
-const _ = require("lodash");
-const momentTz = require("moment-timezone");
-const moment = require("moment");
-module.exports = (BaseTypes) => {
-  BaseTypes.ABSTRACT.prototype.dialectTypes = "https://mariadb.com/kb/en/library/resultset/#field-types";
-  BaseTypes.DATE.types.mariadb = ["DATETIME"];
-  BaseTypes.STRING.types.mariadb = ["VAR_STRING"];
-  BaseTypes.CHAR.types.mariadb = ["STRING"];
-  BaseTypes.TEXT.types.mariadb = ["BLOB"];
-  BaseTypes.TINYINT.types.mariadb = ["TINY"];
-  BaseTypes.SMALLINT.types.mariadb = ["SHORT"];
-  BaseTypes.MEDIUMINT.types.mariadb = ["INT24"];
-  BaseTypes.INTEGER.types.mariadb = ["LONG"];
-  BaseTypes.BIGINT.types.mariadb = ["LONGLONG"];
-  BaseTypes.FLOAT.types.mariadb = ["FLOAT"];
-  BaseTypes.TIME.types.mariadb = ["TIME"];
-  BaseTypes.DATEONLY.types.mariadb = ["DATE"];
-  BaseTypes.BOOLEAN.types.mariadb = ["TINY"];
-  BaseTypes.BLOB.types.mariadb = ["TINYBLOB", "BLOB", "LONGBLOB"];
-  BaseTypes.DECIMAL.types.mariadb = ["NEWDECIMAL"];
-  BaseTypes.UUID.types.mariadb = false;
-  BaseTypes.ENUM.types.mariadb = false;
-  BaseTypes.REAL.types.mariadb = ["DOUBLE"];
-  BaseTypes.DOUBLE.types.mariadb = ["DOUBLE"];
-  BaseTypes.GEOMETRY.types.mariadb = ["GEOMETRY"];
-  BaseTypes.JSON.types.mariadb = ["JSON"];
-  class DECIMAL extends BaseTypes.DECIMAL {
-    toSql() {
-      let definition = super.toSql();
-      if (this._unsigned) {
-        definition += " UNSIGNED";
-      }
-      if (this._zerofill) {
-        definition += " ZEROFILL";
-      }
-      return definition;
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return this._length ? `DATETIME(${this._length})` : "DATETIME";
-    }
-    _stringify(date, options) {
-      if (!moment.isMoment(date)) {
-        date = this._applyTimezone(date, options);
-      }
-      return date.format("YYYY-MM-DD HH:mm:ss.SSS");
-    }
-    static parse(value, options) {
-      value = value.string();
-      if (value === null) {
-        return value;
-      }
-      if (momentTz.tz.zone(options.timezone)) {
-        value = momentTz.tz(value, options.timezone).toDate();
-      } else {
-        value = new Date(`${value} ${options.timezone}`);
-      }
-      return value;
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(value) {
-      return value.string();
-    }
-  }
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "CHAR(36) BINARY";
-    }
-  }
-  class GEOMETRY extends BaseTypes.GEOMETRY {
-    constructor(type, srid) {
-      super(type, srid);
-      if (_.isEmpty(this.type)) {
-        this.sqlType = this.key;
-      } else {
-        this.sqlType = this.type;
-      }
-    }
-    static parse(value) {
-      value = value.buffer();
-      if (!value || value.length === 0) {
-        return null;
-      }
-      value = value.slice(4);
-      return wkx.Geometry.parse(value).toGeoJSON({ shortCrs: true });
-    }
-    toSql() {
-      return this.sqlType;
-    }
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql(options) {
-      return `ENUM(${this.values.map((value) => options.escape(value)).join(", ")})`;
-    }
-  }
-  class JSONTYPE extends BaseTypes.JSON {
-    _stringify(value, options) {
-      return options.operation === "where" && typeof value === "string" ? value : JSON.stringify(value);
-    }
-  }
-  return {
-    ENUM,
-    DATE,
-    DATEONLY,
-    UUID,
-    GEOMETRY,
-    DECIMAL,
-    JSON: JSONTYPE
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mariadb/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst wkx = require('wkx');\nconst _ = require('lodash');\nconst momentTz = require('moment-timezone');\nconst moment = require('moment');\n\nmodule.exports = BaseTypes => {\n  BaseTypes.ABSTRACT.prototype.dialectTypes = 'https://mariadb.com/kb/en/library/resultset/#field-types';\n\n  /**\n   * types: [buffer_type, ...]\n   *\n   * @see documentation : https://mariadb.com/kb/en/library/resultset/#field-types\n   * @see connector implementation : https://github.com/MariaDB/mariadb-connector-nodejs/blob/master/lib/const/field-type.js\n   */\n\n  BaseTypes.DATE.types.mariadb = ['DATETIME'];\n  BaseTypes.STRING.types.mariadb = ['VAR_STRING'];\n  BaseTypes.CHAR.types.mariadb = ['STRING'];\n  BaseTypes.TEXT.types.mariadb = ['BLOB'];\n  BaseTypes.TINYINT.types.mariadb = ['TINY'];\n  BaseTypes.SMALLINT.types.mariadb = ['SHORT'];\n  BaseTypes.MEDIUMINT.types.mariadb = ['INT24'];\n  BaseTypes.INTEGER.types.mariadb = ['LONG'];\n  BaseTypes.BIGINT.types.mariadb = ['LONGLONG'];\n  BaseTypes.FLOAT.types.mariadb = ['FLOAT'];\n  BaseTypes.TIME.types.mariadb = ['TIME'];\n  BaseTypes.DATEONLY.types.mariadb = ['DATE'];\n  BaseTypes.BOOLEAN.types.mariadb = ['TINY'];\n  BaseTypes.BLOB.types.mariadb = ['TINYBLOB', 'BLOB', 'LONGBLOB'];\n  BaseTypes.DECIMAL.types.mariadb = ['NEWDECIMAL'];\n  BaseTypes.UUID.types.mariadb = false;\n  BaseTypes.ENUM.types.mariadb = false;\n  BaseTypes.REAL.types.mariadb = ['DOUBLE'];\n  BaseTypes.DOUBLE.types.mariadb = ['DOUBLE'];\n  BaseTypes.GEOMETRY.types.mariadb = ['GEOMETRY'];\n  BaseTypes.JSON.types.mariadb = ['JSON'];\n\n  class DECIMAL extends BaseTypes.DECIMAL {\n    toSql() {\n      let definition = super.toSql();\n      if (this._unsigned) {\n        definition += ' UNSIGNED';\n      }\n      if (this._zerofill) {\n        definition += ' ZEROFILL';\n      }\n      return definition;\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return this._length ? `DATETIME(${this._length})` : 'DATETIME';\n    }\n    _stringify(date, options) {\n      if (!moment.isMoment(date)) {\n        date = this._applyTimezone(date, options);\n      }\n\n      return date.format('YYYY-MM-DD HH:mm:ss.SSS');\n    }\n    static parse(value, options) {\n      value = value.string();\n      if (value === null) {\n        return value;\n      }\n      if (momentTz.tz.zone(options.timezone)) {\n        value = momentTz.tz(value, options.timezone).toDate();\n      }\n      else {\n        value = new Date(`${value} ${options.timezone}`);\n      }\n      return value;\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(value) {\n      return value.string();\n    }\n  }\n\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      return 'CHAR(36) BINARY';\n    }\n  }\n\n  class GEOMETRY extends BaseTypes.GEOMETRY {\n    constructor(type, srid) {\n      super(type, srid);\n      if (_.isEmpty(this.type)) {\n        this.sqlType = this.key;\n      }\n      else {\n        this.sqlType = this.type;\n      }\n    }\n    static parse(value) {\n      value = value.buffer();\n      // Empty buffer, MySQL doesn't support POINT EMPTY\n      // check, https://dev.mysql.com/worklog/task/?id=2381\n      if (!value || value.length === 0) {\n        return null;\n      }\n      // For some reason, discard the first 4 bytes\n      value = value.slice(4);\n      return wkx.Geometry.parse(value).toGeoJSON({ shortCrs: true });\n    }\n    toSql() {\n      return this.sqlType;\n    }\n  }\n\n  class ENUM extends BaseTypes.ENUM {\n    toSql(options) {\n      return `ENUM(${this.values.map(value => options.escape(value)).join(', ')})`;\n    }\n  }\n\n  class JSONTYPE extends BaseTypes.JSON {\n    _stringify(value, options) {\n      return options.operation === 'where' && typeof value === 'string' ? value\n        : JSON.stringify(value);\n    }\n  }\n\n  return {\n    ENUM,\n    DATE,\n    DATEONLY,\n    UUID,\n    GEOMETRY,\n    DECIMAL,\n    JSON: JSONTYPE\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const { MySQLQueryInterface } = require("../mysql/query-interface");
-const DataTypes = require("../../data-types").mariadb;
-class MariadbDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new MySQLQueryInterface(sequelize, this.queryGenerator);
-  }
-  canBackslashEscape() {
-    return true;
-  }
-}
-MariadbDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "VALUES ()": true,
-  "LIMIT ON UPDATE": true,
-  lock: true,
-  forShare: "LOCK IN SHARE MODE",
-  settingIsolationLevelDuringTransaction: false,
-  schemas: true,
-  inserts: {
-    ignoreDuplicates: " IGNORE",
-    updateOnDuplicate: " ON DUPLICATE KEY UPDATE"
-  },
-  index: {
-    collate: false,
-    length: true,
-    parser: true,
-    type: true,
-    using: 1
-  },
-  constraints: {
-    dropConstraint: false,
-    check: false
-  },
-  indexViaAlter: true,
-  indexHints: true,
-  NUMERIC: true,
-  GEOMETRY: true,
-  JSON: true,
-  REGEXP: true
-});
-MariadbDialect.prototype.defaultVersion = "10.1.44";
-MariadbDialect.prototype.Query = Query;
-MariadbDialect.prototype.QueryGenerator = QueryGenerator;
-MariadbDialect.prototype.DataTypes = DataTypes;
-MariadbDialect.prototype.name = "mariadb";
-MariadbDialect.prototype.TICK_CHAR = "`";
-MariadbDialect.prototype.TICK_CHAR_LEFT = MariadbDialect.prototype.TICK_CHAR;
-MariadbDialect.prototype.TICK_CHAR_RIGHT = MariadbDialect.prototype.TICK_CHAR;
-module.exports = MariadbDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mariadb/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst { MySQLQueryInterface } = require('../mysql/query-interface');\nconst DataTypes = require('../../data-types').mariadb;\n\nclass MariadbDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new MySQLQueryInterface(\n      sequelize,\n      this.queryGenerator\n    );\n  }\n\n  canBackslashEscape() {\n    return true;\n  }\n}\n\nMariadbDialect.prototype.supports = _.merge(\n  _.cloneDeep(AbstractDialect.prototype.supports),\n  {\n    'VALUES ()': true,\n    'LIMIT ON UPDATE': true,\n    lock: true,\n    forShare: 'LOCK IN SHARE MODE',\n    settingIsolationLevelDuringTransaction: false,\n    schemas: true,\n    inserts: {\n      ignoreDuplicates: ' IGNORE',\n      updateOnDuplicate: ' ON DUPLICATE KEY UPDATE'\n    },\n    index: {\n      collate: false,\n      length: true,\n      parser: true,\n      type: true,\n      using: 1\n    },\n    constraints: {\n      dropConstraint: false,\n      check: false\n    },\n    indexViaAlter: true,\n    indexHints: true,\n    NUMERIC: true,\n    GEOMETRY: true,\n    JSON: true,\n    REGEXP: true\n  }\n);\n\nMariadbDialect.prototype.defaultVersion = '10.1.44'; // minimum supported version\nMariadbDialect.prototype.Query = Query;\nMariadbDialect.prototype.QueryGenerator = QueryGenerator;\nMariadbDialect.prototype.DataTypes = DataTypes;\nMariadbDialect.prototype.name = 'mariadb';\nMariadbDialect.prototype.TICK_CHAR = '`';\nMariadbDialect.prototype.TICK_CHAR_LEFT = MariadbDialect.prototype.TICK_CHAR;\nMariadbDialect.prototype.TICK_CHAR_RIGHT = MariadbDialect.prototype.TICK_CHAR;\n\nmodule.exports = MariadbDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,EAAE,wBAAwB,QAAQ;AACxC,MAAM,YAAY,QAAQ,oBAAoB;AAE9C,6BAA6B,gBAAgB;AAAA,EAC3C,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,oBACxB,WACA,KAAK;AAAA;AAAA,EAIT,qBAAqB;AACnB,WAAO;AAAA;AAAA;AAIX,eAAe,UAAU,WAAW,EAAE,MACpC,EAAE,UAAU,gBAAgB,UAAU,WACtC;AAAA,EACE,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,wCAAwC;AAAA,EACxC,SAAS;AAAA,EACT,SAAS;AAAA,IACP,kBAAkB;AAAA,IAClB,mBAAmB;AAAA;AAAA,EAErB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,aAAa;AAAA,IACX,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA;AAIZ,eAAe,UAAU,iBAAiB;AAC1C,eAAe,UAAU,QAAQ;AACjC,eAAe,UAAU,iBAAiB;AAC1C,eAAe,UAAU,YAAY;AACrC,eAAe,UAAU,OAAO;AAChC,eAAe,UAAU,YAAY;AACrC,eAAe,UAAU,iBAAiB,eAAe,UAAU;AACnE,eAAe,UAAU,kBAAkB,eAAe,UAAU;AAEpE,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,69 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const MySQLQueryGenerator = require("../mysql/query-generator");
-const Utils = require("./../../utils");
-class MariaDBQueryGenerator extends MySQLQueryGenerator {
-  createSchema(schema, options) {
-    options = __spreadValues({
-      charset: null,
-      collate: null
-    }, options);
-    return Utils.joinSQLFragments([
-      "CREATE SCHEMA IF NOT EXISTS",
-      this.quoteIdentifier(schema),
-      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,
-      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,
-      ";"
-    ]);
-  }
-  dropSchema(schema) {
-    return `DROP SCHEMA IF EXISTS ${this.quoteIdentifier(schema)};`;
-  }
-  showSchemasQuery(options) {
-    const schemasToSkip = [
-      "'MYSQL'",
-      "'INFORMATION_SCHEMA'",
-      "'PERFORMANCE_SCHEMA'"
-    ];
-    if (options.skip && Array.isArray(options.skip) && options.skip.length > 0) {
-      for (const schemaName of options.skip) {
-        schemasToSkip.push(this.escape(schemaName));
-      }
-    }
-    return Utils.joinSQLFragments([
-      "SELECT SCHEMA_NAME as schema_name",
-      "FROM INFORMATION_SCHEMA.SCHEMATA",
-      `WHERE SCHEMA_NAME NOT IN (${schemasToSkip.join(", ")})`,
-      ";"
-    ]);
-  }
-  showTablesQuery(database) {
-    let query = "SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'";
-    if (database) {
-      query += ` AND TABLE_SCHEMA = ${this.escape(database)}`;
-    } else {
-      query += " AND TABLE_SCHEMA NOT IN ('MYSQL', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA')";
-    }
-    return `${query};`;
-  }
-  quoteIdentifier(identifier, force) {
-    return Utils.addTicks(Utils.removeTicks(identifier, "`"), "`");
-  }
-}
-module.exports = MariaDBQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mariadb/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst MySQLQueryGenerator = require('../mysql/query-generator');\nconst Utils = require('./../../utils');\n\nclass MariaDBQueryGenerator extends MySQLQueryGenerator {\n  createSchema(schema, options) {\n    options = {\n      charset: null,\n      collate: null,\n      ...options\n    };\n\n    return Utils.joinSQLFragments([\n      'CREATE SCHEMA IF NOT EXISTS',\n      this.quoteIdentifier(schema),\n      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,\n      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,\n      ';'\n    ]);\n  }\n\n  dropSchema(schema) {\n    return `DROP SCHEMA IF EXISTS ${this.quoteIdentifier(schema)};`;\n  }\n\n  showSchemasQuery(options) {\n    const schemasToSkip = [\n      '\\'MYSQL\\'',\n      '\\'INFORMATION_SCHEMA\\'',\n      '\\'PERFORMANCE_SCHEMA\\''\n    ];\n    if (options.skip && Array.isArray(options.skip) && options.skip.length > 0) {\n      for (const schemaName of options.skip) {\n        schemasToSkip.push(this.escape(schemaName));\n      }\n    }\n    return Utils.joinSQLFragments([\n      'SELECT SCHEMA_NAME as schema_name',\n      'FROM INFORMATION_SCHEMA.SCHEMATA',\n      `WHERE SCHEMA_NAME NOT IN (${schemasToSkip.join(', ')})`,\n      ';'\n    ]);\n  }\n\n  showTablesQuery(database) {\n    let query = 'SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = \\'BASE TABLE\\'';\n    if (database) {\n      query += ` AND TABLE_SCHEMA = ${this.escape(database)}`;\n    } else {\n      query += ' AND TABLE_SCHEMA NOT IN (\\'MYSQL\\', \\'INFORMATION_SCHEMA\\', \\'PERFORMANCE_SCHEMA\\')';\n    }\n    return `${query};`;\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return Utils.addTicks(Utils.removeTicks(identifier, '`'), '`');\n  }\n}\n\nmodule.exports = MariaDBQueryGenerator;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,sBAAsB,QAAQ;AACpC,MAAM,QAAQ,QAAQ;AAEtB,oCAAoC,oBAAoB;AAAA,EACtD,aAAa,QAAQ,SAAS;AAC5B,cAAU;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,OACN;AAGL,WAAO,MAAM,iBAAiB;AAAA,MAC5B;AAAA,MACA,KAAK,gBAAgB;AAAA,MACrB,QAAQ,WAAW,yBAAyB,KAAK,OAAO,QAAQ;AAAA,MAChE,QAAQ,WAAW,mBAAmB,KAAK,OAAO,QAAQ;AAAA,MAC1D;AAAA;AAAA;AAAA,EAIJ,WAAW,QAAQ;AACjB,WAAO,yBAAyB,KAAK,gBAAgB;AAAA;AAAA,EAGvD,iBAAiB,SAAS;AACxB,UAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA;AAEF,QAAI,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,SAAS,QAAQ,KAAK,SAAS,GAAG;AAC1E,iBAAW,cAAc,QAAQ,MAAM;AACrC,sBAAc,KAAK,KAAK,OAAO;AAAA;AAAA;AAGnC,WAAO,MAAM,iBAAiB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA,6BAA6B,cAAc,KAAK;AAAA,MAChD;AAAA;AAAA;AAAA,EAIJ,gBAAgB,UAAU;AACxB,QAAI,QAAQ;AACZ,QAAI,UAAU;AACZ,eAAS,uBAAuB,KAAK,OAAO;AAAA,WACvC;AACL,eAAS;AAAA;AAEX,WAAO,GAAG;AAAA;AAAA,EAWZ,gBAAgB,YAAY,OAAO;AACjC,WAAO,MAAM,SAAS,MAAM,YAAY,YAAY,MAAM;AAAA;AAAA;AAI9D,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,254 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const AbstractQuery = require("../abstract/query");
-const sequelizeErrors = require("../../errors");
-const _ = require("lodash");
-const DataTypes = require("../../data-types");
-const { logger } = require("../../utils/logger");
-const ER_DUP_ENTRY = 1062;
-const ER_DEADLOCK = 1213;
-const ER_ROW_IS_REFERENCED = 1451;
-const ER_NO_REFERENCED_ROW = 1452;
-const debug = logger.debugContext("sql:mariadb");
-class Query extends AbstractQuery {
-  constructor(connection, sequelize, options) {
-    super(connection, sequelize, __spreadValues({ showWarnings: false }, options));
-  }
-  static formatBindParameters(sql, values, dialect) {
-    const bindParam = [];
-    const replacementFunc = (match, key, values_) => {
-      if (values_[key] !== void 0) {
-        bindParam.push(values_[key]);
-        return "?";
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    return [sql, bindParam.length > 0 ? bindParam : void 0];
-  }
-  async run(sql, parameters) {
-    this.sql = sql;
-    const { connection, options } = this;
-    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;
-    const complete = this._logQuery(sql, debug, parameters);
-    if (parameters) {
-      debug("parameters(%j)", parameters);
-    }
-    let results;
-    const errForStack = new Error();
-    try {
-      results = await connection.query(this.sql, parameters);
-    } catch (error) {
-      if (options.transaction && error.errno === ER_DEADLOCK) {
-        try {
-          await options.transaction.rollback();
-        } catch (error_) {
-        }
-        options.transaction.finished = "rollback";
-      }
-      error.sql = sql;
-      error.parameters = parameters;
-      throw this.formatError(error, errForStack.stack);
-    } finally {
-      complete();
-    }
-    if (showWarnings && results && results.warningStatus > 0) {
-      await this.logWarnings(results);
-    }
-    return this.formatResults(results);
-  }
-  formatResults(data) {
-    let result = this.instance;
-    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {
-      return data.affectedRows;
-    }
-    if (this.isUpsertQuery()) {
-      return [result, data.affectedRows === 1];
-    }
-    if (this.isInsertQuery(data)) {
-      this.handleInsertQuery(data);
-      if (!this.instance) {
-        if (this.model && this.model.autoIncrementAttribute && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute && this.model.rawAttributes[this.model.primaryKeyAttribute]) {
-          const startId = data[this.getInsertIdField()];
-          result = new Array(data.affectedRows);
-          const pkField = this.model.rawAttributes[this.model.primaryKeyAttribute].field;
-          for (let i = 0; i < data.affectedRows; i++) {
-            result[i] = { [pkField]: startId + i };
-          }
-          return [result, data.affectedRows];
-        }
-        return [data[this.getInsertIdField()], data.affectedRows];
-      }
-    }
-    if (this.isSelectQuery()) {
-      this.handleJsonSelectQuery(data);
-      return this.handleSelectQuery(data);
-    }
-    if (this.isInsertQuery() || this.isUpdateQuery()) {
-      return [result, data.affectedRows];
-    }
-    if (this.isCallQuery()) {
-      return data[0];
-    }
-    if (this.isRawQuery()) {
-      const meta = data.meta;
-      delete data.meta;
-      return [data, meta];
-    }
-    if (this.isShowIndexesQuery()) {
-      return this.handleShowIndexesQuery(data);
-    }
-    if (this.isForeignKeysQuery() || this.isShowConstraintsQuery()) {
-      return data;
-    }
-    if (this.isShowTablesQuery()) {
-      return this.handleShowTablesQuery(data);
-    }
-    if (this.isDescribeQuery()) {
-      result = {};
-      for (const _result of data) {
-        result[_result.Field] = {
-          type: _result.Type.toLowerCase().startsWith("enum") ? _result.Type.replace(/^enum/i, "ENUM") : _result.Type.toUpperCase(),
-          allowNull: _result.Null === "YES",
-          defaultValue: _result.Default,
-          primaryKey: _result.Key === "PRI",
-          autoIncrement: Object.prototype.hasOwnProperty.call(_result, "Extra") && _result.Extra.toLowerCase() === "auto_increment",
-          comment: _result.Comment ? _result.Comment : null
-        };
-      }
-      return result;
-    }
-    if (this.isVersionQuery()) {
-      return data[0].version;
-    }
-    return result;
-  }
-  handleJsonSelectQuery(rows) {
-    if (!this.model || !this.model.fieldRawAttributesMap) {
-      return;
-    }
-    for (const _field of Object.keys(this.model.fieldRawAttributesMap)) {
-      const modelField = this.model.fieldRawAttributesMap[_field];
-      if (modelField.type instanceof DataTypes.JSON) {
-        rows = rows.map((row) => {
-          if (row[modelField.fieldName] && typeof row[modelField.fieldName] === "string" && !this.connection.info.hasMinVersion(10, 5, 2)) {
-            row[modelField.fieldName] = JSON.parse(row[modelField.fieldName]);
-          }
-          if (DataTypes.JSON.parse) {
-            return DataTypes.JSON.parse(modelField, this.sequelize.options, row[modelField.fieldName]);
-          }
-          return row;
-        });
-      }
-    }
-  }
-  async logWarnings(results) {
-    const warningResults = await this.run("SHOW WARNINGS");
-    const warningMessage = `MariaDB Warnings (${this.connection.uuid || "default"}): `;
-    const messages = [];
-    for (const _warningRow of warningResults) {
-      if (_warningRow === void 0 || typeof _warningRow[Symbol.iterator] !== "function") {
-        continue;
-      }
-      for (const _warningResult of _warningRow) {
-        if (Object.prototype.hasOwnProperty.call(_warningResult, "Message")) {
-          messages.push(_warningResult.Message);
-        } else {
-          for (const _objectKey of _warningResult.keys()) {
-            messages.push([_objectKey, _warningResult[_objectKey]].join(": "));
-          }
-        }
-      }
-    }
-    this.sequelize.log(warningMessage + messages.join("; "), this.options);
-    return results;
-  }
-  formatError(err, errStack) {
-    switch (err.errno) {
-      case ER_DUP_ENTRY: {
-        const match = err.message.match(/Duplicate entry '([\s\S]*)' for key '?((.|\s)*?)'?\s.*$/);
-        let fields = {};
-        let message = "Validation error";
-        const values = match ? match[1].split("-") : void 0;
-        const fieldKey = match ? match[2] : void 0;
-        const fieldVal = match ? match[1] : void 0;
-        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];
-        if (uniqueKey) {
-          if (uniqueKey.msg)
-            message = uniqueKey.msg;
-          fields = _.zipObject(uniqueKey.fields, values);
-        } else {
-          fields[fieldKey] = fieldVal;
-        }
-        const errors = [];
-        _.forOwn(fields, (value, field) => {
-          errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-        });
-        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-      }
-      case ER_ROW_IS_REFERENCED:
-      case ER_NO_REFERENCED_ROW: {
-        const match = err.message.match(/CONSTRAINT ([`"])(.*)\1 FOREIGN KEY \(\1(.*)\1\) REFERENCES \1(.*)\1 \(\1(.*)\1\)/);
-        const quoteChar = match ? match[1] : "`";
-        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : void 0;
-        return new sequelizeErrors.ForeignKeyConstraintError({
-          reltype: err.errno === ER_ROW_IS_REFERENCED ? "parent" : "child",
-          table: match ? match[4] : void 0,
-          fields,
-          value: fields && fields.length && this.instance && this.instance[fields[0]] || void 0,
-          index: match ? match[2] : void 0,
-          parent: err,
-          stack: errStack
-        });
-      }
-      default:
-        return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-    }
-  }
-  handleShowTablesQuery(results) {
-    return results.map((resultSet) => ({
-      tableName: resultSet.TABLE_NAME,
-      schema: resultSet.TABLE_SCHEMA
-    }));
-  }
-  handleShowIndexesQuery(data) {
-    let currItem;
-    const result = [];
-    data.forEach((item) => {
-      if (!currItem || currItem.name !== item.Key_name) {
-        currItem = {
-          primary: item.Key_name === "PRIMARY",
-          fields: [],
-          name: item.Key_name,
-          tableName: item.Table,
-          unique: item.Non_unique !== 1,
-          type: item.Index_type
-        };
-        result.push(currItem);
-      }
-      currItem.fields[item.Seq_in_index - 1] = {
-        attribute: item.Column_name,
-        length: item.Sub_part || void 0,
-        order: item.Collation === "A" ? "ASC" : void 0
-      };
-    });
-    return result;
-  }
-}
-module.exports = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mariadb/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mariadb/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mariadb/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst sequelizeErrors = require('../../errors');\nconst _ = require('lodash');\nconst DataTypes = require('../../data-types');\nconst { logger } = require('../../utils/logger');\n\nconst ER_DUP_ENTRY = 1062;\nconst ER_DEADLOCK = 1213;\nconst ER_ROW_IS_REFERENCED = 1451;\nconst ER_NO_REFERENCED_ROW = 1452;\n\nconst debug = logger.debugContext('sql:mariadb');\n\nclass Query extends AbstractQuery {\n  constructor(connection, sequelize, options) {\n    super(connection, sequelize, { showWarnings: false, ...options });\n  }\n\n  static formatBindParameters(sql, values, dialect) {\n    const bindParam = [];\n    const replacementFunc = (match, key, values_) => {\n      if (values_[key] !== undefined) {\n        bindParam.push(values_[key]);\n        return '?';\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n    return [sql, bindParam.length > 0 ? bindParam : undefined];\n  }\n\n  async run(sql, parameters) {\n    this.sql = sql;\n    const { connection, options } = this;\n\n    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;\n\n    const complete = this._logQuery(sql, debug, parameters);\n\n    if (parameters) {\n      debug('parameters(%j)', parameters);\n    }\n\n    let results;\n    const errForStack = new Error();\n\n    try {\n      results = await connection.query(this.sql, parameters);\n    } catch (error) {\n      if (options.transaction && error.errno === ER_DEADLOCK) {\n        // MariaDB automatically rolls-back transactions in the event of a deadlock.\n        // However, we still initiate a manual rollback to ensure the connection gets released - see #13102.\n        try {\n          await options.transaction.rollback();\n        } catch (error_) {\n          // Ignore errors - since MariaDB automatically rolled back, we're\n          // not that worried about this redundant rollback failing.\n        }\n\n        options.transaction.finished = 'rollback';\n      }\n\n      error.sql = sql;\n      error.parameters = parameters;\n      throw this.formatError(error, errForStack.stack);\n    } finally {\n      complete();\n    }\n\n    if (showWarnings && results && results.warningStatus > 0) {\n      await this.logWarnings(results);\n    }\n    return this.formatResults(results);\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   *\n   *\n   * Example:\n   *  query.formatResults([\n   *    {\n   *      id: 1,              // this is from the main table\n   *      attr2: 'snafu',     // this is from the main table\n   *      Tasks.id: 1,        // this is from the associated table\n   *      Tasks.title: 'task' // this is from the associated table\n   *    }\n   *  ])\n   *\n   * @param {Array} data - The result of the query execution.\n   * @private\n   */\n  formatResults(data) {\n    let result = this.instance;\n\n    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {\n      return data.affectedRows;\n    }\n    if (this.isUpsertQuery()) {\n      return [result, data.affectedRows === 1];\n    }\n    if (this.isInsertQuery(data)) {\n      this.handleInsertQuery(data);\n\n      if (!this.instance) {\n        // handle bulkCreate AI primary key\n        if (\n          this.model\n          && this.model.autoIncrementAttribute\n          && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute\n          && this.model.rawAttributes[this.model.primaryKeyAttribute]\n        ) {\n          // ONLY TRUE IF @auto_increment_increment is set to 1 !!\n          // Doesn't work with GALERA => each node will reserve increment (x for first server, x+1 for next node...)\n          const startId = data[this.getInsertIdField()];\n          result = new Array(data.affectedRows);\n          const pkField = this.model.rawAttributes[this.model.primaryKeyAttribute].field;\n          for (let i = 0; i < data.affectedRows; i++) {\n            result[i] = { [pkField]: startId + i };\n          }\n          return [result, data.affectedRows];\n        }\n\n        return [data[this.getInsertIdField()], data.affectedRows];\n      }\n    }\n\n    if (this.isSelectQuery()) {\n      this.handleJsonSelectQuery(data);\n\n      return this.handleSelectQuery(data);\n    }\n    if (this.isInsertQuery() || this.isUpdateQuery()) {\n      return [result, data.affectedRows];\n    }\n    if (this.isCallQuery()) {\n      return data[0];\n    }\n    if (this.isRawQuery()) {\n      const meta = data.meta;\n      delete data.meta;\n      return [data, meta];\n    }\n    if (this.isShowIndexesQuery()) {\n      return this.handleShowIndexesQuery(data);\n    }\n    if (this.isForeignKeysQuery() || this.isShowConstraintsQuery()) {\n      return data;\n    }\n    if (this.isShowTablesQuery()) {\n      return this.handleShowTablesQuery(data);\n    }\n    if (this.isDescribeQuery()) {\n      result = {};\n\n      for (const _result of data) {\n        result[_result.Field] = {\n          type: _result.Type.toLowerCase().startsWith('enum') ? _result.Type.replace(/^enum/i,\n            'ENUM') : _result.Type.toUpperCase(),\n          allowNull: _result.Null === 'YES',\n          defaultValue: _result.Default,\n          primaryKey: _result.Key === 'PRI',\n          autoIncrement: Object.prototype.hasOwnProperty.call(_result, 'Extra')\n            && _result.Extra.toLowerCase() === 'auto_increment',\n          comment: _result.Comment ? _result.Comment : null\n        };\n      }\n      return result;\n    }\n    if (this.isVersionQuery()) {\n      return data[0].version;\n    }\n\n    return result;\n  }\n\n  handleJsonSelectQuery(rows) {\n    if (!this.model || !this.model.fieldRawAttributesMap) {\n      return;\n    }\n    for (const _field of Object.keys(this.model.fieldRawAttributesMap)) {\n      const modelField = this.model.fieldRawAttributesMap[_field];\n      if (modelField.type instanceof DataTypes.JSON) {\n        // Value is returned as String, not JSON\n        rows = rows.map(row => {\n          // JSON fields for MariaDB server 10.5.2+ already results in JSON format, skip JSON.parse\n          // this is due to this https://jira.mariadb.org/browse/MDEV-17832 and how mysql2 connector interacts with MariaDB and JSON fields\n          if (row[modelField.fieldName] && typeof row[modelField.fieldName] === 'string' && !this.connection.info.hasMinVersion(10, 5, 2)) {\n            row[modelField.fieldName] = JSON.parse(row[modelField.fieldName]);\n          }\n          if (DataTypes.JSON.parse) {\n            return DataTypes.JSON.parse(modelField, this.sequelize.options,\n              row[modelField.fieldName]);\n          }\n          return row;\n        });\n      }\n    }\n  }\n\n  async logWarnings(results) {\n    const warningResults = await this.run('SHOW WARNINGS');\n    const warningMessage = `MariaDB Warnings (${this.connection.uuid || 'default'}): `;\n    const messages = [];\n    for (const _warningRow of warningResults) {\n      if (_warningRow === undefined || typeof _warningRow[Symbol.iterator] !== 'function') {\n        continue;\n      }\n      for (const _warningResult of _warningRow) {\n        if (Object.prototype.hasOwnProperty.call(_warningResult, 'Message')) {\n          messages.push(_warningResult.Message);\n        } else {\n          for (const _objectKey of _warningResult.keys()) {\n            messages.push([_objectKey, _warningResult[_objectKey]].join(': '));\n          }\n        }\n      }\n    }\n\n    this.sequelize.log(warningMessage + messages.join('; '), this.options);\n\n    return results;\n  }\n\n  formatError(err, errStack) {\n    switch (err.errno) {\n      case ER_DUP_ENTRY: {\n        const match = err.message.match(\n          /Duplicate entry '([\\s\\S]*)' for key '?((.|\\s)*?)'?\\s.*$/);\n\n        let fields = {};\n        let message = 'Validation error';\n        const values = match ? match[1].split('-') : undefined;\n        const fieldKey = match ? match[2] : undefined;\n        const fieldVal = match ? match[1] : undefined;\n        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];\n\n        if (uniqueKey) {\n          if (uniqueKey.msg) message = uniqueKey.msg;\n          fields = _.zipObject(uniqueKey.fields, values);\n        } else {\n          fields[fieldKey] = fieldVal;\n        }\n\n        const errors = [];\n        _.forOwn(fields, (value, field) => {\n          errors.push(new sequelizeErrors.ValidationErrorItem(\n            this.getUniqueConstraintErrorMessage(field),\n            'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n            field,\n            value,\n            this.instance,\n            'not_unique'\n          ));\n        });\n\n        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n      }\n\n      case ER_ROW_IS_REFERENCED:\n      case ER_NO_REFERENCED_ROW: {\n        // e.g. CONSTRAINT `example_constraint_name` FOREIGN KEY (`example_id`) REFERENCES `examples` (`id`)\n        const match = err.message.match(\n          /CONSTRAINT ([`\"])(.*)\\1 FOREIGN KEY \\(\\1(.*)\\1\\) REFERENCES \\1(.*)\\1 \\(\\1(.*)\\1\\)/\n        );\n        const quoteChar = match ? match[1] : '`';\n        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : undefined;\n\n        return new sequelizeErrors.ForeignKeyConstraintError({\n          reltype: err.errno === ER_ROW_IS_REFERENCED ? 'parent' : 'child',\n          table: match ? match[4] : undefined,\n          fields,\n          value: fields && fields.length && this.instance && this.instance[fields[0]] || undefined,\n          index: match ? match[2] : undefined,\n          parent: err,\n          stack: errStack\n        });\n      }\n\n      default:\n        return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n    }\n  }\n\n  handleShowTablesQuery(results) {\n    return results.map(resultSet => ({\n      tableName: resultSet.TABLE_NAME,\n      schema: resultSet.TABLE_SCHEMA\n    }));\n  }\n\n  handleShowIndexesQuery(data) {\n\n    let currItem;\n    const result = [];\n\n    data.forEach(item => {\n      if (!currItem || currItem.name !== item.Key_name) {\n        currItem = {\n          primary: item.Key_name === 'PRIMARY',\n          fields: [],\n          name: item.Key_name,\n          tableName: item.Table,\n          unique: item.Non_unique !== 1,\n          type: item.Index_type\n        };\n        result.push(currItem);\n      }\n\n      currItem.fields[item.Seq_in_index - 1] = {\n        attribute: item.Column_name,\n        length: item.Sub_part || undefined,\n        order: item.Collation === 'A' ? 'ASC' : undefined\n      };\n    });\n\n    return result;\n  }\n}\n\nmodule.exports = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/async-queue.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/async-queue.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  AsyncQueueError: () => AsyncQueueError,
-  default: () => async_queue_default
-});
-var import_base_error = __toModule(require("../../errors/base-error"));
-var import_connection_error = __toModule(require("../../errors/connection-error"));
-class AsyncQueueError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeAsyncQueueError";
-  }
-}
-class AsyncQueue {
-  constructor() {
-    __publicField(this, "previous");
-    __publicField(this, "closed");
-    __publicField(this, "rejectCurrent");
-    this.previous = Promise.resolve();
-    this.closed = false;
-    this.rejectCurrent = () => {
-    };
-  }
-  close() {
-    this.closed = true;
-    this.rejectCurrent(new import_connection_error.default(new AsyncQueueError("the connection was closed before this query could finish executing")));
-  }
-  enqueue(asyncFunction) {
-    return new Promise((resolve, reject) => {
-      this.previous = this.previous.then(() => {
-        this.rejectCurrent = reject;
-        if (this.closed) {
-          return reject(new import_connection_error.default(new AsyncQueueError("the connection was closed before this query could be executed")));
-        }
-        return asyncFunction().then(resolve, reject);
-      });
-    });
-  }
-}
-var async_queue_default = AsyncQueue;
-//# sourceMappingURL=async-queue.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/async-queue.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/async-queue.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/async-queue.ts"],
-  "sourcesContent": ["import BaseError from '../../errors/base-error';\nimport ConnectionError from '../../errors/connection-error';\n\n/**\n * Thrown when a connection to a database is closed while an operation is in progress\n */\nexport class AsyncQueueError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeAsyncQueueError';\n  }\n}\n\nclass AsyncQueue {\n  previous: Promise<unknown>;\n  closed: boolean;\n  rejectCurrent: (reason?: any) => void;\n\n  constructor() {\n    this.previous = Promise.resolve();\n    this.closed = false;\n    this.rejectCurrent = () => {\n      /** do nothing */\n    };\n  }\n\n  close() {\n    this.closed = true;\n    this.rejectCurrent(\n      new ConnectionError(\n        new AsyncQueueError(\n          'the connection was closed before this query could finish executing'\n        )\n      )\n    );\n  }\n\n  enqueue(asyncFunction: (...args: any[]) => Promise<unknown>) {\n    // This outer promise might seems superflous since down below we return asyncFunction().then(resolve, reject).\n    // However, this ensures that this.previous will never be a rejected promise so the queue will\n    // always keep going, while still communicating rejection from asyncFunction to the user.\n    return new Promise((resolve, reject) => {\n      this.previous = this.previous.then(() => {\n        this.rejectCurrent = reject;\n        if (this.closed) {\n          return reject(\n            new ConnectionError(\n              new AsyncQueueError(\n                'the connection was closed before this query could be executed'\n              )\n            )\n          );\n        }\n        return asyncFunction().then(resolve, reject);\n      });\n    });\n  }\n}\n\nexport default AsyncQueue;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAsB;AACtB,8BAA4B;AAKrB,8BAA8B,0BAAU;AAAA,EAC7C,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,iBAAiB;AAAA,EAKf,cAAc;AAJd;AACA;AACA;AAGE,SAAK,WAAW,QAAQ;AACxB,SAAK,SAAS;AACd,SAAK,gBAAgB,MAAM;AAAA;AAAA;AAAA,EAK7B,QAAQ;AACN,SAAK,SAAS;AACd,SAAK,cACH,IAAI,gCACF,IAAI,gBACF;AAAA;AAAA,EAMR,QAAQ,eAAqD;AAI3D,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,WAAK,WAAW,KAAK,SAAS,KAAK,MAAM;AACvC,aAAK,gBAAgB;AACrB,YAAI,KAAK,QAAQ;AACf,iBAAO,OACL,IAAI,gCACF,IAAI,gBACF;AAAA;AAKR,eAAO,gBAAgB,KAAK,SAAS;AAAA;AAAA;AAAA;AAAA;AAM7C,IAAO,sBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,141 +1,0 @@
-"use strict";
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const AsyncQueue = require("./async-queue").default;
-const { logger } = require("../../utils/logger");
-const sequelizeErrors = require("../../errors");
-const DataTypes = require("../../data-types").mssql;
-const parserStore = require("../parserStore")("mssql");
-const debug = logger.debugContext("connection:mssql");
-const debugTedious = logger.debugContext("connection:mssql:tedious");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 1433;
-    super(dialect, sequelize);
-    this.lib = this._loadDialectModule("tedious");
-    this.refreshTypeParser(DataTypes);
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  async connect(config) {
-    const connectionConfig = {
-      server: config.host,
-      authentication: {
-        type: "default",
-        options: {
-          userName: config.username || void 0,
-          password: config.password || void 0
-        }
-      },
-      options: {
-        port: parseInt(config.port, 10),
-        database: config.database,
-        trustServerCertificate: true
-      }
-    };
-    if (config.dialectOptions) {
-      if (config.dialectOptions.options && config.dialectOptions.options.instanceName) {
-        delete connectionConfig.options.port;
-      }
-      if (config.dialectOptions.authentication) {
-        Object.assign(connectionConfig.authentication, config.dialectOptions.authentication);
-      }
-      Object.assign(connectionConfig.options, config.dialectOptions.options);
-    }
-    try {
-      return await new Promise((resolve, reject) => {
-        const connection = new this.lib.Connection(connectionConfig);
-        if (connection.state === connection.STATE.INITIALIZED) {
-          connection.connect();
-        }
-        connection.queue = new AsyncQueue();
-        connection.lib = this.lib;
-        const connectHandler = (error) => {
-          connection.removeListener("end", endHandler);
-          connection.removeListener("error", errorHandler);
-          if (error)
-            return reject(error);
-          debug("connection acquired");
-          resolve(connection);
-        };
-        const endHandler = () => {
-          connection.removeListener("connect", connectHandler);
-          connection.removeListener("error", errorHandler);
-          reject(new Error("Connection was closed by remote server"));
-        };
-        const errorHandler = (error) => {
-          connection.removeListener("connect", connectHandler);
-          connection.removeListener("end", endHandler);
-          reject(error);
-        };
-        connection.once("error", errorHandler);
-        connection.once("end", endHandler);
-        connection.once("connect", connectHandler);
-        connection.on("error", (error) => {
-          switch (error.code) {
-            case "ESOCKET":
-            case "ECONNRESET":
-              this.pool.destroy(connection);
-          }
-        });
-        if (config.dialectOptions && config.dialectOptions.debug) {
-          connection.on("debug", debugTedious.log.bind(debugTedious));
-        }
-      });
-    } catch (error) {
-      if (!error.code) {
-        throw new sequelizeErrors.ConnectionError(error);
-      }
-      switch (error.code) {
-        case "ESOCKET":
-          if (error.message.includes("connect EHOSTUNREACH")) {
-            throw new sequelizeErrors.HostNotReachableError(error);
-          }
-          if (error.message.includes("connect ENETUNREACH")) {
-            throw new sequelizeErrors.HostNotReachableError(error);
-          }
-          if (error.message.includes("connect EADDRNOTAVAIL")) {
-            throw new sequelizeErrors.HostNotReachableError(error);
-          }
-          if (error.message.includes("connect EAFNOSUPPORT")) {
-            throw new sequelizeErrors.HostNotReachableError(error);
-          }
-          if (error.message.includes("getaddrinfo ENOTFOUND")) {
-            throw new sequelizeErrors.HostNotFoundError(error);
-          }
-          if (error.message.includes("connect ECONNREFUSED")) {
-            throw new sequelizeErrors.ConnectionRefusedError(error);
-          }
-          throw new sequelizeErrors.ConnectionError(error);
-        case "ER_ACCESS_DENIED_ERROR":
-        case "ELOGIN":
-          throw new sequelizeErrors.AccessDeniedError(error);
-        case "EINVAL":
-          throw new sequelizeErrors.InvalidConnectionError(error);
-        default:
-          throw new sequelizeErrors.ConnectionError(error);
-      }
-    }
-  }
-  async disconnect(connection) {
-    if (connection.closed) {
-      return;
-    }
-    connection.queue.close();
-    return new Promise((resolve) => {
-      connection.on("end", resolve);
-      connection.close();
-      debug("connection closed");
-    });
-  }
-  validate(connection) {
-    return connection && (connection.loggedIn || connection.state.name === "LoggedIn");
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst AsyncQueue = require('./async-queue').default;\nconst { logger } = require('../../utils/logger');\nconst sequelizeErrors = require('../../errors');\nconst DataTypes = require('../../data-types').mssql;\nconst parserStore = require('../parserStore')('mssql');\nconst debug = logger.debugContext('connection:mssql');\nconst debugTedious = logger.debugContext('connection:mssql:tedious');\n\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 1433;\n    super(dialect, sequelize);\n    this.lib = this._loadDialectModule('tedious');\n    this.refreshTypeParser(DataTypes);\n  }\n\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  async connect(config) {\n    const connectionConfig = {\n      server: config.host,\n      authentication: {\n        type: 'default',\n        options: {\n          userName: config.username || undefined,\n          password: config.password || undefined\n        }\n      },\n      options: {\n        port: parseInt(config.port, 10),\n        database: config.database,\n        trustServerCertificate: true\n      }\n    };\n\n    if (config.dialectOptions) {\n      // only set port if no instance name was provided\n      if (\n        config.dialectOptions.options &&\n        config.dialectOptions.options.instanceName\n      ) {\n        delete connectionConfig.options.port;\n      }\n\n      if (config.dialectOptions.authentication) {\n        Object.assign(connectionConfig.authentication, config.dialectOptions.authentication);\n      }\n\n      Object.assign(connectionConfig.options, config.dialectOptions.options);\n    }\n\n    try {\n      return await new Promise((resolve, reject) => {\n        const connection = new this.lib.Connection(connectionConfig);\n        if (connection.state === connection.STATE.INITIALIZED) {\n          connection.connect();\n        }\n        connection.queue = new AsyncQueue();\n        connection.lib = this.lib;\n\n        const connectHandler = error => {\n          connection.removeListener('end', endHandler);\n          connection.removeListener('error', errorHandler);\n\n          if (error) return reject(error);\n\n          debug('connection acquired');\n          resolve(connection);\n        };\n\n        const endHandler = () => {\n          connection.removeListener('connect', connectHandler);\n          connection.removeListener('error', errorHandler);\n          reject(new Error('Connection was closed by remote server'));\n        };\n\n        const errorHandler = error => {\n          connection.removeListener('connect', connectHandler);\n          connection.removeListener('end', endHandler);\n          reject(error);\n        };\n\n        connection.once('error', errorHandler);\n        connection.once('end', endHandler);\n        connection.once('connect', connectHandler);\n\n        /*\n         * Permanently attach this event before connection is even acquired\n         * tedious sometime emits error even after connect(with error).\n         *\n         * If we dont attach this even that unexpected error event will crash node process\n         *\n         * E.g. connectTimeout is set higher than requestTimeout\n         */\n        connection.on('error', error => {\n          switch (error.code) {\n            case 'ESOCKET':\n            case 'ECONNRESET':\n              this.pool.destroy(connection);\n          }\n        });\n\n        if (config.dialectOptions && config.dialectOptions.debug) {\n          connection.on('debug', debugTedious.log.bind(debugTedious));\n        }\n      });\n    } catch (error) {\n      if (!error.code) {\n        throw new sequelizeErrors.ConnectionError(error);\n      }\n\n      switch (error.code) {\n        case 'ESOCKET':\n          if (error.message.includes('connect EHOSTUNREACH')) {\n            throw new sequelizeErrors.HostNotReachableError(error);\n          }\n          if (error.message.includes('connect ENETUNREACH')) {\n            throw new sequelizeErrors.HostNotReachableError(error);\n          }\n          if (error.message.includes('connect EADDRNOTAVAIL')) {\n            throw new sequelizeErrors.HostNotReachableError(error);\n          }\n          if (error.message.includes('connect EAFNOSUPPORT')) {\n            throw new sequelizeErrors.HostNotReachableError(error);\n          }\n          if (error.message.includes('getaddrinfo ENOTFOUND')) {\n            throw new sequelizeErrors.HostNotFoundError(error);\n          }\n          if (error.message.includes('connect ECONNREFUSED')) {\n            throw new sequelizeErrors.ConnectionRefusedError(error);\n          }\n          throw new sequelizeErrors.ConnectionError(error);\n        case 'ER_ACCESS_DENIED_ERROR':\n        case 'ELOGIN':\n          throw new sequelizeErrors.AccessDeniedError(error);\n        case 'EINVAL':\n          throw new sequelizeErrors.InvalidConnectionError(error);\n        default:\n          throw new sequelizeErrors.ConnectionError(error);\n      }\n    }\n  }\n\n  async disconnect(connection) {\n    // Don't disconnect a connection that is already disconnected\n    if (connection.closed) {\n      return;\n    }\n\n    connection.queue.close();\n\n    return new Promise(resolve => {\n      connection.on('end', resolve);\n      connection.close();\n      debug('connection closed');\n    });\n  }\n\n  validate(connection) {\n    return connection && (connection.loggedIn || connection.state.name === 'LoggedIn');\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";AAEA,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,aAAa,QAAQ,iBAAiB;AAC5C,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,kBAAkB,QAAQ;AAChC,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,cAAc,QAAQ,kBAAkB;AAC9C,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,eAAe,OAAO,aAAa;AAEzC,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,cAAU,OAAO,OAAO,UAAU,OAAO,QAAQ;AACjD,UAAM,SAAS;AACf,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,EAGzB,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,QAGR,QAAQ,QAAQ;AACpB,UAAM,mBAAmB;AAAA,MACvB,QAAQ,OAAO;AAAA,MACf,gBAAgB;AAAA,QACd,MAAM;AAAA,QACN,SAAS;AAAA,UACP,UAAU,OAAO,YAAY;AAAA,UAC7B,UAAU,OAAO,YAAY;AAAA;AAAA;AAAA,MAGjC,SAAS;AAAA,QACP,MAAM,SAAS,OAAO,MAAM;AAAA,QAC5B,UAAU,OAAO;AAAA,QACjB,wBAAwB;AAAA;AAAA;AAI5B,QAAI,OAAO,gBAAgB;AAEzB,UACE,OAAO,eAAe,WACtB,OAAO,eAAe,QAAQ,cAC9B;AACA,eAAO,iBAAiB,QAAQ;AAAA;AAGlC,UAAI,OAAO,eAAe,gBAAgB;AACxC,eAAO,OAAO,iBAAiB,gBAAgB,OAAO,eAAe;AAAA;AAGvE,aAAO,OAAO,iBAAiB,SAAS,OAAO,eAAe;AAAA;AAGhE,QAAI;AACF,aAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC5C,cAAM,aAAa,IAAI,KAAK,IAAI,WAAW;AAC3C,YAAI,WAAW,UAAU,WAAW,MAAM,aAAa;AACrD,qBAAW;AAAA;AAEb,mBAAW,QAAQ,IAAI;AACvB,mBAAW,MAAM,KAAK;AAEtB,cAAM,iBAAiB,WAAS;AAC9B,qBAAW,eAAe,OAAO;AACjC,qBAAW,eAAe,SAAS;AAEnC,cAAI;AAAO,mBAAO,OAAO;AAEzB,gBAAM;AACN,kBAAQ;AAAA;AAGV,cAAM,aAAa,MAAM;AACvB,qBAAW,eAAe,WAAW;AACrC,qBAAW,eAAe,SAAS;AACnC,iBAAO,IAAI,MAAM;AAAA;AAGnB,cAAM,eAAe,WAAS;AAC5B,qBAAW,eAAe,WAAW;AACrC,qBAAW,eAAe,OAAO;AACjC,iBAAO;AAAA;AAGT,mBAAW,KAAK,SAAS;AACzB,mBAAW,KAAK,OAAO;AACvB,mBAAW,KAAK,WAAW;AAU3B,mBAAW,GAAG,SAAS,WAAS;AAC9B,kBAAQ,MAAM;AAAA,iBACP;AAAA,iBACA;AACH,mBAAK,KAAK,QAAQ;AAAA;AAAA;AAIxB,YAAI,OAAO,kBAAkB,OAAO,eAAe,OAAO;AACxD,qBAAW,GAAG,SAAS,aAAa,IAAI,KAAK;AAAA;AAAA;AAAA,aAG1C,OAAP;AACA,UAAI,CAAC,MAAM,MAAM;AACf,cAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAG5C,cAAQ,MAAM;AAAA,aACP;AACH,cAAI,MAAM,QAAQ,SAAS,yBAAyB;AAClD,kBAAM,IAAI,gBAAgB,sBAAsB;AAAA;AAElD,cAAI,MAAM,QAAQ,SAAS,wBAAwB;AACjD,kBAAM,IAAI,gBAAgB,sBAAsB;AAAA;AAElD,cAAI,MAAM,QAAQ,SAAS,0BAA0B;AACnD,kBAAM,IAAI,gBAAgB,sBAAsB;AAAA;AAElD,cAAI,MAAM,QAAQ,SAAS,yBAAyB;AAClD,kBAAM,IAAI,gBAAgB,sBAAsB;AAAA;AAElD,cAAI,MAAM,QAAQ,SAAS,0BAA0B;AACnD,kBAAM,IAAI,gBAAgB,kBAAkB;AAAA;AAE9C,cAAI,MAAM,QAAQ,SAAS,yBAAyB;AAClD,kBAAM,IAAI,gBAAgB,uBAAuB;AAAA;AAEnD,gBAAM,IAAI,gBAAgB,gBAAgB;AAAA,aACvC;AAAA,aACA;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA;AAEjD,gBAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAAA;AAAA;AAAA,QAK5C,WAAW,YAAY;AAE3B,QAAI,WAAW,QAAQ;AACrB;AAAA;AAGF,eAAW,MAAM;AAEjB,WAAO,IAAI,QAAQ,aAAW;AAC5B,iBAAW,GAAG,OAAO;AACrB,iBAAW;AACX,YAAM;AAAA;AAAA;AAAA,EAIV,SAAS,YAAY;AACnB,WAAO,cAAe,YAAW,YAAY,WAAW,MAAM,SAAS;AAAA;AAAA;AAI3E,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,181 +1,0 @@
-"use strict";
-const moment = require("moment");
-module.exports = (BaseTypes) => {
-  const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://msdn.microsoft.com/en-us/library/ms187752%28v=sql.110%29.aspx");
-  function removeUnsupportedIntegerOptions(dataType) {
-    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {
-      warn(`MSSQL does not support '${dataType.key}' with options. Plain '${dataType.key}' will be used instead.`);
-      dataType._length = void 0;
-      dataType.options.length = void 0;
-      dataType._unsigned = void 0;
-      dataType._zerofill = void 0;
-    }
-  }
-  BaseTypes.DATE.types.mssql = [43];
-  BaseTypes.STRING.types.mssql = [231, 173];
-  BaseTypes.CHAR.types.mssql = [175];
-  BaseTypes.TEXT.types.mssql = false;
-  BaseTypes.TINYINT.types.mssql = [30];
-  BaseTypes.SMALLINT.types.mssql = [34];
-  BaseTypes.MEDIUMINT.types.mssql = false;
-  BaseTypes.INTEGER.types.mssql = [38];
-  BaseTypes.BIGINT.types.mssql = false;
-  BaseTypes.FLOAT.types.mssql = [109];
-  BaseTypes.TIME.types.mssql = [41];
-  BaseTypes.DATEONLY.types.mssql = [40];
-  BaseTypes.BOOLEAN.types.mssql = [104];
-  BaseTypes.BLOB.types.mssql = [165];
-  BaseTypes.DECIMAL.types.mssql = [106];
-  BaseTypes.UUID.types.mssql = false;
-  BaseTypes.ENUM.types.mssql = false;
-  BaseTypes.REAL.types.mssql = [109];
-  BaseTypes.DOUBLE.types.mssql = [109];
-  BaseTypes.GEOMETRY.types.mssql = false;
-  class BLOB extends BaseTypes.BLOB {
-    toSql() {
-      if (this._length) {
-        if (this._length.toLowerCase() === "tiny") {
-          warn("MSSQL does not support BLOB with the `length` = `tiny` option. `VARBINARY(256)` will be used instead.");
-          return "VARBINARY(256)";
-        }
-        warn("MSSQL does not support BLOB with the `length` option. `VARBINARY(MAX)` will be used instead.");
-      }
-      return "VARBINARY(MAX)";
-    }
-    _hexify(hex) {
-      return `0x${hex}`;
-    }
-  }
-  class STRING extends BaseTypes.STRING {
-    toSql() {
-      if (!this._binary) {
-        return `NVARCHAR(${this._length})`;
-      }
-      return `BINARY(${this._length})`;
-    }
-    _stringify(value, options) {
-      if (this._binary) {
-        return BLOB.prototype._stringify(value);
-      }
-      return options.escape(value);
-    }
-    _bindParam(value, options) {
-      return options.bindParam(this._binary ? Buffer.from(value) : value);
-    }
-  }
-  STRING.prototype.escape = false;
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      if (this._length) {
-        if (this._length.toLowerCase() === "tiny") {
-          warn("MSSQL does not support TEXT with the `length` = `tiny` option. `NVARCHAR(256)` will be used instead.");
-          return "NVARCHAR(256)";
-        }
-        warn("MSSQL does not support TEXT with the `length` option. `NVARCHAR(MAX)` will be used instead.");
-      }
-      return "NVARCHAR(MAX)";
-    }
-  }
-  class BOOLEAN extends BaseTypes.BOOLEAN {
-    toSql() {
-      return "BIT";
-    }
-  }
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "CHAR(36)";
-    }
-  }
-  class NOW extends BaseTypes.NOW {
-    toSql() {
-      return "GETDATE()";
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return "DATETIMEOFFSET";
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(value) {
-      return moment(value).format("YYYY-MM-DD");
-    }
-  }
-  class INTEGER extends BaseTypes.INTEGER {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class TINYINT extends BaseTypes.TINYINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class SMALLINT extends BaseTypes.SMALLINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class BIGINT extends BaseTypes.BIGINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class REAL extends BaseTypes.REAL {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._length || this.options.length || this._unsigned || this._zerofill) {
-        warn("MSSQL does not support REAL with options. Plain `REAL` will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._unsigned = void 0;
-        this._zerofill = void 0;
-      }
-    }
-  }
-  class FLOAT extends BaseTypes.FLOAT {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._decimals) {
-        warn("MSSQL does not support Float with decimals. Plain `FLOAT` will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-      }
-      if (this._unsigned) {
-        warn("MSSQL does not support Float unsigned. `UNSIGNED` was removed.");
-        this._unsigned = void 0;
-      }
-      if (this._zerofill) {
-        warn("MSSQL does not support Float zerofill. `ZEROFILL` was removed.");
-        this._zerofill = void 0;
-      }
-    }
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql() {
-      return "VARCHAR(255)";
-    }
-  }
-  return {
-    BLOB,
-    BOOLEAN,
-    ENUM,
-    STRING,
-    UUID,
-    DATE,
-    DATEONLY,
-    NOW,
-    TINYINT,
-    SMALLINT,
-    INTEGER,
-    BIGINT,
-    REAL,
-    FLOAT,
-    TEXT
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst moment = require('moment');\n\nmodule.exports = BaseTypes => {\n  const warn = BaseTypes.ABSTRACT.warn.bind(undefined, 'https://msdn.microsoft.com/en-us/library/ms187752%28v=sql.110%29.aspx');\n\n  /**\n   * Removes unsupported MSSQL options, i.e., LENGTH, UNSIGNED and ZEROFILL, for the integer data types.\n   *\n   * @param {object} dataType The base integer data type.\n   * @private\n   */\n  function removeUnsupportedIntegerOptions(dataType) {\n    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {\n      warn(`MSSQL does not support '${dataType.key}' with options. Plain '${dataType.key}' will be used instead.`);\n      dataType._length = undefined;\n      dataType.options.length = undefined;\n      dataType._unsigned = undefined;\n      dataType._zerofill = undefined;\n    }\n  }\n\n  /**\n   * types: [hex, ...]\n   *\n   * @see hex here https://github.com/tediousjs/tedious/blob/master/src/data-type.ts\n   */\n\n  BaseTypes.DATE.types.mssql = [43];\n  BaseTypes.STRING.types.mssql = [231, 173];\n  BaseTypes.CHAR.types.mssql = [175];\n  BaseTypes.TEXT.types.mssql = false;\n  // https://msdn.microsoft.com/en-us/library/ms187745(v=sql.110).aspx\n  BaseTypes.TINYINT.types.mssql = [30];\n  BaseTypes.SMALLINT.types.mssql = [34];\n  BaseTypes.MEDIUMINT.types.mssql = false;\n  BaseTypes.INTEGER.types.mssql = [38];\n  BaseTypes.BIGINT.types.mssql = false;\n  BaseTypes.FLOAT.types.mssql = [109];\n  BaseTypes.TIME.types.mssql = [41];\n  BaseTypes.DATEONLY.types.mssql = [40];\n  BaseTypes.BOOLEAN.types.mssql = [104];\n  BaseTypes.BLOB.types.mssql = [165];\n  BaseTypes.DECIMAL.types.mssql = [106];\n  BaseTypes.UUID.types.mssql = false;\n  BaseTypes.ENUM.types.mssql = false;\n  BaseTypes.REAL.types.mssql = [109];\n  BaseTypes.DOUBLE.types.mssql = [109];\n  // BaseTypes.GEOMETRY.types.mssql = [240]; // not yet supported\n  BaseTypes.GEOMETRY.types.mssql = false;\n\n  class BLOB extends BaseTypes.BLOB {\n    toSql() {\n      if (this._length) {\n        if (this._length.toLowerCase() === 'tiny') { // tiny = 2^8\n          warn('MSSQL does not support BLOB with the `length` = `tiny` option. `VARBINARY(256)` will be used instead.');\n          return 'VARBINARY(256)';\n        }\n        warn('MSSQL does not support BLOB with the `length` option. `VARBINARY(MAX)` will be used instead.');\n      }\n      return 'VARBINARY(MAX)';\n    }\n    _hexify(hex) {\n      return `0x${hex}`;\n    }\n  }\n\n\n  class STRING extends BaseTypes.STRING {\n    toSql() {\n      if (!this._binary) {\n        return `NVARCHAR(${this._length})`;\n      }\n      return `BINARY(${this._length})`;\n    }\n    _stringify(value, options) {\n      if (this._binary) {\n        return BLOB.prototype._stringify(value);\n      }\n      return options.escape(value);\n    }\n    _bindParam(value, options) {\n      return options.bindParam(this._binary ? Buffer.from(value) : value);\n    }\n  }\n\n  STRING.prototype.escape = false;\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      // TEXT is deprecated in mssql and it would normally be saved as a non-unicode string.\n      // Using unicode is just future proof\n      if (this._length) {\n        if (this._length.toLowerCase() === 'tiny') { // tiny = 2^8\n          warn('MSSQL does not support TEXT with the `length` = `tiny` option. `NVARCHAR(256)` will be used instead.');\n          return 'NVARCHAR(256)';\n        }\n        warn('MSSQL does not support TEXT with the `length` option. `NVARCHAR(MAX)` will be used instead.');\n      }\n      return 'NVARCHAR(MAX)';\n    }\n  }\n\n  class BOOLEAN extends BaseTypes.BOOLEAN {\n    toSql() {\n      return 'BIT';\n    }\n  }\n\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      return 'CHAR(36)';\n    }\n  }\n\n  class NOW extends BaseTypes.NOW {\n    toSql() {\n      return 'GETDATE()';\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return 'DATETIMEOFFSET';\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(value) {\n      return moment(value).format('YYYY-MM-DD');\n    }\n  }\n\n  class INTEGER extends BaseTypes.INTEGER {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  class TINYINT extends BaseTypes.TINYINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  class SMALLINT extends BaseTypes.SMALLINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  class BIGINT extends BaseTypes.BIGINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  class REAL extends BaseTypes.REAL {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // MSSQL does not support any options for real\n      if (this._length || this.options.length || this._unsigned || this._zerofill) {\n        warn('MSSQL does not support REAL with options. Plain `REAL` will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._unsigned = undefined;\n        this._zerofill = undefined;\n      }\n    }\n  }\n  class FLOAT extends BaseTypes.FLOAT {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // MSSQL does only support lengths as option.\n      // Values between 1-24 result in 7 digits precision (4 bytes storage size)\n      // Values between 25-53 result in 15 digits precision (8 bytes storage size)\n      // If decimals are provided remove these and print a warning\n      if (this._decimals) {\n        warn('MSSQL does not support Float with decimals. Plain `FLOAT` will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n      }\n      if (this._unsigned) {\n        warn('MSSQL does not support Float unsigned. `UNSIGNED` was removed.');\n        this._unsigned = undefined;\n      }\n      if (this._zerofill) {\n        warn('MSSQL does not support Float zerofill. `ZEROFILL` was removed.');\n        this._zerofill = undefined;\n      }\n    }\n  }\n  class ENUM extends BaseTypes.ENUM {\n    toSql() {\n      return 'VARCHAR(255)';\n    }\n  }\n\n  return {\n    BLOB,\n    BOOLEAN,\n    ENUM,\n    STRING,\n    UUID,\n    DATE,\n    DATEONLY,\n    NOW,\n    TINYINT,\n    SMALLINT,\n    INTEGER,\n    BIGINT,\n    REAL,\n    FLOAT,\n    TEXT\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,61 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").mssql;
-const { MSSqlQueryInterface } = require("./query-interface");
-class MssqlDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new MSSqlQueryInterface(sequelize, this.queryGenerator);
-  }
-}
-MssqlDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  DEFAULT: true,
-  "DEFAULT VALUES": true,
-  "LIMIT ON UPDATE": true,
-  "ORDER NULLS": false,
-  lock: false,
-  transactions: true,
-  migrations: false,
-  returnValues: {
-    output: true
-  },
-  schemas: true,
-  autoIncrement: {
-    identityInsert: true,
-    defaultValue: false,
-    update: false
-  },
-  constraints: {
-    restrict: false,
-    default: true
-  },
-  index: {
-    collate: false,
-    length: false,
-    parser: false,
-    type: true,
-    using: false,
-    where: true
-  },
-  NUMERIC: true,
-  tmpTableTrigger: true
-});
-MssqlDialect.prototype.defaultVersion = "12.0.2000";
-MssqlDialect.prototype.Query = Query;
-MssqlDialect.prototype.name = "mssql";
-MssqlDialect.prototype.TICK_CHAR = '"';
-MssqlDialect.prototype.TICK_CHAR_LEFT = "[";
-MssqlDialect.prototype.TICK_CHAR_RIGHT = "]";
-MssqlDialect.prototype.DataTypes = DataTypes;
-module.exports = MssqlDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').mssql;\nconst { MSSqlQueryInterface } = require('./query-interface');\n\nclass MssqlDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new MSSqlQueryInterface(\n      sequelize,\n      this.queryGenerator\n    );\n  }\n}\n\nMssqlDialect.prototype.supports = _.merge(\n  _.cloneDeep(AbstractDialect.prototype.supports),\n  {\n    DEFAULT: true,\n    'DEFAULT VALUES': true,\n    'LIMIT ON UPDATE': true,\n    'ORDER NULLS': false,\n    lock: false,\n    transactions: true,\n    migrations: false,\n    returnValues: {\n      output: true\n    },\n    schemas: true,\n    autoIncrement: {\n      identityInsert: true,\n      defaultValue: false,\n      update: false\n    },\n    constraints: {\n      restrict: false,\n      default: true\n    },\n    index: {\n      collate: false,\n      length: false,\n      parser: false,\n      type: true,\n      using: false,\n      where: true\n    },\n    NUMERIC: true,\n    tmpTableTrigger: true\n  }\n);\n\nMssqlDialect.prototype.defaultVersion = '12.0.2000'; // SQL Server 2014 Express, minimum supported version\nMssqlDialect.prototype.Query = Query;\nMssqlDialect.prototype.name = 'mssql';\nMssqlDialect.prototype.TICK_CHAR = '\"';\nMssqlDialect.prototype.TICK_CHAR_LEFT = '[';\nMssqlDialect.prototype.TICK_CHAR_RIGHT = ']';\nMssqlDialect.prototype.DataTypes = DataTypes;\n\nmodule.exports = MssqlDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,wBAAwB,QAAQ;AAExC,2BAA2B,gBAAgB;AAAA,EACzC,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,oBACxB,WACA,KAAK;AAAA;AAAA;AAKX,aAAa,UAAU,WAAW,EAAE,MAClC,EAAE,UAAU,gBAAgB,UAAU,WACtC;AAAA,EACE,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,MAAM;AAAA,EACN,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,IACZ,QAAQ;AAAA;AAAA,EAEV,SAAS;AAAA,EACT,eAAe;AAAA,IACb,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,QAAQ;AAAA;AAAA,EAEV,aAAa;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA;AAAA,EAEX,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,EAET,SAAS;AAAA,EACT,iBAAiB;AAAA;AAIrB,aAAa,UAAU,iBAAiB;AACxC,aAAa,UAAU,QAAQ;AAC/B,aAAa,UAAU,OAAO;AAC9B,aAAa,UAAU,YAAY;AACnC,aAAa,UAAU,iBAAiB;AACxC,aAAa,UAAU,kBAAkB;AACzC,aAAa,UAAU,YAAY;AAEnC,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,826 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const _ = require("lodash");
-const Utils = require("../../utils");
-const DataTypes = require("../../data-types");
-const TableHints = require("../../table-hints");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const randomBytes = require("crypto").randomBytes;
-const semver = require("semver");
-const Op = require("../../operators");
-const throwMethodUndefined = function(methodName) {
-  throw new Error(`The method "${methodName}" is not defined! Please add it to your sql dialect.`);
-};
-class MSSQLQueryGenerator extends AbstractQueryGenerator {
-  createDatabaseQuery(databaseName, options) {
-    options = __spreadValues({ collate: null }, options);
-    const collation = options.collate ? `COLLATE ${this.escape(options.collate)}` : "";
-    return [
-      "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name =",
-      wrapSingleQuote(databaseName),
-      ")",
-      "BEGIN",
-      "CREATE DATABASE",
-      this.quoteIdentifier(databaseName),
-      `${collation};`,
-      "END;"
-    ].join(" ");
-  }
-  dropDatabaseQuery(databaseName) {
-    return [
-      "IF EXISTS (SELECT * FROM sys.databases WHERE name =",
-      wrapSingleQuote(databaseName),
-      ")",
-      "BEGIN",
-      "DROP DATABASE",
-      this.quoteIdentifier(databaseName),
-      ";",
-      "END;"
-    ].join(" ");
-  }
-  createSchema(schema) {
-    return [
-      "IF NOT EXISTS (SELECT schema_name",
-      "FROM information_schema.schemata",
-      "WHERE schema_name =",
-      wrapSingleQuote(schema),
-      ")",
-      "BEGIN",
-      "EXEC sp_executesql N'CREATE SCHEMA",
-      this.quoteIdentifier(schema),
-      ";'",
-      "END;"
-    ].join(" ");
-  }
-  dropSchema(schema) {
-    const quotedSchema = wrapSingleQuote(schema);
-    return [
-      "IF EXISTS (SELECT schema_name",
-      "FROM information_schema.schemata",
-      "WHERE schema_name =",
-      quotedSchema,
-      ")",
-      "BEGIN",
-      "DECLARE @id INT, @ms_sql NVARCHAR(2000);",
-      "DECLARE @cascade TABLE (",
-      "id INT NOT NULL IDENTITY PRIMARY KEY,",
-      "ms_sql NVARCHAR(2000) NOT NULL );",
-      "INSERT INTO @cascade ( ms_sql )",
-      "SELECT CASE WHEN o.type IN ('F','PK')",
-      "THEN N'ALTER TABLE ['+ s.name + N'].[' + p.name + N'] DROP CONSTRAINT [' + o.name + N']'",
-      "ELSE N'DROP TABLE ['+ s.name + N'].[' + o.name + N']' END",
-      "FROM sys.objects o",
-      "JOIN sys.schemas s on o.schema_id = s.schema_id",
-      "LEFT OUTER JOIN sys.objects p on o.parent_object_id = p.object_id",
-      "WHERE o.type IN ('F', 'PK', 'U') AND s.name = ",
-      quotedSchema,
-      "ORDER BY o.type ASC;",
-      "SELECT TOP 1 @id = id, @ms_sql = ms_sql FROM @cascade ORDER BY id;",
-      "WHILE @id IS NOT NULL",
-      "BEGIN",
-      "BEGIN TRY EXEC sp_executesql @ms_sql; END TRY",
-      "BEGIN CATCH BREAK; THROW; END CATCH;",
-      "DELETE FROM @cascade WHERE id = @id;",
-      "SELECT @id = NULL, @ms_sql = NULL;",
-      "SELECT TOP 1 @id = id, @ms_sql = ms_sql FROM @cascade ORDER BY id;",
-      "END",
-      "EXEC sp_executesql N'DROP SCHEMA",
-      this.quoteIdentifier(schema),
-      ";'",
-      "END;"
-    ].join(" ");
-  }
-  showSchemasQuery() {
-    return [
-      'SELECT "name" as "schema_name" FROM sys.schemas as s',
-      'WHERE "s"."name" NOT IN (',
-      "'INFORMATION_SCHEMA', 'dbo', 'guest', 'sys', 'archive'",
-      ")",
-      "AND",
-      '"s"."name" NOT LIKE',
-      "'db_%'"
-    ].join(" ");
-  }
-  versionQuery() {
-    return [
-      "DECLARE @ms_ver NVARCHAR(20);",
-      "SET @ms_ver = REVERSE(CONVERT(NVARCHAR(20), SERVERPROPERTY('ProductVersion')));",
-      "SELECT REVERSE(SUBSTRING(@ms_ver, CHARINDEX('.', @ms_ver)+1, 20)) AS 'version'"
-    ].join(" ");
-  }
-  createTableQuery(tableName, attributes, options) {
-    const primaryKeys = [], foreignKeys = {}, attributesClauseParts = [];
-    let commentStr = "";
-    for (const attr in attributes) {
-      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {
-        let dataType = attributes[attr];
-        let match;
-        if (dataType.includes("COMMENT ")) {
-          const commentMatch = dataType.match(/^(.+) (COMMENT.*)$/);
-          const commentText = commentMatch[2].replace("COMMENT", "").trim();
-          commentStr += this.commentTemplate(commentText, tableName, attr);
-          dataType = commentMatch[1];
-        }
-        if (dataType.includes("PRIMARY KEY")) {
-          primaryKeys.push(attr);
-          if (dataType.includes("REFERENCES")) {
-            match = dataType.match(/^(.+) (REFERENCES.*)$/);
-            attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${match[1].replace("PRIMARY KEY", "")}`);
-            foreignKeys[attr] = match[2];
-          } else {
-            attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${dataType.replace("PRIMARY KEY", "")}`);
-          }
-        } else if (dataType.includes("REFERENCES")) {
-          match = dataType.match(/^(.+) (REFERENCES.*)$/);
-          attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${match[1]}`);
-          foreignKeys[attr] = match[2];
-        } else {
-          attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${dataType}`);
-        }
-      }
-    }
-    const pkString = primaryKeys.map((pk) => this.quoteIdentifier(pk)).join(", ");
-    if (options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns, indexName) => {
-        if (columns.customIndex) {
-          if (typeof indexName !== "string") {
-            indexName = `uniq_${tableName}_${columns.fields.join("_")}`;
-          }
-          attributesClauseParts.push(`CONSTRAINT ${this.quoteIdentifier(indexName)} UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`);
-        }
-      });
-    }
-    if (pkString.length > 0) {
-      attributesClauseParts.push(`PRIMARY KEY (${pkString})`);
-    }
-    for (const fkey in foreignKeys) {
-      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {
-        attributesClauseParts.push(`FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`);
-      }
-    }
-    const quotedTableName = this.quoteTable(tableName);
-    return Utils.joinSQLFragments([
-      `IF OBJECT_ID('${quotedTableName}', 'U') IS NULL`,
-      `CREATE TABLE ${quotedTableName} (${attributesClauseParts.join(", ")})`,
-      ";",
-      commentStr
-    ]);
-  }
-  describeTableQuery(tableName, schema) {
-    let sql = [
-      "SELECT",
-      "c.COLUMN_NAME AS 'Name',",
-      "c.DATA_TYPE AS 'Type',",
-      "c.CHARACTER_MAXIMUM_LENGTH AS 'Length',",
-      "c.IS_NULLABLE as 'IsNull',",
-      "COLUMN_DEFAULT AS 'Default',",
-      "pk.CONSTRAINT_TYPE AS 'Constraint',",
-      "COLUMNPROPERTY(OBJECT_ID('[' + c.TABLE_SCHEMA + '].[' + c.TABLE_NAME + ']'), c.COLUMN_NAME, 'IsIdentity') as 'IsIdentity',",
-      "CAST(prop.value AS NVARCHAR) AS 'Comment'",
-      "FROM",
-      "INFORMATION_SCHEMA.TABLES t",
-      "INNER JOIN",
-      "INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME AND t.TABLE_SCHEMA = c.TABLE_SCHEMA",
-      "LEFT JOIN (SELECT tc.table_schema, tc.table_name, ",
-      "cu.column_name, tc.CONSTRAINT_TYPE ",
-      "FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc ",
-      "JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE  cu ",
-      "ON tc.table_schema=cu.table_schema and tc.table_name=cu.table_name ",
-      "and tc.constraint_name=cu.constraint_name ",
-      "and tc.CONSTRAINT_TYPE='PRIMARY KEY') pk ",
-      "ON pk.table_schema=c.table_schema ",
-      "AND pk.table_name=c.table_name ",
-      "AND pk.column_name=c.column_name ",
-      "INNER JOIN sys.columns AS sc",
-      "ON sc.object_id = OBJECT_ID('[' + t.TABLE_SCHEMA + '].[' + t.TABLE_NAME + ']') AND sc.name = c.column_name",
-      "LEFT JOIN sys.extended_properties prop ON prop.major_id = sc.object_id",
-      "AND prop.minor_id = sc.column_id",
-      "AND prop.name = 'MS_Description'",
-      "WHERE t.TABLE_NAME =",
-      wrapSingleQuote(tableName)
-    ].join(" ");
-    if (schema) {
-      sql += `AND t.TABLE_SCHEMA =${wrapSingleQuote(schema)}`;
-    }
-    return sql;
-  }
-  renameTableQuery(before, after) {
-    return `EXEC sp_rename ${this.quoteTable(before)}, ${this.quoteTable(after)};`;
-  }
-  showTablesQuery() {
-    return "SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';";
-  }
-  tableExistsQuery(table) {
-    const tableName = table.tableName || table;
-    const schemaName = table.schema || "dbo";
-    return `SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = ${this.escape(tableName)} AND TABLE_SCHEMA = ${this.escape(schemaName)}`;
-  }
-  dropTableQuery(tableName) {
-    const quoteTbl = this.quoteTable(tableName);
-    return Utils.joinSQLFragments([
-      `IF OBJECT_ID('${quoteTbl}', 'U') IS NOT NULL`,
-      "DROP TABLE",
-      quoteTbl,
-      ";"
-    ]);
-  }
-  addColumnQuery(table, key, dataType) {
-    dataType.field = key;
-    let commentStr = "";
-    if (dataType.comment && _.isString(dataType.comment)) {
-      commentStr = this.commentTemplate(dataType.comment, table, key);
-      delete dataType["comment"];
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(table),
-      "ADD",
-      this.quoteIdentifier(key),
-      this.attributeToSQL(dataType, { context: "addColumn" }),
-      ";",
-      commentStr
-    ]);
-  }
-  commentTemplate(comment, table, column) {
-    return ` EXEC sp_addextendedproperty @name = N'MS_Description', @value = ${this.escape(comment)}, @level0type = N'Schema', @level0name = 'dbo', @level1type = N'Table', @level1name = ${this.quoteIdentifier(table)}, @level2type = N'Column', @level2name = ${this.quoteIdentifier(column)};`;
-  }
-  removeColumnQuery(tableName, attributeName) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP COLUMN",
-      this.quoteIdentifier(attributeName),
-      ";"
-    ]);
-  }
-  changeColumnQuery(tableName, attributes) {
-    const attrString = [], constraintString = [];
-    let commentString = "";
-    for (const attributeName in attributes) {
-      const quotedAttrName = this.quoteIdentifier(attributeName);
-      let definition = attributes[attributeName];
-      if (definition.includes("COMMENT ")) {
-        const commentMatch = definition.match(/^(.+) (COMMENT.*)$/);
-        const commentText = commentMatch[2].replace("COMMENT", "").trim();
-        commentString += this.commentTemplate(commentText, tableName, attributeName);
-        definition = commentMatch[1];
-      }
-      if (definition.includes("REFERENCES")) {
-        constraintString.push(`FOREIGN KEY (${quotedAttrName}) ${definition.replace(/.+?(?=REFERENCES)/, "")}`);
-      } else {
-        attrString.push(`${quotedAttrName} ${definition}`);
-      }
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      attrString.length && `ALTER COLUMN ${attrString.join(", ")}`,
-      constraintString.length && `ADD ${constraintString.join(", ")}`,
-      ";",
-      commentString
-    ]);
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const newName = Object.keys(attributes)[0];
-    return Utils.joinSQLFragments([
-      "EXEC sp_rename",
-      `'${this.quoteTable(tableName)}.${attrBefore}',`,
-      `'${newName}',`,
-      "'COLUMN'",
-      ";"
-    ]);
-  }
-  bulkInsertQuery(tableName, attrValueHashes, options, attributes) {
-    const quotedTable = this.quoteTable(tableName);
-    options = options || {};
-    attributes = attributes || {};
-    const tuples = [];
-    const allAttributes = [];
-    const allQueries = [];
-    let needIdentityInsertWrapper = false, outputFragment = "";
-    if (options.returning) {
-      const returnValues = this.generateReturnValues(attributes, options);
-      outputFragment = returnValues.outputFragment;
-    }
-    const emptyQuery = `INSERT INTO ${quotedTable}${outputFragment} DEFAULT VALUES`;
-    attrValueHashes.forEach((attrValueHash) => {
-      const fields = Object.keys(attrValueHash);
-      const firstAttr = attributes[fields[0]];
-      if (fields.length === 1 && firstAttr && firstAttr.autoIncrement && attrValueHash[fields[0]] === null) {
-        allQueries.push(emptyQuery);
-        return;
-      }
-      _.forOwn(attrValueHash, (value, key) => {
-        if (value !== null && attributes[key] && attributes[key].autoIncrement) {
-          needIdentityInsertWrapper = true;
-        }
-        if (!allAttributes.includes(key)) {
-          if (value === null && attributes[key] && attributes[key].autoIncrement)
-            return;
-          allAttributes.push(key);
-        }
-      });
-    });
-    if (allAttributes.length > 0) {
-      attrValueHashes.forEach((attrValueHash) => {
-        tuples.push(`(${allAttributes.map((key) => this.escape(attrValueHash[key])).join(",")})`);
-      });
-      const quotedAttributes = allAttributes.map((attr) => this.quoteIdentifier(attr)).join(",");
-      allQueries.push((tupleStr) => `INSERT INTO ${quotedTable} (${quotedAttributes})${outputFragment} VALUES ${tupleStr};`);
-    }
-    const commands = [];
-    let offset = 0;
-    const batch = Math.floor(250 / (allAttributes.length + 1)) + 1;
-    while (offset < Math.max(tuples.length, 1)) {
-      const tupleStr = tuples.slice(offset, Math.min(tuples.length, offset + batch));
-      let generatedQuery = allQueries.map((v) => typeof v === "string" ? v : v(tupleStr)).join(";");
-      if (needIdentityInsertWrapper) {
-        generatedQuery = `SET IDENTITY_INSERT ${quotedTable} ON; ${generatedQuery}; SET IDENTITY_INSERT ${quotedTable} OFF;`;
-      }
-      commands.push(generatedQuery);
-      offset += batch;
-    }
-    return commands.join(";");
-  }
-  updateQuery(tableName, attrValueHash, where, options, attributes) {
-    const sql = super.updateQuery(tableName, attrValueHash, where, options, attributes);
-    if (options.limit) {
-      const updateArgs = `UPDATE TOP(${this.escape(options.limit)})`;
-      sql.query = sql.query.replace("UPDATE", updateArgs);
-    }
-    return sql;
-  }
-  upsertQuery(tableName, insertValues, updateValues, where, model) {
-    const targetTableAlias = this.quoteTable(`${tableName}_target`);
-    const sourceTableAlias = this.quoteTable(`${tableName}_source`);
-    const primaryKeysAttrs = [];
-    const identityAttrs = [];
-    const uniqueAttrs = [];
-    const tableNameQuoted = this.quoteTable(tableName);
-    let needIdentityInsertWrapper = false;
-    for (const key in model.rawAttributes) {
-      if (model.rawAttributes[key].primaryKey) {
-        primaryKeysAttrs.push(model.rawAttributes[key].field || key);
-      }
-      if (model.rawAttributes[key].unique) {
-        uniqueAttrs.push(model.rawAttributes[key].field || key);
-      }
-      if (model.rawAttributes[key].autoIncrement) {
-        identityAttrs.push(model.rawAttributes[key].field || key);
-      }
-    }
-    for (const index of model._indexes) {
-      if (index.unique && index.fields) {
-        for (const field of index.fields) {
-          const fieldName = typeof field === "string" ? field : field.name || field.attribute;
-          if (!uniqueAttrs.includes(fieldName) && model.rawAttributes[fieldName]) {
-            uniqueAttrs.push(fieldName);
-          }
-        }
-      }
-    }
-    const updateKeys = Object.keys(updateValues);
-    const insertKeys = Object.keys(insertValues);
-    const insertKeysQuoted = insertKeys.map((key) => this.quoteIdentifier(key)).join(", ");
-    const insertValuesEscaped = insertKeys.map((key) => this.escape(insertValues[key])).join(", ");
-    const sourceTableQuery = `VALUES(${insertValuesEscaped})`;
-    let joinCondition;
-    identityAttrs.forEach((key) => {
-      if (insertValues[key] && insertValues[key] !== null) {
-        needIdentityInsertWrapper = true;
-      }
-    });
-    const clauses = where[Op.or].filter((clause) => {
-      let valid = true;
-      for (const key in clause) {
-        if (typeof clause[key] === "undefined" || clause[key] == null) {
-          valid = false;
-          break;
-        }
-      }
-      return valid;
-    });
-    const getJoinSnippet = (array) => {
-      return array.map((key) => {
-        key = this.quoteIdentifier(key);
-        return `${targetTableAlias}.${key} = ${sourceTableAlias}.${key}`;
-      });
-    };
-    if (clauses.length === 0) {
-      throw new Error("Primary Key or Unique key should be passed to upsert query");
-    } else {
-      for (const key in clauses) {
-        const keys = Object.keys(clauses[key]);
-        if (primaryKeysAttrs.includes(keys[0])) {
-          joinCondition = getJoinSnippet(primaryKeysAttrs).join(" AND ");
-          break;
-        }
-      }
-      if (!joinCondition) {
-        joinCondition = getJoinSnippet(uniqueAttrs).join(" AND ");
-      }
-    }
-    const filteredUpdateClauses = updateKeys.filter((key) => !identityAttrs.includes(key)).map((key) => {
-      const value = this.escape(updateValues[key]);
-      key = this.quoteIdentifier(key);
-      return `${targetTableAlias}.${key} = ${value}`;
-    });
-    const updateSnippet = filteredUpdateClauses.length > 0 ? `WHEN MATCHED THEN UPDATE SET ${filteredUpdateClauses.join(", ")}` : "";
-    const insertSnippet = `(${insertKeysQuoted}) VALUES(${insertValuesEscaped})`;
-    let query = `MERGE INTO ${tableNameQuoted} WITH(HOLDLOCK) AS ${targetTableAlias} USING (${sourceTableQuery}) AS ${sourceTableAlias}(${insertKeysQuoted}) ON ${joinCondition}`;
-    query += ` ${updateSnippet} WHEN NOT MATCHED THEN INSERT ${insertSnippet} OUTPUT $action, INSERTED.*;`;
-    if (needIdentityInsertWrapper) {
-      query = `SET IDENTITY_INSERT ${tableNameQuoted} ON; ${query} SET IDENTITY_INSERT ${tableNameQuoted} OFF;`;
-    }
-    return query;
-  }
-  truncateTableQuery(tableName) {
-    return `TRUNCATE TABLE ${this.quoteTable(tableName)}`;
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    const table = this.quoteTable(tableName);
-    const whereClause = this.getWhereConditions(where, null, model, options);
-    return Utils.joinSQLFragments([
-      "DELETE",
-      options.limit && `TOP(${this.escape(options.limit)})`,
-      "FROM",
-      table,
-      whereClause && `WHERE ${whereClause}`,
-      ";",
-      "SELECT @@ROWCOUNT AS AFFECTEDROWS",
-      ";"
-    ]);
-  }
-  showIndexesQuery(tableName) {
-    return `EXEC sys.sp_helpindex @objname = N'${this.quoteTable(tableName)}';`;
-  }
-  showConstraintsQuery(tableName) {
-    return `EXEC sp_helpconstraint @objname = ${this.escape(this.quoteTable(tableName))};`;
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return `DROP INDEX ${this.quoteIdentifiers(indexName)} ON ${this.quoteIdentifiers(tableName)}`;
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    if (attribute.references) {
-      if (attribute.Model && attribute.Model.tableName === attribute.references.model) {
-        this.sequelize.log("MSSQL does not support self referencial constraints, we will remove it but we recommend restructuring your query");
-        attribute.onDelete = "";
-        attribute.onUpdate = "";
-      }
-    }
-    let template;
-    if (attribute.type instanceof DataTypes.ENUM) {
-      if (attribute.type.values && !attribute.values)
-        attribute.values = attribute.type.values;
-      template = attribute.type.toSql();
-      template += ` CHECK (${this.quoteIdentifier(attribute.field)} IN(${attribute.values.map((value) => {
-        return this.escape(value);
-      }).join(", ")}))`;
-      return template;
-    }
-    template = attribute.type.toString();
-    if (attribute.allowNull === false) {
-      template += " NOT NULL";
-    } else if (!attribute.primaryKey && !Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += " NULL";
-    }
-    if (attribute.autoIncrement) {
-      template += " IDENTITY(1,1)";
-    }
-    if (attribute.type !== "TEXT" && attribute.type._binary !== true && Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-    }
-    if (attribute.unique === true) {
-      template += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      template += " PRIMARY KEY";
-    }
-    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {
-      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;
-      if (attribute.references.key) {
-        template += ` (${this.quoteIdentifier(attribute.references.key)})`;
-      } else {
-        template += ` (${this.quoteIdentifier("id")})`;
-      }
-      if (attribute.onDelete) {
-        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-      }
-      if (attribute.onUpdate) {
-        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;
-      }
-    }
-    if (attribute.comment && typeof attribute.comment === "string") {
-      template += ` COMMENT ${attribute.comment}`;
-    }
-    return template;
-  }
-  attributesToSQL(attributes, options) {
-    const result = {}, existingConstraints = [];
-    let key, attribute;
-    for (key in attributes) {
-      attribute = attributes[key];
-      if (attribute.references) {
-        if (existingConstraints.includes(attribute.references.model.toString())) {
-          attribute.onDelete = "";
-          attribute.onUpdate = "";
-        } else {
-          existingConstraints.push(attribute.references.model.toString());
-          attribute.onUpdate = "";
-        }
-      }
-      if (key && !attribute.field)
-        attribute.field = key;
-      result[attribute.field || key] = this.attributeToSQL(attribute, options);
-    }
-    return result;
-  }
-  createTrigger() {
-    throwMethodUndefined("createTrigger");
-  }
-  dropTrigger() {
-    throwMethodUndefined("dropTrigger");
-  }
-  renameTrigger() {
-    throwMethodUndefined("renameTrigger");
-  }
-  createFunction() {
-    throwMethodUndefined("createFunction");
-  }
-  dropFunction() {
-    throwMethodUndefined("dropFunction");
-  }
-  renameFunction() {
-    throwMethodUndefined("renameFunction");
-  }
-  _getForeignKeysQueryPrefix(catalogName) {
-    return `${"SELECT constraint_name = OBJ.NAME, constraintName = OBJ.NAME, "}${catalogName ? `constraintCatalog = '${catalogName}', ` : ""}constraintSchema = SCHEMA_NAME(OBJ.SCHEMA_ID), tableName = TB.NAME, tableSchema = SCHEMA_NAME(TB.SCHEMA_ID), ${catalogName ? `tableCatalog = '${catalogName}', ` : ""}columnName = COL.NAME, referencedTableSchema = SCHEMA_NAME(RTB.SCHEMA_ID), ${catalogName ? `referencedCatalog = '${catalogName}', ` : ""}referencedTableName = RTB.NAME, referencedColumnName = RCOL.NAME FROM sys.foreign_key_columns FKC INNER JOIN sys.objects OBJ ON OBJ.OBJECT_ID = FKC.CONSTRAINT_OBJECT_ID INNER JOIN sys.tables TB ON TB.OBJECT_ID = FKC.PARENT_OBJECT_ID INNER JOIN sys.columns COL ON COL.COLUMN_ID = PARENT_COLUMN_ID AND COL.OBJECT_ID = TB.OBJECT_ID INNER JOIN sys.tables RTB ON RTB.OBJECT_ID = FKC.REFERENCED_OBJECT_ID INNER JOIN sys.columns RCOL ON RCOL.COLUMN_ID = REFERENCED_COLUMN_ID AND RCOL.OBJECT_ID = RTB.OBJECT_ID`;
-  }
-  getForeignKeysQuery(table, catalogName) {
-    const tableName = table.tableName || table;
-    let sql = `${this._getForeignKeysQueryPrefix(catalogName)} WHERE TB.NAME =${wrapSingleQuote(tableName)}`;
-    if (table.schema) {
-      sql += ` AND SCHEMA_NAME(TB.SCHEMA_ID) =${wrapSingleQuote(table.schema)}`;
-    }
-    return sql;
-  }
-  getForeignKeyQuery(table, attributeName) {
-    const tableName = table.tableName || table;
-    return Utils.joinSQLFragments([
-      this._getForeignKeysQueryPrefix(),
-      "WHERE",
-      `TB.NAME =${wrapSingleQuote(tableName)}`,
-      "AND",
-      `COL.NAME =${wrapSingleQuote(attributeName)}`,
-      table.schema && `AND SCHEMA_NAME(TB.SCHEMA_ID) =${wrapSingleQuote(table.schema)}`
-    ]);
-  }
-  getPrimaryKeyConstraintQuery(table, attributeName) {
-    const tableName = wrapSingleQuote(table.tableName || table);
-    return Utils.joinSQLFragments([
-      "SELECT K.TABLE_NAME AS tableName,",
-      "K.COLUMN_NAME AS columnName,",
-      "K.CONSTRAINT_NAME AS constraintName",
-      "FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C",
-      "JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K",
-      "ON C.TABLE_NAME = K.TABLE_NAME",
-      "AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG",
-      "AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA",
-      "AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME",
-      "WHERE C.CONSTRAINT_TYPE = 'PRIMARY KEY'",
-      `AND K.COLUMN_NAME = ${wrapSingleQuote(attributeName)}`,
-      `AND K.TABLE_NAME = ${tableName}`,
-      ";"
-    ]);
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP",
-      this.quoteIdentifier(foreignKey)
-    ]);
-  }
-  getDefaultConstraintQuery(tableName, attributeName) {
-    const quotedTable = this.quoteTable(tableName);
-    return Utils.joinSQLFragments([
-      "SELECT name FROM sys.default_constraints",
-      `WHERE PARENT_OBJECT_ID = OBJECT_ID('${quotedTable}', 'U')`,
-      `AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns WHERE NAME = ('${attributeName}')`,
-      `AND object_id = OBJECT_ID('${quotedTable}', 'U'))`,
-      ";"
-    ]);
-  }
-  dropConstraintQuery(tableName, constraintName) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP CONSTRAINT",
-      this.quoteIdentifier(constraintName),
-      ";"
-    ]);
-  }
-  setIsolationLevelQuery() {
-  }
-  generateTransactionId() {
-    return randomBytes(10).toString("hex");
-  }
-  startTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `SAVE TRANSACTION ${this.quoteIdentifier(transaction.name)};`;
-    }
-    return "BEGIN TRANSACTION;";
-  }
-  commitTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return;
-    }
-    return "COMMIT TRANSACTION;";
-  }
-  rollbackTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `ROLLBACK TRANSACTION ${this.quoteIdentifier(transaction.name)};`;
-    }
-    return "ROLLBACK TRANSACTION;";
-  }
-  selectFromTableFragment(options, model, attributes, tables, mainTableAs, where) {
-    this._throwOnEmptyAttributes(attributes, { modelName: model && model.name, as: mainTableAs });
-    const dbVersion = this.sequelize.options.databaseVersion;
-    const isSQLServer2008 = semver.valid(dbVersion) && semver.lt(dbVersion, "11.0.0");
-    if (isSQLServer2008 && options.offset) {
-      const offset = options.offset || 0;
-      const isSubQuery = options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation;
-      let orders = { mainQueryOrder: [] };
-      if (options.order) {
-        orders = this.getQueryOrders(options, model, isSubQuery);
-      }
-      if (orders.mainQueryOrder.length === 0) {
-        orders.mainQueryOrder.push(this.quoteIdentifier(model.primaryKeyField));
-      }
-      const tmpTable = mainTableAs || "OffsetTable";
-      if (options.include) {
-        const subQuery = options.subQuery === void 0 ? options.limit && options.hasMultiAssociation : options.subQuery;
-        const mainTable = {
-          name: mainTableAs,
-          quotedName: null,
-          as: null,
-          model
-        };
-        const topLevelInfo = {
-          names: mainTable,
-          options,
-          subQuery
-        };
-        let mainJoinQueries = [];
-        for (const include of options.include) {
-          if (include.separate) {
-            continue;
-          }
-          const joinQueries = this.generateInclude(include, { externalAs: mainTableAs, internalAs: mainTableAs }, topLevelInfo);
-          mainJoinQueries = mainJoinQueries.concat(joinQueries.mainQuery);
-        }
-        return Utils.joinSQLFragments([
-          "SELECT TOP 100 PERCENT",
-          attributes.join(", "),
-          "FROM (",
-          [
-            "SELECT",
-            options.limit && `TOP ${options.limit}`,
-            "* FROM (",
-            [
-              "SELECT ROW_NUMBER() OVER (",
-              [
-                "ORDER BY",
-                orders.mainQueryOrder.join(", ")
-              ],
-              `) as row_num, ${tmpTable}.* FROM (`,
-              [
-                "SELECT DISTINCT",
-                `${tmpTable}.* FROM ${tables} AS ${tmpTable}`,
-                mainJoinQueries,
-                where && `WHERE ${where}`
-              ],
-              `) AS ${tmpTable}`
-            ],
-            `) AS ${tmpTable} WHERE row_num > ${offset}`
-          ],
-          `) AS ${tmpTable}`
-        ]);
-      }
-      return Utils.joinSQLFragments([
-        "SELECT TOP 100 PERCENT",
-        attributes.join(", "),
-        "FROM (",
-        [
-          "SELECT",
-          options.limit && `TOP ${options.limit}`,
-          "* FROM (",
-          [
-            "SELECT ROW_NUMBER() OVER (",
-            [
-              "ORDER BY",
-              orders.mainQueryOrder.join(", ")
-            ],
-            `) as row_num, * FROM ${tables} AS ${tmpTable}`,
-            where && `WHERE ${where}`
-          ],
-          `) AS ${tmpTable} WHERE row_num > ${offset}`
-        ],
-        `) AS ${tmpTable}`
-      ]);
-    }
-    return Utils.joinSQLFragments([
-      "SELECT",
-      isSQLServer2008 && options.limit && `TOP ${options.limit}`,
-      attributes.join(", "),
-      `FROM ${tables}`,
-      mainTableAs && `AS ${mainTableAs}`,
-      options.tableHint && TableHints[options.tableHint] && `WITH (${TableHints[options.tableHint]})`
-    ]);
-  }
-  addLimitAndOffset(options, model) {
-    if (semver.valid(this.sequelize.options.databaseVersion) && semver.lt(this.sequelize.options.databaseVersion, "11.0.0")) {
-      return "";
-    }
-    const offset = options.offset || 0;
-    const isSubQuery = options.subQuery === void 0 ? options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation : options.subQuery;
-    let fragment = "";
-    let orders = {};
-    if (options.order) {
-      orders = this.getQueryOrders(options, model, isSubQuery);
-    }
-    if (options.limit || options.offset) {
-      if (!options.order || options.order.length === 0 || options.include && orders.subQueryOrder.length === 0) {
-        let primaryKey = model.primaryKeyField;
-        const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(primaryKey)}`;
-        const aliasedAttribute = (options.attributes || []).find((attr) => Array.isArray(attr) && attr[1] && (attr[0] === primaryKey || attr[1] === primaryKey));
-        if (aliasedAttribute) {
-          const modelName = this.quoteIdentifier(options.tableAs || model.name);
-          const alias = this._getAliasForField(modelName, aliasedAttribute[1], options);
-          primaryKey = new Utils.Col(alias || aliasedAttribute[1]);
-        }
-        if (!options.order || !options.order.length) {
-          fragment += ` ORDER BY ${tablePkFragment}`;
-        } else {
-          const orderFieldNames = (options.order || []).map((order) => {
-            const value = Array.isArray(order) ? order[0] : order;
-            if (value instanceof Utils.Col) {
-              return value.col;
-            }
-            if (value instanceof Utils.Literal) {
-              return value.val;
-            }
-            return value;
-          });
-          const primaryKeyFieldAlreadyPresent = orderFieldNames.some((fieldName) => fieldName === (primaryKey.col || primaryKey));
-          if (!primaryKeyFieldAlreadyPresent) {
-            fragment += options.order && !isSubQuery ? ", " : " ORDER BY ";
-            fragment += tablePkFragment;
-          }
-        }
-      }
-      if (options.offset || options.limit) {
-        fragment += ` OFFSET ${this.escape(offset)} ROWS`;
-      }
-      if (options.limit) {
-        fragment += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;
-      }
-    }
-    return fragment;
-  }
-  booleanValue(value) {
-    return value ? 1 : 0;
-  }
-  quoteIdentifier(identifier, force) {
-    return `[${identifier.replace(/[[\]']+/g, "")}]`;
-  }
-}
-function wrapSingleQuote(identifier) {
-  return Utils.addTicks(Utils.removeTicks(identifier, "'"), "'");
-}
-module.exports = MSSQLQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst DataTypes = require('../../data-types');\nconst TableHints = require('../../table-hints');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst randomBytes = require('crypto').randomBytes;\nconst semver = require('semver');\nconst Op = require('../../operators');\n\n/* istanbul ignore next */\nconst throwMethodUndefined = function(methodName) {\n  throw new Error(`The method \"${methodName}\" is not defined! Please add it to your sql dialect.`);\n};\n\nclass MSSQLQueryGenerator extends AbstractQueryGenerator {\n  createDatabaseQuery(databaseName, options) {\n    options = { collate: null, ...options };\n\n    const collation = options.collate ? `COLLATE ${this.escape(options.collate)}` : '';\n\n    return [\n      'IF NOT EXISTS (SELECT * FROM sys.databases WHERE name =', wrapSingleQuote(databaseName), ')',\n      'BEGIN',\n      'CREATE DATABASE', this.quoteIdentifier(databaseName),\n      `${collation};`,\n      'END;'\n    ].join(' ');\n  }\n\n  dropDatabaseQuery(databaseName) {\n    return [\n      'IF EXISTS (SELECT * FROM sys.databases WHERE name =', wrapSingleQuote(databaseName), ')',\n      'BEGIN',\n      'DROP DATABASE', this.quoteIdentifier(databaseName), ';',\n      'END;'\n    ].join(' ');\n  }\n\n  createSchema(schema) {\n    return [\n      'IF NOT EXISTS (SELECT schema_name',\n      'FROM information_schema.schemata',\n      'WHERE schema_name =', wrapSingleQuote(schema), ')',\n      'BEGIN',\n      \"EXEC sp_executesql N'CREATE SCHEMA\",\n      this.quoteIdentifier(schema),\n      \";'\",\n      'END;'\n    ].join(' ');\n  }\n\n  dropSchema(schema) {\n    // Mimics Postgres CASCADE, will drop objects belonging to the schema\n    const quotedSchema = wrapSingleQuote(schema);\n    return [\n      'IF EXISTS (SELECT schema_name',\n      'FROM information_schema.schemata',\n      'WHERE schema_name =', quotedSchema, ')',\n      'BEGIN',\n      'DECLARE @id INT, @ms_sql NVARCHAR(2000);',\n      'DECLARE @cascade TABLE (',\n      'id INT NOT NULL IDENTITY PRIMARY KEY,',\n      'ms_sql NVARCHAR(2000) NOT NULL );',\n      'INSERT INTO @cascade ( ms_sql )',\n      \"SELECT CASE WHEN o.type IN ('F','PK')\",\n      \"THEN N'ALTER TABLE ['+ s.name + N'].[' + p.name + N'] DROP CONSTRAINT [' + o.name + N']'\",\n      \"ELSE N'DROP TABLE ['+ s.name + N'].[' + o.name + N']' END\",\n      'FROM sys.objects o',\n      'JOIN sys.schemas s on o.schema_id = s.schema_id',\n      'LEFT OUTER JOIN sys.objects p on o.parent_object_id = p.object_id',\n      \"WHERE o.type IN ('F', 'PK', 'U') AND s.name = \", quotedSchema,\n      'ORDER BY o.type ASC;',\n      'SELECT TOP 1 @id = id, @ms_sql = ms_sql FROM @cascade ORDER BY id;',\n      'WHILE @id IS NOT NULL',\n      'BEGIN',\n      'BEGIN TRY EXEC sp_executesql @ms_sql; END TRY',\n      'BEGIN CATCH BREAK; THROW; END CATCH;',\n      'DELETE FROM @cascade WHERE id = @id;',\n      'SELECT @id = NULL, @ms_sql = NULL;',\n      'SELECT TOP 1 @id = id, @ms_sql = ms_sql FROM @cascade ORDER BY id;',\n      'END',\n      \"EXEC sp_executesql N'DROP SCHEMA\", this.quoteIdentifier(schema), \";'\",\n      'END;'\n    ].join(' ');\n  }\n\n  showSchemasQuery() {\n    return [\n      'SELECT \"name\" as \"schema_name\" FROM sys.schemas as s',\n      'WHERE \"s\".\"name\" NOT IN (',\n      \"'INFORMATION_SCHEMA', 'dbo', 'guest', 'sys', 'archive'\",\n      ')', 'AND', '\"s\".\"name\" NOT LIKE', \"'db_%'\"\n    ].join(' ');\n  }\n\n  versionQuery() {\n    // Uses string manipulation to convert the MS Maj.Min.Patch.Build to semver Maj.Min.Patch\n    return [\n      'DECLARE @ms_ver NVARCHAR(20);',\n      \"SET @ms_ver = REVERSE(CONVERT(NVARCHAR(20), SERVERPROPERTY('ProductVersion')));\",\n      \"SELECT REVERSE(SUBSTRING(@ms_ver, CHARINDEX('.', @ms_ver)+1, 20)) AS 'version'\"\n    ].join(' ');\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    const primaryKeys = [],\n      foreignKeys = {},\n      attributesClauseParts = [];\n\n    let commentStr = '';\n\n    for (const attr in attributes) {\n      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {\n        let dataType = attributes[attr];\n        let match;\n\n        if (dataType.includes('COMMENT ')) {\n          const commentMatch = dataType.match(/^(.+) (COMMENT.*)$/);\n          const commentText = commentMatch[2].replace('COMMENT', '').trim();\n          commentStr += this.commentTemplate(commentText, tableName, attr);\n          // remove comment related substring from dataType\n          dataType = commentMatch[1];\n        }\n\n        if (dataType.includes('PRIMARY KEY')) {\n          primaryKeys.push(attr);\n\n          if (dataType.includes('REFERENCES')) {\n            // MSSQL doesn't support inline REFERENCES declarations: move to the end\n            match = dataType.match(/^(.+) (REFERENCES.*)$/);\n            attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${match[1].replace('PRIMARY KEY', '')}`);\n            foreignKeys[attr] = match[2];\n          } else {\n            attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${dataType.replace('PRIMARY KEY', '')}`);\n          }\n        } else if (dataType.includes('REFERENCES')) {\n          // MSSQL doesn't support inline REFERENCES declarations: move to the end\n          match = dataType.match(/^(.+) (REFERENCES.*)$/);\n          attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${match[1]}`);\n          foreignKeys[attr] = match[2];\n        } else {\n          attributesClauseParts.push(`${this.quoteIdentifier(attr)} ${dataType}`);\n        }\n      }\n    }\n\n    const pkString = primaryKeys.map(pk => this.quoteIdentifier(pk)).join(', ');\n\n    if (options.uniqueKeys) {\n      _.each(options.uniqueKeys, (columns, indexName) => {\n        if (columns.customIndex) {\n          if (typeof indexName !== 'string') {\n            indexName = `uniq_${tableName}_${columns.fields.join('_')}`;\n          }\n          attributesClauseParts.push(`CONSTRAINT ${\n            this.quoteIdentifier(indexName)\n          } UNIQUE (${\n            columns.fields.map(field => this.quoteIdentifier(field)).join(', ')\n          })`);\n        }\n      });\n    }\n\n    if (pkString.length > 0) {\n      attributesClauseParts.push(`PRIMARY KEY (${pkString})`);\n    }\n\n    for (const fkey in foreignKeys) {\n      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {\n        attributesClauseParts.push(`FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`);\n      }\n    }\n\n    const quotedTableName = this.quoteTable(tableName);\n\n    return Utils.joinSQLFragments([\n      `IF OBJECT_ID('${quotedTableName}', 'U') IS NULL`,\n      `CREATE TABLE ${quotedTableName} (${attributesClauseParts.join(', ')})`,\n      ';',\n      commentStr\n    ]);\n  }\n\n  describeTableQuery(tableName, schema) {\n    let sql = [\n      'SELECT',\n      \"c.COLUMN_NAME AS 'Name',\",\n      \"c.DATA_TYPE AS 'Type',\",\n      \"c.CHARACTER_MAXIMUM_LENGTH AS 'Length',\",\n      \"c.IS_NULLABLE as 'IsNull',\",\n      \"COLUMN_DEFAULT AS 'Default',\",\n      \"pk.CONSTRAINT_TYPE AS 'Constraint',\",\n      \"COLUMNPROPERTY(OBJECT_ID('[' + c.TABLE_SCHEMA + '].[' + c.TABLE_NAME + ']'), c.COLUMN_NAME, 'IsIdentity') as 'IsIdentity',\",\n      \"CAST(prop.value AS NVARCHAR) AS 'Comment'\",\n      'FROM',\n      'INFORMATION_SCHEMA.TABLES t',\n      'INNER JOIN',\n      'INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME AND t.TABLE_SCHEMA = c.TABLE_SCHEMA',\n      'LEFT JOIN (SELECT tc.table_schema, tc.table_name, ',\n      'cu.column_name, tc.CONSTRAINT_TYPE ',\n      'FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc ',\n      'JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE  cu ',\n      'ON tc.table_schema=cu.table_schema and tc.table_name=cu.table_name ',\n      'and tc.constraint_name=cu.constraint_name ',\n      'and tc.CONSTRAINT_TYPE=\\'PRIMARY KEY\\') pk ',\n      'ON pk.table_schema=c.table_schema ',\n      'AND pk.table_name=c.table_name ',\n      'AND pk.column_name=c.column_name ',\n      'INNER JOIN sys.columns AS sc',\n      \"ON sc.object_id = OBJECT_ID('[' + t.TABLE_SCHEMA + '].[' + t.TABLE_NAME + ']') AND sc.name = c.column_name\",\n      'LEFT JOIN sys.extended_properties prop ON prop.major_id = sc.object_id',\n      'AND prop.minor_id = sc.column_id',\n      \"AND prop.name = 'MS_Description'\",\n      'WHERE t.TABLE_NAME =', wrapSingleQuote(tableName)\n    ].join(' ');\n\n    if (schema) {\n      sql += `AND t.TABLE_SCHEMA =${wrapSingleQuote(schema)}`;\n    }\n\n    return sql;\n  }\n\n  renameTableQuery(before, after) {\n    return `EXEC sp_rename ${this.quoteTable(before)}, ${this.quoteTable(after)};`;\n  }\n\n  showTablesQuery() {\n    return \"SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';\";\n  }\n\n  tableExistsQuery(table) {\n    const tableName = table.tableName || table;\n    const schemaName = table.schema || 'dbo';\n\n    return `SELECT TABLE_NAME, TABLE_SCHEMA FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = ${this.escape(tableName)} AND TABLE_SCHEMA = ${this.escape(schemaName)}`;\n  }\n\n  dropTableQuery(tableName) {\n    const quoteTbl = this.quoteTable(tableName);\n    return Utils.joinSQLFragments([\n      `IF OBJECT_ID('${quoteTbl}', 'U') IS NOT NULL`,\n      'DROP TABLE',\n      quoteTbl,\n      ';'\n    ]);\n  }\n\n  addColumnQuery(table, key, dataType) {\n    // FIXME: attributeToSQL SHOULD be using attributes in addColumnQuery\n    //        but instead we need to pass the key along as the field here\n    dataType.field = key;\n    let commentStr = '';\n\n    if (dataType.comment && _.isString(dataType.comment)) {\n      commentStr = this.commentTemplate(dataType.comment, table, key);\n      // attributeToSQL will try to include `COMMENT 'Comment Text'` when it returns if the comment key\n      // is present. This is needed for createTable statement where that part is extracted with regex.\n      // Here we can intercept the object and remove comment property since we have the original object.\n      delete dataType['comment'];\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(table),\n      'ADD',\n      this.quoteIdentifier(key),\n      this.attributeToSQL(dataType, { context: 'addColumn' }),\n      ';',\n      commentStr\n    ]);\n  }\n\n  commentTemplate(comment, table, column) {\n    return ' EXEC sp_addextendedproperty ' +\n        `@name = N'MS_Description', @value = ${this.escape(comment)}, ` +\n        '@level0type = N\\'Schema\\', @level0name = \\'dbo\\', ' +\n        `@level1type = N'Table', @level1name = ${this.quoteIdentifier(table)}, ` +\n        `@level2type = N'Column', @level2name = ${this.quoteIdentifier(column)};`;\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP COLUMN',\n      this.quoteIdentifier(attributeName),\n      ';'\n    ]);\n  }\n\n  changeColumnQuery(tableName, attributes) {\n    const attrString = [],\n      constraintString = [];\n    let commentString = '';\n\n    for (const attributeName in attributes) {\n      const quotedAttrName = this.quoteIdentifier(attributeName);\n      let definition = attributes[attributeName];\n      if (definition.includes('COMMENT ')) {\n        const commentMatch = definition.match(/^(.+) (COMMENT.*)$/);\n        const commentText = commentMatch[2].replace('COMMENT', '').trim();\n        commentString += this.commentTemplate(commentText, tableName, attributeName);\n        // remove comment related substring from dataType\n        definition = commentMatch[1];\n      }\n      if (definition.includes('REFERENCES')) {\n        constraintString.push(`FOREIGN KEY (${quotedAttrName}) ${definition.replace(/.+?(?=REFERENCES)/, '')}`);\n      } else {\n        attrString.push(`${quotedAttrName} ${definition}`);\n      }\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      attrString.length && `ALTER COLUMN ${attrString.join(', ')}`,\n      constraintString.length && `ADD ${constraintString.join(', ')}`,\n      ';',\n      commentString\n    ]);\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n    const newName = Object.keys(attributes)[0];\n    return Utils.joinSQLFragments([\n      'EXEC sp_rename',\n      `'${this.quoteTable(tableName)}.${attrBefore}',`,\n      `'${newName}',`,\n      \"'COLUMN'\",\n      ';'\n    ]);\n  }\n\n  bulkInsertQuery(tableName, attrValueHashes, options, attributes) {\n    const quotedTable = this.quoteTable(tableName);\n    options = options || {};\n    attributes = attributes || {};\n\n    const tuples = [];\n    const allAttributes = [];\n    const allQueries = [];\n\n    let needIdentityInsertWrapper = false,\n      outputFragment = '';\n\n    if (options.returning) {\n      const returnValues = this.generateReturnValues(attributes, options);\n\n      outputFragment = returnValues.outputFragment;\n    }\n\n    const emptyQuery = `INSERT INTO ${quotedTable}${outputFragment} DEFAULT VALUES`;\n\n    attrValueHashes.forEach(attrValueHash => {\n      // special case for empty objects with primary keys\n      const fields = Object.keys(attrValueHash);\n      const firstAttr = attributes[fields[0]];\n      if (fields.length === 1 && firstAttr && firstAttr.autoIncrement && attrValueHash[fields[0]] === null) {\n        allQueries.push(emptyQuery);\n        return;\n      }\n\n      // normal case\n      _.forOwn(attrValueHash, (value, key) => {\n        if (value !== null && attributes[key] && attributes[key].autoIncrement) {\n          needIdentityInsertWrapper = true;\n        }\n\n        if (!allAttributes.includes(key)) {\n          if (value === null && attributes[key] && attributes[key].autoIncrement)\n            return;\n\n          allAttributes.push(key);\n        }\n      });\n    });\n\n    if (allAttributes.length > 0) {\n      attrValueHashes.forEach(attrValueHash => {\n        tuples.push(`(${\n          allAttributes.map(key =>\n            this.escape(attrValueHash[key])).join(',')\n        })`);\n      });\n\n      const quotedAttributes = allAttributes.map(attr => this.quoteIdentifier(attr)).join(',');\n      allQueries.push(tupleStr => `INSERT INTO ${quotedTable} (${quotedAttributes})${outputFragment} VALUES ${tupleStr};`);\n    }\n    const commands = [];\n    let offset = 0;\n    const batch = Math.floor(250 / (allAttributes.length + 1)) + 1;\n    while (offset < Math.max(tuples.length, 1)) {\n      const tupleStr = tuples.slice(offset, Math.min(tuples.length, offset + batch));\n      let generatedQuery = allQueries.map(v => typeof v === 'string' ? v : v(tupleStr)).join(';');\n      if (needIdentityInsertWrapper) {\n        generatedQuery = `SET IDENTITY_INSERT ${quotedTable} ON; ${generatedQuery}; SET IDENTITY_INSERT ${quotedTable} OFF;`;\n      }\n      commands.push(generatedQuery);\n      offset += batch;\n    }\n    return commands.join(';');\n  }\n\n  updateQuery(tableName, attrValueHash, where, options, attributes) {\n    const sql = super.updateQuery(tableName, attrValueHash, where, options, attributes);\n    if (options.limit) {\n      const updateArgs = `UPDATE TOP(${this.escape(options.limit)})`;\n      sql.query = sql.query.replace('UPDATE', updateArgs);\n    }\n    return sql;\n  }\n\n  upsertQuery(tableName, insertValues, updateValues, where, model) {\n    const targetTableAlias = this.quoteTable(`${tableName}_target`);\n    const sourceTableAlias = this.quoteTable(`${tableName}_source`);\n    const primaryKeysAttrs = [];\n    const identityAttrs = [];\n    const uniqueAttrs = [];\n    const tableNameQuoted = this.quoteTable(tableName);\n    let needIdentityInsertWrapper = false;\n\n    //Obtain primaryKeys, uniquekeys and identity attrs from rawAttributes as model is not passed\n    for (const key in model.rawAttributes) {\n      if (model.rawAttributes[key].primaryKey) {\n        primaryKeysAttrs.push(model.rawAttributes[key].field || key);\n      }\n      if (model.rawAttributes[key].unique) {\n        uniqueAttrs.push(model.rawAttributes[key].field || key);\n      }\n      if (model.rawAttributes[key].autoIncrement) {\n        identityAttrs.push(model.rawAttributes[key].field || key);\n      }\n    }\n\n    //Add unique indexes defined by indexes option to uniqueAttrs\n    for (const index of model._indexes) {\n      if (index.unique && index.fields) {\n        for (const field of index.fields) {\n          const fieldName = typeof field === 'string' ? field : field.name || field.attribute;\n          if (!uniqueAttrs.includes(fieldName) && model.rawAttributes[fieldName]) {\n            uniqueAttrs.push(fieldName);\n          }\n        }\n      }\n    }\n\n    const updateKeys = Object.keys(updateValues);\n    const insertKeys = Object.keys(insertValues);\n    const insertKeysQuoted = insertKeys.map(key => this.quoteIdentifier(key)).join(', ');\n    const insertValuesEscaped = insertKeys.map(key => this.escape(insertValues[key])).join(', ');\n    const sourceTableQuery = `VALUES(${insertValuesEscaped})`; //Virtual Table\n    let joinCondition;\n\n    //IDENTITY_INSERT Condition\n    identityAttrs.forEach(key => {\n      if (insertValues[key] && insertValues[key] !== null) {\n        needIdentityInsertWrapper = true;\n        /*\n         * IDENTITY_INSERT Column Cannot be updated, only inserted\n         * http://stackoverflow.com/a/30176254/2254360\n         */\n      }\n    });\n\n    //Filter NULL Clauses\n    const clauses = where[Op.or].filter(clause => {\n      let valid = true;\n      /*\n       * Exclude NULL Composite PK/UK. Partial Composite clauses should also be excluded as it doesn't guarantee a single row\n       */\n      for (const key in clause) {\n        if (typeof clause[key] === 'undefined' || clause[key] == null) {\n          valid = false;\n          break;\n        }\n      }\n      return valid;\n    });\n\n    /*\n     * Generate ON condition using PK(s).\n     * If not, generate using UK(s). Else throw error\n     */\n    const getJoinSnippet = array => {\n      return array.map(key => {\n        key = this.quoteIdentifier(key);\n        return `${targetTableAlias}.${key} = ${sourceTableAlias}.${key}`;\n      });\n    };\n\n    if (clauses.length === 0) {\n      throw new Error('Primary Key or Unique key should be passed to upsert query');\n    } else {\n      // Search for primary key attribute in clauses -- Model can have two separate unique keys\n      for (const key in clauses) {\n        const keys = Object.keys(clauses[key]);\n        if (primaryKeysAttrs.includes(keys[0])) {\n          joinCondition = getJoinSnippet(primaryKeysAttrs).join(' AND ');\n          break;\n        }\n      }\n      if (!joinCondition) {\n        joinCondition = getJoinSnippet(uniqueAttrs).join(' AND ');\n      }\n    }\n\n    // Remove the IDENTITY_INSERT Column from update\n    const filteredUpdateClauses = updateKeys.filter(key => !identityAttrs.includes(key))\n      .map(key => {\n        const value = this.escape(updateValues[key]);\n        key = this.quoteIdentifier(key);\n        return `${targetTableAlias}.${key} = ${value}`;\n      });\n    const updateSnippet = filteredUpdateClauses.length > 0 ? `WHEN MATCHED THEN UPDATE SET ${filteredUpdateClauses.join(', ')}` : '';\n\n    const insertSnippet = `(${insertKeysQuoted}) VALUES(${insertValuesEscaped})`;\n\n    let query = `MERGE INTO ${tableNameQuoted} WITH(HOLDLOCK) AS ${targetTableAlias} USING (${sourceTableQuery}) AS ${sourceTableAlias}(${insertKeysQuoted}) ON ${joinCondition}`;\n    query += ` ${updateSnippet} WHEN NOT MATCHED THEN INSERT ${insertSnippet} OUTPUT $action, INSERTED.*;`;\n    if (needIdentityInsertWrapper) {\n      query = `SET IDENTITY_INSERT ${tableNameQuoted} ON; ${query} SET IDENTITY_INSERT ${tableNameQuoted} OFF;`;\n    }\n    return query;\n  }\n\n  truncateTableQuery(tableName) {\n    return `TRUNCATE TABLE ${this.quoteTable(tableName)}`;\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    const table = this.quoteTable(tableName);\n    const whereClause = this.getWhereConditions(where, null, model, options);\n\n    return Utils.joinSQLFragments([\n      'DELETE',\n      options.limit && `TOP(${this.escape(options.limit)})`,\n      'FROM',\n      table,\n      whereClause && `WHERE ${whereClause}`,\n      ';',\n      'SELECT @@ROWCOUNT AS AFFECTEDROWS',\n      ';'\n    ]);\n  }\n\n  showIndexesQuery(tableName) {\n    return `EXEC sys.sp_helpindex @objname = N'${this.quoteTable(tableName)}';`;\n  }\n\n  showConstraintsQuery(tableName) {\n    return `EXEC sp_helpconstraint @objname = ${this.escape(this.quoteTable(tableName))};`;\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return `DROP INDEX ${this.quoteIdentifiers(indexName)} ON ${this.quoteIdentifiers(tableName)}`;\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    // handle self referential constraints\n    if (attribute.references) {\n\n      if (attribute.Model && attribute.Model.tableName === attribute.references.model) {\n        this.sequelize.log('MSSQL does not support self referencial constraints, '\n          + 'we will remove it but we recommend restructuring your query');\n        attribute.onDelete = '';\n        attribute.onUpdate = '';\n      }\n    }\n\n    let template;\n\n    if (attribute.type instanceof DataTypes.ENUM) {\n      if (attribute.type.values && !attribute.values) attribute.values = attribute.type.values;\n\n      // enums are a special case\n      template = attribute.type.toSql();\n      template += ` CHECK (${this.quoteIdentifier(attribute.field)} IN(${attribute.values.map(value => {\n        return this.escape(value);\n      }).join(', ') }))`;\n      return template;\n    }\n    template = attribute.type.toString();\n\n    if (attribute.allowNull === false) {\n      template += ' NOT NULL';\n    } else if (!attribute.primaryKey && !Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ' NULL';\n    }\n\n    if (attribute.autoIncrement) {\n      template += ' IDENTITY(1,1)';\n    }\n\n    // Blobs/texts cannot have a defaultValue\n    if (attribute.type !== 'TEXT' && attribute.type._binary !== true &&\n        Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n    }\n\n    if (attribute.unique === true) {\n      template += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      template += ' PRIMARY KEY';\n    }\n\n    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {\n      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;\n\n      if (attribute.references.key) {\n        template += ` (${this.quoteIdentifier(attribute.references.key)})`;\n      } else {\n        template += ` (${this.quoteIdentifier('id')})`;\n      }\n\n      if (attribute.onDelete) {\n        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;\n      }\n\n      if (attribute.onUpdate) {\n        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;\n      }\n    }\n\n    if (attribute.comment && typeof attribute.comment === 'string') {\n      template += ` COMMENT ${attribute.comment}`;\n    }\n\n    return template;\n  }\n\n  attributesToSQL(attributes, options) {\n    const result = {},\n      existingConstraints = [];\n    let key,\n      attribute;\n\n    for (key in attributes) {\n      attribute = attributes[key];\n\n      if (attribute.references) {\n        if (existingConstraints.includes(attribute.references.model.toString())) {\n          // no cascading constraints to a table more than once\n          attribute.onDelete = '';\n          attribute.onUpdate = '';\n        } else {\n          existingConstraints.push(attribute.references.model.toString());\n\n          // NOTE: this really just disables cascading updates for all\n          //       definitions. Can be made more robust to support the\n          //       few cases where MSSQL actually supports them\n          attribute.onUpdate = '';\n        }\n\n      }\n\n      if (key && !attribute.field) attribute.field = key;\n      result[attribute.field || key] = this.attributeToSQL(attribute, options);\n    }\n\n    return result;\n  }\n\n  createTrigger() {\n    throwMethodUndefined('createTrigger');\n  }\n\n  dropTrigger() {\n    throwMethodUndefined('dropTrigger');\n  }\n\n  renameTrigger() {\n    throwMethodUndefined('renameTrigger');\n  }\n\n  createFunction() {\n    throwMethodUndefined('createFunction');\n  }\n\n  dropFunction() {\n    throwMethodUndefined('dropFunction');\n  }\n\n  renameFunction() {\n    throwMethodUndefined('renameFunction');\n  }\n\n  /**\n   * Generate common SQL prefix for ForeignKeysQuery.\n   *\n   * @param {string} catalogName\n   * @returns {string}\n   */\n  _getForeignKeysQueryPrefix(catalogName) {\n    return `${'SELECT ' +\n        'constraint_name = OBJ.NAME, ' +\n        'constraintName = OBJ.NAME, '}${\n      catalogName ? `constraintCatalog = '${catalogName}', ` : ''\n    }constraintSchema = SCHEMA_NAME(OBJ.SCHEMA_ID), ` +\n        'tableName = TB.NAME, ' +\n        `tableSchema = SCHEMA_NAME(TB.SCHEMA_ID), ${\n          catalogName ? `tableCatalog = '${catalogName}', ` : ''\n        }columnName = COL.NAME, ` +\n        `referencedTableSchema = SCHEMA_NAME(RTB.SCHEMA_ID), ${\n          catalogName ? `referencedCatalog = '${catalogName}', ` : ''\n        }referencedTableName = RTB.NAME, ` +\n        'referencedColumnName = RCOL.NAME ' +\n      'FROM sys.foreign_key_columns FKC ' +\n        'INNER JOIN sys.objects OBJ ON OBJ.OBJECT_ID = FKC.CONSTRAINT_OBJECT_ID ' +\n        'INNER JOIN sys.tables TB ON TB.OBJECT_ID = FKC.PARENT_OBJECT_ID ' +\n        'INNER JOIN sys.columns COL ON COL.COLUMN_ID = PARENT_COLUMN_ID AND COL.OBJECT_ID = TB.OBJECT_ID ' +\n        'INNER JOIN sys.tables RTB ON RTB.OBJECT_ID = FKC.REFERENCED_OBJECT_ID ' +\n        'INNER JOIN sys.columns RCOL ON RCOL.COLUMN_ID = REFERENCED_COLUMN_ID AND RCOL.OBJECT_ID = RTB.OBJECT_ID';\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys details of a table.\n   *\n   * @param {string|object} table\n   * @param {string} catalogName database name\n   * @returns {string}\n   */\n  getForeignKeysQuery(table, catalogName) {\n    const tableName = table.tableName || table;\n    let sql = `${this._getForeignKeysQueryPrefix(catalogName)\n    } WHERE TB.NAME =${wrapSingleQuote(tableName)}`;\n\n    if (table.schema) {\n      sql += ` AND SCHEMA_NAME(TB.SCHEMA_ID) =${wrapSingleQuote(table.schema)}`;\n    }\n    return sql;\n  }\n\n  getForeignKeyQuery(table, attributeName) {\n    const tableName = table.tableName || table;\n    return Utils.joinSQLFragments([\n      this._getForeignKeysQueryPrefix(),\n      'WHERE',\n      `TB.NAME =${wrapSingleQuote(tableName)}`,\n      'AND',\n      `COL.NAME =${wrapSingleQuote(attributeName)}`,\n      table.schema && `AND SCHEMA_NAME(TB.SCHEMA_ID) =${wrapSingleQuote(table.schema)}`\n    ]);\n  }\n\n  getPrimaryKeyConstraintQuery(table, attributeName) {\n    const tableName = wrapSingleQuote(table.tableName || table);\n    return Utils.joinSQLFragments([\n      'SELECT K.TABLE_NAME AS tableName,',\n      'K.COLUMN_NAME AS columnName,',\n      'K.CONSTRAINT_NAME AS constraintName',\n      'FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS C',\n      'JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS K',\n      'ON C.TABLE_NAME = K.TABLE_NAME',\n      'AND C.CONSTRAINT_CATALOG = K.CONSTRAINT_CATALOG',\n      'AND C.CONSTRAINT_SCHEMA = K.CONSTRAINT_SCHEMA',\n      'AND C.CONSTRAINT_NAME = K.CONSTRAINT_NAME',\n      'WHERE C.CONSTRAINT_TYPE = \\'PRIMARY KEY\\'',\n      `AND K.COLUMN_NAME = ${wrapSingleQuote(attributeName)}`,\n      `AND K.TABLE_NAME = ${tableName}`,\n      ';'\n    ]);\n  }\n\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP',\n      this.quoteIdentifier(foreignKey)\n    ]);\n  }\n\n  getDefaultConstraintQuery(tableName, attributeName) {\n    const quotedTable = this.quoteTable(tableName);\n    return Utils.joinSQLFragments([\n      'SELECT name FROM sys.default_constraints',\n      `WHERE PARENT_OBJECT_ID = OBJECT_ID('${quotedTable}', 'U')`,\n      `AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns WHERE NAME = ('${attributeName}')`,\n      `AND object_id = OBJECT_ID('${quotedTable}', 'U'))`,\n      ';'\n    ]);\n  }\n\n  dropConstraintQuery(tableName, constraintName) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP CONSTRAINT',\n      this.quoteIdentifier(constraintName),\n      ';'\n    ]);\n  }\n\n  setIsolationLevelQuery() {\n\n  }\n\n  generateTransactionId() {\n    return randomBytes(10).toString('hex');\n  }\n\n  startTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `SAVE TRANSACTION ${this.quoteIdentifier(transaction.name)};`;\n    }\n\n    return 'BEGIN TRANSACTION;';\n  }\n\n  commitTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return;\n    }\n\n    return 'COMMIT TRANSACTION;';\n  }\n\n  rollbackTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `ROLLBACK TRANSACTION ${this.quoteIdentifier(transaction.name)};`;\n    }\n\n    return 'ROLLBACK TRANSACTION;';\n  }\n\n  selectFromTableFragment(options, model, attributes, tables, mainTableAs, where) {\n    this._throwOnEmptyAttributes(attributes, { modelName: model && model.name, as: mainTableAs });\n\n    const dbVersion = this.sequelize.options.databaseVersion;\n    const isSQLServer2008 = semver.valid(dbVersion) && semver.lt(dbVersion, '11.0.0');\n\n    if (isSQLServer2008 && options.offset) {\n      // For earlier versions of SQL server, we need to nest several queries\n      // in order to emulate the OFFSET behavior.\n      //\n      // 1. The outermost query selects all items from the inner query block.\n      //    This is due to a limitation in SQL server with the use of computed\n      //    columns (e.g. SELECT ROW_NUMBER()...AS x) in WHERE clauses.\n      // 2. The next query handles the LIMIT and OFFSET behavior by getting\n      //    the TOP N rows of the query where the row number is > OFFSET\n      // 3. The innermost query is the actual set we want information from\n\n      const offset = options.offset || 0;\n      const isSubQuery = options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation;\n      let orders = { mainQueryOrder: [] };\n      if (options.order) {\n        orders = this.getQueryOrders(options, model, isSubQuery);\n      }\n\n      if (orders.mainQueryOrder.length === 0) {\n        orders.mainQueryOrder.push(this.quoteIdentifier(model.primaryKeyField));\n      }\n\n      const tmpTable = mainTableAs || 'OffsetTable';\n\n      if (options.include) {\n        const subQuery = options.subQuery === undefined ? options.limit && options.hasMultiAssociation : options.subQuery;\n        const mainTable = {\n          name: mainTableAs,\n          quotedName: null,\n          as: null,\n          model\n        };\n        const topLevelInfo = {\n          names: mainTable,\n          options,\n          subQuery\n        };\n\n        let mainJoinQueries = [];\n        for (const include of options.include) {\n          if (include.separate) {\n            continue;\n          }\n          const joinQueries = this.generateInclude(include, { externalAs: mainTableAs, internalAs: mainTableAs }, topLevelInfo);\n          mainJoinQueries = mainJoinQueries.concat(joinQueries.mainQuery);\n        }\n\n        return Utils.joinSQLFragments([\n          'SELECT TOP 100 PERCENT',\n          attributes.join(', '),\n          'FROM (',\n          [\n            'SELECT',\n            options.limit && `TOP ${options.limit}`,\n            '* FROM (',\n            [\n              'SELECT ROW_NUMBER() OVER (',\n              [\n                'ORDER BY',\n                orders.mainQueryOrder.join(', ')\n              ],\n              `) as row_num, ${tmpTable}.* FROM (`,\n              [\n                'SELECT DISTINCT',\n                `${tmpTable}.* FROM ${tables} AS ${tmpTable}`,\n                mainJoinQueries,\n                where && `WHERE ${where}`\n              ],\n              `) AS ${tmpTable}`\n            ],\n            `) AS ${tmpTable} WHERE row_num > ${offset}`\n          ],\n          `) AS ${tmpTable}`\n        ]);\n      }\n      return Utils.joinSQLFragments([\n        'SELECT TOP 100 PERCENT',\n        attributes.join(', '),\n        'FROM (',\n        [\n          'SELECT',\n          options.limit && `TOP ${options.limit}`,\n          '* FROM (',\n          [\n            'SELECT ROW_NUMBER() OVER (',\n            [\n              'ORDER BY',\n              orders.mainQueryOrder.join(', ')\n            ],\n            `) as row_num, * FROM ${tables} AS ${tmpTable}`,\n            where && `WHERE ${where}`\n          ],\n          `) AS ${tmpTable} WHERE row_num > ${offset}`\n        ],\n        `) AS ${tmpTable}`\n      ]);\n    }\n\n    return Utils.joinSQLFragments([\n      'SELECT',\n      isSQLServer2008 && options.limit && `TOP ${options.limit}`,\n      attributes.join(', '),\n      `FROM ${tables}`,\n      mainTableAs && `AS ${mainTableAs}`,\n      options.tableHint && TableHints[options.tableHint] && `WITH (${TableHints[options.tableHint]})`\n    ]);\n  }\n\n  addLimitAndOffset(options, model) {\n    // Skip handling of limit and offset as postfixes for older SQL Server versions\n    if (semver.valid(this.sequelize.options.databaseVersion) && semver.lt(this.sequelize.options.databaseVersion, '11.0.0')) {\n      return '';\n    }\n\n    const offset = options.offset || 0;\n    const isSubQuery = options.subQuery === undefined\n      ? options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation\n      : options.subQuery;\n\n    let fragment = '';\n    let orders = {};\n\n    if (options.order) {\n      orders = this.getQueryOrders(options, model, isSubQuery);\n    }\n\n    if (options.limit || options.offset) {\n      // TODO: document why this is adding the primary key of the model in ORDER BY\n      //  if options.include is set\n      if (!options.order || options.order.length === 0 || options.include && orders.subQueryOrder.length === 0) {\n        let primaryKey = model.primaryKeyField;\n\n        const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(primaryKey)}`;\n        const aliasedAttribute = (options.attributes || []).find(attr => Array.isArray(attr)\n            && attr[1]\n            && (attr[0] === primaryKey || attr[1] === primaryKey));\n\n        if (aliasedAttribute) {\n          const modelName = this.quoteIdentifier(options.tableAs || model.name);\n          const alias = this._getAliasForField(modelName, aliasedAttribute[1], options);\n\n          primaryKey = new Utils.Col(alias || aliasedAttribute[1]);\n        }\n\n        if (!options.order || !options.order.length) {\n          fragment += ` ORDER BY ${tablePkFragment}`;\n        } else {\n          const orderFieldNames = (options.order || []).map(order => {\n            const value = Array.isArray(order) ? order[0] : order;\n\n            if (value instanceof Utils.Col) {\n              return value.col;\n            }\n\n            if (value instanceof Utils.Literal) {\n              return value.val;\n            }\n\n            return value;\n          });\n          const primaryKeyFieldAlreadyPresent = orderFieldNames.some(\n            fieldName => fieldName === (primaryKey.col || primaryKey)\n          );\n\n          if (!primaryKeyFieldAlreadyPresent) {\n            fragment += options.order && !isSubQuery ? ', ' : ' ORDER BY ';\n            fragment += tablePkFragment;\n          }\n        }\n      }\n\n      if (options.offset || options.limit) {\n        fragment += ` OFFSET ${this.escape(offset)} ROWS`;\n      }\n\n      if (options.limit) {\n        fragment += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;\n      }\n    }\n\n    return fragment;\n  }\n\n  booleanValue(value) {\n    return value ? 1 : 0;\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return `[${identifier.replace(/[[\\]']+/g, '')}]`;\n  }\n}\n\n// private methods\nfunction wrapSingleQuote(identifier) {\n  return Utils.addTicks(Utils.removeTicks(identifier, \"'\"), \"'\");\n}\n\nmodule.exports = MSSQLQueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const _ = require("lodash");
-const Utils = require("../../utils");
-const QueryTypes = require("../../query-types");
-const Op = require("../../operators");
-const { QueryInterface } = require("../abstract/query-interface");
-class MSSqlQueryInterface extends QueryInterface {
-  async removeColumn(tableName, attributeName, options) {
-    options = __spreadValues({ raw: true }, options || {});
-    const findConstraintSql = this.queryGenerator.getDefaultConstraintQuery(tableName, attributeName);
-    const [results0] = await this.sequelize.query(findConstraintSql, options);
-    if (results0.length) {
-      const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, results0[0].name);
-      await this.sequelize.query(dropConstraintSql, options);
-    }
-    const findForeignKeySql = this.queryGenerator.getForeignKeyQuery(tableName, attributeName);
-    const [results] = await this.sequelize.query(findForeignKeySql, options);
-    if (results.length) {
-      const dropForeignKeySql = this.queryGenerator.dropForeignKeyQuery(tableName, results[0].constraint_name);
-      await this.sequelize.query(dropForeignKeySql, options);
-    }
-    const primaryKeyConstraintSql = this.queryGenerator.getPrimaryKeyConstraintQuery(tableName, attributeName);
-    const [result] = await this.sequelize.query(primaryKeyConstraintSql, options);
-    if (result.length) {
-      const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, result[0].constraintName);
-      await this.sequelize.query(dropConstraintSql, options);
-    }
-    const removeSql = this.queryGenerator.removeColumnQuery(tableName, attributeName);
-    return this.sequelize.query(removeSql, options);
-  }
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    const model = options.model;
-    const wheres = [];
-    options = __spreadValues({}, options);
-    if (!Utils.isWhereEmpty(where)) {
-      wheres.push(where);
-    }
-    let indexes = Object.values(model.uniqueKeys).map((item) => item.fields);
-    indexes = indexes.concat(Object.values(model._indexes).filter((item) => item.unique).map((item) => item.fields));
-    const attributes = Object.keys(insertValues);
-    for (const index of indexes) {
-      if (_.intersection(attributes, index).length === index.length) {
-        where = {};
-        for (const field of index) {
-          where[field] = insertValues[field];
-        }
-        wheres.push(where);
-      }
-    }
-    where = { [Op.or]: wheres };
-    options.type = QueryTypes.UPSERT;
-    options.raw = true;
-    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);
-    return await this.sequelize.query(sql, options);
-  }
-}
-exports.MSSqlQueryInterface = MSSqlQueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\n\nconst Utils = require('../../utils');\nconst QueryTypes = require('../../query-types');\nconst Op = require('../../operators');\nconst { QueryInterface } = require('../abstract/query-interface');\n\n/**\n * The interface that Sequelize uses to talk with MSSQL database\n */\nclass MSSqlQueryInterface extends QueryInterface {\n  /**\n  * A wrapper that fixes MSSQL's inability to cleanly remove columns from existing tables if they have a default constraint.\n  *\n  * @override\n  */\n  async removeColumn(tableName, attributeName, options) {\n    options = { raw: true, ...options || {} };\n\n    const findConstraintSql = this.queryGenerator.getDefaultConstraintQuery(tableName, attributeName);\n    const [results0] = await this.sequelize.query(findConstraintSql, options);\n    if (results0.length) {\n      // No default constraint found -- we can cleanly remove the column\n      const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, results0[0].name);\n      await this.sequelize.query(dropConstraintSql, options);\n    }\n    const findForeignKeySql = this.queryGenerator.getForeignKeyQuery(tableName, attributeName);\n    const [results] = await this.sequelize.query(findForeignKeySql, options);\n    if (results.length) {\n      // No foreign key constraints found, so we can remove the column\n      const dropForeignKeySql = this.queryGenerator.dropForeignKeyQuery(tableName, results[0].constraint_name);\n      await this.sequelize.query(dropForeignKeySql, options);\n    }\n    //Check if the current column is a primaryKey\n    const primaryKeyConstraintSql = this.queryGenerator.getPrimaryKeyConstraintQuery(tableName, attributeName);\n    const [result] = await this.sequelize.query(primaryKeyConstraintSql, options);\n    if (result.length) {\n      const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, result[0].constraintName);\n      await this.sequelize.query(dropConstraintSql, options);\n    }\n    const removeSql = this.queryGenerator.removeColumnQuery(tableName, attributeName);\n    return this.sequelize.query(removeSql, options);\n  }\n\n  /**\n   * @override\n   */\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    const model = options.model;\n    const wheres = [];\n\n    options = { ...options };\n\n    if (!Utils.isWhereEmpty(where)) {\n      wheres.push(where);\n    }\n\n    // Lets combine unique keys and indexes into one\n    let indexes = Object.values(model.uniqueKeys).map(item => item.fields);\n    indexes = indexes.concat(Object.values(model._indexes).filter(item => item.unique).map(item => item.fields));\n\n    const attributes = Object.keys(insertValues);\n    for (const index of indexes) {\n      if (_.intersection(attributes, index).length === index.length) {\n        where = {};\n        for (const field of index) {\n          where[field] = insertValues[field];\n        }\n        wheres.push(where);\n      }\n    }\n\n    where = { [Op.or]: wheres };\n\n    options.type = QueryTypes.UPSERT;\n    options.raw = true;\n\n    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);\n    return await this.sequelize.query(sql, options);\n  }\n}\n\nexports.MSSqlQueryInterface = MSSqlQueryInterface;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,IAAI,QAAQ;AAElB,MAAM,QAAQ,QAAQ;AACtB,MAAM,aAAa,QAAQ;AAC3B,MAAM,KAAK,QAAQ;AACnB,MAAM,EAAE,mBAAmB,QAAQ;AAKnC,kCAAkC,eAAe;AAAA,QAMzC,aAAa,WAAW,eAAe,SAAS;AACpD,cAAU,iBAAE,KAAK,QAAS,WAAW;AAErC,UAAM,oBAAoB,KAAK,eAAe,0BAA0B,WAAW;AACnF,UAAM,CAAC,YAAY,MAAM,KAAK,UAAU,MAAM,mBAAmB;AACjE,QAAI,SAAS,QAAQ;AAEnB,YAAM,oBAAoB,KAAK,eAAe,oBAAoB,WAAW,SAAS,GAAG;AACzF,YAAM,KAAK,UAAU,MAAM,mBAAmB;AAAA;AAEhD,UAAM,oBAAoB,KAAK,eAAe,mBAAmB,WAAW;AAC5E,UAAM,CAAC,WAAW,MAAM,KAAK,UAAU,MAAM,mBAAmB;AAChE,QAAI,QAAQ,QAAQ;AAElB,YAAM,oBAAoB,KAAK,eAAe,oBAAoB,WAAW,QAAQ,GAAG;AACxF,YAAM,KAAK,UAAU,MAAM,mBAAmB;AAAA;AAGhD,UAAM,0BAA0B,KAAK,eAAe,6BAA6B,WAAW;AAC5F,UAAM,CAAC,UAAU,MAAM,KAAK,UAAU,MAAM,yBAAyB;AACrE,QAAI,OAAO,QAAQ;AACjB,YAAM,oBAAoB,KAAK,eAAe,oBAAoB,WAAW,OAAO,GAAG;AACvF,YAAM,KAAK,UAAU,MAAM,mBAAmB;AAAA;AAEhD,UAAM,YAAY,KAAK,eAAe,kBAAkB,WAAW;AACnE,WAAO,KAAK,UAAU,MAAM,WAAW;AAAA;AAAA,QAMnC,OAAO,WAAW,cAAc,cAAc,OAAO,SAAS;AAClE,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS;AAEf,cAAU,mBAAK;AAEf,QAAI,CAAC,MAAM,aAAa,QAAQ;AAC9B,aAAO,KAAK;AAAA;AAId,QAAI,UAAU,OAAO,OAAO,MAAM,YAAY,IAAI,UAAQ,KAAK;AAC/D,cAAU,QAAQ,OAAO,OAAO,OAAO,MAAM,UAAU,OAAO,UAAQ,KAAK,QAAQ,IAAI,UAAQ,KAAK;AAEpG,UAAM,aAAa,OAAO,KAAK;AAC/B,eAAW,SAAS,SAAS;AAC3B,UAAI,EAAE,aAAa,YAAY,OAAO,WAAW,MAAM,QAAQ;AAC7D,gBAAQ;AACR,mBAAW,SAAS,OAAO;AACzB,gBAAM,SAAS,aAAa;AAAA;AAE9B,eAAO,KAAK;AAAA;AAAA;AAIhB,YAAQ,GAAG,GAAG,KAAK;AAEnB,YAAQ,OAAO,WAAW;AAC1B,YAAQ,MAAM;AAEd,UAAM,MAAM,KAAK,eAAe,YAAY,WAAW,cAAc,cAAc,OAAO,OAAO;AACjG,WAAO,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA;AAAA;AAI3C,QAAQ,sBAAsB;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,330 +1,0 @@
-"use strict";
-const AbstractQuery = require("../abstract/query");
-const sequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("mssql");
-const _ = require("lodash");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("sql:mssql");
-const minSafeIntegerAsBigInt = BigInt(Number.MIN_SAFE_INTEGER);
-const maxSafeIntegerAsBigInt = BigInt(Number.MAX_SAFE_INTEGER);
-function getScale(aNum) {
-  if (!Number.isFinite(aNum))
-    return 0;
-  let e = 1;
-  while (Math.round(aNum * e) / e !== aNum)
-    e *= 10;
-  return Math.log10(e);
-}
-class Query extends AbstractQuery {
-  getInsertIdField() {
-    return "id";
-  }
-  getSQLTypeFromJsType(value, TYPES) {
-    const paramType = { type: TYPES.NVarChar, typeOptions: {}, value };
-    if (typeof value === "number") {
-      if (Number.isInteger(value)) {
-        if (value >= -2147483648 && value <= 2147483647) {
-          paramType.type = TYPES.Int;
-        } else {
-          paramType.type = TYPES.BigInt;
-        }
-      } else {
-        paramType.type = TYPES.Numeric;
-        paramType.typeOptions = { precision: 30, scale: getScale(value) };
-      }
-    } else if (typeof value === "bigint") {
-      if (value < minSafeIntegerAsBigInt || value > maxSafeIntegerAsBigInt) {
-        paramType.type = TYPES.VarChar;
-        paramType.value = value.toString();
-      } else {
-        return this.getSQLTypeFromJsType(Number(value), TYPES);
-      }
-    } else if (typeof value === "boolean") {
-      paramType.type = TYPES.Bit;
-    }
-    if (Buffer.isBuffer(value)) {
-      paramType.type = TYPES.VarBinary;
-    }
-    return paramType;
-  }
-  async _run(connection, sql, parameters, errStack) {
-    this.sql = sql;
-    const { options } = this;
-    const complete = this._logQuery(sql, debug, parameters);
-    const query = new Promise((resolve, reject) => {
-      if (sql.startsWith("BEGIN TRANSACTION")) {
-        return connection.beginTransaction((error) => error ? reject(error) : resolve([]), options.transaction.name, connection.lib.ISOLATION_LEVEL[options.isolationLevel]);
-      }
-      if (sql.startsWith("COMMIT TRANSACTION")) {
-        return connection.commitTransaction((error) => error ? reject(error) : resolve([]));
-      }
-      if (sql.startsWith("ROLLBACK TRANSACTION")) {
-        return connection.rollbackTransaction((error) => error ? reject(error) : resolve([]), options.transaction.name);
-      }
-      if (sql.startsWith("SAVE TRANSACTION")) {
-        return connection.saveTransaction((error) => error ? reject(error) : resolve([]), options.transaction.name);
-      }
-      const rows2 = [];
-      const request = new connection.lib.Request(sql, (err, rowCount2) => err ? reject(err) : resolve([rows2, rowCount2]));
-      if (parameters) {
-        _.forOwn(parameters, (value, key) => {
-          const paramType = this.getSQLTypeFromJsType(value, connection.lib.TYPES);
-          request.addParameter(key, paramType.type, value, paramType.typeOptions);
-        });
-      }
-      request.on("row", (columns) => {
-        rows2.push(columns);
-      });
-      connection.execSql(request);
-    });
-    let rows, rowCount;
-    try {
-      [rows, rowCount] = await query;
-    } catch (err) {
-      err.sql = sql;
-      err.parameters = parameters;
-      throw this.formatError(err, errStack);
-    }
-    complete();
-    if (Array.isArray(rows)) {
-      rows = rows.map((columns) => {
-        const row = {};
-        for (const column of columns) {
-          const typeid = column.metadata.type.id;
-          const parse = parserStore.get(typeid);
-          let value = column.value;
-          if (value !== null & !!parse) {
-            value = parse(value);
-          }
-          row[column.metadata.colName] = value;
-        }
-        return row;
-      });
-    }
-    return this.formatResults(rows, rowCount);
-  }
-  run(sql, parameters) {
-    const errForStack = new Error();
-    return this.connection.queue.enqueue(() => this._run(this.connection, sql, parameters, errForStack.stack));
-  }
-  static formatBindParameters(sql, values, dialect) {
-    const bindParam = {};
-    const replacementFunc = (match, key, values2) => {
-      if (values2[key] !== void 0) {
-        bindParam[key] = values2[key];
-        return `@${key}`;
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    return [sql, bindParam];
-  }
-  formatResults(data, rowCount) {
-    if (this.isInsertQuery(data)) {
-      this.handleInsertQuery(data);
-      return [this.instance || data, rowCount];
-    }
-    if (this.isShowTablesQuery()) {
-      return this.handleShowTablesQuery(data);
-    }
-    if (this.isDescribeQuery()) {
-      const result = {};
-      for (const _result of data) {
-        if (_result.Default) {
-          _result.Default = _result.Default.replace("('", "").replace("')", "").replace(/'/g, "");
-        }
-        result[_result.Name] = {
-          type: _result.Type.toUpperCase(),
-          allowNull: _result.IsNull === "YES" ? true : false,
-          defaultValue: _result.Default,
-          primaryKey: _result.Constraint === "PRIMARY KEY",
-          autoIncrement: _result.IsIdentity === 1,
-          comment: _result.Comment
-        };
-        if (result[_result.Name].type.includes("CHAR") && _result.Length) {
-          if (_result.Length === -1) {
-            result[_result.Name].type += "(MAX)";
-          } else {
-            result[_result.Name].type += `(${_result.Length})`;
-          }
-        }
-      }
-      return result;
-    }
-    if (this.isSelectQuery()) {
-      return this.handleSelectQuery(data);
-    }
-    if (this.isShowIndexesQuery()) {
-      return this.handleShowIndexesQuery(data);
-    }
-    if (this.isCallQuery()) {
-      return data[0];
-    }
-    if (this.isBulkUpdateQuery()) {
-      if (this.options.returning) {
-        return this.handleSelectQuery(data);
-      }
-      return rowCount;
-    }
-    if (this.isBulkDeleteQuery()) {
-      return data[0] ? data[0].AFFECTEDROWS : 0;
-    }
-    if (this.isVersionQuery()) {
-      return data[0].version;
-    }
-    if (this.isForeignKeysQuery()) {
-      return data;
-    }
-    if (this.isUpsertQuery()) {
-      if (data && data.length === 0) {
-        return [this.instance || data, false];
-      }
-      this.handleInsertQuery(data);
-      return [this.instance || data, data[0].$action === "INSERT"];
-    }
-    if (this.isUpdateQuery()) {
-      return [this.instance || data, rowCount];
-    }
-    if (this.isShowConstraintsQuery()) {
-      return this.handleShowConstraintsQuery(data);
-    }
-    if (this.isRawQuery()) {
-      return [data, rowCount];
-    }
-    return data;
-  }
-  handleShowTablesQuery(results) {
-    return results.map((resultSet) => {
-      return {
-        tableName: resultSet.TABLE_NAME,
-        schema: resultSet.TABLE_SCHEMA
-      };
-    });
-  }
-  handleShowConstraintsQuery(data) {
-    return data.slice(1).map((result) => {
-      const constraint = {};
-      for (const key in result) {
-        constraint[_.camelCase(key)] = result[key];
-      }
-      return constraint;
-    });
-  }
-  formatError(err, errStack) {
-    let match;
-    match = err.message.match(/Violation of (?:UNIQUE|PRIMARY) KEY constraint '([^']*)'. Cannot insert duplicate key in object '.*'.(:? The duplicate key value is \((.*)\).)?/);
-    match = match || err.message.match(/Cannot insert duplicate key row in object .* with unique index '(.*)'/);
-    if (match && match.length > 1) {
-      let fields = {};
-      const uniqueKey = this.model && this.model.uniqueKeys[match[1]];
-      let message = "Validation error";
-      if (uniqueKey && !!uniqueKey.msg) {
-        message = uniqueKey.msg;
-      }
-      if (match[3]) {
-        const values = match[3].split(",").map((part) => part.trim());
-        if (uniqueKey) {
-          fields = _.zipObject(uniqueKey.fields, values);
-        } else {
-          fields[match[1]] = match[3];
-        }
-      }
-      const errors = [];
-      _.forOwn(fields, (value, field) => {
-        errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-      });
-      return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-    }
-    match = err.message.match(/Failed on step '(.*)'.Could not create constraint. See previous errors./) || err.message.match(/The DELETE statement conflicted with the REFERENCE constraint "(.*)". The conflict occurred in database "(.*)", table "(.*)", column '(.*)'./) || err.message.match(/The (?:INSERT|MERGE|UPDATE) statement conflicted with the FOREIGN KEY constraint "(.*)". The conflict occurred in database "(.*)", table "(.*)", column '(.*)'./);
-    if (match && match.length > 0) {
-      return new sequelizeErrors.ForeignKeyConstraintError({
-        fields: null,
-        index: match[1],
-        parent: err,
-        stack: errStack
-      });
-    }
-    match = err.message.match(/Could not drop constraint. See previous errors./);
-    if (match && match.length > 0) {
-      let constraint = err.sql.match(/(?:constraint|index) \[(.+?)\]/i);
-      constraint = constraint ? constraint[1] : void 0;
-      let table = err.sql.match(/table \[(.+?)\]/i);
-      table = table ? table[1] : void 0;
-      return new sequelizeErrors.UnknownConstraintError({
-        message: match[1],
-        constraint,
-        table,
-        parent: err,
-        stack: errStack
-      });
-    }
-    return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-  }
-  isShowOrDescribeQuery() {
-    let result = false;
-    result = result || this.sql.toLowerCase().startsWith("select c.column_name as 'name', c.data_type as 'type', c.is_nullable as 'isnull'");
-    result = result || this.sql.toLowerCase().startsWith("select tablename = t.name, name = ind.name,");
-    result = result || this.sql.toLowerCase().startsWith("exec sys.sp_helpindex @objname");
-    return result;
-  }
-  isShowIndexesQuery() {
-    return this.sql.toLowerCase().startsWith("exec sys.sp_helpindex @objname");
-  }
-  handleShowIndexesQuery(data) {
-    data = data.reduce((acc, item) => {
-      if (!(item.index_name in acc)) {
-        acc[item.index_name] = item;
-        item.fields = [];
-      }
-      item.index_keys.split(",").forEach((column) => {
-        let columnName = column.trim();
-        if (columnName.includes("(-)")) {
-          columnName = columnName.replace("(-)", "");
-        }
-        acc[item.index_name].fields.push({
-          attribute: columnName,
-          length: void 0,
-          order: column.includes("(-)") ? "DESC" : "ASC",
-          collate: void 0
-        });
-      });
-      delete item.index_keys;
-      return acc;
-    }, {});
-    return _.map(data, (item) => ({
-      primary: item.index_name.toLowerCase().startsWith("pk"),
-      fields: item.fields,
-      name: item.index_name,
-      tableName: void 0,
-      unique: item.index_description.toLowerCase().includes("unique"),
-      type: void 0
-    }));
-  }
-  handleInsertQuery(results, metaData) {
-    if (this.instance) {
-      const autoIncrementAttribute = this.model.autoIncrementAttribute;
-      let id = null;
-      let autoIncrementAttributeAlias = null;
-      if (Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementAttribute) && this.model.rawAttributes[autoIncrementAttribute].field !== void 0)
-        autoIncrementAttributeAlias = this.model.rawAttributes[autoIncrementAttribute].field;
-      id = id || results && results[0][this.getInsertIdField()];
-      id = id || metaData && metaData[this.getInsertIdField()];
-      id = id || results && results[0][autoIncrementAttribute];
-      id = id || autoIncrementAttributeAlias && results && results[0][autoIncrementAttributeAlias];
-      this.instance[autoIncrementAttribute] = id;
-      if (this.instance.dataValues) {
-        for (const key in results[0]) {
-          if (Object.prototype.hasOwnProperty.call(results[0], key)) {
-            const record = results[0][key];
-            const attr = _.find(this.model.rawAttributes, (attribute) => attribute.fieldName === key || attribute.field === key);
-            this.instance.dataValues[attr && attr.fieldName || key] = record;
-          }
-        }
-      }
-    }
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mssql/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mssql/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mssql/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst sequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('mssql');\nconst _ = require('lodash');\nconst { logger } = require('../../utils/logger');\n\nconst debug = logger.debugContext('sql:mssql');\n\nconst minSafeIntegerAsBigInt = BigInt(Number.MIN_SAFE_INTEGER);\nconst maxSafeIntegerAsBigInt = BigInt(Number.MAX_SAFE_INTEGER);\n\nfunction getScale(aNum) {\n  if (!Number.isFinite(aNum)) return 0;\n  let e = 1;\n  while (Math.round(aNum * e) / e !== aNum) e *= 10;\n  return Math.log10(e);\n}\n\nclass Query extends AbstractQuery {\n  getInsertIdField() {\n    return 'id';\n  }\n\n  getSQLTypeFromJsType(value, TYPES) {\n    const paramType = { type: TYPES.NVarChar, typeOptions: {}, value };\n    if (typeof value === 'number') {\n      if (Number.isInteger(value)) {\n        if (value >= -2147483648 && value <= 2147483647) {\n          paramType.type = TYPES.Int;\n        } else {\n          paramType.type = TYPES.BigInt;\n        }\n      } else {\n        paramType.type = TYPES.Numeric;\n        //Default to a reasonable numeric precision/scale pending more sophisticated logic\n        paramType.typeOptions = { precision: 30, scale: getScale(value) };\n      }\n    } else if (typeof value === 'bigint') {\n      if (value < minSafeIntegerAsBigInt || value > maxSafeIntegerAsBigInt) {\n        paramType.type = TYPES.VarChar;\n        paramType.value = value.toString();\n      } else {\n        return this.getSQLTypeFromJsType(Number(value), TYPES);\n      }\n    } else if (typeof value === 'boolean') {\n      paramType.type = TYPES.Bit;\n    }\n    if (Buffer.isBuffer(value)) {\n      paramType.type = TYPES.VarBinary;\n    }\n    return paramType;\n  }\n\n  async _run(connection, sql, parameters, errStack) {\n    this.sql = sql;\n    const { options } = this;\n\n    const complete = this._logQuery(sql, debug, parameters);\n\n    const query = new Promise((resolve, reject) => {\n      // TRANSACTION SUPPORT\n      if (sql.startsWith('BEGIN TRANSACTION')) {\n        return connection.beginTransaction(error => error ? reject(error) : resolve([]), options.transaction.name, connection.lib.ISOLATION_LEVEL[options.isolationLevel]);\n      }\n      if (sql.startsWith('COMMIT TRANSACTION')) {\n        return connection.commitTransaction(error => error ? reject(error) : resolve([]));\n      }\n      if (sql.startsWith('ROLLBACK TRANSACTION')) {\n        return connection.rollbackTransaction(error => error ? reject(error) : resolve([]), options.transaction.name);\n      }\n      if (sql.startsWith('SAVE TRANSACTION')) {\n        return connection.saveTransaction(error => error ? reject(error) : resolve([]), options.transaction.name);\n      }\n\n      const rows = [];\n      const request = new connection.lib.Request(sql, (err, rowCount) => err ? reject(err) : resolve([rows, rowCount]));\n\n      if (parameters) {\n        _.forOwn(parameters, (value, key) => {\n          const paramType = this.getSQLTypeFromJsType(value, connection.lib.TYPES);\n          request.addParameter(key, paramType.type, value, paramType.typeOptions);\n        });\n      }\n\n      request.on('row', columns => {\n        rows.push(columns);\n      });\n\n      connection.execSql(request);\n    });\n\n    let rows, rowCount;\n\n    try {\n      [rows, rowCount] = await query;\n    } catch (err) {\n      err.sql = sql;\n      err.parameters = parameters;\n\n      throw this.formatError(err, errStack);\n    }\n\n    complete();\n\n    if (Array.isArray(rows)) {\n      rows = rows.map(columns => {\n        const row = {};\n        for (const column of columns) {\n          const typeid = column.metadata.type.id;\n          const parse = parserStore.get(typeid);\n          let value = column.value;\n\n          if (value !== null & !!parse) {\n            value = parse(value);\n          }\n          row[column.metadata.colName] = value;\n        }\n        return row;\n      });\n    }\n\n    return this.formatResults(rows, rowCount);\n  }\n\n  run(sql, parameters) {\n    const errForStack = new Error();\n    return this.connection.queue.enqueue(() =>\n      this._run(this.connection, sql, parameters, errForStack.stack)\n    );\n  }\n\n  static formatBindParameters(sql, values, dialect) {\n    const bindParam = {};\n    const replacementFunc = (match, key, values) => {\n      if (values[key] !== undefined) {\n        bindParam[key] = values[key];\n        return `@${key}`;\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n\n    return [sql, bindParam];\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   *\n   * @param {Array} data - The result of the query execution.\n   * @param {number} rowCount\n   * @private\n   * @example\n   * Example:\n   *  query.formatResults([\n   *    {\n   *      id: 1,              // this is from the main table\n   *      attr2: 'snafu',     // this is from the main table\n   *      Tasks.id: 1,        // this is from the associated table\n   *      Tasks.title: 'task' // this is from the associated table\n   *    }\n   *  ])\n   */\n  formatResults(data, rowCount) {\n    if (this.isInsertQuery(data)) {\n      this.handleInsertQuery(data);\n      return [this.instance || data, rowCount];\n    }\n    if (this.isShowTablesQuery()) {\n      return this.handleShowTablesQuery(data);\n    }\n    if (this.isDescribeQuery()) {\n      const result = {};\n      for (const _result of data) {\n        if (_result.Default) {\n          _result.Default = _result.Default.replace(\"('\", '').replace(\"')\", '').replace(/'/g, '');\n        }\n\n        result[_result.Name] = {\n          type: _result.Type.toUpperCase(),\n          allowNull: _result.IsNull === 'YES' ? true : false,\n          defaultValue: _result.Default,\n          primaryKey: _result.Constraint === 'PRIMARY KEY',\n          autoIncrement: _result.IsIdentity === 1,\n          comment: _result.Comment\n        };\n\n        if (\n          result[_result.Name].type.includes('CHAR')\n          && _result.Length\n        ) {\n          if (_result.Length === -1) {\n            result[_result.Name].type += '(MAX)';\n          } else {\n            result[_result.Name].type += `(${_result.Length})`;\n          }\n        }\n      }\n      return result;\n    }\n    if (this.isSelectQuery()) {\n      return this.handleSelectQuery(data);\n    }\n    if (this.isShowIndexesQuery()) {\n      return this.handleShowIndexesQuery(data);\n    }\n    if (this.isCallQuery()) {\n      return data[0];\n    }\n    if (this.isBulkUpdateQuery()) {\n      if (this.options.returning) {\n        return this.handleSelectQuery(data);\n      }\n\n      return rowCount;\n    }\n    if (this.isBulkDeleteQuery()) {\n      return data[0] ? data[0].AFFECTEDROWS : 0;\n    }\n    if (this.isVersionQuery()) {\n      return data[0].version;\n    }\n    if (this.isForeignKeysQuery()) {\n      return data;\n    }\n    if (this.isUpsertQuery()) {\n      // if this was an upsert and no data came back, that means the record exists, but the update was a noop.\n      // return the current instance and mark it as an \"not an insert\".\n      if (data && data.length === 0) {\n        return [this.instance || data, false];\n      }\n      this.handleInsertQuery(data);\n      return [this.instance || data, data[0].$action === 'INSERT'];\n    }\n    if (this.isUpdateQuery()) {\n      return [this.instance || data, rowCount];\n    }\n    if (this.isShowConstraintsQuery()) {\n      return this.handleShowConstraintsQuery(data);\n    }\n    if (this.isRawQuery()) {\n      return [data, rowCount];\n    }\n    return data;\n  }\n\n  handleShowTablesQuery(results) {\n    return results.map(resultSet => {\n      return {\n        tableName: resultSet.TABLE_NAME,\n        schema: resultSet.TABLE_SCHEMA\n      };\n    });\n  }\n\n  handleShowConstraintsQuery(data) {\n    //Convert snake_case keys to camelCase as it's generated by stored procedure\n    return data.slice(1).map(result => {\n      const constraint = {};\n      for (const key in result) {\n        constraint[_.camelCase(key)] = result[key];\n      }\n      return constraint;\n    });\n  }\n\n  formatError(err, errStack) {\n    let match;\n\n    match = err.message.match(/Violation of (?:UNIQUE|PRIMARY) KEY constraint '([^']*)'. Cannot insert duplicate key in object '.*'.(:? The duplicate key value is \\((.*)\\).)?/);\n    match = match || err.message.match(/Cannot insert duplicate key row in object .* with unique index '(.*)'/);\n    if (match && match.length > 1) {\n      let fields = {};\n      const uniqueKey = this.model && this.model.uniqueKeys[match[1]];\n      let message = 'Validation error';\n\n      if (uniqueKey && !!uniqueKey.msg) {\n        message = uniqueKey.msg;\n      }\n      if (match[3]) {\n        const values = match[3].split(',').map(part => part.trim());\n        if (uniqueKey) {\n          fields = _.zipObject(uniqueKey.fields, values);\n        } else {\n          fields[match[1]] = match[3];\n        }\n      }\n\n      const errors = [];\n      _.forOwn(fields, (value, field) => {\n        errors.push(new sequelizeErrors.ValidationErrorItem(\n          this.getUniqueConstraintErrorMessage(field),\n          'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n          field,\n          value,\n          this.instance,\n          'not_unique'\n        ));\n      });\n\n      return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n    }\n\n    match = err.message.match(/Failed on step '(.*)'.Could not create constraint. See previous errors./) ||\n      err.message.match(/The DELETE statement conflicted with the REFERENCE constraint \"(.*)\". The conflict occurred in database \"(.*)\", table \"(.*)\", column '(.*)'./) ||\n      err.message.match(/The (?:INSERT|MERGE|UPDATE) statement conflicted with the FOREIGN KEY constraint \"(.*)\". The conflict occurred in database \"(.*)\", table \"(.*)\", column '(.*)'./);\n    if (match && match.length > 0) {\n      return new sequelizeErrors.ForeignKeyConstraintError({\n        fields: null,\n        index: match[1],\n        parent: err,\n        stack: errStack\n      });\n    }\n\n    match = err.message.match(/Could not drop constraint. See previous errors./);\n    if (match && match.length > 0) {\n      let constraint = err.sql.match(/(?:constraint|index) \\[(.+?)\\]/i);\n      constraint = constraint ? constraint[1] : undefined;\n      let table = err.sql.match(/table \\[(.+?)\\]/i);\n      table = table ? table[1] : undefined;\n\n      return new sequelizeErrors.UnknownConstraintError({\n        message: match[1],\n        constraint,\n        table,\n        parent: err,\n        stack: errStack\n      });\n    }\n\n    return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n  }\n\n  isShowOrDescribeQuery() {\n    let result = false;\n\n    result = result || this.sql.toLowerCase().startsWith(\"select c.column_name as 'name', c.data_type as 'type', c.is_nullable as 'isnull'\");\n    result = result || this.sql.toLowerCase().startsWith('select tablename = t.name, name = ind.name,');\n    result = result || this.sql.toLowerCase().startsWith('exec sys.sp_helpindex @objname');\n\n    return result;\n  }\n\n  isShowIndexesQuery() {\n    return this.sql.toLowerCase().startsWith('exec sys.sp_helpindex @objname');\n  }\n\n  handleShowIndexesQuery(data) {\n    // Group by index name, and collect all fields\n    data = data.reduce((acc, item) => {\n      if (!(item.index_name in acc)) {\n        acc[item.index_name] = item;\n        item.fields = [];\n      }\n\n      item.index_keys.split(',').forEach(column => {\n        let columnName = column.trim();\n        if (columnName.includes('(-)')) {\n          columnName = columnName.replace('(-)', '');\n        }\n\n        acc[item.index_name].fields.push({\n          attribute: columnName,\n          length: undefined,\n          order: column.includes('(-)') ? 'DESC' : 'ASC',\n          collate: undefined\n        });\n      });\n      delete item.index_keys;\n      return acc;\n    }, {});\n\n    return _.map(data, item => ({\n      primary: item.index_name.toLowerCase().startsWith('pk'),\n      fields: item.fields,\n      name: item.index_name,\n      tableName: undefined,\n      unique: item.index_description.toLowerCase().includes('unique'),\n      type: undefined\n    }));\n  }\n\n  handleInsertQuery(results, metaData) {\n    if (this.instance) {\n      // add the inserted row id to the instance\n      const autoIncrementAttribute = this.model.autoIncrementAttribute;\n      let id = null;\n      let autoIncrementAttributeAlias = null;\n\n      if (Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementAttribute) &&\n        this.model.rawAttributes[autoIncrementAttribute].field !== undefined)\n        autoIncrementAttributeAlias = this.model.rawAttributes[autoIncrementAttribute].field;\n\n      id = id || results && results[0][this.getInsertIdField()];\n      id = id || metaData && metaData[this.getInsertIdField()];\n      id = id || results && results[0][autoIncrementAttribute];\n      id = id || autoIncrementAttributeAlias && results && results[0][autoIncrementAttributeAlias];\n\n      this.instance[autoIncrementAttribute] = id;\n\n      if (this.instance.dataValues) {\n        for (const key in results[0]) {\n          if (Object.prototype.hasOwnProperty.call(results[0], key)) {\n            const record = results[0][key];\n\n            const attr = _.find(this.model.rawAttributes, attribute => attribute.fieldName === key || attribute.field === key);\n\n            this.instance.dataValues[attr && attr.fieldName || key] = record;\n          }\n        }\n      }\n\n    }\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,120 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const SequelizeErrors = require("../../errors");
-const { logger } = require("../../utils/logger");
-const DataTypes = require("../../data-types").mysql;
-const momentTz = require("moment-timezone");
-const debug = logger.debugContext("connection:mysql");
-const parserStore = require("../parserStore")("mysql");
-const { promisify } = require("util");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 3306;
-    super(dialect, sequelize);
-    this.lib = this._loadDialectModule("mysql2");
-    this.refreshTypeParser(DataTypes);
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  static _typecast(field, next) {
-    if (parserStore.get(field.type)) {
-      return parserStore.get(field.type)(field, this.sequelize.options, next);
-    }
-    return next();
-  }
-  async connect(config) {
-    const connectionConfig = __spreadValues({
-      host: config.host,
-      port: config.port,
-      user: config.username,
-      flags: "-FOUND_ROWS",
-      password: config.password,
-      database: config.database,
-      timezone: this.sequelize.options.timezone,
-      typeCast: ConnectionManager._typecast.bind(this),
-      bigNumberStrings: false,
-      supportBigNumbers: true
-    }, config.dialectOptions);
-    try {
-      const connection = await new Promise((resolve, reject) => {
-        const connection2 = this.lib.createConnection(connectionConfig);
-        const errorHandler = (e) => {
-          connection2.removeListener("connect", connectHandler);
-          connection2.removeListener("error", connectHandler);
-          reject(e);
-        };
-        const connectHandler = () => {
-          connection2.removeListener("error", errorHandler);
-          resolve(connection2);
-        };
-        connection2.on("error", errorHandler);
-        connection2.once("connect", connectHandler);
-      });
-      debug("connection acquired");
-      connection.on("error", (error) => {
-        switch (error.code) {
-          case "ESOCKET":
-          case "ECONNRESET":
-          case "EPIPE":
-          case "PROTOCOL_CONNECTION_LOST":
-            this.pool.destroy(connection);
-        }
-      });
-      if (!this.sequelize.config.keepDefaultTimezone) {
-        let tzOffset = this.sequelize.options.timezone;
-        tzOffset = /\//.test(tzOffset) ? momentTz.tz(tzOffset).format("Z") : tzOffset;
-        await promisify((cb) => connection.query(`SET time_zone = '${tzOffset}'`, cb))();
-      }
-      return connection;
-    } catch (err) {
-      switch (err.code) {
-        case "ECONNREFUSED":
-          throw new SequelizeErrors.ConnectionRefusedError(err);
-        case "ER_ACCESS_DENIED_ERROR":
-          throw new SequelizeErrors.AccessDeniedError(err);
-        case "ENOTFOUND":
-          throw new SequelizeErrors.HostNotFoundError(err);
-        case "EHOSTUNREACH":
-          throw new SequelizeErrors.HostNotReachableError(err);
-        case "EINVAL":
-          throw new SequelizeErrors.InvalidConnectionError(err);
-        default:
-          throw new SequelizeErrors.ConnectionError(err);
-      }
-    }
-  }
-  async disconnect(connection) {
-    if (connection._closing) {
-      debug("connection tried to disconnect but was already at CLOSED state");
-      return;
-    }
-    return await promisify((callback) => connection.end(callback))();
-  }
-  validate(connection) {
-    return connection && !connection._fatalError && !connection._protocolError && !connection._closing && !connection.stream.destroyed;
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst SequelizeErrors = require('../../errors');\nconst { logger } = require('../../utils/logger');\nconst DataTypes = require('../../data-types').mysql;\nconst momentTz = require('moment-timezone');\nconst debug = logger.debugContext('connection:mysql');\nconst parserStore = require('../parserStore')('mysql');\nconst { promisify } = require('util');\n\n/**\n * MySQL Connection Manager\n *\n * Get connections, validate and disconnect them.\n * AbstractConnectionManager pooling use it to handle MySQL specific connections\n * Use https://github.com/sidorares/node-mysql2 to connect with MySQL server\n *\n * @private\n */\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 3306;\n    super(dialect, sequelize);\n    this.lib = this._loadDialectModule('mysql2');\n    this.refreshTypeParser(DataTypes);\n  }\n\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  static _typecast(field, next) {\n    if (parserStore.get(field.type)) {\n      return parserStore.get(field.type)(field, this.sequelize.options, next);\n    }\n    return next();\n  }\n\n  /**\n   * Connect with MySQL database based on config, Handle any errors in connection\n   * Set the pool handlers on connection.error\n   * Also set proper timezone once connection is connected.\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  async connect(config) {\n    const connectionConfig = {\n      host: config.host,\n      port: config.port,\n      user: config.username,\n      flags: '-FOUND_ROWS',\n      password: config.password,\n      database: config.database,\n      timezone: this.sequelize.options.timezone,\n      typeCast: ConnectionManager._typecast.bind(this),\n      bigNumberStrings: false,\n      supportBigNumbers: true,\n      ...config.dialectOptions\n    };\n\n    try {\n      const connection = await new Promise((resolve, reject) => {\n        const connection = this.lib.createConnection(connectionConfig);\n\n        const errorHandler = e => {\n          // clean up connect & error event if there is error\n          connection.removeListener('connect', connectHandler);\n          connection.removeListener('error', connectHandler);\n          reject(e);\n        };\n\n        const connectHandler = () => {\n          // clean up error event if connected\n          connection.removeListener('error', errorHandler);\n          resolve(connection);\n        };\n\n        // don't use connection.once for error event handling here\n        // mysql2 emit error two times in case handshake was failed\n        // first error is protocol_lost and second is timeout\n        // if we will use `once.error` node process will crash on 2nd error emit\n        connection.on('error', errorHandler);\n        connection.once('connect', connectHandler);\n      });\n\n      debug('connection acquired');\n      connection.on('error', error => {\n        switch (error.code) {\n          case 'ESOCKET':\n          case 'ECONNRESET':\n          case 'EPIPE':\n          case 'PROTOCOL_CONNECTION_LOST':\n            this.pool.destroy(connection);\n        }\n      });\n\n      if (!this.sequelize.config.keepDefaultTimezone) {\n        // set timezone for this connection\n        // but named timezone are not directly supported in mysql, so get its offset first\n        let tzOffset = this.sequelize.options.timezone;\n        tzOffset = /\\//.test(tzOffset) ? momentTz.tz(tzOffset).format('Z') : tzOffset;\n        await promisify(cb => connection.query(`SET time_zone = '${tzOffset}'`, cb))();\n      }\n\n      return connection;\n    } catch (err) {\n      switch (err.code) {\n        case 'ECONNREFUSED':\n          throw new SequelizeErrors.ConnectionRefusedError(err);\n        case 'ER_ACCESS_DENIED_ERROR':\n          throw new SequelizeErrors.AccessDeniedError(err);\n        case 'ENOTFOUND':\n          throw new SequelizeErrors.HostNotFoundError(err);\n        case 'EHOSTUNREACH':\n          throw new SequelizeErrors.HostNotReachableError(err);\n        case 'EINVAL':\n          throw new SequelizeErrors.InvalidConnectionError(err);\n        default:\n          throw new SequelizeErrors.ConnectionError(err);\n      }\n    }\n  }\n\n  async disconnect(connection) {\n    // Don't disconnect connections with CLOSED state\n    if (connection._closing) {\n      debug('connection tried to disconnect but was already at CLOSED state');\n      return;\n    }\n\n    return await promisify(callback => connection.end(callback))();\n  }\n\n  validate(connection) {\n    return connection\n      && !connection._fatalError\n      && !connection._protocolError\n      && !connection._closing\n      && !connection.stream.destroyed;\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,WAAW,QAAQ;AACzB,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,cAAc,QAAQ,kBAAkB;AAC9C,MAAM,EAAE,cAAc,QAAQ;AAW9B,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,cAAU,OAAO,OAAO,UAAU,OAAO,QAAQ;AACjD,UAAM,SAAS;AACf,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,EAGzB,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,SAGP,UAAU,OAAO,MAAM;AAC5B,QAAI,YAAY,IAAI,MAAM,OAAO;AAC/B,aAAO,YAAY,IAAI,MAAM,MAAM,OAAO,KAAK,UAAU,SAAS;AAAA;AAEpE,WAAO;AAAA;AAAA,QAYH,QAAQ,QAAQ;AACpB,UAAM,mBAAmB;AAAA,MACvB,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,MACb,OAAO;AAAA,MACP,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,UAAU,KAAK,UAAU,QAAQ;AAAA,MACjC,UAAU,kBAAkB,UAAU,KAAK;AAAA,MAC3C,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,OAChB,OAAO;AAGZ,QAAI;AACF,YAAM,aAAa,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxD,cAAM,cAAa,KAAK,IAAI,iBAAiB;AAE7C,cAAM,eAAe,OAAK;AAExB,sBAAW,eAAe,WAAW;AACrC,sBAAW,eAAe,SAAS;AACnC,iBAAO;AAAA;AAGT,cAAM,iBAAiB,MAAM;AAE3B,sBAAW,eAAe,SAAS;AACnC,kBAAQ;AAAA;AAOV,oBAAW,GAAG,SAAS;AACvB,oBAAW,KAAK,WAAW;AAAA;AAG7B,YAAM;AACN,iBAAW,GAAG,SAAS,WAAS;AAC9B,gBAAQ,MAAM;AAAA,eACP;AAAA,eACA;AAAA,eACA;AAAA,eACA;AACH,iBAAK,KAAK,QAAQ;AAAA;AAAA;AAIxB,UAAI,CAAC,KAAK,UAAU,OAAO,qBAAqB;AAG9C,YAAI,WAAW,KAAK,UAAU,QAAQ;AACtC,mBAAW,KAAK,KAAK,YAAY,SAAS,GAAG,UAAU,OAAO,OAAO;AACrE,cAAM,UAAU,QAAM,WAAW,MAAM,oBAAoB,aAAa;AAAA;AAG1E,aAAO;AAAA,aACA,KAAP;AACA,cAAQ,IAAI;AAAA,aACL;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA,aAC9C;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,sBAAsB;AAAA,aAC7C;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA;AAEjD,gBAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAAA;AAAA;AAAA,QAK5C,WAAW,YAAY;AAE3B,QAAI,WAAW,UAAU;AACvB,YAAM;AACN;AAAA;AAGF,WAAO,MAAM,UAAU,cAAY,WAAW,IAAI;AAAA;AAAA,EAGpD,SAAS,YAAY;AACnB,WAAO,cACF,CAAC,WAAW,eACZ,CAAC,WAAW,kBACZ,CAAC,WAAW,YACZ,CAAC,WAAW,OAAO;AAAA;AAAA;AAI5B,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,123 +1,0 @@
-"use strict";
-const wkx = require("wkx");
-const _ = require("lodash");
-const momentTz = require("moment-timezone");
-const moment = require("moment");
-module.exports = (BaseTypes) => {
-  BaseTypes.ABSTRACT.prototype.dialectTypes = "https://dev.mysql.com/doc/refman/5.7/en/data-types.html";
-  BaseTypes.DATE.types.mysql = ["DATETIME"];
-  BaseTypes.STRING.types.mysql = ["VAR_STRING"];
-  BaseTypes.CHAR.types.mysql = ["STRING"];
-  BaseTypes.TEXT.types.mysql = ["BLOB"];
-  BaseTypes.TINYINT.types.mysql = ["TINY"];
-  BaseTypes.SMALLINT.types.mysql = ["SHORT"];
-  BaseTypes.MEDIUMINT.types.mysql = ["INT24"];
-  BaseTypes.INTEGER.types.mysql = ["LONG"];
-  BaseTypes.BIGINT.types.mysql = ["LONGLONG"];
-  BaseTypes.FLOAT.types.mysql = ["FLOAT"];
-  BaseTypes.TIME.types.mysql = ["TIME"];
-  BaseTypes.DATEONLY.types.mysql = ["DATE"];
-  BaseTypes.BOOLEAN.types.mysql = ["TINY"];
-  BaseTypes.BLOB.types.mysql = ["TINYBLOB", "BLOB", "LONGBLOB"];
-  BaseTypes.DECIMAL.types.mysql = ["NEWDECIMAL"];
-  BaseTypes.UUID.types.mysql = false;
-  BaseTypes.ENUM.types.mysql = false;
-  BaseTypes.REAL.types.mysql = ["DOUBLE"];
-  BaseTypes.DOUBLE.types.mysql = ["DOUBLE"];
-  BaseTypes.GEOMETRY.types.mysql = ["GEOMETRY"];
-  BaseTypes.JSON.types.mysql = ["JSON"];
-  class DECIMAL extends BaseTypes.DECIMAL {
-    toSql() {
-      let definition = super.toSql();
-      if (this._unsigned) {
-        definition += " UNSIGNED";
-      }
-      if (this._zerofill) {
-        definition += " ZEROFILL";
-      }
-      return definition;
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return this._length ? `DATETIME(${this._length})` : "DATETIME";
-    }
-    _stringify(date, options) {
-      if (!moment.isMoment(date)) {
-        date = this._applyTimezone(date, options);
-      }
-      if (this._length) {
-        return date.format("YYYY-MM-DD HH:mm:ss.SSS");
-      }
-      return date.format("YYYY-MM-DD HH:mm:ss");
-    }
-    static parse(value, options) {
-      value = value.string();
-      if (value === null) {
-        return value;
-      }
-      if (momentTz.tz.zone(options.timezone)) {
-        value = momentTz.tz(value, options.timezone).toDate();
-      } else {
-        value = new Date(`${value} ${options.timezone}`);
-      }
-      return value;
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(value) {
-      return value.string();
-    }
-  }
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "CHAR(36) BINARY";
-    }
-  }
-  const SUPPORTED_GEOMETRY_TYPES = ["POINT", "LINESTRING", "POLYGON"];
-  class GEOMETRY extends BaseTypes.GEOMETRY {
-    constructor(type, srid) {
-      super(type, srid);
-      if (_.isEmpty(this.type)) {
-        this.sqlType = this.key;
-        return;
-      }
-      if (SUPPORTED_GEOMETRY_TYPES.includes(this.type)) {
-        this.sqlType = this.type;
-        return;
-      }
-      throw new Error(`Supported geometry types are: ${SUPPORTED_GEOMETRY_TYPES.join(", ")}`);
-    }
-    static parse(value) {
-      value = value.buffer();
-      if (!value || value.length === 0) {
-        return null;
-      }
-      value = value.slice(4);
-      return wkx.Geometry.parse(value).toGeoJSON({ shortCrs: true });
-    }
-    toSql() {
-      return this.sqlType;
-    }
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql(options) {
-      return `ENUM(${this.values.map((value) => options.escape(value)).join(", ")})`;
-    }
-  }
-  class JSONTYPE extends BaseTypes.JSON {
-    _stringify(value, options) {
-      return options.operation === "where" && typeof value === "string" ? value : JSON.stringify(value);
-    }
-  }
-  return {
-    ENUM,
-    DATE,
-    DATEONLY,
-    UUID,
-    GEOMETRY,
-    DECIMAL,
-    JSON: JSONTYPE
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst wkx = require('wkx');\nconst _ = require('lodash');\nconst momentTz = require('moment-timezone');\nconst moment = require('moment');\n\nmodule.exports = BaseTypes => {\n  BaseTypes.ABSTRACT.prototype.dialectTypes = 'https://dev.mysql.com/doc/refman/5.7/en/data-types.html';\n\n  /**\n   * types: [buffer_type, ...]\n   *\n   * @see buffer_type here https://dev.mysql.com/doc/refman/5.7/en/c-api-prepared-statement-type-codes.html\n   * @see hex here https://github.com/sidorares/node-mysql2/blob/master/lib/constants/types.js\n   */\n\n  BaseTypes.DATE.types.mysql = ['DATETIME'];\n  BaseTypes.STRING.types.mysql = ['VAR_STRING'];\n  BaseTypes.CHAR.types.mysql = ['STRING'];\n  BaseTypes.TEXT.types.mysql = ['BLOB'];\n  BaseTypes.TINYINT.types.mysql = ['TINY'];\n  BaseTypes.SMALLINT.types.mysql = ['SHORT'];\n  BaseTypes.MEDIUMINT.types.mysql = ['INT24'];\n  BaseTypes.INTEGER.types.mysql = ['LONG'];\n  BaseTypes.BIGINT.types.mysql = ['LONGLONG'];\n  BaseTypes.FLOAT.types.mysql = ['FLOAT'];\n  BaseTypes.TIME.types.mysql = ['TIME'];\n  BaseTypes.DATEONLY.types.mysql = ['DATE'];\n  BaseTypes.BOOLEAN.types.mysql = ['TINY'];\n  BaseTypes.BLOB.types.mysql = ['TINYBLOB', 'BLOB', 'LONGBLOB'];\n  BaseTypes.DECIMAL.types.mysql = ['NEWDECIMAL'];\n  BaseTypes.UUID.types.mysql = false;\n  BaseTypes.ENUM.types.mysql = false;\n  BaseTypes.REAL.types.mysql = ['DOUBLE'];\n  BaseTypes.DOUBLE.types.mysql = ['DOUBLE'];\n  BaseTypes.GEOMETRY.types.mysql = ['GEOMETRY'];\n  BaseTypes.JSON.types.mysql = ['JSON'];\n\n  class DECIMAL extends BaseTypes.DECIMAL {\n    toSql() {\n      let definition = super.toSql();\n      if (this._unsigned) {\n        definition += ' UNSIGNED';\n      }\n      if (this._zerofill) {\n        definition += ' ZEROFILL';\n      }\n      return definition;\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return this._length ? `DATETIME(${this._length})` : 'DATETIME';\n    }\n    _stringify(date, options) {\n      if (!moment.isMoment(date)) {\n        date = this._applyTimezone(date, options);\n      }\n      // Fractional DATETIMEs only supported on MySQL 5.6.4+\n      if (this._length) {\n        return date.format('YYYY-MM-DD HH:mm:ss.SSS');\n      }\n      return date.format('YYYY-MM-DD HH:mm:ss');\n    }\n    static parse(value, options) {\n      value = value.string();\n      if (value === null) {\n        return value;\n      }\n      if (momentTz.tz.zone(options.timezone)) {\n        value = momentTz.tz(value, options.timezone).toDate();\n      }\n      else {\n        value = new Date(`${value} ${options.timezone}`);\n      }\n      return value;\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(value) {\n      return value.string();\n    }\n  }\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      return 'CHAR(36) BINARY';\n    }\n  }\n\n  const SUPPORTED_GEOMETRY_TYPES = ['POINT', 'LINESTRING', 'POLYGON'];\n\n  class GEOMETRY extends BaseTypes.GEOMETRY {\n    constructor(type, srid) {\n      super(type, srid);\n      if (_.isEmpty(this.type)) {\n        this.sqlType = this.key;\n        return;\n      }\n      if (SUPPORTED_GEOMETRY_TYPES.includes(this.type)) {\n        this.sqlType = this.type;\n        return;\n      }\n      throw new Error(`Supported geometry types are: ${SUPPORTED_GEOMETRY_TYPES.join(', ')}`);\n    }\n    static parse(value) {\n      value = value.buffer();\n      // Empty buffer, MySQL doesn't support POINT EMPTY\n      // check, https://dev.mysql.com/worklog/task/?id=2381\n      if (!value || value.length === 0) {\n        return null;\n      }\n      // For some reason, discard the first 4 bytes\n      value = value.slice(4);\n      return wkx.Geometry.parse(value).toGeoJSON({ shortCrs: true });\n    }\n    toSql() {\n      return this.sqlType;\n    }\n  }\n\n  class ENUM extends BaseTypes.ENUM {\n    toSql(options) {\n      return `ENUM(${this.values.map(value => options.escape(value)).join(', ')})`;\n    }\n  }\n\n  class JSONTYPE extends BaseTypes.JSON {\n    _stringify(value, options) {\n      return options.operation === 'where' && typeof value === 'string' ? value : JSON.stringify(value);\n    }\n  }\n\n  return {\n    ENUM,\n    DATE,\n    DATEONLY,\n    UUID,\n    GEOMETRY,\n    DECIMAL,\n    JSON: JSONTYPE\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,61 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").mysql;
-const { MySQLQueryInterface } = require("./query-interface");
-class MysqlDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new MySQLQueryInterface(sequelize, this.queryGenerator);
-  }
-  canBackslashEscape() {
-    return true;
-  }
-}
-MysqlDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "VALUES ()": true,
-  "LIMIT ON UPDATE": true,
-  lock: true,
-  forShare: "LOCK IN SHARE MODE",
-  settingIsolationLevelDuringTransaction: false,
-  inserts: {
-    ignoreDuplicates: " IGNORE",
-    updateOnDuplicate: " ON DUPLICATE KEY UPDATE"
-  },
-  index: {
-    collate: false,
-    length: true,
-    parser: true,
-    type: true,
-    using: 1
-  },
-  constraints: {
-    dropConstraint: false,
-    check: false
-  },
-  indexViaAlter: true,
-  indexHints: true,
-  NUMERIC: true,
-  GEOMETRY: true,
-  JSON: true,
-  REGEXP: true
-});
-MysqlDialect.prototype.defaultVersion = "5.7.0";
-MysqlDialect.prototype.Query = Query;
-MysqlDialect.prototype.QueryGenerator = QueryGenerator;
-MysqlDialect.prototype.DataTypes = DataTypes;
-MysqlDialect.prototype.name = "mysql";
-MysqlDialect.prototype.TICK_CHAR = "`";
-MysqlDialect.prototype.TICK_CHAR_LEFT = MysqlDialect.prototype.TICK_CHAR;
-MysqlDialect.prototype.TICK_CHAR_RIGHT = MysqlDialect.prototype.TICK_CHAR;
-module.exports = MysqlDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').mysql;\nconst { MySQLQueryInterface } = require('./query-interface');\n\nclass MysqlDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new MySQLQueryInterface(\n      sequelize,\n      this.queryGenerator\n    );\n  }\n\n  canBackslashEscape() {\n    return true;\n  }\n}\n\nMysqlDialect.prototype.supports = _.merge(\n  _.cloneDeep(AbstractDialect.prototype.supports),\n  {\n    'VALUES ()': true,\n    'LIMIT ON UPDATE': true,\n    lock: true,\n    forShare: 'LOCK IN SHARE MODE',\n    settingIsolationLevelDuringTransaction: false,\n    inserts: {\n      ignoreDuplicates: ' IGNORE',\n      updateOnDuplicate: ' ON DUPLICATE KEY UPDATE'\n    },\n    index: {\n      collate: false,\n      length: true,\n      parser: true,\n      type: true,\n      using: 1\n    },\n    constraints: {\n      dropConstraint: false,\n      check: false\n    },\n    indexViaAlter: true,\n    indexHints: true,\n    NUMERIC: true,\n    GEOMETRY: true,\n    JSON: true,\n    REGEXP: true\n  }\n);\n\nMysqlDialect.prototype.defaultVersion = '5.7.0'; // minimum supported version\nMysqlDialect.prototype.Query = Query;\nMysqlDialect.prototype.QueryGenerator = QueryGenerator;\nMysqlDialect.prototype.DataTypes = DataTypes;\nMysqlDialect.prototype.name = 'mysql';\nMysqlDialect.prototype.TICK_CHAR = '`';\nMysqlDialect.prototype.TICK_CHAR_LEFT = MysqlDialect.prototype.TICK_CHAR;\nMysqlDialect.prototype.TICK_CHAR_RIGHT = MysqlDialect.prototype.TICK_CHAR;\n\nmodule.exports = MysqlDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,wBAAwB,QAAQ;AAExC,2BAA2B,gBAAgB;AAAA,EACzC,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,oBACxB,WACA,KAAK;AAAA;AAAA,EAIT,qBAAqB;AACnB,WAAO;AAAA;AAAA;AAIX,aAAa,UAAU,WAAW,EAAE,MAClC,EAAE,UAAU,gBAAgB,UAAU,WACtC;AAAA,EACE,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,wCAAwC;AAAA,EACxC,SAAS;AAAA,IACP,kBAAkB;AAAA,IAClB,mBAAmB;AAAA;AAAA,EAErB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,aAAa;AAAA,IACX,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA;AAIZ,aAAa,UAAU,iBAAiB;AACxC,aAAa,UAAU,QAAQ;AAC/B,aAAa,UAAU,iBAAiB;AACxC,aAAa,UAAU,YAAY;AACnC,aAAa,UAAU,OAAO;AAC9B,aAAa,UAAU,YAAY;AACnC,aAAa,UAAU,iBAAiB,aAAa,UAAU;AAC/D,aAAa,UAAU,kBAAkB,aAAa,UAAU;AAEhE,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,470 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const _ = require("lodash");
-const Utils = require("../../utils");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const util = require("util");
-const Op = require("../../operators");
-const JSON_FUNCTION_REGEX = /^\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\([^)]*\)/i;
-const JSON_OPERATOR_REGEX = /^\s*(->>?|@>|<@|\?[|&]?|\|{2}|#-)/i;
-const TOKEN_CAPTURE_REGEX = /^\s*((?:([`"'])(?:(?!\2).|\2{2})*\2)|[\w\d\s]+|[().,;+-])/i;
-const FOREIGN_KEY_FIELDS = [
-  "CONSTRAINT_NAME as constraint_name",
-  "CONSTRAINT_NAME as constraintName",
-  "CONSTRAINT_SCHEMA as constraintSchema",
-  "CONSTRAINT_SCHEMA as constraintCatalog",
-  "TABLE_NAME as tableName",
-  "TABLE_SCHEMA as tableSchema",
-  "TABLE_SCHEMA as tableCatalog",
-  "COLUMN_NAME as columnName",
-  "REFERENCED_TABLE_SCHEMA as referencedTableSchema",
-  "REFERENCED_TABLE_SCHEMA as referencedTableCatalog",
-  "REFERENCED_TABLE_NAME as referencedTableName",
-  "REFERENCED_COLUMN_NAME as referencedColumnName"
-].join(",");
-const typeWithoutDefault = /* @__PURE__ */ new Set(["BLOB", "TEXT", "GEOMETRY", "JSON"]);
-class MySQLQueryGenerator extends AbstractQueryGenerator {
-  constructor(options) {
-    super(options);
-    this.OperatorMap = __spreadProps(__spreadValues({}, this.OperatorMap), {
-      [Op.regexp]: "REGEXP",
-      [Op.notRegexp]: "NOT REGEXP"
-    });
-  }
-  createDatabaseQuery(databaseName, options) {
-    options = __spreadValues({
-      charset: null,
-      collate: null
-    }, options);
-    return Utils.joinSQLFragments([
-      "CREATE DATABASE IF NOT EXISTS",
-      this.quoteIdentifier(databaseName),
-      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,
-      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,
-      ";"
-    ]);
-  }
-  dropDatabaseQuery(databaseName) {
-    return `DROP DATABASE IF EXISTS ${this.quoteIdentifier(databaseName)};`;
-  }
-  createSchema() {
-    return "SHOW TABLES";
-  }
-  showSchemasQuery() {
-    return "SHOW TABLES";
-  }
-  versionQuery() {
-    return "SELECT VERSION() as `version`";
-  }
-  createTableQuery(tableName, attributes, options) {
-    options = __spreadValues({
-      engine: "InnoDB",
-      charset: null,
-      rowFormat: null
-    }, options);
-    const primaryKeys = [];
-    const foreignKeys = {};
-    const attrStr = [];
-    for (const attr in attributes) {
-      if (!Object.prototype.hasOwnProperty.call(attributes, attr))
-        continue;
-      const dataType = attributes[attr];
-      let match;
-      if (dataType.includes("PRIMARY KEY")) {
-        primaryKeys.push(attr);
-        if (dataType.includes("REFERENCES")) {
-          match = dataType.match(/^(.+) (REFERENCES.*)$/);
-          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1].replace("PRIMARY KEY", "")}`);
-          foreignKeys[attr] = match[2];
-        } else {
-          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType.replace("PRIMARY KEY", "")}`);
-        }
-      } else if (dataType.includes("REFERENCES")) {
-        match = dataType.match(/^(.+) (REFERENCES.*)$/);
-        attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);
-        foreignKeys[attr] = match[2];
-      } else {
-        attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);
-      }
-    }
-    const table = this.quoteTable(tableName);
-    let attributesClause = attrStr.join(", ");
-    const pkString = primaryKeys.map((pk) => this.quoteIdentifier(pk)).join(", ");
-    if (options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns, indexName) => {
-        if (columns.customIndex) {
-          if (typeof indexName !== "string") {
-            indexName = `uniq_${tableName}_${columns.fields.join("_")}`;
-          }
-          attributesClause += `, UNIQUE ${this.quoteIdentifier(indexName)} (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-        }
-      });
-    }
-    if (pkString.length > 0) {
-      attributesClause += `, PRIMARY KEY (${pkString})`;
-    }
-    for (const fkey in foreignKeys) {
-      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {
-        attributesClause += `, FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;
-      }
-    }
-    return Utils.joinSQLFragments([
-      "CREATE TABLE IF NOT EXISTS",
-      table,
-      `(${attributesClause})`,
-      `ENGINE=${options.engine}`,
-      options.comment && typeof options.comment === "string" && `COMMENT ${this.escape(options.comment)}`,
-      options.charset && `DEFAULT CHARSET=${options.charset}`,
-      options.collate && `COLLATE ${options.collate}`,
-      options.initialAutoIncrement && `AUTO_INCREMENT=${options.initialAutoIncrement}`,
-      options.rowFormat && `ROW_FORMAT=${options.rowFormat}`,
-      ";"
-    ]);
-  }
-  describeTableQuery(tableName, schema, schemaDelimiter) {
-    const table = this.quoteTable(this.addSchema({
-      tableName,
-      _schema: schema,
-      _schemaDelimiter: schemaDelimiter
-    }));
-    return `SHOW FULL COLUMNS FROM ${table};`;
-  }
-  showTablesQuery(database) {
-    let query = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'";
-    if (database) {
-      query += ` AND TABLE_SCHEMA = ${this.escape(database)}`;
-    } else {
-      query += " AND TABLE_SCHEMA NOT IN ('MYSQL', 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA', 'SYS', 'mysql', 'information_schema', 'performance_schema', 'sys')";
-    }
-    return `${query};`;
-  }
-  tableExistsQuery(table) {
-    const tableName = this.escape(this.quoteTable(table).slice(1, -1));
-    return `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = ${tableName} AND TABLE_SCHEMA = ${this.escape(this.sequelize.config.database)}`;
-  }
-  addColumnQuery(table, key, dataType) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(table),
-      "ADD",
-      this.quoteIdentifier(key),
-      this.attributeToSQL(dataType, {
-        context: "addColumn",
-        tableName: table,
-        foreignKey: key
-      }),
-      ";"
-    ]);
-  }
-  removeColumnQuery(tableName, attributeName) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP",
-      this.quoteIdentifier(attributeName),
-      ";"
-    ]);
-  }
-  changeColumnQuery(tableName, attributes) {
-    const attrString = [];
-    const constraintString = [];
-    for (const attributeName in attributes) {
-      let definition = attributes[attributeName];
-      if (definition.includes("REFERENCES")) {
-        const attrName = this.quoteIdentifier(attributeName);
-        definition = definition.replace(/.+?(?=REFERENCES)/, "");
-        constraintString.push(`FOREIGN KEY (${attrName}) ${definition}`);
-      } else {
-        attrString.push(`\`${attributeName}\` \`${attributeName}\` ${definition}`);
-      }
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      attrString.length && `CHANGE ${attrString.join(", ")}`,
-      constraintString.length && `ADD ${constraintString.join(", ")}`,
-      ";"
-    ]);
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const attrString = [];
-    for (const attrName in attributes) {
-      const definition = attributes[attrName];
-      attrString.push(`\`${attrBefore}\` \`${attrName}\` ${definition}`);
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "CHANGE",
-      attrString.join(", "),
-      ";"
-    ]);
-  }
-  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
-    if (smth instanceof Utils.Json) {
-      if (smth.conditions) {
-        const conditions = this.parseConditionObject(smth.conditions).map((condition) => `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`);
-        return conditions.join(" AND ");
-      }
-      if (smth.path) {
-        let str;
-        if (this._checkValidJsonStatement(smth.path)) {
-          str = smth.path;
-        } else {
-          const paths = _.toPath(smth.path);
-          const column = paths.shift();
-          str = this.jsonPathExtractionQuery(column, paths);
-        }
-        if (smth.value) {
-          str += util.format(" = %s", this.escape(smth.value));
-        }
-        return str;
-      }
-    } else if (smth instanceof Utils.Cast) {
-      if (/timestamp/i.test(smth.type)) {
-        smth.type = "datetime";
-      } else if (smth.json && /boolean/i.test(smth.type)) {
-        smth.type = "char";
-      } else if (/double precision/i.test(smth.type) || /boolean/i.test(smth.type) || /integer/i.test(smth.type)) {
-        smth.type = "decimal";
-      } else if (/text/i.test(smth.type)) {
-        smth.type = "char";
-      }
-    }
-    return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);
-  }
-  _toJSONValue(value) {
-    if (typeof value === "boolean") {
-      return value.toString();
-    }
-    if (value === null) {
-      return "null";
-    }
-    return value;
-  }
-  truncateTableQuery(tableName) {
-    return `TRUNCATE ${this.quoteTable(tableName)}`;
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    let limit = "";
-    let query = `DELETE FROM ${this.quoteTable(tableName)}`;
-    if (options.limit) {
-      limit = ` LIMIT ${this.escape(options.limit)}`;
-    }
-    where = this.getWhereConditions(where, null, model, options);
-    if (where) {
-      query += ` WHERE ${where}`;
-    }
-    return query + limit;
-  }
-  showIndexesQuery(tableName, options) {
-    return Utils.joinSQLFragments([
-      `SHOW INDEX FROM ${this.quoteTable(tableName)}`,
-      options && options.database && `FROM \`${options.database}\``
-    ]);
-  }
-  showConstraintsQuery(table, constraintName) {
-    const tableName = table.tableName || table;
-    const schemaName = table.schema;
-    return Utils.joinSQLFragments([
-      "SELECT CONSTRAINT_CATALOG AS constraintCatalog,",
-      "CONSTRAINT_NAME AS constraintName,",
-      "CONSTRAINT_SCHEMA AS constraintSchema,",
-      "CONSTRAINT_TYPE AS constraintType,",
-      "TABLE_NAME AS tableName,",
-      "TABLE_SCHEMA AS tableSchema",
-      "from INFORMATION_SCHEMA.TABLE_CONSTRAINTS",
-      `WHERE table_name='${tableName}'`,
-      constraintName && `AND constraint_name = '${constraintName}'`,
-      schemaName && `AND TABLE_SCHEMA = '${schemaName}'`,
-      ";"
-    ]);
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return Utils.joinSQLFragments([
-      "DROP INDEX",
-      this.quoteIdentifier(indexName),
-      "ON",
-      this.quoteTable(tableName)
-    ]);
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    const attributeString = attribute.type.toString({ escape: this.escape.bind(this) });
-    let template = attributeString;
-    if (attribute.allowNull === false) {
-      template += " NOT NULL";
-    }
-    if (attribute.autoIncrement) {
-      template += " auto_increment";
-    }
-    if (!typeWithoutDefault.has(attributeString) && attribute.type._binary !== true && Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-    }
-    if (attribute.unique === true) {
-      template += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      template += " PRIMARY KEY";
-    }
-    if (attribute.comment) {
-      template += ` COMMENT ${this.escape(attribute.comment)}`;
-    }
-    if (attribute.first) {
-      template += " FIRST";
-    }
-    if (attribute.after) {
-      template += ` AFTER ${this.quoteIdentifier(attribute.after)}`;
-    }
-    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {
-      if (options && options.context === "addColumn" && options.foreignKey) {
-        const attrName = this.quoteIdentifier(options.foreignKey);
-        const fkName = this.quoteIdentifier(`${options.tableName}_${attrName}_foreign_idx`);
-        template += `, ADD CONSTRAINT ${fkName} FOREIGN KEY (${attrName})`;
-      }
-      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;
-      if (attribute.references.key) {
-        template += ` (${this.quoteIdentifier(attribute.references.key)})`;
-      } else {
-        template += ` (${this.quoteIdentifier("id")})`;
-      }
-      if (attribute.onDelete) {
-        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-      }
-      if (attribute.onUpdate) {
-        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;
-      }
-    }
-    return template;
-  }
-  attributesToSQL(attributes, options) {
-    const result = {};
-    for (const key in attributes) {
-      const attribute = attributes[key];
-      result[attribute.field || key] = this.attributeToSQL(attribute, options);
-    }
-    return result;
-  }
-  _checkValidJsonStatement(stmt) {
-    if (typeof stmt !== "string") {
-      return false;
-    }
-    let currentIndex = 0;
-    let openingBrackets = 0;
-    let closingBrackets = 0;
-    let hasJsonFunction = false;
-    let hasInvalidToken = false;
-    while (currentIndex < stmt.length) {
-      const string = stmt.substr(currentIndex);
-      const functionMatches = JSON_FUNCTION_REGEX.exec(string);
-      if (functionMatches) {
-        currentIndex += functionMatches[0].indexOf("(");
-        hasJsonFunction = true;
-        continue;
-      }
-      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);
-      if (operatorMatches) {
-        currentIndex += operatorMatches[0].length;
-        hasJsonFunction = true;
-        continue;
-      }
-      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);
-      if (tokenMatches) {
-        const capturedToken = tokenMatches[1];
-        if (capturedToken === "(") {
-          openingBrackets++;
-        } else if (capturedToken === ")") {
-          closingBrackets++;
-        } else if (capturedToken === ";") {
-          hasInvalidToken = true;
-          break;
-        }
-        currentIndex += tokenMatches[0].length;
-        continue;
-      }
-      break;
-    }
-    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {
-      throw new Error(`Invalid json statement: ${stmt}`);
-    }
-    return hasJsonFunction;
-  }
-  getForeignKeysQuery(table, schemaName) {
-    const tableName = table.tableName || table;
-    return Utils.joinSQLFragments([
-      "SELECT",
-      FOREIGN_KEY_FIELDS,
-      `FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '${tableName}'`,
-      `AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='${schemaName}'`,
-      "AND REFERENCED_TABLE_NAME IS NOT NULL",
-      ";"
-    ]);
-  }
-  getForeignKeyQuery(table, columnName) {
-    const quotedSchemaName = table.schema ? wrapSingleQuote(table.schema) : "";
-    const quotedTableName = wrapSingleQuote(table.tableName || table);
-    const quotedColumnName = wrapSingleQuote(columnName);
-    return Utils.joinSQLFragments([
-      "SELECT",
-      FOREIGN_KEY_FIELDS,
-      "FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE",
-      "WHERE (",
-      [
-        `REFERENCED_TABLE_NAME = ${quotedTableName}`,
-        table.schema && `AND REFERENCED_TABLE_SCHEMA = ${quotedSchemaName}`,
-        `AND REFERENCED_COLUMN_NAME = ${quotedColumnName}`
-      ],
-      ") OR (",
-      [
-        `TABLE_NAME = ${quotedTableName}`,
-        table.schema && `AND TABLE_SCHEMA = ${quotedSchemaName}`,
-        `AND COLUMN_NAME = ${quotedColumnName}`,
-        "AND REFERENCED_TABLE_NAME IS NOT NULL"
-      ],
-      ")"
-    ]);
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP FOREIGN KEY",
-      this.quoteIdentifier(foreignKey),
-      ";"
-    ]);
-  }
-  quoteIdentifier(identifier, force) {
-    return Utils.addTicks(Utils.removeTicks(identifier, "`"), "`");
-  }
-}
-function wrapSingleQuote(identifier) {
-  return Utils.addTicks(identifier, "'");
-}
-module.exports = MySQLQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst util = require('util');\nconst Op = require('../../operators');\n\n\nconst JSON_FUNCTION_REGEX = /^\\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\\([^)]*\\)/i;\nconst JSON_OPERATOR_REGEX = /^\\s*(->>?|@>|<@|\\?[|&]?|\\|{2}|#-)/i;\nconst TOKEN_CAPTURE_REGEX = /^\\s*((?:([`\"'])(?:(?!\\2).|\\2{2})*\\2)|[\\w\\d\\s]+|[().,;+-])/i;\nconst FOREIGN_KEY_FIELDS = [\n  'CONSTRAINT_NAME as constraint_name',\n  'CONSTRAINT_NAME as constraintName',\n  'CONSTRAINT_SCHEMA as constraintSchema',\n  'CONSTRAINT_SCHEMA as constraintCatalog',\n  'TABLE_NAME as tableName',\n  'TABLE_SCHEMA as tableSchema',\n  'TABLE_SCHEMA as tableCatalog',\n  'COLUMN_NAME as columnName',\n  'REFERENCED_TABLE_SCHEMA as referencedTableSchema',\n  'REFERENCED_TABLE_SCHEMA as referencedTableCatalog',\n  'REFERENCED_TABLE_NAME as referencedTableName',\n  'REFERENCED_COLUMN_NAME as referencedColumnName'\n].join(',');\n\nconst typeWithoutDefault = new Set(['BLOB', 'TEXT', 'GEOMETRY', 'JSON']);\n\nclass MySQLQueryGenerator extends AbstractQueryGenerator {\n  constructor(options) {\n    super(options);\n\n    this.OperatorMap = {\n      ...this.OperatorMap,\n      [Op.regexp]: 'REGEXP',\n      [Op.notRegexp]: 'NOT REGEXP'\n    };\n  }\n\n  createDatabaseQuery(databaseName, options) {\n    options = {\n      charset: null,\n      collate: null,\n      ...options\n    };\n\n    return Utils.joinSQLFragments([\n      'CREATE DATABASE IF NOT EXISTS',\n      this.quoteIdentifier(databaseName),\n      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,\n      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,\n      ';'\n    ]);\n  }\n\n  dropDatabaseQuery(databaseName) {\n    return `DROP DATABASE IF EXISTS ${this.quoteIdentifier(databaseName)};`;\n  }\n\n  createSchema() {\n    return 'SHOW TABLES';\n  }\n\n  showSchemasQuery() {\n    return 'SHOW TABLES';\n  }\n\n  versionQuery() {\n    return 'SELECT VERSION() as `version`';\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    options = {\n      engine: 'InnoDB',\n      charset: null,\n      rowFormat: null,\n      ...options\n    };\n\n    const primaryKeys = [];\n    const foreignKeys = {};\n    const attrStr = [];\n\n    for (const attr in attributes) {\n      if (!Object.prototype.hasOwnProperty.call(attributes, attr)) continue;\n      const dataType = attributes[attr];\n      let match;\n\n      if (dataType.includes('PRIMARY KEY')) {\n        primaryKeys.push(attr);\n\n        if (dataType.includes('REFERENCES')) {\n          // MySQL doesn't support inline REFERENCES declarations: move to the end\n          match = dataType.match(/^(.+) (REFERENCES.*)$/);\n          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1].replace('PRIMARY KEY', '')}`);\n          foreignKeys[attr] = match[2];\n        } else {\n          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType.replace('PRIMARY KEY', '')}`);\n        }\n      } else if (dataType.includes('REFERENCES')) {\n        // MySQL doesn't support inline REFERENCES declarations: move to the end\n        match = dataType.match(/^(.+) (REFERENCES.*)$/);\n        attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);\n        foreignKeys[attr] = match[2];\n      } else {\n        attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);\n      }\n    }\n\n    const table = this.quoteTable(tableName);\n    let attributesClause = attrStr.join(', ');\n    const pkString = primaryKeys.map(pk => this.quoteIdentifier(pk)).join(', ');\n\n    if (options.uniqueKeys) {\n      _.each(options.uniqueKeys, (columns, indexName) => {\n        if (columns.customIndex) {\n          if (typeof indexName !== 'string') {\n            indexName = `uniq_${tableName}_${columns.fields.join('_')}`;\n          }\n          attributesClause += `, UNIQUE ${this.quoteIdentifier(indexName)} (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ')})`;\n        }\n      });\n    }\n\n    if (pkString.length > 0) {\n      attributesClause += `, PRIMARY KEY (${pkString})`;\n    }\n\n    for (const fkey in foreignKeys) {\n      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {\n        attributesClause += `, FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;\n      }\n    }\n\n    return Utils.joinSQLFragments([\n      'CREATE TABLE IF NOT EXISTS',\n      table,\n      `(${attributesClause})`,\n      `ENGINE=${options.engine}`,\n      options.comment && typeof options.comment === 'string' && `COMMENT ${this.escape(options.comment)}`,\n      options.charset && `DEFAULT CHARSET=${options.charset}`,\n      options.collate && `COLLATE ${options.collate}`,\n      options.initialAutoIncrement && `AUTO_INCREMENT=${options.initialAutoIncrement}`,\n      options.rowFormat && `ROW_FORMAT=${options.rowFormat}`,\n      ';'\n    ]);\n  }\n\n  describeTableQuery(tableName, schema, schemaDelimiter) {\n    const table = this.quoteTable(\n      this.addSchema({\n        tableName,\n        _schema: schema,\n        _schemaDelimiter: schemaDelimiter\n      })\n    );\n\n    return `SHOW FULL COLUMNS FROM ${table};`;\n  }\n\n  showTablesQuery(database) {\n    let query = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = \\'BASE TABLE\\'';\n    if (database) {\n      query += ` AND TABLE_SCHEMA = ${this.escape(database)}`;\n    } else {\n      query += ' AND TABLE_SCHEMA NOT IN (\\'MYSQL\\', \\'INFORMATION_SCHEMA\\', \\'PERFORMANCE_SCHEMA\\', \\'SYS\\', \\'mysql\\', \\'information_schema\\', \\'performance_schema\\', \\'sys\\')';\n    }\n    return `${query};`;\n  }\n\n  tableExistsQuery(table) {\n    // remove first & last `, then escape as SQL string\n    const tableName = this.escape(this.quoteTable(table).slice(1, -1));\n\n    return `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_NAME = ${tableName} AND TABLE_SCHEMA = ${this.escape(this.sequelize.config.database)}`;\n  }\n\n  addColumnQuery(table, key, dataType) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(table),\n      'ADD',\n      this.quoteIdentifier(key),\n      this.attributeToSQL(dataType, {\n        context: 'addColumn',\n        tableName: table,\n        foreignKey: key\n      }),\n      ';'\n    ]);\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP',\n      this.quoteIdentifier(attributeName),\n      ';'\n    ]);\n  }\n\n  changeColumnQuery(tableName, attributes) {\n    const attrString = [];\n    const constraintString = [];\n\n    for (const attributeName in attributes) {\n      let definition = attributes[attributeName];\n      if (definition.includes('REFERENCES')) {\n        const attrName = this.quoteIdentifier(attributeName);\n        definition = definition.replace(/.+?(?=REFERENCES)/, '');\n        constraintString.push(`FOREIGN KEY (${attrName}) ${definition}`);\n      } else {\n        attrString.push(`\\`${attributeName}\\` \\`${attributeName}\\` ${definition}`);\n      }\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      attrString.length && `CHANGE ${attrString.join(', ')}`,\n      constraintString.length && `ADD ${constraintString.join(', ')}`,\n      ';'\n    ]);\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n    const attrString = [];\n\n    for (const attrName in attributes) {\n      const definition = attributes[attrName];\n      attrString.push(`\\`${attrBefore}\\` \\`${attrName}\\` ${definition}`);\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'CHANGE',\n      attrString.join(', '),\n      ';'\n    ]);\n  }\n\n  handleSequelizeMethod(smth, tableName, factory, options, prepend) {\n    if (smth instanceof Utils.Json) {\n      // Parse nested object\n      if (smth.conditions) {\n        const conditions = this.parseConditionObject(smth.conditions).map(condition =>\n          `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`\n        );\n\n        return conditions.join(' AND ');\n      }\n      if (smth.path) {\n        let str;\n\n        // Allow specifying conditions using the sqlite json functions\n        if (this._checkValidJsonStatement(smth.path)) {\n          str = smth.path;\n        } else {\n          // Also support json property accessors\n          const paths = _.toPath(smth.path);\n          const column = paths.shift();\n          str = this.jsonPathExtractionQuery(column, paths);\n        }\n\n        if (smth.value) {\n          str += util.format(' = %s', this.escape(smth.value));\n        }\n\n        return str;\n      }\n    } else if (smth instanceof Utils.Cast) {\n      if (/timestamp/i.test(smth.type)) {\n        smth.type = 'datetime';\n      } else if (smth.json && /boolean/i.test(smth.type)) {\n        // true or false cannot be casted as booleans within a JSON structure\n        smth.type = 'char';\n      } else if (/double precision/i.test(smth.type) || /boolean/i.test(smth.type) || /integer/i.test(smth.type)) {\n        smth.type = 'decimal';\n      } else if (/text/i.test(smth.type)) {\n        smth.type = 'char';\n      }\n    }\n\n    return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);\n  }\n\n  _toJSONValue(value) {\n    // true/false are stored as strings in mysql\n    if (typeof value === 'boolean') {\n      return value.toString();\n    }\n    // null is stored as a string in mysql\n    if (value === null) {\n      return 'null';\n    }\n    return value;\n  }\n\n  truncateTableQuery(tableName) {\n    return `TRUNCATE ${this.quoteTable(tableName)}`;\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    let limit = '';\n    let query = `DELETE FROM ${this.quoteTable(tableName)}`;\n\n    if (options.limit) {\n      limit = ` LIMIT ${this.escape(options.limit)}`;\n    }\n\n    where = this.getWhereConditions(where, null, model, options);\n\n    if (where) {\n      query += ` WHERE ${where}`;\n    }\n\n    return query + limit;\n  }\n\n  showIndexesQuery(tableName, options) {\n    return Utils.joinSQLFragments([\n      `SHOW INDEX FROM ${this.quoteTable(tableName)}`,\n      options && options.database && `FROM \\`${options.database}\\``\n    ]);\n  }\n\n  showConstraintsQuery(table, constraintName) {\n    const tableName = table.tableName || table;\n    const schemaName = table.schema;\n\n    return Utils.joinSQLFragments([\n      'SELECT CONSTRAINT_CATALOG AS constraintCatalog,',\n      'CONSTRAINT_NAME AS constraintName,',\n      'CONSTRAINT_SCHEMA AS constraintSchema,',\n      'CONSTRAINT_TYPE AS constraintType,',\n      'TABLE_NAME AS tableName,',\n      'TABLE_SCHEMA AS tableSchema',\n      'from INFORMATION_SCHEMA.TABLE_CONSTRAINTS',\n      `WHERE table_name='${tableName}'`,\n      constraintName && `AND constraint_name = '${constraintName}'`,\n      schemaName && `AND TABLE_SCHEMA = '${schemaName}'`,\n      ';'\n    ]);\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return Utils.joinSQLFragments([\n      'DROP INDEX',\n      this.quoteIdentifier(indexName),\n      'ON',\n      this.quoteTable(tableName)\n    ]);\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    const attributeString = attribute.type.toString({ escape: this.escape.bind(this) });\n    let template = attributeString;\n\n    if (attribute.allowNull === false) {\n      template += ' NOT NULL';\n    }\n\n    if (attribute.autoIncrement) {\n      template += ' auto_increment';\n    }\n\n    // BLOB/TEXT/GEOMETRY/JSON cannot have a default value\n    if (!typeWithoutDefault.has(attributeString)\n      && attribute.type._binary !== true\n      && Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n    }\n\n    if (attribute.unique === true) {\n      template += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      template += ' PRIMARY KEY';\n    }\n\n    if (attribute.comment) {\n      template += ` COMMENT ${this.escape(attribute.comment)}`;\n    }\n\n    if (attribute.first) {\n      template += ' FIRST';\n    }\n    if (attribute.after) {\n      template += ` AFTER ${this.quoteIdentifier(attribute.after)}`;\n    }\n\n    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {\n      if (options && options.context === 'addColumn' && options.foreignKey) {\n        const attrName = this.quoteIdentifier(options.foreignKey);\n        const fkName = this.quoteIdentifier(`${options.tableName}_${attrName}_foreign_idx`);\n\n        template += `, ADD CONSTRAINT ${fkName} FOREIGN KEY (${attrName})`;\n      }\n\n      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;\n\n      if (attribute.references.key) {\n        template += ` (${this.quoteIdentifier(attribute.references.key)})`;\n      } else {\n        template += ` (${this.quoteIdentifier('id')})`;\n      }\n\n      if (attribute.onDelete) {\n        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;\n      }\n\n      if (attribute.onUpdate) {\n        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;\n      }\n    }\n\n    return template;\n  }\n\n  attributesToSQL(attributes, options) {\n    const result = {};\n\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      result[attribute.field || key] = this.attributeToSQL(attribute, options);\n    }\n\n    return result;\n  }\n\n  /**\n   * Check whether the statmement is json function or simple path\n   *\n   * @param   {string}  stmt  The statement to validate\n   * @returns {boolean}       true if the given statement is json function\n   * @throws  {Error}         throw if the statement looks like json function but has invalid token\n   * @private\n   */\n  _checkValidJsonStatement(stmt) {\n    if (typeof stmt !== 'string') {\n      return false;\n    }\n\n    let currentIndex = 0;\n    let openingBrackets = 0;\n    let closingBrackets = 0;\n    let hasJsonFunction = false;\n    let hasInvalidToken = false;\n\n    while (currentIndex < stmt.length) {\n      const string = stmt.substr(currentIndex);\n      const functionMatches = JSON_FUNCTION_REGEX.exec(string);\n      if (functionMatches) {\n        currentIndex += functionMatches[0].indexOf('(');\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);\n      if (operatorMatches) {\n        currentIndex += operatorMatches[0].length;\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);\n      if (tokenMatches) {\n        const capturedToken = tokenMatches[1];\n        if (capturedToken === '(') {\n          openingBrackets++;\n        } else if (capturedToken === ')') {\n          closingBrackets++;\n        } else if (capturedToken === ';') {\n          hasInvalidToken = true;\n          break;\n        }\n        currentIndex += tokenMatches[0].length;\n        continue;\n      }\n\n      break;\n    }\n\n    // Check invalid json statement\n    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {\n      throw new Error(`Invalid json statement: ${stmt}`);\n    }\n\n    // return true if the statement has valid json function\n    return hasJsonFunction;\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys of a table.\n   *\n   * @param  {object} table  The table.\n   * @param  {string} schemaName The name of the schema.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeysQuery(table, schemaName) {\n    const tableName = table.tableName || table;\n    return Utils.joinSQLFragments([\n      'SELECT',\n      FOREIGN_KEY_FIELDS,\n      `FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '${tableName}'`,\n      `AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='${schemaName}'`,\n      'AND REFERENCED_TABLE_NAME IS NOT NULL',\n      ';'\n    ]);\n  }\n\n  /**\n   * Generates an SQL query that returns the foreign key constraint of a given column.\n   *\n   * @param  {object} table  The table.\n   * @param  {string} columnName The name of the column.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeyQuery(table, columnName) {\n    const quotedSchemaName = table.schema ? wrapSingleQuote(table.schema) : '';\n    const quotedTableName = wrapSingleQuote(table.tableName || table);\n    const quotedColumnName = wrapSingleQuote(columnName);\n\n    return Utils.joinSQLFragments([\n      'SELECT',\n      FOREIGN_KEY_FIELDS,\n      'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE',\n      'WHERE (',\n      [\n        `REFERENCED_TABLE_NAME = ${quotedTableName}`,\n        table.schema && `AND REFERENCED_TABLE_SCHEMA = ${quotedSchemaName}`,\n        `AND REFERENCED_COLUMN_NAME = ${quotedColumnName}`\n      ],\n      ') OR (',\n      [\n        `TABLE_NAME = ${quotedTableName}`,\n        table.schema && `AND TABLE_SCHEMA = ${quotedSchemaName}`,\n        `AND COLUMN_NAME = ${quotedColumnName}`,\n        'AND REFERENCED_TABLE_NAME IS NOT NULL'\n      ],\n      ')'\n    ]);\n  }\n\n  /**\n   * Generates an SQL query that removes a foreign key from a table.\n   *\n   * @param  {string} tableName  The name of the table.\n   * @param  {string} foreignKey The name of the foreign key constraint.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP FOREIGN KEY',\n      this.quoteIdentifier(foreignKey),\n      ';'\n    ]);\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return Utils.addTicks(Utils.removeTicks(identifier, '`'), '`');\n  }\n}\n\n// private methods\nfunction wrapSingleQuote(identifier) {\n  return Utils.addTicks(identifier, '\\'');\n}\n\nmodule.exports = MySQLQueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,71 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const sequelizeErrors = require("../../errors");
-const { QueryInterface } = require("../abstract/query-interface");
-const QueryTypes = require("../../query-types");
-class MySQLQueryInterface extends QueryInterface {
-  async removeColumn(tableName, columnName, options) {
-    options = options || {};
-    const [results] = await this.sequelize.query(this.queryGenerator.getForeignKeyQuery(tableName.tableName ? tableName : {
-      tableName,
-      schema: this.sequelize.config.database
-    }, columnName), __spreadValues({ raw: true }, options));
-    if (results.length && results[0].constraint_name !== "PRIMARY") {
-      await Promise.all(results.map((constraint) => this.sequelize.query(this.queryGenerator.dropForeignKeyQuery(tableName, constraint.constraint_name), __spreadValues({ raw: true }, options))));
-    }
-    return await this.sequelize.query(this.queryGenerator.removeColumnQuery(tableName, columnName), __spreadValues({ raw: true }, options));
-  }
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    options = __spreadValues({}, options);
-    options.type = QueryTypes.UPSERT;
-    options.updateOnDuplicate = Object.keys(updateValues);
-    options.upsertKeys = Object.values(options.model.primaryKeys).map((item) => item.field);
-    const model = options.model;
-    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async removeConstraint(tableName, constraintName, options) {
-    const sql = this.queryGenerator.showConstraintsQuery(tableName.tableName ? tableName : {
-      tableName,
-      schema: this.sequelize.config.database
-    }, constraintName);
-    const constraints = await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), {
-      type: this.sequelize.QueryTypes.SHOWCONSTRAINTS
-    }));
-    const constraint = constraints[0];
-    let query;
-    if (!constraint || !constraint.constraintType) {
-      throw new sequelizeErrors.UnknownConstraintError({
-        message: `Constraint ${constraintName} on table ${tableName} does not exist`,
-        constraint: constraintName,
-        table: tableName
-      });
-    }
-    if (constraint.constraintType === "FOREIGN KEY") {
-      query = this.queryGenerator.dropForeignKeyQuery(tableName, constraintName);
-    } else {
-      query = this.queryGenerator.removeIndexQuery(constraint.tableName, constraint.constraintName);
-    }
-    return await this.sequelize.query(query, options);
-  }
-}
-exports.MySQLQueryInterface = MySQLQueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst sequelizeErrors = require('../../errors');\nconst { QueryInterface } = require('../abstract/query-interface');\nconst QueryTypes = require('../../query-types');\n\n/**\n * The interface that Sequelize uses to talk with MySQL/MariaDB database\n */\nclass MySQLQueryInterface extends QueryInterface {\n  /**\n   * A wrapper that fixes MySQL's inability to cleanly remove columns from existing tables if they have a foreign key constraint.\n   *\n   * @override\n   */\n  async removeColumn(tableName, columnName, options) {\n    options = options || {};\n\n    const [results] = await this.sequelize.query(\n      this.queryGenerator.getForeignKeyQuery(tableName.tableName ? tableName : {\n        tableName,\n        schema: this.sequelize.config.database\n      }, columnName),\n      { raw: true, ...options }\n    );\n\n    //Exclude primary key constraint\n    if (results.length && results[0].constraint_name !== 'PRIMARY') {\n      await Promise.all(results.map(constraint => this.sequelize.query(\n        this.queryGenerator.dropForeignKeyQuery(tableName, constraint.constraint_name),\n        { raw: true, ...options }\n      )));\n    }\n\n    return await this.sequelize.query(\n      this.queryGenerator.removeColumnQuery(tableName, columnName),\n      { raw: true, ...options }\n    );\n  }\n\n  /**\n   * @override\n   */\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    options = { ...options };\n\n    options.type = QueryTypes.UPSERT;\n    options.updateOnDuplicate = Object.keys(updateValues);\n    options.upsertKeys = Object.values(options.model.primaryKeys).map(item => item.field);\n\n    const model = options.model;\n    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /**\n   * @override\n   */\n  async removeConstraint(tableName, constraintName, options) {\n    const sql = this.queryGenerator.showConstraintsQuery(\n      tableName.tableName ? tableName : {\n        tableName,\n        schema: this.sequelize.config.database\n      }, constraintName);\n\n    const constraints = await this.sequelize.query(sql, { ...options,\n      type: this.sequelize.QueryTypes.SHOWCONSTRAINTS });\n\n    const constraint = constraints[0];\n    let query;\n    if (!constraint || !constraint.constraintType) {\n      throw new sequelizeErrors.UnknownConstraintError(\n        {\n          message: `Constraint ${constraintName} on table ${tableName} does not exist`,\n          constraint: constraintName,\n          table: tableName\n        });\n    }\n\n    if (constraint.constraintType === 'FOREIGN KEY') {\n      query = this.queryGenerator.dropForeignKeyQuery(tableName, constraintName);\n    } else {\n      query = this.queryGenerator.removeIndexQuery(constraint.tableName, constraint.constraintName);\n    }\n\n    return await this.sequelize.query(query, options);\n  }\n}\n\nexports.MySQLQueryInterface = MySQLQueryInterface;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAEA,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,mBAAmB,QAAQ;AACnC,MAAM,aAAa,QAAQ;AAK3B,kCAAkC,eAAe;AAAA,QAMzC,aAAa,WAAW,YAAY,SAAS;AACjD,cAAU,WAAW;AAErB,UAAM,CAAC,WAAW,MAAM,KAAK,UAAU,MACrC,KAAK,eAAe,mBAAmB,UAAU,YAAY,YAAY;AAAA,MACvE;AAAA,MACA,QAAQ,KAAK,UAAU,OAAO;AAAA,OAC7B,aACH,iBAAE,KAAK,QAAS;AAIlB,QAAI,QAAQ,UAAU,QAAQ,GAAG,oBAAoB,WAAW;AAC9D,YAAM,QAAQ,IAAI,QAAQ,IAAI,gBAAc,KAAK,UAAU,MACzD,KAAK,eAAe,oBAAoB,WAAW,WAAW,kBAC9D,iBAAE,KAAK,QAAS;AAAA;AAIpB,WAAO,MAAM,KAAK,UAAU,MAC1B,KAAK,eAAe,kBAAkB,WAAW,aACjD,iBAAE,KAAK,QAAS;AAAA;AAAA,QAOd,OAAO,WAAW,cAAc,cAAc,OAAO,SAAS;AAClE,cAAU,mBAAK;AAEf,YAAQ,OAAO,WAAW;AAC1B,YAAQ,oBAAoB,OAAO,KAAK;AACxC,YAAQ,aAAa,OAAO,OAAO,QAAQ,MAAM,aAAa,IAAI,UAAQ,KAAK;AAE/E,UAAM,QAAQ,QAAQ;AACtB,UAAM,MAAM,KAAK,eAAe,YAAY,WAAW,cAAc,MAAM,eAAe;AAC1F,WAAO,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA;AAAA,QAMnC,iBAAiB,WAAW,gBAAgB,SAAS;AACzD,UAAM,MAAM,KAAK,eAAe,qBAC9B,UAAU,YAAY,YAAY;AAAA,MAChC;AAAA,MACA,QAAQ,KAAK,UAAU,OAAO;AAAA,OAC7B;AAEL,UAAM,cAAc,MAAM,KAAK,UAAU,MAAM,KAAK,iCAAK,UAAL;AAAA,MAClD,MAAM,KAAK,UAAU,WAAW;AAAA;AAElC,UAAM,aAAa,YAAY;AAC/B,QAAI;AACJ,QAAI,CAAC,cAAc,CAAC,WAAW,gBAAgB;AAC7C,YAAM,IAAI,gBAAgB,uBACxB;AAAA,QACE,SAAS,cAAc,2BAA2B;AAAA,QAClD,YAAY;AAAA,QACZ,OAAO;AAAA;AAAA;AAIb,QAAI,WAAW,mBAAmB,eAAe;AAC/C,cAAQ,KAAK,eAAe,oBAAoB,WAAW;AAAA,WACtD;AACL,cAAQ,KAAK,eAAe,iBAAiB,WAAW,WAAW,WAAW;AAAA;AAGhF,WAAO,MAAM,KAAK,UAAU,MAAM,OAAO;AAAA;AAAA;AAI7C,QAAQ,sBAAsB;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,239 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const AbstractQuery = require("../abstract/query");
-const sequelizeErrors = require("../../errors");
-const _ = require("lodash");
-const { logger } = require("../../utils/logger");
-const ER_DUP_ENTRY = 1062;
-const ER_DEADLOCK = 1213;
-const ER_ROW_IS_REFERENCED = 1451;
-const ER_NO_REFERENCED_ROW = 1452;
-const debug = logger.debugContext("sql:mysql");
-class Query extends AbstractQuery {
-  constructor(connection, sequelize, options) {
-    super(connection, sequelize, __spreadValues({ showWarnings: false }, options));
-  }
-  static formatBindParameters(sql, values, dialect) {
-    const bindParam = [];
-    const replacementFunc = (match, key, values_) => {
-      if (values_[key] !== void 0) {
-        bindParam.push(values_[key]);
-        return "?";
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    return [sql, bindParam.length > 0 ? bindParam : void 0];
-  }
-  async run(sql, parameters) {
-    this.sql = sql;
-    const { connection, options } = this;
-    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;
-    const complete = this._logQuery(sql, debug, parameters);
-    if (parameters) {
-      debug("parameters(%j)", parameters);
-    }
-    let results;
-    const errForStack = new Error();
-    try {
-      if (parameters && parameters.length) {
-        results = await new Promise((resolve, reject) => {
-          connection.execute(sql, parameters, (error, result) => error ? reject(error) : resolve(result)).setMaxListeners(100);
-        });
-      } else {
-        results = await new Promise((resolve, reject) => {
-          connection.query({ sql }, (error, result) => error ? reject(error) : resolve(result)).setMaxListeners(100);
-        });
-      }
-    } catch (error) {
-      if (options.transaction && error.errno === ER_DEADLOCK) {
-        try {
-          await options.transaction.rollback();
-        } catch (error_) {
-        }
-        options.transaction.finished = "rollback";
-      }
-      error.sql = sql;
-      error.parameters = parameters;
-      throw this.formatError(error, errForStack.stack);
-    } finally {
-      complete();
-    }
-    if (showWarnings && results && results.warningStatus > 0) {
-      await this.logWarnings(results);
-    }
-    return this.formatResults(results);
-  }
-  formatResults(data) {
-    let result = this.instance;
-    if (this.isInsertQuery(data)) {
-      this.handleInsertQuery(data);
-      if (!this.instance) {
-        if (data.constructor.name === "ResultSetHeader" && this.model && this.model.autoIncrementAttribute && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute && this.model.rawAttributes[this.model.primaryKeyAttribute]) {
-          const startId = data[this.getInsertIdField()];
-          result = [];
-          for (let i = startId; i < startId + data.affectedRows; i++) {
-            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });
-          }
-        } else {
-          result = data[this.getInsertIdField()];
-        }
-      }
-    }
-    if (this.isSelectQuery()) {
-      return this.handleSelectQuery(data);
-    }
-    if (this.isShowTablesQuery()) {
-      return this.handleShowTablesQuery(data);
-    }
-    if (this.isDescribeQuery()) {
-      result = {};
-      for (const _result of data) {
-        const enumRegex = /^enum/i;
-        result[_result.Field] = {
-          type: enumRegex.test(_result.Type) ? _result.Type.replace(enumRegex, "ENUM") : _result.Type.toUpperCase(),
-          allowNull: _result.Null === "YES",
-          defaultValue: _result.Default,
-          primaryKey: _result.Key === "PRI",
-          autoIncrement: Object.prototype.hasOwnProperty.call(_result, "Extra") && _result.Extra.toLowerCase() === "auto_increment",
-          comment: _result.Comment ? _result.Comment : null
-        };
-      }
-      return result;
-    }
-    if (this.isShowIndexesQuery()) {
-      return this.handleShowIndexesQuery(data);
-    }
-    if (this.isCallQuery()) {
-      return data[0];
-    }
-    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {
-      return data.affectedRows;
-    }
-    if (this.isVersionQuery()) {
-      return data[0].version;
-    }
-    if (this.isForeignKeysQuery()) {
-      return data;
-    }
-    if (this.isUpsertQuery()) {
-      return [result, data.affectedRows === 1];
-    }
-    if (this.isInsertQuery() || this.isUpdateQuery()) {
-      return [result, data.affectedRows];
-    }
-    if (this.isShowConstraintsQuery()) {
-      return data;
-    }
-    if (this.isRawQuery()) {
-      return [data, data];
-    }
-    return result;
-  }
-  async logWarnings(results) {
-    const warningResults = await this.run("SHOW WARNINGS");
-    const warningMessage = `MySQL Warnings (${this.connection.uuid || "default"}): `;
-    const messages = [];
-    for (const _warningRow of warningResults) {
-      if (_warningRow === void 0 || typeof _warningRow[Symbol.iterator] !== "function") {
-        continue;
-      }
-      for (const _warningResult of _warningRow) {
-        if (Object.prototype.hasOwnProperty.call(_warningResult, "Message")) {
-          messages.push(_warningResult.Message);
-        } else {
-          for (const _objectKey of _warningResult.keys()) {
-            messages.push([_objectKey, _warningResult[_objectKey]].join(": "));
-          }
-        }
-      }
-    }
-    this.sequelize.log(warningMessage + messages.join("; "), this.options);
-    return results;
-  }
-  formatError(err, errStack) {
-    const errCode = err.errno || err.code;
-    switch (errCode) {
-      case ER_DUP_ENTRY: {
-        const match = err.message.match(/Duplicate entry '([\s\S]*)' for key '?((.|\s)*?)'?$/);
-        let fields = {};
-        let message = "Validation error";
-        const values = match ? match[1].split("-") : void 0;
-        const fieldKey = match ? match[2].split(".").pop() : void 0;
-        const fieldVal = match ? match[1] : void 0;
-        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];
-        if (uniqueKey) {
-          if (uniqueKey.msg)
-            message = uniqueKey.msg;
-          fields = _.zipObject(uniqueKey.fields, values);
-        } else {
-          fields[fieldKey] = fieldVal;
-        }
-        const errors = [];
-        _.forOwn(fields, (value, field) => {
-          errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-        });
-        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-      }
-      case ER_ROW_IS_REFERENCED:
-      case ER_NO_REFERENCED_ROW: {
-        const match = err.message.match(/CONSTRAINT ([`"])(.*)\1 FOREIGN KEY \(\1(.*)\1\) REFERENCES \1(.*)\1 \(\1(.*)\1\)/);
-        const quoteChar = match ? match[1] : "`";
-        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : void 0;
-        return new sequelizeErrors.ForeignKeyConstraintError({
-          reltype: String(errCode) === String(ER_ROW_IS_REFERENCED) ? "parent" : "child",
-          table: match ? match[4] : void 0,
-          fields,
-          value: fields && fields.length && this.instance && this.instance[fields[0]] || void 0,
-          index: match ? match[2] : void 0,
-          parent: err,
-          stack: errStack
-        });
-      }
-      default:
-        return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-    }
-  }
-  handleShowIndexesQuery(data) {
-    data = data.reduce((acc, item) => {
-      if (!(item.Key_name in acc)) {
-        acc[item.Key_name] = item;
-        item.fields = [];
-      }
-      acc[item.Key_name].fields[item.Seq_in_index - 1] = {
-        attribute: item.Column_name,
-        length: item.Sub_part || void 0,
-        order: item.Collation === "A" ? "ASC" : void 0
-      };
-      delete item.column_name;
-      return acc;
-    }, {});
-    return _.map(data, (item) => ({
-      primary: item.Key_name === "PRIMARY",
-      fields: item.fields,
-      name: item.Key_name,
-      tableName: item.Table,
-      unique: item.Non_unique !== 1,
-      type: item.Index_type
-    }));
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/mysql/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/mysql/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/mysql/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst sequelizeErrors = require('../../errors');\nconst _ = require('lodash');\nconst { logger } = require('../../utils/logger');\n\nconst ER_DUP_ENTRY = 1062;\nconst ER_DEADLOCK = 1213;\nconst ER_ROW_IS_REFERENCED = 1451;\nconst ER_NO_REFERENCED_ROW = 1452;\n\nconst debug = logger.debugContext('sql:mysql');\n\nclass Query extends AbstractQuery {\n  constructor(connection, sequelize, options) {\n    super(connection, sequelize, { showWarnings: false, ...options });\n  }\n\n  static formatBindParameters(sql, values, dialect) {\n    const bindParam = [];\n    const replacementFunc = (match, key, values_) => {\n      if (values_[key] !== undefined) {\n        bindParam.push(values_[key]);\n        return '?';\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n    return [sql, bindParam.length > 0 ? bindParam : undefined];\n  }\n\n  async run(sql, parameters) {\n    this.sql = sql;\n    const { connection, options } = this;\n\n    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;\n\n    const complete = this._logQuery(sql, debug, parameters);\n\n    if (parameters) {\n      debug('parameters(%j)', parameters);\n    }\n\n    let results;\n    const errForStack = new Error();\n\n    try {\n      if (parameters && parameters.length) {\n        results = await new Promise((resolve, reject) => {\n          connection\n            .execute(sql, parameters, (error, result) => error ? reject(error) : resolve(result))\n            .setMaxListeners(100);\n        });\n      } else {\n        results = await new Promise((resolve, reject) => {\n          connection\n            .query({ sql }, (error, result) => error ? reject(error) : resolve(result))\n            .setMaxListeners(100);\n        });\n      }\n    } catch (error) {\n      if (options.transaction && error.errno === ER_DEADLOCK) {\n        // MySQL automatically rolls-back transactions in the event of a deadlock.\n        // However, we still initiate a manual rollback to ensure the connection gets released - see #13102.\n        try {\n          await options.transaction.rollback();\n        } catch (error_) {\n          // Ignore errors - since MySQL automatically rolled back, we're\n          // not that worried about this redundant rollback failing.\n        }\n\n        options.transaction.finished = 'rollback';\n      }\n\n      error.sql = sql;\n      error.parameters = parameters;\n      throw this.formatError(error, errForStack.stack);\n    } finally {\n      complete();\n    }\n\n    if (showWarnings && results && results.warningStatus > 0) {\n      await this.logWarnings(results);\n    }\n    return this.formatResults(results);\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   *\n   *\n   * Example:\n   *  query.formatResults([\n   *    {\n   *      id: 1,              // this is from the main table\n   *      attr2: 'snafu',     // this is from the main table\n   *      Tasks.id: 1,        // this is from the associated table\n   *      Tasks.title: 'task' // this is from the associated table\n   *    }\n   *  ])\n   *\n   * @param {Array} data - The result of the query execution.\n   * @private\n   */\n  formatResults(data) {\n    let result = this.instance;\n\n    if (this.isInsertQuery(data)) {\n      this.handleInsertQuery(data);\n\n      if (!this.instance) {\n        // handle bulkCreate AI primary key\n        if (\n          data.constructor.name === 'ResultSetHeader'\n          && this.model\n          && this.model.autoIncrementAttribute\n          && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute\n          && this.model.rawAttributes[this.model.primaryKeyAttribute]\n        ) {\n          const startId = data[this.getInsertIdField()];\n          result = [];\n          for (let i = startId; i < startId + data.affectedRows; i++) {\n            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });\n          }\n        } else {\n          result = data[this.getInsertIdField()];\n        }\n      }\n    }\n\n    if (this.isSelectQuery()) {\n      return this.handleSelectQuery(data);\n    }\n    if (this.isShowTablesQuery()) {\n      return this.handleShowTablesQuery(data);\n    }\n    if (this.isDescribeQuery()) {\n      result = {};\n\n      for (const _result of data) {\n        const enumRegex = /^enum/i;\n        result[_result.Field] = {\n          type: enumRegex.test(_result.Type) ? _result.Type.replace(enumRegex, 'ENUM') : _result.Type.toUpperCase(),\n          allowNull: _result.Null === 'YES',\n          defaultValue: _result.Default,\n          primaryKey: _result.Key === 'PRI',\n          autoIncrement: Object.prototype.hasOwnProperty.call(_result, 'Extra')\n            && _result.Extra.toLowerCase() === 'auto_increment',\n          comment: _result.Comment ? _result.Comment : null\n        };\n      }\n      return result;\n    }\n    if (this.isShowIndexesQuery()) {\n      return this.handleShowIndexesQuery(data);\n    }\n    if (this.isCallQuery()) {\n      return data[0];\n    }\n    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {\n      return data.affectedRows;\n    }\n    if (this.isVersionQuery()) {\n      return data[0].version;\n    }\n    if (this.isForeignKeysQuery()) {\n      return data;\n    }\n    if (this.isUpsertQuery()) {\n      return [result, data.affectedRows === 1];\n    }\n    if (this.isInsertQuery() || this.isUpdateQuery()) {\n      return [result, data.affectedRows];\n    }\n    if (this.isShowConstraintsQuery()) {\n      return data;\n    }\n    if (this.isRawQuery()) {\n      // MySQL returns row data and metadata (affected rows etc) in a single object - let's standarize it, sorta\n      return [data, data];\n    }\n\n    return result;\n  }\n\n  async logWarnings(results) {\n    const warningResults = await this.run('SHOW WARNINGS');\n    const warningMessage = `MySQL Warnings (${this.connection.uuid || 'default'}): `;\n    const messages = [];\n    for (const _warningRow of warningResults) {\n      if (_warningRow === undefined || typeof _warningRow[Symbol.iterator] !== 'function') {\n        continue;\n      }\n      for (const _warningResult of _warningRow) {\n        if (Object.prototype.hasOwnProperty.call(_warningResult, 'Message')) {\n          messages.push(_warningResult.Message);\n        } else {\n          for (const _objectKey of _warningResult.keys()) {\n            messages.push([_objectKey, _warningResult[_objectKey]].join(': '));\n          }\n        }\n      }\n    }\n\n    this.sequelize.log(warningMessage + messages.join('; '), this.options);\n\n    return results;\n  }\n\n  formatError(err, errStack) {\n    const errCode = err.errno || err.code;\n\n    switch (errCode) {\n      case ER_DUP_ENTRY: {\n        const match = err.message.match(/Duplicate entry '([\\s\\S]*)' for key '?((.|\\s)*?)'?$/);\n        let fields = {};\n        let message = 'Validation error';\n        const values = match ? match[1].split('-') : undefined;\n        const fieldKey = match ? match[2].split('.').pop() : undefined;\n        const fieldVal = match ? match[1] : undefined;\n        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];\n\n        if (uniqueKey) {\n          if (uniqueKey.msg) message = uniqueKey.msg;\n          fields = _.zipObject(uniqueKey.fields, values);\n        } else {\n          fields[fieldKey] = fieldVal;\n        }\n\n        const errors = [];\n        _.forOwn(fields, (value, field) => {\n          errors.push(new sequelizeErrors.ValidationErrorItem(\n            this.getUniqueConstraintErrorMessage(field),\n            'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n            field,\n            value,\n            this.instance,\n            'not_unique'\n          ));\n        });\n\n        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n      }\n\n      case ER_ROW_IS_REFERENCED:\n      case ER_NO_REFERENCED_ROW: {\n        // e.g. CONSTRAINT `example_constraint_name` FOREIGN KEY (`example_id`) REFERENCES `examples` (`id`)\n        const match = err.message.match(\n          /CONSTRAINT ([`\"])(.*)\\1 FOREIGN KEY \\(\\1(.*)\\1\\) REFERENCES \\1(.*)\\1 \\(\\1(.*)\\1\\)/\n        );\n        const quoteChar = match ? match[1] : '`';\n        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : undefined;\n\n        return new sequelizeErrors.ForeignKeyConstraintError({\n          reltype: String(errCode) === String(ER_ROW_IS_REFERENCED) ? 'parent' : 'child',\n          table: match ? match[4] : undefined,\n          fields,\n          value: fields && fields.length && this.instance && this.instance[fields[0]] || undefined,\n          index: match ? match[2] : undefined,\n          parent: err,\n          stack: errStack\n        });\n      }\n\n      default:\n        return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n    }\n  }\n\n  handleShowIndexesQuery(data) {\n    // Group by index name, and collect all fields\n    data = data.reduce((acc, item) => {\n      if (!(item.Key_name in acc)) {\n        acc[item.Key_name] = item;\n        item.fields = [];\n      }\n\n      acc[item.Key_name].fields[item.Seq_in_index - 1] = {\n        attribute: item.Column_name,\n        length: item.Sub_part || undefined,\n        order: item.Collation === 'A' ? 'ASC' : undefined\n      };\n      delete item.column_name;\n\n      return acc;\n    }, {});\n\n    return _.map(data, item => ({\n      primary: item.Key_name === 'PRIMARY',\n      fields: item.fields,\n      name: item.Key_name,\n      tableName: item.Table,\n      unique: item.Non_unique !== 1,\n      type: item.Index_type\n    }));\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,147 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  OracleConnectionManager: () => OracleConnectionManager
-});
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const SequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("oracle");
-const { logger } = require("../../utils/logger");
-const semver = require("semver");
-const debug = logger.debugContext("connection:oracle");
-const DataTypes = require("../../data-types").oracle;
-const { promisify } = require("util");
-class OracleConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    super(dialect, sequelize);
-    this.sequelize = sequelize;
-    this.sequelize.config.port = this.sequelize.config.port || 1521;
-    this.lib = this._loadDialectModule("oracledb");
-    this.extendLib();
-    this.refreshTypeParser(DataTypes);
-  }
-  extendLib() {
-    if (this.sequelize.config && "dialectOptions" in this.sequelize.config) {
-      const dialectOptions = this.sequelize.config.dialectOptions;
-      if (dialectOptions && "maxRows" in dialectOptions) {
-        this.lib.maxRows = this.sequelize.config.dialectOptions.maxRows;
-      }
-      if (dialectOptions && "fetchAsString" in dialectOptions) {
-        this.lib.fetchAsString = this.sequelize.config.dialectOptions.fetchAsString;
-      } else {
-        this.lib.fetchAsString = [this.lib.CLOB];
-      }
-    }
-    this.lib.fetchAsBuffer = [this.lib.BLOB];
-  }
-  buildConnectString(config) {
-    if (!config.host || config.host.length === 0)
-      return config.database;
-    let connectString = config.host;
-    if (config.port && config.port > 0) {
-      connectString += `:${config.port}`;
-    } else {
-      connectString += ":1521";
-    }
-    if (config.database && config.database.length > 0) {
-      connectString += `/${config.database}`;
-    }
-    return connectString;
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  async connect(config) {
-    const connectionConfig = __spreadValues({
-      user: config.username,
-      password: config.password,
-      externalAuth: config.externalAuth,
-      stmtCacheSize: 0,
-      connectString: this.buildConnectString(config)
-    }, config.dialectOptions);
-    try {
-      const connection = await this.lib.getConnection(connectionConfig);
-      this.sequelize.options.databaseVersion = semver.coerce(connection.oracleServerVersionString).version;
-      debug("connection acquired");
-      connection.on("error", (error) => {
-        switch (error.code) {
-          case "ESOCKET":
-          case "ECONNRESET":
-          case "EPIPE":
-          case "PROTOCOL_CONNECTION_LOST":
-            this.pool.destroy(connection);
-        }
-      });
-      return connection;
-    } catch (err) {
-      let errorCode = err.message.split(":");
-      errorCode = errorCode[0];
-      switch (errorCode) {
-        case "ORA-12560":
-        case "ORA-12154":
-        case "ORA-12505":
-        case "ORA-12514":
-        case "NJS-511":
-        case "NJS-516":
-        case "NJS-517":
-        case "NJS-520":
-          throw new SequelizeErrors.ConnectionRefusedError(err);
-        case "ORA-28000":
-        case "ORA-28040":
-        case "ORA-01017":
-        case "NJS-506":
-          throw new SequelizeErrors.AccessDeniedError(err);
-        case "ORA-12541":
-        case "NJS-503":
-        case "NJS-508":
-        case "NJS-507":
-          throw new SequelizeErrors.HostNotReachableError(err);
-        case "NJS-512":
-        case "NJS-515":
-        case "NJS-518":
-        case "NJS-519":
-          throw new SequelizeErrors.InvalidConnectionError(err);
-        case "ORA-12170":
-        case "NJS-510":
-          throw new SequelizeErrors.ConnectionTimedOutError(err);
-        default:
-          throw new SequelizeErrors.ConnectionError(err);
-      }
-    }
-  }
-  async disconnect(connection) {
-    if (!connection.isHealthy()) {
-      debug("connection tried to disconnect but was already at CLOSED state");
-      return;
-    }
-    return await promisify((callback) => connection.close(callback))();
-  }
-  validate(connection) {
-    return connection && connection.isHealthy();
-  }
-}
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/connection-manager.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\n\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst SequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('oracle');\nconst { logger } = require('../../utils/logger');\nconst semver = require('semver');\nconst debug = logger.debugContext('connection:oracle');\nconst DataTypes = require('../../data-types').oracle;\nconst { promisify } = require('util');\n/**\n * Oracle Connection Manager\n *\n * Get connections, validate and disconnect them.\n * AbstractConnectionManager pooling use it to handle Oracle specific connections\n * Use github.com/oracle/node-oracledb to connect with Oracle server\n *\n * @private\n */\nexport class OracleConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    super(dialect, sequelize);\n\n    this.sequelize = sequelize;\n    this.sequelize.config.port = this.sequelize.config.port || 1521;\n    this.lib = this._loadDialectModule('oracledb');\n    this.extendLib();\n    this.refreshTypeParser(DataTypes);\n  }\n\n  /**\n   * Method for initializing the lib\n   *\n   */\n  extendLib() {\n    if (this.sequelize.config && 'dialectOptions' in this.sequelize.config) {\n      const dialectOptions = this.sequelize.config.dialectOptions;\n      if (dialectOptions && 'maxRows' in dialectOptions) {\n        this.lib.maxRows = this.sequelize.config.dialectOptions.maxRows;\n      }\n      if (dialectOptions && 'fetchAsString' in dialectOptions) {\n        this.lib.fetchAsString = this.sequelize.config.dialectOptions.fetchAsString;\n      } else {\n        this.lib.fetchAsString = [this.lib.CLOB];\n      }\n    }\n    // Retrieve BLOB always as Buffer.\n    this.lib.fetchAsBuffer = [this.lib.BLOB];\n  }\n\n  /**\n   * Method for checking the config object passed and generate the full database if not fully passed\n   * With dbName, host and port, it generates a string like this : 'host:port/dbname'\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  buildConnectString(config) {\n    if (!config.host || config.host.length === 0)\n      return config.database;\n    let connectString = config.host;\n    if (config.port && config.port > 0) {\n      connectString += `:${config.port}`;\n    } else {\n      connectString += ':1521';\n    }\n    if (config.database && config.database.length > 0) {\n      connectString += `/${config.database}`;\n    }\n    return connectString;\n  }\n\n  // Expose this as a method so that the parsing may be updated when the user has added additional, custom types\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  /**\n   * Connect with Oracle database based on config, Handle any errors in connection\n   * Set the pool handlers on connection.error\n   * Also set proper timezone once connection is connected.\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  async connect(config) {\n    const connectionConfig = {\n      user: config.username,\n      password: config.password,\n      externalAuth: config.externalAuth,\n      stmtCacheSize: 0,\n      connectString: this.buildConnectString(config),\n      ...config.dialectOptions\n    };\n\n    try {\n      const connection = await this.lib.getConnection(connectionConfig);\n      // Setting the sequelize database version to Oracle DB server version to remove the roundtrip for DB version query\n      this.sequelize.options.databaseVersion = semver.coerce(connection.oracleServerVersionString).version;\n\n      debug('connection acquired');\n      connection.on('error', error => {\n        switch (error.code) {\n          case 'ESOCKET':\n          case 'ECONNRESET':\n          case 'EPIPE':\n          case 'PROTOCOL_CONNECTION_LOST':\n            this.pool.destroy(connection);\n        }\n      });\n\n      return connection;\n    } catch (err) {\n      // We split to get the error number; it comes as ORA-XXXXX:\n      let errorCode = err.message.split(':');\n      errorCode = errorCode[0];\n\n      switch (errorCode) {\n        case 'ORA-12560': // ORA-12560: TNS: Protocol Adapter Error\n        case 'ORA-12154': // ORA-12154: TNS: Could not resolve the connect identifier specified\n        case 'ORA-12505': // ORA-12505: TNS: Listener does not currently know of SID given in connect descriptor\n        case 'ORA-12514': // ORA-12514: TNS: Listener does not currently know of service requested in connect descriptor\n        case 'NJS-511': // NJS-511: connection refused\n        case 'NJS-516': // NJS-516: No Config Dir\n        case 'NJS-517': // NJS-517: TNS Entry not found\n        case 'NJS-520': // NJS-520: TNS Names File missing  \n          throw new SequelizeErrors.ConnectionRefusedError(err);\n        case 'ORA-28000': // ORA-28000: Account locked\n        case 'ORA-28040': // ORA-28040: No matching authentication protocol\n        case 'ORA-01017': // ORA-01017: invalid username/password; logon denied\n        case 'NJS-506': // NJS-506: TLS Auth Failure\n          throw new SequelizeErrors.AccessDeniedError(err);\n        case 'ORA-12541': // ORA-12541: TNS: No listener\n        case 'NJS-503': // NJS-503: Connection Incomplete\n        case 'NJS-508': // NJS-508: TLS HOST MATCH Failure\n        case 'NJS-507': // NJS-507: TLS DN MATCH Failure\n          throw new SequelizeErrors.HostNotReachableError(err);\n        case 'NJS-512': // NJS-512: Invalid Connect String Parameters\n        case 'NJS-515': // NJS-515: Invalid EZCONNECT Syntax\n        case 'NJS-518': // NJS-518: Invald ServiceName\n        case 'NJS-519': // NJS-519: Invald SID\n          throw new SequelizeErrors.InvalidConnectionError(err);\n        case 'ORA-12170': // ORA-12170: TNS: Connect Timeout occurred\n        case 'NJS-510': // NJS-510: Connect Timeout occurred\n\n          throw new SequelizeErrors.ConnectionTimedOutError(err);\n        default:\n          throw new SequelizeErrors.ConnectionError(err);\n      }\n    }\n  }\n\n  async disconnect(connection) {\n    if (!connection.isHealthy()) {\n      debug('connection tried to disconnect but was already at CLOSED state');\n      return;\n    }\n\n    return await promisify(callback => connection.close(callback))();\n  }\n\n  /**\n   * Checking if the connection object is valid and the connection is healthy\n   *\n   * @param {object} connection\n   * @private\n   */\n  validate(connection) {\n    return connection && connection.isHealthy();\n  }\n}\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,377 +1,0 @@
-"use strict";
-const moment = require("moment");
-const momentTz = require("moment-timezone");
-module.exports = (BaseTypes) => {
-  const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-D424D23B-0933-425F-BC69-9C0E6724693C");
-  BaseTypes.DATE.types.oracle = ["TIMESTAMP", "TIMESTAMP WITH LOCAL TIME ZONE"];
-  BaseTypes.STRING.types.oracle = ["VARCHAR2", "NVARCHAR2"];
-  BaseTypes.CHAR.types.oracle = ["CHAR", "RAW"];
-  BaseTypes.TEXT.types.oracle = ["CLOB"];
-  BaseTypes.TINYINT.types.oracle = ["NUMBER"];
-  BaseTypes.SMALLINT.types.oracle = ["NUMBER"];
-  BaseTypes.MEDIUMINT.types.oracle = ["NUMBER"];
-  BaseTypes.INTEGER.types.oracle = ["INTEGER"];
-  BaseTypes.BIGINT.types.oracle = ["NUMBER"];
-  BaseTypes.FLOAT.types.oracle = ["BINARY_FLOAT"];
-  BaseTypes.DATEONLY.types.oracle = ["DATE"];
-  BaseTypes.BOOLEAN.types.oracle = ["CHAR(1)"];
-  BaseTypes.BLOB.types.oracle = ["BLOB"];
-  BaseTypes.DECIMAL.types.oracle = ["NUMBER"];
-  BaseTypes.UUID.types.oracle = ["VARCHAR2"];
-  BaseTypes.ENUM.types.oracle = ["VARCHAR2"];
-  BaseTypes.REAL.types.oracle = ["BINARY_DOUBLE"];
-  BaseTypes.DOUBLE.types.oracle = ["BINARY_DOUBLE"];
-  BaseTypes.JSON.types.oracle = ["BLOB"];
-  BaseTypes.GEOMETRY.types.oracle = false;
-  class STRING extends BaseTypes.STRING {
-    toSql() {
-      if (this.length > 4e3 || this._binary && this._length > 2e3) {
-        warn("Oracle supports length up to 32764 bytes or characters; Be sure that your administrator has extended the MAX_STRING_SIZE parameter. Check https://docs.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-7B72E154-677A-4342-A1EA-C74C1EA928E6");
-      }
-      if (!this._binary) {
-        return `NVARCHAR2(${this._length})`;
-      }
-      return `RAW(${this._length})`;
-    }
-    _stringify(value, options) {
-      if (this._binary) {
-        return options.escape(value.toString("hex"));
-      }
-      return options.escape(value);
-    }
-    _getBindDef(oracledb) {
-      if (this._binary) {
-        return { type: oracledb.DB_TYPE_RAW, maxSize: this._length };
-      }
-      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: this._length };
-    }
-    _bindParam(value, options) {
-      return options.bindParam(value);
-    }
-  }
-  STRING.prototype.escape = false;
-  class BOOLEAN extends BaseTypes.BOOLEAN {
-    toSql() {
-      return "CHAR(1)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_CHAR, maxSize: 1 };
-    }
-    _stringify(value) {
-      return value === true ? "1" : value === false ? "0" : value;
-    }
-    _sanitize(value) {
-      if (typeof value === "string") {
-        return value === "1" || value === "true" ? true : value === "0" || value === "false" ? false : value;
-      }
-      return super._sanitize(value);
-    }
-  }
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "VARCHAR2(36)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: 36 };
-    }
-  }
-  class NOW extends BaseTypes.NOW {
-    toSql() {
-      return "SYSDATE";
-    }
-    _stringify() {
-      return "SYSDATE";
-    }
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql() {
-      return "VARCHAR2(512)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: 512 };
-    }
-  }
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      return "CLOB";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_CLOB };
-    }
-  }
-  class CHAR extends BaseTypes.CHAR {
-    toSql() {
-      if (this._binary) {
-        warn("Oracle CHAR.BINARY datatype is not of Fixed Length.");
-        return `RAW(${this._length})`;
-      }
-      return super.toSql();
-    }
-    _getBindDef(oracledb) {
-      if (this._binary) {
-        return { type: oracledb.DB_TYPE_RAW, maxSize: this._length };
-      }
-      return { type: oracledb.DB_TYPE_CHAR, maxSize: this._length };
-    }
-    _bindParam(value, options) {
-      return options.bindParam(value);
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return "TIMESTAMP WITH LOCAL TIME ZONE";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_TIMESTAMP_LTZ };
-    }
-    _stringify(date, options) {
-      const format = "YYYY-MM-DD HH24:MI:SS.FFTZH:TZM";
-      date = this._applyTimezone(date, options);
-      const formatedDate = date.format("YYYY-MM-DD HH:mm:ss.SSS Z");
-      return `TO_TIMESTAMP_TZ('${formatedDate}','${format}')`;
-    }
-    _applyTimezone(date, options) {
-      if (options.timezone) {
-        if (momentTz.tz.zone(options.timezone)) {
-          date = momentTz(date).tz(options.timezone);
-        } else {
-          date = moment(date).utcOffset(options.timezone);
-        }
-      } else {
-        date = momentTz(date);
-      }
-      return date;
-    }
-    static parse(value, options) {
-      if (value === null) {
-        return value;
-      }
-      if (options && moment.tz.zone(options.timezone)) {
-        value = moment.tz(value.toString(), options.timezone).toDate();
-      }
-      return value;
-    }
-    _bindParam(value, options) {
-      return options.bindParam(value);
-    }
-  }
-  DATE.prototype.escape = false;
-  class DECIMAL extends BaseTypes.DECIMAL {
-    toSql() {
-      let result = "";
-      if (this._length) {
-        result += `(${this._length}`;
-        if (typeof this._decimals === "number") {
-          result += `,${this._decimals}`;
-        }
-        result += ")";
-      }
-      if (!this._length && this._precision) {
-        result += `(${this._precision}`;
-        if (typeof this._scale === "number") {
-          result += `,${this._scale}`;
-        }
-        result += ")";
-      }
-      return `NUMBER${result}`;
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class TINYINT extends BaseTypes.TINYINT {
-    toSql() {
-      return "NUMBER(3)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class SMALLINT extends BaseTypes.SMALLINT {
-    toSql() {
-      if (this._length) {
-        return `NUMBER(${this._length},0)`;
-      }
-      return "SMALLINT";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class MEDIUMINT extends BaseTypes.MEDIUMINT {
-    toSql() {
-      return "NUMBER(8)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class BIGINT extends BaseTypes.BIGINT {
-    constructor(length) {
-      super(length);
-      if (!(this instanceof BIGINT))
-        return new BIGINT(length);
-      BaseTypes.BIGINT.apply(this, arguments);
-      if (this._length || this.options.length || this._unsigned || this._zerofill) {
-        warn("Oracle does not support BIGINT with options");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._unsigned = void 0;
-        this._zerofill = void 0;
-      }
-    }
-    toSql() {
-      return "NUMBER(19)";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-    _sanitize(value) {
-      if (typeof value === "bigint" || typeof value === "number") {
-        return value.toString();
-      }
-      return value;
-    }
-  }
-  class NUMBER extends BaseTypes.NUMBER {
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class INTEGER extends BaseTypes.INTEGER {
-    toSql() {
-      if (this._length) {
-        return `NUMBER(${this._length},0)`;
-      }
-      return "INTEGER";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_NUMBER };
-    }
-  }
-  class FLOAT extends BaseTypes.FLOAT {
-    toSql() {
-      return "BINARY_FLOAT";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_BINARY_FLOAT };
-    }
-  }
-  class REAL extends BaseTypes.REAL {
-    toSql() {
-      return "BINARY_DOUBLE";
-    }
-    _stringify(value) {
-      if (value === Number.POSITIVE_INFINITY) {
-        return "inf";
-      }
-      if (value === Number.NEGATIVE_INFINITY) {
-        return "-inf";
-      }
-      return value;
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_BINARY_DOUBLE };
-    }
-  }
-  class BLOB extends BaseTypes.BLOB {
-    _hexify(hex) {
-      return `'${hex}'`;
-    }
-    toSql() {
-      return "BLOB";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_BLOB };
-    }
-  }
-  class JSONTYPE extends BaseTypes.JSON {
-    toSql() {
-      return "BLOB";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_BLOB };
-    }
-    _stringify(value, options) {
-      return options.operation === "where" && typeof value === "string" ? value : JSON.stringify(value);
-    }
-    _bindParam(value, options) {
-      return options.bindParam(Buffer.from(JSON.stringify(value)));
-    }
-  }
-  class DOUBLE extends BaseTypes.DOUBLE {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (!(this instanceof DOUBLE))
-        return new BaseTypes.DOUBLE(length, decimals);
-      BaseTypes.DOUBLE.apply(this, arguments);
-      if (this._length || this._unsigned || this._zerofill) {
-        warn("Oracle does not support DOUBLE with options.");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._unsigned = void 0;
-        this._zerofill = void 0;
-      }
-      this.key = "DOUBLE PRECISION";
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_BINARY_DOUBLE };
-    }
-    toSql() {
-      return "BINARY_DOUBLE";
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    parse(value) {
-      return moment(value).format("YYYY-MM-DD");
-    }
-    _sanitize(value) {
-      if (value) {
-        return moment(value).format("YYYY-MM-DD");
-      }
-      return value;
-    }
-    _stringify(date, options) {
-      if (date) {
-        const format = "YYYY/MM/DD";
-        return options.escape(`TO_DATE('${date}','${format}')`);
-      }
-      return options.escape(date);
-    }
-    _getBindDef(oracledb) {
-      return { type: oracledb.DB_TYPE_DATE };
-    }
-    _bindParam(value, options) {
-      if (typeof value === "string") {
-        return options.bindParam(new Date(value));
-      }
-      return options.bindParam(value);
-    }
-  }
-  DATEONLY.prototype.escape = false;
-  return {
-    BOOLEAN,
-    "DOUBLE PRECISION": DOUBLE,
-    DOUBLE,
-    STRING,
-    TINYINT,
-    SMALLINT,
-    MEDIUMINT,
-    BIGINT,
-    NUMBER,
-    INTEGER,
-    FLOAT,
-    UUID,
-    DATEONLY,
-    DATE,
-    NOW,
-    BLOB,
-    ENUM,
-    TEXT,
-    CHAR,
-    JSON: JSONTYPE,
-    REAL,
-    DECIMAL
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/data-types.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\n\nconst moment = require('moment');\nconst momentTz = require('moment-timezone');\n\nmodule.exports = BaseTypes => {\n  const warn = BaseTypes.ABSTRACT.warn.bind(\n    undefined,\n    'https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-D424D23B-0933-425F-BC69-9C0E6724693C'\n  );\n\n  BaseTypes.DATE.types.oracle = ['TIMESTAMP', 'TIMESTAMP WITH LOCAL TIME ZONE'];\n  BaseTypes.STRING.types.oracle = ['VARCHAR2', 'NVARCHAR2'];\n  BaseTypes.CHAR.types.oracle = ['CHAR', 'RAW'];\n  BaseTypes.TEXT.types.oracle = ['CLOB'];\n  BaseTypes.TINYINT.types.oracle = ['NUMBER'];\n  BaseTypes.SMALLINT.types.oracle = ['NUMBER'];\n  BaseTypes.MEDIUMINT.types.oracle = ['NUMBER'];\n  BaseTypes.INTEGER.types.oracle = ['INTEGER'];\n  BaseTypes.BIGINT.types.oracle = ['NUMBER'];\n  BaseTypes.FLOAT.types.oracle = ['BINARY_FLOAT'];\n  BaseTypes.DATEONLY.types.oracle = ['DATE'];\n  BaseTypes.BOOLEAN.types.oracle = ['CHAR(1)'];\n  BaseTypes.BLOB.types.oracle = ['BLOB'];\n  BaseTypes.DECIMAL.types.oracle = ['NUMBER'];\n  BaseTypes.UUID.types.oracle = ['VARCHAR2'];\n  BaseTypes.ENUM.types.oracle = ['VARCHAR2'];\n  BaseTypes.REAL.types.oracle = ['BINARY_DOUBLE'];\n  BaseTypes.DOUBLE.types.oracle = ['BINARY_DOUBLE'];\n  BaseTypes.JSON.types.oracle = ['BLOB'];\n  BaseTypes.GEOMETRY.types.oracle = false;\n\n  class STRING extends BaseTypes.STRING {\n    toSql() {\n      if (this.length > 4000 || this._binary && this._length > 2000) {\n        warn(\n          'Oracle supports length up to 32764 bytes or characters; Be sure that your administrator has extended the MAX_STRING_SIZE parameter. Check https://docs.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-7B72E154-677A-4342-A1EA-C74C1EA928E6'\n        );\n      }\n      if (!this._binary) {\n        return `NVARCHAR2(${this._length})`;\n      }\n      return `RAW(${this._length})`;\n    }\n\n    _stringify(value, options) {\n      if (this._binary) {\n        // For Binary numbers we're converting a buffer to hex then\n        // sending it over the wire as a string,\n        // We pass it through escape function to remove un-necessary quotes\n        // this.format in insert/bulkinsert query calls stringify hence we need to convert binary buffer\n        // to hex string. Since this block is used by both bind (insert/bulkinsert) and\n        // non-bind (select query where clause) hence we need to\n        // have an operation that supports both\n        return options.escape(value.toString('hex'));\n      }\n      return options.escape(value);\n    }\n\n    _getBindDef(oracledb) {\n      if (this._binary) {\n        return { type: oracledb.DB_TYPE_RAW, maxSize: this._length };\n      }\n      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: this._length };\n    }\n\n    _bindParam(value, options) {\n      return options.bindParam(value);\n    }\n  }\n\n  STRING.prototype.escape = false;\n\n  class BOOLEAN extends BaseTypes.BOOLEAN {\n    toSql() {\n      return 'CHAR(1)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_CHAR, maxSize: 1 };\n    }\n\n    _stringify(value) {\n      // If value is true we return '1'\n      // If value is false we return '0'\n      // Else we return it as is\n      // Converting number to char since in bindDef\n      // the type would be oracledb.DB_TYPE_CHAR\n      return value === true ? '1' : value === false ? '0' : value;\n    }\n\n    _sanitize(value) {\n      if (typeof value === 'string') {\n        // If value is a string we return true if among '1' and 'true'\n        // We return false if among '0' and 'false'\n        // Else return the value as is and let the DB raise error for invalid values\n        return value === '1' || value === 'true' ? true : value === '0' || value === 'false' ? false : value;\n      }\n      return super._sanitize(value);\n    }\n  }\n\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      return 'VARCHAR2(36)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: 36 };\n    }\n  }\n\n  class NOW extends BaseTypes.NOW {\n    toSql() {\n      return 'SYSDATE';\n    }\n\n    _stringify() {\n      return 'SYSDATE';\n    }\n  }\n\n  class ENUM extends BaseTypes.ENUM {\n    toSql() {\n      return 'VARCHAR2(512)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_VARCHAR, maxSize: 512 };\n    }\n  }\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      return 'CLOB';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_CLOB };\n    }\n  }\n\n  class CHAR extends BaseTypes.CHAR {\n    toSql() {\n      if (this._binary) {\n        warn('Oracle CHAR.BINARY datatype is not of Fixed Length.');\n        return `RAW(${this._length})`;\n      }\n      return super.toSql();\n    }\n\n    _getBindDef(oracledb) {\n      if (this._binary) {\n        return { type: oracledb.DB_TYPE_RAW, maxSize: this._length };\n      }\n      return { type: oracledb.DB_TYPE_CHAR, maxSize: this._length };\n    }\n\n    _bindParam(value, options) {\n      return options.bindParam(value);\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return 'TIMESTAMP WITH LOCAL TIME ZONE';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_TIMESTAMP_LTZ };\n    }\n\n    _stringify(date, options) {\n      const format = 'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM';\n\n      date = this._applyTimezone(date, options);\n\n      const formatedDate = date.format('YYYY-MM-DD HH:mm:ss.SSS Z');\n\n      return `TO_TIMESTAMP_TZ('${formatedDate}','${format}')`;\n    }\n\n    _applyTimezone(date, options) {\n      if (options.timezone) {\n        if (momentTz.tz.zone(options.timezone)) {\n          date = momentTz(date).tz(options.timezone);\n        } else {\n          date = moment(date).utcOffset(options.timezone);\n        }\n      } else {\n        date = momentTz(date);\n      }\n      return date;\n    }\n\n    static parse(value, options) {\n      if (value === null) {\n        return value;\n      }\n      if (options && moment.tz.zone(options.timezone)) {\n        value = moment.tz(value.toString(), options.timezone).toDate();\n      }\n      return value;\n    }\n\n    /**\n     * avoids appending TO_TIMESTAMP_TZ in _stringify\n     *\n     * @override\n     */\n    _bindParam(value, options) {\n      return options.bindParam(value);\n    }\n  }\n\n  DATE.prototype.escape = false;\n\n  class DECIMAL extends BaseTypes.DECIMAL {\n    toSql() {\n      let result = '';\n      if (this._length) {\n        result += `(${this._length}`;\n        if (typeof this._decimals === 'number') {\n          result += `,${this._decimals}`;\n        }\n        result += ')';\n      }\n\n      if (!this._length && this._precision) {\n        result += `(${this._precision}`;\n        if (typeof this._scale === 'number') {\n          result += `,${this._scale}`;\n        }\n        result += ')';\n      }\n\n      return `NUMBER${result}`;\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class TINYINT extends BaseTypes.TINYINT {\n    toSql() {\n      return 'NUMBER(3)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class SMALLINT extends BaseTypes.SMALLINT {\n    toSql() {\n      if (this._length) {\n        return `NUMBER(${this._length},0)`;\n      }\n      return 'SMALLINT';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class MEDIUMINT extends BaseTypes.MEDIUMINT {\n    toSql() {\n      return 'NUMBER(8)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class BIGINT extends BaseTypes.BIGINT {\n    constructor(length) {\n      super(length);\n      if (!(this instanceof BIGINT)) return new BIGINT(length);\n      BaseTypes.BIGINT.apply(this, arguments);\n\n      // ORACLE does not support any options for bigint\n      if (this._length || this.options.length || this._unsigned || this._zerofill) {\n        warn('Oracle does not support BIGINT with options');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._unsigned = undefined;\n        this._zerofill = undefined;\n      }\n    }\n\n    toSql() {\n      return 'NUMBER(19)';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n\n    _sanitize(value) {\n      if (typeof value === 'bigint' || typeof value === 'number') {\n        return value.toString();\n      }\n      return value;\n    }\n\n  }\n\n  class NUMBER extends BaseTypes.NUMBER {\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class INTEGER extends BaseTypes.INTEGER {\n    toSql() {\n      if (this._length) {\n        return `NUMBER(${this._length},0)`;\n      }\n      return 'INTEGER';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_NUMBER };\n    }\n  }\n\n  class FLOAT extends BaseTypes.FLOAT {\n    toSql() {\n      return 'BINARY_FLOAT';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_BINARY_FLOAT };\n    }\n  }\n\n  class REAL extends BaseTypes.REAL {\n    toSql() {\n      return 'BINARY_DOUBLE';\n    }\n\n    // https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-0BA2E065-8006-426C-A3CB-1F6B0C8F283C\n    _stringify(value) {\n      if (value === Number.POSITIVE_INFINITY) {\n        return 'inf';\n      }\n      if (value === Number.NEGATIVE_INFINITY) {\n        return '-inf';\n      }\n      return value;\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_BINARY_DOUBLE };\n    }\n  }\n\n  class BLOB extends BaseTypes.BLOB {\n    // Generic hexify returns X'${hex}' but Oracle expects '${hex}' for BLOB datatype\n    _hexify(hex) {\n      return `'${hex}'`;\n    }\n\n    toSql() {\n      return 'BLOB';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_BLOB };\n    }\n  }\n\n  class JSONTYPE extends BaseTypes.JSON {\n    toSql() {\n      return 'BLOB';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_BLOB };\n    }\n\n    _stringify(value, options) {\n      return options.operation === 'where' && typeof value === 'string' ? value : JSON.stringify(value);\n    }\n\n    _bindParam(value, options) {\n      return options.bindParam(Buffer.from(JSON.stringify(value)));\n    }\n  }\n\n  class DOUBLE extends BaseTypes.DOUBLE {\n    constructor(length, decimals) {\n      super(length, decimals);\n      if (!(this instanceof DOUBLE)) return new BaseTypes.DOUBLE(length, decimals);\n      BaseTypes.DOUBLE.apply(this, arguments);\n\n      if (this._length || this._unsigned || this._zerofill) {\n        warn('Oracle does not support DOUBLE with options.');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._unsigned = undefined;\n        this._zerofill = undefined;\n      }\n\n      this.key = 'DOUBLE PRECISION';\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_BINARY_DOUBLE };\n    }\n\n    toSql() {\n      return 'BINARY_DOUBLE';\n    }\n  }\n  class DATEONLY extends BaseTypes.DATEONLY {\n    parse(value) {\n      return moment(value).format('YYYY-MM-DD');\n    }\n\n    _sanitize(value) {\n      if (value) {\n        return moment(value).format('YYYY-MM-DD');\n      }\n      return value;\n    }\n\n    _stringify(date, options) {\n      // If date is not null only then we format the date\n      if (date) {\n        const format = 'YYYY/MM/DD';\n        return options.escape(`TO_DATE('${date}','${format}')`);\n      }\n      return options.escape(date);\n    }\n\n    _getBindDef(oracledb) {\n      return { type: oracledb.DB_TYPE_DATE };\n    }\n\n    /**\n     * avoids appending TO_DATE in _stringify\n     *\n     * @override\n     */\n    _bindParam(value, options) {\n      if (typeof value === 'string') {\n        return options.bindParam(new Date(value));\n      }\n      return options.bindParam(value);\n\n    }\n  }\n\n  DATEONLY.prototype.escape = false;\n\n  return {\n    BOOLEAN,\n    'DOUBLE PRECISION': DOUBLE,\n    DOUBLE,\n    STRING,\n    TINYINT,\n    SMALLINT,\n    MEDIUMINT,\n    BIGINT,\n    NUMBER,\n    INTEGER,\n    FLOAT,\n    UUID,\n    DATEONLY,\n    DATE,\n    NOW,\n    BLOB,\n    ENUM,\n    TEXT,\n    CHAR,\n    JSON: JSONTYPE,\n    REAL,\n    DECIMAL\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,62 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const { AbstractDialect } = require("../abstract");
-const { OracleConnectionManager } = require("./connection-manager");
-const { OracleQuery } = require("./query");
-const { OracleQueryGenerator } = require("./query-generator");
-const DataTypes = require("../../data-types").oracle;
-const { OracleQueryInterface } = require("./query-interface");
-class OracleDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new OracleConnectionManager(this, sequelize);
-    this.connectionManager.initPools();
-    this.queryGenerator = new OracleQueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new OracleQueryInterface(sequelize, this.queryGenerator);
-  }
-}
-OracleDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "VALUES ()": true,
-  "LIMIT ON UPDATE": true,
-  IGNORE: " IGNORE",
-  lock: true,
-  lockOuterJoinFailure: true,
-  forShare: "FOR UPDATE",
-  skipLocked: true,
-  index: {
-    collate: false,
-    length: false,
-    parser: false,
-    type: false,
-    using: false
-  },
-  constraints: {
-    restrict: false
-  },
-  returnValues: false,
-  returnIntoValues: true,
-  "ORDER NULLS": true,
-  schemas: true,
-  updateOnDuplicate: false,
-  indexViaAlter: false,
-  NUMERIC: true,
-  JSON: true,
-  upserts: true,
-  bulkDefault: true,
-  topLevelOrderByRequired: true,
-  GEOMETRY: false
-});
-OracleDialect.prototype.defaultVersion = "18.0.0";
-OracleDialect.prototype.Query = OracleQuery;
-OracleDialect.prototype.queryGenerator = OracleQueryGenerator;
-OracleDialect.prototype.DataTypes = DataTypes;
-OracleDialect.prototype.name = "oracle";
-OracleDialect.prototype.TICK_CHAR = '"';
-OracleDialect.prototype.TICK_CHAR_LEFT = OracleDialect.prototype.TICK_CHAR;
-OracleDialect.prototype.TICK_CHAR_RIGHT = OracleDialect.prototype.TICK_CHAR;
-module.exports = OracleDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/index.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\n\nconst _ = require('lodash');\nconst { AbstractDialect } = require('../abstract');\nconst { OracleConnectionManager } = require('./connection-manager');\nconst { OracleQuery } = require('./query');\nconst { OracleQueryGenerator } = require('./query-generator');\nconst DataTypes = require('../../data-types').oracle;\nconst { OracleQueryInterface } = require('./query-interface');\n\nclass OracleDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new OracleConnectionManager(this, sequelize);\n    this.connectionManager.initPools();\n    this.queryGenerator = new OracleQueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new OracleQueryInterface(sequelize, this.queryGenerator);\n  }\n}\n\nOracleDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {\n  'VALUES ()': true,\n  'LIMIT ON UPDATE': true,\n  IGNORE: ' IGNORE',\n  lock: true,\n  lockOuterJoinFailure: true,\n  forShare: 'FOR UPDATE',\n  skipLocked: true,\n  index: {\n    collate: false,\n    length: false,\n    parser: false,\n    type: false,\n    using: false\n  },\n  constraints: {\n    restrict: false\n  },\n  returnValues: false,\n  returnIntoValues: true,\n  'ORDER NULLS': true,\n  schemas: true,\n  updateOnDuplicate: false,\n  indexViaAlter: false,\n  NUMERIC: true,\n  JSON: true,\n  upserts: true,\n  bulkDefault: true,\n  topLevelOrderByRequired: true,\n  GEOMETRY: false\n});\n\nOracleDialect.prototype.defaultVersion = '18.0.0';\nOracleDialect.prototype.Query = OracleQuery;\nOracleDialect.prototype.queryGenerator = OracleQueryGenerator;\nOracleDialect.prototype.DataTypes = DataTypes;\nOracleDialect.prototype.name = 'oracle';\nOracleDialect.prototype.TICK_CHAR = '\"';\nOracleDialect.prototype.TICK_CHAR_LEFT = OracleDialect.prototype.TICK_CHAR;\nOracleDialect.prototype.TICK_CHAR_RIGHT = OracleDialect.prototype.TICK_CHAR;\n\nmodule.exports = OracleDialect;\n"],
-  "mappings": ";AAIA,MAAM,IAAI,QAAQ;AAClB,MAAM,EAAE,oBAAoB,QAAQ;AACpC,MAAM,EAAE,4BAA4B,QAAQ;AAC5C,MAAM,EAAE,gBAAgB,QAAQ;AAChC,MAAM,EAAE,yBAAyB,QAAQ;AACzC,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,yBAAyB,QAAQ;AAEzC,4BAA4B,gBAAgB;AAAA,EAC1C,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,wBAAwB,MAAM;AAC3D,SAAK,kBAAkB;AACvB,SAAK,iBAAiB,IAAI,qBAAqB;AAAA,MAC7C,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,qBAAqB,WAAW,KAAK;AAAA;AAAA;AAInE,cAAc,UAAU,WAAW,EAAE,MAAM,EAAE,UAAU,gBAAgB,UAAU,WAAW;AAAA,EAC1F,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,sBAAsB;AAAA,EACtB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,aAAa;AAAA,IACX,UAAU;AAAA;AAAA,EAEZ,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,yBAAyB;AAAA,EACzB,UAAU;AAAA;AAGZ,cAAc,UAAU,iBAAiB;AACzC,cAAc,UAAU,QAAQ;AAChC,cAAc,UAAU,iBAAiB;AACzC,cAAc,UAAU,YAAY;AACpC,cAAc,UAAU,OAAO;AAC/B,cAAc,UAAU,YAAY;AACpC,cAAc,UAAU,iBAAiB,cAAc,UAAU;AACjE,cAAc,UAAU,kBAAkB,cAAc,UAAU;AAElE,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,939 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  OracleQueryGenerator: () => OracleQueryGenerator
-});
-const Utils = require("../../utils");
-const DataTypes = require("../../data-types");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const _ = require("lodash");
-const util = require("util");
-const Transaction = require("../../transaction");
-const ORACLE_RESERVED_WORDS = ["ACCESS", "ADD", "ALL", "ALTER", "AND", "ANY", "ARRAYLEN", "AS", "ASC", "AUDIT", "BETWEEN", "BY", "CHAR", "CHECK", "CLUSTER", "COLUMN", "COMMENT", "COMPRESS", "CONNECT", "CREATE", "CURRENT", "DATE", "DECIMAL", "DEFAULT", "DELETE", "DESC", "DISTINCT", "DROP", "ELSE", "EXCLUSIVE", "EXISTS", "FILE", "FLOAT", "FOR", "FROM", "GRANT", "GROUP", "HAVING", "IDENTIFIED", "IMMEDIATE", "IN", "INCREMENT", "INDEX", "INITIAL", "INSERT", "INTEGER", "INTERSECT", "INTO", "IS", "LEVEL", "LIKE", "LOCK", "LONG", "MAXEXTENTS", "MINUS", "MODE", "MODIFY", "NOAUDIT", "NOCOMPRESS", "NOT", "NOTFOUND", "NOWAIT", "NULL", "NUMBER", "OF", "OFFLINE", "ON", "ONLINE", "OPTION", "OR", "ORDER", "PCTFREE", "PRIOR", "PRIVILEGES", "PUBLIC", "RAW", "RENAME", "RESOURCE", "REVOKE", "ROW", "ROWID", "ROWLABEL", "ROWNUM", "ROWS", "SELECT", "SESSION", "SET", "SHARE", "SIZE", "SMALLINT", "SQLBUF", "START", "SUCCESSFUL", "SYNONYM", "SYSDATE", "TABLE", "THEN", "TO", "TRIGGER", "UID", "UNION", "UNIQUE", "UPDATE", "USER", "VALIDATE", "VALUES", "VARCHAR", "VARCHAR2", "VIEW", "WHENEVER", "WHERE", "WITH"];
-const JSON_FUNCTION_REGEX = /^\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\([^)]*\)/i;
-const JSON_OPERATOR_REGEX = /^\s*(->>?|@>|<@|\?[|&]?|\|{2}|#-)/i;
-const TOKEN_CAPTURE_REGEX = /^\s*((?:([`"'])(?:(?!\2).|\2{2})*\2)|[\w\d\s]+|[().,;+-])/i;
-class OracleQueryGenerator extends AbstractQueryGenerator {
-  constructor(options) {
-    super(options);
-  }
-  getCatalogName(value) {
-    if (value) {
-      if (this.options.quoteIdentifiers === false) {
-        const quotedValue = this.quoteIdentifier(value);
-        if (quotedValue === value) {
-          value = value.toUpperCase();
-        }
-      }
-    }
-    return value;
-  }
-  getSchemaNameAndTableName(table) {
-    const tableName = this.getCatalogName(table.tableName || table);
-    const schemaName = this.getCatalogName(table.schema);
-    return [tableName, schemaName];
-  }
-  createSchema(schema) {
-    const quotedSchema = this.quoteIdentifier(schema);
-    return [
-      "DECLARE",
-      "USER_FOUND BOOLEAN := FALSE;",
-      "BEGIN",
-      " BEGIN",
-      "   EXECUTE IMMEDIATE ",
-      this.escape(`CREATE USER ${quotedSchema} IDENTIFIED BY 12345 DEFAULT TABLESPACE USERS`),
-      ";",
-      "   EXCEPTION WHEN OTHERS THEN",
-      "     IF SQLCODE != -1920 THEN",
-      "       RAISE;",
-      "     ELSE",
-      "       USER_FOUND := TRUE;",
-      "     END IF;",
-      " END;",
-      " IF NOT USER_FOUND THEN",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT "CONNECT" TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE TABLE TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE VIEW TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE ANY TRIGGER TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE ANY PROCEDURE TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE SEQUENCE TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`GRANT CREATE SYNONYM TO ${quotedSchema}`),
-      ";",
-      "    EXECUTE IMMEDIATE ",
-      this.escape(`ALTER USER ${quotedSchema} QUOTA UNLIMITED ON USERS`),
-      ";",
-      " END IF;",
-      "END;"
-    ].join(" ");
-  }
-  showSchemasQuery() {
-    return `SELECT USERNAME AS "schema_name" FROM ALL_USERS WHERE COMMON = ('NO') AND USERNAME != user`;
-  }
-  dropSchema(schema) {
-    return [
-      "BEGIN",
-      "EXECUTE IMMEDIATE ",
-      this.escape(`DROP USER ${this.quoteTable(schema)} CASCADE`),
-      ";",
-      "EXCEPTION WHEN OTHERS THEN",
-      "  IF SQLCODE != -1918 THEN",
-      "    RAISE;",
-      "  END IF;",
-      "END;"
-    ].join(" ");
-  }
-  versionQuery() {
-    return "SELECT VERSION_FULL FROM PRODUCT_COMPONENT_VERSION WHERE PRODUCT LIKE 'Oracle%'";
-  }
-  createTableQuery(tableName, attributes, options) {
-    const primaryKeys = [], foreignKeys = Object.create(null), attrStr = [], checkStr = [];
-    const values = {
-      table: this.quoteTable(tableName)
-    };
-    for (let attr in attributes) {
-      if (!Object.prototype.hasOwnProperty.call(attributes, attr))
-        continue;
-      const dataType = attributes[attr];
-      attr = this.quoteIdentifier(attr);
-      if (dataType.includes("PRIMARY KEY")) {
-        primaryKeys.push(attr);
-        if (dataType.includes("REFERENCES")) {
-          const match = dataType.match(/^(.+) (REFERENCES.*)$/);
-          attrStr.push(`${attr} ${match[1].replace(/PRIMARY KEY/, "")}`);
-          foreignKeys[attr] = match[2];
-        } else {
-          attrStr.push(`${attr} ${dataType.replace(/PRIMARY KEY/, "").trim()}`);
-        }
-      } else if (dataType.includes("REFERENCES")) {
-        const match = dataType.match(/^(.+) (REFERENCES.*)$/);
-        attrStr.push(`${attr} ${match[1]}`);
-        foreignKeys[attr] = match[2];
-      } else {
-        attrStr.push(`${attr} ${dataType}`);
-      }
-    }
-    values["attributes"] = attrStr.join(", ");
-    const pkString = primaryKeys.map((pk) => this.quoteIdentifier(pk)).join(", ");
-    if (pkString.length > 0) {
-      values.attributes += `,PRIMARY KEY (${pkString})`;
-    }
-    for (const fkey in foreignKeys) {
-      if (!Object.prototype.hasOwnProperty.call(foreignKeys, fkey))
-        continue;
-      if (foreignKeys[fkey].indexOf("ON DELETE NO ACTION") > -1) {
-        foreignKeys[fkey] = foreignKeys[fkey].replace("ON DELETE NO ACTION", "");
-      }
-      values.attributes += `,FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;
-    }
-    if (checkStr.length > 0) {
-      values.attributes += `, ${checkStr.join(", ")}`;
-    }
-    if (options && options.indexes && options.indexes.length > 0) {
-      const idxToDelete = [];
-      options.indexes.forEach((index, idx) => {
-        if ("unique" in index && (index.unique === true || index.unique.length > 0 && index.unique !== false)) {
-          const fields = index.fields.map((field) => {
-            if (typeof field === "string") {
-              return field;
-            }
-            return field.attribute;
-          });
-          let canContinue = true;
-          if (options.uniqueKeys) {
-            const keys = Object.keys(options.uniqueKeys);
-            for (let fieldIdx = 0; fieldIdx < keys.length; fieldIdx++) {
-              const currUnique = options.uniqueKeys[keys[fieldIdx]];
-              if (currUnique.fields.length === fields.length) {
-                for (let i = 0; i < currUnique.fields.length; i++) {
-                  const field = currUnique.fields[i];
-                  if (_.includes(fields, field)) {
-                    canContinue = false;
-                  } else {
-                    canContinue = true;
-                    break;
-                  }
-                }
-              }
-            }
-            if (canContinue) {
-              const indexName = "name" in index ? index.name : "";
-              const constraintToAdd = {
-                name: indexName,
-                fields
-              };
-              if (!("uniqueKeys" in options)) {
-                options.uniqueKeys = {};
-              }
-              options.uniqueKeys[indexName] = constraintToAdd;
-              idxToDelete.push(idx);
-            } else {
-              idxToDelete.push(idx);
-            }
-          }
-        }
-      });
-      idxToDelete.forEach((idx) => {
-        options.indexes.splice(idx, 1);
-      });
-    }
-    if (options && !!options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns, indexName) => {
-        let canBeUniq = false;
-        primaryKeys.forEach((primaryKey) => {
-          primaryKey = primaryKey.replace(/"/g, "");
-          if (!_.includes(columns.fields, primaryKey)) {
-            canBeUniq = true;
-          }
-        });
-        columns.fields.forEach((field) => {
-          let currField = "";
-          if (!_.isString(field)) {
-            currField = field.attribute.replace(/[.,"\s]/g, "");
-          } else {
-            currField = field.replace(/[.,"\s]/g, "");
-          }
-          if (currField in attributes) {
-            if (attributes[currField].toUpperCase().indexOf("UNIQUE") > -1 && canBeUniq) {
-              const attrToReplace = attributes[currField].replace("UNIQUE", "");
-              values.attributes = values.attributes.replace(attributes[currField], attrToReplace);
-            }
-          }
-        });
-        if (canBeUniq) {
-          const index = options.uniqueKeys[columns.name];
-          delete options.uniqueKeys[columns.name];
-          indexName = indexName.replace(/[.,\s]/g, "");
-          columns.name = indexName;
-          options.uniqueKeys[indexName] = index;
-          if (indexName.length === 0) {
-            values.attributes += `,UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-          } else {
-            values.attributes += `, CONSTRAINT ${this.quoteIdentifier(indexName)} UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-          }
-        }
-      });
-    }
-    const query = Utils.joinSQLFragments([
-      "CREATE TABLE",
-      values.table,
-      `(${values.attributes})`
-    ]);
-    return Utils.joinSQLFragments([
-      "BEGIN",
-      "EXECUTE IMMEDIATE",
-      `${this.escape(query)};`,
-      "EXCEPTION WHEN OTHERS THEN",
-      "IF SQLCODE != -955 THEN",
-      "RAISE;",
-      "END IF;",
-      "END;"
-    ]);
-  }
-  tableExistsQuery(table) {
-    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);
-    return `SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME = ${this.escape(tableName)} AND OWNER = ${table.schema ? this.escape(schemaName) : "USER"}`;
-  }
-  describeTableQuery(tableName, schema) {
-    const currTableName = this.getCatalogName(tableName.tableName || tableName);
-    schema = this.getCatalogName(schema);
-    return [
-      "SELECT atc.COLUMN_NAME, atc.DATA_TYPE, atc.DATA_LENGTH, atc.CHAR_LENGTH, atc.DEFAULT_LENGTH, atc.NULLABLE, ucc.constraint_type ",
-      "FROM all_tab_columns atc ",
-      "LEFT OUTER JOIN ",
-      "(SELECT acc.column_name, acc.table_name, ac.constraint_type FROM all_cons_columns acc INNER JOIN all_constraints ac ON acc.constraint_name = ac.constraint_name) ucc ",
-      "ON (atc.table_name = ucc.table_name AND atc.COLUMN_NAME = ucc.COLUMN_NAME) ",
-      schema ? `WHERE (atc.OWNER = ${this.escape(schema)}) ` : "WHERE atc.OWNER = USER ",
-      `AND (atc.TABLE_NAME = ${this.escape(currTableName)})`,
-      "ORDER BY atc.COLUMN_NAME, CONSTRAINT_TYPE DESC"
-    ].join("");
-  }
-  renameTableQuery(before, after) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(before),
-      "RENAME TO",
-      this.quoteTable(after)
-    ]);
-  }
-  showConstraintsQuery(table) {
-    const tableName = this.getCatalogName(table.tableName || table);
-    return `SELECT CONSTRAINT_NAME constraint_name FROM user_cons_columns WHERE table_name = ${this.escape(tableName)}`;
-  }
-  showTablesQuery() {
-    return `SELECT owner as table_schema, table_name, 0 as lvl FROM all_tables where OWNER IN(SELECT USERNAME AS "schema_name" FROM ALL_USERS WHERE ORACLE_MAINTAINED = 'N')`;
-  }
-  dropTableQuery(tableName) {
-    return Utils.joinSQLFragments([
-      "BEGIN ",
-      "EXECUTE IMMEDIATE 'DROP TABLE",
-      this.quoteTable(tableName),
-      "CASCADE CONSTRAINTS PURGE';",
-      "EXCEPTION WHEN OTHERS THEN",
-      " IF SQLCODE != -942 THEN",
-      "   RAISE;",
-      " END IF;",
-      "END;"
-    ]);
-  }
-  addIndexQuery(tableName, attributes, options, rawTablename) {
-    if (typeof tableName !== "string" && attributes.name) {
-      attributes.name = `${tableName.schema}.${attributes.name}`;
-    }
-    return super.addIndexQuery(tableName, attributes, options, rawTablename);
-  }
-  addConstraintQuery(tableName, options) {
-    options = options || {};
-    if (options.onUpdate) {
-      delete options.onUpdate;
-    }
-    if (options.onDelete && options.onDelete.toUpperCase() === "NO ACTION") {
-      delete options.onDelete;
-    }
-    const constraintSnippet = this.getConstraintSnippet(tableName, options);
-    tableName = this.quoteTable(tableName);
-    return `ALTER TABLE ${tableName} ADD ${constraintSnippet};`;
-  }
-  addColumnQuery(table, key, dataType) {
-    dataType.field = key;
-    const attribute = Utils.joinSQLFragments([
-      this.quoteIdentifier(key),
-      this.attributeToSQL(dataType, {
-        attributeName: key,
-        context: "addColumn"
-      })
-    ]);
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(table),
-      "ADD",
-      attribute
-    ]);
-  }
-  removeColumnQuery(tableName, attributeName) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP COLUMN",
-      this.quoteIdentifier(attributeName),
-      ";"
-    ]);
-  }
-  _alterForeignKeyConstraint(definition, table, attributeName) {
-    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);
-    const attributeNameConstant = this.escape(this.getCatalogName(attributeName));
-    const schemaNameConstant = table.schema ? this.escape(this.getCatalogName(schemaName)) : "USER";
-    const tableNameConstant = this.escape(this.getCatalogName(tableName));
-    const getConsNameQuery = [
-      "SELECT constraint_name INTO cons_name",
-      "FROM (",
-      "  SELECT DISTINCT cc.owner, cc.table_name, cc.constraint_name, cc.column_name AS cons_columns",
-      "  FROM all_cons_columns cc, all_constraints c",
-      "  WHERE cc.owner = c.owner",
-      "  AND cc.table_name = c.table_name",
-      "  AND cc.constraint_name = c.constraint_name",
-      "  AND c.constraint_type = 'R'",
-      "  GROUP BY cc.owner, cc.table_name, cc.constraint_name, cc.column_name",
-      ")",
-      "WHERE owner =",
-      schemaNameConstant,
-      "AND table_name =",
-      tableNameConstant,
-      "AND cons_columns =",
-      attributeNameConstant,
-      ";"
-    ].join(" ");
-    const secondQuery = Utils.joinSQLFragments([
-      `ALTER TABLE ${this.quoteIdentifier(tableName)}`,
-      "ADD FOREIGN KEY",
-      `(${this.quoteIdentifier(attributeName)})`,
-      definition.replace(/.+?(?=REFERENCES)/, "")
-    ]);
-    return [
-      "BEGIN",
-      getConsNameQuery,
-      "EXCEPTION",
-      "WHEN NO_DATA_FOUND THEN",
-      " CONS_NAME := NULL;",
-      "END;",
-      "IF CONS_NAME IS NOT NULL THEN",
-      ` EXECUTE IMMEDIATE 'ALTER TABLE ${this.quoteTable(table)} DROP CONSTRAINT "'||CONS_NAME||'"';`,
-      "END IF;",
-      `EXECUTE IMMEDIATE ${this.escape(secondQuery)};`
-    ].join(" ");
-  }
-  _modifyQuery(definition, table, attributeName) {
-    definition = definition.startsWith("BLOB") ? definition.replace("BLOB ", "") : definition;
-    const query = Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(table),
-      "MODIFY",
-      this.quoteIdentifier(attributeName),
-      definition
-    ]);
-    const secondQuery = query.replace("NOT NULL", "").replace("NULL", "");
-    return [
-      "BEGIN",
-      `EXECUTE IMMEDIATE ${this.escape(query)};`,
-      "EXCEPTION",
-      "WHEN OTHERS THEN",
-      " IF SQLCODE = -1442 OR SQLCODE = -1451 THEN",
-      `   EXECUTE IMMEDIATE ${this.escape(secondQuery)};`,
-      " ELSE",
-      "   RAISE;",
-      " END IF;",
-      "END;"
-    ].join(" ");
-  }
-  changeColumnQuery(table, attributes) {
-    const sql = [
-      "DECLARE",
-      "CONS_NAME VARCHAR2(200);",
-      "BEGIN"
-    ];
-    for (const attributeName in attributes) {
-      if (!Object.prototype.hasOwnProperty.call(attributes, attributeName))
-        continue;
-      const definition = attributes[attributeName];
-      if (definition.match(/REFERENCES/)) {
-        sql.push(this._alterForeignKeyConstraint(definition, table, attributeName));
-      } else {
-        sql.push(this._modifyQuery(definition, table, attributeName));
-      }
-    }
-    sql.push("END;");
-    return sql.join(" ");
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const newName = Object.keys(attributes)[0];
-    return `ALTER TABLE ${this.quoteTable(tableName)} RENAME COLUMN ${this.quoteIdentifier(attrBefore)} TO ${this.quoteIdentifier(newName)}`;
-  }
-  populateInsertQueryReturnIntoBinds(returningModelAttributes, returnTypes, inbindLength, returnAttributes, options) {
-    const oracledb = this.sequelize.connectionManager.lib;
-    const outBindAttributes = Object.create(null);
-    const outbind = [];
-    const outbindParam = this.bindParam(outbind, inbindLength);
-    returningModelAttributes.forEach((element, index) => {
-      if (element.startsWith('"')) {
-        element = element.substring(1, element.length - 1);
-      }
-      outBindAttributes[element] = Object.assign(returnTypes[index]._getBindDef(oracledb), { dir: oracledb.BIND_OUT });
-      const returnAttribute = `${this.format(void 0, void 0, { context: "INSERT" }, outbindParam)}`;
-      returnAttributes.push(returnAttribute);
-    });
-    options.outBindAttributes = outBindAttributes;
-  }
-  upsertQuery(tableName, insertValues, updateValues, where, model, options) {
-    const rawAttributes = model.rawAttributes;
-    const updateQuery = this.updateQuery(tableName, updateValues, where, options, rawAttributes);
-    options.bind = updateQuery.bind;
-    const insertQuery = this.insertQuery(tableName, insertValues, rawAttributes, options);
-    const sql = [
-      "DECLARE ",
-      "BEGIN ",
-      updateQuery.query ? [
-        updateQuery.query,
-        "; ",
-        " IF ( SQL%ROWCOUNT = 0 ) THEN ",
-        insertQuery.query,
-        " :isUpdate := 0; ",
-        "ELSE ",
-        " :isUpdate := 1; ",
-        " END IF; "
-      ].join("") : [
-        insertQuery.query,
-        " :isUpdate := 0; ",
-        "EXCEPTION WHEN OTHERS THEN",
-        " IF SQLCODE != -1 THEN",
-        "   RAISE;",
-        " END IF;"
-      ].join(""),
-      "END;"
-    ];
-    const query = sql.join("");
-    const result = { query };
-    if (options.bindParam !== false) {
-      result.bind = updateQuery.bind || insertQuery.bind;
-    }
-    return result;
-  }
-  bulkInsertQuery(tableName, fieldValueHashes, options, fieldMappedAttributes) {
-    options = options || {};
-    options.executeMany = true;
-    fieldMappedAttributes = fieldMappedAttributes || {};
-    const tuples = [];
-    const allColumns = {};
-    const inBindBindDefMap = {};
-    const outBindBindDefMap = {};
-    const oracledb = this.sequelize.connectionManager.lib;
-    for (const fieldValueHash of fieldValueHashes) {
-      _.forOwn(fieldValueHash, (value, key) => {
-        allColumns[key] = fieldMappedAttributes[key] && fieldMappedAttributes[key].autoIncrement === true && value === null;
-      });
-    }
-    let inBindPosition;
-    for (const fieldValueHash of fieldValueHashes) {
-      const tuple = [];
-      const inbindParam = options.bindParam === void 0 ? this.bindParam(tuple) : options.bindParam;
-      const tempBindPositions = Object.keys(allColumns).map((key) => {
-        if (allColumns[key] === true) {
-          if (fieldValueHash[key] !== null) {
-            throw Error("For an auto-increment column either all row must be null or non-null, a mix of null and non-null is not allowed!");
-          }
-          return "DEFAULT";
-        }
-        return this.format(fieldValueHash[key], fieldMappedAttributes[key], { context: "INSERT" }, inbindParam);
-      });
-      if (!inBindPosition) {
-        inBindPosition = tempBindPositions;
-      }
-      tuples.push(tuple);
-    }
-    const returnColumn = [];
-    const returnColumnBindPositions = [];
-    const insertColumns = [];
-    for (const key of Object.keys(allColumns)) {
-      if (fieldMappedAttributes[key]) {
-        const bindDef = fieldMappedAttributes[key].type._getBindDef(oracledb);
-        if (allColumns[key]) {
-          bindDef.dir = oracledb.BIND_OUT;
-          outBindBindDefMap[key] = bindDef;
-          returnColumn.push(this.quoteIdentifier(key));
-          returnColumnBindPositions.push(`:${tuples[0].length + returnColumn.length}`);
-        } else {
-          bindDef.dir = oracledb.BIND_IN;
-          inBindBindDefMap[key] = bindDef;
-        }
-      }
-      insertColumns.push(this.quoteIdentifier(key));
-    }
-    let query = Utils.joinSQLFragments([
-      "INSERT",
-      "INTO",
-      this.quoteTable(tableName),
-      `(${insertColumns.join(",")})`,
-      "VALUES",
-      `(${inBindPosition})`
-    ]);
-    if (returnColumn.length > 0) {
-      options.outBindAttributes = outBindBindDefMap;
-      query = Utils.joinSQLFragments([
-        query,
-        "RETURNING",
-        `${returnColumn.join(",")}`,
-        "INTO",
-        `${returnColumnBindPositions}`
-      ]);
-    }
-    const result = { query };
-    result.bind = tuples;
-    options.inbindAttributes = inBindBindDefMap;
-    return result;
-  }
-  truncateTableQuery(tableName) {
-    return `TRUNCATE TABLE ${this.quoteTable(tableName)}`;
-  }
-  deleteQuery(tableName, where, options, model) {
-    options = options || {};
-    const table = tableName;
-    where = this.getWhereConditions(where, null, model, options);
-    let queryTmpl;
-    if (options.limit) {
-      const whereTmpl = where ? ` AND ${where}` : "";
-      queryTmpl = `DELETE FROM ${this.quoteTable(table)} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(table)} WHERE rownum <= ${this.escape(options.limit)}${whereTmpl})`;
-    } else {
-      const whereTmpl = where ? ` WHERE ${where}` : "";
-      queryTmpl = `DELETE FROM ${this.quoteTable(table)}${whereTmpl}`;
-    }
-    return queryTmpl;
-  }
-  showIndexesQuery(table) {
-    const [tableName, owner] = this.getSchemaNameAndTableName(table);
-    const sql = [
-      "SELECT i.index_name,i.table_name, i.column_name, u.uniqueness, i.descend, c.constraint_type ",
-      "FROM all_ind_columns i ",
-      "INNER JOIN all_indexes u ",
-      "ON (u.table_name = i.table_name AND u.index_name = i.index_name) ",
-      "LEFT OUTER JOIN all_constraints c ",
-      "ON (c.table_name = i.table_name AND c.index_name = i.index_name) ",
-      `WHERE i.table_name = ${this.escape(tableName)}`,
-      " AND u.table_owner = ",
-      owner ? this.escape(owner) : "USER",
-      " ORDER BY index_name, column_position"
-    ];
-    return sql.join("");
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return `DROP INDEX ${this.quoteIdentifier(indexName)}`;
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    attribute.onUpdate = "";
-    if (attribute.references) {
-      if (attribute.Model && attribute.Model.tableName === attribute.references.model) {
-        this.sequelize.log("Oracle does not support self referencial constraints, we will remove it but we recommend restructuring your query");
-        attribute.onDelete = "";
-      }
-    }
-    let template;
-    template = attribute.type.toSql ? attribute.type.toSql() : "";
-    if (attribute.type instanceof DataTypes.JSON) {
-      template += ` CHECK (${this.quoteIdentifier(options.attributeName)} IS JSON)`;
-      return template;
-    }
-    if (Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-    }
-    if (attribute.allowNull === false) {
-      template += " NOT NULL";
-    }
-    if (attribute.type instanceof DataTypes.ENUM) {
-      if (attribute.type.values && !attribute.values)
-        attribute.values = attribute.type.values;
-      template += ` CHECK (${this.quoteIdentifier(options.attributeName)} IN(${_.map(attribute.values, (value) => {
-        return this.escape(value);
-      }).join(", ")}))`;
-      return template;
-    }
-    if (attribute.type instanceof DataTypes.BOOLEAN) {
-      template += ` CHECK (${this.quoteIdentifier(options.attributeName)} IN('1', '0'))`;
-      return template;
-    }
-    if (attribute.autoIncrement) {
-      template = " NUMBER(*,0) GENERATED BY DEFAULT ON NULL AS IDENTITY";
-    } else if (attribute.type && attribute.type.key === DataTypes.DOUBLE.key) {
-      template = attribute.type.toSql();
-    } else if (attribute.type) {
-      let unsignedTemplate = "";
-      if (attribute.type._unsigned) {
-        attribute.type._unsigned = false;
-        unsignedTemplate += ` check(${this.quoteIdentifier(options.attributeName)} >= 0)`;
-      }
-      template = attribute.type.toString();
-      if (attribute.type && attribute.type !== "TEXT" && attribute.type._binary !== true && Utils.defaultValueSchemable(attribute.defaultValue)) {
-        template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-      }
-      if (!attribute.autoIncrement) {
-        if (attribute.allowNull === false) {
-          template += " NOT NULL";
-        } else if (!attribute.primaryKey && !Utils.defaultValueSchemable(attribute.defaultValue)) {
-          template += " NULL";
-        }
-      }
-      template += unsignedTemplate;
-    } else {
-      template = "";
-    }
-    if (attribute.unique === true && !attribute.primaryKey) {
-      template += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      template += " PRIMARY KEY";
-    }
-    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {
-      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;
-      if (attribute.references.key) {
-        template += ` (${this.quoteIdentifier(attribute.references.key)})`;
-      } else {
-        template += ` (${this.quoteIdentifier("id")})`;
-      }
-      if (attribute.onDelete && attribute.onDelete.toUpperCase() !== "NO ACTION") {
-        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-      }
-    }
-    return template;
-  }
-  attributesToSQL(attributes, options) {
-    const result = {};
-    for (const key in attributes) {
-      const attribute = attributes[key];
-      const attributeName = attribute.field || key;
-      result[attributeName] = this.attributeToSQL(attribute, __spreadValues({ attributeName }, options));
-    }
-    return result;
-  }
-  createTrigger() {
-    throwMethodUndefined("createTrigger");
-  }
-  dropTrigger() {
-    throwMethodUndefined("dropTrigger");
-  }
-  renameTrigger() {
-    throwMethodUndefined("renameTrigger");
-  }
-  createFunction() {
-    throwMethodUndefined("createFunction");
-  }
-  dropFunction() {
-    throwMethodUndefined("dropFunction");
-  }
-  renameFunction() {
-    throwMethodUndefined("renameFunction");
-  }
-  getConstraintsOnColumn(table, column) {
-    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);
-    column = this.getCatalogName(column);
-    const sql = [
-      "SELECT CONSTRAINT_NAME FROM user_cons_columns WHERE TABLE_NAME = ",
-      this.escape(tableName),
-      " and OWNER = ",
-      table.schema ? this.escape(schemaName) : "USER",
-      " and COLUMN_NAME = ",
-      this.escape(column),
-      " AND POSITION IS NOT NULL ORDER BY POSITION"
-    ].join("");
-    return sql;
-  }
-  getForeignKeysQuery(table) {
-    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);
-    const sql = [
-      'SELECT DISTINCT  a.table_name "tableName", a.constraint_name "constraintName", a.owner "owner",  a.column_name "columnName",',
-      ' b.table_name "referencedTableName", b.column_name "referencedColumnName"',
-      " FROM all_cons_columns a",
-      " JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name",
-      " JOIN all_cons_columns b ON c.owner = b.owner AND c.r_constraint_name = b.constraint_name",
-      " WHERE c.constraint_type  = 'R'",
-      " AND a.table_name = ",
-      this.escape(tableName),
-      " AND a.owner = ",
-      table.schema ? this.escape(schemaName) : "USER",
-      " ORDER BY a.table_name, a.constraint_name"
-    ].join("");
-    return sql;
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return this.dropConstraintQuery(tableName, foreignKey);
-  }
-  getPrimaryKeyConstraintQuery(table) {
-    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);
-    const sql = [
-      "SELECT cols.column_name, atc.identity_column ",
-      "FROM all_constraints cons, all_cons_columns cols ",
-      "INNER JOIN all_tab_columns atc ON(atc.table_name = cols.table_name AND atc.COLUMN_NAME = cols.COLUMN_NAME )",
-      "WHERE cols.table_name = ",
-      this.escape(tableName),
-      "AND cols.owner = ",
-      table.schema ? this.escape(schemaName) : "USER ",
-      "AND cons.constraint_type = 'P' ",
-      "AND cons.constraint_name = cols.constraint_name ",
-      "AND cons.owner = cols.owner ",
-      "ORDER BY cols.table_name, cols.position"
-    ].join("");
-    return sql;
-  }
-  dropConstraintQuery(tableName, constraintName) {
-    return `ALTER TABLE ${this.quoteTable(tableName)} DROP CONSTRAINT ${constraintName}`;
-  }
-  setIsolationLevelQuery(value, options) {
-    if (options.parent) {
-      return;
-    }
-    switch (value) {
-      case Transaction.ISOLATION_LEVELS.READ_UNCOMMITTED:
-      case Transaction.ISOLATION_LEVELS.READ_COMMITTED:
-        return "SET TRANSACTION ISOLATION LEVEL READ COMMITTED;";
-      case Transaction.ISOLATION_LEVELS.REPEATABLE_READ:
-        return "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;";
-      default:
-        throw new Error(`isolation level "${value}" is not supported`);
-    }
-  }
-  getAliasToken() {
-    return "";
-  }
-  startTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `SAVEPOINT ${this.quoteIdentifier(transaction.name)}`;
-    }
-    return "BEGIN TRANSACTION";
-  }
-  commitTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return;
-    }
-    return "COMMIT TRANSACTION";
-  }
-  rollbackTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `ROLLBACK TO SAVEPOINT ${this.quoteIdentifier(transaction.name)}`;
-    }
-    return "ROLLBACK TRANSACTION";
-  }
-  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
-    let str;
-    if (smth instanceof Utils.Json) {
-      if (smth.conditions) {
-        const conditions = this.parseConditionObject(smth.conditions).map((condition) => `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`);
-        return conditions.join(" AND ");
-      }
-      if (smth.path) {
-        if (this._checkValidJsonStatement(smth.path)) {
-          str = smth.path;
-        } else {
-          const paths = _.toPath(smth.path);
-          const column = paths.shift();
-          str = this.jsonPathExtractionQuery(column, paths);
-        }
-        if (smth.value) {
-          str += util.format(" = %s", this.escape(smth.value));
-        }
-        return str;
-      }
-    }
-    if (smth instanceof Utils.Cast) {
-      if (smth.val instanceof Utils.SequelizeMethod) {
-        str = this.handleSequelizeMethod(smth.val, tableName, factory, options, prepend);
-        if (smth.type === "boolean") {
-          str = `(CASE WHEN ${str}='true' THEN 1 ELSE 0 END)`;
-          return `CAST(${str} AS NUMBER)`;
-        }
-        if (smth.type === "timestamptz" && /json_value\(/.test(str)) {
-          str = str.slice(0, -1);
-          return `${str} RETURNING TIMESTAMP WITH TIME ZONE)`;
-        }
-      }
-    }
-    return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);
-  }
-  _checkValidJsonStatement(stmt) {
-    if (typeof stmt !== "string") {
-      return false;
-    }
-    let currentIndex = 0;
-    let openingBrackets = 0;
-    let closingBrackets = 0;
-    let hasJsonFunction = false;
-    let hasInvalidToken = false;
-    while (currentIndex < stmt.length) {
-      const string = stmt.substr(currentIndex);
-      const functionMatches = JSON_FUNCTION_REGEX.exec(string);
-      if (functionMatches) {
-        currentIndex += functionMatches[0].indexOf("(");
-        hasJsonFunction = true;
-        continue;
-      }
-      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);
-      if (operatorMatches) {
-        currentIndex += operatorMatches[0].length;
-        hasJsonFunction = true;
-        continue;
-      }
-      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);
-      if (tokenMatches) {
-        const capturedToken = tokenMatches[1];
-        if (capturedToken === "(") {
-          openingBrackets++;
-        } else if (capturedToken === ")") {
-          closingBrackets++;
-        } else if (capturedToken === ";") {
-          hasInvalidToken = true;
-          break;
-        }
-        currentIndex += tokenMatches[0].length;
-        continue;
-      }
-      break;
-    }
-    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {
-      throw new Error(`Invalid json statement: ${stmt}`);
-    }
-    return hasJsonFunction;
-  }
-  jsonPathExtractionQuery(column, path) {
-    let paths = _.toPath(path);
-    const quotedColumn = this.isIdentifierQuoted(column) ? column : this.quoteIdentifier(column);
-    paths = paths.map((subPath) => {
-      return /\D/.test(subPath) ? Utils.addTicks(subPath, '"') : subPath;
-    });
-    const pathStr = this.escape(["$"].concat(paths).join(".").replace(/\.(\d+)(?:(?=\.)|$)/g, (__, digit) => `[${digit}]`));
-    return `json_value(${quotedColumn},${pathStr})`;
-  }
-  addLimitAndOffset(options, model) {
-    let fragment = "";
-    const offset = options.offset || 0, isSubQuery = options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation;
-    let orders = {};
-    if (options.order) {
-      orders = this.getQueryOrders(options, model, isSubQuery);
-    }
-    if (options.limit || options.offset) {
-      if (!orders.mainQueryOrder || !orders.mainQueryOrder.length || isSubQuery && (!orders.subQueryOrder || !orders.subQueryOrder.length)) {
-        const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(model.primaryKeyField)}`;
-        fragment += ` ORDER BY ${tablePkFragment}`;
-      }
-      if (options.offset || options.limit) {
-        fragment += ` OFFSET ${this.escape(offset)} ROWS`;
-      }
-      if (options.limit) {
-        fragment += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;
-      }
-    }
-    return fragment;
-  }
-  booleanValue(value) {
-    return value ? 1 : 0;
-  }
-  quoteIdentifier(identifier, force = false) {
-    const optForceQuote = force;
-    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;
-    const rawIdentifier = Utils.removeTicks(identifier, '"');
-    const regExp = /^(([\w][\w\d_]*))$/g;
-    if (optForceQuote !== true && optQuoteIdentifiers === false && regExp.test(rawIdentifier) && !ORACLE_RESERVED_WORDS.includes(rawIdentifier.toUpperCase())) {
-      return rawIdentifier;
-    }
-    return Utils.addTicks(rawIdentifier, '"');
-  }
-  bindParam(bind, posOffset = 0) {
-    return (value) => {
-      bind.push(value);
-      return `:${bind.length + posOffset}`;
-    };
-  }
-  authTestQuery() {
-    return "SELECT 1+1 AS result FROM DUAL";
-  }
-}
-function throwMethodUndefined(methodName) {
-  throw new Error(`The method "${methodName}" is not defined! Please add it to your sql dialect.`);
-}
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/query-generator.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\n\nconst Utils = require('../../utils');\nconst DataTypes = require('../../data-types');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst _ = require('lodash');\nconst util = require('util');\nconst Transaction = require('../../transaction');\n\n/**\n * list of reserved words in Oracle DB 21c\n * source: https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-7B72E154-677A-4342-A1EA-C74C1EA928E6\n *\n * @private\n */\nconst ORACLE_RESERVED_WORDS = ['ACCESS', 'ADD', 'ALL', 'ALTER', 'AND', 'ANY', 'ARRAYLEN', 'AS', 'ASC', 'AUDIT', 'BETWEEN', 'BY', 'CHAR', 'CHECK', 'CLUSTER', 'COLUMN', 'COMMENT', 'COMPRESS', 'CONNECT', 'CREATE', 'CURRENT', 'DATE', 'DECIMAL', 'DEFAULT', 'DELETE', 'DESC', 'DISTINCT', 'DROP', 'ELSE', 'EXCLUSIVE', 'EXISTS', 'FILE', 'FLOAT', 'FOR', 'FROM', 'GRANT', 'GROUP', 'HAVING', 'IDENTIFIED', 'IMMEDIATE', 'IN', 'INCREMENT', 'INDEX', 'INITIAL', 'INSERT', 'INTEGER', 'INTERSECT', 'INTO', 'IS', 'LEVEL', 'LIKE', 'LOCK', 'LONG', 'MAXEXTENTS', 'MINUS', 'MODE', 'MODIFY', 'NOAUDIT', 'NOCOMPRESS', 'NOT', 'NOTFOUND', 'NOWAIT', 'NULL', 'NUMBER', 'OF', 'OFFLINE', 'ON', 'ONLINE', 'OPTION', 'OR', 'ORDER', 'PCTFREE', 'PRIOR', 'PRIVILEGES', 'PUBLIC', 'RAW', 'RENAME', 'RESOURCE', 'REVOKE', 'ROW', 'ROWID', 'ROWLABEL', 'ROWNUM', 'ROWS', 'SELECT', 'SESSION', 'SET', 'SHARE', 'SIZE', 'SMALLINT', 'SQLBUF', 'START', 'SUCCESSFUL', 'SYNONYM', 'SYSDATE', 'TABLE', 'THEN', 'TO', 'TRIGGER', 'UID', 'UNION', 'UNIQUE', 'UPDATE', 'USER', 'VALIDATE', 'VALUES', 'VARCHAR', 'VARCHAR2', 'VIEW', 'WHENEVER', 'WHERE', 'WITH'];\nconst JSON_FUNCTION_REGEX = /^\\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\\([^)]*\\)/i;\nconst JSON_OPERATOR_REGEX = /^\\s*(->>?|@>|<@|\\?[|&]?|\\|{2}|#-)/i;\nconst TOKEN_CAPTURE_REGEX = /^\\s*((?:([`\"'])(?:(?!\\2).|\\2{2})*\\2)|[\\w\\d\\s]+|[().,;+-])/i;\n\nexport class OracleQueryGenerator extends AbstractQueryGenerator {\n  constructor(options) {\n    super(options);\n  }\n\n  /**\n   * Returns the value as it is stored in the Oracle DB\n   *\n   * @param {string} value\n   */\n  getCatalogName(value) {\n    if (value) {\n      if (this.options.quoteIdentifiers === false) {\n        const quotedValue = this.quoteIdentifier(value);\n        if (quotedValue === value) {\n          value = value.toUpperCase();\n        }\n      }\n    }\n    return value;\n  }\n\n  /**\n   * Returns the tableName and schemaName as it is stored the Oracle DB\n   *\n   * @param {object|string} table\n   */\n  getSchemaNameAndTableName(table) {\n    const tableName = this.getCatalogName(table.tableName || table);\n    const schemaName = this.getCatalogName(table.schema);\n    return [tableName, schemaName];\n  }\n\n  createSchema(schema) {\n    const quotedSchema = this.quoteIdentifier(schema);\n    return [\n      'DECLARE',\n      'USER_FOUND BOOLEAN := FALSE;',\n      'BEGIN',\n      ' BEGIN',\n      '   EXECUTE IMMEDIATE ',\n      this.escape(`CREATE USER ${quotedSchema} IDENTIFIED BY 12345 DEFAULT TABLESPACE USERS`),\n      ';',\n      '   EXCEPTION WHEN OTHERS THEN',\n      '     IF SQLCODE != -1920 THEN',\n      '       RAISE;',\n      '     ELSE',\n      '       USER_FOUND := TRUE;',\n      '     END IF;',\n      ' END;',\n      ' IF NOT USER_FOUND THEN',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT \"CONNECT\" TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE TABLE TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE VIEW TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE ANY TRIGGER TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE ANY PROCEDURE TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE SEQUENCE TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`GRANT CREATE SYNONYM TO ${quotedSchema}`),\n      ';',\n      '    EXECUTE IMMEDIATE ',\n      this.escape(`ALTER USER ${quotedSchema} QUOTA UNLIMITED ON USERS`),\n      ';',\n      ' END IF;',\n      'END;'\n    ].join(' ');\n  }\n\n  showSchemasQuery() {\n    return 'SELECT USERNAME AS \"schema_name\" FROM ALL_USERS WHERE COMMON = (\\'NO\\') AND USERNAME != user';\n  }\n\n  dropSchema(schema) {\n    return [\n      'BEGIN',\n      'EXECUTE IMMEDIATE ',\n      this.escape(`DROP USER ${this.quoteTable(schema)} CASCADE`),\n      ';',\n      'EXCEPTION WHEN OTHERS THEN',\n      '  IF SQLCODE != -1918 THEN',\n      '    RAISE;',\n      '  END IF;',\n      'END;'\n    ].join(' ');\n  }\n\n  versionQuery() {\n    return \"SELECT VERSION_FULL FROM PRODUCT_COMPONENT_VERSION WHERE PRODUCT LIKE 'Oracle%'\";\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    const primaryKeys = [],\n      foreignKeys = Object.create(null),\n      attrStr = [],\n      checkStr = [];\n\n    const values = {\n      table: this.quoteTable(tableName)\n    };\n\n    // Starting by dealing with all attributes\n    for (let attr in attributes) {\n      if (!Object.prototype.hasOwnProperty.call(attributes, attr)) continue;\n      const dataType = attributes[attr];\n      attr = this.quoteIdentifier(attr);\n\n      // ORACLE doesn't support inline REFERENCES declarations: move to the end\n      if (dataType.includes('PRIMARY KEY')) {\n        // Primary key\n        primaryKeys.push(attr);\n        if (dataType.includes('REFERENCES')) {\n          const match = dataType.match(/^(.+) (REFERENCES.*)$/);\n          attrStr.push(`${attr} ${match[1].replace(/PRIMARY KEY/, '')}`);\n\n          // match[2] already has foreignKeys in correct format so we don't need to replace\n          foreignKeys[attr] = match[2];\n        } else {\n          attrStr.push(`${attr} ${dataType.replace(/PRIMARY KEY/, '').trim()}`);\n        }\n      } else if (dataType.includes('REFERENCES')) {\n        // Foreign key\n        const match = dataType.match(/^(.+) (REFERENCES.*)$/);\n        attrStr.push(`${attr} ${match[1]}`);\n\n        // match[2] already has foreignKeys in correct format so we don't need to replace\n        foreignKeys[attr] = match[2];\n      } else {\n        attrStr.push(`${attr} ${dataType}`);\n      }\n    }\n\n    values['attributes'] = attrStr.join(', ');\n\n    const pkString = primaryKeys.map(pk => this.quoteIdentifier(pk)).join(', ');\n\n    if (pkString.length > 0) {\n      values.attributes += `,PRIMARY KEY (${pkString})`;\n    }\n\n    // Dealing with FKs\n    for (const fkey in foreignKeys) {\n      if (!Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) continue; \n      // Oracle default response for FK, doesn't support if defined\n      if (foreignKeys[fkey].indexOf('ON DELETE NO ACTION') > -1) {\n        foreignKeys[fkey] = foreignKeys[fkey].replace('ON DELETE NO ACTION', '');\n      }\n      values.attributes += `,FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;\n    }\n\n    if (checkStr.length > 0) {\n      values.attributes += `, ${checkStr.join(', ')}`;\n    }\n\n    // Specific case for unique indexes with Oracle, we have to set the constraint on the column, if not, no FK will be possible (ORA-02270: no matching unique or primary key for this column-list)\n    if (options && options.indexes && options.indexes.length > 0) {\n      const idxToDelete = [];\n      options.indexes.forEach((index, idx) => {\n        if ('unique' in index && (index.unique === true || index.unique.length > 0 && index.unique !== false)) {\n          // If unique index, transform to unique constraint on column\n          const fields = index.fields.map(field => {\n            if (typeof field === 'string') {\n              return field;\n            } \n            return field.attribute;\n            \n          });\n\n          // Now we have to be sure that the constraint isn't already declared in uniqueKeys\n          let canContinue = true;\n          if (options.uniqueKeys) {\n            const keys = Object.keys(options.uniqueKeys);\n\n            for (let fieldIdx = 0; fieldIdx < keys.length; fieldIdx++) {\n              const currUnique = options.uniqueKeys[keys[fieldIdx]];\n\n              if (currUnique.fields.length === fields.length) {\n                // lengths are the same, possible same constraint\n                for (let i = 0; i < currUnique.fields.length; i++) {\n                  const field = currUnique.fields[i];\n\n                  if (_.includes(fields, field)) {\n                    canContinue = false;\n                  } else {\n                    // We have at least one different column, even if we found the same columns previously, we let the constraint be created\n                    canContinue = true;\n                    break;\n                  }\n                }\n              }\n            }\n\n            if (canContinue) {\n              const indexName = 'name' in index ? index.name : '';\n              const constraintToAdd = {\n                name: indexName,\n                fields\n              };\n              if (!('uniqueKeys' in options)) {\n                options.uniqueKeys = {};\n              }\n\n              options.uniqueKeys[indexName] = constraintToAdd;\n              idxToDelete.push(idx);\n            } else {\n              // The constraint already exists, we remove it from the list\n              idxToDelete.push(idx);\n            }\n          }\n        }\n      });\n      idxToDelete.forEach(idx => {\n        options.indexes.splice(idx, 1);\n      });\n    }\n\n    if (options && !!options.uniqueKeys) {\n      _.each(options.uniqueKeys, (columns, indexName) => {\n        let canBeUniq = false;\n\n        // Check if we can create the unique key\n        primaryKeys.forEach(primaryKey => {\n          // We can create an unique constraint if it's not on the primary key AND if it doesn't have unique in its definition\n          // We replace quotes in primary key with ''\n          // Primary key would be a list with double quotes in it so we remove the double quotes\n          primaryKey = primaryKey.replace(/\"/g, '');\n\n          // We check if the unique indexes are already a part of primary key or not\n          // If it is not then we set canbeuniq to true and add a unique constraint to these fields.\n          // Else we can ignore unique constraint on these\n          if (!_.includes(columns.fields, primaryKey)) {\n            canBeUniq = true;\n          }\n        });\n\n        columns.fields.forEach(field => {\n          let currField = '';\n          if (!_.isString(field)) {\n            currField = field.attribute.replace(/[.,\"\\s]/g, '');\n          } else {\n            currField = field.replace(/[.,\"\\s]/g, '');\n          }\n          if (currField in attributes) {\n            // If canBeUniq is false we need not replace the UNIQUE for the attribute\n            // So we replace UNIQUE with '' only if there exists a primary key\n            if (attributes[currField].toUpperCase().indexOf('UNIQUE') > -1 && canBeUniq) {\n              // We generate the attribute without UNIQUE\n              const attrToReplace = attributes[currField].replace('UNIQUE', '');\n              // We replace in the final string\n              values.attributes = values.attributes.replace(attributes[currField], attrToReplace);\n            }\n          }\n        });\n\n        // Oracle cannot have an unique AND a primary key on the same fields, prior to the primary key\n        if (canBeUniq) {\n          const index = options.uniqueKeys[columns.name];\n          delete options.uniqueKeys[columns.name];\n          indexName = indexName.replace(/[.,\\s]/g, '');\n          columns.name = indexName;\n          options.uniqueKeys[indexName] = index;\n\n          // Autogenerate Constraint name, if no indexName is given\n          if (indexName.length === 0) {\n            values.attributes += `,UNIQUE (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ') })`;\n          } else {\n            values.attributes +=\n              `, CONSTRAINT ${this.quoteIdentifier(indexName)} UNIQUE (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ') })`;\n          }\n        }\n      });\n    }\n\n    // we replace single quotes by two quotes in order for the execute statement to work\n    const query = Utils.joinSQLFragments([\n      'CREATE TABLE',\n      values.table,\n      `(${values.attributes})`\n    ]);\n\n    return Utils.joinSQLFragments([\n      'BEGIN',\n      'EXECUTE IMMEDIATE',\n      `${this.escape(query)};`,\n      'EXCEPTION WHEN OTHERS THEN',\n      'IF SQLCODE != -955 THEN',\n      'RAISE;',\n      'END IF;',\n      'END;'\n    ]);\n  }\n\n  tableExistsQuery(table) {\n    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);\n    return `SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME = ${this.escape(tableName)} AND OWNER = ${table.schema ? this.escape(schemaName) : 'USER'}`;\n  }\n  \n  describeTableQuery(tableName, schema) {\n    const currTableName = this.getCatalogName(tableName.tableName || tableName);\n    schema = this.getCatalogName(schema);\n    // name, type, datalength (except number / nvarchar), datalength varchar, datalength number, nullable, default value, primary ?\n    return [\n      'SELECT atc.COLUMN_NAME, atc.DATA_TYPE, atc.DATA_LENGTH, atc.CHAR_LENGTH, atc.DEFAULT_LENGTH, atc.NULLABLE, ucc.constraint_type ',\n      'FROM all_tab_columns atc ',\n      'LEFT OUTER JOIN ',\n      '(SELECT acc.column_name, acc.table_name, ac.constraint_type FROM all_cons_columns acc INNER JOIN all_constraints ac ON acc.constraint_name = ac.constraint_name) ucc ',\n      'ON (atc.table_name = ucc.table_name AND atc.COLUMN_NAME = ucc.COLUMN_NAME) ',\n      schema\n        ? `WHERE (atc.OWNER = ${this.escape(schema)}) `\n        : 'WHERE atc.OWNER = USER ',\n      `AND (atc.TABLE_NAME = ${this.escape(currTableName)})`,\n      'ORDER BY atc.COLUMN_NAME, CONSTRAINT_TYPE DESC'\n    ].join('');\n  }\n\n  renameTableQuery(before, after) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(before),\n      'RENAME TO',\n      this.quoteTable(after)\n    ]);\n  }\n\n  showConstraintsQuery(table) {\n    const tableName = this.getCatalogName(table.tableName || table);\n    return `SELECT CONSTRAINT_NAME constraint_name FROM user_cons_columns WHERE table_name = ${this.escape(tableName)}`;\n  }\n\n  showTablesQuery() {\n    return 'SELECT owner as table_schema, table_name, 0 as lvl FROM all_tables where OWNER IN(SELECT USERNAME AS \"schema_name\" FROM ALL_USERS WHERE ORACLE_MAINTAINED = \\'N\\')';\n  }\n\n  dropTableQuery(tableName) {\n    return Utils.joinSQLFragments([\n      'BEGIN ',\n      'EXECUTE IMMEDIATE \\'DROP TABLE',\n      this.quoteTable(tableName),\n      'CASCADE CONSTRAINTS PURGE\\';',\n      'EXCEPTION WHEN OTHERS THEN',\n      ' IF SQLCODE != -942 THEN',\n      '   RAISE;',\n      ' END IF;',\n      'END;'\n    ]);\n  }\n\n  /*\n    Modifying the indexname so that it is prefixed with the schema name\n    otherwise Oracle tries to add the index to the USER schema\n   @overide\n  */\n  addIndexQuery(tableName, attributes, options, rawTablename) {\n    if (typeof tableName !== 'string' && attributes.name) {\n      attributes.name = `${tableName.schema}.${attributes.name}`;\n    }\n    return super.addIndexQuery(tableName, attributes, options, rawTablename);\n  }\n\n  addConstraintQuery(tableName, options) {\n    options = options || {};\n\n    if (options.onUpdate) {\n      // Oracle does not support ON UPDATE, remove it.\n      delete options.onUpdate;\n    }\n\n    if (options.onDelete && options.onDelete.toUpperCase() === 'NO ACTION') {\n      // 'ON DELETE NO ACTION' is the default option in Oracle, but it is not supported if defined\n      delete options.onDelete;\n    }\n\n    const constraintSnippet = this.getConstraintSnippet(tableName, options);\n\n    tableName = this.quoteTable(tableName);\n    return `ALTER TABLE ${tableName} ADD ${constraintSnippet};`;\n  }\n\n  addColumnQuery(table, key, dataType) {\n    dataType.field = key;\n\n    const attribute = Utils.joinSQLFragments([\n      this.quoteIdentifier(key),\n      this.attributeToSQL(dataType, {\n        attributeName: key,\n        context: 'addColumn'\n      })\n    ]);\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(table),\n      'ADD',\n      attribute\n    ]);\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP COLUMN',\n      this.quoteIdentifier(attributeName),\n      ';'\n    ]);\n  }\n\n  /**\n   * Function to add new foreign key to the attribute \n   * Block for add and drop foreign key constraint query\n   * taking the assumption that there is a single column foreign key reference always\n   * i.e. we always do - FOREIGN KEY (a) reference B(a) during createTable queryGenerator\n   * so there would be one and only one match for a constraint name for each column\n   * and every foreign keyed column would have a different constraint name\n   * Since sequelize doesn't support multiple column foreign key, added complexity to\n   * add the feature isn't needed\n   *\n   * @param {string} definition The operation that needs to be performed on the attribute\n   * @param {string|object} table The table that needs to be altered\n   * @param {string} attributeName The name of the attribute which would get altered\n   */\n  _alterForeignKeyConstraint(definition, table, attributeName) {\n    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);\n    const attributeNameConstant = this.escape(this.getCatalogName(attributeName));\n    const schemaNameConstant = table.schema ? this.escape(this.getCatalogName(schemaName)) : 'USER';\n    const tableNameConstant = this.escape(this.getCatalogName(tableName));\n    const getConsNameQuery = [\n      'SELECT constraint_name INTO cons_name',\n      'FROM (',\n      '  SELECT DISTINCT cc.owner, cc.table_name, cc.constraint_name, cc.column_name AS cons_columns',\n      '  FROM all_cons_columns cc, all_constraints c',\n      '  WHERE cc.owner = c.owner',\n      '  AND cc.table_name = c.table_name',\n      '  AND cc.constraint_name = c.constraint_name',\n      '  AND c.constraint_type = \\'R\\'',\n      '  GROUP BY cc.owner, cc.table_name, cc.constraint_name, cc.column_name',\n      ')',\n      'WHERE owner =',\n      schemaNameConstant,\n      'AND table_name =',\n      tableNameConstant,\n      'AND cons_columns =',\n      attributeNameConstant,\n      ';'\n    ].join(' ');\n    const secondQuery = Utils.joinSQLFragments([\n      `ALTER TABLE ${this.quoteIdentifier(tableName)}`,\n      'ADD FOREIGN KEY',\n      `(${this.quoteIdentifier(attributeName)})`,\n      definition.replace(/.+?(?=REFERENCES)/, '')\n    ]);\n    return [\n      'BEGIN',\n      getConsNameQuery,\n      'EXCEPTION',\n      'WHEN NO_DATA_FOUND THEN',\n      ' CONS_NAME := NULL;',\n      'END;',\n      'IF CONS_NAME IS NOT NULL THEN',\n      ` EXECUTE IMMEDIATE 'ALTER TABLE ${this.quoteTable(table)} DROP CONSTRAINT \"'||CONS_NAME||'\"';`,\n      'END IF;',\n      `EXECUTE IMMEDIATE ${this.escape(secondQuery)};`\n    ].join(' ');\n  }\n\n  /**\n   * Function to alter table modify\n   *\n   * @param {string} definition The operation that needs to be performed on the attribute\n   * @param {object|string} table The table that needs to be altered\n   * @param {string} attributeName The name of the attribute which would get altered\n   */\n  _modifyQuery(definition, table, attributeName) {\n    definition = definition.startsWith('BLOB') ? definition.replace('BLOB ', '') : definition;\n    const query = Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(table),\n      'MODIFY',\n      this.quoteIdentifier(attributeName),\n      definition\n    ]);\n    const secondQuery = query.replace('NOT NULL', '').replace('NULL', '');\n    return [\n      'BEGIN',\n      `EXECUTE IMMEDIATE ${this.escape(query)};`,\n      'EXCEPTION',\n      'WHEN OTHERS THEN',\n      ' IF SQLCODE = -1442 OR SQLCODE = -1451 THEN',\n      // We execute the statement without the NULL / NOT NULL clause if the first statement failed due to this\n      `   EXECUTE IMMEDIATE ${this.escape(secondQuery)};`,\n      ' ELSE',\n      '   RAISE;',\n      ' END IF;',\n      'END;'\n    ].join(' ');\n  }\n\n  changeColumnQuery(table, attributes) {\n    const sql = [\n      'DECLARE',\n      'CONS_NAME VARCHAR2(200);',\n      'BEGIN'\n    ];\n    for (const attributeName in attributes) {\n      if (!Object.prototype.hasOwnProperty.call(attributes, attributeName)) continue;\n      const definition = attributes[attributeName];\n      if (definition.match(/REFERENCES/)) {\n        sql.push(this._alterForeignKeyConstraint(definition, table, attributeName));\n      } else {\n        // Building the modify query\n        sql.push(this._modifyQuery(definition, table, attributeName));\n      }\n    }\n    sql.push('END;');\n    return sql.join(' ');\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n    const newName = Object.keys(attributes)[0];\n    return `ALTER TABLE ${this.quoteTable(tableName)} RENAME COLUMN ${this.quoteIdentifier(attrBefore)} TO ${this.quoteIdentifier(newName)}`;\n  }\n\n  /**\n   * Populates the returnAttributes array with outbind bindByPosition values\n   * and also the options.outBindAttributes map with bindDef for outbind of InsertQuery\n   *\n   * @param {Array} returningModelAttributes\n   * @param {Array} returnTypes\n   * @param {number} inbindLength\n   * @param {object} returnAttributes\n   * @param {object} options\n   *\n   * @private\n   */\n  populateInsertQueryReturnIntoBinds(returningModelAttributes, returnTypes, inbindLength, returnAttributes, options) {\n    const oracledb = this.sequelize.connectionManager.lib;\n    const outBindAttributes = Object.create(null);\n    const outbind = [];\n    const outbindParam = this.bindParam(outbind, inbindLength);\n    returningModelAttributes.forEach((element, index) => {\n      // generateReturnValues function quotes identifier based on the quoteIdentifier option\n      // If the identifier starts with a quote we remove it else we use it as is\n      if (element.startsWith('\"')) {\n        element = element.substring(1, element.length - 1);\n      }\n      outBindAttributes[element] = Object.assign(returnTypes[index]._getBindDef(oracledb), { dir: oracledb.BIND_OUT });\n      const returnAttribute = `${this.format(undefined, undefined, { context: 'INSERT' }, outbindParam)}`;\n      returnAttributes.push(returnAttribute);\n    });\n    options.outBindAttributes = outBindAttributes;\n  }\n\n  /**\n   * Override of upsertQuery, Oracle specific\n   * Using PL/SQL for finding the row\n   *\n   * @param {object|string} tableName\n   * @param {Array} insertValues\n   * @param {Array} updateValues\n   * @param {Array} where\n   * @param {object} model\n   * @param {object} options\n   */\n  upsertQuery(tableName, insertValues, updateValues, where, model, options) {\n    const rawAttributes = model.rawAttributes;\n    const updateQuery = this.updateQuery(tableName, updateValues, where, options, rawAttributes);\n    // This bind is passed so that the insert query starts appending to this same bind array\n    options.bind = updateQuery.bind;\n    const insertQuery = this.insertQuery(tableName, insertValues, rawAttributes, options);\n\n    const sql = [\n      'DECLARE ',\n      'BEGIN ',\n      updateQuery.query ? [ \n        updateQuery.query,\n        '; ',\n        ' IF ( SQL%ROWCOUNT = 0 ) THEN ',\n        insertQuery.query,\n        ' :isUpdate := 0; ',\n        'ELSE ',\n        ' :isUpdate := 1; ',\n        ' END IF; '\n      ].join('') : [\n        insertQuery.query,\n        ' :isUpdate := 0; ',\n        // If there is a conflict on insert we ignore\n        'EXCEPTION WHEN OTHERS THEN',\n        ' IF SQLCODE != -1 THEN',\n        '   RAISE;',\n        ' END IF;'\n      ].join(''),\n      'END;'\n    ];\n\n    const query = sql.join('');\n    const result = { query };\n    \n    if (options.bindParam !== false) {\n      result.bind = updateQuery.bind || insertQuery.bind;\n    }\n\n    return result;\n  }\n\n  /**\n   * Returns an insert into command for multiple values.\n   *\n   * @param {string} tableName\n   * @param {object} fieldValueHashes\n   * @param {object} options\n   * @param {object} fieldMappedAttributes\n   *\n   * @private\n   */\n  bulkInsertQuery(tableName, fieldValueHashes, options, fieldMappedAttributes) {\n    options = options || {};\n    options.executeMany = true;\n    fieldMappedAttributes = fieldMappedAttributes || {};\n\n    const tuples = [];\n    const allColumns = {};\n    const inBindBindDefMap = {};\n    const outBindBindDefMap = {};\n    const oracledb = this.sequelize.connectionManager.lib;\n\n    // Generating the allColumns map\n    // The data is provided as an array of objects. \n    // Each object may contain differing numbers of attributes. \n    // A set of the attribute names that are used in all objects must be determined. \n    // The allColumns map contains the column names and indicates whether the value is generated or not\n    // We set allColumns[key] to true if the field is an\n    // auto-increment field and the value given is null and fieldMappedAttributes[key]\n    // is valid for the specific column else it is set to false\n    for (const fieldValueHash of fieldValueHashes) {\n      _.forOwn(fieldValueHash, (value, key) => {\n        allColumns[key] = fieldMappedAttributes[key] && fieldMappedAttributes[key].autoIncrement === true && value === null;\n      });\n    }\n\n    // Building the inbind parameter\n    // A list that would have inbind positions like [:1, :2, :3...] to be used in generating sql string\n    let inBindPosition;\n    // Iterating over each row of the fieldValueHashes\n    for (const fieldValueHash of fieldValueHashes) {\n      // Has each column for a row after coverting it to appropriate format using this.format function\n      // like ['Mick', 'Broadstone', 2022-02-16T05:24:18.949Z, 2022-02-16T05:24:18.949Z],\n      const tuple = [];\n      // A function expression for this.bindParam/options.bindparam function\n      // This function is passed to this.format function which inserts column values to the tuple list\n      // using _bindParam/_stringify function in data-type.js file\n      const inbindParam = options.bindParam === undefined ? this.bindParam(tuple) : options.bindParam;\n      // We are iterating over each col\n      // and pushing the given values to tuple list using this.format function\n      // and also simultaneously generating the bindPosition\n      // tempBindPostions has the inbind positions\n      const tempBindPositions = Object.keys(allColumns).map(key => {\n        if (allColumns[key] === true) {\n          // We had set allAttributes[key] to true since at least one row for an auto increment column was null\n          // If we get any other row that has this specific column as non-null we must raise an error\n          // Since for an auto-increment column, either all row has to be null or all row has to be a non-null\n          if (fieldValueHash[key] !== null) {\n            throw Error('For an auto-increment column either all row must be null or non-null, a mix of null and non-null is not allowed!');\n          }\n          // Return DEFAULT for auto-increment column and if all values for the column is null in each row\n          return 'DEFAULT';\n        }\n        // Sanitizes the values given by the user and pushes it to the tuple list using inBindParam function and\n        // also generates the inbind position for the sql string for example (:1, :2, :3.....) which is a by product of the push\n        return this.format(fieldValueHash[key], fieldMappedAttributes[key], { context: 'INSERT' }, inbindParam);\n      });\n\n      // Even though the bind variable positions are calculated for each row we only retain the values for the first row \n      // since the values will be identical\n      if (!inBindPosition) {\n        inBindPosition = tempBindPositions;\n      }\n      // Adding the row to the array of rows that will be supplied to executeMany()\n      tuples.push(tuple);\n    }\n\n    // The columns that we are expecting to be returned from the DB like [\"id1\", \"id2\"...]\n    const returnColumn = [];\n    // The outbind positions for the returning columns like [:3, :4, :5....]\n    const returnColumnBindPositions = [];\n    // Has the columns name in which data would be inserted like [\"id\", \"name\".....]\n    const insertColumns = [];\n    // Iterating over the allColumns keys to get the bindDef for inbind and outbinds\n    // and also to get the list of insert and return column after applying this.quoteIdentifier\n    for (const key of Object.keys(allColumns)) {\n      // If fieldMappenAttributes[attr] is defined we generate the bindDef \n      // and return clause else we can skip it\n      if (fieldMappedAttributes[key]) {\n        // BindDef for the specific column\n        const bindDef = fieldMappedAttributes[key].type._getBindDef(oracledb);\n        if (allColumns[key]) {\n          // Binddef for outbinds\n          bindDef.dir = oracledb.BIND_OUT;\n          outBindBindDefMap[key] = bindDef;\n\n          // Building the outbind parameter list\n          // ReturnColumn has the column name for example \"id\", \"usedId\", quoting depends on quoteIdentifier option\n          returnColumn.push(this.quoteIdentifier(key));\n          // Pushing the outbind index to the returnColumnPositions to generate (:3, :4, :5)\n          // The start offset depend on the tuple length (bind array size of a particular row)\n          // the outbind position starts after the position where inbind position ends\n          returnColumnBindPositions.push(`:${tuples[0].length + returnColumn.length}`);\n        } else {\n          // Binddef for inbinds\n          bindDef.dir = oracledb.BIND_IN;\n          inBindBindDefMap[key] = bindDef;\n        }\n      }\n      // Quoting and pushing each insert column based on quoteIdentifier option\n      insertColumns.push(this.quoteIdentifier(key));\n    }\n   \n    // Generating the sql query\n    let query = Utils.joinSQLFragments([\n      'INSERT',\n      'INTO',\n      // Table name for the table in which data needs to inserted\n      this.quoteTable(tableName),\n      // Columns names for the columns of the table (example \"a\", \"b\", \"c\" - quoting depends on the quoteidentifier option)\n      `(${insertColumns.join(',')})`,\n      'VALUES',\n      // InBind position for the insert query (for example :1, :2, :3....)\n      `(${inBindPosition})`\n    ]);\n\n    // If returnColumn.length is > 0\n    // then the returning into clause is needed\n    if (returnColumn.length > 0) {\n      options.outBindAttributes = outBindBindDefMap;\n      query = Utils.joinSQLFragments([\n        query,\n        'RETURNING',\n        // List of return column (for example \"id\", \"userId\"....)\n        `${returnColumn.join(',')}`,\n        'INTO',\n        // List of outbindPosition (for example :4, :5, :6....)\n        // Start offset depends on where inbindPosition end\n        `${returnColumnBindPositions}`\n      ]);\n    }\n\n    // Binding the bind variable to result\n    const result = { query };\n    // Binding the bindParam to result\n    // Tuple has each row for the insert query\n    result.bind = tuples;\n    // Setting options.inbindAttribute\n    options.inbindAttributes = inBindBindDefMap;\n    return result;\n  }\n\n  truncateTableQuery(tableName) {\n    return `TRUNCATE TABLE ${this.quoteTable(tableName)}`;\n  }\n\n  deleteQuery(tableName, where, options, model) {\n    options = options || {};\n\n    const table = tableName;\n\n    where = this.getWhereConditions(where, null, model, options);\n    let queryTmpl;\n    // delete with limit <l> and optional condition <e> on Oracle: DELETE FROM <t> WHERE rowid in (SELECT rowid FROM <t> WHERE <e> AND rownum <= <l>)\n    // Note that the condition <e> has to be in the subquery; otherwise, the subquery would select <l> arbitrary rows.\n    if (options.limit) {\n      const whereTmpl = where ? ` AND ${where}` : '';\n      queryTmpl =\n        `DELETE FROM ${this.quoteTable(table)} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(table)} WHERE rownum <= ${this.escape(options.limit)}${ \n          whereTmpl \n        })`;\n    } else {\n      const whereTmpl = where ? ` WHERE ${where}` : '';\n      queryTmpl = `DELETE FROM ${this.quoteTable(table)}${whereTmpl}`;\n    }\n    return queryTmpl;\n  }\n\n  showIndexesQuery(table) {\n    const [tableName, owner] = this.getSchemaNameAndTableName(table);\n    const sql = [\n      'SELECT i.index_name,i.table_name, i.column_name, u.uniqueness, i.descend, c.constraint_type ',\n      'FROM all_ind_columns i ',\n      'INNER JOIN all_indexes u ',\n      'ON (u.table_name = i.table_name AND u.index_name = i.index_name) ',\n      'LEFT OUTER JOIN all_constraints c ',\n      'ON (c.table_name = i.table_name AND c.index_name = i.index_name) ',\n      `WHERE i.table_name = ${this.escape(tableName)}`,\n      ' AND u.table_owner = ',\n      owner ? this.escape(owner) : 'USER',\n      ' ORDER BY index_name, column_position'\n    ];\n\n    return sql.join('');\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName }_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return `DROP INDEX ${this.quoteIdentifier(indexName)}`;\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    // TODO: Address on update cascade issue whether to throw error or ignore.\n    // Add this to documentation when merging to sequelize-main\n    // ON UPDATE CASCADE IS NOT SUPPORTED BY ORACLE.\n    attribute.onUpdate = '';\n\n    // handle self referential constraints\n    if (attribute.references) {\n      if (attribute.Model && attribute.Model.tableName === attribute.references.model) {\n        this.sequelize.log(\n          'Oracle does not support self referencial constraints, ' +\n            'we will remove it but we recommend restructuring your query'\n        );\n        attribute.onDelete = '';\n      }\n    }\n\n    let template;\n\n    template = attribute.type.toSql ? attribute.type.toSql() : '';\n    if (attribute.type instanceof DataTypes.JSON) {\n      template += ` CHECK (${this.quoteIdentifier(options.attributeName)} IS JSON)`;\n      return template;\n    }\n    if (Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n    }\n    if (attribute.allowNull === false) {\n      template += ' NOT NULL';\n    }\n    if (attribute.type instanceof DataTypes.ENUM) {\n      if (attribute.type.values && !attribute.values) attribute.values = attribute.type.values;\n      // enums are a special case\n      template +=\n        ` CHECK (${this.quoteIdentifier(options.attributeName)} IN(${ \n          _.map(attribute.values, value => {\n            return this.escape(value);\n          }).join(', ') \n        }))`;\n      return template;\n    } \n    if (attribute.type instanceof DataTypes.BOOLEAN) {\n      template +=\n        ` CHECK (${this.quoteIdentifier(options.attributeName)} IN('1', '0'))`;\n      return template;\n    } \n    if (attribute.autoIncrement) {\n      template = ' NUMBER(*,0) GENERATED BY DEFAULT ON NULL AS IDENTITY';\n    } else if (attribute.type && attribute.type.key === DataTypes.DOUBLE.key) {\n      template = attribute.type.toSql();\n    } else if (attribute.type) {\n      // setting it to false because oracle doesn't support unsigned int so put a check to make it behave like unsigned int\n      let unsignedTemplate = '';\n      if (attribute.type._unsigned) {\n        attribute.type._unsigned = false;\n        unsignedTemplate += ` check(${this.quoteIdentifier(options.attributeName)} >= 0)`;\n      }\n      template = attribute.type.toString();\n\n      // Blobs/texts cannot have a defaultValue\n      if (\n        attribute.type &&\n        attribute.type !== 'TEXT' &&\n        attribute.type._binary !== true &&\n        Utils.defaultValueSchemable(attribute.defaultValue)\n      ) {\n        template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n      }\n\n      if (!attribute.autoIncrement) {\n        // If autoincrement, not null is set automatically\n        if (attribute.allowNull === false) {\n          template += ' NOT NULL';\n        } else if (!attribute.primaryKey && !Utils.defaultValueSchemable(attribute.defaultValue)) {\n          template += ' NULL';\n        }\n      }\n      template += unsignedTemplate;\n    } else {\n      template = '';\n    }\n\n    if (attribute.unique === true && !attribute.primaryKey) {\n      template += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      template += ' PRIMARY KEY';\n    }\n\n    if ((!options || !options.withoutForeignKeyConstraints) && attribute.references) {\n      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;\n\n      if (attribute.references.key) {\n        template += ` (${this.quoteIdentifier(attribute.references.key) })`;\n      } else {\n        template += ` (${this.quoteIdentifier('id') })`;\n      }\n\n      if (attribute.onDelete && attribute.onDelete.toUpperCase() !== 'NO ACTION') {\n        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;\n      }\n    }\n\n    return template;\n  }\n  attributesToSQL(attributes, options) {\n    const result = {};\n\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      const attributeName = attribute.field || key;\n      result[attributeName] = this.attributeToSQL(attribute, { attributeName, ...options });\n    }\n\n    return result;\n  }\n\n  createTrigger() {\n    throwMethodUndefined('createTrigger');\n  }\n\n  dropTrigger() {\n    throwMethodUndefined('dropTrigger');\n  }\n\n  renameTrigger() {\n    throwMethodUndefined('renameTrigger');\n  }\n\n  createFunction() {\n    throwMethodUndefined('createFunction');\n  }\n\n  dropFunction() {\n    throwMethodUndefined('dropFunction');\n  }\n\n  renameFunction() {\n    throwMethodUndefined('renameFunction');\n  }\n\n  getConstraintsOnColumn(table, column) {\n    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);\n    column = this.getCatalogName(column);\n    const sql = [\n      'SELECT CONSTRAINT_NAME FROM user_cons_columns WHERE TABLE_NAME = ',\n      this.escape(tableName),\n      ' and OWNER = ',\n      table.schema ? this.escape(schemaName) : 'USER',\n      ' and COLUMN_NAME = ',\n      this.escape(column),\n      ' AND POSITION IS NOT NULL ORDER BY POSITION'\n    ].join('');\n\n    return sql;\n  }\n\n  getForeignKeysQuery(table) {\n    // We don't call quoteTable as we don't want the schema in the table name, Oracle seperates it on another field\n    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);\n    const sql = [\n      'SELECT DISTINCT  a.table_name \"tableName\", a.constraint_name \"constraintName\", a.owner \"owner\",  a.column_name \"columnName\",', \n      ' b.table_name \"referencedTableName\", b.column_name \"referencedColumnName\"',\n      ' FROM all_cons_columns a',\n      ' JOIN all_constraints c ON a.owner = c.owner AND a.constraint_name = c.constraint_name',\n      ' JOIN all_cons_columns b ON c.owner = b.owner AND c.r_constraint_name = b.constraint_name',\n      \" WHERE c.constraint_type  = 'R'\",\n      ' AND a.table_name = ',\n      this.escape(tableName),\n      ' AND a.owner = ',\n      table.schema ? this.escape(schemaName) : 'USER',\n      ' ORDER BY a.table_name, a.constraint_name'\n    ].join('');\n\n    return sql;\n  }\n\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return this.dropConstraintQuery(tableName, foreignKey);\n  }\n\n  getPrimaryKeyConstraintQuery(table) {\n    const [tableName, schemaName] = this.getSchemaNameAndTableName(table);\n    const sql = [\n      'SELECT cols.column_name, atc.identity_column ',\n      'FROM all_constraints cons, all_cons_columns cols ',\n      'INNER JOIN all_tab_columns atc ON(atc.table_name = cols.table_name AND atc.COLUMN_NAME = cols.COLUMN_NAME )',\n      'WHERE cols.table_name = ',\n      this.escape(tableName),\n      'AND cols.owner = ',\n      table.schema ? this.escape(schemaName) : 'USER ',\n      \"AND cons.constraint_type = 'P' \",\n      'AND cons.constraint_name = cols.constraint_name ',\n      'AND cons.owner = cols.owner ',\n      'ORDER BY cols.table_name, cols.position'\n    ].join('');\n\n    return sql;\n  }\n\n  dropConstraintQuery(tableName, constraintName) {\n    return `ALTER TABLE ${this.quoteTable(tableName)} DROP CONSTRAINT ${constraintName}`;\n  }\n\n  setIsolationLevelQuery(value, options) {\n    if (options.parent) {\n      return;\n    }\n\n    switch (value) {\n      case Transaction.ISOLATION_LEVELS.READ_UNCOMMITTED:\n      case Transaction.ISOLATION_LEVELS.READ_COMMITTED:\n        return 'SET TRANSACTION ISOLATION LEVEL READ COMMITTED;';\n      case Transaction.ISOLATION_LEVELS.REPEATABLE_READ:\n        // Serializable mode is equal to Snapshot Isolation (SI) \n        // defined in ANSI std.\n        return 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;';\n      default:\n        throw new Error(`isolation level \"${value}\" is not supported`);\n    }\n  }\n\n  getAliasToken() {\n    return '';\n  }\n\n  startTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `SAVEPOINT ${this.quoteIdentifier(transaction.name)}`;\n    }\n\n    return 'BEGIN TRANSACTION';\n  }\n\n  commitTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return;\n    }\n\n    return 'COMMIT TRANSACTION';\n  }\n\n  rollbackTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `ROLLBACK TO SAVEPOINT ${this.quoteIdentifier(transaction.name)}`;\n    }\n\n    return 'ROLLBACK TRANSACTION';\n  }\n\n  handleSequelizeMethod(smth, tableName, factory, options, prepend) {\n    let str;\n    if (smth instanceof Utils.Json) {\n      // Parse nested object\n      if (smth.conditions) {\n        const conditions = this.parseConditionObject(smth.conditions).map(condition =>\n          `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`\n        );\n\n        return conditions.join(' AND ');\n      }\n      if (smth.path) {\n\n        // Allow specifying conditions using the sqlite json functions\n        if (this._checkValidJsonStatement(smth.path)) {\n          str = smth.path;\n        } else {\n          // Also support json property accessors\n          const paths = _.toPath(smth.path);\n          const column = paths.shift();\n          str = this.jsonPathExtractionQuery(column, paths);\n        }\n        if (smth.value) {\n          str += util.format(' = %s', this.escape(smth.value));\n        }\n\n        return str;\n      }\n    }\n    if (smth instanceof Utils.Cast) {\n      if (smth.val instanceof Utils.SequelizeMethod) {\n        str = this.handleSequelizeMethod(smth.val, tableName, factory, options, prepend);\n        if (smth.type === 'boolean') {\n          str = `(CASE WHEN ${str}='true' THEN 1 ELSE 0 END)`;\n          return `CAST(${str} AS NUMBER)`;\n        } if (smth.type === 'timestamptz' && /json_value\\(/.test(str)) {\n          str = str.slice(0, -1);\n          return `${str} RETURNING TIMESTAMP WITH TIME ZONE)`;\n        }\n      }\n    }\n    return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);\n  }\n\n  _checkValidJsonStatement(stmt) {\n    if (typeof stmt !== 'string') {\n      return false;\n    }\n\n    let currentIndex = 0;\n    let openingBrackets = 0;\n    let closingBrackets = 0;\n    let hasJsonFunction = false;\n    let hasInvalidToken = false;\n\n    while (currentIndex < stmt.length) {\n      const string = stmt.substr(currentIndex);\n      const functionMatches = JSON_FUNCTION_REGEX.exec(string);\n      if (functionMatches) {\n        currentIndex += functionMatches[0].indexOf('(');\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);\n      if (operatorMatches) {\n        currentIndex += operatorMatches[0].length;\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);\n      if (tokenMatches) {\n        const capturedToken = tokenMatches[1];\n        if (capturedToken === '(') {\n          openingBrackets++;\n        } else if (capturedToken === ')') {\n          closingBrackets++;\n        } else if (capturedToken === ';') {\n          hasInvalidToken = true;\n          break;\n        }\n        currentIndex += tokenMatches[0].length;\n        continue;\n      }\n\n      break;\n    }\n\n    // Check invalid json statement\n    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {\n      throw new Error(`Invalid json statement: ${stmt}`);\n    }\n\n    // return true if the statement has valid json function\n    return hasJsonFunction;\n  }\n\n  jsonPathExtractionQuery(column, path) {\n    let paths = _.toPath(path);\n    const quotedColumn = this.isIdentifierQuoted(column) ? column : this.quoteIdentifier(column);\n\n    paths = paths.map(subPath => {\n      return /\\D/.test(subPath) ? Utils.addTicks(subPath, '\"') : subPath;\n    });\n\n    const pathStr = this.escape(['$'].concat(paths).join('.').replace(/\\.(\\d+)(?:(?=\\.)|$)/g, (__, digit) => `[${digit}]`));\n\n    return `json_value(${quotedColumn},${pathStr})`;\n  }\n\n  addLimitAndOffset(options, model) {\n    let fragment = '';\n    const offset = options.offset || 0,\n      isSubQuery = options.hasIncludeWhere || options.hasIncludeRequired || options.hasMultiAssociation;\n\n    let orders = {};\n    if (options.order) {\n      orders = this.getQueryOrders(options, model, isSubQuery);\n    }\n\n    if (options.limit || options.offset) {\n      // Add needed order by clause only when it is not provided\n      if (!orders.mainQueryOrder || !orders.mainQueryOrder.length || isSubQuery && (!orders.subQueryOrder || !orders.subQueryOrder.length)) {\n        const tablePkFragment = `${this.quoteTable(options.tableAs || model.name)}.${this.quoteIdentifier(model.primaryKeyField)}`;\n        fragment += ` ORDER BY ${tablePkFragment}`;\n      }\n\n      if (options.offset || options.limit) {\n        fragment += ` OFFSET ${this.escape(offset)} ROWS`;\n      }\n\n      if (options.limit) {\n        fragment += ` FETCH NEXT ${this.escape(options.limit)} ROWS ONLY`;\n      }\n    }\n\n    return fragment;\n  }\n\n  booleanValue(value) {\n    return value ? 1 : 0;\n  }\n\n  quoteIdentifier(identifier, force = false) {\n    const optForceQuote = force;\n    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;\n    const rawIdentifier = Utils.removeTicks(identifier, '\"');\n    const regExp = /^(([\\w][\\w\\d_]*))$/g;\n\n    if (\n      optForceQuote !== true &&\n      optQuoteIdentifiers === false &&\n      regExp.test(rawIdentifier) &&\n      !ORACLE_RESERVED_WORDS.includes(rawIdentifier.toUpperCase())\n    ) {\n      // In Oracle, if tables, attributes or alias are created double-quoted,\n      // they are always case sensitive. If they contain any lowercase\n      // characters, they must always be double-quoted otherwise it\n      // would get uppercased by the DB.\n      // Here, we strip quotes if we don't want case sensitivity.\n      return rawIdentifier;\n    }\n    return Utils.addTicks(rawIdentifier, '\"');\n  }\n\n  /**\n * It causes bindbyPosition like :1, :2, :3\n * We pass the val parameter so that the outBind indexes\n * starts after the inBind indexes end\n *\n * @param {Array} bind\n * @param {number} posOffset\n */\n  bindParam(bind, posOffset = 0) {\n    return value => {\n      bind.push(value);\n      return `:${bind.length + posOffset}`;\n    };\n  }\n\n  /**\n   * Returns the authenticate test query string\n   */\n  authTestQuery() {\n    return 'SELECT 1+1 AS result FROM DUAL';\n  }\n}\n\n/* istanbul ignore next */\nfunction throwMethodUndefined(methodName) {\n  throw new Error(`The method \"${methodName}\" is not defined! Please add it to your sql dialect.`);\n}\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  OracleQueryInterface: () => OracleQueryInterface
-});
-const { QueryInterface } = require("../abstract/query-interface");
-const QueryTypes = require("../../query-types");
-const _ = require("lodash");
-class OracleQueryInterface extends QueryInterface {
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    options = __spreadValues({}, options);
-    const model = options.model;
-    const primaryKeys = Object.values(model.primaryKeys).map((item) => item.field);
-    const uniqueKeys = Object.values(model.uniqueKeys).filter((c) => c.fields.length > 0).map((c) => c.fields);
-    const indexKeys = Object.values(model._indexes).filter((c) => c.unique && c.fields.length > 0).map((c) => c.fields);
-    options.type = QueryTypes.UPSERT;
-    options.updateOnDuplicate = Object.keys(updateValues);
-    options.upsertKeys = [];
-    for (const field of options.updateOnDuplicate) {
-      const uniqueKey = uniqueKeys.find((fields) => fields.includes(field));
-      if (uniqueKey) {
-        options.upsertKeys = uniqueKey;
-        break;
-      }
-      const indexKey = indexKeys.find((fields) => fields.includes(field));
-      if (indexKey) {
-        options.upsertKeys = indexKey;
-        break;
-      }
-    }
-    if (options.upsertKeys.length === 0 || _.intersection(options.updateOnDuplicate, primaryKeys).length) {
-      options.upsertKeys = primaryKeys;
-    }
-    options.upsertKeys = _.uniq(options.upsertKeys);
-    let whereHasNull = false;
-    primaryKeys.forEach((element) => {
-      if (where[element] === null) {
-        whereHasNull = true;
-      }
-    });
-    if (whereHasNull === true) {
-      where = options.upsertKeys.reduce((result, attribute) => {
-        result[attribute] = insertValues[attribute];
-        return result;
-      }, {});
-    }
-    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);
-    if (sql.bind) {
-      options.bind = void 0;
-    }
-    return await this.sequelize.query(sql, options);
-  }
-}
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/query-interface.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\nconst { QueryInterface } = require('../abstract/query-interface');\nconst QueryTypes = require('../../query-types');\n\nconst _ = require('lodash');\n/**\n * The interface that Sequelize uses to talk with Oracle database\n */\nexport class OracleQueryInterface extends QueryInterface {\n\n  /**\n   * Upsert\n   *\n   * @param {string} tableName    table to upsert on\n   * @param {object} insertValues values to be inserted, mapped to field name\n   * @param {object} updateValues values to be updated, mapped to field name\n   * @param {object} where        where conditions, which can be used for UPDATE part when INSERT fails\n   * @param {object} options      query options\n   *\n   * @returns {Promise<boolean,?number>} Resolves an array with <created, primaryKey>\n   */\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    options = { ...options };\n\n    const model = options.model;\n    const primaryKeys = Object.values(model.primaryKeys).map(item => item.field);\n    const uniqueKeys = Object.values(model.uniqueKeys).filter(c => c.fields.length > 0).map(c => c.fields);\n    const indexKeys = Object.values(model._indexes).filter(c => c.unique && c.fields.length > 0).map(c => c.fields);\n\n    options.type = QueryTypes.UPSERT;\n    options.updateOnDuplicate = Object.keys(updateValues);\n    options.upsertKeys = [];\n\n    // For fields in updateValues, try to find a constraint or unique index\n    // that includes given field. Only first matching upsert key is used.\n    for (const field of options.updateOnDuplicate) {\n      const uniqueKey = uniqueKeys.find(fields => fields.includes(field));\n      if (uniqueKey) {\n        options.upsertKeys = uniqueKey;\n        break;\n      }\n\n      const indexKey = indexKeys.find(fields => fields.includes(field));\n      if (indexKey) {\n        options.upsertKeys = indexKey;\n        break;\n      }\n    }\n\n    // Always use PK, if no constraint available OR update data contains PK\n    if (\n      options.upsertKeys.length === 0\n      || _.intersection(options.updateOnDuplicate, primaryKeys).length\n    ) {\n      options.upsertKeys = primaryKeys;\n    }\n\n    options.upsertKeys = _.uniq(options.upsertKeys);\n\n    let whereHasNull = false;\n\n    primaryKeys.forEach(element => {\n      if (where[element] === null) {\n        whereHasNull = true;\n      }\n    });\n\n    if (whereHasNull === true) {\n      where = options.upsertKeys.reduce((result, attribute) => {\n        result[attribute] = insertValues[attribute];\n        return result;\n      }, {}); \n    }\n\n    const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);\n    // we need set this to undefined otherwise sequelize would raise an error\n    // Error: Both `sql.bind` and `options.bind` cannot be set at the same time\n    if (sql.bind) {\n      options.bind = undefined;\n    }\n    return await this.sequelize.query(sql, options);\n  }\n}\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAGA,MAAM,EAAE,mBAAmB,QAAQ;AACnC,MAAM,aAAa,QAAQ;AAE3B,MAAM,IAAI,QAAQ;AAIX,mCAAmC,eAAe;AAAA,QAajD,OAAO,WAAW,cAAc,cAAc,OAAO,SAAS;AAClE,cAAU,mBAAK;AAEf,UAAM,QAAQ,QAAQ;AACtB,UAAM,cAAc,OAAO,OAAO,MAAM,aAAa,IAAI,UAAQ,KAAK;AACtE,UAAM,aAAa,OAAO,OAAO,MAAM,YAAY,OAAO,OAAK,EAAE,OAAO,SAAS,GAAG,IAAI,OAAK,EAAE;AAC/F,UAAM,YAAY,OAAO,OAAO,MAAM,UAAU,OAAO,OAAK,EAAE,UAAU,EAAE,OAAO,SAAS,GAAG,IAAI,OAAK,EAAE;AAExG,YAAQ,OAAO,WAAW;AAC1B,YAAQ,oBAAoB,OAAO,KAAK;AACxC,YAAQ,aAAa;AAIrB,eAAW,SAAS,QAAQ,mBAAmB;AAC7C,YAAM,YAAY,WAAW,KAAK,YAAU,OAAO,SAAS;AAC5D,UAAI,WAAW;AACb,gBAAQ,aAAa;AACrB;AAAA;AAGF,YAAM,WAAW,UAAU,KAAK,YAAU,OAAO,SAAS;AAC1D,UAAI,UAAU;AACZ,gBAAQ,aAAa;AACrB;AAAA;AAAA;AAKJ,QACE,QAAQ,WAAW,WAAW,KAC3B,EAAE,aAAa,QAAQ,mBAAmB,aAAa,QAC1D;AACA,cAAQ,aAAa;AAAA;AAGvB,YAAQ,aAAa,EAAE,KAAK,QAAQ;AAEpC,QAAI,eAAe;AAEnB,gBAAY,QAAQ,aAAW;AAC7B,UAAI,MAAM,aAAa,MAAM;AAC3B,uBAAe;AAAA;AAAA;AAInB,QAAI,iBAAiB,MAAM;AACzB,cAAQ,QAAQ,WAAW,OAAO,CAAC,QAAQ,cAAc;AACvD,eAAO,aAAa,aAAa;AACjC,eAAO;AAAA,SACN;AAAA;AAGL,UAAM,MAAM,KAAK,eAAe,YAAY,WAAW,cAAc,cAAc,OAAO,OAAO;AAGjG,QAAI,IAAI,MAAM;AACZ,cAAQ,OAAO;AAAA;AAEjB,WAAO,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,518 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  OracleQuery: () => OracleQuery
-});
-const AbstractQuery = require("../abstract/query");
-const SequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("oracle");
-const _ = require("lodash");
-const Utils = require("../../utils");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("sql:oracle");
-class OracleQuery extends AbstractQuery {
-  constructor(connection, sequelize, options) {
-    super(connection, sequelize, options);
-    this.options = _.extend({
-      logging: console.log,
-      plain: false,
-      raw: false
-    }, options || {});
-    this.checkLoggingOption();
-    this.outFormat = options.outFormat || this.sequelize.connectionManager.lib.OBJECT;
-  }
-  getInsertIdField() {
-    return "id";
-  }
-  getExecOptions() {
-    const execOpts = { outFormat: this.outFormat, autoCommit: this.autoCommit };
-    const oracledb = this.sequelize.connectionManager.lib;
-    if (this.model && this.isSelectQuery()) {
-      const fInfo = {};
-      const keys = Object.keys(this.model.tableAttributes);
-      for (const key of keys) {
-        const keyValue = this.model.tableAttributes[key];
-        if (keyValue.type.key === "DECIMAL") {
-          fInfo[key] = { type: oracledb.STRING };
-        }
-        if (keyValue.type.key === "BIGINT") {
-          fInfo[key] = { type: oracledb.STRING };
-        }
-      }
-      if (fInfo) {
-        execOpts.fetchInfo = fInfo;
-      }
-    }
-    return execOpts;
-  }
-  _convertBindAttributes(bindingDictionary, oracledb) {
-    if (this.model && this.options[bindingDictionary]) {
-      const keys = Object.keys(this.model.tableAttributes);
-      for (const key of keys) {
-        const keyValue = this.model.tableAttributes[key];
-        if (keyValue.type.key === "BIGINT") {
-          const oldBinding = this.options[bindingDictionary][key];
-          if (oldBinding) {
-            this.options[bindingDictionary][key] = __spreadProps(__spreadValues({}, oldBinding), {
-              type: oracledb.STRING,
-              maxSize: 1e7
-            });
-          }
-        }
-      }
-    }
-  }
-  async run(sql, parameters) {
-    const oracledb = this.sequelize.connectionManager.lib;
-    const complete = this._logQuery(sql, debug, parameters);
-    const outParameters = [];
-    const bindParameters = [];
-    const bindDef = [];
-    if (!sql.match(/END;$/)) {
-      this.sql = sql.replace(/; *$/, "");
-    } else {
-      this.sql = sql;
-    }
-    if (this.options.outBindAttributes && (Array.isArray(parameters) || _.isPlainObject(parameters))) {
-      this._convertBindAttributes("outBindAttributes", oracledb);
-      outParameters.push(...Object.values(this.options.outBindAttributes));
-      if (this.isUpsertQuery()) {
-        outParameters.push({ dir: oracledb.BIND_OUT });
-      }
-    }
-    this.bindParameters = outParameters;
-    if (Array.isArray(parameters) || _.isPlainObject(parameters)) {
-      if (this.options.executeMany) {
-        this._convertBindAttributes("inbindAttributes", oracledb);
-        bindDef.push(...Object.values(this.options.inbindAttributes));
-        bindDef.push(...outParameters);
-        this.bindParameters = parameters;
-      } else if (this.isRawQuery()) {
-        this.bindParameters = parameters;
-      } else {
-        Object.values(parameters).forEach((value) => {
-          bindParameters.push(value);
-        });
-        bindParameters.push(...outParameters);
-        Object.assign(this.bindParameters, bindParameters);
-      }
-    }
-    if (this.sql.startsWith("BEGIN TRANSACTION")) {
-      this.autocommit = false;
-      return Promise.resolve();
-    }
-    if (this.sql.startsWith("SET AUTOCOMMIT ON")) {
-      this.autocommit = true;
-      return Promise.resolve();
-    }
-    if (this.sql.startsWith("SET AUTOCOMMIT OFF")) {
-      this.autocommit = false;
-      return Promise.resolve();
-    }
-    if (this.sql.startsWith("DECLARE x NUMBER")) {
-      if (this.autoCommit === void 0) {
-        if (this.connection.uuid) {
-          this.autoCommit = false;
-        } else {
-          this.autoCommit = true;
-        }
-      }
-      try {
-        await this.connection.execute(this.sql, this.bindParameters, { autoCommit: this.autoCommit });
-        return Object.create(null);
-      } catch (error) {
-        throw this.formatError(error);
-      } finally {
-        complete();
-      }
-    }
-    if (this.sql.startsWith("BEGIN")) {
-      if (this.autoCommit === void 0) {
-        if (this.connection.uuid) {
-          this.autoCommit = false;
-        } else {
-          this.autoCommit = true;
-        }
-      }
-      try {
-        const result = await this.connection.execute(this.sql, this.bindParameters, {
-          outFormat: this.outFormat,
-          autoCommit: this.autoCommit
-        });
-        if (!Array.isArray(result.outBinds)) {
-          return [result.outBinds];
-        }
-        return result.outBinds;
-      } catch (error) {
-        throw this.formatError(error);
-      } finally {
-        complete();
-      }
-    }
-    if (this.sql.startsWith("COMMIT TRANSACTION")) {
-      try {
-        await this.connection.commit();
-        return Object.create(null);
-      } catch (error) {
-        throw this.formatError(error);
-      } finally {
-        complete();
-      }
-    }
-    if (this.sql.startsWith("ROLLBACK TRANSACTION")) {
-      try {
-        await this.connection.rollback();
-        return Object.create(null);
-      } catch (error) {
-        throw this.formatError(error);
-      } finally {
-        complete();
-      }
-    }
-    if (this.sql.startsWith("SET TRANSACTION")) {
-      try {
-        await this.connection.execute(this.sql, [], { autoCommit: false });
-        return Object.create(null);
-      } catch (error) {
-        throw this.formatError(error);
-      } finally {
-        complete();
-      }
-    }
-    if (this.autoCommit === void 0) {
-      if (this.connection.uuid) {
-        this.autoCommit = false;
-      } else {
-        this.autoCommit = true;
-      }
-    }
-    if ("inputParameters" in this.options && this.options.inputParameters !== null) {
-      Object.assign(this.bindParameters, this.options.inputParameters);
-    }
-    const execOpts = this.getExecOptions();
-    if (this.options.executeMany && bindDef.length > 0) {
-      execOpts.bindDefs = bindDef;
-    }
-    const executePromise = this.options.executeMany ? this.connection.executeMany(this.sql, this.bindParameters, execOpts) : this.connection.execute(this.sql, this.bindParameters, execOpts);
-    try {
-      const result = await executePromise;
-      return this.formatResults(result);
-    } catch (error) {
-      throw this.formatError(error);
-    } finally {
-      complete();
-    }
-  }
-  static formatBindParameters(sql, values, dialect) {
-    const replacementFunc = (match, key, values2) => {
-      if (values2[key] !== void 0) {
-        return `:${key}`;
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    return [sql, values];
-  }
-  _getAttributeMap(attrsMap, rawAttributes) {
-    attrsMap = Object.assign(attrsMap, _.reduce(rawAttributes, (mp, _2, key) => {
-      const catalogKey = this.sequelize.queryInterface.queryGenerator.getCatalogName(key);
-      mp[catalogKey] = key;
-      return mp;
-    }, {}));
-  }
-  _processRows(rows) {
-    let result = rows;
-    let attrsMap = {};
-    if (this.sequelize.options.quoteIdentifiers === false) {
-      attrsMap = _.reduce(this.options.attributes, (mp, v) => {
-        if (typeof v === "object") {
-          v = v[1];
-        }
-        const catalogv = this.sequelize.queryInterface.queryGenerator.getCatalogName(v);
-        mp[catalogv] = v;
-        return mp;
-      }, {});
-      if (this.model) {
-        this._getAttributeMap(attrsMap, this.model.rawAttributes);
-      }
-      if (this.options.aliasesMapping) {
-        const obj = Object.fromEntries(this.options.aliasesMapping);
-        rows = rows.map((row) => _.toPairs(row).reduce((acc, [key, value]) => {
-          const mapping = Object.values(obj).find((element) => {
-            const catalogElement = this.sequelize.queryInterface.queryGenerator.getCatalogName(element);
-            return catalogElement === key;
-          });
-          if (mapping)
-            acc[mapping || key] = value;
-          return acc;
-        }, {}));
-      }
-      result = rows.map((row) => {
-        return _.mapKeys(row, (value, key) => {
-          const targetAttr = attrsMap[key];
-          if (typeof targetAttr === "string" && targetAttr !== key) {
-            return targetAttr;
-          }
-          return key;
-        });
-      });
-    }
-    if (this.model) {
-      result = result.map((row) => {
-        return _.mapValues(row, (value, key) => {
-          if (this.model.rawAttributes[key] && this.model.rawAttributes[key].type) {
-            let typeid = this.model.rawAttributes[key].type.toLocaleString();
-            if (this.model.rawAttributes[key].type.key === "JSON") {
-              value = JSON.parse(value);
-            }
-            if (typeid.indexOf("(") > -1 && this.model.rawAttributes[key].type.key !== "BOOLEAN") {
-              typeid = typeid.substr(0, typeid.indexOf("("));
-            }
-            const parse = parserStore.get(typeid);
-            if (value !== null & !!parse) {
-              value = parse(value);
-            }
-          }
-          return value;
-        });
-      });
-    }
-    return result;
-  }
-  formatResults(data) {
-    let result = this.instance;
-    if (this.isInsertQuery(data)) {
-      let insertData;
-      if (data.outBinds) {
-        const keys = Object.keys(this.options.outBindAttributes);
-        insertData = data.outBinds;
-        if (this.instance) {
-          insertData = [insertData];
-        }
-        const res = insertData.map((row) => {
-          const obj = {};
-          row.forEach((element, index) => {
-            obj[keys[index]] = element[0];
-          });
-          return obj;
-        });
-        insertData = res;
-        if (!this.instance) {
-          result = res;
-        }
-      }
-      this.handleInsertQuery(insertData);
-      return [result, data.rowsAffected];
-    }
-    if (this.isShowTablesQuery()) {
-      result = this.handleShowTablesQuery(data.rows);
-    } else if (this.isDescribeQuery()) {
-      result = {};
-      const table = Object.keys(this.sequelize.models);
-      const modelAttributes = {};
-      if (this.sequelize.models && table.length > 0) {
-        this._getAttributeMap(modelAttributes, this.sequelize.models[table[0]].rawAttributes);
-      }
-      data.rows.forEach((_result) => {
-        if (_result.Default) {
-          _result.Default = _result.Default.replace("('", "").replace("')", "").replace(/'/g, "");
-        }
-        if (!(modelAttributes[_result.COLUMN_NAME] in result)) {
-          let key = modelAttributes[_result.COLUMN_NAME];
-          if (!key) {
-            key = _result.COLUMN_NAME;
-          }
-          result[key] = {
-            type: _result.DATA_TYPE.toUpperCase(),
-            allowNull: _result.NULLABLE === "N" ? false : true,
-            defaultValue: void 0,
-            primaryKey: _result.CONSTRAINT_TYPE === "P"
-          };
-        }
-      });
-    } else if (this.isShowIndexesQuery()) {
-      result = this.handleShowIndexesQuery(data.rows);
-    } else if (this.isSelectQuery()) {
-      const rows = data.rows;
-      const result2 = this._processRows(rows);
-      return this.handleSelectQuery(result2);
-    } else if (this.isCallQuery()) {
-      result = data.rows[0];
-    } else if (this.isUpdateQuery()) {
-      result = [result, data.rowsAffected];
-    } else if (this.isBulkUpdateQuery()) {
-      result = data.rowsAffected;
-    } else if (this.isBulkDeleteQuery()) {
-      result = data.rowsAffected;
-    } else if (this.isVersionQuery()) {
-      const version = data.rows[0].VERSION_FULL;
-      if (version) {
-        const versions = version.split(".");
-        result = `${versions[0]}.${versions[1]}.${versions[2]}`;
-      } else {
-        result = "0.0.0";
-      }
-    } else if (this.isForeignKeysQuery()) {
-      result = data.rows;
-    } else if (this.isUpsertQuery()) {
-      data = data.outBinds;
-      const keys = Object.keys(this.options.outBindAttributes);
-      const obj = {};
-      for (const k in keys) {
-        obj[keys[k]] = data[k];
-      }
-      obj.isUpdate = data[data.length - 1];
-      data = obj;
-      result = [{ isNewRecord: data.isUpdate, value: data }, data.isUpdate == 0];
-    } else if (this.isShowConstraintsQuery()) {
-      result = this.handleShowConstraintsQuery(data);
-    } else if (this.isRawQuery()) {
-      if (data && data.rows) {
-        return [data.rows, data.metaData];
-      }
-      return [data, data];
-    }
-    return result;
-  }
-  handleShowConstraintsQuery(data) {
-    return data.rows.map((result) => {
-      const constraint = {};
-      for (const key in result) {
-        constraint[_.camelCase(key)] = result[key].toLowerCase();
-      }
-      return constraint;
-    });
-  }
-  handleShowTablesQuery(results) {
-    return results.map((resultSet) => {
-      return {
-        tableName: resultSet.TABLE_NAME,
-        schema: resultSet.TABLE_SCHEMA
-      };
-    });
-  }
-  formatError(err) {
-    let match;
-    match = err.message.match(/unique constraint ([\s\S]*) violated/);
-    if (match && match.length > 1) {
-      match[1] = match[1].replace("(", "").replace(")", "").split(".")[1];
-      const errors = [];
-      let fields = [], message = "Validation error", uniqueKey = null;
-      if (this.model) {
-        const uniqueKeys = Object.keys(this.model.uniqueKeys);
-        const currKey = uniqueKeys.find((key) => {
-          return key.toUpperCase() === match[1].toUpperCase() || key.toUpperCase() === `"${match[1].toUpperCase()}"`;
-        });
-        if (currKey) {
-          uniqueKey = this.model.uniqueKeys[currKey];
-          fields = uniqueKey.fields;
-        }
-        if (uniqueKey && !!uniqueKey.msg) {
-          message = uniqueKey.msg;
-        }
-        fields.forEach((field) => {
-          errors.push(new SequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, null));
-        });
-      }
-      return new SequelizeErrors.UniqueConstraintError({
-        message,
-        errors,
-        err,
-        fields
-      });
-    }
-    match = err.message.match(/ORA-02291/) || err.message.match(/ORA-02292/);
-    if (match && match.length > 0) {
-      return new SequelizeErrors.ForeignKeyConstraintError({
-        fields: null,
-        index: match[1],
-        parent: err
-      });
-    }
-    match = err.message.match(/ORA-02443/);
-    if (match && match.length > 0) {
-      return new SequelizeErrors.UnknownConstraintError(match[1]);
-    }
-    return new SequelizeErrors.DatabaseError(err);
-  }
-  isShowIndexesQuery() {
-    return this.sql.indexOf("SELECT i.index_name,i.table_name, i.column_name, u.uniqueness") > -1;
-  }
-  isSelectCountQuery() {
-    return this.sql.toUpperCase().indexOf("SELECT COUNT(") > -1;
-  }
-  handleShowIndexesQuery(data) {
-    const acc = [];
-    data.forEach((indexRecord) => {
-      if (!acc[indexRecord.INDEX_NAME]) {
-        acc[indexRecord.INDEX_NAME] = {
-          unique: indexRecord.UNIQUENESS === "UNIQUE" ? true : false,
-          primary: indexRecord.CONSTRAINT_TYPE === "P",
-          name: indexRecord.INDEX_NAME.toLowerCase(),
-          tableName: indexRecord.TABLE_NAME.toLowerCase(),
-          type: void 0
-        };
-        acc[indexRecord.INDEX_NAME].fields = [];
-      }
-      acc[indexRecord.INDEX_NAME].fields.push({
-        attribute: indexRecord.COLUMN_NAME,
-        length: void 0,
-        order: indexRecord.DESCEND,
-        collate: void 0
-      });
-    });
-    const returnIndexes = [];
-    const accKeys = Object.keys(acc);
-    for (const accKey of accKeys) {
-      const columns = {};
-      columns.fields = acc[accKey].fields;
-      if (acc[accKey].name.match(/sys_c[0-9]*/)) {
-        acc[accKey].name = Utils.nameIndex(columns, acc[accKey].tableName).name;
-      }
-      returnIndexes.push(acc[accKey]);
-    }
-    return returnIndexes;
-  }
-  handleInsertQuery(results, metaData) {
-    if (this.instance && results.length > 0) {
-      if ("pkReturnVal" in results[0]) {
-        results[0][this.model.primaryKeyAttribute] = results[0].pkReturnVal;
-        delete results[0].pkReturnVal;
-      }
-      const autoIncrementField = this.model.autoIncrementAttribute;
-      let autoIncrementFieldAlias = null, id = null;
-      if (Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementField) && this.model.rawAttributes[autoIncrementField].field !== void 0)
-        autoIncrementFieldAlias = this.model.rawAttributes[autoIncrementField].field;
-      id = id || results && results[0][this.getInsertIdField()];
-      id = id || metaData && metaData[this.getInsertIdField()];
-      id = id || results && results[0][autoIncrementField];
-      id = id || autoIncrementFieldAlias && results && results[0][autoIncrementFieldAlias];
-      this.instance[autoIncrementField] = id;
-    }
-  }
-}
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/oracle/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/oracle/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/oracle/query.js"],
-  "sourcesContent": ["// Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved\n\n'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst SequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('oracle');\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst { logger } = require('../../utils/logger');\n\nconst debug = logger.debugContext('sql:oracle');\n\nexport class OracleQuery extends AbstractQuery {\n  constructor(connection, sequelize, options) {\n    super(connection, sequelize, options);\n    this.options = _.extend(\n      {\n        logging: console.log,\n        plain: false,\n        raw: false\n      },\n      options || {}\n    );\n\n    this.checkLoggingOption();\n    this.outFormat = options.outFormat || this.sequelize.connectionManager.lib.OBJECT;\n  }\n\n  getInsertIdField() {\n    return 'id';\n  }\n\n  getExecOptions() {\n    const execOpts = { outFormat: this.outFormat, autoCommit: this.autoCommit };\n\n    // We set the oracledb\n    const oracledb = this.sequelize.connectionManager.lib;\n\n    if (this.model && this.isSelectQuery()) {\n      const fInfo = {};\n      const keys = Object.keys(this.model.tableAttributes);\n      for (const key of keys) {\n        const keyValue = this.model.tableAttributes[key];\n        if (keyValue.type.key === 'DECIMAL') {\n          fInfo[key] = { type: oracledb.STRING };\n        }\n        // Fetching BIGINT as string since, node-oracledb doesn't support JS BIGINT yet\n        if (keyValue.type.key === 'BIGINT') {\n          fInfo[key] = { type: oracledb.STRING };\n        }\n      }\n      if ( fInfo ) {\n        execOpts.fetchInfo = fInfo;\n      }\n    }\n    return execOpts;\n  }\n\n  /**\n   * convert binding values for unsupported\n   * types in connector library\n   *\n   * @param {string} bindingDictionary a string representing the key to scan\n   * @param {object} oracledb native oracle library\n   * @private\n   */\n  _convertBindAttributes(bindingDictionary, oracledb) {\n    if (this.model && this.options[bindingDictionary]) {\n      // check against model if we have some BIGINT\n      const keys = Object.keys(this.model.tableAttributes);\n      for (const key of keys) {\n        const keyValue = this.model.tableAttributes[key];\n        if (keyValue.type.key === 'BIGINT') {\n          const oldBinding = this.options[bindingDictionary][key];\n          if (oldBinding) {\n            this.options[bindingDictionary][key] = {\n              ...oldBinding,\n              type: oracledb.STRING,\n              maxSize: 10000000 //TOTALLY ARBITRARY Number to prevent query failure\n            };\n          }\n        }\n      }\n    }\n  }\n\n  async run(sql, parameters) {\n    // We set the oracledb\n    const oracledb = this.sequelize.connectionManager.lib;\n    const complete = this._logQuery(sql, debug, parameters);\n    const outParameters = [];\n    const bindParameters = [];\n    const bindDef = [];\n\n    if (!sql.match(/END;$/)) {\n      this.sql = sql.replace(/; *$/, '');\n    } else {\n      this.sql = sql;\n    }\n\n    // When this.options.bindAttributes exists then it is an insertQuery/upsertQuery\n    // So we insert the return bind direction and type\n    if (this.options.outBindAttributes && (Array.isArray(parameters) || _.isPlainObject(parameters))) {\n      this._convertBindAttributes('outBindAttributes', oracledb);\n      outParameters.push(...Object.values(this.options.outBindAttributes));\n      // For upsertQuery we need to push the bindDef for isUpdate\n      if (this.isUpsertQuery()) {\n        outParameters.push({ dir: oracledb.BIND_OUT });\n      }\n    }\n\n    this.bindParameters = outParameters;\n    // construct input binds from parameters for single row insert execute call\n    // ex: [3, 4,...]\n    if (Array.isArray(parameters) || _.isPlainObject(parameters)) {\n      if (this.options.executeMany) {\n        // Constructing BindDefs for ExecuteMany call\n        // Building the bindDef for in and out binds\n        this._convertBindAttributes('inbindAttributes', oracledb);\n        bindDef.push(...Object.values(this.options.inbindAttributes));\n        bindDef.push(...outParameters);\n        this.bindParameters = parameters;\n      } else if (this.isRawQuery()) {\n        this.bindParameters = parameters;\n      } else {\n        Object.values(parameters).forEach(value => {\n          bindParameters.push(value);\n        });\n        bindParameters.push(...outParameters);\n        Object.assign(this.bindParameters, bindParameters);\n      }\n    }\n\n    // TRANSACTION SUPPORT\n    if (this.sql.startsWith('BEGIN TRANSACTION')) {\n      this.autocommit = false;\n      return Promise.resolve();\n    }\n    if (this.sql.startsWith('SET AUTOCOMMIT ON')) {\n      this.autocommit = true;\n      return Promise.resolve();\n    }\n    if (this.sql.startsWith('SET AUTOCOMMIT OFF')) {\n      this.autocommit = false;\n      return Promise.resolve();\n    }\n    if (this.sql.startsWith('DECLARE x NUMBER')) {\n      // Calling a stored procedure for bulkInsert with NO attributes, returns nothing\n      if (this.autoCommit === undefined) {\n        if (this.connection.uuid) {\n          this.autoCommit = false;\n        } else {\n          this.autoCommit = true;\n        }\n      }\n\n      try {\n        await this.connection.execute(this.sql, this.bindParameters, { autoCommit: this.autoCommit });\n        return Object.create(null);\n      } catch (error) {\n        throw this.formatError(error);\n      } finally {\n        complete();\n      }\n    }\n    if (this.sql.startsWith('BEGIN')) {\n      // Call to stored procedures - BEGIN TRANSACTION has been treated before\n      if (this.autoCommit === undefined) {\n        if (this.connection.uuid) {\n          this.autoCommit = false;\n        } else {\n          this.autoCommit = true;\n        }\n      }\n\n      try {\n        const result = await this.connection.execute(this.sql, this.bindParameters, {\n          outFormat: this.outFormat,\n          autoCommit: this.autoCommit\n        });\n        if (!Array.isArray(result.outBinds)) {\n          return [result.outBinds];\n        }\n        return result.outBinds;\n      } catch (error) {\n        throw this.formatError(error);\n      } finally {\n        complete();\n      }\n    }\n    if (this.sql.startsWith('COMMIT TRANSACTION')) {\n      try {\n        await this.connection.commit();\n        return Object.create(null);\n      } catch (error) {\n        throw this.formatError(error);\n      } finally {\n        complete();\n      }\n    }\n    if (this.sql.startsWith('ROLLBACK TRANSACTION')) {\n      try {\n        await this.connection.rollback();\n        return Object.create(null);\n      } catch (error) {\n        throw this.formatError(error);\n      } finally {\n        complete();\n      }\n    }\n    if (this.sql.startsWith('SET TRANSACTION')) {\n      try {\n        await this.connection.execute(this.sql, [], { autoCommit: false });\n        return Object.create(null);\n      } catch (error) {\n        throw this.formatError(error);\n      } finally {\n        complete();\n      }\n    }\n    // QUERY SUPPORT\n    // As Oracle does everything in transaction, if autoCommit is not defined, we set it to true\n    if (this.autoCommit === undefined) {\n      if (this.connection.uuid) {\n        this.autoCommit = false;\n      } else {\n        this.autoCommit = true;\n      }\n    }\n\n    // inbind parameters added byname. merge them\n    if ('inputParameters' in this.options && this.options.inputParameters !== null) {\n      Object.assign(this.bindParameters, this.options.inputParameters);\n    }\n    const execOpts = this.getExecOptions();\n    if (this.options.executeMany && bindDef.length > 0) {\n      execOpts.bindDefs = bindDef;\n    }\n    const executePromise = this.options.executeMany ? this.connection.executeMany(this.sql, this.bindParameters, execOpts) : this.connection.execute(this.sql, this.bindParameters, execOpts);\n    try {\n      const result = await executePromise;\n      return this.formatResults(result);\n    } catch (error) {\n      throw this.formatError(error);\n    } finally {\n      complete();\n    }\n  }\n\n  /**\n * The parameters to query.run function are built here\n *\n * @param {string} sql\n * @param {Array} values\n * @param {string} dialect\n */\n  static formatBindParameters(sql, values, dialect) {\n\n    const replacementFunc = (match, key, values) => {\n      if (values[key] !== undefined) {\n        return `:${key}`;\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n\n    return [sql, values];\n  }\n\n  /**\n   * Building the attribute map by matching the column names received\n   * from DB and the one in rawAttributes\n   * to sequelize format\n   *\n   * @param {object} attrsMap\n   * @param {object} rawAttributes\n   * @private\n   */\n  _getAttributeMap(attrsMap, rawAttributes) {\n    attrsMap = Object.assign(attrsMap, _.reduce(rawAttributes, (mp, _, key) => {\n      const catalogKey = this.sequelize.queryInterface.queryGenerator.getCatalogName(key);\n      mp[catalogKey] = key;\n      return mp;\n    }, {}));\n  }\n\n  /**\n   * Process rows received from the DB.\n   * Use parse function to parse the returned value\n   * to sequelize format\n   *\n   * @param {Array} rows\n   * @private\n   */\n  _processRows(rows) {\n    let result = rows;\n    let attrsMap = {};\n\n    // When quoteIdentifiers is false we need to map the DB column names\n    // To the one in attribute list\n    if (this.sequelize.options.quoteIdentifiers === false) {\n      // Building the attribute map from this.options.attributes\n      // Needed in case of an aggregate function\n      attrsMap = _.reduce(this.options.attributes, (mp, v) => {\n        // Aggregate function is of form\n        // Fn {fn: 'min', min}, so we have the name in index one of the object\n        if (typeof v === 'object') {\n          v = v[1];\n        }\n        const catalogv = this.sequelize.queryInterface.queryGenerator.getCatalogName(v);\n        mp[catalogv] = v;\n        return mp;\n      }, {});\n\n\n      // Building the attribute map by matching the column names received\n      // from DB and the one in model.rawAttributes\n      if (this.model) {\n        this._getAttributeMap(attrsMap, this.model.rawAttributes);\n      }\n\n      // If aliasesmapping exists we update the attribute map\n      if (this.options.aliasesMapping) {\n        const obj = Object.fromEntries(this.options.aliasesMapping);\n        rows = rows\n          .map(row => _.toPairs(row)\n            .reduce((acc, [key, value]) => {\n              const mapping = Object.values(obj).find(element => {\n                const catalogElement = this.sequelize.queryInterface.queryGenerator.getCatalogName(element);\n                return catalogElement === key;\n              });\n              if (mapping)\n                acc[mapping || key] = value;\n              return acc;\n            }, {})\n          );\n      }\n\n      // Modify the keys into the format that sequelize expects\n      result = rows.map(row => {\n        return _.mapKeys(row, (value, key) => {\n          const targetAttr = attrsMap[key];\n          if (typeof targetAttr === 'string' && targetAttr !== key) {\n            return targetAttr;\n          }\n          return key;\n        });\n      });\n    }\n\n    // We parse the value received from the DB based on its datatype\n    if (this.model) {\n      result = result.map(row => {\n        return _.mapValues(row, (value, key) => {\n          if (this.model.rawAttributes[key] && this.model.rawAttributes[key].type) {\n            let typeid = this.model.rawAttributes[key].type.toLocaleString();\n            if (this.model.rawAttributes[key].type.key === 'JSON') {\n              value = JSON.parse(value);\n            }\n            // For some types, the \"name\" of the type is returned with the length, we remove it\n            // For Boolean we skip this because BOOLEAN is mapped to CHAR(1) and we dont' want to\n            // remove the (1) for BOOLEAN\n            if (typeid.indexOf('(') > -1 && this.model.rawAttributes[key].type.key !== 'BOOLEAN') {\n              typeid = typeid.substr(0, typeid.indexOf('('));\n            }\n            const parse = parserStore.get(typeid);\n            if (value !== null & !!parse) {\n              value = parse(value);\n            }\n          }\n          return value;\n        });\n      });\n    }\n\n    return result;\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   * Example:\n   * Oracle format :\n   * { rows: //All rows\n     [ [ 'Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production' ],\n       [ 'PL/SQL Release 11.2.0.1.0 - Production' ],\n       [ 'CORE\\t11.2.0.1.0\\tProduction' ],\n       [ 'TNS for 64-bit Windows: Version 11.2.0.1.0 - Production' ],\n       [ 'NLSRTL Version 11.2.0.1.0 - Production' ] ],\n    resultSet: undefined,\n    outBinds: undefined, //Used for dbms_put.line\n    rowsAffected: undefined, //Number of rows affected\n    metaData: [ { name: 'BANNER' } ] }\n  *\n  * @param {Array} data - The result of the query execution.\n  */\n  formatResults(data) {\n    let result = this.instance;\n    if (this.isInsertQuery(data)) {\n      let insertData;\n      if (data.outBinds) {\n        const keys = Object.keys(this.options.outBindAttributes);\n        insertData = data.outBinds;\n        // For one row insert out bind array is 1D array\n        // we convert it to 2D array for uniformity\n        if (this.instance) {\n          insertData = [insertData];\n        }\n        // Mapping the bind parameter to their values\n        const res = insertData.map(row =>{\n          const obj = {};\n          row.forEach((element, index) =>{\n            obj[keys[index]] = element[0];\n          });\n          return obj;\n        });\n        insertData = res;\n        // For bulk insert this.insert is undefined\n        // we map result to res, for one row insert\n        // result needs to be this.instance\n        if (!this.instance) {\n          result = res;\n        }\n      }\n      this.handleInsertQuery(insertData);\n      return [result, data.rowsAffected];\n    }\n    if (this.isShowTablesQuery()) {\n      result = this.handleShowTablesQuery(data.rows);\n    } else if (this.isDescribeQuery()) {\n      result = {};\n      // Getting the table name on which we are doing describe query\n      const table = Object.keys(this.sequelize.models);\n      const modelAttributes = {};\n      // Get the model raw attributes\n      if (this.sequelize.models && table.length > 0) {\n        this._getAttributeMap(modelAttributes, this.sequelize.models[table[0]].rawAttributes);\n      }\n      data.rows.forEach(_result => {\n        if (_result.Default) {\n          _result.Default = _result.Default.replace(\"('\", '')\n            .replace(\"')\", '')\n            .replace(/'/g, ''); /* jshint ignore: line */\n        }\n\n        if (!(modelAttributes[_result.COLUMN_NAME] in result)) {\n          let key = modelAttributes[_result.COLUMN_NAME];\n          if (!key) {\n            key = _result.COLUMN_NAME;\n          }\n\n          result[key] = {\n            type: _result.DATA_TYPE.toUpperCase(),\n            allowNull: _result.NULLABLE === 'N' ? false : true,\n            defaultValue: undefined,\n            primaryKey: _result.CONSTRAINT_TYPE === 'P'\n          };\n        }\n      });\n    } else if (this.isShowIndexesQuery()) {\n      result = this.handleShowIndexesQuery(data.rows);\n    } else if (this.isSelectQuery()) {\n      const rows = data.rows;\n      const result = this._processRows(rows);\n      return this.handleSelectQuery(result);\n    } else if (this.isCallQuery()) {\n      result = data.rows[0];\n    } else if (this.isUpdateQuery()) {\n      result = [result, data.rowsAffected];\n    } else if (this.isBulkUpdateQuery()) {\n      result = data.rowsAffected;\n    } else if (this.isBulkDeleteQuery()) {\n      result = data.rowsAffected;\n    } else if (this.isVersionQuery()) {\n      const version = data.rows[0].VERSION_FULL;\n      if (version) {\n        const versions = version.split('.');\n        result = `${versions[0]}.${versions[1]}.${versions[2]}`;\n      } else {\n        result = '0.0.0';\n      }\n    } else if (this.isForeignKeysQuery()) {\n      result = data.rows;\n    } else if (this.isUpsertQuery()) {\n      // Upsert Query, will return nothing\n      data = data.outBinds;\n      const keys = Object.keys(this.options.outBindAttributes);\n      const obj = {};\n      for (const k in keys) {\n        obj[keys[k]] = data[k];\n      }\n      obj.isUpdate = data[data.length - 1];\n      data = obj;\n      result = [{ isNewRecord: data.isUpdate, value: data }, data.isUpdate == 0];\n    } else if (this.isShowConstraintsQuery()) {\n      result = this.handleShowConstraintsQuery(data);\n    } else if (this.isRawQuery()) {\n      // If data.rows exists then it is a select query\n      // Hence we would have two components\n      // metaData and rows and we return them\n      // as [data.rows, data.metaData]\n      // Else it is result of update/upsert/insert query\n      // and it has no rows so we return [data, data]\n      if (data && data.rows) {\n        return [data.rows, data.metaData];\n      }\n      return [data, data];\n    }\n\n    return result;\n  }\n\n  handleShowConstraintsQuery(data) {\n    // Convert snake_case keys to camelCase as its generated by stored procedure\n    return data.rows.map(result => {\n      const constraint = {};\n      for (const key in result) {\n        constraint[_.camelCase(key)] = result[key].toLowerCase();\n      }\n      return constraint;\n    });\n  }\n\n  handleShowTablesQuery(results) {\n    return results.map(resultSet => {\n      return {\n        tableName: resultSet.TABLE_NAME,\n        schema: resultSet.TABLE_SCHEMA\n      };\n    });\n  }\n\n  formatError(err) {\n    let match;\n    // ORA-00001: unique constraint (USER.XXXXXXX) violated\n    match = err.message.match(/unique constraint ([\\s\\S]*) violated/);\n    if (match && match.length > 1) {\n      match[1] = match[1].replace('(', '').replace(')', '').split('.')[1]; // As we get (SEQUELIZE.UNIQNAME), we replace to have UNIQNAME\n      const errors = [];\n      let fields = [],\n        message = 'Validation error',\n        uniqueKey = null;\n\n      if (this.model) {\n        const uniqueKeys = Object.keys(this.model.uniqueKeys);\n\n        const currKey = uniqueKeys.find(key => {\n          // We check directly AND with quotes -> \"a\"\" === a || \"a\" === \"a\"\n          return key.toUpperCase() === match[1].toUpperCase() || key.toUpperCase() === `\"${match[1].toUpperCase()}\"`;\n        });\n\n        if (currKey) {\n          uniqueKey = this.model.uniqueKeys[currKey];\n          fields = uniqueKey.fields;\n        }\n\n        if (uniqueKey && !!uniqueKey.msg) {\n          message = uniqueKey.msg;\n        }\n\n        fields.forEach(field => {\n          errors.push(\n            new SequelizeErrors.ValidationErrorItem(\n              this.getUniqueConstraintErrorMessage(field),\n              'unique violation',\n              field,\n              null\n            )\n          );\n        });\n      }\n\n      return new SequelizeErrors.UniqueConstraintError({\n        message,\n        errors,\n        err,\n        fields\n      });\n    }\n\n    // ORA-02291: integrity constraint (string.string) violated - parent key not found / ORA-02292: integrity constraint (string.string) violated - child record found\n    match = err.message.match(/ORA-02291/) || err.message.match(/ORA-02292/);\n    if (match && match.length > 0) {\n      return new SequelizeErrors.ForeignKeyConstraintError({\n        fields: null,\n        index: match[1],\n        parent: err\n      });\n    }\n\n    // ORA-02443: Cannot drop constraint  - nonexistent constraint\n    match = err.message.match(/ORA-02443/);\n    if (match && match.length > 0) {\n      return new SequelizeErrors.UnknownConstraintError(match[1]);\n    }\n\n    return new SequelizeErrors.DatabaseError(err);\n  }\n\n  isShowIndexesQuery() {\n    return this.sql.indexOf('SELECT i.index_name,i.table_name, i.column_name, u.uniqueness') > -1;\n  }\n\n  isSelectCountQuery() {\n    return this.sql.toUpperCase().indexOf('SELECT COUNT(') > -1;\n  }\n\n  handleShowIndexesQuery(data) {\n    const acc = [];\n\n    // We first treat the datas\n    data.forEach(indexRecord => {\n      // We create the object\n      if (!acc[indexRecord.INDEX_NAME]) {\n        acc[indexRecord.INDEX_NAME] = {\n          unique: indexRecord.UNIQUENESS === 'UNIQUE' ? true : false,\n          primary: indexRecord.CONSTRAINT_TYPE === 'P',\n          name: indexRecord.INDEX_NAME.toLowerCase(),\n          tableName: indexRecord.TABLE_NAME.toLowerCase(),\n          type: undefined\n        };\n        acc[indexRecord.INDEX_NAME].fields = [];\n      }\n\n      // We create the fields\n      acc[indexRecord.INDEX_NAME].fields.push({\n        attribute: indexRecord.COLUMN_NAME,\n        length: undefined,\n        order: indexRecord.DESCEND,\n        collate: undefined\n      });\n    });\n\n    const returnIndexes = [];\n    const accKeys = Object.keys(acc);\n    for (const accKey of accKeys) {\n      const columns = {};\n      columns.fields = acc[accKey].fields;\n      // We are generating index field name in the format sequelize expects\n      // to avoid creating a unique index on auto-generated index name\n      if (acc[accKey].name.match(/sys_c[0-9]*/)) {\n        acc[accKey].name = Utils.nameIndex(columns, acc[accKey].tableName).name;\n      }\n      returnIndexes.push(acc[accKey]);\n    }\n    return returnIndexes;\n  }\n\n  handleInsertQuery(results, metaData) {\n    if (this.instance && results.length > 0) {\n      if ('pkReturnVal' in results[0]) {\n        // The PK of the table is a reserved word (ex : uuid), we have to change the name in the result for the model to find the value correctly\n        results[0][this.model.primaryKeyAttribute] = results[0].pkReturnVal;\n        delete results[0].pkReturnVal;\n      }\n      // add the inserted row id to the instance\n      const autoIncrementField = this.model.autoIncrementAttribute;\n      let autoIncrementFieldAlias = null,\n        id = null;\n\n      if (\n        Object.prototype.hasOwnProperty.call(this.model.rawAttributes, autoIncrementField) &&\n        this.model.rawAttributes[autoIncrementField].field !== undefined\n      )\n        autoIncrementFieldAlias = this.model.rawAttributes[autoIncrementField].field;\n\n      id = id || results && results[0][this.getInsertIdField()];\n      id = id || metaData && metaData[this.getInsertIdField()];\n      id = id || results && results[0][autoIncrementField];\n      id = id || autoIncrementFieldAlias && results && results[0][autoIncrementFieldAlias];\n\n      this.instance[autoIncrementField] = id;\n    }\n  }\n}\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/parserStore.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/parserStore.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-"use strict";
-const stores = /* @__PURE__ */ new Map();
-module.exports = (dialect) => {
-  if (!stores.has(dialect)) {
-    stores.set(dialect, /* @__PURE__ */ new Map());
-  }
-  return {
-    clear() {
-      stores.get(dialect).clear();
-    },
-    refresh(dataType) {
-      for (const type of dataType.types[dialect]) {
-        stores.get(dialect).set(type, dataType.parse);
-      }
-    },
-    get(type) {
-      return stores.get(dialect).get(type);
-    }
-  };
-};
-//# sourceMappingURL=parserStore.js.map
Index: ckend/node_modules/sequelize/lib/dialects/parserStore.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/parserStore.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/dialects/parserStore.js"],
-  "sourcesContent": ["'use strict';\n\nconst stores = new Map();\n\nmodule.exports = dialect => {\n  if (!stores.has(dialect)) {\n    stores.set(dialect, new Map());\n  }\n\n  return {\n    clear() {\n      stores.get(dialect).clear();\n    },\n    refresh(dataType) {\n      for (const type of dataType.types[dialect]) {\n        stores.get(dialect).set(type, dataType.parse);\n      }\n    },\n    get(type) {\n      return stores.get(dialect).get(type);\n    }\n  };\n};\n"],
-  "mappings": ";AAEA,MAAM,SAAS,oBAAI;AAEnB,OAAO,UAAU,aAAW;AAC1B,MAAI,CAAC,OAAO,IAAI,UAAU;AACxB,WAAO,IAAI,SAAS,oBAAI;AAAA;AAG1B,SAAO;AAAA,IACL,QAAQ;AACN,aAAO,IAAI,SAAS;AAAA;AAAA,IAEtB,QAAQ,UAAU;AAChB,iBAAW,QAAQ,SAAS,MAAM,UAAU;AAC1C,eAAO,IAAI,SAAS,IAAI,MAAM,SAAS;AAAA;AAAA;AAAA,IAG3C,IAAI,MAAM;AACR,aAAO,OAAO,IAAI,SAAS,IAAI;AAAA;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,244 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("connection:pg");
-const sequelizeErrors = require("../../errors");
-const semver = require("semver");
-const dataTypes = require("../../data-types");
-const momentTz = require("moment-timezone");
-const { promisify } = require("util");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 5432;
-    super(dialect, sequelize);
-    const pgLib = this._loadDialectModule("pg");
-    this.lib = this.sequelize.config.native ? pgLib.native : pgLib;
-    this._clearDynamicOIDs();
-    this._clearTypeParser();
-    this.refreshTypeParser(dataTypes.postgres);
-  }
-  _refreshTypeParser(dataType) {
-    const arrayParserBuilder = (parser2) => {
-      return (value) => this.lib.types.arrayParser.create(value, parser2).parse();
-    };
-    const rangeParserBuilder = (parser2) => {
-      return (value) => dataType.parse(value, { parser: parser2 });
-    };
-    if (dataType.key.toLowerCase() === "range") {
-      for (const name in this.nameOidMap) {
-        const entry = this.nameOidMap[name];
-        if (!entry.rangeOid)
-          continue;
-        const rangeParser = rangeParserBuilder(this.getTypeParser(entry.oid));
-        const arrayRangeParser = arrayParserBuilder(rangeParser);
-        this.oidParserMap.set(entry.rangeOid, rangeParser);
-        if (!entry.arrayRangeOid)
-          continue;
-        this.oidParserMap.set(entry.arrayRangeOid, arrayRangeParser);
-      }
-      return;
-    }
-    const parser = (value) => dataType.parse(value);
-    const arrayParser = arrayParserBuilder(parser);
-    if (dataType.key.toLowerCase() === "enum") {
-      this.enumOids.oids.forEach((oid) => {
-        this.oidParserMap.set(oid, parser);
-      });
-      this.enumOids.arrayOids.forEach((arrayOid) => {
-        this.oidParserMap.set(arrayOid, arrayParser);
-      });
-      return;
-    }
-    dataType.types.postgres.forEach((name) => {
-      if (!this.nameOidMap[name])
-        return;
-      this.oidParserMap.set(this.nameOidMap[name].oid, parser);
-      if (!this.nameOidMap[name].arrayOid)
-        return;
-      this.oidParserMap.set(this.nameOidMap[name].arrayOid, arrayParser);
-    });
-  }
-  _clearTypeParser() {
-    this.oidParserMap = /* @__PURE__ */ new Map();
-  }
-  getTypeParser(oid, ...args) {
-    if (this.oidParserMap.get(oid))
-      return this.oidParserMap.get(oid);
-    return this.lib.types.getTypeParser(oid, ...args);
-  }
-  async connect(config) {
-    config.user = config.username;
-    const connectionConfig = _.pick(config, [
-      "user",
-      "password",
-      "host",
-      "database",
-      "port"
-    ]);
-    connectionConfig.types = {
-      getTypeParser: ConnectionManager.prototype.getTypeParser.bind(this)
-    };
-    if (config.dialectOptions) {
-      _.merge(connectionConfig, _.pick(config.dialectOptions, [
-        "application_name",
-        "ssl",
-        "client_encoding",
-        "binary",
-        "keepAlive",
-        "statement_timeout",
-        "query_timeout",
-        "connectionTimeoutMillis",
-        "idle_in_transaction_session_timeout",
-        "lock_timeout",
-        "options",
-        "stream"
-      ]));
-    }
-    const connection = await new Promise((resolve, reject) => {
-      let responded = false;
-      const connection2 = new this.lib.Client(connectionConfig);
-      const parameterHandler = (message) => {
-        switch (message.parameterName) {
-          case "server_version":
-            if (this.sequelize.options.databaseVersion === 0) {
-              const version = semver.coerce(message.parameterValue).version;
-              this.sequelize.options.databaseVersion = semver.valid(version) ? version : this.dialect.defaultVersion;
-            }
-            break;
-          case "standard_conforming_strings":
-            connection2["standard_conforming_strings"] = message.parameterValue;
-            break;
-        }
-      };
-      const endHandler = () => {
-        debug("connection timeout");
-        if (!responded) {
-          reject(new sequelizeErrors.ConnectionTimedOutError(new Error("Connection timed out")));
-        }
-      };
-      connection2.once("end", endHandler);
-      if (!this.sequelize.config.native) {
-        connection2.connection.on("parameterStatus", parameterHandler);
-      }
-      connection2.connect((err) => {
-        responded = true;
-        if (!this.sequelize.config.native) {
-          connection2.connection.removeListener("parameterStatus", parameterHandler);
-        }
-        if (err) {
-          if (err.code) {
-            switch (err.code) {
-              case "ECONNREFUSED":
-                reject(new sequelizeErrors.ConnectionRefusedError(err));
-                break;
-              case "ENOTFOUND":
-                reject(new sequelizeErrors.HostNotFoundError(err));
-                break;
-              case "EHOSTUNREACH":
-                reject(new sequelizeErrors.HostNotReachableError(err));
-                break;
-              case "EINVAL":
-                reject(new sequelizeErrors.InvalidConnectionError(err));
-                break;
-              default:
-                reject(new sequelizeErrors.ConnectionError(err));
-                break;
-            }
-          } else {
-            reject(new sequelizeErrors.ConnectionError(err));
-          }
-        } else {
-          debug("connection acquired");
-          connection2.removeListener("end", endHandler);
-          resolve(connection2);
-        }
-      });
-    });
-    connection.on("error", (error) => {
-      connection._invalid = true;
-      debug(`connection error ${error.code || error.message}`);
-      this.pool.destroy(connection);
-    });
-    let query = "";
-    if (this.sequelize.options.standardConformingStrings !== false && connection["standard_conforming_strings"] !== "on") {
-      query += "SET standard_conforming_strings=on;";
-    }
-    if (this.sequelize.options.clientMinMessages !== void 0) {
-      console.warn('Usage of "options.clientMinMessages" is deprecated and will be removed in v7.');
-      console.warn('Please use the sequelize option "dialectOptions.clientMinMessages" instead.');
-    }
-    if (!(config.dialectOptions && config.dialectOptions.clientMinMessages && config.dialectOptions.clientMinMessages.toLowerCase() === "ignore" || this.sequelize.options.clientMinMessages === false)) {
-      const clientMinMessages = config.dialectOptions && config.dialectOptions.clientMinMessages || this.sequelize.options.clientMinMessages || "warning";
-      query += `SET client_min_messages TO ${clientMinMessages};`;
-    }
-    if (!this.sequelize.config.keepDefaultTimezone) {
-      const isZone = !!momentTz.tz.zone(this.sequelize.options.timezone);
-      if (isZone) {
-        query += `SET TIME ZONE '${this.sequelize.options.timezone}';`;
-      } else {
-        query += `SET TIME ZONE INTERVAL '${this.sequelize.options.timezone}' HOUR TO MINUTE;`;
-      }
-    }
-    if (query) {
-      await connection.query(query);
-    }
-    if (Object.keys(this.nameOidMap).length === 0 && this.enumOids.oids.length === 0 && this.enumOids.arrayOids.length === 0) {
-      await this._refreshDynamicOIDs(connection);
-    }
-    return connection;
-  }
-  async disconnect(connection) {
-    if (connection._ending) {
-      debug("connection tried to disconnect but was already at ENDING state");
-      return;
-    }
-    return await promisify((callback) => connection.end(callback))();
-  }
-  validate(connection) {
-    return !connection._invalid && !connection._ending;
-  }
-  async _refreshDynamicOIDs(connection) {
-    const databaseVersion = this.sequelize.options.databaseVersion;
-    const supportedVersion = "8.3.0";
-    if ((databaseVersion && semver.gte(databaseVersion, supportedVersion)) === false) {
-      return;
-    }
-    const results = await (connection || this.sequelize).query("WITH ranges AS (  SELECT pg_range.rngtypid, pg_type.typname AS rngtypname,         pg_type.typarray AS rngtyparray, pg_range.rngsubtype    FROM pg_range LEFT OUTER JOIN pg_type ON pg_type.oid = pg_range.rngtypid)SELECT pg_type.typname, pg_type.typtype, pg_type.oid, pg_type.typarray,       ranges.rngtypname, ranges.rngtypid, ranges.rngtyparray  FROM pg_type LEFT OUTER JOIN ranges ON pg_type.oid = ranges.rngsubtype WHERE (pg_type.typtype IN('b', 'e'));");
-    let result = Array.isArray(results) ? results.pop() : results;
-    if (Array.isArray(result)) {
-      if (result[0].command === "SET") {
-        result = result.pop();
-      }
-    }
-    const newNameOidMap = {};
-    const newEnumOids = { oids: [], arrayOids: [] };
-    for (const row of result.rows) {
-      if (row.typtype === "e") {
-        newEnumOids.oids.push(row.oid);
-        if (row.typarray)
-          newEnumOids.arrayOids.push(row.typarray);
-        continue;
-      }
-      newNameOidMap[row.typname] = { oid: row.oid };
-      if (row.typarray)
-        newNameOidMap[row.typname].arrayOid = row.typarray;
-      if (row.rngtypid) {
-        newNameOidMap[row.typname].rangeOid = row.rngtypid;
-        if (row.rngtyparray)
-          newNameOidMap[row.typname].arrayRangeOid = row.rngtyparray;
-      }
-    }
-    this.nameOidMap = newNameOidMap;
-    this.enumOids = newEnumOids;
-    this.refreshTypeParser(dataTypes.postgres);
-  }
-  _clearDynamicOIDs() {
-    this.nameOidMap = {};
-    this.enumOids = { oids: [], arrayOids: [] };
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst { logger } = require('../../utils/logger');\nconst debug = logger.debugContext('connection:pg');\nconst sequelizeErrors = require('../../errors');\nconst semver = require('semver');\nconst dataTypes = require('../../data-types');\nconst momentTz = require('moment-timezone');\nconst { promisify } = require('util');\n\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 5432;\n    super(dialect, sequelize);\n\n    const pgLib = this._loadDialectModule('pg');\n    this.lib = this.sequelize.config.native ? pgLib.native : pgLib;\n\n    this._clearDynamicOIDs();\n    this._clearTypeParser();\n    this.refreshTypeParser(dataTypes.postgres);\n  }\n\n  // Expose this as a method so that the parsing may be updated when the user has added additional, custom types\n  _refreshTypeParser(dataType) {\n    const arrayParserBuilder = parser => {\n      return value => this.lib.types.arrayParser.create(value, parser).parse();\n    };\n    const rangeParserBuilder = parser => {\n      return value => dataType.parse(value, { parser });\n    };\n\n    // Set range parsers\n    if (dataType.key.toLowerCase() === 'range') {\n      for (const name in this.nameOidMap) {\n        const entry = this.nameOidMap[name];\n        if (! entry.rangeOid) continue;\n\n        const rangeParser = rangeParserBuilder(this.getTypeParser(entry.oid));\n        const arrayRangeParser = arrayParserBuilder(rangeParser);\n\n        this.oidParserMap.set(entry.rangeOid, rangeParser);\n        if (! entry.arrayRangeOid) continue;\n        this.oidParserMap.set(entry.arrayRangeOid, arrayRangeParser);\n      }\n      return;\n    }\n\n    // Create parsers for normal or enum data types\n    const parser = value => dataType.parse(value);\n    const arrayParser = arrayParserBuilder(parser);\n\n    // Set enum parsers\n    if (dataType.key.toLowerCase() === 'enum') {\n      this.enumOids.oids.forEach(oid => {\n        this.oidParserMap.set(oid, parser);\n      });\n      this.enumOids.arrayOids.forEach(arrayOid => {\n        this.oidParserMap.set(arrayOid, arrayParser);\n      });\n      return;\n    }\n\n    // Set parsers for normal data types\n    dataType.types.postgres.forEach(name => {\n      if (! this.nameOidMap[name]) return;\n      this.oidParserMap.set(this.nameOidMap[name].oid, parser);\n\n      if (! this.nameOidMap[name].arrayOid) return;\n      this.oidParserMap.set(this.nameOidMap[name].arrayOid, arrayParser);\n    });\n  }\n\n  _clearTypeParser() {\n    this.oidParserMap = new Map();\n  }\n\n  getTypeParser(oid, ...args) {\n    if (this.oidParserMap.get(oid)) return this.oidParserMap.get(oid);\n\n    return this.lib.types.getTypeParser(oid, ...args);\n  }\n\n  async connect(config) {\n    config.user = config.username;\n    const connectionConfig = _.pick(config, [\n      'user', 'password', 'host', 'database', 'port'\n    ]);\n\n    connectionConfig.types = {\n      getTypeParser: ConnectionManager.prototype.getTypeParser.bind(this)\n    };\n\n    if (config.dialectOptions) {\n      _.merge(connectionConfig,\n        _.pick(config.dialectOptions, [\n        // see [http://www.postgresql.org/docs/9.3/static/runtime-config-logging.html#GUC-APPLICATION-NAME]\n          'application_name',\n          // choose the SSL mode with the PGSSLMODE environment variable\n          // object format: [https://github.com/brianc/node-postgres/blob/ee19e74ffa6309c9c5e8e01746261a8f651661f8/lib/connection.js#L79]\n          // see also [http://www.postgresql.org/docs/9.3/static/libpq-ssl.html]\n          'ssl',\n          // In addition to the values accepted by the corresponding server,\n          // you can use \"auto\" to determine the right encoding from the\n          // current locale in the client (LC_CTYPE environment variable on Unix systems)\n          'client_encoding',\n          // !! DO NOT SET THIS TO TRUE !!\n          // (unless you know what you're doing)\n          // see [http://www.postgresql.org/message-id/flat/bc9549a50706040852u27633f41ib1e6b09f8339d845@mail.gmail.com#bc9549a50706040852u27633f41ib1e6b09f8339d845@mail.gmail.com]\n          'binary',\n          // This should help with backends incorrectly considering idle clients to be dead and prematurely disconnecting them.\n          // this feature has been added in pg module v6.0.0, check pg/CHANGELOG.md\n          'keepAlive',\n          // Times out queries after a set time in milliseconds in the database end. Added in pg v7.3\n          'statement_timeout',\n          // Times out queries after a set time in milliseconds in client end, query would be still running in database end.\n          'query_timeout',\n          // Number of milliseconds to wait for connection, default is no timeout.\n          'connectionTimeoutMillis',\n          // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds. Added in pg v7.17.0 only supported in postgres >= 10\n          'idle_in_transaction_session_timeout',\n          // Maximum wait time for lock requests in milliseconds. Added in pg v8.8.0.\n          'lock_timeout',\n          // Postgres allows additional session variables to be configured in the connection string in the `options` param.\n          // see [https://www.postgresql.org/docs/14/libpq-connect.html#LIBPQ-CONNECT-OPTIONS]\n          'options',\n          // The stream acts as a user-defined socket factory for postgres. In particular, it enables IAM autentication\n          // with Google Cloud SQL. see: https://github.com/sequelize/sequelize/issues/16001#issuecomment-1561136388\n          'stream'\n        ]));\n    }\n\n    const connection = await new Promise((resolve, reject) => {\n      let responded = false;\n\n      const connection = new this.lib.Client(connectionConfig);\n\n      const parameterHandler = message => {\n        switch (message.parameterName) {\n          case 'server_version':\n            if (this.sequelize.options.databaseVersion === 0) {\n              const version = semver.coerce(message.parameterValue).version;\n              this.sequelize.options.databaseVersion = semver.valid(version)\n                ? version\n                : this.dialect.defaultVersion;\n            }\n            break;\n          case 'standard_conforming_strings':\n            connection['standard_conforming_strings'] = message.parameterValue;\n            break;\n        }\n      };\n\n      const endHandler = () => {\n        debug('connection timeout');\n        if (!responded) {\n          reject(new sequelizeErrors.ConnectionTimedOutError(new Error('Connection timed out')));\n        }\n      };\n\n      // If we didn't ever hear from the client.connect() callback the connection timeout\n      // node-postgres does not treat this as an error since no active query was ever emitted\n      connection.once('end', endHandler);\n\n      if (!this.sequelize.config.native) {\n        // Receive various server parameters for further configuration\n        connection.connection.on('parameterStatus', parameterHandler);\n      }\n\n      connection.connect(err => {\n        responded = true;\n\n        if (!this.sequelize.config.native) {\n          // remove parameter handler\n          connection.connection.removeListener('parameterStatus', parameterHandler);\n        }\n\n        if (err) {\n          if (err.code) {\n            switch (err.code) {\n              case 'ECONNREFUSED':\n                reject(new sequelizeErrors.ConnectionRefusedError(err));\n                break;\n              case 'ENOTFOUND':\n                reject(new sequelizeErrors.HostNotFoundError(err));\n                break;\n              case 'EHOSTUNREACH':\n                reject(new sequelizeErrors.HostNotReachableError(err));\n                break;\n              case 'EINVAL':\n                reject(new sequelizeErrors.InvalidConnectionError(err));\n                break;\n              default:\n                reject(new sequelizeErrors.ConnectionError(err));\n                break;\n            }\n          } else {\n            reject(new sequelizeErrors.ConnectionError(err));\n          }\n        } else {\n          debug('connection acquired');\n          connection.removeListener('end', endHandler);\n          resolve(connection);\n        }\n      });\n    });\n\n    // Don't let a Postgres restart (or error) to take down the whole app\n    connection.on('error', error => {\n      connection._invalid = true;\n      debug(`connection error ${error.code || error.message}`);\n      this.pool.destroy(connection);\n    });\n\n    let query = '';\n\n    if (this.sequelize.options.standardConformingStrings !== false && connection['standard_conforming_strings'] !== 'on') {\n      // Disable escape characters in strings\n      // see https://github.com/sequelize/sequelize/issues/3545 (security issue)\n      // see https://www.postgresql.org/docs/current/static/runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS\n      query += 'SET standard_conforming_strings=on;';\n    }\n\n    if (this.sequelize.options.clientMinMessages !== undefined) {\n      console.warn('Usage of \"options.clientMinMessages\" is deprecated and will be removed in v7.');\n      console.warn('Please use the sequelize option \"dialectOptions.clientMinMessages\" instead.');\n    }\n\n    // Redshift dosen't support client_min_messages, use 'ignore' to skip this settings.\n    // If no option, the default value in sequelize is 'warning'\n    if ( !( config.dialectOptions && config.dialectOptions.clientMinMessages && config.dialectOptions.clientMinMessages.toLowerCase() === 'ignore' ||\n            this.sequelize.options.clientMinMessages === false ) ) {\n      const clientMinMessages = config.dialectOptions && config.dialectOptions.clientMinMessages || this.sequelize.options.clientMinMessages || 'warning';\n      query += `SET client_min_messages TO ${clientMinMessages};`;\n\n    }\n\n    if (!this.sequelize.config.keepDefaultTimezone) {\n      const isZone = !!momentTz.tz.zone(this.sequelize.options.timezone);\n      if (isZone) {\n        query += `SET TIME ZONE '${this.sequelize.options.timezone}';`;\n      } else {\n        query += `SET TIME ZONE INTERVAL '${this.sequelize.options.timezone}' HOUR TO MINUTE;`;\n      }\n    }\n\n    if (query) {\n      await connection.query(query);\n    }\n    if (Object.keys(this.nameOidMap).length === 0 &&\n      this.enumOids.oids.length === 0 &&\n      this.enumOids.arrayOids.length === 0) {\n      await this._refreshDynamicOIDs(connection);\n    }\n\n    return connection;\n  }\n\n  async disconnect(connection) {\n    if (connection._ending) {\n      debug('connection tried to disconnect but was already at ENDING state');\n      return;\n    }\n\n    return await promisify(callback => connection.end(callback))();\n  }\n\n  validate(connection) {\n    return !connection._invalid && !connection._ending;\n  }\n\n  async _refreshDynamicOIDs(connection) {\n    const databaseVersion = this.sequelize.options.databaseVersion;\n    const supportedVersion = '8.3.0';\n\n    // Check for supported version\n    if ( (databaseVersion && semver.gte(databaseVersion, supportedVersion)) === false) {\n      return;\n    }\n\n    const results = await (connection || this.sequelize).query(\n      'WITH ranges AS (' +\n      '  SELECT pg_range.rngtypid, pg_type.typname AS rngtypname,' +\n      '         pg_type.typarray AS rngtyparray, pg_range.rngsubtype' +\n      '    FROM pg_range LEFT OUTER JOIN pg_type ON pg_type.oid = pg_range.rngtypid' +\n      ')' +\n      'SELECT pg_type.typname, pg_type.typtype, pg_type.oid, pg_type.typarray,' +\n      '       ranges.rngtypname, ranges.rngtypid, ranges.rngtyparray' +\n      '  FROM pg_type LEFT OUTER JOIN ranges ON pg_type.oid = ranges.rngsubtype' +\n      ' WHERE (pg_type.typtype IN(\\'b\\', \\'e\\'));'\n    );\n\n    let result = Array.isArray(results) ? results.pop() : results;\n\n    // When searchPath is prepended then two statements are executed and the result is\n    // an array of those two statements. First one is the SET search_path and second is\n    // the SELECT query result.\n    if (Array.isArray(result)) {\n      if (result[0].command === 'SET') {\n        result = result.pop();\n      }\n    }\n\n    const newNameOidMap = {};\n    const newEnumOids = { oids: [], arrayOids: [] };\n\n    for (const row of result.rows) {\n      // Mapping enums, handled separatedly\n      if (row.typtype === 'e') {\n        newEnumOids.oids.push(row.oid);\n        if (row.typarray) newEnumOids.arrayOids.push(row.typarray);\n        continue;\n      }\n\n      // Mapping base types and their arrays\n      newNameOidMap[row.typname] = { oid: row.oid };\n      if (row.typarray) newNameOidMap[row.typname].arrayOid = row.typarray;\n\n      // Mapping ranges(of base types) and their arrays\n      if (row.rngtypid) {\n        newNameOidMap[row.typname].rangeOid = row.rngtypid;\n        if (row.rngtyparray) newNameOidMap[row.typname].arrayRangeOid = row.rngtyparray;\n      }\n    }\n\n    // Replace all OID mappings. Avoids temporary empty OID mappings.\n    this.nameOidMap = newNameOidMap;\n    this.enumOids = newEnumOids;\n\n    this.refreshTypeParser(dataTypes.postgres);\n  }\n\n  _clearDynamicOIDs() {\n    this.nameOidMap = {};\n    this.enumOids = { oids: [], arrayOids: [] };\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,442 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const wkx = require("wkx");
-module.exports = (BaseTypes) => {
-  const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "http://www.postgresql.org/docs/9.4/static/datatype.html");
-  function removeUnsupportedIntegerOptions(dataType) {
-    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {
-      warn(`PostgresSQL does not support '${dataType.key}' with LENGTH, UNSIGNED or ZEROFILL. Plain '${dataType.key}' will be used instead.`);
-      dataType._length = void 0;
-      dataType.options.length = void 0;
-      dataType._unsigned = void 0;
-      dataType._zerofill = void 0;
-    }
-  }
-  BaseTypes.UUID.types.postgres = ["uuid"];
-  BaseTypes.CIDR.types.postgres = ["cidr"];
-  BaseTypes.INET.types.postgres = ["inet"];
-  BaseTypes.MACADDR.types.postgres = ["macaddr"];
-  BaseTypes.TSVECTOR.types.postgres = ["tsvector"];
-  BaseTypes.JSON.types.postgres = ["json"];
-  BaseTypes.JSONB.types.postgres = ["jsonb"];
-  BaseTypes.TIME.types.postgres = ["time"];
-  class DATEONLY extends BaseTypes.DATEONLY {
-    _stringify(value, options) {
-      if (value === Infinity) {
-        return "Infinity";
-      }
-      if (value === -Infinity) {
-        return "-Infinity";
-      }
-      return super._stringify(value, options);
-    }
-    _sanitize(value, options) {
-      if ((!options || options && !options.raw) && value !== Infinity && value !== -Infinity) {
-        if (typeof value === "string") {
-          const lower = value.toLowerCase();
-          if (lower === "infinity") {
-            return Infinity;
-          }
-          if (lower === "-infinity") {
-            return -Infinity;
-          }
-        }
-        return super._sanitize(value);
-      }
-      return value;
-    }
-    static parse(value) {
-      if (value === "infinity") {
-        return Infinity;
-      }
-      if (value === "-infinity") {
-        return -Infinity;
-      }
-      return value;
-    }
-  }
-  BaseTypes.DATEONLY.types.postgres = ["date"];
-  class DECIMAL extends BaseTypes.DECIMAL {
-    static parse(value) {
-      return value;
-    }
-  }
-  BaseTypes.DECIMAL.types.postgres = ["numeric"];
-  class STRING extends BaseTypes.STRING {
-    toSql() {
-      if (this._binary) {
-        return "BYTEA";
-      }
-      return super.toSql();
-    }
-  }
-  BaseTypes.STRING.types.postgres = ["varchar"];
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      if (this._length) {
-        warn("PostgreSQL does not support TEXT with options. Plain `TEXT` will be used instead.");
-        this._length = void 0;
-      }
-      return "TEXT";
-    }
-  }
-  BaseTypes.TEXT.types.postgres = ["text"];
-  class CITEXT extends BaseTypes.CITEXT {
-    static parse(value) {
-      return value;
-    }
-  }
-  BaseTypes.CITEXT.types.postgres = ["citext"];
-  class CHAR extends BaseTypes.CHAR {
-    toSql() {
-      if (this._binary) {
-        return "BYTEA";
-      }
-      return super.toSql();
-    }
-  }
-  BaseTypes.CHAR.types.postgres = ["char", "bpchar"];
-  class BOOLEAN extends BaseTypes.BOOLEAN {
-    toSql() {
-      return "BOOLEAN";
-    }
-    _sanitize(value) {
-      if (value !== null && value !== void 0) {
-        if (Buffer.isBuffer(value) && value.length === 1) {
-          value = value[0];
-        }
-        if (typeof value === "string") {
-          return ["true", "t"].includes(value) ? true : ["false", "f"].includes(value) ? false : value;
-        }
-        if (typeof value === "number") {
-          return value === 1 ? true : value === 0 ? false : value;
-        }
-      }
-      return value;
-    }
-  }
-  BOOLEAN.parse = BOOLEAN.prototype._sanitize;
-  BaseTypes.BOOLEAN.types.postgres = ["bool"];
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return "TIMESTAMP WITH TIME ZONE";
-    }
-    validate(value) {
-      if (value !== Infinity && value !== -Infinity) {
-        return super.validate(value);
-      }
-      return true;
-    }
-    _stringify(value, options) {
-      if (value === Infinity) {
-        return "Infinity";
-      }
-      if (value === -Infinity) {
-        return "-Infinity";
-      }
-      return super._stringify(value, options);
-    }
-    _sanitize(value, options) {
-      if ((!options || options && !options.raw) && !(value instanceof Date) && !!value && value !== Infinity && value !== -Infinity) {
-        if (typeof value === "string") {
-          const lower = value.toLowerCase();
-          if (lower === "infinity") {
-            return Infinity;
-          }
-          if (lower === "-infinity") {
-            return -Infinity;
-          }
-        }
-        return new Date(value);
-      }
-      return value;
-    }
-  }
-  BaseTypes.DATE.types.postgres = ["timestamptz"];
-  class TINYINT extends BaseTypes.TINYINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  BaseTypes.TINYINT.types.postgres = ["int2"];
-  class SMALLINT extends BaseTypes.SMALLINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  BaseTypes.SMALLINT.types.postgres = ["int2"];
-  class INTEGER extends BaseTypes.INTEGER {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  INTEGER.parse = function parse(value) {
-    return parseInt(value, 10);
-  };
-  BaseTypes.INTEGER.types.postgres = ["int4"];
-  class BIGINT extends BaseTypes.BIGINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  BaseTypes.BIGINT.types.postgres = ["int8"];
-  class REAL extends BaseTypes.REAL {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  BaseTypes.REAL.types.postgres = ["float4"];
-  class DOUBLE extends BaseTypes.DOUBLE {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  BaseTypes.DOUBLE.types.postgres = ["float8"];
-  class FLOAT extends BaseTypes.FLOAT {
-    constructor(length, decimals) {
-      super(length, decimals);
-      if (this._decimals) {
-        warn("PostgreSQL does not support FLOAT with decimals. Plain `FLOAT` will be used instead.");
-        this._length = void 0;
-        this.options.length = void 0;
-        this._decimals = void 0;
-      }
-      if (this._unsigned) {
-        warn("PostgreSQL does not support FLOAT unsigned. `UNSIGNED` was removed.");
-        this._unsigned = void 0;
-      }
-      if (this._zerofill) {
-        warn("PostgreSQL does not support FLOAT zerofill. `ZEROFILL` was removed.");
-        this._zerofill = void 0;
-      }
-    }
-  }
-  delete FLOAT.parse;
-  class BLOB extends BaseTypes.BLOB {
-    toSql() {
-      if (this._length) {
-        warn("PostgreSQL does not support BLOB (BYTEA) with options. Plain `BYTEA` will be used instead.");
-        this._length = void 0;
-      }
-      return "BYTEA";
-    }
-    _hexify(hex) {
-      return `E'\\\\x${hex}'`;
-    }
-  }
-  BaseTypes.BLOB.types.postgres = ["bytea"];
-  class GEOMETRY extends BaseTypes.GEOMETRY {
-    toSql() {
-      let result = this.key;
-      if (this.type) {
-        result += `(${this.type}`;
-        if (this.srid) {
-          result += `,${this.srid}`;
-        }
-        result += ")";
-      }
-      return result;
-    }
-    static parse(value) {
-      const b = Buffer.from(value, "hex");
-      return wkx.Geometry.parse(b).toGeoJSON({ shortCrs: true });
-    }
-    _stringify(value, options) {
-      return `ST_GeomFromGeoJSON(${options.escape(JSON.stringify(value))})`;
-    }
-    _bindParam(value, options) {
-      return `ST_GeomFromGeoJSON(${options.bindParam(value)})`;
-    }
-  }
-  BaseTypes.GEOMETRY.types.postgres = ["geometry"];
-  class GEOGRAPHY extends BaseTypes.GEOGRAPHY {
-    toSql() {
-      let result = "GEOGRAPHY";
-      if (this.type) {
-        result += `(${this.type}`;
-        if (this.srid) {
-          result += `,${this.srid}`;
-        }
-        result += ")";
-      }
-      return result;
-    }
-    static parse(value) {
-      const b = Buffer.from(value, "hex");
-      return wkx.Geometry.parse(b).toGeoJSON({ shortCrs: true });
-    }
-    _stringify(value, options) {
-      return `ST_GeomFromGeoJSON(${options.escape(JSON.stringify(value))})`;
-    }
-    bindParam(value, options) {
-      return `ST_GeomFromGeoJSON(${options.bindParam(value)})`;
-    }
-  }
-  BaseTypes.GEOGRAPHY.types.postgres = ["geography"];
-  let hstore;
-  class HSTORE extends BaseTypes.HSTORE {
-    constructor() {
-      super();
-      if (!hstore) {
-        hstore = require("./hstore");
-      }
-    }
-    _value(value) {
-      if (!hstore) {
-        hstore = require("./hstore");
-      }
-      return hstore.stringify(value);
-    }
-    _stringify(value) {
-      return `'${this._value(value)}'`;
-    }
-    _bindParam(value, options) {
-      return options.bindParam(this._value(value));
-    }
-    static parse(value) {
-      if (!hstore) {
-        hstore = require("./hstore");
-      }
-      return hstore.parse(value);
-    }
-  }
-  HSTORE.prototype.escape = false;
-  BaseTypes.HSTORE.types.postgres = ["hstore"];
-  class RANGE extends BaseTypes.RANGE {
-    _value(values, options) {
-      if (!Array.isArray(values)) {
-        return this.options.subtype.stringify(values, options);
-      }
-      const valueInclusivity = [true, false];
-      const valuesStringified = values.map((value, index) => {
-        if (_.isObject(value) && Object.prototype.hasOwnProperty.call(value, "value")) {
-          if (Object.prototype.hasOwnProperty.call(value, "inclusive")) {
-            valueInclusivity[index] = value.inclusive;
-          }
-          value = value.value;
-        }
-        if (value === null || value === -Infinity || value === Infinity) {
-          return value;
-        }
-        if (this.options.subtype.stringify) {
-          return this.options.subtype.stringify(value, options);
-        }
-        return options.escape(value);
-      });
-      valuesStringified.inclusive = valueInclusivity;
-      return range.stringify(valuesStringified);
-    }
-    _stringify(values, options) {
-      const value = this._value(values, options);
-      if (!Array.isArray(values)) {
-        return `'${value}'::${this.toCastType()}`;
-      }
-      return `'${value}'`;
-    }
-    _bindParam(values, options) {
-      const value = this._value(values, options);
-      if (!Array.isArray(values)) {
-        return `${options.bindParam(value)}::${this.toCastType()}`;
-      }
-      return options.bindParam(value);
-    }
-    toSql() {
-      return BaseTypes.RANGE.types.postgres.subtypes[this._subtype.toLowerCase()];
-    }
-    toCastType() {
-      return BaseTypes.RANGE.types.postgres.castTypes[this._subtype.toLowerCase()];
-    }
-    static parse(value, options = { parser: (val) => val }) {
-      return range.parse(value, options.parser);
-    }
-  }
-  const range = require("./range");
-  RANGE.prototype.escape = false;
-  BaseTypes.RANGE.types.postgres = {
-    subtypes: {
-      integer: "int4range",
-      decimal: "numrange",
-      date: "tstzrange",
-      dateonly: "daterange",
-      bigint: "int8range"
-    },
-    castTypes: {
-      integer: "int4",
-      decimal: "numeric",
-      date: "timestamptz",
-      dateonly: "date",
-      bigint: "int8"
-    }
-  };
-  BaseTypes.ARRAY.prototype.escape = false;
-  BaseTypes.ARRAY.prototype._value = function _value(values, options) {
-    return values.map((value) => {
-      if (options && options.bindParam && this.type && this.type._value) {
-        return this.type._value(value, options);
-      }
-      if (this.type && this.type.stringify) {
-        value = this.type.stringify(value, options);
-        if (this.type.escape === false) {
-          return value;
-        }
-      }
-      return options.escape(value);
-    }, this);
-  };
-  BaseTypes.ARRAY.prototype._stringify = function _stringify(values, options) {
-    let str = `ARRAY[${this._value(values, options).join(",")}]`;
-    if (this.type) {
-      const Utils = require("../../utils");
-      let castKey = this.toSql();
-      if (this.type instanceof BaseTypes.ENUM) {
-        const table = options.field.Model.getTableName();
-        const useSchema = table.schema !== void 0;
-        const schemaWithDelimiter = useSchema ? `${Utils.addTicks(table.schema, '"')}${table.delimiter}` : "";
-        castKey = `${Utils.addTicks(Utils.generateEnumName(useSchema ? table.tableName : table, options.field.field), '"')}[]`;
-        str += `::${schemaWithDelimiter}${castKey}`;
-      } else {
-        str += `::${castKey}`;
-      }
-    }
-    return str;
-  };
-  BaseTypes.ARRAY.prototype._bindParam = function _bindParam(values, options) {
-    return options.bindParam(this._value(values, options));
-  };
-  class ENUM extends BaseTypes.ENUM {
-    static parse(value) {
-      return value;
-    }
-  }
-  BaseTypes.ENUM.types.postgres = [null];
-  return {
-    DECIMAL,
-    BLOB,
-    STRING,
-    CHAR,
-    TEXT,
-    CITEXT,
-    TINYINT,
-    SMALLINT,
-    INTEGER,
-    BIGINT,
-    BOOLEAN,
-    DATE,
-    DATEONLY,
-    REAL,
-    "DOUBLE PRECISION": DOUBLE,
-    FLOAT,
-    GEOMETRY,
-    GEOGRAPHY,
-    HSTORE,
-    RANGE,
-    ENUM
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst wkx = require('wkx');\n\nmodule.exports = BaseTypes => {\n  const warn = BaseTypes.ABSTRACT.warn.bind(undefined, 'http://www.postgresql.org/docs/9.4/static/datatype.html');\n\n  /**\n   * Removes unsupported Postgres options, i.e., LENGTH, UNSIGNED and ZEROFILL, for the integer data types.\n   *\n   * @param {object} dataType The base integer data type.\n   * @private\n   */\n  function removeUnsupportedIntegerOptions(dataType) {\n    if (dataType._length || dataType.options.length || dataType._unsigned || dataType._zerofill) {\n      warn(`PostgresSQL does not support '${dataType.key}' with LENGTH, UNSIGNED or ZEROFILL. Plain '${dataType.key}' will be used instead.`);\n      dataType._length = undefined;\n      dataType.options.length = undefined;\n      dataType._unsigned = undefined;\n      dataType._zerofill = undefined;\n    }\n  }\n\n  /**\n   * types:\n   * {\n   *   oids: [oid],\n   *   array_oids: [oid]\n   * }\n   *\n   * @see oid here https://github.com/lib/pq/blob/master/oid/types.go\n   */\n\n  BaseTypes.UUID.types.postgres = ['uuid'];\n  BaseTypes.CIDR.types.postgres = ['cidr'];\n  BaseTypes.INET.types.postgres = ['inet'];\n  BaseTypes.MACADDR.types.postgres = ['macaddr'];\n  BaseTypes.TSVECTOR.types.postgres = ['tsvector'];\n  BaseTypes.JSON.types.postgres = ['json'];\n  BaseTypes.JSONB.types.postgres = ['jsonb'];\n  BaseTypes.TIME.types.postgres = ['time'];\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    _stringify(value, options) {\n      if (value === Infinity) {\n        return 'Infinity';\n      }\n      if (value === -Infinity) {\n        return '-Infinity';\n      }\n      return super._stringify(value, options);\n    }\n    _sanitize(value, options) {\n      if ((!options || options && !options.raw) && value !== Infinity && value !== -Infinity) {\n        if (typeof value === 'string') {\n          const lower = value.toLowerCase();\n          if (lower === 'infinity') {\n            return Infinity;\n          }\n          if (lower === '-infinity') {\n            return -Infinity;\n          }\n        }\n        return super._sanitize(value);\n      }\n      return value;\n    }\n    static parse(value) {\n      if (value === 'infinity') {\n        return Infinity;\n      }\n      if (value === '-infinity') {\n        return -Infinity;\n      }\n      return value;\n    }\n  }\n\n  BaseTypes.DATEONLY.types.postgres = ['date'];\n\n  class DECIMAL extends BaseTypes.DECIMAL {\n    static parse(value) {\n      return value;\n    }\n  }\n\n  // numeric\n  BaseTypes.DECIMAL.types.postgres = ['numeric'];\n\n  class STRING extends BaseTypes.STRING {\n    toSql() {\n      if (this._binary) {\n        return 'BYTEA';\n      }\n      return super.toSql();\n    }\n  }\n\n  BaseTypes.STRING.types.postgres = ['varchar'];\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      if (this._length) {\n        warn('PostgreSQL does not support TEXT with options. Plain `TEXT` will be used instead.');\n        this._length = undefined;\n      }\n      return 'TEXT';\n    }\n  }\n\n  BaseTypes.TEXT.types.postgres = ['text'];\n\n  class CITEXT extends BaseTypes.CITEXT {\n    static parse(value) {\n      return value;\n    }\n  }\n\n  BaseTypes.CITEXT.types.postgres = ['citext'];\n\n  class CHAR extends BaseTypes.CHAR {\n    toSql() {\n      if (this._binary) {\n        return 'BYTEA';\n      }\n      return super.toSql();\n    }\n  }\n\n  BaseTypes.CHAR.types.postgres = ['char', 'bpchar'];\n\n  class BOOLEAN extends BaseTypes.BOOLEAN {\n    toSql() {\n      return 'BOOLEAN';\n    }\n    _sanitize(value) {\n      if (value !== null && value !== undefined) {\n        if (Buffer.isBuffer(value) && value.length === 1) {\n          // Bit fields are returned as buffers\n          value = value[0];\n        }\n        if (typeof value === 'string') {\n          // Only take action on valid boolean strings.\n          return ['true', 't'].includes(value) ? true : ['false', 'f'].includes(value) ? false : value;\n        }\n        if (typeof value === 'number') {\n          // Only take action on valid boolean integers.\n          return value === 1 ? true : value === 0 ? false : value;\n        }\n      }\n      return value;\n    }\n  }\n\n  BOOLEAN.parse = BOOLEAN.prototype._sanitize;\n\n  BaseTypes.BOOLEAN.types.postgres = ['bool'];\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return 'TIMESTAMP WITH TIME ZONE';\n    }\n    validate(value) {\n      if (value !== Infinity && value !== -Infinity) {\n        return super.validate(value);\n      }\n      return true;\n    }\n    _stringify(value, options) {\n      if (value === Infinity) {\n        return 'Infinity';\n      }\n      if (value === -Infinity) {\n        return '-Infinity';\n      }\n      return super._stringify(value, options);\n    }\n    _sanitize(value, options) {\n      if ((!options || options && !options.raw) && !(value instanceof Date) && !!value && value !== Infinity && value !== -Infinity) {\n        if (typeof value === 'string') {\n          const lower = value.toLowerCase();\n          if (lower === 'infinity') {\n            return Infinity;\n          }\n          if (lower === '-infinity') {\n            return -Infinity;\n          }\n        }\n        return new Date(value);\n      }\n      return value;\n    }\n  }\n\n  BaseTypes.DATE.types.postgres = ['timestamptz'];\n\n  class TINYINT extends BaseTypes.TINYINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  // int2\n  BaseTypes.TINYINT.types.postgres = ['int2'];\n\n  class SMALLINT extends BaseTypes.SMALLINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  // int2\n  BaseTypes.SMALLINT.types.postgres = ['int2'];\n\n  class INTEGER extends BaseTypes.INTEGER {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  INTEGER.parse = function parse(value) {\n    return parseInt(value, 10);\n  };\n\n  // int4\n  BaseTypes.INTEGER.types.postgres = ['int4'];\n\n  class BIGINT extends BaseTypes.BIGINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  // int8\n  BaseTypes.BIGINT.types.postgres = ['int8'];\n\n  class REAL extends BaseTypes.REAL {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  // float4\n  BaseTypes.REAL.types.postgres = ['float4'];\n\n  class DOUBLE extends BaseTypes.DOUBLE {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n  // float8\n  BaseTypes.DOUBLE.types.postgres = ['float8'];\n\n  class FLOAT extends BaseTypes.FLOAT {\n    constructor(length, decimals) {\n      super(length, decimals);\n      // POSTGRES does only support lengths as parameter.\n      // Values between 1-24 result in REAL\n      // Values between 25-53 result in DOUBLE PRECISION\n      // If decimals are provided remove these and print a warning\n      if (this._decimals) {\n        warn('PostgreSQL does not support FLOAT with decimals. Plain `FLOAT` will be used instead.');\n        this._length = undefined;\n        this.options.length = undefined;\n        this._decimals = undefined;\n      }\n      if (this._unsigned) {\n        warn('PostgreSQL does not support FLOAT unsigned. `UNSIGNED` was removed.');\n        this._unsigned = undefined;\n      }\n      if (this._zerofill) {\n        warn('PostgreSQL does not support FLOAT zerofill. `ZEROFILL` was removed.');\n        this._zerofill = undefined;\n      }\n    }\n  }\n  delete FLOAT.parse; // Float has no separate type in PG\n\n  class BLOB extends BaseTypes.BLOB {\n    toSql() {\n      if (this._length) {\n        warn('PostgreSQL does not support BLOB (BYTEA) with options. Plain `BYTEA` will be used instead.');\n        this._length = undefined;\n      }\n      return 'BYTEA';\n    }\n    _hexify(hex) {\n      // bytea hex format http://www.postgresql.org/docs/current/static/datatype-binary.html\n      return `E'\\\\\\\\x${hex}'`;\n    }\n  }\n\n  BaseTypes.BLOB.types.postgres = ['bytea'];\n\n  class GEOMETRY extends BaseTypes.GEOMETRY {\n    toSql() {\n      let result = this.key;\n      if (this.type) {\n        result += `(${this.type}`;\n        if (this.srid) {\n          result += `,${this.srid}`;\n        }\n        result += ')';\n      }\n      return result;\n    }\n    static parse(value) {\n      const b = Buffer.from(value, 'hex');\n      return wkx.Geometry.parse(b).toGeoJSON({ shortCrs: true });\n    }\n    _stringify(value, options) {\n      return `ST_GeomFromGeoJSON(${options.escape(JSON.stringify(value))})`;\n    }\n    _bindParam(value, options) {\n      return `ST_GeomFromGeoJSON(${options.bindParam(value)})`;\n    }\n  }\n\n  BaseTypes.GEOMETRY.types.postgres = ['geometry'];\n\n\n  class GEOGRAPHY extends BaseTypes.GEOGRAPHY {\n    toSql() {\n      let result = 'GEOGRAPHY';\n      if (this.type) {\n        result += `(${this.type}`;\n        if (this.srid) {\n          result += `,${this.srid}`;\n        }\n        result += ')';\n      }\n      return result;\n    }\n    static parse(value) {\n      const b = Buffer.from(value, 'hex');\n      return wkx.Geometry.parse(b).toGeoJSON({ shortCrs: true });\n    }\n    _stringify(value, options) {\n      return `ST_GeomFromGeoJSON(${options.escape(JSON.stringify(value))})`;\n    }\n    bindParam(value, options) {\n      return `ST_GeomFromGeoJSON(${options.bindParam(value)})`;\n    }\n  }\n\n  BaseTypes.GEOGRAPHY.types.postgres = ['geography'];\n\n  let hstore;\n\n  class HSTORE extends BaseTypes.HSTORE {\n    constructor() {\n      super();\n      if (!hstore) {\n        // All datatype files are loaded at import - make sure we don't load the hstore parser before a hstore is instantiated\n        hstore = require('./hstore');\n      }\n    }\n    _value(value) {\n      if (!hstore) {\n        // All datatype files are loaded at import - make sure we don't load the hstore parser before a hstore is instantiated\n        hstore = require('./hstore');\n      }\n      return hstore.stringify(value);\n    }\n    _stringify(value) {\n      return `'${this._value(value)}'`;\n    }\n    _bindParam(value, options) {\n      return options.bindParam(this._value(value));\n    }\n    static parse(value) {\n      if (!hstore) {\n        // All datatype files are loaded at import - make sure we don't load the hstore parser before a hstore is instantiated\n        hstore = require('./hstore');\n      }\n      return hstore.parse(value);\n    }\n  }\n\n  HSTORE.prototype.escape = false;\n\n  BaseTypes.HSTORE.types.postgres = ['hstore'];\n\n  class RANGE extends BaseTypes.RANGE {\n    _value(values, options) {\n      if (!Array.isArray(values)) {\n        return this.options.subtype.stringify(values, options);\n      }\n      const valueInclusivity = [true, false];\n      const valuesStringified = values.map((value, index) => {\n        if (_.isObject(value) && Object.prototype.hasOwnProperty.call(value, 'value')) {\n          if (Object.prototype.hasOwnProperty.call(value, 'inclusive')) {\n            valueInclusivity[index] = value.inclusive;\n          }\n          value = value.value;\n        }\n        if (value === null || value === -Infinity || value === Infinity) {\n          // Pass through \"unbounded\" bounds unchanged\n          return value;\n        }\n        if (this.options.subtype.stringify) {\n          return this.options.subtype.stringify(value, options);\n        }\n        return options.escape(value);\n      });\n      // Array.map does not preserve extra array properties\n      valuesStringified.inclusive = valueInclusivity;\n      return range.stringify(valuesStringified);\n    }\n    _stringify(values, options) {\n      const value = this._value(values, options);\n      if (!Array.isArray(values)) {\n        return `'${value}'::${this.toCastType()}`;\n      }\n      return `'${value}'`;\n    }\n    _bindParam(values, options) {\n      const value = this._value(values, options);\n      if (!Array.isArray(values)) {\n        return `${options.bindParam(value)}::${this.toCastType()}`;\n      }\n      return options.bindParam(value);\n    }\n    toSql() {\n      return BaseTypes.RANGE.types.postgres.subtypes[this._subtype.toLowerCase()];\n    }\n    toCastType() {\n      return BaseTypes.RANGE.types.postgres.castTypes[this._subtype.toLowerCase()];\n    }\n    static parse(value, options = { parser: val => val }) {\n      return range.parse(value, options.parser);\n    }\n  }\n  const range = require('./range');\n\n  RANGE.prototype.escape = false;\n\n  BaseTypes.RANGE.types.postgres = {\n    subtypes: {\n      integer: 'int4range',\n      decimal: 'numrange',\n      date: 'tstzrange',\n      dateonly: 'daterange',\n      bigint: 'int8range'\n    },\n    castTypes: {\n      integer: 'int4',\n      decimal: 'numeric',\n      date: 'timestamptz',\n      dateonly: 'date',\n      bigint: 'int8'\n    }\n  };\n\n  // TODO: Why are base types being manipulated??\n  BaseTypes.ARRAY.prototype.escape = false;\n  BaseTypes.ARRAY.prototype._value = function _value(values, options) {\n    return values.map(value => {\n      if (options && options.bindParam && this.type && this.type._value) {\n        return this.type._value(value, options);\n      }\n      if (this.type && this.type.stringify) {\n        value = this.type.stringify(value, options);\n\n        if (this.type.escape === false) {\n          return value;\n        }\n      }\n      return options.escape(value);\n    }, this);\n  };\n  BaseTypes.ARRAY.prototype._stringify = function _stringify(values, options) {\n    let str = `ARRAY[${this._value(values, options).join(',')}]`;\n\n    if (this.type) {\n      const Utils = require('../../utils');\n      let castKey = this.toSql();\n\n      if (this.type instanceof BaseTypes.ENUM) {\n        const table = options.field.Model.getTableName();\n        const useSchema = table.schema !== undefined;\n        const schemaWithDelimiter = useSchema ? `${Utils.addTicks(table.schema, '\"')}${table.delimiter}` : '';\n\n        castKey = `${Utils.addTicks(\n          Utils.generateEnumName(useSchema ? table.tableName : table, options.field.field),\n          '\"'\n        ) }[]`;\n\n        str += `::${schemaWithDelimiter}${castKey}`;\n      } else {\n        str += `::${castKey}`;\n      }\n    }\n\n    return str;\n  };\n  BaseTypes.ARRAY.prototype._bindParam = function _bindParam(values, options) {\n    return options.bindParam(this._value(values, options));\n  };\n\n  class ENUM extends BaseTypes.ENUM {\n    static parse(value) {\n      return value;\n    }\n  }\n\n  BaseTypes.ENUM.types.postgres = [null];\n\n  return {\n    DECIMAL,\n    BLOB,\n    STRING,\n    CHAR,\n    TEXT,\n    CITEXT,\n    TINYINT,\n    SMALLINT,\n    INTEGER,\n    BIGINT,\n    BOOLEAN,\n    DATE,\n    DATEONLY,\n    REAL,\n    'DOUBLE PRECISION': DOUBLE,\n    FLOAT,\n    GEOMETRY,\n    GEOGRAPHY,\n    HSTORE,\n    RANGE,\n    ENUM\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/hstore.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/hstore.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-const hstore = require("pg-hstore")({ sanitize: true });
-function stringify(data) {
-  if (data === null)
-    return null;
-  return hstore.stringify(data);
-}
-exports.stringify = stringify;
-function parse(value) {
-  if (value === null)
-    return null;
-  return hstore.parse(value);
-}
-exports.parse = parse;
-//# sourceMappingURL=hstore.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/hstore.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/hstore.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/hstore.js"],
-  "sourcesContent": ["'use strict';\n\nconst hstore = require('pg-hstore')({ sanitize: true });\n\nfunction stringify(data) {\n  if (data === null) return null;\n  return hstore.stringify(data);\n}\nexports.stringify = stringify;\n\nfunction parse(value) {\n  if (value === null) return null;\n  return hstore.parse(value);\n}\nexports.parse = parse;\n"],
-  "mappings": ";AAEA,MAAM,SAAS,QAAQ,aAAa,EAAE,UAAU;AAEhD,mBAAmB,MAAM;AACvB,MAAI,SAAS;AAAM,WAAO;AAC1B,SAAO,OAAO,UAAU;AAAA;AAE1B,QAAQ,YAAY;AAEpB,eAAe,OAAO;AACpB,MAAI,UAAU;AAAM,WAAO;AAC3B,SAAO,OAAO,MAAM;AAAA;AAEtB,QAAQ,QAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,77 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").postgres;
-const { PostgresQueryInterface } = require("./query-interface");
-class PostgresDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new PostgresQueryInterface(sequelize, this.queryGenerator);
-  }
-  canBackslashEscape() {
-    return !this.sequelize.options.standardConformingStrings;
-  }
-}
-PostgresDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "DEFAULT VALUES": true,
-  EXCEPTION: true,
-  "ON DUPLICATE KEY": false,
-  "ORDER NULLS": true,
-  returnValues: {
-    returning: true
-  },
-  bulkDefault: true,
-  schemas: true,
-  lock: true,
-  lockOf: true,
-  lockKey: true,
-  lockOuterJoinFailure: true,
-  skipLocked: true,
-  forShare: "FOR SHARE",
-  index: {
-    concurrently: true,
-    using: 2,
-    where: true,
-    functionBased: true,
-    operator: true
-  },
-  inserts: {
-    onConflictDoNothing: " ON CONFLICT DO NOTHING",
-    updateOnDuplicate: " ON CONFLICT DO UPDATE SET",
-    conflictFields: true,
-    onConflictWhere: true
-  },
-  NUMERIC: true,
-  ARRAY: true,
-  RANGE: true,
-  GEOMETRY: true,
-  REGEXP: true,
-  GEOGRAPHY: true,
-  JSON: true,
-  JSONB: true,
-  HSTORE: true,
-  TSVECTOR: true,
-  deferrableConstraints: true,
-  searchPath: true,
-  escapeStringConstants: true
-});
-PostgresDialect.prototype.defaultVersion = "9.5.0";
-PostgresDialect.prototype.Query = Query;
-PostgresDialect.prototype.DataTypes = DataTypes;
-PostgresDialect.prototype.name = "postgres";
-PostgresDialect.prototype.TICK_CHAR = '"';
-PostgresDialect.prototype.TICK_CHAR_LEFT = PostgresDialect.prototype.TICK_CHAR;
-PostgresDialect.prototype.TICK_CHAR_RIGHT = PostgresDialect.prototype.TICK_CHAR;
-module.exports = PostgresDialect;
-module.exports.default = PostgresDialect;
-module.exports.PostgresDialect = PostgresDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').postgres;\nconst { PostgresQueryInterface } = require('./query-interface');\n\nclass PostgresDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new PostgresQueryInterface(\n      sequelize,\n      this.queryGenerator\n    );\n  }\n\n  canBackslashEscape() {\n    // postgres can use \\ to escape if one of these is true:\n    // - standard_conforming_strings is off\n    // - the string is prefixed with E (out of scope for this method)\n\n    return !this.sequelize.options.standardConformingStrings;\n  }\n}\n\nPostgresDialect.prototype.supports = _.merge(\n  _.cloneDeep(AbstractDialect.prototype.supports),\n  {\n    'DEFAULT VALUES': true,\n    EXCEPTION: true,\n    'ON DUPLICATE KEY': false,\n    'ORDER NULLS': true,\n    returnValues: {\n      returning: true\n    },\n    bulkDefault: true,\n    schemas: true,\n    lock: true,\n    lockOf: true,\n    lockKey: true,\n    lockOuterJoinFailure: true,\n    skipLocked: true,\n    forShare: 'FOR SHARE',\n    index: {\n      concurrently: true,\n      using: 2,\n      where: true,\n      functionBased: true,\n      operator: true\n    },\n    inserts: {\n      onConflictDoNothing: ' ON CONFLICT DO NOTHING',\n      updateOnDuplicate: ' ON CONFLICT DO UPDATE SET',\n      conflictFields: true,\n      onConflictWhere: true\n    },\n    NUMERIC: true,\n    ARRAY: true,\n    RANGE: true,\n    GEOMETRY: true,\n    REGEXP: true,\n    GEOGRAPHY: true,\n    JSON: true,\n    JSONB: true,\n    HSTORE: true,\n    TSVECTOR: true,\n    deferrableConstraints: true,\n    searchPath: true,\n    escapeStringConstants: true\n  }\n);\n\nPostgresDialect.prototype.defaultVersion = '9.5.0'; // minimum supported version\nPostgresDialect.prototype.Query = Query;\nPostgresDialect.prototype.DataTypes = DataTypes;\nPostgresDialect.prototype.name = 'postgres';\nPostgresDialect.prototype.TICK_CHAR = '\"';\nPostgresDialect.prototype.TICK_CHAR_LEFT = PostgresDialect.prototype.TICK_CHAR;\nPostgresDialect.prototype.TICK_CHAR_RIGHT = PostgresDialect.prototype.TICK_CHAR;\n\nmodule.exports = PostgresDialect;\nmodule.exports.default = PostgresDialect;\nmodule.exports.PostgresDialect = PostgresDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,2BAA2B,QAAQ;AAE3C,8BAA8B,gBAAgB;AAAA,EAC5C,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,uBACxB,WACA,KAAK;AAAA;AAAA,EAIT,qBAAqB;AAKnB,WAAO,CAAC,KAAK,UAAU,QAAQ;AAAA;AAAA;AAInC,gBAAgB,UAAU,WAAW,EAAE,MACrC,EAAE,UAAU,gBAAgB,UAAU,WACtC;AAAA,EACE,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,cAAc;AAAA,IACZ,WAAW;AAAA;AAAA,EAEb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,sBAAsB;AAAA,EACtB,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,OAAO;AAAA,IACL,cAAc;AAAA,IACd,OAAO;AAAA,IACP,OAAO;AAAA,IACP,eAAe;AAAA,IACf,UAAU;AAAA;AAAA,EAEZ,SAAS;AAAA,IACP,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA;AAAA,EAEnB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,uBAAuB;AAAA,EACvB,YAAY;AAAA,EACZ,uBAAuB;AAAA;AAI3B,gBAAgB,UAAU,iBAAiB;AAC3C,gBAAgB,UAAU,QAAQ;AAClC,gBAAgB,UAAU,YAAY;AACtC,gBAAgB,UAAU,OAAO;AACjC,gBAAgB,UAAU,YAAY;AACtC,gBAAgB,UAAU,iBAAiB,gBAAgB,UAAU;AACrE,gBAAgB,UAAU,kBAAkB,gBAAgB,UAAU;AAEtE,OAAO,UAAU;AACjB,OAAO,QAAQ,UAAU;AACzB,OAAO,QAAQ,kBAAkB;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,671 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const Utils = require("../../utils");
-const util = require("util");
-const DataTypes = require("../../data-types");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const semver = require("semver");
-const _ = require("lodash");
-const POSTGRES_RESERVED_WORDS = "all,analyse,analyze,and,any,array,as,asc,asymmetric,authorization,binary,both,case,cast,check,collate,collation,column,concurrently,constraint,create,cross,current_catalog,current_date,current_role,current_schema,current_time,current_timestamp,current_user,default,deferrable,desc,distinct,do,else,end,except,false,fetch,for,foreign,freeze,from,full,grant,group,having,ilike,in,initially,inner,intersect,into,is,isnull,join,lateral,leading,left,like,limit,localtime,localtimestamp,natural,not,notnull,null,offset,on,only,or,order,outer,overlaps,placing,primary,references,returning,right,select,session_user,similar,some,symmetric,table,tablesample,then,to,trailing,true,union,unique,user,using,variadic,verbose,when,where,window,with".split(",");
-class PostgresQueryGenerator extends AbstractQueryGenerator {
-  setSearchPath(searchPath) {
-    return `SET search_path to ${searchPath};`;
-  }
-  createDatabaseQuery(databaseName, options) {
-    options = __spreadValues({
-      encoding: null,
-      collate: null
-    }, options);
-    const values = {
-      database: this.quoteTable(databaseName),
-      encoding: options.encoding ? ` ENCODING = ${this.escape(options.encoding)}` : "",
-      collation: options.collate ? ` LC_COLLATE = ${this.escape(options.collate)}` : "",
-      ctype: options.ctype ? ` LC_CTYPE = ${this.escape(options.ctype)}` : "",
-      template: options.template ? ` TEMPLATE = ${this.escape(options.template)}` : ""
-    };
-    return `CREATE DATABASE ${values.database}${values.encoding}${values.collation}${values.ctype}${values.template};`;
-  }
-  dropDatabaseQuery(databaseName) {
-    return `DROP DATABASE IF EXISTS ${this.quoteTable(databaseName)};`;
-  }
-  createSchema(schema) {
-    const databaseVersion = _.get(this, "sequelize.options.databaseVersion", 0);
-    if (databaseVersion && semver.gte(databaseVersion, "9.2.0")) {
-      return `CREATE SCHEMA IF NOT EXISTS ${this.quoteIdentifier(schema)};`;
-    }
-    return `CREATE SCHEMA ${this.quoteIdentifier(schema)};`;
-  }
-  dropSchema(schema) {
-    return `DROP SCHEMA IF EXISTS ${this.quoteIdentifier(schema)} CASCADE;`;
-  }
-  showSchemasQuery() {
-    return "SELECT schema_name FROM information_schema.schemata WHERE schema_name <> 'information_schema' AND schema_name != 'public' AND schema_name !~ E'^pg_';";
-  }
-  versionQuery() {
-    return "SHOW SERVER_VERSION";
-  }
-  createTableQuery(tableName, attributes, options) {
-    options = __spreadValues({}, options);
-    const databaseVersion = _.get(this, "sequelize.options.databaseVersion", 0);
-    const attrStr = [];
-    let comments = "";
-    let columnComments = "";
-    const quotedTable = this.quoteTable(tableName);
-    if (options.comment && typeof options.comment === "string") {
-      comments += `; COMMENT ON TABLE ${quotedTable} IS ${this.escape(options.comment)}`;
-    }
-    for (const attr in attributes) {
-      const quotedAttr = this.quoteIdentifier(attr);
-      const i = attributes[attr].indexOf("COMMENT ");
-      if (i !== -1) {
-        const escapedCommentText = this.escape(attributes[attr].substring(i + 8));
-        columnComments += `; COMMENT ON COLUMN ${quotedTable}.${quotedAttr} IS ${escapedCommentText}`;
-        attributes[attr] = attributes[attr].substring(0, i);
-      }
-      const dataType = this.dataTypeMapping(tableName, attr, attributes[attr]);
-      attrStr.push(`${quotedAttr} ${dataType}`);
-    }
-    let attributesClause = attrStr.join(", ");
-    if (options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns) => {
-        if (columns.customIndex) {
-          attributesClause += `, UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-        }
-      });
-    }
-    const pks = _.reduce(attributes, (acc, attribute, key) => {
-      if (attribute.includes("PRIMARY KEY")) {
-        acc.push(this.quoteIdentifier(key));
-      }
-      return acc;
-    }, []).join(",");
-    if (pks.length > 0) {
-      attributesClause += `, PRIMARY KEY (${pks})`;
-    }
-    return `CREATE TABLE ${databaseVersion === 0 || semver.gte(databaseVersion, "9.1.0") ? "IF NOT EXISTS " : ""}${quotedTable} (${attributesClause})${comments}${columnComments};`;
-  }
-  dropTableQuery(tableName, options) {
-    options = options || {};
-    return `DROP TABLE IF EXISTS ${this.quoteTable(tableName)}${options.cascade ? " CASCADE" : ""};`;
-  }
-  showTablesQuery() {
-    const schema = this.options.schema || "public";
-    return `SELECT table_name FROM information_schema.tables WHERE table_schema = ${this.escape(schema)} AND table_type LIKE '%TABLE' AND table_name != 'spatial_ref_sys';`;
-  }
-  tableExistsQuery(tableName) {
-    const table = tableName.tableName || tableName;
-    const schema = tableName.schema || "public";
-    return `SELECT table_name FROM information_schema.tables WHERE table_schema = ${this.escape(schema)} AND table_name = ${this.escape(table)}`;
-  }
-  describeTableQuery(tableName, schema) {
-    schema = schema || this.options.schema || "public";
-    return `SELECT pk.constraint_type as "Constraint",c.column_name as "Field", c.column_default as "Default",c.is_nullable as "Null", (CASE WHEN c.udt_name = 'hstore' THEN c.udt_name ELSE c.data_type END) || (CASE WHEN c.character_maximum_length IS NOT NULL THEN '(' || c.character_maximum_length || ')' ELSE '' END) as "Type", (SELECT array_agg(e.enumlabel) FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum e ON t.oid=e.enumtypid WHERE t.typname=c.udt_name) AS "special", (SELECT pgd.description FROM pg_catalog.pg_statio_all_tables AS st INNER JOIN pg_catalog.pg_description pgd on (pgd.objoid=st.relid) WHERE c.ordinal_position=pgd.objsubid AND c.table_name=st.relname) AS "Comment" FROM information_schema.columns c LEFT JOIN (SELECT tc.table_schema, tc.table_name, cu.column_name, tc.constraint_type FROM information_schema.TABLE_CONSTRAINTS tc JOIN information_schema.KEY_COLUMN_USAGE  cu ON tc.table_schema=cu.table_schema and tc.table_name=cu.table_name and tc.constraint_name=cu.constraint_name and tc.constraint_type='PRIMARY KEY') pk ON pk.table_schema=c.table_schema AND pk.table_name=c.table_name AND pk.column_name=c.column_name WHERE c.table_name = ${this.escape(tableName)} AND c.table_schema = ${this.escape(schema)}`;
-  }
-  _checkValidJsonStatement(stmt) {
-    if (typeof stmt !== "string") {
-      return false;
-    }
-    const jsonFunctionRegex = /^\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\([^)]*\)/i;
-    const jsonOperatorRegex = /^\s*(->>?|#>>?|@>|<@|\?[|&]?|\|{2}|#-)/i;
-    const tokenCaptureRegex = /^\s*((?:([`"'])(?:(?!\2).|\2{2})*\2)|[\w\d\s]+|[().,;+-])/i;
-    let currentIndex = 0;
-    let openingBrackets = 0;
-    let closingBrackets = 0;
-    let hasJsonFunction = false;
-    let hasInvalidToken = false;
-    while (currentIndex < stmt.length) {
-      const string = stmt.substr(currentIndex);
-      const functionMatches = jsonFunctionRegex.exec(string);
-      if (functionMatches) {
-        currentIndex += functionMatches[0].indexOf("(");
-        hasJsonFunction = true;
-        continue;
-      }
-      const operatorMatches = jsonOperatorRegex.exec(string);
-      if (operatorMatches) {
-        currentIndex += operatorMatches[0].length;
-        hasJsonFunction = true;
-        continue;
-      }
-      const tokenMatches = tokenCaptureRegex.exec(string);
-      if (tokenMatches) {
-        const capturedToken = tokenMatches[1];
-        if (capturedToken === "(") {
-          openingBrackets++;
-        } else if (capturedToken === ")") {
-          closingBrackets++;
-        } else if (capturedToken === ";") {
-          hasInvalidToken = true;
-          break;
-        }
-        currentIndex += tokenMatches[0].length;
-        continue;
-      }
-      break;
-    }
-    hasInvalidToken |= openingBrackets !== closingBrackets;
-    if (hasJsonFunction && hasInvalidToken) {
-      throw new Error(`Invalid json statement: ${stmt}`);
-    }
-    return hasJsonFunction;
-  }
-  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
-    if (smth instanceof Utils.Json) {
-      if (smth.conditions) {
-        const conditions = this.parseConditionObject(smth.conditions).map((condition) => `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`);
-        return conditions.join(" AND ");
-      }
-      if (smth.path) {
-        let str;
-        if (this._checkValidJsonStatement(smth.path)) {
-          str = smth.path;
-        } else {
-          const paths = _.toPath(smth.path);
-          const column = paths.shift();
-          str = this.jsonPathExtractionQuery(column, paths);
-        }
-        if (smth.value) {
-          str += util.format(" = %s", this.escape(smth.value));
-        }
-        return str;
-      }
-    }
-    return super.handleSequelizeMethod.call(this, smth, tableName, factory, options, prepend);
-  }
-  addColumnQuery(table, key, attribute) {
-    const dbDataType = this.attributeToSQL(attribute, { context: "addColumn", table, key });
-    const dataType = attribute.type || attribute;
-    const definition = this.dataTypeMapping(table, key, dbDataType);
-    const quotedKey = this.quoteIdentifier(key);
-    const quotedTable = this.quoteTable(this.extractTableDetails(table));
-    let query = `ALTER TABLE ${quotedTable} ADD COLUMN ${quotedKey} ${definition};`;
-    if (dataType instanceof DataTypes.ENUM) {
-      query = this.pgEnum(table, key, dataType) + query;
-    } else if (dataType.type && dataType.type instanceof DataTypes.ENUM) {
-      query = this.pgEnum(table, key, dataType.type) + query;
-    }
-    return query;
-  }
-  removeColumnQuery(tableName, attributeName) {
-    const quotedTableName = this.quoteTable(this.extractTableDetails(tableName));
-    const quotedAttributeName = this.quoteIdentifier(attributeName);
-    return `ALTER TABLE ${quotedTableName} DROP COLUMN ${quotedAttributeName};`;
-  }
-  changeColumnQuery(tableName, attributes) {
-    const query = (subQuery) => `ALTER TABLE ${this.quoteTable(tableName)} ALTER COLUMN ${subQuery};`;
-    const sql = [];
-    for (const attributeName in attributes) {
-      let definition = this.dataTypeMapping(tableName, attributeName, attributes[attributeName]);
-      let attrSql = "";
-      if (definition.includes("NOT NULL")) {
-        attrSql += query(`${this.quoteIdentifier(attributeName)} SET NOT NULL`);
-        definition = definition.replace("NOT NULL", "").trim();
-      } else if (!definition.includes("REFERENCES")) {
-        attrSql += query(`${this.quoteIdentifier(attributeName)} DROP NOT NULL`);
-      }
-      if (definition.includes("DEFAULT")) {
-        attrSql += query(`${this.quoteIdentifier(attributeName)} SET DEFAULT ${definition.match(/DEFAULT ([^;]+)/)[1]}`);
-        definition = definition.replace(/(DEFAULT[^;]+)/, "").trim();
-      } else if (!definition.includes("REFERENCES")) {
-        attrSql += query(`${this.quoteIdentifier(attributeName)} DROP DEFAULT`);
-      }
-      if (attributes[attributeName].startsWith("ENUM(")) {
-        attrSql += this.pgEnum(tableName, attributeName, attributes[attributeName]);
-        definition = definition.replace(/^ENUM\(.+\)/, this.pgEnumName(tableName, attributeName, { schema: false }));
-        definition += ` USING (${this.quoteIdentifier(attributeName)}::${this.pgEnumName(tableName, attributeName)})`;
-      }
-      if (definition.match(/UNIQUE;*$/)) {
-        definition = definition.replace(/UNIQUE;*$/, "");
-        attrSql += query(`ADD UNIQUE (${this.quoteIdentifier(attributeName)})`).replace("ALTER COLUMN", "");
-      }
-      if (definition.includes("REFERENCES")) {
-        definition = definition.replace(/.+?(?=REFERENCES)/, "");
-        attrSql += query(`ADD FOREIGN KEY (${this.quoteIdentifier(attributeName)}) ${definition}`).replace("ALTER COLUMN", "");
-      } else {
-        attrSql += query(`${this.quoteIdentifier(attributeName)} TYPE ${definition}`);
-      }
-      sql.push(attrSql);
-    }
-    return sql.join("");
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const attrString = [];
-    for (const attributeName in attributes) {
-      attrString.push(`${this.quoteIdentifier(attrBefore)} TO ${this.quoteIdentifier(attributeName)}`);
-    }
-    return `ALTER TABLE ${this.quoteTable(tableName)} RENAME COLUMN ${attrString.join(", ")};`;
-  }
-  fn(fnName, tableName, parameters, body, returns, language) {
-    fnName = fnName || "testfunc";
-    language = language || "plpgsql";
-    returns = returns ? `RETURNS ${returns}` : "";
-    parameters = parameters || "";
-    return `CREATE OR REPLACE FUNCTION pg_temp.${fnName}(${parameters}) ${returns} AS $func$ BEGIN ${body} END; $func$ LANGUAGE ${language}; SELECT * FROM pg_temp.${fnName}();`;
-  }
-  truncateTableQuery(tableName, options = {}) {
-    return [
-      `TRUNCATE ${this.quoteTable(tableName)}`,
-      options.restartIdentity ? " RESTART IDENTITY" : "",
-      options.cascade ? " CASCADE" : ""
-    ].join("");
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    const table = this.quoteTable(tableName);
-    let whereClause = this.getWhereConditions(where, null, model, options);
-    const limit = options.limit ? ` LIMIT ${this.escape(options.limit)}` : "";
-    let primaryKeys = "";
-    let primaryKeysSelection = "";
-    if (whereClause) {
-      whereClause = ` WHERE ${whereClause}`;
-    }
-    if (options.limit) {
-      if (!model) {
-        throw new Error("Cannot LIMIT delete without a model.");
-      }
-      const pks = Object.values(model.primaryKeys).map((pk) => this.quoteIdentifier(pk.field)).join(",");
-      primaryKeys = model.primaryKeyAttributes.length > 1 ? `(${pks})` : pks;
-      primaryKeysSelection = pks;
-      return `DELETE FROM ${table} WHERE ${primaryKeys} IN (SELECT ${primaryKeysSelection} FROM ${table}${whereClause}${limit})`;
-    }
-    return `DELETE FROM ${table}${whereClause}`;
-  }
-  showIndexesQuery(tableName) {
-    let schemaJoin = "";
-    let schemaWhere = "";
-    if (typeof tableName !== "string") {
-      schemaJoin = ", pg_namespace s";
-      schemaWhere = ` AND s.oid = t.relnamespace AND s.nspname = '${tableName.schema}'`;
-      tableName = tableName.tableName;
-    }
-    return `SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a${schemaJoin} WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND t.relkind = 'r' and t.relname = '${tableName}'${schemaWhere} GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;`;
-  }
-  showConstraintsQuery(tableName) {
-    return [
-      'SELECT constraint_catalog AS "constraintCatalog",',
-      'constraint_schema AS "constraintSchema",',
-      'constraint_name AS "constraintName",',
-      'table_catalog AS "tableCatalog",',
-      'table_schema AS "tableSchema",',
-      'table_name AS "tableName",',
-      'constraint_type AS "constraintType",',
-      'is_deferrable AS "isDeferrable",',
-      'initially_deferred AS "initiallyDeferred"',
-      "from INFORMATION_SCHEMA.table_constraints",
-      `WHERE table_name='${tableName}';`
-    ].join(" ");
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes, options) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return [
-      "DROP INDEX",
-      options && options.concurrently && "CONCURRENTLY",
-      `IF EXISTS ${this.quoteIdentifiers(indexName)}`
-    ].filter(Boolean).join(" ");
-  }
-  addLimitAndOffset(options) {
-    let fragment = "";
-    if (options.limit != null) {
-      fragment += " LIMIT " + this.escape(options.limit);
-    }
-    if (options.offset != null) {
-      fragment += " OFFSET " + this.escape(options.offset);
-    }
-    return fragment;
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    let type;
-    if (attribute.type instanceof DataTypes.ENUM || attribute.type instanceof DataTypes.ARRAY && attribute.type.type instanceof DataTypes.ENUM) {
-      const enumType = attribute.type.type || attribute.type;
-      let values = attribute.values;
-      if (enumType.values && !attribute.values) {
-        values = enumType.values;
-      }
-      if (Array.isArray(values) && values.length > 0) {
-        type = `ENUM(${values.map((value) => this.escape(value)).join(", ")})`;
-        if (attribute.type instanceof DataTypes.ARRAY) {
-          type += "[]";
-        }
-      } else {
-        throw new Error("Values for ENUM haven't been defined.");
-      }
-    }
-    if (!type) {
-      type = attribute.type;
-    }
-    let sql = type.toString();
-    if (Object.prototype.hasOwnProperty.call(attribute, "allowNull") && !attribute.allowNull) {
-      sql += " NOT NULL";
-    }
-    if (attribute.autoIncrement) {
-      if (attribute.autoIncrementIdentity) {
-        sql += " GENERATED BY DEFAULT AS IDENTITY";
-      } else {
-        sql += " SERIAL";
-      }
-    }
-    if (Utils.defaultValueSchemable(attribute.defaultValue)) {
-      sql += ` DEFAULT ${this.escape(attribute.defaultValue, attribute)}`;
-    }
-    if (attribute.unique === true) {
-      sql += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      sql += " PRIMARY KEY";
-    }
-    if (attribute.references) {
-      let referencesTable = this.quoteTable(attribute.references.model);
-      let schema;
-      if (options.schema) {
-        schema = options.schema;
-      } else if ((!attribute.references.model || typeof attribute.references.model == "string") && options.table && options.table.schema) {
-        schema = options.table.schema;
-      }
-      if (schema) {
-        referencesTable = this.quoteTable(this.addSchema({
-          tableName: referencesTable,
-          _schema: schema
-        }));
-      }
-      let referencesKey;
-      if (!options.withoutForeignKeyConstraints) {
-        if (attribute.references.key) {
-          referencesKey = this.quoteIdentifiers(attribute.references.key);
-        } else {
-          referencesKey = this.quoteIdentifier("id");
-        }
-        sql += ` REFERENCES ${referencesTable} (${referencesKey})`;
-        if (attribute.onDelete) {
-          sql += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-        }
-        if (attribute.onUpdate) {
-          sql += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;
-        }
-        if (attribute.references.deferrable) {
-          sql += ` ${attribute.references.deferrable.toString(this)}`;
-        }
-      }
-    }
-    if (attribute.comment && typeof attribute.comment === "string") {
-      if (options && ["addColumn", "changeColumn"].includes(options.context)) {
-        const quotedAttr = this.quoteIdentifier(options.key);
-        const escapedCommentText = this.escape(attribute.comment);
-        sql += `; COMMENT ON COLUMN ${this.quoteTable(options.table)}.${quotedAttr} IS ${escapedCommentText}`;
-      } else {
-        sql += ` COMMENT ${attribute.comment}`;
-      }
-    }
-    return sql;
-  }
-  deferConstraintsQuery(options) {
-    return options.deferrable.toString(this);
-  }
-  setConstraintQuery(columns, type) {
-    let columnFragment = "ALL";
-    if (columns) {
-      columnFragment = columns.map((column) => this.quoteIdentifier(column)).join(", ");
-    }
-    return `SET CONSTRAINTS ${columnFragment} ${type}`;
-  }
-  setDeferredQuery(columns) {
-    return this.setConstraintQuery(columns, "DEFERRED");
-  }
-  setImmediateQuery(columns) {
-    return this.setConstraintQuery(columns, "IMMEDIATE");
-  }
-  attributesToSQL(attributes, options) {
-    const result = {};
-    for (const key in attributes) {
-      const attribute = attributes[key];
-      result[attribute.field || key] = this.attributeToSQL(attribute, __spreadValues({ key }, options));
-    }
-    return result;
-  }
-  createTrigger(tableName, triggerName, eventType, fireOnSpec, functionName, functionParams, optionsArray) {
-    const decodedEventType = this.decodeTriggerEventType(eventType);
-    const eventSpec = this.expandTriggerEventSpec(fireOnSpec);
-    const expandedOptions = this.expandOptions(optionsArray);
-    const paramList = this._expandFunctionParamList(functionParams);
-    return `CREATE ${this.triggerEventTypeIsConstraint(eventType)}TRIGGER ${this.quoteIdentifier(triggerName)} ${decodedEventType} ${eventSpec} ON ${this.quoteTable(tableName)}${expandedOptions ? ` ${expandedOptions}` : ""} EXECUTE PROCEDURE ${functionName}(${paramList});`;
-  }
-  dropTrigger(tableName, triggerName) {
-    return `DROP TRIGGER ${this.quoteIdentifier(triggerName)} ON ${this.quoteTable(tableName)} RESTRICT;`;
-  }
-  renameTrigger(tableName, oldTriggerName, newTriggerName) {
-    return `ALTER TRIGGER ${this.quoteIdentifier(oldTriggerName)} ON ${this.quoteTable(tableName)} RENAME TO ${this.quoteIdentifier(newTriggerName)};`;
-  }
-  createFunction(functionName, params, returnType, language, body, optionsArray, options) {
-    if (!functionName || !returnType || !language || !body)
-      throw new Error("createFunction missing some parameters. Did you pass functionName, returnType, language and body?");
-    const paramList = this._expandFunctionParamList(params);
-    const variableList = options && options.variables ? this._expandFunctionVariableList(options.variables) : "";
-    const expandedOptionsArray = this.expandOptions(optionsArray);
-    const statement = options && options.force ? "CREATE OR REPLACE FUNCTION" : "CREATE FUNCTION";
-    return `${statement} ${functionName}(${paramList}) RETURNS ${returnType} AS $func$ ${variableList} BEGIN ${body} END; $func$ language '${language}'${expandedOptionsArray};`;
-  }
-  dropFunction(functionName, params) {
-    if (!functionName)
-      throw new Error("requires functionName");
-    const paramList = this._expandFunctionParamList(params);
-    return `DROP FUNCTION ${functionName}(${paramList}) RESTRICT;`;
-  }
-  renameFunction(oldFunctionName, params, newFunctionName) {
-    const paramList = this._expandFunctionParamList(params);
-    return `ALTER FUNCTION ${oldFunctionName}(${paramList}) RENAME TO ${newFunctionName};`;
-  }
-  pgEscapeAndQuote(val) {
-    return this.quoteIdentifier(Utils.removeTicks(this.escape(val), "'"));
-  }
-  _expandFunctionParamList(params) {
-    if (params === void 0 || !Array.isArray(params)) {
-      throw new Error("_expandFunctionParamList: function parameters array required, including an empty one for no arguments");
-    }
-    const paramList = [];
-    params.forEach((curParam) => {
-      const paramDef = [];
-      if (curParam.type) {
-        if (curParam.direction) {
-          paramDef.push(curParam.direction);
-        }
-        if (curParam.name) {
-          paramDef.push(curParam.name);
-        }
-        paramDef.push(curParam.type);
-      } else {
-        throw new Error("function or trigger used with a parameter without any type");
-      }
-      const joined = paramDef.join(" ");
-      if (joined)
-        paramList.push(joined);
-    });
-    return paramList.join(", ");
-  }
-  _expandFunctionVariableList(variables) {
-    if (!Array.isArray(variables)) {
-      throw new Error("_expandFunctionVariableList: function variables must be an array");
-    }
-    const variableDefinitions = [];
-    variables.forEach((variable) => {
-      if (!variable.name || !variable.type) {
-        throw new Error("function variable must have a name and type");
-      }
-      let variableDefinition = `DECLARE ${variable.name} ${variable.type}`;
-      if (variable.default) {
-        variableDefinition += ` := ${variable.default}`;
-      }
-      variableDefinition += ";";
-      variableDefinitions.push(variableDefinition);
-    });
-    return variableDefinitions.join(" ");
-  }
-  expandOptions(options) {
-    return options === void 0 || _.isEmpty(options) ? "" : options.join(" ");
-  }
-  decodeTriggerEventType(eventSpecifier) {
-    const EVENT_DECODER = {
-      "after": "AFTER",
-      "before": "BEFORE",
-      "instead_of": "INSTEAD OF",
-      "after_constraint": "AFTER"
-    };
-    if (!EVENT_DECODER[eventSpecifier]) {
-      throw new Error(`Invalid trigger event specified: ${eventSpecifier}`);
-    }
-    return EVENT_DECODER[eventSpecifier];
-  }
-  triggerEventTypeIsConstraint(eventSpecifier) {
-    return eventSpecifier === "after_constraint" ? "CONSTRAINT " : "";
-  }
-  expandTriggerEventSpec(fireOnSpec) {
-    if (_.isEmpty(fireOnSpec)) {
-      throw new Error("no table change events specified to trigger on");
-    }
-    return _.map(fireOnSpec, (fireValue, fireKey) => {
-      const EVENT_MAP = {
-        "insert": "INSERT",
-        "update": "UPDATE",
-        "delete": "DELETE",
-        "truncate": "TRUNCATE"
-      };
-      if (!EVENT_MAP[fireValue]) {
-        throw new Error(`parseTriggerEventSpec: undefined trigger event ${fireKey}`);
-      }
-      let eventSpec = EVENT_MAP[fireValue];
-      if (eventSpec === "UPDATE") {
-        if (Array.isArray(fireValue) && fireValue.length > 0) {
-          eventSpec += ` OF ${fireValue.join(", ")}`;
-        }
-      }
-      return eventSpec;
-    }).join(" OR ");
-  }
-  pgEnumName(tableName, attr, options) {
-    options = options || {};
-    const tableDetails = this.extractTableDetails(tableName, options);
-    let enumName = Utils.addTicks(Utils.generateEnumName(tableDetails.tableName, attr), '"');
-    if (options.schema !== false && tableDetails.schema) {
-      enumName = this.quoteIdentifier(tableDetails.schema) + tableDetails.delimiter + enumName;
-    }
-    return enumName;
-  }
-  pgListEnums(tableName, attrName, options) {
-    let enumName = "";
-    const tableDetails = this.extractTableDetails(tableName, options);
-    if (tableDetails.tableName && attrName) {
-      enumName = ` AND t.typname=${this.pgEnumName(tableDetails.tableName, attrName, { schema: false }).replace(/"/g, "'")}`;
-    }
-    return `SELECT t.typname enum_name, array_agg(e.enumlabel ORDER BY enumsortorder) enum_value FROM pg_type t JOIN pg_enum e ON t.oid = e.enumtypid JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace WHERE n.nspname = '${tableDetails.schema}'${enumName} GROUP BY 1`;
-  }
-  pgEnum(tableName, attr, dataType, options) {
-    const enumName = this.pgEnumName(tableName, attr, options);
-    let values;
-    if (dataType.values) {
-      values = `ENUM(${dataType.values.map((value) => this.escape(value)).join(", ")})`;
-    } else {
-      values = dataType.toString().match(/^ENUM\(.+\)/)[0];
-    }
-    let sql = `DO ${this.escape(`BEGIN CREATE TYPE ${enumName} AS ${values}; EXCEPTION WHEN duplicate_object THEN null; END`)};`;
-    if (!!options && options.force === true) {
-      sql = this.pgEnumDrop(tableName, attr) + sql;
-    }
-    return sql;
-  }
-  pgEnumAdd(tableName, attr, value, options) {
-    const enumName = this.pgEnumName(tableName, attr);
-    let sql = `ALTER TYPE ${enumName} ADD VALUE `;
-    if (semver.gte(this.sequelize.options.databaseVersion, "9.3.0")) {
-      sql += "IF NOT EXISTS ";
-    }
-    sql += this.escape(value);
-    if (options.before) {
-      sql += ` BEFORE ${this.escape(options.before)}`;
-    } else if (options.after) {
-      sql += ` AFTER ${this.escape(options.after)}`;
-    }
-    return sql;
-  }
-  pgEnumDrop(tableName, attr, enumName) {
-    enumName = enumName || this.pgEnumName(tableName, attr);
-    return `DROP TYPE IF EXISTS ${enumName}; `;
-  }
-  fromArray(text) {
-    text = text.replace(/^{/, "").replace(/}$/, "");
-    let matches = text.match(/("(?:\\.|[^"\\\\])*"|[^,]*)(?:\s*,\s*|\s*$)/ig);
-    if (matches.length < 1) {
-      return [];
-    }
-    matches = matches.map((m) => m.replace(/",$/, "").replace(/,$/, "").replace(/(^"|"$)/g, ""));
-    return matches.slice(0, -1);
-  }
-  dataTypeMapping(tableName, attr, dataType) {
-    if (dataType.includes("PRIMARY KEY")) {
-      dataType = dataType.replace("PRIMARY KEY", "");
-    }
-    if (dataType.includes("SERIAL")) {
-      if (dataType.includes("BIGINT")) {
-        dataType = dataType.replace("SERIAL", "BIGSERIAL");
-        dataType = dataType.replace("BIGINT", "");
-      } else if (dataType.includes("SMALLINT")) {
-        dataType = dataType.replace("SERIAL", "SMALLSERIAL");
-        dataType = dataType.replace("SMALLINT", "");
-      } else {
-        dataType = dataType.replace("INTEGER", "");
-      }
-      dataType = dataType.replace("NOT NULL", "");
-    }
-    if (dataType.startsWith("ENUM(")) {
-      dataType = dataType.replace(/^ENUM\(.+\)/, this.pgEnumName(tableName, attr));
-    }
-    return dataType;
-  }
-  getForeignKeysQuery(tableName) {
-    return `SELECT conname as constraint_name, pg_catalog.pg_get_constraintdef(r.oid, true) as condef FROM pg_catalog.pg_constraint r WHERE r.conrelid = (SELECT oid FROM pg_class WHERE relname = '${tableName}' LIMIT 1) AND r.contype = 'f' ORDER BY 1;`;
-  }
-  _getForeignKeyReferencesQueryPrefix() {
-    return "SELECT DISTINCT tc.constraint_name as constraint_name, tc.constraint_schema as constraint_schema, tc.constraint_catalog as constraint_catalog, tc.table_name as table_name,tc.table_schema as table_schema,tc.table_catalog as table_catalog,tc.initially_deferred as initially_deferred,tc.is_deferrable as is_deferrable,kcu.column_name as column_name,ccu.table_schema  AS referenced_table_schema,ccu.table_catalog  AS referenced_table_catalog,ccu.table_name  AS referenced_table_name,ccu.column_name AS referenced_column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name ";
-  }
-  getForeignKeyReferencesQuery(tableName, catalogName, schemaName) {
-    return `${this._getForeignKeyReferencesQueryPrefix()}WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name = '${tableName}'${catalogName ? ` AND tc.table_catalog = '${catalogName}'` : ""}${schemaName ? ` AND tc.table_schema = '${schemaName}'` : ""}`;
-  }
-  getForeignKeyReferenceQuery(table, columnName) {
-    const tableName = table.tableName || table;
-    const schema = table.schema;
-    return `${this._getForeignKeyReferencesQueryPrefix()}WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name='${tableName}' AND  kcu.column_name = '${columnName}'${schema ? ` AND tc.table_schema = '${schema}'` : ""}`;
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return `ALTER TABLE ${this.quoteTable(tableName)} DROP CONSTRAINT ${this.quoteIdentifier(foreignKey)};`;
-  }
-  quoteIdentifier(identifier, force) {
-    const optForceQuote = force || false;
-    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;
-    const rawIdentifier = Utils.removeTicks(identifier, '"');
-    if (optForceQuote === true || optQuoteIdentifiers !== false || identifier.includes(".") || identifier.includes("->") || POSTGRES_RESERVED_WORDS.includes(rawIdentifier.toLowerCase())) {
-      return Utils.addTicks(rawIdentifier, '"');
-    }
-    return rawIdentifier;
-  }
-}
-module.exports = PostgresQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('../../utils');\nconst util = require('util');\nconst DataTypes = require('../../data-types');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst semver = require('semver');\nconst _ = require('lodash');\n\n/**\n * list of reserved words in PostgreSQL 10\n * source: https://www.postgresql.org/docs/10/static/sql-keywords-appendix.html\n *\n * @private\n */\nconst POSTGRES_RESERVED_WORDS = 'all,analyse,analyze,and,any,array,as,asc,asymmetric,authorization,binary,both,case,cast,check,collate,collation,column,concurrently,constraint,create,cross,current_catalog,current_date,current_role,current_schema,current_time,current_timestamp,current_user,default,deferrable,desc,distinct,do,else,end,except,false,fetch,for,foreign,freeze,from,full,grant,group,having,ilike,in,initially,inner,intersect,into,is,isnull,join,lateral,leading,left,like,limit,localtime,localtimestamp,natural,not,notnull,null,offset,on,only,or,order,outer,overlaps,placing,primary,references,returning,right,select,session_user,similar,some,symmetric,table,tablesample,then,to,trailing,true,union,unique,user,using,variadic,verbose,when,where,window,with'.split(',');\n\nclass PostgresQueryGenerator extends AbstractQueryGenerator {\n  setSearchPath(searchPath) {\n    return `SET search_path to ${searchPath};`;\n  }\n\n  createDatabaseQuery(databaseName, options) {\n    options = {\n      encoding: null,\n      collate: null,\n      ...options\n    };\n\n    const values = {\n      database: this.quoteTable(databaseName),\n      encoding: options.encoding ? ` ENCODING = ${this.escape(options.encoding)}` : '',\n      collation: options.collate ? ` LC_COLLATE = ${this.escape(options.collate)}` : '',\n      ctype: options.ctype ? ` LC_CTYPE = ${this.escape(options.ctype)}` : '',\n      template: options.template ? ` TEMPLATE = ${this.escape(options.template)}` : ''\n    };\n\n    return `CREATE DATABASE ${values.database}${values.encoding}${values.collation}${values.ctype}${values.template};`;\n  }\n\n  dropDatabaseQuery(databaseName) {\n    return `DROP DATABASE IF EXISTS ${this.quoteTable(databaseName)};`;\n  }\n\n  createSchema(schema) {\n    const databaseVersion = _.get(this, 'sequelize.options.databaseVersion', 0);\n\n    if (databaseVersion && semver.gte(databaseVersion, '9.2.0')) {\n      return `CREATE SCHEMA IF NOT EXISTS ${this.quoteIdentifier(schema)};`;\n    }\n\n    return `CREATE SCHEMA ${this.quoteIdentifier(schema)};`;\n  }\n\n  dropSchema(schema) {\n    return `DROP SCHEMA IF EXISTS ${this.quoteIdentifier(schema)} CASCADE;`;\n  }\n\n  showSchemasQuery() {\n    return \"SELECT schema_name FROM information_schema.schemata WHERE schema_name <> 'information_schema' AND schema_name != 'public' AND schema_name !~ E'^pg_';\";\n  }\n\n  versionQuery() {\n    return 'SHOW SERVER_VERSION';\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    options = { ...options };\n\n    //Postgres 9.0 does not support CREATE TABLE IF NOT EXISTS, 9.1 and above do\n    const databaseVersion = _.get(this, 'sequelize.options.databaseVersion', 0);\n    const attrStr = [];\n    let comments = '';\n    let columnComments = '';\n\n    const quotedTable = this.quoteTable(tableName);\n\n    if (options.comment && typeof options.comment === 'string') {\n      comments += `; COMMENT ON TABLE ${quotedTable} IS ${this.escape(options.comment)}`;\n    }\n\n    for (const attr in attributes) {\n      const quotedAttr = this.quoteIdentifier(attr);\n      const i = attributes[attr].indexOf('COMMENT ');\n      if (i !== -1) {\n        // Move comment to a separate query\n        const escapedCommentText = this.escape(attributes[attr].substring(i + 8));\n        columnComments += `; COMMENT ON COLUMN ${quotedTable}.${quotedAttr} IS ${escapedCommentText}`;\n        attributes[attr] = attributes[attr].substring(0, i);\n      }\n\n      const dataType = this.dataTypeMapping(tableName, attr, attributes[attr]);\n      attrStr.push(`${quotedAttr} ${dataType}`);\n    }\n\n\n    let attributesClause = attrStr.join(', ');\n\n    if (options.uniqueKeys) {\n      _.each(options.uniqueKeys, columns => {\n        if (columns.customIndex) {\n          attributesClause += `, UNIQUE (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ')})`;\n        }\n      });\n    }\n\n    const pks = _.reduce(attributes, (acc, attribute, key) => {\n      if (attribute.includes('PRIMARY KEY')) {\n        acc.push(this.quoteIdentifier(key));\n      }\n      return acc;\n    }, []).join(',');\n\n    if (pks.length > 0) {\n      attributesClause += `, PRIMARY KEY (${pks})`;\n    }\n\n    return `CREATE TABLE ${databaseVersion === 0 || semver.gte(databaseVersion, '9.1.0') ? 'IF NOT EXISTS ' : ''}${quotedTable} (${attributesClause})${comments}${columnComments};`;\n  }\n\n  dropTableQuery(tableName, options) {\n    options = options || {};\n    return `DROP TABLE IF EXISTS ${this.quoteTable(tableName)}${options.cascade ? ' CASCADE' : ''};`;\n  }\n\n  showTablesQuery() {\n    const schema = this.options.schema || 'public';\n\n    return `SELECT table_name FROM information_schema.tables WHERE table_schema = ${this.escape(schema)} AND table_type LIKE '%TABLE' AND table_name != 'spatial_ref_sys';`;\n  }\n\n  tableExistsQuery(tableName) {\n    const table = tableName.tableName || tableName;\n    const schema = tableName.schema || 'public';\n\n    return `SELECT table_name FROM information_schema.tables WHERE table_schema = ${this.escape(schema)} AND table_name = ${this.escape(table)}`;\n  }\n\n  describeTableQuery(tableName, schema) {\n    schema = schema || this.options.schema || 'public';\n\n    return 'SELECT ' +\n      'pk.constraint_type as \"Constraint\",' +\n      'c.column_name as \"Field\", ' +\n      'c.column_default as \"Default\",' +\n      'c.is_nullable as \"Null\", ' +\n      '(CASE WHEN c.udt_name = \\'hstore\\' THEN c.udt_name ELSE c.data_type END) || (CASE WHEN c.character_maximum_length IS NOT NULL THEN \\'(\\' || c.character_maximum_length || \\')\\' ELSE \\'\\' END) as \"Type\", ' +\n      '(SELECT array_agg(e.enumlabel) FROM pg_catalog.pg_type t JOIN pg_catalog.pg_enum e ON t.oid=e.enumtypid WHERE t.typname=c.udt_name) AS \"special\", ' +\n      '(SELECT pgd.description FROM pg_catalog.pg_statio_all_tables AS st INNER JOIN pg_catalog.pg_description pgd on (pgd.objoid=st.relid) WHERE c.ordinal_position=pgd.objsubid AND c.table_name=st.relname) AS \"Comment\" ' +\n      'FROM information_schema.columns c ' +\n      'LEFT JOIN (SELECT tc.table_schema, tc.table_name, ' +\n      'cu.column_name, tc.constraint_type ' +\n      'FROM information_schema.TABLE_CONSTRAINTS tc ' +\n      'JOIN information_schema.KEY_COLUMN_USAGE  cu ' +\n      'ON tc.table_schema=cu.table_schema and tc.table_name=cu.table_name ' +\n      'and tc.constraint_name=cu.constraint_name ' +\n      'and tc.constraint_type=\\'PRIMARY KEY\\') pk ' +\n      'ON pk.table_schema=c.table_schema ' +\n      'AND pk.table_name=c.table_name ' +\n      'AND pk.column_name=c.column_name ' +\n      `WHERE c.table_name = ${this.escape(tableName)} AND c.table_schema = ${this.escape(schema)}`;\n  }\n\n  /**\n   * Check whether the statmement is json function or simple path\n   *\n   * @param   {string}  stmt  The statement to validate\n   * @returns {boolean}       true if the given statement is json function\n   * @throws  {Error}         throw if the statement looks like json function but has invalid token\n   */\n  _checkValidJsonStatement(stmt) {\n    if (typeof stmt !== 'string') {\n      return false;\n    }\n\n    // https://www.postgresql.org/docs/current/static/functions-json.html\n    const jsonFunctionRegex = /^\\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\\([^)]*\\)/i;\n    const jsonOperatorRegex = /^\\s*(->>?|#>>?|@>|<@|\\?[|&]?|\\|{2}|#-)/i;\n    const tokenCaptureRegex = /^\\s*((?:([`\"'])(?:(?!\\2).|\\2{2})*\\2)|[\\w\\d\\s]+|[().,;+-])/i;\n\n    let currentIndex = 0;\n    let openingBrackets = 0;\n    let closingBrackets = 0;\n    let hasJsonFunction = false;\n    let hasInvalidToken = false;\n\n    while (currentIndex < stmt.length) {\n      const string = stmt.substr(currentIndex);\n      const functionMatches = jsonFunctionRegex.exec(string);\n      if (functionMatches) {\n        currentIndex += functionMatches[0].indexOf('(');\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const operatorMatches = jsonOperatorRegex.exec(string);\n      if (operatorMatches) {\n        currentIndex += operatorMatches[0].length;\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const tokenMatches = tokenCaptureRegex.exec(string);\n      if (tokenMatches) {\n        const capturedToken = tokenMatches[1];\n        if (capturedToken === '(') {\n          openingBrackets++;\n        } else if (capturedToken === ')') {\n          closingBrackets++;\n        } else if (capturedToken === ';') {\n          hasInvalidToken = true;\n          break;\n        }\n        currentIndex += tokenMatches[0].length;\n        continue;\n      }\n\n      break;\n    }\n\n    // Check invalid json statement\n    hasInvalidToken |= openingBrackets !== closingBrackets;\n    if (hasJsonFunction && hasInvalidToken) {\n      throw new Error(`Invalid json statement: ${stmt}`);\n    }\n\n    // return true if the statement has valid json function\n    return hasJsonFunction;\n  }\n\n  handleSequelizeMethod(smth, tableName, factory, options, prepend) {\n    if (smth instanceof Utils.Json) {\n      // Parse nested object\n      if (smth.conditions) {\n        const conditions = this.parseConditionObject(smth.conditions).map(condition =>\n          `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`\n        );\n\n        return conditions.join(' AND ');\n      }\n      if (smth.path) {\n        let str;\n\n        // Allow specifying conditions using the postgres json syntax\n        if (this._checkValidJsonStatement(smth.path)) {\n          str = smth.path;\n        } else {\n          // Also support json property accessors\n          const paths = _.toPath(smth.path);\n          const column = paths.shift();\n          str = this.jsonPathExtractionQuery(column, paths);\n        }\n\n        if (smth.value) {\n          str += util.format(' = %s', this.escape(smth.value));\n        }\n\n        return str;\n      }\n    }\n    return super.handleSequelizeMethod.call(this, smth, tableName, factory, options, prepend);\n  }\n\n  addColumnQuery(table, key, attribute) {\n    const dbDataType = this.attributeToSQL(attribute, { context: 'addColumn', table, key });\n    const dataType = attribute.type || attribute;\n    const definition = this.dataTypeMapping(table, key, dbDataType);\n    const quotedKey = this.quoteIdentifier(key);\n    const quotedTable = this.quoteTable(this.extractTableDetails(table));\n\n    let query = `ALTER TABLE ${quotedTable} ADD COLUMN ${quotedKey} ${definition};`;\n\n    if (dataType instanceof DataTypes.ENUM) {\n      query = this.pgEnum(table, key, dataType) + query;\n    } else if (dataType.type && dataType.type instanceof DataTypes.ENUM) {\n      query = this.pgEnum(table, key, dataType.type) + query;\n    }\n\n    return query;\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    const quotedTableName = this.quoteTable(this.extractTableDetails(tableName));\n    const quotedAttributeName = this.quoteIdentifier(attributeName);\n    return `ALTER TABLE ${quotedTableName} DROP COLUMN ${quotedAttributeName};`;\n  }\n\n  changeColumnQuery(tableName, attributes) {\n    const query = subQuery => `ALTER TABLE ${this.quoteTable(tableName)} ALTER COLUMN ${subQuery};`;\n    const sql = [];\n    for (const attributeName in attributes) {\n      let definition = this.dataTypeMapping(tableName, attributeName, attributes[attributeName]);\n      let attrSql = '';\n\n      if (definition.includes('NOT NULL')) {\n        attrSql += query(`${this.quoteIdentifier(attributeName)} SET NOT NULL`);\n\n        definition = definition.replace('NOT NULL', '').trim();\n      } else if (!definition.includes('REFERENCES')) {\n        attrSql += query(`${this.quoteIdentifier(attributeName)} DROP NOT NULL`);\n      }\n\n      if (definition.includes('DEFAULT')) {\n        attrSql += query(`${this.quoteIdentifier(attributeName)} SET DEFAULT ${definition.match(/DEFAULT ([^;]+)/)[1]}`);\n\n        definition = definition.replace(/(DEFAULT[^;]+)/, '').trim();\n      } else if (!definition.includes('REFERENCES')) {\n        attrSql += query(`${this.quoteIdentifier(attributeName)} DROP DEFAULT`);\n      }\n\n      if (attributes[attributeName].startsWith('ENUM(')) {\n        attrSql += this.pgEnum(tableName, attributeName, attributes[attributeName]);\n        definition = definition.replace(/^ENUM\\(.+\\)/, this.pgEnumName(tableName, attributeName, { schema: false }));\n        definition += ` USING (${this.quoteIdentifier(attributeName)}::${this.pgEnumName(tableName, attributeName)})`;\n      }\n\n      if (definition.match(/UNIQUE;*$/)) {\n        definition = definition.replace(/UNIQUE;*$/, '');\n        attrSql += query(`ADD UNIQUE (${this.quoteIdentifier(attributeName)})`).replace('ALTER COLUMN', '');\n      }\n\n      if (definition.includes('REFERENCES')) {\n        definition = definition.replace(/.+?(?=REFERENCES)/, '');\n        attrSql += query(`ADD FOREIGN KEY (${this.quoteIdentifier(attributeName)}) ${definition}`).replace('ALTER COLUMN', '');\n      } else {\n        attrSql += query(`${this.quoteIdentifier(attributeName)} TYPE ${definition}`);\n      }\n\n      sql.push(attrSql);\n    }\n\n    return sql.join('');\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n\n    const attrString = [];\n\n    for (const attributeName in attributes) {\n      attrString.push(`${this.quoteIdentifier(attrBefore)} TO ${this.quoteIdentifier(attributeName)}`);\n    }\n\n    return `ALTER TABLE ${this.quoteTable(tableName)} RENAME COLUMN ${attrString.join(', ')};`;\n  }\n\n  fn(fnName, tableName, parameters, body, returns, language) {\n    fnName = fnName || 'testfunc';\n    language = language || 'plpgsql';\n    returns = returns ? `RETURNS ${returns}` : '';\n    parameters = parameters || '';\n\n    return `CREATE OR REPLACE FUNCTION pg_temp.${fnName}(${parameters}) ${returns} AS $func$ BEGIN ${body} END; $func$ LANGUAGE ${language}; SELECT * FROM pg_temp.${fnName}();`;\n  }\n\n  truncateTableQuery(tableName, options = {}) {\n    return [\n      `TRUNCATE ${this.quoteTable(tableName)}`,\n      options.restartIdentity ? ' RESTART IDENTITY' : '',\n      options.cascade ? ' CASCADE' : ''\n    ].join('');\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    const table = this.quoteTable(tableName);\n    let whereClause = this.getWhereConditions(where, null, model, options);\n    const limit = options.limit ? ` LIMIT ${this.escape(options.limit)}` : '';\n    let primaryKeys = '';\n    let primaryKeysSelection = '';\n\n    if (whereClause) {\n      whereClause = ` WHERE ${whereClause}`;\n    }\n\n    if (options.limit) {\n      if (!model) {\n        throw new Error('Cannot LIMIT delete without a model.');\n      }\n\n      const pks = Object.values(model.primaryKeys).map(pk => this.quoteIdentifier(pk.field)).join(',');\n\n      primaryKeys = model.primaryKeyAttributes.length > 1 ? `(${pks})` : pks;\n      primaryKeysSelection = pks;\n\n      return `DELETE FROM ${table} WHERE ${primaryKeys} IN (SELECT ${primaryKeysSelection} FROM ${table}${whereClause}${limit})`;\n    }\n    return `DELETE FROM ${table}${whereClause}`;\n  }\n\n  showIndexesQuery(tableName) {\n    let schemaJoin = '';\n    let schemaWhere = '';\n    if (typeof tableName !== 'string') {\n      schemaJoin = ', pg_namespace s';\n      schemaWhere = ` AND s.oid = t.relnamespace AND s.nspname = '${tableName.schema}'`;\n      tableName = tableName.tableName;\n    }\n\n    // This is ARCANE!\n    return 'SELECT i.relname AS name, ix.indisprimary AS primary, ix.indisunique AS unique, ix.indkey AS indkey, ' +\n      'array_agg(a.attnum) as column_indexes, array_agg(a.attname) AS column_names, pg_get_indexdef(ix.indexrelid) ' +\n      `AS definition FROM pg_class t, pg_class i, pg_index ix, pg_attribute a${schemaJoin} ` +\n      'WHERE t.oid = ix.indrelid AND i.oid = ix.indexrelid AND a.attrelid = t.oid AND ' +\n      `t.relkind = 'r' and t.relname = '${tableName}'${schemaWhere} ` +\n      'GROUP BY i.relname, ix.indexrelid, ix.indisprimary, ix.indisunique, ix.indkey ORDER BY i.relname;';\n  }\n\n  showConstraintsQuery(tableName) {\n    //Postgres converts camelCased alias to lowercase unless quoted\n    return [\n      'SELECT constraint_catalog AS \"constraintCatalog\",',\n      'constraint_schema AS \"constraintSchema\",',\n      'constraint_name AS \"constraintName\",',\n      'table_catalog AS \"tableCatalog\",',\n      'table_schema AS \"tableSchema\",',\n      'table_name AS \"tableName\",',\n      'constraint_type AS \"constraintType\",',\n      'is_deferrable AS \"isDeferrable\",',\n      'initially_deferred AS \"initiallyDeferred\"',\n      'from INFORMATION_SCHEMA.table_constraints',\n      `WHERE table_name='${tableName}';`\n    ].join(' ');\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes, options) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return [\n      'DROP INDEX',\n      options && options.concurrently && 'CONCURRENTLY',\n      `IF EXISTS ${this.quoteIdentifiers(indexName)}`\n    ].filter(Boolean).join(' ');\n  }\n\n  addLimitAndOffset(options) {\n    let fragment = '';\n    /* eslint-disable */\n    if (options.limit != null) {\n      fragment += ' LIMIT ' + this.escape(options.limit);\n    }\n    if (options.offset != null) {\n      fragment += ' OFFSET ' + this.escape(options.offset);\n    }\n    /* eslint-enable */\n\n    return fragment;\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    let type;\n    if (\n      attribute.type instanceof DataTypes.ENUM ||\n      attribute.type instanceof DataTypes.ARRAY && attribute.type.type instanceof DataTypes.ENUM\n    ) {\n      const enumType = attribute.type.type || attribute.type;\n      let values = attribute.values;\n\n      if (enumType.values && !attribute.values) {\n        values = enumType.values;\n      }\n\n      if (Array.isArray(values) && values.length > 0) {\n        type = `ENUM(${values.map(value => this.escape(value)).join(', ')})`;\n\n        if (attribute.type instanceof DataTypes.ARRAY) {\n          type += '[]';\n        }\n\n      } else {\n        throw new Error(\"Values for ENUM haven't been defined.\");\n      }\n    }\n\n    if (!type) {\n      type = attribute.type;\n    }\n\n    let sql = type.toString();\n\n    if (Object.prototype.hasOwnProperty.call(attribute, 'allowNull') && !attribute.allowNull) {\n      sql += ' NOT NULL';\n    }\n\n    if (attribute.autoIncrement) {\n      if (attribute.autoIncrementIdentity) {\n        sql += ' GENERATED BY DEFAULT AS IDENTITY';\n      } else {\n        sql += ' SERIAL';\n      }\n    }\n\n    if (Utils.defaultValueSchemable(attribute.defaultValue)) {\n      sql += ` DEFAULT ${this.escape(attribute.defaultValue, attribute)}`;\n    }\n\n    if (attribute.unique === true) {\n      sql += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      sql += ' PRIMARY KEY';\n    }\n\n    if (attribute.references) {\n      let referencesTable = this.quoteTable(attribute.references.model);\n      let schema;\n\n      if (options.schema) {\n        schema = options.schema;\n      } else if (\n        (!attribute.references.model || typeof attribute.references.model == 'string')\n        && options.table\n        && options.table.schema\n      ) {\n        schema = options.table.schema;\n      }\n\n      if (schema) {\n        referencesTable = this.quoteTable(this.addSchema({\n          tableName: referencesTable,\n          _schema: schema\n        }));\n      }\n\n      let referencesKey;\n\n      if (!options.withoutForeignKeyConstraints) {\n        if (attribute.references.key) {\n          referencesKey = this.quoteIdentifiers(attribute.references.key);\n        } else {\n          referencesKey = this.quoteIdentifier('id');\n        }\n\n        sql += ` REFERENCES ${referencesTable} (${referencesKey})`;\n\n        if (attribute.onDelete) {\n          sql += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;\n        }\n\n        if (attribute.onUpdate) {\n          sql += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;\n        }\n\n        if (attribute.references.deferrable) {\n          sql += ` ${attribute.references.deferrable.toString(this)}`;\n        }\n      }\n    }\n\n    if (attribute.comment && typeof attribute.comment === 'string') {\n      if (options && ['addColumn', 'changeColumn'].includes(options.context)) {\n        const quotedAttr = this.quoteIdentifier(options.key);\n        const escapedCommentText = this.escape(attribute.comment);\n        sql += `; COMMENT ON COLUMN ${this.quoteTable(options.table)}.${quotedAttr} IS ${escapedCommentText}`;\n      } else {\n        // for createTable event which does it's own parsing\n        // TODO: centralize creation of comment statements here\n        sql += ` COMMENT ${attribute.comment}`;\n      }\n    }\n\n    return sql;\n  }\n\n  deferConstraintsQuery(options) {\n    return options.deferrable.toString(this);\n  }\n\n  setConstraintQuery(columns, type) {\n    let columnFragment = 'ALL';\n\n    if (columns) {\n      columnFragment = columns.map(column => this.quoteIdentifier(column)).join(', ');\n    }\n\n    return `SET CONSTRAINTS ${columnFragment} ${type}`;\n  }\n\n  setDeferredQuery(columns) {\n    return this.setConstraintQuery(columns, 'DEFERRED');\n  }\n\n  setImmediateQuery(columns) {\n    return this.setConstraintQuery(columns, 'IMMEDIATE');\n  }\n\n  attributesToSQL(attributes, options) {\n    const result = {};\n\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      result[attribute.field || key] = this.attributeToSQL(attribute, { key, ...options });\n    }\n\n    return result;\n  }\n\n  createTrigger(tableName, triggerName, eventType, fireOnSpec, functionName, functionParams, optionsArray) {\n    const decodedEventType = this.decodeTriggerEventType(eventType);\n    const eventSpec = this.expandTriggerEventSpec(fireOnSpec);\n    const expandedOptions = this.expandOptions(optionsArray);\n    const paramList = this._expandFunctionParamList(functionParams);\n\n    return `CREATE ${this.triggerEventTypeIsConstraint(eventType)}TRIGGER ${this.quoteIdentifier(triggerName)} ${decodedEventType} ${\n      eventSpec} ON ${this.quoteTable(tableName)}${expandedOptions ? ` ${expandedOptions}` : ''} EXECUTE PROCEDURE ${functionName}(${paramList});`;\n  }\n\n  dropTrigger(tableName, triggerName) {\n    return `DROP TRIGGER ${this.quoteIdentifier(triggerName)} ON ${this.quoteTable(tableName)} RESTRICT;`;\n  }\n\n  renameTrigger(tableName, oldTriggerName, newTriggerName) {\n    return `ALTER TRIGGER ${this.quoteIdentifier(oldTriggerName)} ON ${this.quoteTable(tableName)} RENAME TO ${this.quoteIdentifier(newTriggerName)};`;\n  }\n\n  createFunction(functionName, params, returnType, language, body, optionsArray, options) {\n    if (!functionName || !returnType || !language || !body) throw new Error('createFunction missing some parameters. Did you pass functionName, returnType, language and body?');\n\n    const paramList = this._expandFunctionParamList(params);\n    const variableList = options && options.variables ? this._expandFunctionVariableList(options.variables) : '';\n    const expandedOptionsArray = this.expandOptions(optionsArray);\n\n    const statement = options && options.force ? 'CREATE OR REPLACE FUNCTION' : 'CREATE FUNCTION';\n\n    return `${statement} ${functionName}(${paramList}) RETURNS ${returnType} AS $func$ ${variableList} BEGIN ${body} END; $func$ language '${language}'${expandedOptionsArray};`;\n  }\n\n  dropFunction(functionName, params) {\n    if (!functionName) throw new Error('requires functionName');\n    // RESTRICT is (currently, as of 9.2) default but we'll be explicit\n    const paramList = this._expandFunctionParamList(params);\n    return `DROP FUNCTION ${functionName}(${paramList}) RESTRICT;`;\n  }\n\n  renameFunction(oldFunctionName, params, newFunctionName) {\n    const paramList = this._expandFunctionParamList(params);\n    return `ALTER FUNCTION ${oldFunctionName}(${paramList}) RENAME TO ${newFunctionName};`;\n  }\n\n  pgEscapeAndQuote(val) {\n    return this.quoteIdentifier(Utils.removeTicks(this.escape(val), \"'\"));\n  }\n\n  _expandFunctionParamList(params) {\n    if (params === undefined || !Array.isArray(params)) {\n      throw new Error('_expandFunctionParamList: function parameters array required, including an empty one for no arguments');\n    }\n\n    const paramList = [];\n    params.forEach(curParam => {\n      const paramDef = [];\n      if (curParam.type) {\n        if (curParam.direction) { paramDef.push(curParam.direction); }\n        if (curParam.name) { paramDef.push(curParam.name); }\n        paramDef.push(curParam.type);\n      } else {\n        throw new Error('function or trigger used with a parameter without any type');\n      }\n\n      const joined = paramDef.join(' ');\n      if (joined) paramList.push(joined);\n\n    });\n\n    return paramList.join(', ');\n  }\n\n  _expandFunctionVariableList(variables) {\n    if (!Array.isArray(variables)) {\n      throw new Error('_expandFunctionVariableList: function variables must be an array');\n    }\n    const variableDefinitions = [];\n    variables.forEach(variable => {\n      if (!variable.name || !variable.type) {\n        throw new Error('function variable must have a name and type');\n      }\n      let variableDefinition = `DECLARE ${variable.name} ${variable.type}`;\n      if (variable.default) {\n        variableDefinition += ` := ${variable.default}`;\n      }\n      variableDefinition += ';';\n      variableDefinitions.push(variableDefinition);\n    });\n    return variableDefinitions.join(' ');\n  }\n\n  expandOptions(options) {\n    return options === undefined || _.isEmpty(options) ?\n      '' : options.join(' ');\n  }\n\n  decodeTriggerEventType(eventSpecifier) {\n    const EVENT_DECODER = {\n      'after': 'AFTER',\n      'before': 'BEFORE',\n      'instead_of': 'INSTEAD OF',\n      'after_constraint': 'AFTER'\n    };\n\n    if (!EVENT_DECODER[eventSpecifier]) {\n      throw new Error(`Invalid trigger event specified: ${eventSpecifier}`);\n    }\n\n    return EVENT_DECODER[eventSpecifier];\n  }\n\n  triggerEventTypeIsConstraint(eventSpecifier) {\n    return eventSpecifier === 'after_constraint' ? 'CONSTRAINT ' : '';\n  }\n\n  expandTriggerEventSpec(fireOnSpec) {\n    if (_.isEmpty(fireOnSpec)) {\n      throw new Error('no table change events specified to trigger on');\n    }\n\n    return _.map(fireOnSpec, (fireValue, fireKey) => {\n      const EVENT_MAP = {\n        'insert': 'INSERT',\n        'update': 'UPDATE',\n        'delete': 'DELETE',\n        'truncate': 'TRUNCATE'\n      };\n\n      if (!EVENT_MAP[fireValue]) {\n        throw new Error(`parseTriggerEventSpec: undefined trigger event ${fireKey}`);\n      }\n\n      let eventSpec = EVENT_MAP[fireValue];\n      if (eventSpec === 'UPDATE') {\n        if (Array.isArray(fireValue) && fireValue.length > 0) {\n          eventSpec += ` OF ${fireValue.join(', ')}`;\n        }\n      }\n\n      return eventSpec;\n    }).join(' OR ');\n  }\n\n  pgEnumName(tableName, attr, options) {\n    options = options || {};\n\n    const tableDetails = this.extractTableDetails(tableName, options);\n    let enumName = Utils.addTicks(Utils.generateEnumName(tableDetails.tableName, attr), '\"');\n\n    // pgListEnums requires the enum name only, without the schema\n    if (options.schema !== false && tableDetails.schema) {\n      enumName = this.quoteIdentifier(tableDetails.schema) + tableDetails.delimiter + enumName;\n    }\n\n    return enumName;\n  }\n\n  pgListEnums(tableName, attrName, options) {\n    let enumName = '';\n    const tableDetails = this.extractTableDetails(tableName, options);\n\n    if (tableDetails.tableName && attrName) {\n      enumName = ` AND t.typname=${this.pgEnumName(tableDetails.tableName, attrName, { schema: false }).replace(/\"/g, \"'\")}`;\n    }\n\n    return 'SELECT t.typname enum_name, array_agg(e.enumlabel ORDER BY enumsortorder) enum_value FROM pg_type t ' +\n      'JOIN pg_enum e ON t.oid = e.enumtypid ' +\n      'JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace ' +\n      `WHERE n.nspname = '${tableDetails.schema}'${enumName} GROUP BY 1`;\n  }\n\n  pgEnum(tableName, attr, dataType, options) {\n    const enumName = this.pgEnumName(tableName, attr, options);\n    let values;\n\n    if (dataType.values) {\n      values = `ENUM(${dataType.values.map(value => this.escape(value)).join(', ')})`;\n    } else {\n      values = dataType.toString().match(/^ENUM\\(.+\\)/)[0];\n    }\n\n    let sql = `DO ${this.escape(`BEGIN CREATE TYPE ${enumName} AS ${values}; EXCEPTION WHEN duplicate_object THEN null; END`)};`;\n    if (!!options && options.force === true) {\n      sql = this.pgEnumDrop(tableName, attr) + sql;\n    }\n    return sql;\n  }\n\n  pgEnumAdd(tableName, attr, value, options) {\n    const enumName = this.pgEnumName(tableName, attr);\n    let sql = `ALTER TYPE ${enumName} ADD VALUE `;\n\n    if (semver.gte(this.sequelize.options.databaseVersion, '9.3.0')) {\n      sql += 'IF NOT EXISTS ';\n    }\n    sql += this.escape(value);\n\n    if (options.before) {\n      sql += ` BEFORE ${this.escape(options.before)}`;\n    } else if (options.after) {\n      sql += ` AFTER ${this.escape(options.after)}`;\n    }\n\n    return sql;\n  }\n\n  pgEnumDrop(tableName, attr, enumName) {\n    enumName = enumName || this.pgEnumName(tableName, attr);\n    return `DROP TYPE IF EXISTS ${enumName}; `;\n  }\n\n  fromArray(text) {\n    text = text.replace(/^{/, '').replace(/}$/, '');\n    let matches = text.match(/(\"(?:\\\\.|[^\"\\\\\\\\])*\"|[^,]*)(?:\\s*,\\s*|\\s*$)/ig);\n\n    if (matches.length < 1) {\n      return [];\n    }\n\n    matches = matches.map(m => m.replace(/\",$/, '').replace(/,$/, '').replace(/(^\"|\"$)/g, ''));\n\n    return matches.slice(0, -1);\n  }\n\n  dataTypeMapping(tableName, attr, dataType) {\n    if (dataType.includes('PRIMARY KEY')) {\n      dataType = dataType.replace('PRIMARY KEY', '');\n    }\n\n    if (dataType.includes('SERIAL')) {\n      if (dataType.includes('BIGINT')) {\n        dataType = dataType.replace('SERIAL', 'BIGSERIAL');\n        dataType = dataType.replace('BIGINT', '');\n      } else if (dataType.includes('SMALLINT')) {\n        dataType = dataType.replace('SERIAL', 'SMALLSERIAL');\n        dataType = dataType.replace('SMALLINT', '');\n      } else {\n        dataType = dataType.replace('INTEGER', '');\n      }\n      dataType = dataType.replace('NOT NULL', '');\n    }\n\n    if (dataType.startsWith('ENUM(')) {\n      dataType = dataType.replace(/^ENUM\\(.+\\)/, this.pgEnumName(tableName, attr));\n    }\n\n    return dataType;\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys of a table.\n   *\n   * @param  {string} tableName  The name of the table.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeysQuery(tableName) {\n    return 'SELECT conname as constraint_name, pg_catalog.pg_get_constraintdef(r.oid, true) as condef FROM pg_catalog.pg_constraint r ' +\n      `WHERE r.conrelid = (SELECT oid FROM pg_class WHERE relname = '${tableName}' LIMIT 1) AND r.contype = 'f' ORDER BY 1;`;\n  }\n\n  /**\n   * Generate common SQL prefix for getForeignKeyReferencesQuery.\n   *\n   * @returns {string}\n   */\n  _getForeignKeyReferencesQueryPrefix() {\n    return 'SELECT ' +\n      'DISTINCT tc.constraint_name as constraint_name, ' +\n      'tc.constraint_schema as constraint_schema, ' +\n      'tc.constraint_catalog as constraint_catalog, ' +\n      'tc.table_name as table_name,' +\n      'tc.table_schema as table_schema,' +\n      'tc.table_catalog as table_catalog,' +\n      'tc.initially_deferred as initially_deferred,' +\n      'tc.is_deferrable as is_deferrable,' +\n      'kcu.column_name as column_name,' +\n      'ccu.table_schema  AS referenced_table_schema,' +\n      'ccu.table_catalog  AS referenced_table_catalog,' +\n      'ccu.table_name  AS referenced_table_name,' +\n      'ccu.column_name AS referenced_column_name ' +\n      'FROM information_schema.table_constraints AS tc ' +\n      'JOIN information_schema.key_column_usage AS kcu ' +\n      'ON tc.constraint_name = kcu.constraint_name ' +\n      'JOIN information_schema.constraint_column_usage AS ccu ' +\n      'ON ccu.constraint_name = tc.constraint_name ';\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys details of a table.\n   *\n   * As for getForeignKeysQuery is not compatible with getForeignKeyReferencesQuery, so add a new function.\n   *\n   * @param {string} tableName\n   * @param {string} catalogName\n   * @param {string} schemaName\n   */\n  getForeignKeyReferencesQuery(tableName, catalogName, schemaName) {\n    return `${this._getForeignKeyReferencesQueryPrefix()\n    }WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name = '${tableName}'${\n      catalogName ? ` AND tc.table_catalog = '${catalogName}'` : ''\n    }${schemaName ? ` AND tc.table_schema = '${schemaName}'` : ''}`;\n  }\n\n  getForeignKeyReferenceQuery(table, columnName) {\n    const tableName = table.tableName || table;\n    const schema = table.schema;\n    return `${this._getForeignKeyReferencesQueryPrefix()\n    }WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name='${tableName}' AND  kcu.column_name = '${columnName}'${\n      schema ? ` AND tc.table_schema = '${schema}'` : ''}`;\n  }\n\n  /**\n   * Generates an SQL query that removes a foreign key from a table.\n   *\n   * @param  {string} tableName  The name of the table.\n   * @param  {string} foreignKey The name of the foreign key constraint.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return `ALTER TABLE ${this.quoteTable(tableName)} DROP CONSTRAINT ${this.quoteIdentifier(foreignKey)};`;\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    const optForceQuote = force || false;\n    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;\n    const rawIdentifier = Utils.removeTicks(identifier, '\"');\n\n    if (\n      optForceQuote === true ||\n      optQuoteIdentifiers !== false ||\n      identifier.includes('.') ||\n      identifier.includes('->') ||\n      POSTGRES_RESERVED_WORDS.includes(rawIdentifier.toLowerCase())\n    ) {\n      // In Postgres if tables or attributes are created double-quoted,\n      // they are also case sensitive. If they contain any uppercase\n      // characters, they must always be double-quoted. This makes it\n      // impossible to write queries in portable SQL if tables are created in\n      // this way. Hence, we strip quotes if we don't want case sensitivity.\n      return Utils.addTicks(rawIdentifier, '\"');\n    }\n    return rawIdentifier;\n  }\n}\n\nmodule.exports = PostgresQueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,171 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-var __objRest = (source, exclude) => {
-  var target = {};
-  for (var prop in source)
-    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
-      target[prop] = source[prop];
-  if (source != null && __getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(source)) {
-      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
-        target[prop] = source[prop];
-    }
-  return target;
-};
-const DataTypes = require("../../data-types");
-const QueryTypes = require("../../query-types");
-const { QueryInterface } = require("../abstract/query-interface");
-const Utils = require("../../utils");
-const Deferrable = require("../../deferrable");
-class PostgresQueryInterface extends QueryInterface {
-  async ensureEnums(tableName, attributes, options, model) {
-    const keys = Object.keys(attributes);
-    const keyLen = keys.length;
-    let sql = "";
-    let promises = [];
-    let i = 0;
-    for (i = 0; i < keyLen; i++) {
-      const attribute = attributes[keys[i]];
-      const type = attribute.type;
-      if (type instanceof DataTypes.ENUM || type instanceof DataTypes.ARRAY && type.type instanceof DataTypes.ENUM) {
-        sql = this.queryGenerator.pgListEnums(tableName, attribute.field || keys[i], options);
-        promises.push(this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { plain: true, raw: true, type: QueryTypes.SELECT })));
-      }
-    }
-    const results = await Promise.all(promises);
-    promises = [];
-    let enumIdx = 0;
-    const addEnumValue = (field, value, relativeValue, position = "before", spliceStart = promises.length) => {
-      const valueOptions = __spreadValues({}, options);
-      valueOptions.before = null;
-      valueOptions.after = null;
-      switch (position) {
-        case "after":
-          valueOptions.after = relativeValue;
-          break;
-        case "before":
-        default:
-          valueOptions.before = relativeValue;
-          break;
-      }
-      promises.splice(spliceStart, 0, () => {
-        return this.sequelize.query(this.queryGenerator.pgEnumAdd(tableName, field, value, valueOptions), valueOptions);
-      });
-    };
-    for (i = 0; i < keyLen; i++) {
-      const attribute = attributes[keys[i]];
-      const type = attribute.type;
-      const enumType = type.type || type;
-      const field = attribute.field || keys[i];
-      if (type instanceof DataTypes.ENUM || type instanceof DataTypes.ARRAY && enumType instanceof DataTypes.ENUM) {
-        if (!results[enumIdx]) {
-          promises.push(() => {
-            return this.sequelize.query(this.queryGenerator.pgEnum(tableName, field, enumType, options), __spreadProps(__spreadValues({}, options), { raw: true }));
-          });
-        } else if (!!results[enumIdx] && !!model) {
-          const enumVals = this.queryGenerator.fromArray(results[enumIdx].enum_value);
-          const vals = enumType.values;
-          let lastOldEnumValue;
-          let rightestPosition = -1;
-          for (let oldIndex = 0; oldIndex < enumVals.length; oldIndex++) {
-            const enumVal = enumVals[oldIndex];
-            const newIdx = vals.indexOf(enumVal);
-            lastOldEnumValue = enumVal;
-            if (newIdx === -1) {
-              continue;
-            }
-            const newValuesBefore = vals.slice(0, newIdx);
-            const promisesLength = promises.length;
-            for (let reverseIdx = newValuesBefore.length - 1; reverseIdx >= 0; reverseIdx--) {
-              if (~enumVals.indexOf(newValuesBefore[reverseIdx])) {
-                break;
-              }
-              addEnumValue(field, newValuesBefore[reverseIdx], lastOldEnumValue, "before", promisesLength);
-            }
-            if (newIdx > rightestPosition) {
-              rightestPosition = newIdx;
-            }
-          }
-          if (lastOldEnumValue && rightestPosition < vals.length - 1) {
-            const remainingEnumValues = vals.slice(rightestPosition + 1);
-            for (let reverseIdx = remainingEnumValues.length - 1; reverseIdx >= 0; reverseIdx--) {
-              addEnumValue(field, remainingEnumValues[reverseIdx], lastOldEnumValue, "after");
-            }
-          }
-          enumIdx++;
-        }
-      }
-    }
-    const result = await promises.reduce(async (promise, asyncFunction) => await asyncFunction(await promise), Promise.resolve());
-    if (promises.length) {
-      await this.sequelize.dialect.connectionManager._refreshDynamicOIDs();
-    }
-    return result;
-  }
-  async getForeignKeyReferencesForTable(table, options) {
-    const queryOptions = __spreadProps(__spreadValues({}, options), {
-      type: QueryTypes.FOREIGNKEYS
-    });
-    const query = this.queryGenerator.getForeignKeyReferencesQuery(table.tableName || table, this.sequelize.config.database, table.schema);
-    const result = await this.sequelize.query(query, queryOptions);
-    return result.map((fkMeta) => {
-      const _a = Utils.camelizeObjectKeys(fkMeta), { initiallyDeferred, isDeferrable } = _a, remaining = __objRest(_a, ["initiallyDeferred", "isDeferrable"]);
-      return __spreadProps(__spreadValues({}, remaining), {
-        deferrable: isDeferrable === "NO" ? Deferrable.NOT : initiallyDeferred === "NO" ? Deferrable.INITIALLY_IMMEDIATE : Deferrable.INITIALLY_DEFERRED
-      });
-    });
-  }
-  async dropEnum(enumName, options) {
-    options = options || {};
-    return this.sequelize.query(this.queryGenerator.pgEnumDrop(null, null, this.queryGenerator.pgEscapeAndQuote(enumName)), __spreadProps(__spreadValues({}, options), { raw: true }));
-  }
-  async dropAllEnums(options) {
-    options = options || {};
-    const enums = await this.pgListEnums(null, options);
-    return await Promise.all(enums.map((result) => this.sequelize.query(this.queryGenerator.pgEnumDrop(null, null, this.queryGenerator.pgEscapeAndQuote(result.enum_name)), __spreadProps(__spreadValues({}, options), { raw: true }))));
-  }
-  async pgListEnums(tableName, options) {
-    options = options || {};
-    const sql = this.queryGenerator.pgListEnums(tableName);
-    return this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { plain: false, raw: true, type: QueryTypes.SELECT }));
-  }
-  async dropTable(tableName, options) {
-    await super.dropTable(tableName, options);
-    const promises = [];
-    const instanceTable = this.sequelize.modelManager.getModel(tableName, { attribute: "tableName" });
-    if (!instanceTable) {
-      return;
-    }
-    const getTableName = (!options || !options.schema || options.schema === "public" ? "" : `${options.schema}_`) + tableName;
-    const keys = Object.keys(instanceTable.rawAttributes);
-    const keyLen = keys.length;
-    for (let i = 0; i < keyLen; i++) {
-      if (instanceTable.rawAttributes[keys[i]].type instanceof DataTypes.ENUM) {
-        const sql = this.queryGenerator.pgEnumDrop(getTableName, keys[i]);
-        options.supportsSearchPath = false;
-        promises.push(this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), { raw: true })));
-      }
-    }
-    await Promise.all(promises);
-  }
-}
-exports.PostgresQueryInterface = PostgresQueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst DataTypes = require('../../data-types');\nconst QueryTypes = require('../../query-types');\nconst { QueryInterface } = require('../abstract/query-interface');\nconst Utils = require('../../utils');\nconst Deferrable = require('../../deferrable');\n\n/**\n * The interface that Sequelize uses to talk with Postgres database\n */\nclass PostgresQueryInterface extends QueryInterface {\n  /**\n   * Ensure enum and their values.\n   *\n   * @param {string} tableName  Name of table to create\n   * @param {object} attributes Object representing a list of normalized table attributes\n   * @param {object} [options]\n   * @param {Model}  [model]\n   *\n   * @protected\n   */\n  async ensureEnums(tableName, attributes, options, model) {\n    const keys = Object.keys(attributes);\n    const keyLen = keys.length;\n\n    let sql = '';\n    let promises = [];\n    let i = 0;\n\n    for (i = 0; i < keyLen; i++) {\n      const attribute = attributes[keys[i]];\n      const type = attribute.type;\n\n      if (\n        type instanceof DataTypes.ENUM ||\n        type instanceof DataTypes.ARRAY && type.type instanceof DataTypes.ENUM //ARRAY sub type is ENUM\n      ) {\n        sql = this.queryGenerator.pgListEnums(tableName, attribute.field || keys[i], options);\n        promises.push(this.sequelize.query(\n          sql,\n          { ...options, plain: true, raw: true, type: QueryTypes.SELECT }\n        ));\n      }\n    }\n\n    const results = await Promise.all(promises);\n    promises = [];\n    let enumIdx = 0;\n\n    // This little function allows us to re-use the same code that prepends or appends new value to enum array\n    const addEnumValue = (field, value, relativeValue, position = 'before', spliceStart = promises.length) => {\n      const valueOptions = { ...options };\n      valueOptions.before = null;\n      valueOptions.after = null;\n\n      switch (position) {\n        case 'after':\n          valueOptions.after = relativeValue;\n          break;\n        case 'before':\n        default:\n          valueOptions.before = relativeValue;\n          break;\n      }\n\n      promises.splice(spliceStart, 0, () => {\n        return this.sequelize.query(this.queryGenerator.pgEnumAdd(\n          tableName, field, value, valueOptions\n        ), valueOptions);\n      });\n    };\n\n    for (i = 0; i < keyLen; i++) {\n      const attribute = attributes[keys[i]];\n      const type = attribute.type;\n      const enumType = type.type || type;\n      const field = attribute.field || keys[i];\n\n      if (\n        type instanceof DataTypes.ENUM ||\n        type instanceof DataTypes.ARRAY && enumType instanceof DataTypes.ENUM //ARRAY sub type is ENUM\n      ) {\n        // If the enum type doesn't exist then create it\n        if (!results[enumIdx]) {\n          promises.push(() => {\n            return this.sequelize.query(this.queryGenerator.pgEnum(tableName, field, enumType, options), { ...options, raw: true });\n          });\n        } else if (!!results[enumIdx] && !!model) {\n          const enumVals = this.queryGenerator.fromArray(results[enumIdx].enum_value);\n          const vals = enumType.values;\n\n          // Going through already existing values allows us to make queries that depend on those values\n          // We will prepend all new values between the old ones, but keep in mind - we can't change order of already existing values\n          // Then we append the rest of new values AFTER the latest already existing value\n          // E.g.: [1,2] -> [0,2,1] ==> [1,0,2]\n          // E.g.: [1,2,3] -> [2,1,3,4] ==> [1,2,3,4]\n          // E.g.: [1] -> [0,2,3] ==> [1,0,2,3]\n          let lastOldEnumValue;\n          let rightestPosition = -1;\n          for (let oldIndex = 0; oldIndex < enumVals.length; oldIndex++) {\n            const enumVal = enumVals[oldIndex];\n            const newIdx = vals.indexOf(enumVal);\n            lastOldEnumValue = enumVal;\n\n            if (newIdx === -1) {\n              continue;\n            }\n\n            const newValuesBefore = vals.slice(0, newIdx);\n            const promisesLength = promises.length;\n            // we go in reverse order so we could stop when we meet old value\n            for (let reverseIdx = newValuesBefore.length - 1; reverseIdx >= 0; reverseIdx--) {\n              if (~enumVals.indexOf(newValuesBefore[reverseIdx])) {\n                break;\n              }\n\n              addEnumValue(field, newValuesBefore[reverseIdx], lastOldEnumValue, 'before', promisesLength);\n            }\n\n            // we detect the most 'right' position of old value in new enum array so we can append new values to it\n            if (newIdx > rightestPosition) {\n              rightestPosition = newIdx;\n            }\n          }\n\n          if (lastOldEnumValue && rightestPosition < vals.length - 1) {\n            const remainingEnumValues = vals.slice(rightestPosition + 1);\n            for (let reverseIdx = remainingEnumValues.length - 1; reverseIdx >= 0; reverseIdx--) {\n              addEnumValue(field, remainingEnumValues[reverseIdx], lastOldEnumValue, 'after');\n            }\n          }\n\n          enumIdx++;\n        }\n      }\n    }\n\n    const result = await promises\n      .reduce(async (promise, asyncFunction) => await asyncFunction(await promise), Promise.resolve());\n\n    // If ENUM processed, then refresh OIDs\n    if (promises.length) {\n      await this.sequelize.dialect.connectionManager._refreshDynamicOIDs();\n    }\n    return result;\n  }\n\n  /**\n   * @override\n   */\n  async getForeignKeyReferencesForTable(table, options) {\n    const queryOptions = {\n      ...options,\n      type: QueryTypes.FOREIGNKEYS\n    };\n\n    // postgres needs some special treatment as those field names returned are all lowercase\n    // in order to keep same result with other dialects.\n    const query = this.queryGenerator.getForeignKeyReferencesQuery(table.tableName || table, this.sequelize.config.database, table.schema);\n    const result = await this.sequelize.query(query, queryOptions);\n\n    return result.map(fkMeta => {\n      const { initiallyDeferred, isDeferrable, ...remaining } = Utils.camelizeObjectKeys(fkMeta);\n\n      return {\n        ...remaining,\n        deferrable: isDeferrable === 'NO' ? Deferrable.NOT\n          : initiallyDeferred === 'NO' ? Deferrable.INITIALLY_IMMEDIATE\n            : Deferrable.INITIALLY_DEFERRED\n      };\n    });\n  }\n\n  /**\n   * Drop specified enum from database (Postgres only)\n   *\n   * @param {string} [enumName]  Enum name to drop\n   * @param {object} options Query options\n   *\n   * @returns {Promise}\n   */\n  async dropEnum(enumName, options) {\n    options = options || {};\n\n    return this.sequelize.query(\n      this.queryGenerator.pgEnumDrop(null, null, this.queryGenerator.pgEscapeAndQuote(enumName)),\n      { ...options, raw: true }\n    );\n  }\n\n  /**\n   * Drop all enums from database (Postgres only)\n   *\n   * @param {object} options Query options\n   *\n   * @returns {Promise}\n   */\n  async dropAllEnums(options) {\n    options = options || {};\n\n    const enums = await this.pgListEnums(null, options);\n\n    return await Promise.all(enums.map(result => this.sequelize.query(\n      this.queryGenerator.pgEnumDrop(null, null, this.queryGenerator.pgEscapeAndQuote(result.enum_name)),\n      { ...options, raw: true }\n    )));\n  }\n\n  /**\n   * List all enums (Postgres only)\n   *\n   * @param {string} [tableName]  Table whose enum to list\n   * @param {object} [options]    Query options\n   *\n   * @returns {Promise}\n   */\n  async pgListEnums(tableName, options) {\n    options = options || {};\n    const sql = this.queryGenerator.pgListEnums(tableName);\n    return this.sequelize.query(sql, { ...options, plain: false, raw: true, type: QueryTypes.SELECT });\n  }\n\n  /**\n   * Since postgres has a special case for enums, we should drop the related\n   * enum type within the table and attribute\n   *\n   * @override\n   */\n  async dropTable(tableName, options) {\n    await super.dropTable(tableName, options);\n    const promises = [];\n    const instanceTable = this.sequelize.modelManager.getModel(tableName, { attribute: 'tableName' });\n\n    if (!instanceTable) {\n      // Do nothing when model is not available\n      return;\n    }\n\n    const getTableName = (!options || !options.schema || options.schema === 'public' ? '' : `${options.schema}_`) + tableName;\n\n    const keys = Object.keys(instanceTable.rawAttributes);\n    const keyLen = keys.length;\n\n    for (let i = 0; i < keyLen; i++) {\n      if (instanceTable.rawAttributes[keys[i]].type instanceof DataTypes.ENUM) {\n        const sql = this.queryGenerator.pgEnumDrop(getTableName, keys[i]);\n        options.supportsSearchPath = false;\n        promises.push(this.sequelize.query(sql, { ...options, raw: true }));\n      }\n    }\n\n    await Promise.all(promises);\n  }\n}\n\nexports.PostgresQueryInterface = PostgresQueryInterface;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,YAAY,QAAQ;AAC1B,MAAM,aAAa,QAAQ;AAC3B,MAAM,EAAE,mBAAmB,QAAQ;AACnC,MAAM,QAAQ,QAAQ;AACtB,MAAM,aAAa,QAAQ;AAK3B,qCAAqC,eAAe;AAAA,QAW5C,YAAY,WAAW,YAAY,SAAS,OAAO;AACvD,UAAM,OAAO,OAAO,KAAK;AACzB,UAAM,SAAS,KAAK;AAEpB,QAAI,MAAM;AACV,QAAI,WAAW;AACf,QAAI,IAAI;AAER,SAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,YAAM,YAAY,WAAW,KAAK;AAClC,YAAM,OAAO,UAAU;AAEvB,UACE,gBAAgB,UAAU,QAC1B,gBAAgB,UAAU,SAAS,KAAK,gBAAgB,UAAU,MAClE;AACA,cAAM,KAAK,eAAe,YAAY,WAAW,UAAU,SAAS,KAAK,IAAI;AAC7E,iBAAS,KAAK,KAAK,UAAU,MAC3B,KACA,iCAAK,UAAL,EAAc,OAAO,MAAM,KAAK,MAAM,MAAM,WAAW;AAAA;AAAA;AAK7D,UAAM,UAAU,MAAM,QAAQ,IAAI;AAClC,eAAW;AACX,QAAI,UAAU;AAGd,UAAM,eAAe,CAAC,OAAO,OAAO,eAAe,WAAW,UAAU,cAAc,SAAS,WAAW;AACxG,YAAM,eAAe,mBAAK;AAC1B,mBAAa,SAAS;AACtB,mBAAa,QAAQ;AAErB,cAAQ;AAAA,aACD;AACH,uBAAa,QAAQ;AACrB;AAAA,aACG;AAAA;AAEH,uBAAa,SAAS;AACtB;AAAA;AAGJ,eAAS,OAAO,aAAa,GAAG,MAAM;AACpC,eAAO,KAAK,UAAU,MAAM,KAAK,eAAe,UAC9C,WAAW,OAAO,OAAO,eACxB;AAAA;AAAA;AAIP,SAAK,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC3B,YAAM,YAAY,WAAW,KAAK;AAClC,YAAM,OAAO,UAAU;AACvB,YAAM,WAAW,KAAK,QAAQ;AAC9B,YAAM,QAAQ,UAAU,SAAS,KAAK;AAEtC,UACE,gBAAgB,UAAU,QAC1B,gBAAgB,UAAU,SAAS,oBAAoB,UAAU,MACjE;AAEA,YAAI,CAAC,QAAQ,UAAU;AACrB,mBAAS,KAAK,MAAM;AAClB,mBAAO,KAAK,UAAU,MAAM,KAAK,eAAe,OAAO,WAAW,OAAO,UAAU,UAAU,iCAAK,UAAL,EAAc,KAAK;AAAA;AAAA,mBAEzG,CAAC,CAAC,QAAQ,YAAY,CAAC,CAAC,OAAO;AACxC,gBAAM,WAAW,KAAK,eAAe,UAAU,QAAQ,SAAS;AAChE,gBAAM,OAAO,SAAS;AAQtB,cAAI;AACJ,cAAI,mBAAmB;AACvB,mBAAS,WAAW,GAAG,WAAW,SAAS,QAAQ,YAAY;AAC7D,kBAAM,UAAU,SAAS;AACzB,kBAAM,SAAS,KAAK,QAAQ;AAC5B,+BAAmB;AAEnB,gBAAI,WAAW,IAAI;AACjB;AAAA;AAGF,kBAAM,kBAAkB,KAAK,MAAM,GAAG;AACtC,kBAAM,iBAAiB,SAAS;AAEhC,qBAAS,aAAa,gBAAgB,SAAS,GAAG,cAAc,GAAG,cAAc;AAC/E,kBAAI,CAAC,SAAS,QAAQ,gBAAgB,cAAc;AAClD;AAAA;AAGF,2BAAa,OAAO,gBAAgB,aAAa,kBAAkB,UAAU;AAAA;AAI/E,gBAAI,SAAS,kBAAkB;AAC7B,iCAAmB;AAAA;AAAA;AAIvB,cAAI,oBAAoB,mBAAmB,KAAK,SAAS,GAAG;AAC1D,kBAAM,sBAAsB,KAAK,MAAM,mBAAmB;AAC1D,qBAAS,aAAa,oBAAoB,SAAS,GAAG,cAAc,GAAG,cAAc;AACnF,2BAAa,OAAO,oBAAoB,aAAa,kBAAkB;AAAA;AAAA;AAI3E;AAAA;AAAA;AAAA;AAKN,UAAM,SAAS,MAAM,SAClB,OAAO,OAAO,SAAS,kBAAkB,MAAM,cAAc,MAAM,UAAU,QAAQ;AAGxF,QAAI,SAAS,QAAQ;AACnB,YAAM,KAAK,UAAU,QAAQ,kBAAkB;AAAA;AAEjD,WAAO;AAAA;AAAA,QAMH,gCAAgC,OAAO,SAAS;AACpD,UAAM,eAAe,iCAChB,UADgB;AAAA,MAEnB,MAAM,WAAW;AAAA;AAKnB,UAAM,QAAQ,KAAK,eAAe,6BAA6B,MAAM,aAAa,OAAO,KAAK,UAAU,OAAO,UAAU,MAAM;AAC/H,UAAM,SAAS,MAAM,KAAK,UAAU,MAAM,OAAO;AAEjD,WAAO,OAAO,IAAI,YAAU;AAC1B,YAA0D,WAAM,mBAAmB,SAA3E,qBAAmB,iBAA+B,IAAd,sBAAc,IAAd,CAApC,qBAAmB;AAE3B,aAAO,iCACF,YADE;AAAA,QAEL,YAAY,iBAAiB,OAAO,WAAW,MAC3C,sBAAsB,OAAO,WAAW,sBACtC,WAAW;AAAA;AAAA;AAAA;AAAA,QAajB,SAAS,UAAU,SAAS;AAChC,cAAU,WAAW;AAErB,WAAO,KAAK,UAAU,MACpB,KAAK,eAAe,WAAW,MAAM,MAAM,KAAK,eAAe,iBAAiB,YAChF,iCAAK,UAAL,EAAc,KAAK;AAAA;AAAA,QAWjB,aAAa,SAAS;AAC1B,cAAU,WAAW;AAErB,UAAM,QAAQ,MAAM,KAAK,YAAY,MAAM;AAE3C,WAAO,MAAM,QAAQ,IAAI,MAAM,IAAI,YAAU,KAAK,UAAU,MAC1D,KAAK,eAAe,WAAW,MAAM,MAAM,KAAK,eAAe,iBAAiB,OAAO,aACvF,iCAAK,UAAL,EAAc,KAAK;AAAA;AAAA,QAYjB,YAAY,WAAW,SAAS;AACpC,cAAU,WAAW;AACrB,UAAM,MAAM,KAAK,eAAe,YAAY;AAC5C,WAAO,KAAK,UAAU,MAAM,KAAK,iCAAK,UAAL,EAAc,OAAO,OAAO,KAAK,MAAM,MAAM,WAAW;AAAA;AAAA,QASrF,UAAU,WAAW,SAAS;AAClC,UAAM,MAAM,UAAU,WAAW;AACjC,UAAM,WAAW;AACjB,UAAM,gBAAgB,KAAK,UAAU,aAAa,SAAS,WAAW,EAAE,WAAW;AAEnF,QAAI,CAAC,eAAe;AAElB;AAAA;AAGF,UAAM,eAAgB,EAAC,WAAW,CAAC,QAAQ,UAAU,QAAQ,WAAW,WAAW,KAAK,GAAG,QAAQ,aAAa;AAEhH,UAAM,OAAO,OAAO,KAAK,cAAc;AACvC,UAAM,SAAS,KAAK;AAEpB,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAI,cAAc,cAAc,KAAK,IAAI,gBAAgB,UAAU,MAAM;AACvE,cAAM,MAAM,KAAK,eAAe,WAAW,cAAc,KAAK;AAC9D,gBAAQ,qBAAqB;AAC7B,iBAAS,KAAK,KAAK,UAAU,MAAM,KAAK,iCAAK,UAAL,EAAc,KAAK;AAAA;AAAA;AAI/D,UAAM,QAAQ,IAAI;AAAA;AAAA;AAItB,QAAQ,yBAAyB;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,323 +1,0 @@
-"use strict";
-const AbstractQuery = require("../abstract/query");
-const QueryTypes = require("../../query-types");
-const sequelizeErrors = require("../../errors");
-const _ = require("lodash");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("sql:pg");
-class Query extends AbstractQuery {
-  static formatBindParameters(sql, values, dialect) {
-    const stringReplaceFunc = (value) => typeof value === "string" ? value.replace(/\0/g, "\\0") : value;
-    let bindParam;
-    if (Array.isArray(values)) {
-      bindParam = values.map(stringReplaceFunc);
-      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];
-    } else {
-      bindParam = [];
-      let i = 0;
-      const seen = {};
-      const replacementFunc = (match, key, values2) => {
-        if (seen[key] !== void 0) {
-          return seen[key];
-        }
-        if (values2[key] !== void 0) {
-          i = i + 1;
-          bindParam.push(stringReplaceFunc(values2[key]));
-          seen[key] = `$${i}`;
-          return `$${i}`;
-        }
-        return void 0;
-      };
-      sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    }
-    return [sql, bindParam];
-  }
-  async run(sql, parameters) {
-    const { connection } = this;
-    if (!_.isEmpty(this.options.searchPath)) {
-      sql = this.sequelize.getQueryInterface().queryGenerator.setSearchPath(this.options.searchPath) + sql;
-    }
-    if (this.sequelize.options.minifyAliases && this.options.includeAliases) {
-      _.toPairs(this.options.includeAliases).sort((a, b) => b[1].length - a[1].length).forEach(([alias, original]) => {
-        const reg = new RegExp(_.escapeRegExp(original), "g");
-        sql = sql.replace(reg, alias);
-      });
-    }
-    this.sql = sql;
-    const query = parameters && parameters.length ? new Promise((resolve, reject) => connection.query(sql, parameters, (error, result) => error ? reject(error) : resolve(result))) : new Promise((resolve, reject) => connection.query(sql, (error, result) => error ? reject(error) : resolve(result)));
-    const complete = this._logQuery(sql, debug, parameters);
-    let queryResult;
-    const errForStack = new Error();
-    try {
-      queryResult = await query;
-    } catch (error) {
-      if (error.code === "ECONNRESET" || /Unable to set non-blocking to true/i.test(error) || /SSL SYSCALL error: EOF detected/i.test(error) || /Local: Authentication failure/i.test(error) || error.message === "Query read timeout") {
-        connection._invalid = true;
-      }
-      error.sql = sql;
-      error.parameters = parameters;
-      throw this.formatError(error, errForStack.stack);
-    }
-    complete();
-    let rows = Array.isArray(queryResult) ? queryResult.reduce((allRows, r) => allRows.concat(r.rows || []), []) : queryResult.rows;
-    const rowCount = Array.isArray(queryResult) ? queryResult.reduce((count, r) => Number.isFinite(r.rowCount) ? count + r.rowCount : count, 0) : queryResult.rowCount || 0;
-    if (this.sequelize.options.minifyAliases && this.options.aliasesMapping) {
-      rows = rows.map((row) => _.toPairs(row).reduce((acc, [key, value]) => {
-        const mapping = this.options.aliasesMapping.get(key);
-        acc[mapping || key] = value;
-        return acc;
-      }, {}));
-    }
-    const isTableNameQuery = sql.startsWith("SELECT table_name FROM information_schema.tables");
-    const isRelNameQuery = sql.startsWith("SELECT relname FROM pg_class WHERE oid IN");
-    if (isRelNameQuery) {
-      return rows.map((row) => ({
-        name: row.relname,
-        tableName: row.relname.split("_")[0]
-      }));
-    }
-    if (isTableNameQuery) {
-      return rows.map((row) => Object.values(row));
-    }
-    if (rows[0] && rows[0].sequelize_caught_exception !== void 0) {
-      if (rows[0].sequelize_caught_exception !== null) {
-        throw this.formatError({
-          sql,
-          parameters,
-          code: "23505",
-          detail: rows[0].sequelize_caught_exception
-        });
-      }
-      for (const row of rows) {
-        delete row.sequelize_caught_exception;
-      }
-    }
-    if (this.isShowIndexesQuery()) {
-      for (const row of rows) {
-        const attributes = /ON .*? (?:USING .*?\s)?\(([^]*)\)/gi.exec(row.definition)[1].split(",");
-        const columns = _.zipObject(row.column_indexes, this.sequelize.getQueryInterface().queryGenerator.fromArray(row.column_names));
-        delete row.column_indexes;
-        delete row.column_names;
-        let field;
-        let attribute;
-        row.fields = row.indkey.split(" ").map((indKey, index) => {
-          field = columns[indKey];
-          if (!field) {
-            return null;
-          }
-          attribute = attributes[index];
-          return {
-            attribute: field,
-            collate: attribute.match(/COLLATE "(.*?)"/) ? /COLLATE "(.*?)"/.exec(attribute)[1] : void 0,
-            order: attribute.includes("DESC") ? "DESC" : attribute.includes("ASC") ? "ASC" : void 0,
-            length: void 0
-          };
-        }).filter((n) => n !== null);
-        delete row.columns;
-      }
-      return rows;
-    }
-    if (this.isForeignKeysQuery()) {
-      const result = [];
-      for (const row of rows) {
-        let defParts;
-        if (row.condef !== void 0 && (defParts = row.condef.match(/FOREIGN KEY \((.+)\) REFERENCES (.+)\((.+)\)( ON (UPDATE|DELETE) (CASCADE|RESTRICT))?( ON (UPDATE|DELETE) (CASCADE|RESTRICT))?/))) {
-          row.id = row.constraint_name;
-          row.table = defParts[2];
-          row.from = defParts[1];
-          row.to = defParts[3];
-          let i;
-          for (i = 5; i <= 8; i += 3) {
-            if (/(UPDATE|DELETE)/.test(defParts[i])) {
-              row[`on_${defParts[i].toLowerCase()}`] = defParts[i + 1];
-            }
-          }
-        }
-        result.push(row);
-      }
-      return result;
-    }
-    if (this.isSelectQuery()) {
-      let result = rows;
-      if (this.options.raw === false && this.sequelize.options.quoteIdentifiers === false) {
-        const attrsMap = _.reduce(this.model.rawAttributes, (m, v, k) => {
-          m[k.toLowerCase()] = k;
-          return m;
-        }, {});
-        result = rows.map((row) => {
-          return _.mapKeys(row, (value, key) => {
-            const targetAttr = attrsMap[key];
-            if (typeof targetAttr === "string" && targetAttr !== key) {
-              return targetAttr;
-            }
-            return key;
-          });
-        });
-      }
-      return this.handleSelectQuery(result);
-    }
-    if (QueryTypes.DESCRIBE === this.options.type) {
-      const result = {};
-      for (const row of rows) {
-        result[row.Field] = {
-          type: row.Type.toUpperCase(),
-          allowNull: row.Null === "YES",
-          defaultValue: row.Default,
-          comment: row.Comment,
-          special: row.special ? this.sequelize.getQueryInterface().queryGenerator.fromArray(row.special) : [],
-          primaryKey: row.Constraint === "PRIMARY KEY"
-        };
-        if (result[row.Field].type === "BOOLEAN") {
-          result[row.Field].defaultValue = { "false": false, "true": true }[result[row.Field].defaultValue];
-          if (result[row.Field].defaultValue === void 0) {
-            result[row.Field].defaultValue = null;
-          }
-        }
-        if (typeof result[row.Field].defaultValue === "string") {
-          result[row.Field].defaultValue = result[row.Field].defaultValue.replace(/'/g, "");
-          if (result[row.Field].defaultValue.includes("::")) {
-            const split = result[row.Field].defaultValue.split("::");
-            if (split[1].toLowerCase() !== "regclass)") {
-              result[row.Field].defaultValue = split[0];
-            }
-          }
-        }
-      }
-      return result;
-    }
-    if (this.isVersionQuery()) {
-      return rows[0].server_version;
-    }
-    if (this.isShowOrDescribeQuery()) {
-      return rows;
-    }
-    if (QueryTypes.BULKUPDATE === this.options.type) {
-      if (!this.options.returning) {
-        return parseInt(rowCount, 10);
-      }
-      return this.handleSelectQuery(rows);
-    }
-    if (QueryTypes.BULKDELETE === this.options.type) {
-      return parseInt(rowCount, 10);
-    }
-    if (this.isInsertQuery() || this.isUpdateQuery() || this.isUpsertQuery()) {
-      if (this.instance && this.instance.dataValues) {
-        if (this.isInsertQuery() && !this.isUpsertQuery() && rowCount === 0) {
-          throw new sequelizeErrors.EmptyResultError();
-        }
-        for (const key in rows[0]) {
-          if (Object.prototype.hasOwnProperty.call(rows[0], key)) {
-            const record = rows[0][key];
-            const attr = _.find(this.model.rawAttributes, (attribute) => attribute.fieldName === key || attribute.field === key);
-            this.instance.dataValues[attr && attr.fieldName || key] = record;
-          }
-        }
-      }
-      if (this.isUpsertQuery()) {
-        return [
-          this.instance,
-          null
-        ];
-      }
-      return [
-        this.instance || rows && (this.options.plain && rows[0] || rows) || void 0,
-        rowCount
-      ];
-    }
-    if (this.isRawQuery()) {
-      return [rows, queryResult];
-    }
-    return rows;
-  }
-  formatError(err, errStack) {
-    let match;
-    let table;
-    let index;
-    let fields;
-    let errors;
-    let message;
-    const code = err.code || err.sqlState;
-    const errMessage = err.message || err.messagePrimary;
-    const errDetail = err.detail || err.messageDetail;
-    switch (code) {
-      case "23503":
-        index = errMessage.match(/violates foreign key constraint "(.+?)"/);
-        index = index ? index[1] : void 0;
-        table = errMessage.match(/on table "(.+?)"/);
-        table = table ? table[1] : void 0;
-        return new sequelizeErrors.ForeignKeyConstraintError({
-          message: errMessage,
-          fields: null,
-          index,
-          table,
-          parent: err,
-          stack: errStack
-        });
-      case "23505":
-        if (errDetail && (match = errDetail.replace(/"/g, "").match(/Key \((.*?)\)=\((.*?)\)/))) {
-          fields = _.zipObject(match[1].split(", "), match[2].split(", "));
-          errors = [];
-          message = "Validation error";
-          _.forOwn(fields, (value, field) => {
-            errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-          });
-          if (this.model && this.model.uniqueKeys) {
-            _.forOwn(this.model.uniqueKeys, (constraint) => {
-              if (_.isEqual(constraint.fields, Object.keys(fields)) && !!constraint.msg) {
-                message = constraint.msg;
-                return false;
-              }
-            });
-          }
-          return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-        }
-        return new sequelizeErrors.UniqueConstraintError({
-          message: errMessage,
-          parent: err,
-          stack: errStack
-        });
-      case "23P01":
-        match = errDetail.match(/Key \((.*?)\)=\((.*?)\)/);
-        if (match) {
-          fields = _.zipObject(match[1].split(", "), match[2].split(", "));
-        }
-        message = "Exclusion constraint error";
-        return new sequelizeErrors.ExclusionConstraintError({
-          message,
-          constraint: err.constraint,
-          fields,
-          table: err.table,
-          parent: err,
-          stack: errStack
-        });
-      case "42704":
-        if (err.sql && /(CONSTRAINT|INDEX)/gi.test(err.sql)) {
-          message = "Unknown constraint error";
-          index = errMessage.match(/(?:constraint|index) "(.+?)"/i);
-          index = index ? index[1] : void 0;
-          table = errMessage.match(/relation "(.+?)"/i);
-          table = table ? table[1] : void 0;
-          throw new sequelizeErrors.UnknownConstraintError({
-            message,
-            constraint: index,
-            fields,
-            table,
-            parent: err,
-            stack: errStack
-          });
-        }
-      default:
-        return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-    }
-  }
-  isForeignKeysQuery() {
-    return /SELECT conname as constraint_name, pg_catalog\.pg_get_constraintdef\(r\.oid, true\) as condef FROM pg_catalog\.pg_constraint r WHERE r\.conrelid = \(SELECT oid FROM pg_class WHERE relname = '.*' LIMIT 1\) AND r\.contype = 'f' ORDER BY 1;/.test(this.sql);
-  }
-  getInsertIdField() {
-    return "id";
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst QueryTypes = require('../../query-types');\nconst sequelizeErrors = require('../../errors');\nconst _ = require('lodash');\nconst { logger } = require('../../utils/logger');\n\nconst debug = logger.debugContext('sql:pg');\n\n\nclass Query extends AbstractQuery {\n  /**\n   * Rewrite query with parameters.\n   *\n   * @param {string} sql\n   * @param {Array|object} values\n   * @param {string} dialect\n   * @private\n   */\n  static formatBindParameters(sql, values, dialect) {\n    const stringReplaceFunc = value => typeof value === 'string' ? value.replace(/\\0/g, '\\\\0') : value;\n\n    let bindParam;\n    if (Array.isArray(values)) {\n      bindParam = values.map(stringReplaceFunc);\n      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];\n    } else {\n      bindParam = [];\n      let i = 0;\n      const seen = {};\n      const replacementFunc = (match, key, values) => {\n        if (seen[key] !== undefined) {\n          return seen[key];\n        }\n        if (values[key] !== undefined) {\n          i = i + 1;\n          bindParam.push(stringReplaceFunc(values[key]));\n          seen[key] = `$${i}`;\n          return `$${i}`;\n        }\n        return undefined;\n      };\n      sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n    }\n    return [sql, bindParam];\n  }\n\n  async run(sql, parameters) {\n    const { connection } = this;\n\n    if (!_.isEmpty(this.options.searchPath)) {\n      sql = this.sequelize.getQueryInterface().queryGenerator.setSearchPath(this.options.searchPath) + sql;\n    }\n\n    if (this.sequelize.options.minifyAliases && this.options.includeAliases) {\n      _.toPairs(this.options.includeAliases)\n        // Sorting to replace the longest aliases first to prevent alias collision\n        .sort((a, b) => b[1].length - a[1].length)\n        .forEach(([alias, original]) => {\n          const reg = new RegExp(_.escapeRegExp(original), 'g');\n\n          sql = sql.replace(reg, alias);\n        });\n    }\n\n    this.sql = sql;\n\n    const query = parameters && parameters.length\n      ? new Promise((resolve, reject) => connection.query(sql, parameters, (error, result) => error ? reject(error) : resolve(result)))\n      : new Promise((resolve, reject) => connection.query(sql, (error, result) => error ? reject(error) : resolve(result)));\n\n    const complete = this._logQuery(sql, debug, parameters);\n\n    let queryResult;\n    const errForStack = new Error();\n\n    try {\n      queryResult = await query;\n    } catch (error) {\n      // set the client so that it will be reaped if the connection resets while executing\n      if (error.code === 'ECONNRESET'\n        // https://github.com/sequelize/sequelize/pull/14090\n        // pg-native throws custom exception or libpq formatted errors\n        || /Unable to set non-blocking to true/i.test(error)\n        || /SSL SYSCALL error: EOF detected/i.test(error)\n        || /Local: Authentication failure/i.test(error)\n        // https://github.com/sequelize/sequelize/pull/15144\n        || error.message === 'Query read timeout'\n      ) {\n        connection._invalid = true;\n      }\n\n      error.sql = sql;\n      error.parameters = parameters;\n      throw this.formatError(error, errForStack.stack);\n    }\n\n    complete();\n\n    let rows = Array.isArray(queryResult)\n      ? queryResult.reduce((allRows, r) => allRows.concat(r.rows || []), [])\n      : queryResult.rows;\n    const rowCount = Array.isArray(queryResult)\n      ? queryResult.reduce(\n        (count, r) => Number.isFinite(r.rowCount) ? count + r.rowCount : count,\n        0\n      )\n      : queryResult.rowCount || 0;\n\n    if (this.sequelize.options.minifyAliases && this.options.aliasesMapping) {\n      rows = rows\n        .map(row => _.toPairs(row)\n          .reduce((acc, [key, value]) => {\n            const mapping = this.options.aliasesMapping.get(key);\n            acc[mapping || key] = value;\n            return acc;\n          }, {})\n        );\n    }\n\n    const isTableNameQuery = sql.startsWith('SELECT table_name FROM information_schema.tables');\n    const isRelNameQuery = sql.startsWith('SELECT relname FROM pg_class WHERE oid IN');\n\n    if (isRelNameQuery) {\n      return rows.map(row => ({\n        name: row.relname,\n        tableName: row.relname.split('_')[0]\n      }));\n    }\n    if (isTableNameQuery) {\n      return rows.map(row => Object.values(row));\n    }\n\n    if (rows[0] && rows[0].sequelize_caught_exception !== undefined) {\n      if (rows[0].sequelize_caught_exception !== null) {\n        throw this.formatError({\n          sql,\n          parameters,\n          code: '23505',\n          detail: rows[0].sequelize_caught_exception\n        });\n      }\n      for (const row of rows) {\n        delete row.sequelize_caught_exception;\n      }\n    }\n\n    if (this.isShowIndexesQuery()) {\n      for (const row of rows) {\n        const attributes = /ON .*? (?:USING .*?\\s)?\\(([^]*)\\)/gi.exec(row.definition)[1].split(',');\n\n        // Map column index in table to column name\n        const columns = _.zipObject(\n          row.column_indexes,\n          this.sequelize.getQueryInterface().queryGenerator.fromArray(row.column_names)\n        );\n        delete row.column_indexes;\n        delete row.column_names;\n\n        let field;\n        let attribute;\n\n        // Indkey is the order of attributes in the index, specified by a string of attribute indexes\n        row.fields = row.indkey.split(' ').map((indKey, index) => {\n          field = columns[indKey];\n          // for functional indices indKey = 0\n          if (!field) {\n            return null;\n          }\n          attribute = attributes[index];\n          return {\n            attribute: field,\n            collate: attribute.match(/COLLATE \"(.*?)\"/) ? /COLLATE \"(.*?)\"/.exec(attribute)[1] : undefined,\n            order: attribute.includes('DESC') ? 'DESC' : attribute.includes('ASC') ? 'ASC' : undefined,\n            length: undefined\n          };\n        }).filter(n => n !== null);\n        delete row.columns;\n      }\n      return rows;\n    }\n    if (this.isForeignKeysQuery()) {\n      const result = [];\n      for (const row of rows) {\n        let defParts;\n        if (row.condef !== undefined && (defParts = row.condef.match(/FOREIGN KEY \\((.+)\\) REFERENCES (.+)\\((.+)\\)( ON (UPDATE|DELETE) (CASCADE|RESTRICT))?( ON (UPDATE|DELETE) (CASCADE|RESTRICT))?/))) {\n          row.id = row.constraint_name;\n          row.table = defParts[2];\n          row.from = defParts[1];\n          row.to = defParts[3];\n          let i;\n          for (i = 5; i <= 8; i += 3) {\n            if (/(UPDATE|DELETE)/.test(defParts[i])) {\n              row[`on_${defParts[i].toLowerCase()}`] = defParts[i + 1];\n            }\n          }\n        }\n        result.push(row);\n      }\n      return result;\n    }\n    if (this.isSelectQuery()) {\n      let result = rows;\n      // Postgres will treat tables as case-insensitive, so fix the case\n      // of the returned values to match attributes\n      if (this.options.raw === false && this.sequelize.options.quoteIdentifiers === false) {\n        const attrsMap = _.reduce(this.model.rawAttributes, (m, v, k) => {\n          m[k.toLowerCase()] = k;\n          return m;\n        }, {});\n        result = rows.map(row => {\n          return _.mapKeys(row, (value, key) => {\n            const targetAttr = attrsMap[key];\n            if (typeof targetAttr === 'string' && targetAttr !== key) {\n              return targetAttr;\n            }\n            return key;\n          });\n        });\n      }\n      return this.handleSelectQuery(result);\n    }\n    if (QueryTypes.DESCRIBE === this.options.type) {\n      const result = {};\n\n      for (const row of rows) {\n        result[row.Field] = {\n          type: row.Type.toUpperCase(),\n          allowNull: row.Null === 'YES',\n          defaultValue: row.Default,\n          comment: row.Comment,\n          special: row.special ? this.sequelize.getQueryInterface().queryGenerator.fromArray(row.special) : [],\n          primaryKey: row.Constraint === 'PRIMARY KEY'\n        };\n\n        if (result[row.Field].type === 'BOOLEAN') {\n          result[row.Field].defaultValue = { 'false': false, 'true': true }[result[row.Field].defaultValue];\n\n          if (result[row.Field].defaultValue === undefined) {\n            result[row.Field].defaultValue = null;\n          }\n        }\n\n        if (typeof result[row.Field].defaultValue === 'string') {\n          result[row.Field].defaultValue = result[row.Field].defaultValue.replace(/'/g, '');\n\n          if (result[row.Field].defaultValue.includes('::')) {\n            const split = result[row.Field].defaultValue.split('::');\n            if (split[1].toLowerCase() !== 'regclass)') {\n              result[row.Field].defaultValue = split[0];\n            }\n          }\n        }\n      }\n\n      return result;\n    }\n    if (this.isVersionQuery()) {\n      return rows[0].server_version;\n    }\n    if (this.isShowOrDescribeQuery()) {\n      return rows;\n    }\n    if (QueryTypes.BULKUPDATE === this.options.type) {\n      if (!this.options.returning) {\n        return parseInt(rowCount, 10);\n      }\n      return this.handleSelectQuery(rows);\n    }\n    if (QueryTypes.BULKDELETE === this.options.type) {\n      return parseInt(rowCount, 10);\n    }\n    if (this.isInsertQuery() || this.isUpdateQuery() || this.isUpsertQuery()) {\n      if (this.instance && this.instance.dataValues) {\n        // If we are creating an instance, and we get no rows, the create failed but did not throw.\n        // This probably means a conflict happened and was ignored, to avoid breaking a transaction.\n        if (this.isInsertQuery() && !this.isUpsertQuery() && rowCount === 0) {\n          throw new sequelizeErrors.EmptyResultError();\n        }\n\n        for (const key in rows[0]) {\n          if (Object.prototype.hasOwnProperty.call(rows[0], key)) {\n            const record = rows[0][key];\n\n            const attr = _.find(this.model.rawAttributes, attribute => attribute.fieldName === key || attribute.field === key);\n\n            this.instance.dataValues[attr && attr.fieldName || key] = record;\n          }\n        }\n      }\n\n      if (this.isUpsertQuery()) {\n        return [\n          this.instance,\n          null\n        ];\n      }\n\n      return [\n        this.instance || rows && (this.options.plain && rows[0] || rows) || undefined,\n        rowCount\n      ];\n    }\n    if (this.isRawQuery()) {\n      return [rows, queryResult];\n    }\n    return rows;\n  }\n\n  formatError(err, errStack) {\n    let match;\n    let table;\n    let index;\n    let fields;\n    let errors;\n    let message;\n\n    const code = err.code || err.sqlState;\n    const errMessage = err.message || err.messagePrimary;\n    const errDetail = err.detail || err.messageDetail;\n\n    switch (code) {\n      case '23503':\n        index = errMessage.match(/violates foreign key constraint \"(.+?)\"/);\n        index = index ? index[1] : undefined;\n        table = errMessage.match(/on table \"(.+?)\"/);\n        table = table ? table[1] : undefined;\n\n        return new sequelizeErrors.ForeignKeyConstraintError({\n          message: errMessage,\n          fields: null,\n          index,\n          table,\n          parent: err,\n          stack: errStack\n        });\n      case '23505':\n        // there are multiple different formats of error messages for this error code\n        // this regex should check at least two\n        if (errDetail && (match = errDetail.replace(/\"/g, '').match(/Key \\((.*?)\\)=\\((.*?)\\)/))) {\n          fields = _.zipObject(match[1].split(', '), match[2].split(', '));\n          errors = [];\n          message = 'Validation error';\n\n          _.forOwn(fields, (value, field) => {\n            errors.push(new sequelizeErrors.ValidationErrorItem(\n              this.getUniqueConstraintErrorMessage(field),\n              'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n              field,\n              value,\n              this.instance,\n              'not_unique'\n            ));\n          });\n\n          if (this.model && this.model.uniqueKeys) {\n            _.forOwn(this.model.uniqueKeys, constraint => {\n              if (_.isEqual(constraint.fields, Object.keys(fields)) && !!constraint.msg) {\n                message = constraint.msg;\n                return false;\n              }\n            });\n          }\n\n          return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n        }\n\n        return new sequelizeErrors.UniqueConstraintError({\n          message: errMessage,\n          parent: err,\n          stack: errStack\n        });\n\n      case '23P01':\n        match = errDetail.match(/Key \\((.*?)\\)=\\((.*?)\\)/);\n\n        if (match) {\n          fields = _.zipObject(match[1].split(', '), match[2].split(', '));\n        }\n        message = 'Exclusion constraint error';\n\n        return new sequelizeErrors.ExclusionConstraintError({\n          message,\n          constraint: err.constraint,\n          fields,\n          table: err.table,\n          parent: err,\n          stack: errStack\n        });\n\n      case '42704':\n        if (err.sql && /(CONSTRAINT|INDEX)/gi.test(err.sql)) {\n          message = 'Unknown constraint error';\n          index = errMessage.match(/(?:constraint|index) \"(.+?)\"/i);\n          index = index ? index[1] : undefined;\n          table = errMessage.match(/relation \"(.+?)\"/i);\n          table = table ? table[1] : undefined;\n\n          throw new sequelizeErrors.UnknownConstraintError({\n            message,\n            constraint: index,\n            fields,\n            table,\n            parent: err,\n            stack: errStack\n          });\n        }\n      // falls through\n      default:\n        return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n    }\n  }\n\n  isForeignKeysQuery() {\n    return /SELECT conname as constraint_name, pg_catalog\\.pg_get_constraintdef\\(r\\.oid, true\\) as condef FROM pg_catalog\\.pg_constraint r WHERE r\\.conrelid = \\(SELECT oid FROM pg_class WHERE relname = '.*' LIMIT 1\\) AND r\\.contype = 'f' ORDER BY 1;/.test(this.sql);\n  }\n\n  getInsertIdField() {\n    return 'id';\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/postgres/range.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/range.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-"use strict";
-const _ = require("lodash");
-function stringifyRangeBound(bound) {
-  if (bound === null) {
-    return "";
-  }
-  if (bound === Infinity || bound === -Infinity) {
-    return bound.toString().toLowerCase();
-  }
-  return JSON.stringify(bound);
-}
-function parseRangeBound(bound, parseType) {
-  if (!bound) {
-    return null;
-  }
-  if (bound === "infinity") {
-    return Infinity;
-  }
-  if (bound === "-infinity") {
-    return -Infinity;
-  }
-  return parseType(bound);
-}
-function stringify(data) {
-  if (data === null)
-    return null;
-  if (!Array.isArray(data))
-    throw new Error("range must be an array");
-  if (!data.length)
-    return "empty";
-  if (data.length !== 2)
-    throw new Error("range array length must be 0 (empty) or 2 (lower and upper bounds)");
-  if (Object.prototype.hasOwnProperty.call(data, "inclusive")) {
-    if (data.inclusive === false)
-      data.inclusive = [false, false];
-    else if (!data.inclusive)
-      data.inclusive = [true, false];
-    else if (data.inclusive === true)
-      data.inclusive = [true, true];
-  } else {
-    data.inclusive = [true, false];
-  }
-  _.each(data, (value, index) => {
-    if (_.isObject(value)) {
-      if (Object.prototype.hasOwnProperty.call(value, "inclusive"))
-        data.inclusive[index] = !!value.inclusive;
-      if (Object.prototype.hasOwnProperty.call(value, "value"))
-        data[index] = value.value;
-    }
-  });
-  const lowerBound = stringifyRangeBound(data[0]);
-  const upperBound = stringifyRangeBound(data[1]);
-  return `${(data.inclusive[0] ? "[" : "(") + lowerBound},${upperBound}${data.inclusive[1] ? "]" : ")"}`;
-}
-exports.stringify = stringify;
-function parse(value, parser) {
-  if (value === null)
-    return null;
-  if (value === "empty") {
-    return [];
-  }
-  let result = value.substring(1, value.length - 1).split(",", 2);
-  if (result.length !== 2)
-    return value;
-  result = result.map((item, index) => {
-    return {
-      value: parseRangeBound(item, parser),
-      inclusive: index === 0 ? value[0] === "[" : value[value.length - 1] === "]"
-    };
-  });
-  return result;
-}
-exports.parse = parse;
-//# sourceMappingURL=range.js.map
Index: ckend/node_modules/sequelize/lib/dialects/postgres/range.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/postgres/range.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/postgres/range.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\n\nfunction stringifyRangeBound(bound) {\n  if (bound === null) {\n    return '' ;\n  }\n  if (bound === Infinity || bound === -Infinity) {\n    return bound.toString().toLowerCase();\n  }\n  return JSON.stringify(bound);\n}\n\nfunction parseRangeBound(bound, parseType) {\n  if (!bound) {\n    return null;\n  }\n  if (bound === 'infinity') {\n    return Infinity;\n  }\n  if (bound === '-infinity') {\n    return -Infinity;\n  }\n  return parseType(bound);\n\n}\n\nfunction stringify(data) {\n  if (data === null) return null;\n\n  if (!Array.isArray(data)) throw new Error('range must be an array');\n  if (!data.length) return 'empty';\n  if (data.length !== 2) throw new Error('range array length must be 0 (empty) or 2 (lower and upper bounds)');\n\n  if (Object.prototype.hasOwnProperty.call(data, 'inclusive')) {\n    if (data.inclusive === false) data.inclusive = [false, false];\n    else if (!data.inclusive) data.inclusive = [true, false];\n    else if (data.inclusive === true) data.inclusive = [true, true];\n  } else {\n    data.inclusive = [true, false];\n  }\n\n  _.each(data, (value, index) => {\n    if (_.isObject(value)) {\n      if (Object.prototype.hasOwnProperty.call(value, 'inclusive')) data.inclusive[index] = !!value.inclusive;\n      if (Object.prototype.hasOwnProperty.call(value, 'value')) data[index] = value.value;\n    }\n  });\n\n  const lowerBound = stringifyRangeBound(data[0]);\n  const upperBound = stringifyRangeBound(data[1]);\n\n  return `${(data.inclusive[0] ? '[' : '(') + lowerBound},${upperBound}${data.inclusive[1] ? ']' : ')'}`;\n}\nexports.stringify = stringify;\n\nfunction parse(value, parser) {\n  if (value === null) return null;\n  if (value === 'empty') {\n    return [];\n  }\n\n  let result = value\n    .substring(1, value.length - 1)\n    .split(',', 2);\n\n  if (result.length !== 2) return value;\n\n  result = result.map((item, index) => {\n    return {\n      value: parseRangeBound(item, parser),\n      inclusive: index === 0 ? value[0] === '[' : value[value.length - 1] === ']'\n    };\n  });\n\n  return result;\n}\nexports.parse = parse;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAElB,6BAA6B,OAAO;AAClC,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA;AAET,MAAI,UAAU,YAAY,UAAU,WAAW;AAC7C,WAAO,MAAM,WAAW;AAAA;AAE1B,SAAO,KAAK,UAAU;AAAA;AAGxB,yBAAyB,OAAO,WAAW;AACzC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA;AAET,MAAI,UAAU,YAAY;AACxB,WAAO;AAAA;AAET,MAAI,UAAU,aAAa;AACzB,WAAO;AAAA;AAET,SAAO,UAAU;AAAA;AAInB,mBAAmB,MAAM;AACvB,MAAI,SAAS;AAAM,WAAO;AAE1B,MAAI,CAAC,MAAM,QAAQ;AAAO,UAAM,IAAI,MAAM;AAC1C,MAAI,CAAC,KAAK;AAAQ,WAAO;AACzB,MAAI,KAAK,WAAW;AAAG,UAAM,IAAI,MAAM;AAEvC,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,cAAc;AAC3D,QAAI,KAAK,cAAc;AAAO,WAAK,YAAY,CAAC,OAAO;AAAA,aAC9C,CAAC,KAAK;AAAW,WAAK,YAAY,CAAC,MAAM;AAAA,aACzC,KAAK,cAAc;AAAM,WAAK,YAAY,CAAC,MAAM;AAAA,SACrD;AACL,SAAK,YAAY,CAAC,MAAM;AAAA;AAG1B,IAAE,KAAK,MAAM,CAAC,OAAO,UAAU;AAC7B,QAAI,EAAE,SAAS,QAAQ;AACrB,UAAI,OAAO,UAAU,eAAe,KAAK,OAAO;AAAc,aAAK,UAAU,SAAS,CAAC,CAAC,MAAM;AAC9F,UAAI,OAAO,UAAU,eAAe,KAAK,OAAO;AAAU,aAAK,SAAS,MAAM;AAAA;AAAA;AAIlF,QAAM,aAAa,oBAAoB,KAAK;AAC5C,QAAM,aAAa,oBAAoB,KAAK;AAE5C,SAAO,GAAI,MAAK,UAAU,KAAK,MAAM,OAAO,cAAc,aAAa,KAAK,UAAU,KAAK,MAAM;AAAA;AAEnG,QAAQ,YAAY;AAEpB,eAAe,OAAO,QAAQ;AAC5B,MAAI,UAAU;AAAM,WAAO;AAC3B,MAAI,UAAU,SAAS;AACrB,WAAO;AAAA;AAGT,MAAI,SAAS,MACV,UAAU,GAAG,MAAM,SAAS,GAC5B,MAAM,KAAK;AAEd,MAAI,OAAO,WAAW;AAAG,WAAO;AAEhC,WAAS,OAAO,IAAI,CAAC,MAAM,UAAU;AACnC,WAAO;AAAA,MACL,OAAO,gBAAgB,MAAM;AAAA,MAC7B,WAAW,UAAU,IAAI,MAAM,OAAO,MAAM,MAAM,MAAM,SAAS,OAAO;AAAA;AAAA;AAI5E,SAAO;AAAA;AAET,QAAQ,QAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,127 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const SequelizeErrors = require("../../errors");
-const { logger } = require("../../utils/logger");
-const DataTypes = require("../../data-types").snowflake;
-const debug = logger.debugContext("connection:snowflake");
-const parserStore = require("../parserStore")("snowflake");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    sequelize.config.port = sequelize.config.port || 3306;
-    super(dialect, sequelize);
-    this.lib = this._loadDialectModule("snowflake-sdk");
-    this.refreshTypeParser(DataTypes);
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  static _typecast(field, next) {
-    if (parserStore.get(field.type)) {
-      return parserStore.get(field.type)(field, this.sequelize.options, next);
-    }
-    return next();
-  }
-  async connect(config) {
-    const connectionConfig = __spreadValues({
-      account: config.host,
-      username: config.username,
-      password: config.password,
-      database: config.database,
-      warehouse: config.warehouse,
-      role: config.role
-    }, config.dialectOptions);
-    try {
-      const connection = await new Promise((resolve, reject) => {
-        this.lib.createConnection(connectionConfig).connect((err, conn) => {
-          if (err) {
-            console.log(err);
-            reject(err);
-          } else {
-            resolve(conn);
-          }
-        });
-      });
-      debug("connection acquired");
-      if (!this.sequelize.config.keepDefaultTimezone) {
-        const tzOffset = this.sequelize.options.timezone === "+00:00" ? "Etc/UTC" : this.sequelize.options.timezone;
-        const isNamedTzOffset = /\//.test(tzOffset);
-        if (isNamedTzOffset) {
-          await new Promise((resolve, reject) => {
-            connection.execute({
-              sqlText: `ALTER SESSION SET timezone = '${tzOffset}'`,
-              complete(err) {
-                if (err) {
-                  console.log(err);
-                  reject(err);
-                } else {
-                  resolve();
-                }
-              }
-            });
-          });
-        } else {
-          throw Error("only support time zone name for snowflake!");
-        }
-      }
-      return connection;
-    } catch (err) {
-      switch (err.code) {
-        case "ECONNREFUSED":
-          throw new SequelizeErrors.ConnectionRefusedError(err);
-        case "ER_ACCESS_DENIED_ERROR":
-          throw new SequelizeErrors.AccessDeniedError(err);
-        case "ENOTFOUND":
-          throw new SequelizeErrors.HostNotFoundError(err);
-        case "EHOSTUNREACH":
-          throw new SequelizeErrors.HostNotReachableError(err);
-        case "EINVAL":
-          throw new SequelizeErrors.InvalidConnectionError(err);
-        default:
-          throw new SequelizeErrors.ConnectionError(err);
-      }
-    }
-  }
-  async disconnect(connection) {
-    if (!connection.isUp()) {
-      debug("connection tried to disconnect but was already at CLOSED state");
-      return;
-    }
-    return new Promise((resolve, reject) => {
-      connection.destroy((err) => {
-        if (err) {
-          console.error(`Unable to disconnect: ${err.message}`);
-          reject(err);
-        } else {
-          console.log(`Disconnected connection with id: ${connection.getId()}`);
-          resolve(connection.getId());
-        }
-      });
-    });
-  }
-  validate(connection) {
-    return connection.isUp();
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst SequelizeErrors = require('../../errors');\nconst { logger } = require('../../utils/logger');\nconst DataTypes = require('../../data-types').snowflake;\nconst debug = logger.debugContext('connection:snowflake');\nconst parserStore = require('../parserStore')('snowflake');\n\n/**\n * Snowflake Connection Manager\n *\n * Get connections, validate and disconnect them.\n *\n * @private\n */\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    sequelize.config.port = sequelize.config.port || 3306;\n    super(dialect, sequelize);\n    this.lib = this._loadDialectModule('snowflake-sdk');\n    this.refreshTypeParser(DataTypes);\n  }\n\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  static _typecast(field, next) {\n    if (parserStore.get(field.type)) {\n      return parserStore.get(field.type)(field, this.sequelize.options, next);\n    }\n    return next();\n  }\n\n  /**\n   * Connect with a snowflake database based on config, Handle any errors in connection\n   * Set the pool handlers on connection.error\n   * Also set proper timezone once connection is connected.\n   *\n   * @param {object} config\n   * @returns {Promise<Connection>}\n   * @private\n   */\n  async connect(config) {\n    const connectionConfig = {\n      account: config.host,\n      username: config.username,\n      password: config.password,\n      database: config.database,\n      warehouse: config.warehouse,\n      role: config.role,\n      /*\n      flags: '-FOUND_ROWS',\n      timezone: this.sequelize.options.timezone,\n      typeCast: ConnectionManager._typecast.bind(this),\n      bigNumberStrings: false,\n      supportBigNumbers: true,\n      */\n      ...config.dialectOptions\n    };\n\n    try {\n\n      const connection = await new Promise((resolve, reject) => {\n        this.lib.createConnection(connectionConfig).connect((err, conn) => {\n          if (err) {\n            console.log(err);\n            reject(err);\n          } else {\n            resolve(conn);\n          }\n        });\n      });\n\n      debug('connection acquired');\n\n      if (!this.sequelize.config.keepDefaultTimezone) {\n        // default value is '+00:00', put a quick workaround for it.\n        const tzOffset = this.sequelize.options.timezone === '+00:00' ? 'Etc/UTC' : this.sequelize.options.timezone;\n        const isNamedTzOffset = /\\//.test(tzOffset);\n        if ( isNamedTzOffset ) {\n          await new Promise((resolve, reject) => {\n            connection.execute({\n              sqlText: `ALTER SESSION SET timezone = '${tzOffset}'`,\n              complete(err) {\n                if (err) {\n                  console.log(err);\n                  reject(err);\n                } else {\n                  resolve();\n                }\n              }\n            });\n          });\n        } else {\n          throw Error('only support time zone name for snowflake!');\n        }\n      }\n\n      return connection;\n    } catch (err) {\n      switch (err.code) {\n        case 'ECONNREFUSED':\n          throw new SequelizeErrors.ConnectionRefusedError(err);\n        case 'ER_ACCESS_DENIED_ERROR':\n          throw new SequelizeErrors.AccessDeniedError(err);\n        case 'ENOTFOUND':\n          throw new SequelizeErrors.HostNotFoundError(err);\n        case 'EHOSTUNREACH':\n          throw new SequelizeErrors.HostNotReachableError(err);\n        case 'EINVAL':\n          throw new SequelizeErrors.InvalidConnectionError(err);\n        default:\n          throw new SequelizeErrors.ConnectionError(err);\n      }\n    }\n  }\n\n  async disconnect(connection) {\n    // Don't disconnect connections with CLOSED state\n    if (!connection.isUp()) {\n      debug('connection tried to disconnect but was already at CLOSED state');\n      return;\n    }\n\n    return new Promise((resolve, reject) => {\n      connection.destroy(err => {\n        if (err) {\n          console.error(`Unable to disconnect: ${err.message}`);\n          reject(err);\n        } else {\n          console.log(`Disconnected connection with id: ${connection.getId()}`);\n          resolve(connection.getId());\n        }\n      });\n    });\n  }\n\n  validate(connection) {\n    return connection.isUp();\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,cAAc,QAAQ,kBAAkB;AAS9C,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,cAAU,OAAO,OAAO,UAAU,OAAO,QAAQ;AACjD,UAAM,SAAS;AACf,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,EAGzB,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,SAGP,UAAU,OAAO,MAAM;AAC5B,QAAI,YAAY,IAAI,MAAM,OAAO;AAC/B,aAAO,YAAY,IAAI,MAAM,MAAM,OAAO,KAAK,UAAU,SAAS;AAAA;AAEpE,WAAO;AAAA;AAAA,QAYH,QAAQ,QAAQ;AACpB,UAAM,mBAAmB;AAAA,MACvB,SAAS,OAAO;AAAA,MAChB,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,MAClB,MAAM,OAAO;AAAA,OAQV,OAAO;AAGZ,QAAI;AAEF,YAAM,aAAa,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxD,aAAK,IAAI,iBAAiB,kBAAkB,QAAQ,CAAC,KAAK,SAAS;AACjE,cAAI,KAAK;AACP,oBAAQ,IAAI;AACZ,mBAAO;AAAA,iBACF;AACL,oBAAQ;AAAA;AAAA;AAAA;AAKd,YAAM;AAEN,UAAI,CAAC,KAAK,UAAU,OAAO,qBAAqB;AAE9C,cAAM,WAAW,KAAK,UAAU,QAAQ,aAAa,WAAW,YAAY,KAAK,UAAU,QAAQ;AACnG,cAAM,kBAAkB,KAAK,KAAK;AAClC,YAAK,iBAAkB;AACrB,gBAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACrC,uBAAW,QAAQ;AAAA,cACjB,SAAS,iCAAiC;AAAA,cAC1C,SAAS,KAAK;AACZ,oBAAI,KAAK;AACP,0BAAQ,IAAI;AACZ,yBAAO;AAAA,uBACF;AACL;AAAA;AAAA;AAAA;AAAA;AAAA,eAKH;AACL,gBAAM,MAAM;AAAA;AAAA;AAIhB,aAAO;AAAA,aACA,KAAP;AACA,cAAQ,IAAI;AAAA,aACL;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA,aAC9C;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,kBAAkB;AAAA,aACzC;AACH,gBAAM,IAAI,gBAAgB,sBAAsB;AAAA,aAC7C;AACH,gBAAM,IAAI,gBAAgB,uBAAuB;AAAA;AAEjD,gBAAM,IAAI,gBAAgB,gBAAgB;AAAA;AAAA;AAAA;AAAA,QAK5C,WAAW,YAAY;AAE3B,QAAI,CAAC,WAAW,QAAQ;AACtB,YAAM;AACN;AAAA;AAGF,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,iBAAW,QAAQ,SAAO;AACxB,YAAI,KAAK;AACP,kBAAQ,MAAM,yBAAyB,IAAI;AAC3C,iBAAO;AAAA,eACF;AACL,kBAAQ,IAAI,oCAAoC,WAAW;AAC3D,kBAAQ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3B,SAAS,YAAY;AACnB,WAAO,WAAW;AAAA;AAAA;AAItB,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-"use strict";
-const momentTz = require("moment-timezone");
-const moment = require("moment");
-module.exports = (BaseTypes) => {
-  BaseTypes.ABSTRACT.prototype.dialectTypes = "https://dev.snowflake.com/doc/refman/5.7/en/data-types.html";
-  BaseTypes.DATE.types.snowflake = ["DATETIME"];
-  BaseTypes.STRING.types.snowflake = ["VAR_STRING"];
-  BaseTypes.CHAR.types.snowflake = ["STRING"];
-  BaseTypes.TEXT.types.snowflake = ["BLOB"];
-  BaseTypes.TINYINT.types.snowflake = ["TINY"];
-  BaseTypes.SMALLINT.types.snowflake = ["SHORT"];
-  BaseTypes.MEDIUMINT.types.snowflake = ["INT24"];
-  BaseTypes.INTEGER.types.snowflake = ["LONG"];
-  BaseTypes.BIGINT.types.snowflake = ["LONGLONG"];
-  BaseTypes.FLOAT.types.snowflake = ["FLOAT"];
-  BaseTypes.TIME.types.snowflake = ["TIME"];
-  BaseTypes.DATEONLY.types.snowflake = ["DATE"];
-  BaseTypes.BOOLEAN.types.snowflake = ["TINY"];
-  BaseTypes.BLOB.types.snowflake = ["TINYBLOB", "BLOB", "LONGBLOB"];
-  BaseTypes.DECIMAL.types.snowflake = ["NEWDECIMAL"];
-  BaseTypes.UUID.types.snowflake = false;
-  BaseTypes.ENUM.types.snowflake = false;
-  BaseTypes.REAL.types.snowflake = ["DOUBLE"];
-  BaseTypes.DOUBLE.types.snowflake = ["DOUBLE"];
-  BaseTypes.GEOMETRY.types.snowflake = ["GEOMETRY"];
-  BaseTypes.JSON.types.snowflake = ["JSON"];
-  class DATE extends BaseTypes.DATE {
-    toSql() {
-      return "TIMESTAMP";
-    }
-    _stringify(date, options) {
-      if (!moment.isMoment(date)) {
-        date = this._applyTimezone(date, options);
-      }
-      if (this._length) {
-        return date.format("YYYY-MM-DD HH:mm:ss.SSS");
-      }
-      return date.format("YYYY-MM-DD HH:mm:ss");
-    }
-    static parse(value, options) {
-      value = value.string();
-      if (value === null) {
-        return value;
-      }
-      if (momentTz.tz.zone(options.timezone)) {
-        value = momentTz.tz(value, options.timezone).toDate();
-      } else {
-        value = new Date(`${value} ${options.timezone}`);
-      }
-      return value;
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(value) {
-      return value.string();
-    }
-  }
-  class UUID extends BaseTypes.UUID {
-    toSql() {
-      return "VARCHAR(36)";
-    }
-  }
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      return "TEXT";
-    }
-  }
-  class BOOLEAN extends BaseTypes.BOOLEAN {
-    toSql() {
-      return "BOOLEAN";
-    }
-  }
-  class JSONTYPE extends BaseTypes.JSON {
-    _stringify(value, options) {
-      return options.operation === "where" && typeof value === "string" ? value : JSON.stringify(value);
-    }
-  }
-  return {
-    TEXT,
-    DATE,
-    BOOLEAN,
-    DATEONLY,
-    UUID,
-    JSON: JSONTYPE
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nconst momentTz = require('moment-timezone');\nconst moment = require('moment');\n\nmodule.exports = BaseTypes => {\n  BaseTypes.ABSTRACT.prototype.dialectTypes = 'https://dev.snowflake.com/doc/refman/5.7/en/data-types.html';\n\n  /**\n   * types: [buffer_type, ...]\n   *\n   * @see buffer_type here https://dev.snowflake.com/doc/refman/5.7/en/c-api-prepared-statement-type-codes.html\n   * @see hex here https://github.com/sidorares/node-mysql2/blob/master/lib/constants/types.js\n   */\n\n  BaseTypes.DATE.types.snowflake = ['DATETIME'];\n  BaseTypes.STRING.types.snowflake = ['VAR_STRING'];\n  BaseTypes.CHAR.types.snowflake = ['STRING'];\n  BaseTypes.TEXT.types.snowflake = ['BLOB'];\n  BaseTypes.TINYINT.types.snowflake = ['TINY'];\n  BaseTypes.SMALLINT.types.snowflake = ['SHORT'];\n  BaseTypes.MEDIUMINT.types.snowflake = ['INT24'];\n  BaseTypes.INTEGER.types.snowflake = ['LONG'];\n  BaseTypes.BIGINT.types.snowflake = ['LONGLONG'];\n  BaseTypes.FLOAT.types.snowflake = ['FLOAT'];\n  BaseTypes.TIME.types.snowflake = ['TIME'];\n  BaseTypes.DATEONLY.types.snowflake = ['DATE'];\n  BaseTypes.BOOLEAN.types.snowflake = ['TINY'];\n  BaseTypes.BLOB.types.snowflake = ['TINYBLOB', 'BLOB', 'LONGBLOB'];\n  BaseTypes.DECIMAL.types.snowflake = ['NEWDECIMAL'];\n  BaseTypes.UUID.types.snowflake = false;\n  // Enum is not supported\n  // https://docs.snowflake.com/en/sql-reference/data-types-unsupported.html\n  BaseTypes.ENUM.types.snowflake = false;\n  BaseTypes.REAL.types.snowflake = ['DOUBLE'];\n  BaseTypes.DOUBLE.types.snowflake = ['DOUBLE'];\n  BaseTypes.GEOMETRY.types.snowflake = ['GEOMETRY'];\n  BaseTypes.JSON.types.snowflake = ['JSON'];\n\n  class DATE extends BaseTypes.DATE {\n    toSql() {\n      return 'TIMESTAMP';\n    }\n    _stringify(date, options) {\n      if (!moment.isMoment(date)) {\n        date = this._applyTimezone(date, options);\n      }\n      if (this._length) {\n        return date.format('YYYY-MM-DD HH:mm:ss.SSS');\n      }\n      return date.format('YYYY-MM-DD HH:mm:ss');\n    }\n    static parse(value, options) {\n      value = value.string();\n      if (value === null) {\n        return value;\n      }\n      if (momentTz.tz.zone(options.timezone)) {\n        value = momentTz.tz(value, options.timezone).toDate();\n      }\n      else {\n        value = new Date(`${value} ${options.timezone}`);\n      }\n      return value;\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(value) {\n      return value.string();\n    }\n  }\n  class UUID extends BaseTypes.UUID {\n    toSql() {\n      // https://community.snowflake.com/s/question/0D50Z00009LH2fl/what-is-the-best-way-to-store-uuids\n      return 'VARCHAR(36)';\n    }\n  }\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      return 'TEXT';\n    }\n  }\n\n  class BOOLEAN extends BaseTypes.BOOLEAN {\n    toSql() {\n      return 'BOOLEAN';\n    }\n  }\n\n  class JSONTYPE extends BaseTypes.JSON {\n    _stringify(value, options) {\n      return options.operation === 'where' && typeof value === 'string' ? value : JSON.stringify(value);\n    }\n  }\n\n  return {\n    TEXT,\n    DATE,\n    BOOLEAN,\n    DATEONLY,\n    UUID,\n    JSON: JSONTYPE\n  };\n};\n"],
-  "mappings": ";AAEA,MAAM,WAAW,QAAQ;AACzB,MAAM,SAAS,QAAQ;AAEvB,OAAO,UAAU,eAAa;AAC5B,YAAU,SAAS,UAAU,eAAe;AAS5C,YAAU,KAAK,MAAM,YAAY,CAAC;AAClC,YAAU,OAAO,MAAM,YAAY,CAAC;AACpC,YAAU,KAAK,MAAM,YAAY,CAAC;AAClC,YAAU,KAAK,MAAM,YAAY,CAAC;AAClC,YAAU,QAAQ,MAAM,YAAY,CAAC;AACrC,YAAU,SAAS,MAAM,YAAY,CAAC;AACtC,YAAU,UAAU,MAAM,YAAY,CAAC;AACvC,YAAU,QAAQ,MAAM,YAAY,CAAC;AACrC,YAAU,OAAO,MAAM,YAAY,CAAC;AACpC,YAAU,MAAM,MAAM,YAAY,CAAC;AACnC,YAAU,KAAK,MAAM,YAAY,CAAC;AAClC,YAAU,SAAS,MAAM,YAAY,CAAC;AACtC,YAAU,QAAQ,MAAM,YAAY,CAAC;AACrC,YAAU,KAAK,MAAM,YAAY,CAAC,YAAY,QAAQ;AACtD,YAAU,QAAQ,MAAM,YAAY,CAAC;AACrC,YAAU,KAAK,MAAM,YAAY;AAGjC,YAAU,KAAK,MAAM,YAAY;AACjC,YAAU,KAAK,MAAM,YAAY,CAAC;AAClC,YAAU,OAAO,MAAM,YAAY,CAAC;AACpC,YAAU,SAAS,MAAM,YAAY,CAAC;AACtC,YAAU,KAAK,MAAM,YAAY,CAAC;AAElC,qBAAmB,UAAU,KAAK;AAAA,IAChC,QAAQ;AACN,aAAO;AAAA;AAAA,IAET,WAAW,MAAM,SAAS;AACxB,UAAI,CAAC,OAAO,SAAS,OAAO;AAC1B,eAAO,KAAK,eAAe,MAAM;AAAA;AAEnC,UAAI,KAAK,SAAS;AAChB,eAAO,KAAK,OAAO;AAAA;AAErB,aAAO,KAAK,OAAO;AAAA;AAAA,WAEd,MAAM,OAAO,SAAS;AAC3B,cAAQ,MAAM;AACd,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA;AAET,UAAI,SAAS,GAAG,KAAK,QAAQ,WAAW;AACtC,gBAAQ,SAAS,GAAG,OAAO,QAAQ,UAAU;AAAA,aAE1C;AACH,gBAAQ,IAAI,KAAK,GAAG,SAAS,QAAQ;AAAA;AAEvC,aAAO;AAAA;AAAA;AAIX,yBAAuB,UAAU,SAAS;AAAA,WACjC,MAAM,OAAO;AAClB,aAAO,MAAM;AAAA;AAAA;AAGjB,qBAAmB,UAAU,KAAK;AAAA,IAChC,QAAQ;AAEN,aAAO;AAAA;AAAA;AAIX,qBAAmB,UAAU,KAAK;AAAA,IAChC,QAAQ;AACN,aAAO;AAAA;AAAA;AAIX,wBAAsB,UAAU,QAAQ;AAAA,IACtC,QAAQ;AACN,aAAO;AAAA;AAAA;AAIX,yBAAuB,UAAU,KAAK;AAAA,IACpC,WAAW,OAAO,SAAS;AACzB,aAAO,QAAQ,cAAc,WAAW,OAAO,UAAU,WAAW,QAAQ,KAAK,UAAU;AAAA;AAAA;AAI/F,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,59 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").snowflake;
-const { SnowflakeQueryInterface } = require("./query-interface");
-class SnowflakeDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new SnowflakeQueryInterface(sequelize, this.queryGenerator);
-  }
-}
-SnowflakeDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  "VALUES ()": true,
-  "LIMIT ON UPDATE": true,
-  lock: true,
-  forShare: "LOCK IN SHARE MODE",
-  settingIsolationLevelDuringTransaction: false,
-  inserts: {
-    ignoreDuplicates: " IGNORE",
-    updateOnDuplicate: false
-  },
-  index: {
-    collate: false,
-    length: true,
-    parser: true,
-    type: true,
-    using: 1
-  },
-  constraints: {
-    dropConstraint: false,
-    check: false
-  },
-  indexViaAlter: true,
-  indexHints: true,
-  NUMERIC: true,
-  GEOMETRY: false,
-  JSON: false,
-  REGEXP: true,
-  schemas: true
-});
-SnowflakeDialect.prototype.defaultVersion = "5.7.0";
-SnowflakeDialect.prototype.Query = Query;
-SnowflakeDialect.prototype.QueryGenerator = QueryGenerator;
-SnowflakeDialect.prototype.DataTypes = DataTypes;
-SnowflakeDialect.prototype.name = "snowflake";
-SnowflakeDialect.prototype.TICK_CHAR = '"';
-SnowflakeDialect.prototype.TICK_CHAR_LEFT = SnowflakeDialect.prototype.TICK_CHAR;
-SnowflakeDialect.prototype.TICK_CHAR_RIGHT = SnowflakeDialect.prototype.TICK_CHAR;
-module.exports = SnowflakeDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').snowflake;\nconst { SnowflakeQueryInterface } = require('./query-interface');\n\nclass SnowflakeDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n    this.queryInterface = new SnowflakeQueryInterface(sequelize, this.queryGenerator);\n  }\n}\n\nSnowflakeDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {\n  'VALUES ()': true,\n  'LIMIT ON UPDATE': true,\n  lock: true,\n  forShare: 'LOCK IN SHARE MODE',\n  settingIsolationLevelDuringTransaction: false,\n  inserts: {\n    ignoreDuplicates: ' IGNORE',\n    // disable for now, but could be enable by approach below\n    // https://stackoverflow.com/questions/54828745/how-to-migrate-on-conflict-do-nothing-from-postgresql-to-snowflake\n    updateOnDuplicate: false\n  },\n  index: {\n    collate: false,\n    length: true,\n    parser: true,\n    type: true,\n    using: 1\n  },\n  constraints: {\n    dropConstraint: false,\n    check: false\n  },\n  indexViaAlter: true,\n  indexHints: true,\n  NUMERIC: true,\n  // disable for now, need more work to enable the GEOGRAPHY MAPPING\n  GEOMETRY: false,\n  JSON: false,\n  REGEXP: true,\n  schemas: true\n});\n\nSnowflakeDialect.prototype.defaultVersion = '5.7.0';\nSnowflakeDialect.prototype.Query = Query;\nSnowflakeDialect.prototype.QueryGenerator = QueryGenerator;\nSnowflakeDialect.prototype.DataTypes = DataTypes;\nSnowflakeDialect.prototype.name = 'snowflake';\nSnowflakeDialect.prototype.TICK_CHAR = '\"';\nSnowflakeDialect.prototype.TICK_CHAR_LEFT = SnowflakeDialect.prototype.TICK_CHAR;\nSnowflakeDialect.prototype.TICK_CHAR_RIGHT = SnowflakeDialect.prototype.TICK_CHAR;\n\nmodule.exports = SnowflakeDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,4BAA4B,QAAQ;AAE5C,+BAA+B,gBAAgB;AAAA,EAC7C,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAEF,SAAK,iBAAiB,IAAI,wBAAwB,WAAW,KAAK;AAAA;AAAA;AAItE,iBAAiB,UAAU,WAAW,EAAE,MAAM,EAAE,UAAU,gBAAgB,UAAU,WAAW;AAAA,EAC7F,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,MAAM;AAAA,EACN,UAAU;AAAA,EACV,wCAAwC;AAAA,EACxC,SAAS;AAAA,IACP,kBAAkB;AAAA,IAGlB,mBAAmB;AAAA;AAAA,EAErB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,aAAa;AAAA,IACX,gBAAgB;AAAA,IAChB,OAAO;AAAA;AAAA,EAET,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EAET,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA;AAGX,iBAAiB,UAAU,iBAAiB;AAC5C,iBAAiB,UAAU,QAAQ;AACnC,iBAAiB,UAAU,iBAAiB;AAC5C,iBAAiB,UAAU,YAAY;AACvC,iBAAiB,UAAU,OAAO;AAClC,iBAAiB,UAAU,YAAY;AACvC,iBAAiB,UAAU,iBAAiB,iBAAiB,UAAU;AACvE,iBAAiB,UAAU,kBAAkB,iBAAiB,UAAU;AAExE,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,540 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const _ = require("lodash");
-const Utils = require("../../utils");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-const util = require("util");
-const Op = require("../../operators");
-const JSON_FUNCTION_REGEX = /^\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\([^)]*\)/i;
-const JSON_OPERATOR_REGEX = /^\s*(->>?|@>|<@|\?[|&]?|\|{2}|#-)/i;
-const TOKEN_CAPTURE_REGEX = /^\s*((?:([`"'])(?:(?!\2).|\2{2})*\2)|[\w\d\s]+|[().,;+-])/i;
-const FOREIGN_KEY_FIELDS = [
-  "CONSTRAINT_NAME as constraint_name",
-  "CONSTRAINT_NAME as constraintName",
-  "CONSTRAINT_SCHEMA as constraintSchema",
-  "CONSTRAINT_SCHEMA as constraintCatalog",
-  "TABLE_NAME as tableName",
-  "TABLE_SCHEMA as tableSchema",
-  "TABLE_SCHEMA as tableCatalog",
-  "COLUMN_NAME as columnName",
-  "REFERENCED_TABLE_SCHEMA as referencedTableSchema",
-  "REFERENCED_TABLE_SCHEMA as referencedTableCatalog",
-  "REFERENCED_TABLE_NAME as referencedTableName",
-  "REFERENCED_COLUMN_NAME as referencedColumnName"
-].join(",");
-const SNOWFLAKE_RESERVED_WORDS = "account,all,alter,and,any,as,between,by,case,cast,check,column,connect,connections,constraint,create,cross,current,current_date,current_time,current_timestamp,current_user,database,delete,distinct,drop,else,exists,false,following,for,from,full,grant,group,gscluster,having,ilike,in,increment,inner,insert,intersect,into,is,issue,join,lateral,left,like,localtime,localtimestamp,minus,natural,not,null,of,on,or,order,organization,qualify,regexp,revoke,right,rlike,row,rows,sample,schema,select,set,some,start,table,tablesample,then,to,trigger,true,try_cast,union,unique,update,using,values,view,when,whenever,where,with".split(",");
-const typeWithoutDefault = /* @__PURE__ */ new Set(["BLOB", "TEXT", "GEOMETRY", "JSON"]);
-class SnowflakeQueryGenerator extends AbstractQueryGenerator {
-  constructor(options) {
-    super(options);
-    this.OperatorMap = __spreadProps(__spreadValues({}, this.OperatorMap), {
-      [Op.regexp]: "REGEXP",
-      [Op.notRegexp]: "NOT REGEXP"
-    });
-  }
-  createDatabaseQuery(databaseName, options) {
-    options = __spreadValues({
-      charset: null,
-      collate: null
-    }, options);
-    return Utils.joinSQLFragments([
-      "CREATE DATABASE IF NOT EXISTS",
-      this.quoteIdentifier(databaseName),
-      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,
-      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,
-      ";"
-    ]);
-  }
-  dropDatabaseQuery(databaseName) {
-    return `DROP DATABASE IF EXISTS ${this.quoteIdentifier(databaseName)};`;
-  }
-  createSchema() {
-    return "SHOW TABLES";
-  }
-  showSchemasQuery() {
-    return "SHOW TABLES";
-  }
-  versionQuery() {
-    return "SELECT CURRENT_VERSION()";
-  }
-  createTableQuery(tableName, attributes, options) {
-    options = __spreadValues({
-      charset: null,
-      rowFormat: null
-    }, options);
-    const primaryKeys = [];
-    const foreignKeys = {};
-    const attrStr = [];
-    for (const attr in attributes) {
-      if (!Object.prototype.hasOwnProperty.call(attributes, attr))
-        continue;
-      const dataType = attributes[attr];
-      let match;
-      if (dataType.includes("PRIMARY KEY")) {
-        primaryKeys.push(attr);
-        if (dataType.includes("REFERENCES")) {
-          match = dataType.match(/^(.+) (REFERENCES.*)$/);
-          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1].replace("PRIMARY KEY", "")}`);
-          foreignKeys[attr] = match[2];
-        } else {
-          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType.replace("PRIMARY KEY", "")}`);
-        }
-      } else if (dataType.includes("REFERENCES")) {
-        match = dataType.match(/^(.+) (REFERENCES.*)$/);
-        attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);
-        foreignKeys[attr] = match[2];
-      } else {
-        attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);
-      }
-    }
-    const table = this.quoteTable(tableName);
-    let attributesClause = attrStr.join(", ");
-    const pkString = primaryKeys.map((pk) => this.quoteIdentifier(pk)).join(", ");
-    if (options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns, indexName) => {
-        if (columns.customIndex) {
-          if (typeof indexName !== "string") {
-            indexName = `uniq_${tableName}_${columns.fields.join("_")}`;
-          }
-          attributesClause += `, UNIQUE ${this.quoteIdentifier(indexName)} (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-        }
-      });
-    }
-    if (pkString.length > 0) {
-      attributesClause += `, PRIMARY KEY (${pkString})`;
-    }
-    for (const fkey in foreignKeys) {
-      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {
-        attributesClause += `, FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;
-      }
-    }
-    return Utils.joinSQLFragments([
-      "CREATE TABLE IF NOT EXISTS",
-      table,
-      `(${attributesClause})`,
-      options.comment && typeof options.comment === "string" && `COMMENT ${this.escape(options.comment)}`,
-      options.charset && `DEFAULT CHARSET=${options.charset}`,
-      options.collate && `COLLATE ${options.collate}`,
-      options.rowFormat && `ROW_FORMAT=${options.rowFormat}`,
-      ";"
-    ]);
-  }
-  describeTableQuery(tableName, schema, schemaDelimiter) {
-    const table = this.quoteTable(this.addSchema({
-      tableName,
-      _schema: schema,
-      _schemaDelimiter: schemaDelimiter
-    }));
-    return `SHOW FULL COLUMNS FROM ${table};`;
-  }
-  showTablesQuery(database) {
-    return Utils.joinSQLFragments([
-      "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'",
-      database ? `AND TABLE_SCHEMA = ${this.escape(database)}` : "AND TABLE_SCHEMA NOT IN ( 'INFORMATION_SCHEMA', 'PERFORMANCE_SCHEMA', 'SYS')",
-      ";"
-    ]);
-  }
-  tableExistsQuery(table) {
-    const tableName = table.tableName || table;
-    const schema = table.schema;
-    return Utils.joinSQLFragments([
-      "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'",
-      `AND TABLE_SCHEMA = ${schema !== void 0 ? this.escape(schema) : "CURRENT_SCHEMA()"}`,
-      `AND TABLE_NAME = ${this.escape(tableName)}`,
-      ";"
-    ]);
-  }
-  addColumnQuery(table, key, dataType) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(table),
-      "ADD",
-      this.quoteIdentifier(key),
-      this.attributeToSQL(dataType, {
-        context: "addColumn",
-        tableName: table,
-        foreignKey: key
-      }),
-      ";"
-    ]);
-  }
-  removeColumnQuery(tableName, attributeName) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP",
-      this.quoteIdentifier(attributeName),
-      ";"
-    ]);
-  }
-  changeColumnQuery(tableName, attributes) {
-    const query = (...subQuerys) => Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "ALTER COLUMN",
-      ...subQuerys,
-      ";"
-    ]);
-    const sql = [];
-    for (const attributeName in attributes) {
-      let definition = this.dataTypeMapping(tableName, attributeName, attributes[attributeName]);
-      const attrSql = [];
-      if (definition.includes("NOT NULL")) {
-        attrSql.push(query(this.quoteIdentifier(attributeName), "SET NOT NULL"));
-        definition = definition.replace("NOT NULL", "").trim();
-      } else if (!definition.includes("REFERENCES")) {
-        attrSql.push(query(this.quoteIdentifier(attributeName), "DROP NOT NULL"));
-      }
-      if (definition.includes("DEFAULT")) {
-        attrSql.push(query(this.quoteIdentifier(attributeName), "SET DEFAULT", definition.match(/DEFAULT ([^;]+)/)[1]));
-        definition = definition.replace(/(DEFAULT[^;]+)/, "").trim();
-      } else if (!definition.includes("REFERENCES")) {
-        attrSql.push(query(this.quoteIdentifier(attributeName), "DROP DEFAULT"));
-      }
-      if (definition.match(/UNIQUE;*$/)) {
-        definition = definition.replace(/UNIQUE;*$/, "");
-        attrSql.push(query("ADD UNIQUE (", this.quoteIdentifier(attributeName), ")").replace("ALTER COLUMN", ""));
-      }
-      if (definition.includes("REFERENCES")) {
-        definition = definition.replace(/.+?(?=REFERENCES)/, "");
-        attrSql.push(query("ADD FOREIGN KEY (", this.quoteIdentifier(attributeName), ")", definition).replace("ALTER COLUMN", ""));
-      } else {
-        attrSql.push(query(this.quoteIdentifier(attributeName), "TYPE", definition));
-      }
-      sql.push(attrSql.join(""));
-    }
-    return sql.join("");
-  }
-  renameColumnQuery(tableName, attrBefore, attributes) {
-    const attrString = [];
-    for (const attrName in attributes) {
-      const definition = attributes[attrName];
-      attrString.push(`'${attrBefore}' '${attrName}' ${definition}`);
-    }
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "RENAME COLUMN",
-      attrString.join(" to "),
-      ";"
-    ]);
-  }
-  handleSequelizeMethod(attr, tableName, factory, options, prepend) {
-    if (attr instanceof Utils.Json) {
-      if (attr.conditions) {
-        const conditions = this.parseConditionObject(attr.conditions).map((condition) => `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`);
-        return conditions.join(" AND ");
-      }
-      if (attr.path) {
-        let str;
-        if (this._checkValidJsonStatement(attr.path)) {
-          str = attr.path;
-        } else {
-          const paths = _.toPath(attr.path);
-          const column = paths.shift();
-          str = this.jsonPathExtractionQuery(column, paths);
-        }
-        if (attr.value) {
-          str += util.format(" = %s", this.escape(attr.value));
-        }
-        return str;
-      }
-    } else if (attr instanceof Utils.Cast) {
-      if (/timestamp/i.test(attr.type)) {
-        attr.type = "datetime";
-      } else if (attr.json && /boolean/i.test(attr.type)) {
-        attr.type = "char";
-      } else if (/double precision/i.test(attr.type) || /boolean/i.test(attr.type) || /integer/i.test(attr.type)) {
-        attr.type = "decimal";
-      } else if (/text/i.test(attr.type)) {
-        attr.type = "char";
-      }
-    }
-    return super.handleSequelizeMethod(attr, tableName, factory, options, prepend);
-  }
-  truncateTableQuery(tableName) {
-    return Utils.joinSQLFragments([
-      "TRUNCATE",
-      this.quoteTable(tableName)
-    ]);
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    const table = this.quoteTable(tableName);
-    let whereClause = this.getWhereConditions(where, null, model, options);
-    const limit = options.limit && ` LIMIT ${this.escape(options.limit)}`;
-    let primaryKeys = "";
-    let primaryKeysSelection = "";
-    if (whereClause) {
-      whereClause = `WHERE ${whereClause}`;
-    }
-    if (limit) {
-      if (!model) {
-        throw new Error("Cannot LIMIT delete without a model.");
-      }
-      const pks = Object.values(model.primaryKeys).map((pk) => this.quoteIdentifier(pk.field)).join(",");
-      primaryKeys = model.primaryKeyAttributes.length > 1 ? `(${pks})` : pks;
-      primaryKeysSelection = pks;
-      return Utils.joinSQLFragments([
-        "DELETE FROM",
-        table,
-        "WHERE",
-        primaryKeys,
-        "IN (SELECT",
-        primaryKeysSelection,
-        "FROM",
-        table,
-        whereClause,
-        limit,
-        ")",
-        ";"
-      ]);
-    }
-    return Utils.joinSQLFragments([
-      "DELETE FROM",
-      table,
-      whereClause,
-      ";"
-    ]);
-  }
-  showIndexesQuery() {
-    return "SELECT '' FROM DUAL";
-  }
-  showConstraintsQuery(table, constraintName) {
-    const tableName = table.tableName || table;
-    const schemaName = table.schema;
-    return Utils.joinSQLFragments([
-      "SELECT CONSTRAINT_CATALOG AS constraintCatalog,",
-      "CONSTRAINT_NAME AS constraintName,",
-      "CONSTRAINT_SCHEMA AS constraintSchema,",
-      "CONSTRAINT_TYPE AS constraintType,",
-      "TABLE_NAME AS tableName,",
-      "TABLE_SCHEMA AS tableSchema",
-      "from INFORMATION_SCHEMA.TABLE_CONSTRAINTS",
-      `WHERE table_name='${tableName}'`,
-      constraintName && `AND constraint_name = '${constraintName}'`,
-      schemaName && `AND TABLE_SCHEMA = '${schemaName}'`,
-      ";"
-    ]);
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return Utils.joinSQLFragments([
-      "DROP INDEX",
-      this.quoteIdentifier(indexName),
-      "ON",
-      this.quoteTable(tableName),
-      ";"
-    ]);
-  }
-  attributeToSQL(attribute, options) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = {
-        type: attribute
-      };
-    }
-    const attributeString = attribute.type.toString({ escape: this.escape.bind(this) });
-    let template = attributeString;
-    if (attribute.allowNull === false) {
-      template += " NOT NULL";
-    }
-    if (attribute.autoIncrement) {
-      template += " AUTOINCREMENT";
-    }
-    if (!typeWithoutDefault.has(attributeString) && attribute.type._binary !== true && Utils.defaultValueSchemable(attribute.defaultValue)) {
-      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;
-    }
-    if (attribute.unique === true) {
-      template += " UNIQUE";
-    }
-    if (attribute.primaryKey) {
-      template += " PRIMARY KEY";
-    }
-    if (attribute.comment) {
-      template += ` COMMENT ${this.escape(attribute.comment)}`;
-    }
-    if (attribute.first) {
-      template += " FIRST";
-    }
-    if (attribute.after) {
-      template += ` AFTER ${this.quoteIdentifier(attribute.after)}`;
-    }
-    if (attribute.references) {
-      if (options && options.context === "addColumn" && options.foreignKey) {
-        const attrName = this.quoteIdentifier(options.foreignKey);
-        const fkName = this.quoteIdentifier(`${options.tableName}_${attrName}_foreign_idx`);
-        template += `, ADD CONSTRAINT ${fkName} FOREIGN KEY (${attrName})`;
-      }
-      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;
-      if (attribute.references.key) {
-        template += ` (${this.quoteIdentifier(attribute.references.key)})`;
-      } else {
-        template += ` (${this.quoteIdentifier("id")})`;
-      }
-      if (attribute.onDelete) {
-        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;
-      }
-      if (attribute.onUpdate) {
-        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;
-      }
-    }
-    return template;
-  }
-  attributesToSQL(attributes, options) {
-    const result = {};
-    for (const key in attributes) {
-      const attribute = attributes[key];
-      result[attribute.field || key] = this.attributeToSQL(attribute, options);
-    }
-    return result;
-  }
-  _checkValidJsonStatement(stmt) {
-    if (typeof stmt !== "string") {
-      return false;
-    }
-    let currentIndex = 0;
-    let openingBrackets = 0;
-    let closingBrackets = 0;
-    let hasJsonFunction = false;
-    let hasInvalidToken = false;
-    while (currentIndex < stmt.length) {
-      const string = stmt.substr(currentIndex);
-      const functionMatches = JSON_FUNCTION_REGEX.exec(string);
-      if (functionMatches) {
-        currentIndex += functionMatches[0].indexOf("(");
-        hasJsonFunction = true;
-        continue;
-      }
-      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);
-      if (operatorMatches) {
-        currentIndex += operatorMatches[0].length;
-        hasJsonFunction = true;
-        continue;
-      }
-      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);
-      if (tokenMatches) {
-        const capturedToken = tokenMatches[1];
-        if (capturedToken === "(") {
-          openingBrackets++;
-        } else if (capturedToken === ")") {
-          closingBrackets++;
-        } else if (capturedToken === ";") {
-          hasInvalidToken = true;
-          break;
-        }
-        currentIndex += tokenMatches[0].length;
-        continue;
-      }
-      break;
-    }
-    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {
-      throw new Error(`Invalid json statement: ${stmt}`);
-    }
-    return hasJsonFunction;
-  }
-  dataTypeMapping(tableName, attr, dataType) {
-    if (dataType.includes("PRIMARY KEY")) {
-      dataType = dataType.replace("PRIMARY KEY", "");
-    }
-    if (dataType.includes("SERIAL")) {
-      if (dataType.includes("BIGINT")) {
-        dataType = dataType.replace("SERIAL", "BIGSERIAL");
-        dataType = dataType.replace("BIGINT", "");
-      } else if (dataType.includes("SMALLINT")) {
-        dataType = dataType.replace("SERIAL", "SMALLSERIAL");
-        dataType = dataType.replace("SMALLINT", "");
-      } else {
-        dataType = dataType.replace("INTEGER", "");
-      }
-      dataType = dataType.replace("NOT NULL", "");
-    }
-    return dataType;
-  }
-  getForeignKeysQuery(table, schemaName) {
-    const tableName = table.tableName || table;
-    return Utils.joinSQLFragments([
-      "SELECT",
-      FOREIGN_KEY_FIELDS,
-      `FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '${tableName}'`,
-      `AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='${schemaName}'`,
-      "AND REFERENCED_TABLE_NAME IS NOT NULL",
-      ";"
-    ]);
-  }
-  getForeignKeyQuery(table, columnName) {
-    const quotedSchemaName = table.schema ? wrapSingleQuote(table.schema) : "";
-    const quotedTableName = wrapSingleQuote(table.tableName || table);
-    const quotedColumnName = wrapSingleQuote(columnName);
-    return Utils.joinSQLFragments([
-      "SELECT",
-      FOREIGN_KEY_FIELDS,
-      "FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE",
-      "WHERE (",
-      [
-        `REFERENCED_TABLE_NAME = ${quotedTableName}`,
-        table.schema && `AND REFERENCED_TABLE_SCHEMA = ${quotedSchemaName}`,
-        `AND REFERENCED_COLUMN_NAME = ${quotedColumnName}`
-      ],
-      ") OR (",
-      [
-        `TABLE_NAME = ${quotedTableName}`,
-        table.schema && `AND TABLE_SCHEMA = ${quotedSchemaName}`,
-        `AND COLUMN_NAME = ${quotedColumnName}`,
-        "AND REFERENCED_TABLE_NAME IS NOT NULL"
-      ],
-      ")"
-    ]);
-  }
-  dropForeignKeyQuery(tableName, foreignKey) {
-    return Utils.joinSQLFragments([
-      "ALTER TABLE",
-      this.quoteTable(tableName),
-      "DROP FOREIGN KEY",
-      this.quoteIdentifier(foreignKey),
-      ";"
-    ]);
-  }
-  addLimitAndOffset(options) {
-    let fragment = [];
-    if (options.offset !== null && options.offset !== void 0 && options.offset !== 0) {
-      fragment = fragment.concat([" LIMIT ", this.escape(options.limit), " OFFSET ", this.escape(options.offset)]);
-    } else if (options.limit !== null && options.limit !== void 0) {
-      fragment = [" LIMIT ", this.escape(options.limit)];
-    }
-    return fragment.join("");
-  }
-  quoteIdentifier(identifier, force) {
-    const optForceQuote = force || false;
-    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;
-    const rawIdentifier = Utils.removeTicks(identifier, '"');
-    if (optForceQuote === true || optQuoteIdentifiers !== false || identifier.includes(".") || identifier.includes("->") || SNOWFLAKE_RESERVED_WORDS.includes(rawIdentifier.toLowerCase())) {
-      return Utils.addTicks(rawIdentifier, '"');
-    }
-    return rawIdentifier;
-  }
-}
-function wrapSingleQuote(identifier) {
-  return Utils.addTicks(identifier, "'");
-}
-module.exports = SnowflakeQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\nconst util = require('util');\nconst Op = require('../../operators');\n\n\nconst JSON_FUNCTION_REGEX = /^\\s*((?:[a-z]+_){0,2}jsonb?(?:_[a-z]+){0,2})\\([^)]*\\)/i;\nconst JSON_OPERATOR_REGEX = /^\\s*(->>?|@>|<@|\\?[|&]?|\\|{2}|#-)/i;\nconst TOKEN_CAPTURE_REGEX = /^\\s*((?:([`\"'])(?:(?!\\2).|\\2{2})*\\2)|[\\w\\d\\s]+|[().,;+-])/i;\nconst FOREIGN_KEY_FIELDS = [\n  'CONSTRAINT_NAME as constraint_name',\n  'CONSTRAINT_NAME as constraintName',\n  'CONSTRAINT_SCHEMA as constraintSchema',\n  'CONSTRAINT_SCHEMA as constraintCatalog',\n  'TABLE_NAME as tableName',\n  'TABLE_SCHEMA as tableSchema',\n  'TABLE_SCHEMA as tableCatalog',\n  'COLUMN_NAME as columnName',\n  'REFERENCED_TABLE_SCHEMA as referencedTableSchema',\n  'REFERENCED_TABLE_SCHEMA as referencedTableCatalog',\n  'REFERENCED_TABLE_NAME as referencedTableName',\n  'REFERENCED_COLUMN_NAME as referencedColumnName'\n].join(',');\n\n/**\n * list of reserved words in Snowflake\n * source: https://docs.snowflake.com/en/sql-reference/reserved-keywords.html\n *\n * @private\n */\nconst SNOWFLAKE_RESERVED_WORDS = 'account,all,alter,and,any,as,between,by,case,cast,check,column,connect,connections,constraint,create,cross,current,current_date,current_time,current_timestamp,current_user,database,delete,distinct,drop,else,exists,false,following,for,from,full,grant,group,gscluster,having,ilike,in,increment,inner,insert,intersect,into,is,issue,join,lateral,left,like,localtime,localtimestamp,minus,natural,not,null,of,on,or,order,organization,qualify,regexp,revoke,right,rlike,row,rows,sample,schema,select,set,some,start,table,tablesample,then,to,trigger,true,try_cast,union,unique,update,using,values,view,when,whenever,where,with'.split(',');\n\nconst typeWithoutDefault = new Set(['BLOB', 'TEXT', 'GEOMETRY', 'JSON']);\n\nclass SnowflakeQueryGenerator extends AbstractQueryGenerator {\n  constructor(options) {\n    super(options);\n\n    this.OperatorMap = {\n      ...this.OperatorMap,\n      [Op.regexp]: 'REGEXP',\n      [Op.notRegexp]: 'NOT REGEXP'\n    };\n  }\n\n  createDatabaseQuery(databaseName, options) {\n    options = {\n      charset: null,\n      collate: null,\n      ...options\n    };\n\n    return Utils.joinSQLFragments([\n      'CREATE DATABASE IF NOT EXISTS',\n      this.quoteIdentifier(databaseName),\n      options.charset && `DEFAULT CHARACTER SET ${this.escape(options.charset)}`,\n      options.collate && `DEFAULT COLLATE ${this.escape(options.collate)}`,\n      ';'\n    ]);\n  }\n\n  dropDatabaseQuery(databaseName) {\n    return `DROP DATABASE IF EXISTS ${this.quoteIdentifier(databaseName)};`;\n  }\n\n  createSchema() {\n    return 'SHOW TABLES';\n  }\n\n  showSchemasQuery() {\n    return 'SHOW TABLES';\n  }\n\n  versionQuery() {\n    return 'SELECT CURRENT_VERSION()';\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    options = {\n      charset: null,\n      rowFormat: null,\n      ...options\n    };\n\n    const primaryKeys = [];\n    const foreignKeys = {};\n    const attrStr = [];\n\n    for (const attr in attributes) {\n      if (!Object.prototype.hasOwnProperty.call(attributes, attr)) continue;\n      const dataType = attributes[attr];\n      let match;\n\n      if (dataType.includes('PRIMARY KEY')) {\n        primaryKeys.push(attr);\n\n        if (dataType.includes('REFERENCES')) {\n          match = dataType.match(/^(.+) (REFERENCES.*)$/);\n          attrStr.push(`${this.quoteIdentifier(attr)} ${match[1].replace('PRIMARY KEY', '')}`);\n          foreignKeys[attr] = match[2];\n        } else {\n          attrStr.push(`${this.quoteIdentifier(attr)} ${dataType.replace('PRIMARY KEY', '')}`);\n        }\n      } else if (dataType.includes('REFERENCES')) {\n        match = dataType.match(/^(.+) (REFERENCES.*)$/);\n        attrStr.push(`${this.quoteIdentifier(attr)} ${match[1]}`);\n        foreignKeys[attr] = match[2];\n      } else {\n        attrStr.push(`${this.quoteIdentifier(attr)} ${dataType}`);\n      }\n    }\n\n    const table = this.quoteTable(tableName);\n    let attributesClause = attrStr.join(', ');\n    const pkString = primaryKeys.map(pk => this.quoteIdentifier(pk)).join(', ');\n\n    if (options.uniqueKeys) {\n      _.each(options.uniqueKeys, (columns, indexName) => {\n        if (columns.customIndex) {\n          if (typeof indexName !== 'string') {\n            indexName = `uniq_${tableName}_${columns.fields.join('_')}`;\n          }\n          attributesClause += `, UNIQUE ${this.quoteIdentifier(indexName)} (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ')})`;\n        }\n      });\n    }\n\n    if (pkString.length > 0) {\n      attributesClause += `, PRIMARY KEY (${pkString})`;\n    }\n\n    for (const fkey in foreignKeys) {\n      if (Object.prototype.hasOwnProperty.call(foreignKeys, fkey)) {\n        attributesClause += `, FOREIGN KEY (${this.quoteIdentifier(fkey)}) ${foreignKeys[fkey]}`;\n      }\n    }\n\n    return Utils.joinSQLFragments([\n      'CREATE TABLE IF NOT EXISTS',\n      table,\n      `(${attributesClause})`,\n      options.comment && typeof options.comment === 'string' && `COMMENT ${this.escape(options.comment)}`,\n      options.charset && `DEFAULT CHARSET=${options.charset}`,\n      options.collate && `COLLATE ${options.collate}`,\n      options.rowFormat && `ROW_FORMAT=${options.rowFormat}`,\n      ';'\n    ]);\n  }\n\n  describeTableQuery(tableName, schema, schemaDelimiter) {\n    const table = this.quoteTable(\n      this.addSchema({\n        tableName,\n        _schema: schema,\n        _schemaDelimiter: schemaDelimiter\n      })\n    );\n\n    return `SHOW FULL COLUMNS FROM ${table};`;\n  }\n\n  showTablesQuery(database) {\n    return Utils.joinSQLFragments([\n      'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = \\'BASE TABLE\\'',\n      database ? `AND TABLE_SCHEMA = ${this.escape(database)}` : 'AND TABLE_SCHEMA NOT IN ( \\'INFORMATION_SCHEMA\\', \\'PERFORMANCE_SCHEMA\\', \\'SYS\\')',\n      ';'\n    ]);\n  }\n\n  tableExistsQuery(table) {\n    const tableName = table.tableName || table;\n    const schema = table.schema;\n\n    return Utils.joinSQLFragments([\n      'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = \\'BASE TABLE\\'',\n      `AND TABLE_SCHEMA = ${schema !== undefined ? this.escape(schema) : 'CURRENT_SCHEMA()'}`,\n      `AND TABLE_NAME = ${this.escape(tableName)}`,\n      ';'\n    ]);\n  }\n\n  addColumnQuery(table, key, dataType) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(table),\n      'ADD',\n      this.quoteIdentifier(key),\n      this.attributeToSQL(dataType, {\n        context: 'addColumn',\n        tableName: table,\n        foreignKey: key\n      }),\n      ';'\n    ]);\n  }\n\n  removeColumnQuery(tableName, attributeName) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP',\n      this.quoteIdentifier(attributeName),\n      ';'\n    ]);\n  }\n\n  changeColumnQuery(tableName, attributes) {\n    const query = (...subQuerys) => Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'ALTER COLUMN',\n      ...subQuerys,\n      ';'\n    ]);\n    const sql = [];\n    for (const attributeName in attributes) {\n      let definition = this.dataTypeMapping(tableName, attributeName, attributes[attributeName]);\n      const attrSql = [];\n\n      if (definition.includes('NOT NULL')) {\n        attrSql.push(query(this.quoteIdentifier(attributeName), 'SET NOT NULL'));\n\n        definition = definition.replace('NOT NULL', '').trim();\n      } else if (!definition.includes('REFERENCES')) {\n        attrSql.push(query(this.quoteIdentifier(attributeName), 'DROP NOT NULL'));\n      }\n\n      if (definition.includes('DEFAULT')) {\n        attrSql.push(query(this.quoteIdentifier(attributeName), 'SET DEFAULT', definition.match(/DEFAULT ([^;]+)/)[1]));\n\n        definition = definition.replace(/(DEFAULT[^;]+)/, '').trim();\n      } else if (!definition.includes('REFERENCES')) {\n        attrSql.push(query(this.quoteIdentifier(attributeName), 'DROP DEFAULT'));\n      }\n\n      if (definition.match(/UNIQUE;*$/)) {\n        definition = definition.replace(/UNIQUE;*$/, '');\n        attrSql.push(query('ADD UNIQUE (', this.quoteIdentifier(attributeName), ')').replace('ALTER COLUMN', ''));\n      }\n\n      if (definition.includes('REFERENCES')) {\n        definition = definition.replace(/.+?(?=REFERENCES)/, '');\n        attrSql.push(query('ADD FOREIGN KEY (', this.quoteIdentifier(attributeName), ')', definition).replace('ALTER COLUMN', ''));\n      } else {\n        attrSql.push(query(this.quoteIdentifier(attributeName), 'TYPE', definition));\n      }\n\n      sql.push(attrSql.join(''));\n    }\n\n    return sql.join('');\n  }\n\n  renameColumnQuery(tableName, attrBefore, attributes) {\n    const attrString = [];\n\n    for (const attrName in attributes) {\n      const definition = attributes[attrName];\n      attrString.push(`'${attrBefore}' '${attrName}' ${definition}`);\n    }\n\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'RENAME COLUMN',\n      attrString.join(' to '),\n      ';'\n    ]);\n  }\n\n  handleSequelizeMethod(attr, tableName, factory, options, prepend) {\n    if (attr instanceof Utils.Json) {\n      // Parse nested object\n      if (attr.conditions) {\n        const conditions = this.parseConditionObject(attr.conditions).map(condition =>\n          `${this.jsonPathExtractionQuery(condition.path[0], _.tail(condition.path))} = '${condition.value}'`\n        );\n\n        return conditions.join(' AND ');\n      }\n      if (attr.path) {\n        let str;\n\n        // Allow specifying conditions using the sqlite json functions\n        if (this._checkValidJsonStatement(attr.path)) {\n          str = attr.path;\n        } else {\n          // Also support json property accessors\n          const paths = _.toPath(attr.path);\n          const column = paths.shift();\n          str = this.jsonPathExtractionQuery(column, paths);\n        }\n\n        if (attr.value) {\n          str += util.format(' = %s', this.escape(attr.value));\n        }\n\n        return str;\n      }\n    } else if (attr instanceof Utils.Cast) {\n      if (/timestamp/i.test(attr.type)) {\n        attr.type = 'datetime';\n      } else if (attr.json && /boolean/i.test(attr.type)) {\n        // true or false cannot be casted as booleans within a JSON structure\n        attr.type = 'char';\n      } else if (/double precision/i.test(attr.type) || /boolean/i.test(attr.type) || /integer/i.test(attr.type)) {\n        attr.type = 'decimal';\n      } else if (/text/i.test(attr.type)) {\n        attr.type = 'char';\n      }\n    }\n\n    return super.handleSequelizeMethod(attr, tableName, factory, options, prepend);\n  }\n\n  truncateTableQuery(tableName) {\n    return Utils.joinSQLFragments([\n      'TRUNCATE',\n      this.quoteTable(tableName)\n    ]);\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    const table = this.quoteTable(tableName);\n    let whereClause = this.getWhereConditions(where, null, model, options);\n    const limit = options.limit && ` LIMIT ${this.escape(options.limit)}`;\n    let primaryKeys = '';\n    let primaryKeysSelection = '';\n\n    if (whereClause) {\n      whereClause = `WHERE ${whereClause}`;\n    }\n\n    if (limit) {\n      if (!model) {\n        throw new Error('Cannot LIMIT delete without a model.');\n      }\n\n      const pks = Object.values(model.primaryKeys).map(pk => this.quoteIdentifier(pk.field)).join(',');\n\n      primaryKeys = model.primaryKeyAttributes.length > 1 ? `(${pks})` : pks;\n      primaryKeysSelection = pks;\n\n      return Utils.joinSQLFragments([\n        'DELETE FROM',\n        table,\n        'WHERE',\n        primaryKeys,\n        'IN (SELECT',\n        primaryKeysSelection,\n        'FROM',\n        table,\n        whereClause,\n        limit,\n        ')',\n        ';'\n      ]);\n    }\n    return Utils.joinSQLFragments([\n      'DELETE FROM',\n      table,\n      whereClause,\n      ';'\n    ]);\n  }\n\n  showIndexesQuery() {\n    return 'SELECT \\'\\' FROM DUAL';\n  }\n\n  showConstraintsQuery(table, constraintName) {\n    const tableName = table.tableName || table;\n    const schemaName = table.schema;\n\n    return Utils.joinSQLFragments([\n      'SELECT CONSTRAINT_CATALOG AS constraintCatalog,',\n      'CONSTRAINT_NAME AS constraintName,',\n      'CONSTRAINT_SCHEMA AS constraintSchema,',\n      'CONSTRAINT_TYPE AS constraintType,',\n      'TABLE_NAME AS tableName,',\n      'TABLE_SCHEMA AS tableSchema',\n      'from INFORMATION_SCHEMA.TABLE_CONSTRAINTS',\n      `WHERE table_name='${tableName}'`,\n      constraintName && `AND constraint_name = '${constraintName}'`,\n      schemaName && `AND TABLE_SCHEMA = '${schemaName}'`,\n      ';'\n    ]);\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return Utils.joinSQLFragments([\n      'DROP INDEX',\n      this.quoteIdentifier(indexName),\n      'ON',\n      this.quoteTable(tableName),\n      ';'\n    ]);\n  }\n\n  attributeToSQL(attribute, options) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = {\n        type: attribute\n      };\n    }\n\n    const attributeString = attribute.type.toString({ escape: this.escape.bind(this) });\n    let template = attributeString;\n\n    if (attribute.allowNull === false) {\n      template += ' NOT NULL';\n    }\n\n    if (attribute.autoIncrement) {\n      template += ' AUTOINCREMENT';\n    }\n\n    // BLOB/TEXT/GEOMETRY/JSON cannot have a default value\n    if (!typeWithoutDefault.has(attributeString)\n      && attribute.type._binary !== true\n      && Utils.defaultValueSchemable(attribute.defaultValue)) {\n      template += ` DEFAULT ${this.escape(attribute.defaultValue)}`;\n    }\n\n    if (attribute.unique === true) {\n      template += ' UNIQUE';\n    }\n\n    if (attribute.primaryKey) {\n      template += ' PRIMARY KEY';\n    }\n\n    if (attribute.comment) {\n      template += ` COMMENT ${this.escape(attribute.comment)}`;\n    }\n\n    if (attribute.first) {\n      template += ' FIRST';\n    }\n    if (attribute.after) {\n      template += ` AFTER ${this.quoteIdentifier(attribute.after)}`;\n    }\n\n    if (attribute.references) {\n      if (options && options.context === 'addColumn' && options.foreignKey) {\n        const attrName = this.quoteIdentifier(options.foreignKey);\n        const fkName = this.quoteIdentifier(`${options.tableName}_${attrName}_foreign_idx`);\n\n        template += `, ADD CONSTRAINT ${fkName} FOREIGN KEY (${attrName})`;\n      }\n\n      template += ` REFERENCES ${this.quoteTable(attribute.references.model)}`;\n\n      if (attribute.references.key) {\n        template += ` (${this.quoteIdentifier(attribute.references.key)})`;\n      } else {\n        template += ` (${this.quoteIdentifier('id')})`;\n      }\n\n      if (attribute.onDelete) {\n        template += ` ON DELETE ${attribute.onDelete.toUpperCase()}`;\n      }\n\n      if (attribute.onUpdate) {\n        template += ` ON UPDATE ${attribute.onUpdate.toUpperCase()}`;\n      }\n    }\n\n    return template;\n  }\n\n  attributesToSQL(attributes, options) {\n    const result = {};\n\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      result[attribute.field || key] = this.attributeToSQL(attribute, options);\n    }\n\n    return result;\n  }\n\n  /**\n   * Check whether the statmement is json function or simple path\n   *\n   * @param   {string}  stmt  The statement to validate\n   * @returns {boolean}       true if the given statement is json function\n   * @throws  {Error}         throw if the statement looks like json function but has invalid token\n   * @private\n   */\n  _checkValidJsonStatement(stmt) {\n    if (typeof stmt !== 'string') {\n      return false;\n    }\n\n    let currentIndex = 0;\n    let openingBrackets = 0;\n    let closingBrackets = 0;\n    let hasJsonFunction = false;\n    let hasInvalidToken = false;\n\n    while (currentIndex < stmt.length) {\n      const string = stmt.substr(currentIndex);\n      const functionMatches = JSON_FUNCTION_REGEX.exec(string);\n      if (functionMatches) {\n        currentIndex += functionMatches[0].indexOf('(');\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const operatorMatches = JSON_OPERATOR_REGEX.exec(string);\n      if (operatorMatches) {\n        currentIndex += operatorMatches[0].length;\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const tokenMatches = TOKEN_CAPTURE_REGEX.exec(string);\n      if (tokenMatches) {\n        const capturedToken = tokenMatches[1];\n        if (capturedToken === '(') {\n          openingBrackets++;\n        } else if (capturedToken === ')') {\n          closingBrackets++;\n        } else if (capturedToken === ';') {\n          hasInvalidToken = true;\n          break;\n        }\n        currentIndex += tokenMatches[0].length;\n        continue;\n      }\n\n      break;\n    }\n\n    // Check invalid json statement\n    if (hasJsonFunction && (hasInvalidToken || openingBrackets !== closingBrackets)) {\n      throw new Error(`Invalid json statement: ${stmt}`);\n    }\n\n    // return true if the statement has valid json function\n    return hasJsonFunction;\n  }\n\n  dataTypeMapping(tableName, attr, dataType) {\n    if (dataType.includes('PRIMARY KEY')) {\n      dataType = dataType.replace('PRIMARY KEY', '');\n    }\n\n    if (dataType.includes('SERIAL')) {\n      if (dataType.includes('BIGINT')) {\n        dataType = dataType.replace('SERIAL', 'BIGSERIAL');\n        dataType = dataType.replace('BIGINT', '');\n      } else if (dataType.includes('SMALLINT')) {\n        dataType = dataType.replace('SERIAL', 'SMALLSERIAL');\n        dataType = dataType.replace('SMALLINT', '');\n      } else {\n        dataType = dataType.replace('INTEGER', '');\n      }\n      dataType = dataType.replace('NOT NULL', '');\n    }\n\n    return dataType;\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys of a table.\n   *\n   * @param  {object} table  The table.\n   * @param  {string} schemaName The name of the schema.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeysQuery(table, schemaName) {\n    const tableName = table.tableName || table;\n    return Utils.joinSQLFragments([\n      'SELECT',\n      FOREIGN_KEY_FIELDS,\n      `FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = '${tableName}'`,\n      `AND CONSTRAINT_NAME!='PRIMARY' AND CONSTRAINT_SCHEMA='${schemaName}'`,\n      'AND REFERENCED_TABLE_NAME IS NOT NULL',\n      ';'\n    ]);\n  }\n\n  /**\n   * Generates an SQL query that returns the foreign key constraint of a given column.\n   *\n   * @param  {object} table  The table.\n   * @param  {string} columnName The name of the column.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeyQuery(table, columnName) {\n    const quotedSchemaName = table.schema ? wrapSingleQuote(table.schema) : '';\n    const quotedTableName = wrapSingleQuote(table.tableName || table);\n    const quotedColumnName = wrapSingleQuote(columnName);\n\n    return Utils.joinSQLFragments([\n      'SELECT',\n      FOREIGN_KEY_FIELDS,\n      'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE',\n      'WHERE (',\n      [\n        `REFERENCED_TABLE_NAME = ${quotedTableName}`,\n        table.schema && `AND REFERENCED_TABLE_SCHEMA = ${quotedSchemaName}`,\n        `AND REFERENCED_COLUMN_NAME = ${quotedColumnName}`\n      ],\n      ') OR (',\n      [\n        `TABLE_NAME = ${quotedTableName}`,\n        table.schema && `AND TABLE_SCHEMA = ${quotedSchemaName}`,\n        `AND COLUMN_NAME = ${quotedColumnName}`,\n        'AND REFERENCED_TABLE_NAME IS NOT NULL'\n      ],\n      ')'\n    ]);\n  }\n\n  /**\n   * Generates an SQL query that removes a foreign key from a table.\n   *\n   * @param  {string} tableName  The name of the table.\n   * @param  {string} foreignKey The name of the foreign key constraint.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  dropForeignKeyQuery(tableName, foreignKey) {\n    return Utils.joinSQLFragments([\n      'ALTER TABLE',\n      this.quoteTable(tableName),\n      'DROP FOREIGN KEY',\n      this.quoteIdentifier(foreignKey),\n      ';'\n    ]);\n  }\n\n  addLimitAndOffset(options) {\n    let fragment = [];\n    if (options.offset !== null && options.offset !== undefined && options.offset !== 0) {\n      fragment = fragment.concat([' LIMIT ', this.escape(options.limit), ' OFFSET ', this.escape(options.offset)]);\n    } else if ( options.limit !== null && options.limit !== undefined ) {\n      fragment = [' LIMIT ', this.escape(options.limit)];\n    }\n    return fragment.join('');\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    const optForceQuote = force || false;\n    const optQuoteIdentifiers = this.options.quoteIdentifiers !== false;\n    const rawIdentifier = Utils.removeTicks(identifier, '\"');\n\n    if (\n      optForceQuote === true ||\n      optQuoteIdentifiers !== false ||\n      identifier.includes('.') ||\n      identifier.includes('->') ||\n      SNOWFLAKE_RESERVED_WORDS.includes(rawIdentifier.toLowerCase())\n    ) {\n      // In Snowflake if tables or attributes are created double-quoted,\n      // they are also case sensitive. If they contain any uppercase\n      // characters, they must always be double-quoted. This makes it\n      // impossible to write queries in portable SQL if tables are created in\n      // this way. Hence, we strip quotes if we don't want case sensitivity.\n      return Utils.addTicks(rawIdentifier, '\"');\n    }\n    return rawIdentifier;\n  }\n}\n\n// private methods\nfunction wrapSingleQuote(identifier) {\n  return Utils.addTicks(identifier, '\\'');\n}\n\nmodule.exports = SnowflakeQueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const sequelizeErrors = require("../../errors");
-const { QueryInterface } = require("../abstract/query-interface");
-const QueryTypes = require("../../query-types");
-class SnowflakeQueryInterface extends QueryInterface {
-  async removeColumn(tableName, columnName, options) {
-    options = options || {};
-    const [results] = await this.sequelize.query(this.queryGenerator.getForeignKeyQuery(tableName.tableName ? tableName : {
-      tableName,
-      schema: this.sequelize.config.database
-    }, columnName), __spreadValues({ raw: true }, options));
-    if (results.length && results[0].constraint_name !== "PRIMARY") {
-      await Promise.all(results.map((constraint) => this.sequelize.query(this.queryGenerator.dropForeignKeyQuery(tableName, constraint.constraint_name), __spreadValues({ raw: true }, options))));
-    }
-    return await this.sequelize.query(this.queryGenerator.removeColumnQuery(tableName, columnName), __spreadValues({ raw: true }, options));
-  }
-  async upsert(tableName, insertValues, updateValues, where, options) {
-    options = __spreadValues({}, options);
-    options.type = QueryTypes.UPSERT;
-    options.updateOnDuplicate = Object.keys(updateValues);
-    const model = options.model;
-    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);
-    return await this.sequelize.query(sql, options);
-  }
-  async removeConstraint(tableName, constraintName, options) {
-    const sql = this.queryGenerator.showConstraintsQuery(tableName.tableName ? tableName : {
-      tableName,
-      schema: this.sequelize.config.database
-    }, constraintName);
-    const constraints = await this.sequelize.query(sql, __spreadProps(__spreadValues({}, options), {
-      type: this.sequelize.QueryTypes.SHOWCONSTRAINTS
-    }));
-    const constraint = constraints[0];
-    let query;
-    if (!constraint || !constraint.constraintType) {
-      throw new sequelizeErrors.UnknownConstraintError({
-        message: `Constraint ${constraintName} on table ${tableName} does not exist`,
-        constraint: constraintName,
-        table: tableName
-      });
-    }
-    if (constraint.constraintType === "FOREIGN KEY") {
-      query = this.queryGenerator.dropForeignKeyQuery(tableName, constraintName);
-    } else {
-      query = this.queryGenerator.removeIndexQuery(constraint.tableName, constraint.constraintName);
-    }
-    return await this.sequelize.query(query, options);
-  }
-}
-exports.SnowflakeQueryInterface = SnowflakeQueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst sequelizeErrors = require('../../errors');\nconst { QueryInterface } = require('../abstract/query-interface');\nconst QueryTypes = require('../../query-types');\n\n/**\n * The interface that Sequelize uses to talk with Snowflake database\n */\nclass SnowflakeQueryInterface extends QueryInterface {\n  /**\n   * A wrapper that fixes Snowflake's inability to cleanly remove columns from existing tables if they have a foreign key constraint.\n   *\n   * @override\n   */\n  async removeColumn(tableName, columnName, options) {\n    options = options || {};\n\n    const [results] = await this.sequelize.query(\n      this.queryGenerator.getForeignKeyQuery(tableName.tableName ? tableName : {\n        tableName,\n        schema: this.sequelize.config.database\n      }, columnName),\n      { raw: true, ...options }\n    );\n\n    //Exclude primary key constraint\n    if (results.length && results[0].constraint_name !== 'PRIMARY') {\n      await Promise.all(results.map(constraint => this.sequelize.query(\n        this.queryGenerator.dropForeignKeyQuery(tableName, constraint.constraint_name),\n        { raw: true, ...options }\n      )));\n    }\n\n    return await this.sequelize.query(\n      this.queryGenerator.removeColumnQuery(tableName, columnName),\n      { raw: true, ...options }\n    );\n  }\n\n  /** @override */\n  async upsert(tableName, insertValues, updateValues, where, options) {\n    options = { ...options };\n\n    options.type = QueryTypes.UPSERT;\n    options.updateOnDuplicate = Object.keys(updateValues);\n\n    const model = options.model;\n    const sql = this.queryGenerator.insertQuery(tableName, insertValues, model.rawAttributes, options);\n    return await this.sequelize.query(sql, options);\n  }\n\n  /** @override */\n  async removeConstraint(tableName, constraintName, options) {\n    const sql = this.queryGenerator.showConstraintsQuery(\n      tableName.tableName ? tableName : {\n        tableName,\n        schema: this.sequelize.config.database\n      }, constraintName);\n\n    const constraints = await this.sequelize.query(sql, { ...options,\n      type: this.sequelize.QueryTypes.SHOWCONSTRAINTS });\n\n    const constraint = constraints[0];\n    let query;\n    if (!constraint || !constraint.constraintType) {\n      throw new sequelizeErrors.UnknownConstraintError(\n        {\n          message: `Constraint ${constraintName} on table ${tableName} does not exist`,\n          constraint: constraintName,\n          table: tableName\n        });\n    }\n\n    if (constraint.constraintType === 'FOREIGN KEY') {\n      query = this.queryGenerator.dropForeignKeyQuery(tableName, constraintName);\n    } else {\n      query = this.queryGenerator.removeIndexQuery(constraint.tableName, constraint.constraintName);\n    }\n\n    return await this.sequelize.query(query, options);\n  }\n}\n\nexports.SnowflakeQueryInterface = SnowflakeQueryInterface;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;AAEA,MAAM,kBAAkB,QAAQ;AAChC,MAAM,EAAE,mBAAmB,QAAQ;AACnC,MAAM,aAAa,QAAQ;AAK3B,sCAAsC,eAAe;AAAA,QAM7C,aAAa,WAAW,YAAY,SAAS;AACjD,cAAU,WAAW;AAErB,UAAM,CAAC,WAAW,MAAM,KAAK,UAAU,MACrC,KAAK,eAAe,mBAAmB,UAAU,YAAY,YAAY;AAAA,MACvE;AAAA,MACA,QAAQ,KAAK,UAAU,OAAO;AAAA,OAC7B,aACH,iBAAE,KAAK,QAAS;AAIlB,QAAI,QAAQ,UAAU,QAAQ,GAAG,oBAAoB,WAAW;AAC9D,YAAM,QAAQ,IAAI,QAAQ,IAAI,gBAAc,KAAK,UAAU,MACzD,KAAK,eAAe,oBAAoB,WAAW,WAAW,kBAC9D,iBAAE,KAAK,QAAS;AAAA;AAIpB,WAAO,MAAM,KAAK,UAAU,MAC1B,KAAK,eAAe,kBAAkB,WAAW,aACjD,iBAAE,KAAK,QAAS;AAAA;AAAA,QAKd,OAAO,WAAW,cAAc,cAAc,OAAO,SAAS;AAClE,cAAU,mBAAK;AAEf,YAAQ,OAAO,WAAW;AAC1B,YAAQ,oBAAoB,OAAO,KAAK;AAExC,UAAM,QAAQ,QAAQ;AACtB,UAAM,MAAM,KAAK,eAAe,YAAY,WAAW,cAAc,MAAM,eAAe;AAC1F,WAAO,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA;AAAA,QAInC,iBAAiB,WAAW,gBAAgB,SAAS;AACzD,UAAM,MAAM,KAAK,eAAe,qBAC9B,UAAU,YAAY,YAAY;AAAA,MAChC;AAAA,MACA,QAAQ,KAAK,UAAU,OAAO;AAAA,OAC7B;AAEL,UAAM,cAAc,MAAM,KAAK,UAAU,MAAM,KAAK,iCAAK,UAAL;AAAA,MAClD,MAAM,KAAK,UAAU,WAAW;AAAA;AAElC,UAAM,aAAa,YAAY;AAC/B,QAAI;AACJ,QAAI,CAAC,cAAc,CAAC,WAAW,gBAAgB;AAC7C,YAAM,IAAI,gBAAgB,uBACxB;AAAA,QACE,SAAS,cAAc,2BAA2B;AAAA,QAClD,YAAY;AAAA,QACZ,OAAO;AAAA;AAAA;AAIb,QAAI,WAAW,mBAAmB,eAAe;AAC/C,cAAQ,KAAK,eAAe,oBAAoB,WAAW;AAAA,WACtD;AACL,cAAQ,KAAK,eAAe,iBAAiB,WAAW,WAAW,WAAW;AAAA;AAGhF,WAAO,MAAM,KAAK,UAAU,MAAM,OAAO;AAAA;AAAA;AAI7C,QAAQ,0BAA0B;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,237 +1,0 @@
-"use strict";
-const AbstractQuery = require("../abstract/query");
-const sequelizeErrors = require("../../errors");
-const _ = require("lodash");
-const { logger } = require("../../utils/logger");
-const ER_DUP_ENTRY = 1062;
-const ER_DEADLOCK = 1213;
-const ER_ROW_IS_REFERENCED = 1451;
-const ER_NO_REFERENCED_ROW = 1452;
-const debug = logger.debugContext("sql:snowflake");
-class Query extends AbstractQuery {
-  static formatBindParameters(sql, values, dialect) {
-    const bindParam = [];
-    const replacementFunc = (_match, key, values_) => {
-      if (values_[key] !== void 0) {
-        bindParam.push(values_[key]);
-        return "?";
-      }
-      return void 0;
-    };
-    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];
-    return [sql, bindParam.length > 0 ? bindParam : void 0];
-  }
-  async run(sql, parameters) {
-    this.sql = sql;
-    const { connection, options } = this;
-    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;
-    const complete = this._logQuery(sql, debug, parameters);
-    if (parameters) {
-      debug("parameters(%j)", parameters);
-    }
-    let results;
-    try {
-      results = await new Promise((resolve, reject) => {
-        connection.execute({
-          sqlText: sql,
-          binds: parameters,
-          complete(err, _stmt, rows) {
-            if (err) {
-              reject(err);
-            } else {
-              resolve(rows);
-            }
-          }
-        });
-      });
-    } catch (error) {
-      if (options.transaction && error.errno === ER_DEADLOCK) {
-        try {
-          await options.transaction.rollback();
-        } catch (error_) {
-        }
-        options.transaction.finished = "rollback";
-      }
-      error.sql = sql;
-      error.parameters = parameters;
-      throw this.formatError(error);
-    } finally {
-      complete();
-    }
-    if (showWarnings && results && results.warningStatus > 0) {
-      await this.logWarnings(results);
-    }
-    return this.formatResults(results);
-  }
-  formatResults(data) {
-    let result = this.instance;
-    if (this.isInsertQuery(data)) {
-      this.handleInsertQuery(data);
-      if (!this.instance) {
-        if (data.constructor.name === "ResultSetHeader" && this.model && this.model.autoIncrementAttribute && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute && this.model.rawAttributes[this.model.primaryKeyAttribute]) {
-          const startId = data[this.getInsertIdField()];
-          result = [];
-          for (let i = startId; i < startId + data.affectedRows; i++) {
-            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });
-          }
-        } else {
-          result = data[this.getInsertIdField()];
-        }
-      }
-    }
-    if (this.isSelectQuery()) {
-      if (this.options.raw === false && this.sequelize.options.quoteIdentifiers === false) {
-        const sfAttrMap = _.reduce(this.model.rawAttributes, (m, v, k) => {
-          m[k.toUpperCase()] = k;
-          return m;
-        }, {});
-        data = data.map((data2) => _.reduce(data2, (prev, value, key) => {
-          if (value !== void 0 && sfAttrMap[key]) {
-            prev[sfAttrMap[key]] = value;
-            delete prev[key];
-          }
-          return prev;
-        }, data2));
-      }
-      this.options.fieldMap = _.mapKeys(this.options.fieldMap, (v, k) => {
-        return k.toUpperCase();
-      });
-      return this.handleSelectQuery(data);
-    }
-    if (this.isShowTablesQuery()) {
-      return this.handleShowTablesQuery(data);
-    }
-    if (this.isDescribeQuery()) {
-      result = {};
-      for (const _result of data) {
-        result[_result.Field] = {
-          type: _result.Type.toUpperCase(),
-          allowNull: _result.Null === "YES",
-          defaultValue: _result.Default,
-          primaryKey: _result.Key === "PRI",
-          autoIncrement: Object.prototype.hasOwnProperty.call(_result, "Extra") && _result.Extra.toLowerCase() === "auto_increment",
-          comment: _result.Comment ? _result.Comment : null
-        };
-      }
-      return result;
-    }
-    if (this.isShowIndexesQuery()) {
-      return this.handleShowIndexesQuery(data);
-    }
-    if (this.isCallQuery()) {
-      return data[0];
-    }
-    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {
-      return data[0]["number of rows updated"];
-    }
-    if (this.isVersionQuery()) {
-      return data[0].version;
-    }
-    if (this.isForeignKeysQuery()) {
-      return data;
-    }
-    if (this.isUpsertQuery()) {
-      return [result, data.affectedRows === 1];
-    }
-    if (this.isInsertQuery() || this.isUpdateQuery()) {
-      return [result, data.affectedRows];
-    }
-    if (this.isShowConstraintsQuery()) {
-      return data;
-    }
-    if (this.isRawQuery()) {
-      return [data, data];
-    }
-    return result;
-  }
-  async logWarnings(results) {
-    const warningResults = await this.run("SHOW WARNINGS");
-    const warningMessage = `Snowflake Warnings (${this.connection.uuid || "default"}): `;
-    const messages = [];
-    for (const _warningRow of warningResults) {
-      if (_warningRow === void 0 || typeof _warningRow[Symbol.iterator] !== "function") {
-        continue;
-      }
-      for (const _warningResult of _warningRow) {
-        if (Object.prototype.hasOwnProperty.call(_warningResult, "Message")) {
-          messages.push(_warningResult.Message);
-        } else {
-          for (const _objectKey of _warningResult.keys()) {
-            messages.push([_objectKey, _warningResult[_objectKey]].join(": "));
-          }
-        }
-      }
-    }
-    this.sequelize.log(warningMessage + messages.join("; "), this.options);
-    return results;
-  }
-  formatError(err) {
-    const errCode = err.errno || err.code;
-    switch (errCode) {
-      case ER_DUP_ENTRY: {
-        const match = err.message.match(/Duplicate entry '([\s\S]*)' for key '?((.|\s)*?)'?$/);
-        let fields = {};
-        let message = "Validation error";
-        const values = match ? match[1].split("-") : void 0;
-        const fieldKey = match ? match[2] : void 0;
-        const fieldVal = match ? match[1] : void 0;
-        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];
-        if (uniqueKey) {
-          if (uniqueKey.msg)
-            message = uniqueKey.msg;
-          fields = _.zipObject(uniqueKey.fields, values);
-        } else {
-          fields[fieldKey] = fieldVal;
-        }
-        const errors = [];
-        _.forOwn(fields, (value, field) => {
-          errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, value, this.instance, "not_unique"));
-        });
-        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields });
-      }
-      case ER_ROW_IS_REFERENCED:
-      case ER_NO_REFERENCED_ROW: {
-        const match = err.message.match(/CONSTRAINT ([`"])(.*)\1 FOREIGN KEY \(\1(.*)\1\) REFERENCES \1(.*)\1 \(\1(.*)\1\)/);
-        const quoteChar = match ? match[1] : "`";
-        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : void 0;
-        return new sequelizeErrors.ForeignKeyConstraintError({
-          reltype: String(errCode) === String(ER_ROW_IS_REFERENCED) ? "parent" : "child",
-          table: match ? match[4] : void 0,
-          fields,
-          value: fields && fields.length && this.instance && this.instance[fields[0]] || void 0,
-          index: match ? match[2] : void 0,
-          parent: err
-        });
-      }
-      default:
-        return new sequelizeErrors.DatabaseError(err);
-    }
-  }
-  handleShowIndexesQuery(data) {
-    data = data.reduce((acc, item) => {
-      if (!(item.Key_name in acc)) {
-        acc[item.Key_name] = item;
-        item.fields = [];
-      }
-      acc[item.Key_name].fields[item.Seq_in_index - 1] = {
-        attribute: item.Column_name,
-        length: item.Sub_part || void 0,
-        order: item.Collation === "A" ? "ASC" : void 0
-      };
-      delete item.column_name;
-      return acc;
-    }, {});
-    return _.map(data, (item) => ({
-      primary: item.Key_name === "PRIMARY",
-      fields: item.fields,
-      name: item.Key_name,
-      tableName: item.Table,
-      unique: item.Non_unique !== 1,
-      type: item.Index_type
-    }));
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/snowflake/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/snowflake/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/snowflake/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst AbstractQuery = require('../abstract/query');\nconst sequelizeErrors = require('../../errors');\nconst _ = require('lodash');\nconst { logger } = require('../../utils/logger');\n\nconst ER_DUP_ENTRY = 1062;\nconst ER_DEADLOCK = 1213;\nconst ER_ROW_IS_REFERENCED = 1451;\nconst ER_NO_REFERENCED_ROW = 1452;\n\nconst debug = logger.debugContext('sql:snowflake');\n\nclass Query extends AbstractQuery {\n  static formatBindParameters(sql, values, dialect) {\n    const bindParam = [];\n    const replacementFunc = (_match, key, values_) => {\n      if (values_[key] !== undefined) {\n        bindParam.push(values_[key]);\n        return '?';\n      }\n      return undefined;\n    };\n    sql = AbstractQuery.formatBindParameters(sql, values, dialect, replacementFunc)[0];\n    return [sql, bindParam.length > 0 ? bindParam : undefined];\n  }\n\n  async run(sql, parameters) {\n    this.sql = sql;\n    const { connection, options } = this;\n\n    const showWarnings = this.sequelize.options.showWarnings || options.showWarnings;\n\n    const complete = this._logQuery(sql, debug, parameters);\n\n    if (parameters) {\n      debug('parameters(%j)', parameters);\n    }\n\n    let results;\n\n    try {\n      results = await new Promise((resolve, reject) => {\n        connection.execute({\n          sqlText: sql,\n          binds: parameters,\n          complete(err, _stmt, rows) {\n            if (err) {\n              reject(err);\n            } else {\n              resolve(rows);\n            }\n          }\n        });\n      });\n    } catch (error) {\n      if (options.transaction && error.errno === ER_DEADLOCK) {\n        try {\n          await options.transaction.rollback();\n        } catch (error_) {\n          // ignore errors\n        }\n\n        options.transaction.finished = 'rollback';\n      }\n\n      error.sql = sql;\n      error.parameters = parameters;\n      throw this.formatError(error);\n    } finally {\n      complete();\n    }\n\n    if (showWarnings && results && results.warningStatus > 0) {\n      await this.logWarnings(results);\n    }\n    return this.formatResults(results);\n  }\n\n  /**\n   * High level function that handles the results of a query execution.\n   *\n   *\n   * Example:\n   *  query.formatResults([\n   *    {\n   *      id: 1,              // this is from the main table\n   *      attr2: 'snafu',     // this is from the main table\n   *      Tasks.id: 1,        // this is from the associated table\n   *      Tasks.title: 'task' // this is from the associated table\n   *    }\n   *  ])\n   *\n   * @param {Array} data - The result of the query execution.\n   * @private\n   */\n  formatResults(data) {\n    let result = this.instance;\n\n    if (this.isInsertQuery(data)) {\n      this.handleInsertQuery(data);\n\n      if (!this.instance) {\n        // handle bulkCreate AI primary key\n        if (\n          data.constructor.name === 'ResultSetHeader'\n          && this.model\n          && this.model.autoIncrementAttribute\n          && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute\n          && this.model.rawAttributes[this.model.primaryKeyAttribute]\n        ) {\n          const startId = data[this.getInsertIdField()];\n          result = [];\n          for (let i = startId; i < startId + data.affectedRows; i++) {\n            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });\n          }\n        } else {\n          result = data[this.getInsertIdField()];\n        }\n      }\n    }\n\n    if (this.isSelectQuery()) {\n      // Snowflake will treat tables as case-insensitive, so fix the case\n      // of the returned values to match attributes\n      if (this.options.raw === false && this.sequelize.options.quoteIdentifiers === false) {\n        const sfAttrMap = _.reduce(this.model.rawAttributes, (m, v, k) => {\n          m[k.toUpperCase()] = k;\n          return m;\n        }, {});\n\n        data = data.map(data => _.reduce(data, (prev, value, key) => {\n          if ( value !== undefined && sfAttrMap[key] ) {\n            prev[sfAttrMap[key]] = value;\n            delete prev[key];\n          }\n          return prev;\n        }, data));\n      }\n\n      this.options.fieldMap = _.mapKeys(this.options.fieldMap, (v, k) => { return k.toUpperCase(); });\n\n      return this.handleSelectQuery(data);\n    }\n\n    if (this.isShowTablesQuery()) {\n      return this.handleShowTablesQuery(data);\n    }\n\n    if (this.isDescribeQuery()) {\n      result = {};\n\n      for (const _result of data) {\n        result[_result.Field] = {\n          type: _result.Type.toUpperCase(),\n          allowNull: _result.Null === 'YES',\n          defaultValue: _result.Default,\n          primaryKey: _result.Key === 'PRI',\n          autoIncrement: Object.prototype.hasOwnProperty.call(_result, 'Extra')\n            && _result.Extra.toLowerCase() === 'auto_increment',\n          comment: _result.Comment ? _result.Comment : null\n        };\n      }\n      return result;\n    }\n    if (this.isShowIndexesQuery()) {\n      return this.handleShowIndexesQuery(data);\n    }\n    if (this.isCallQuery()) {\n      return data[0];\n    }\n    if (this.isBulkUpdateQuery() || this.isBulkDeleteQuery()) {\n      return data[0]['number of rows updated'];\n    }\n    if (this.isVersionQuery()) {\n      return data[0].version;\n    }\n    if (this.isForeignKeysQuery()) {\n      return data;\n    }\n    if (this.isUpsertQuery()) {\n      return [result, data.affectedRows === 1];\n    }\n    if (this.isInsertQuery() || this.isUpdateQuery()) {\n      return [result, data.affectedRows];\n    }\n    if (this.isShowConstraintsQuery()) {\n      return data;\n    }\n    if (this.isRawQuery()) {\n      return [data, data];\n    }\n\n    return result;\n  }\n\n  async logWarnings(results) {\n    const warningResults = await this.run('SHOW WARNINGS');\n    const warningMessage = `Snowflake Warnings (${this.connection.uuid || 'default'}): `;\n    const messages = [];\n    for (const _warningRow of warningResults) {\n      if (_warningRow === undefined || typeof _warningRow[Symbol.iterator] !== 'function') {\n        continue;\n      }\n      for (const _warningResult of _warningRow) {\n        if (Object.prototype.hasOwnProperty.call(_warningResult, 'Message')) {\n          messages.push(_warningResult.Message);\n        } else {\n          for (const _objectKey of _warningResult.keys()) {\n            messages.push([_objectKey, _warningResult[_objectKey]].join(': '));\n          }\n        }\n      }\n    }\n\n    this.sequelize.log(warningMessage + messages.join('; '), this.options);\n\n    return results;\n  }\n\n  formatError(err) {\n    const errCode = err.errno || err.code;\n\n    switch (errCode) {\n      case ER_DUP_ENTRY: {\n        const match = err.message.match(/Duplicate entry '([\\s\\S]*)' for key '?((.|\\s)*?)'?$/);\n        let fields = {};\n        let message = 'Validation error';\n        const values = match ? match[1].split('-') : undefined;\n        const fieldKey = match ? match[2] : undefined;\n        const fieldVal = match ? match[1] : undefined;\n        const uniqueKey = this.model && this.model.uniqueKeys[fieldKey];\n\n        if (uniqueKey) {\n          if (uniqueKey.msg) message = uniqueKey.msg;\n          fields = _.zipObject(uniqueKey.fields, values);\n        } else {\n          fields[fieldKey] = fieldVal;\n        }\n\n        const errors = [];\n        _.forOwn(fields, (value, field) => {\n          errors.push(new sequelizeErrors.ValidationErrorItem(\n            this.getUniqueConstraintErrorMessage(field),\n            'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n            field,\n            value,\n            this.instance,\n            'not_unique'\n          ));\n        });\n\n        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields });\n      }\n\n      case ER_ROW_IS_REFERENCED:\n      case ER_NO_REFERENCED_ROW: {\n        // e.g. CONSTRAINT `example_constraint_name` FOREIGN KEY (`example_id`) REFERENCES `examples` (`id`)\n        const match = err.message.match(\n          /CONSTRAINT ([`\"])(.*)\\1 FOREIGN KEY \\(\\1(.*)\\1\\) REFERENCES \\1(.*)\\1 \\(\\1(.*)\\1\\)/\n        );\n        const quoteChar = match ? match[1] : '`';\n        const fields = match ? match[3].split(new RegExp(`${quoteChar}, *${quoteChar}`)) : undefined;\n\n        return new sequelizeErrors.ForeignKeyConstraintError({\n          reltype: String(errCode) === String(ER_ROW_IS_REFERENCED) ? 'parent' : 'child',\n          table: match ? match[4] : undefined,\n          fields,\n          value: fields && fields.length && this.instance && this.instance[fields[0]] || undefined,\n          index: match ? match[2] : undefined,\n          parent: err\n        });\n      }\n\n      default:\n        return new sequelizeErrors.DatabaseError(err);\n    }\n  }\n\n  handleShowIndexesQuery(data) {\n    // Group by index name, and collect all fields\n    data = data.reduce((acc, item) => {\n      if (!(item.Key_name in acc)) {\n        acc[item.Key_name] = item;\n        item.fields = [];\n      }\n\n      acc[item.Key_name].fields[item.Seq_in_index - 1] = {\n        attribute: item.Column_name,\n        length: item.Sub_part || undefined,\n        order: item.Collation === 'A' ? 'ASC' : undefined\n      };\n      delete item.column_name;\n\n      return acc;\n    }, {});\n\n    return _.map(data, item => ({\n      primary: item.Key_name === 'PRIMARY',\n      fields: item.fields,\n      name: item.Key_name,\n      tableName: item.Table,\n      unique: item.Non_unique !== 1,\n      type: item.Index_type\n    }));\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-"use strict";
-const fs = require("fs");
-const path = require("path");
-const AbstractConnectionManager = require("../abstract/connection-manager");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("connection:sqlite");
-const dataTypes = require("../../data-types").sqlite;
-const sequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("sqlite");
-const { promisify } = require("util");
-class ConnectionManager extends AbstractConnectionManager {
-  constructor(dialect, sequelize) {
-    super(dialect, sequelize);
-    if (this.sequelize.options.host === "localhost") {
-      delete this.sequelize.options.host;
-    }
-    this.connections = {};
-    this.lib = this._loadDialectModule("sqlite3");
-    this.refreshTypeParser(dataTypes);
-  }
-  async _onProcessExit() {
-    await Promise.all(Object.getOwnPropertyNames(this.connections).map((connection) => promisify((callback) => this.connections[connection].close(callback))()));
-    return super._onProcessExit.call(this);
-  }
-  _refreshTypeParser(dataType) {
-    parserStore.refresh(dataType);
-  }
-  _clearTypeParser() {
-    parserStore.clear();
-  }
-  async getConnection(options) {
-    options = options || {};
-    options.uuid = options.uuid || "default";
-    if (!!this.sequelize.options.storage !== null && this.sequelize.options.storage !== void 0) {
-      options.storage = this.sequelize.options.storage;
-    } else {
-      options.storage = this.sequelize.options.host || ":memory:";
-    }
-    options.inMemory = options.storage === ":memory:" ? 1 : 0;
-    const dialectOptions = this.sequelize.options.dialectOptions;
-    const defaultReadWriteMode = this.lib.OPEN_READWRITE | this.lib.OPEN_CREATE;
-    options.readWriteMode = dialectOptions && dialectOptions.mode || defaultReadWriteMode;
-    if (this.connections[options.inMemory || options.uuid]) {
-      return this.connections[options.inMemory || options.uuid];
-    }
-    if (!options.inMemory && (options.readWriteMode & this.lib.OPEN_CREATE) !== 0) {
-      fs.mkdirSync(path.dirname(options.storage), { recursive: true });
-    }
-    const connection = await new Promise((resolve, reject) => {
-      this.connections[options.inMemory || options.uuid] = new this.lib.Database(options.storage, options.readWriteMode, (err) => {
-        if (err)
-          return reject(new sequelizeErrors.ConnectionError(err));
-        debug(`connection acquired ${options.uuid}`);
-        resolve(this.connections[options.inMemory || options.uuid]);
-      });
-    });
-    if (this.sequelize.config.password) {
-      connection.run(`PRAGMA KEY=${this.sequelize.escape(this.sequelize.config.password)}`);
-    }
-    if (this.sequelize.options.foreignKeys !== false) {
-      connection.run("PRAGMA FOREIGN_KEYS=ON");
-    }
-    return connection;
-  }
-  releaseConnection(connection, force) {
-    if (connection.filename === ":memory:" && force !== true)
-      return;
-    if (connection.uuid) {
-      connection.close();
-      debug(`connection released ${connection.uuid}`);
-      delete this.connections[connection.uuid];
-    }
-  }
-}
-module.exports = ConnectionManager;
-module.exports.ConnectionManager = ConnectionManager;
-module.exports.default = ConnectionManager;
-//# sourceMappingURL=connection-manager.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/connection-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst AbstractConnectionManager = require('../abstract/connection-manager');\nconst { logger } = require('../../utils/logger');\nconst debug = logger.debugContext('connection:sqlite');\nconst dataTypes = require('../../data-types').sqlite;\nconst sequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('sqlite');\nconst { promisify } = require('util');\n\nclass ConnectionManager extends AbstractConnectionManager {\n  constructor(dialect, sequelize) {\n    super(dialect, sequelize);\n\n    // We attempt to parse file location from a connection uri\n    // but we shouldn't match sequelize default host.\n    if (this.sequelize.options.host === 'localhost') {\n      delete this.sequelize.options.host;\n    }\n\n    this.connections = {};\n    this.lib = this._loadDialectModule('sqlite3');\n    this.refreshTypeParser(dataTypes);\n  }\n\n  async _onProcessExit() {\n    await Promise.all(\n      Object.getOwnPropertyNames(this.connections)\n        .map(connection => promisify(callback => this.connections[connection].close(callback))())\n    );\n    return super._onProcessExit.call(this);\n  }\n\n  // Expose this as a method so that the parsing may be updated when the user has added additional, custom types\n  _refreshTypeParser(dataType) {\n    parserStore.refresh(dataType);\n  }\n\n  _clearTypeParser() {\n    parserStore.clear();\n  }\n\n  async getConnection(options) {\n    options = options || {};\n    options.uuid = options.uuid || 'default';\n\n    if (!!this.sequelize.options.storage !== null && this.sequelize.options.storage !== undefined) {\n      // Check explicitely for the storage option to not be set since an empty string signals\n      // SQLite will create a temporary disk-based database in that case.\n      options.storage = this.sequelize.options.storage;\n    } else {\n      options.storage = this.sequelize.options.host || ':memory:';\n    }\n\n    options.inMemory = options.storage === ':memory:' ? 1 : 0;\n\n    const dialectOptions = this.sequelize.options.dialectOptions;\n    const defaultReadWriteMode = this.lib.OPEN_READWRITE | this.lib.OPEN_CREATE;\n\n    options.readWriteMode = dialectOptions && dialectOptions.mode || defaultReadWriteMode;\n\n    if (this.connections[options.inMemory || options.uuid]) {\n      return this.connections[options.inMemory || options.uuid];\n    }\n\n    if (!options.inMemory && (options.readWriteMode & this.lib.OPEN_CREATE) !== 0) {\n      // automatic path provision for `options.storage`\n      fs.mkdirSync(path.dirname(options.storage), { recursive: true });\n    }\n\n    const connection = await new Promise((resolve, reject) => {\n      this.connections[options.inMemory || options.uuid] = new this.lib.Database(\n        options.storage,\n        options.readWriteMode,\n        err => {\n          if (err) return reject(new sequelizeErrors.ConnectionError(err));\n          debug(`connection acquired ${options.uuid}`);\n          resolve(this.connections[options.inMemory || options.uuid]);\n        }\n      );\n    });\n\n    if (this.sequelize.config.password) {\n      // Make it possible to define and use password for sqlite encryption plugin like sqlcipher\n      connection.run(`PRAGMA KEY=${this.sequelize.escape(this.sequelize.config.password)}`);\n    }\n    if (this.sequelize.options.foreignKeys !== false) {\n      // Make it possible to define and use foreign key constraints unless\n      // explicitly disallowed. It's still opt-in per relation\n      connection.run('PRAGMA FOREIGN_KEYS=ON');\n    }\n\n    return connection;\n  }\n\n  releaseConnection(connection, force) {\n    if (connection.filename === ':memory:' && force !== true) return;\n\n    if (connection.uuid) {\n      connection.close();\n      debug(`connection released ${connection.uuid}`);\n      delete this.connections[connection.uuid];\n    }\n  }\n}\n\nmodule.exports = ConnectionManager;\nmodule.exports.ConnectionManager = ConnectionManager;\nmodule.exports.default = ConnectionManager;\n"],
-  "mappings": ";AAEA,MAAM,KAAK,QAAQ;AACnB,MAAM,OAAO,QAAQ;AACrB,MAAM,4BAA4B,QAAQ;AAC1C,MAAM,EAAE,WAAW,QAAQ;AAC3B,MAAM,QAAQ,OAAO,aAAa;AAClC,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,kBAAkB,QAAQ;AAChC,MAAM,cAAc,QAAQ,kBAAkB;AAC9C,MAAM,EAAE,cAAc,QAAQ;AAE9B,gCAAgC,0BAA0B;AAAA,EACxD,YAAY,SAAS,WAAW;AAC9B,UAAM,SAAS;AAIf,QAAI,KAAK,UAAU,QAAQ,SAAS,aAAa;AAC/C,aAAO,KAAK,UAAU,QAAQ;AAAA;AAGhC,SAAK,cAAc;AACnB,SAAK,MAAM,KAAK,mBAAmB;AACnC,SAAK,kBAAkB;AAAA;AAAA,QAGnB,iBAAiB;AACrB,UAAM,QAAQ,IACZ,OAAO,oBAAoB,KAAK,aAC7B,IAAI,gBAAc,UAAU,cAAY,KAAK,YAAY,YAAY,MAAM;AAEhF,WAAO,MAAM,eAAe,KAAK;AAAA;AAAA,EAInC,mBAAmB,UAAU;AAC3B,gBAAY,QAAQ;AAAA;AAAA,EAGtB,mBAAmB;AACjB,gBAAY;AAAA;AAAA,QAGR,cAAc,SAAS;AAC3B,cAAU,WAAW;AACrB,YAAQ,OAAO,QAAQ,QAAQ;AAE/B,QAAI,CAAC,CAAC,KAAK,UAAU,QAAQ,YAAY,QAAQ,KAAK,UAAU,QAAQ,YAAY,QAAW;AAG7F,cAAQ,UAAU,KAAK,UAAU,QAAQ;AAAA,WACpC;AACL,cAAQ,UAAU,KAAK,UAAU,QAAQ,QAAQ;AAAA;AAGnD,YAAQ,WAAW,QAAQ,YAAY,aAAa,IAAI;AAExD,UAAM,iBAAiB,KAAK,UAAU,QAAQ;AAC9C,UAAM,uBAAuB,KAAK,IAAI,iBAAiB,KAAK,IAAI;AAEhE,YAAQ,gBAAgB,kBAAkB,eAAe,QAAQ;AAEjE,QAAI,KAAK,YAAY,QAAQ,YAAY,QAAQ,OAAO;AACtD,aAAO,KAAK,YAAY,QAAQ,YAAY,QAAQ;AAAA;AAGtD,QAAI,CAAC,QAAQ,YAAa,SAAQ,gBAAgB,KAAK,IAAI,iBAAiB,GAAG;AAE7E,SAAG,UAAU,KAAK,QAAQ,QAAQ,UAAU,EAAE,WAAW;AAAA;AAG3D,UAAM,aAAa,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AACxD,WAAK,YAAY,QAAQ,YAAY,QAAQ,QAAQ,IAAI,KAAK,IAAI,SAChE,QAAQ,SACR,QAAQ,eACR,SAAO;AACL,YAAI;AAAK,iBAAO,OAAO,IAAI,gBAAgB,gBAAgB;AAC3D,cAAM,uBAAuB,QAAQ;AACrC,gBAAQ,KAAK,YAAY,QAAQ,YAAY,QAAQ;AAAA;AAAA;AAK3D,QAAI,KAAK,UAAU,OAAO,UAAU;AAElC,iBAAW,IAAI,cAAc,KAAK,UAAU,OAAO,KAAK,UAAU,OAAO;AAAA;AAE3E,QAAI,KAAK,UAAU,QAAQ,gBAAgB,OAAO;AAGhD,iBAAW,IAAI;AAAA;AAGjB,WAAO;AAAA;AAAA,EAGT,kBAAkB,YAAY,OAAO;AACnC,QAAI,WAAW,aAAa,cAAc,UAAU;AAAM;AAE1D,QAAI,WAAW,MAAM;AACnB,iBAAW;AACX,YAAM,uBAAuB,WAAW;AACxC,aAAO,KAAK,YAAY,WAAW;AAAA;AAAA;AAAA;AAKzC,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/data-types.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/data-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,180 +1,0 @@
-"use strict";
-module.exports = (BaseTypes) => {
-  const warn = BaseTypes.ABSTRACT.warn.bind(void 0, "https://www.sqlite.org/datatype3.html");
-  function removeUnsupportedIntegerOptions(dataType) {
-    if (dataType._zerofill || dataType._unsigned) {
-      warn(`SQLite does not support '${dataType.key}' with UNSIGNED or ZEROFILL. Plain '${dataType.key}' will be used instead.`);
-      dataType._unsigned = void 0;
-      dataType._zerofill = void 0;
-    }
-  }
-  BaseTypes.DATE.types.sqlite = ["DATETIME"];
-  BaseTypes.STRING.types.sqlite = ["VARCHAR", "VARCHAR BINARY"];
-  BaseTypes.CHAR.types.sqlite = ["CHAR", "CHAR BINARY"];
-  BaseTypes.TEXT.types.sqlite = ["TEXT"];
-  BaseTypes.TINYINT.types.sqlite = ["TINYINT"];
-  BaseTypes.SMALLINT.types.sqlite = ["SMALLINT"];
-  BaseTypes.MEDIUMINT.types.sqlite = ["MEDIUMINT"];
-  BaseTypes.INTEGER.types.sqlite = ["INTEGER"];
-  BaseTypes.BIGINT.types.sqlite = ["BIGINT"];
-  BaseTypes.FLOAT.types.sqlite = ["FLOAT"];
-  BaseTypes.TIME.types.sqlite = ["TIME"];
-  BaseTypes.DATEONLY.types.sqlite = ["DATE"];
-  BaseTypes.BOOLEAN.types.sqlite = ["TINYINT"];
-  BaseTypes.BLOB.types.sqlite = ["TINYBLOB", "BLOB", "LONGBLOB"];
-  BaseTypes.DECIMAL.types.sqlite = ["DECIMAL"];
-  BaseTypes.UUID.types.sqlite = ["UUID"];
-  BaseTypes.ENUM.types.sqlite = false;
-  BaseTypes.REAL.types.sqlite = ["REAL"];
-  BaseTypes.DOUBLE.types.sqlite = ["DOUBLE PRECISION"];
-  BaseTypes.GEOMETRY.types.sqlite = false;
-  BaseTypes.JSON.types.sqlite = ["JSON", "JSONB"];
-  class JSONTYPE extends BaseTypes.JSON {
-    static parse(data) {
-      return JSON.parse(data);
-    }
-  }
-  class DATE extends BaseTypes.DATE {
-    static parse(date, options) {
-      if (!date.includes("+")) {
-        return new Date(date + options.timezone);
-      }
-      return new Date(date);
-    }
-  }
-  class DATEONLY extends BaseTypes.DATEONLY {
-    static parse(date) {
-      return date;
-    }
-  }
-  class STRING extends BaseTypes.STRING {
-    toSql() {
-      if (this._binary) {
-        return `VARCHAR BINARY(${this._length})`;
-      }
-      return super.toSql(this);
-    }
-  }
-  class TEXT extends BaseTypes.TEXT {
-    toSql() {
-      if (this._length) {
-        warn("SQLite does not support TEXT with options. Plain `TEXT` will be used instead.");
-        this._length = void 0;
-      }
-      return "TEXT";
-    }
-  }
-  class CITEXT extends BaseTypes.CITEXT {
-    toSql() {
-      return "TEXT COLLATE NOCASE";
-    }
-  }
-  class CHAR extends BaseTypes.CHAR {
-    toSql() {
-      if (this._binary) {
-        return `CHAR BINARY(${this._length})`;
-      }
-      return super.toSql();
-    }
-  }
-  class NUMBER extends BaseTypes.NUMBER {
-    toSql() {
-      let result = this.key;
-      if (this._unsigned) {
-        result += " UNSIGNED";
-      }
-      if (this._zerofill) {
-        result += " ZEROFILL";
-      }
-      if (this._length) {
-        result += `(${this._length}`;
-        if (typeof this._decimals === "number") {
-          result += `,${this._decimals}`;
-        }
-        result += ")";
-      }
-      return result;
-    }
-  }
-  class TINYINT extends BaseTypes.TINYINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class SMALLINT extends BaseTypes.SMALLINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class MEDIUMINT extends BaseTypes.MEDIUMINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class INTEGER extends BaseTypes.INTEGER {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class BIGINT extends BaseTypes.BIGINT {
-    constructor(length) {
-      super(length);
-      removeUnsupportedIntegerOptions(this);
-    }
-  }
-  class FLOAT extends BaseTypes.FLOAT {
-  }
-  class DOUBLE extends BaseTypes.DOUBLE {
-  }
-  class REAL extends BaseTypes.REAL {
-  }
-  function parseFloating(value) {
-    if (typeof value !== "string") {
-      return value;
-    }
-    if (value === "NaN") {
-      return NaN;
-    }
-    if (value === "Infinity") {
-      return Infinity;
-    }
-    if (value === "-Infinity") {
-      return -Infinity;
-    }
-  }
-  for (const floating of [FLOAT, DOUBLE, REAL]) {
-    floating.parse = parseFloating;
-  }
-  for (const num of [FLOAT, DOUBLE, REAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT]) {
-    num.prototype.toSql = NUMBER.prototype.toSql;
-  }
-  class ENUM extends BaseTypes.ENUM {
-    toSql() {
-      return "TEXT";
-    }
-  }
-  return {
-    DATE,
-    DATEONLY,
-    STRING,
-    CHAR,
-    NUMBER,
-    FLOAT,
-    REAL,
-    "DOUBLE PRECISION": DOUBLE,
-    TINYINT,
-    SMALLINT,
-    MEDIUMINT,
-    INTEGER,
-    BIGINT,
-    TEXT,
-    ENUM,
-    JSON: JSONTYPE,
-    CITEXT
-  };
-};
-//# sourceMappingURL=data-types.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/data-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/data-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/data-types.js"],
-  "sourcesContent": ["'use strict';\n\nmodule.exports = BaseTypes => {\n  const warn = BaseTypes.ABSTRACT.warn.bind(undefined, 'https://www.sqlite.org/datatype3.html');\n\n  /**\n   * Removes unsupported SQLite options, i.e., UNSIGNED and ZEROFILL, for the integer data types.\n   *\n   * @param {object} dataType The base integer data type.\n   * @private\n   */\n  function removeUnsupportedIntegerOptions(dataType) {\n    if (dataType._zerofill || dataType._unsigned) {\n      warn(`SQLite does not support '${dataType.key}' with UNSIGNED or ZEROFILL. Plain '${dataType.key}' will be used instead.`);\n      dataType._unsigned = undefined;\n      dataType._zerofill = undefined;\n    }\n  }\n\n  /**\n   * @see https://sqlite.org/datatype3.html\n   */\n\n  BaseTypes.DATE.types.sqlite = ['DATETIME'];\n  BaseTypes.STRING.types.sqlite = ['VARCHAR', 'VARCHAR BINARY'];\n  BaseTypes.CHAR.types.sqlite = ['CHAR', 'CHAR BINARY'];\n  BaseTypes.TEXT.types.sqlite = ['TEXT'];\n  BaseTypes.TINYINT.types.sqlite = ['TINYINT'];\n  BaseTypes.SMALLINT.types.sqlite = ['SMALLINT'];\n  BaseTypes.MEDIUMINT.types.sqlite = ['MEDIUMINT'];\n  BaseTypes.INTEGER.types.sqlite = ['INTEGER'];\n  BaseTypes.BIGINT.types.sqlite = ['BIGINT'];\n  BaseTypes.FLOAT.types.sqlite = ['FLOAT'];\n  BaseTypes.TIME.types.sqlite = ['TIME'];\n  BaseTypes.DATEONLY.types.sqlite = ['DATE'];\n  BaseTypes.BOOLEAN.types.sqlite = ['TINYINT'];\n  BaseTypes.BLOB.types.sqlite = ['TINYBLOB', 'BLOB', 'LONGBLOB'];\n  BaseTypes.DECIMAL.types.sqlite = ['DECIMAL'];\n  BaseTypes.UUID.types.sqlite = ['UUID'];\n  BaseTypes.ENUM.types.sqlite = false;\n  BaseTypes.REAL.types.sqlite = ['REAL'];\n  BaseTypes.DOUBLE.types.sqlite = ['DOUBLE PRECISION'];\n  BaseTypes.GEOMETRY.types.sqlite = false;\n  BaseTypes.JSON.types.sqlite = ['JSON', 'JSONB'];\n\n  class JSONTYPE extends BaseTypes.JSON {\n    static parse(data) {\n      return JSON.parse(data);\n    }\n  }\n\n  class DATE extends BaseTypes.DATE {\n    static parse(date, options) {\n      if (!date.includes('+')) {\n        // For backwards compat. Dates inserted by sequelize < 2.0dev12 will not have a timestamp set\n        return new Date(date + options.timezone);\n      }\n      return new Date(date); // We already have a timezone stored in the string\n    }\n  }\n\n  class DATEONLY extends BaseTypes.DATEONLY {\n    static parse(date) {\n      return date;\n    }\n  }\n\n  class STRING extends BaseTypes.STRING {\n    toSql() {\n      if (this._binary) {\n        return `VARCHAR BINARY(${this._length})`;\n      }\n      return super.toSql(this);\n    }\n  }\n\n  class TEXT extends BaseTypes.TEXT {\n    toSql() {\n      if (this._length) {\n        warn('SQLite does not support TEXT with options. Plain `TEXT` will be used instead.');\n        this._length = undefined;\n      }\n      return 'TEXT';\n    }\n  }\n\n  class CITEXT extends BaseTypes.CITEXT {\n    toSql() {\n      return 'TEXT COLLATE NOCASE';\n    }\n  }\n\n  class CHAR extends BaseTypes.CHAR {\n    toSql() {\n      if (this._binary) {\n        return `CHAR BINARY(${this._length})`;\n      }\n      return super.toSql();\n    }\n  }\n\n  class NUMBER extends BaseTypes.NUMBER {\n    toSql() {\n      let result = this.key;\n      if (this._unsigned) {\n        result += ' UNSIGNED';\n      }\n      if (this._zerofill) {\n        result += ' ZEROFILL';\n      }\n      if (this._length) {\n        result += `(${this._length}`;\n        if (typeof this._decimals === 'number') {\n          result += `,${this._decimals}`;\n        }\n        result += ')';\n      }\n      return result;\n    }\n  }\n\n  class TINYINT extends BaseTypes.TINYINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class SMALLINT extends BaseTypes.SMALLINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class MEDIUMINT extends BaseTypes.MEDIUMINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class INTEGER extends BaseTypes.INTEGER {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class BIGINT extends BaseTypes.BIGINT {\n    constructor(length) {\n      super(length);\n      removeUnsupportedIntegerOptions(this);\n    }\n  }\n\n  class FLOAT extends BaseTypes.FLOAT {\n  }\n\n  class DOUBLE extends BaseTypes.DOUBLE {\n  }\n\n  class REAL extends BaseTypes.REAL { }\n\n  function parseFloating(value) {\n    if (typeof value !== 'string') {\n      return value;\n    }\n    if (value === 'NaN') {\n      return NaN;\n    }\n    if (value === 'Infinity') {\n      return Infinity;\n    }\n    if (value === '-Infinity') {\n      return -Infinity;\n    }\n  }\n  for (const floating of [FLOAT, DOUBLE, REAL]) {\n    floating.parse = parseFloating;\n  }\n\n\n  for (const num of [FLOAT, DOUBLE, REAL, TINYINT, SMALLINT, MEDIUMINT, INTEGER, BIGINT]) {\n    num.prototype.toSql = NUMBER.prototype.toSql;\n  }\n\n  class ENUM extends BaseTypes.ENUM {\n    toSql() {\n      return 'TEXT';\n    }\n  }\n\n  return {\n    DATE,\n    DATEONLY,\n    STRING,\n    CHAR,\n    NUMBER,\n    FLOAT,\n    REAL,\n    'DOUBLE PRECISION': DOUBLE,\n    TINYINT,\n    SMALLINT,\n    MEDIUMINT,\n    INTEGER,\n    BIGINT,\n    TEXT,\n    ENUM,\n    JSON: JSONTYPE,\n    CITEXT\n  };\n};\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/index.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,57 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const AbstractDialect = require("../abstract");
-const ConnectionManager = require("./connection-manager");
-const Query = require("./query");
-const QueryGenerator = require("./query-generator");
-const DataTypes = require("../../data-types").sqlite;
-const { SQLiteQueryInterface } = require("./query-interface");
-class SqliteDialect extends AbstractDialect {
-  constructor(sequelize) {
-    super();
-    this.sequelize = sequelize;
-    this.connectionManager = new ConnectionManager(this, sequelize);
-    this.queryGenerator = new QueryGenerator({
-      _dialect: this,
-      sequelize
-    });
-    this.queryInterface = new SQLiteQueryInterface(sequelize, this.queryGenerator);
-  }
-}
-SqliteDialect.prototype.supports = _.merge(_.cloneDeep(AbstractDialect.prototype.supports), {
-  DEFAULT: false,
-  "DEFAULT VALUES": true,
-  "UNION ALL": false,
-  "RIGHT JOIN": false,
-  inserts: {
-    ignoreDuplicates: " OR IGNORE",
-    updateOnDuplicate: " ON CONFLICT DO UPDATE SET",
-    conflictFields: true,
-    onConflictWhere: true
-  },
-  index: {
-    using: false,
-    where: true,
-    functionBased: true
-  },
-  transactionOptions: {
-    type: true
-  },
-  constraints: {
-    addConstraint: false,
-    dropConstraint: false
-  },
-  groupedLimit: false,
-  JSON: true
-});
-SqliteDialect.prototype.defaultVersion = "3.8.0";
-SqliteDialect.prototype.Query = Query;
-SqliteDialect.prototype.DataTypes = DataTypes;
-SqliteDialect.prototype.name = "sqlite";
-SqliteDialect.prototype.TICK_CHAR = "`";
-SqliteDialect.prototype.TICK_CHAR_LEFT = SqliteDialect.prototype.TICK_CHAR;
-SqliteDialect.prototype.TICK_CHAR_RIGHT = SqliteDialect.prototype.TICK_CHAR;
-module.exports = SqliteDialect;
-module.exports.SqliteDialect = SqliteDialect;
-module.exports.default = SqliteDialect;
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/index.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst AbstractDialect = require('../abstract');\nconst ConnectionManager = require('./connection-manager');\nconst Query = require('./query');\nconst QueryGenerator = require('./query-generator');\nconst DataTypes = require('../../data-types').sqlite;\nconst { SQLiteQueryInterface } = require('./query-interface');\n\nclass SqliteDialect extends AbstractDialect {\n  constructor(sequelize) {\n    super();\n    this.sequelize = sequelize;\n    this.connectionManager = new ConnectionManager(this, sequelize);\n    this.queryGenerator = new QueryGenerator({\n      _dialect: this,\n      sequelize\n    });\n\n    this.queryInterface = new SQLiteQueryInterface(\n      sequelize,\n      this.queryGenerator\n    );\n  }\n}\n\nSqliteDialect.prototype.supports = _.merge(\n  _.cloneDeep(AbstractDialect.prototype.supports),\n  {\n    DEFAULT: false,\n    'DEFAULT VALUES': true,\n    'UNION ALL': false,\n    'RIGHT JOIN': false,\n    inserts: {\n      ignoreDuplicates: ' OR IGNORE',\n      updateOnDuplicate: ' ON CONFLICT DO UPDATE SET',\n      conflictFields: true,\n      onConflictWhere: true\n    },\n    index: {\n      using: false,\n      where: true,\n      functionBased: true\n    },\n    transactionOptions: {\n      type: true\n    },\n    constraints: {\n      addConstraint: false,\n      dropConstraint: false\n    },\n    groupedLimit: false,\n    JSON: true\n  }\n);\n\nSqliteDialect.prototype.defaultVersion = '3.8.0'; // minimum supported version\nSqliteDialect.prototype.Query = Query;\nSqliteDialect.prototype.DataTypes = DataTypes;\nSqliteDialect.prototype.name = 'sqlite';\nSqliteDialect.prototype.TICK_CHAR = '`';\nSqliteDialect.prototype.TICK_CHAR_LEFT = SqliteDialect.prototype.TICK_CHAR;\nSqliteDialect.prototype.TICK_CHAR_RIGHT = SqliteDialect.prototype.TICK_CHAR;\n\nmodule.exports = SqliteDialect;\nmodule.exports.SqliteDialect = SqliteDialect;\nmodule.exports.default = SqliteDialect;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,kBAAkB,QAAQ;AAChC,MAAM,oBAAoB,QAAQ;AAClC,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ,oBAAoB;AAC9C,MAAM,EAAE,yBAAyB,QAAQ;AAEzC,4BAA4B,gBAAgB;AAAA,EAC1C,YAAY,WAAW;AACrB;AACA,SAAK,YAAY;AACjB,SAAK,oBAAoB,IAAI,kBAAkB,MAAM;AACrD,SAAK,iBAAiB,IAAI,eAAe;AAAA,MACvC,UAAU;AAAA,MACV;AAAA;AAGF,SAAK,iBAAiB,IAAI,qBACxB,WACA,KAAK;AAAA;AAAA;AAKX,cAAc,UAAU,WAAW,EAAE,MACnC,EAAE,UAAU,gBAAgB,UAAU,WACtC;AAAA,EACE,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,cAAc;AAAA,EACd,SAAS;AAAA,IACP,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA;AAAA,EAEnB,OAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,eAAe;AAAA;AAAA,EAEjB,oBAAoB;AAAA,IAClB,MAAM;AAAA;AAAA,EAER,aAAa;AAAA,IACX,eAAe;AAAA,IACf,gBAAgB;AAAA;AAAA,EAElB,cAAc;AAAA,EACd,MAAM;AAAA;AAIV,cAAc,UAAU,iBAAiB;AACzC,cAAc,UAAU,QAAQ;AAChC,cAAc,UAAU,YAAY;AACpC,cAAc,UAAU,OAAO;AAC/B,cAAc,UAAU,YAAY;AACpC,cAAc,UAAU,iBAAiB,cAAc,UAAU;AACjE,cAAc,UAAU,kBAAkB,cAAc,UAAU;AAElE,OAAO,UAAU;AACjB,OAAO,QAAQ,gBAAgB;AAC/B,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query-generator.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query-generator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,362 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const Utils = require("../../utils");
-const Transaction = require("../../transaction");
-const _ = require("lodash");
-const MySqlQueryGenerator = require("../mysql/query-generator");
-const AbstractQueryGenerator = require("../abstract/query-generator");
-class SQLiteQueryGenerator extends MySqlQueryGenerator {
-  createSchema() {
-    return "SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';";
-  }
-  showSchemasQuery() {
-    return "SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';";
-  }
-  versionQuery() {
-    return "SELECT sqlite_version() as `version`";
-  }
-  createTableQuery(tableName, attributes, options) {
-    options = options || {};
-    const primaryKeys = [];
-    const needsMultiplePrimaryKeys = Object.values(attributes).filter((definition) => definition.includes("PRIMARY KEY")).length > 1;
-    const attrArray = [];
-    for (const attr in attributes) {
-      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {
-        const dataType = attributes[attr];
-        const containsAutoIncrement = dataType.includes("AUTOINCREMENT");
-        let dataTypeString = dataType;
-        if (dataType.includes("PRIMARY KEY")) {
-          if (dataType.includes("INT")) {
-            dataTypeString = containsAutoIncrement ? "INTEGER PRIMARY KEY AUTOINCREMENT" : "INTEGER PRIMARY KEY";
-            if (dataType.includes(" REFERENCES")) {
-              dataTypeString += dataType.substr(dataType.indexOf(" REFERENCES"));
-            }
-          }
-          if (needsMultiplePrimaryKeys) {
-            primaryKeys.push(attr);
-            if (dataType.includes("NOT NULL")) {
-              dataTypeString = dataType.replace(" PRIMARY KEY", "");
-            } else {
-              dataTypeString = dataType.replace("PRIMARY KEY", "NOT NULL");
-            }
-          }
-        }
-        attrArray.push(`${this.quoteIdentifier(attr)} ${dataTypeString}`);
-      }
-    }
-    const table = this.quoteTable(tableName);
-    let attrStr = attrArray.join(", ");
-    const pkString = primaryKeys.map((pk) => this.quoteIdentifier(pk)).join(", ");
-    if (options.uniqueKeys) {
-      _.each(options.uniqueKeys, (columns) => {
-        if (columns.customIndex) {
-          attrStr += `, UNIQUE (${columns.fields.map((field) => this.quoteIdentifier(field)).join(", ")})`;
-        }
-      });
-    }
-    if (pkString.length > 0) {
-      attrStr += `, PRIMARY KEY (${pkString})`;
-    }
-    const sql = `CREATE TABLE IF NOT EXISTS ${table} (${attrStr});`;
-    return this.replaceBooleanDefaults(sql);
-  }
-  booleanValue(value) {
-    return value ? 1 : 0;
-  }
-  _checkValidJsonStatement(stmt) {
-    if (typeof stmt !== "string") {
-      return false;
-    }
-    const jsonFunctionRegex = /^\s*(json(?:_[a-z]+){0,2})\([^)]*\)/i;
-    const tokenCaptureRegex = /^\s*((?:([`"'])(?:(?!\2).|\2{2})*\2)|[\w\d\s]+|[().,;+-])/i;
-    let currentIndex = 0;
-    let openingBrackets = 0;
-    let closingBrackets = 0;
-    let hasJsonFunction = false;
-    let hasInvalidToken = false;
-    while (currentIndex < stmt.length) {
-      const string = stmt.substr(currentIndex);
-      const functionMatches = jsonFunctionRegex.exec(string);
-      if (functionMatches) {
-        currentIndex += functionMatches[0].indexOf("(");
-        hasJsonFunction = true;
-        continue;
-      }
-      const tokenMatches = tokenCaptureRegex.exec(string);
-      if (tokenMatches) {
-        const capturedToken = tokenMatches[1];
-        if (capturedToken === "(") {
-          openingBrackets++;
-        } else if (capturedToken === ")") {
-          closingBrackets++;
-        } else if (capturedToken === ";") {
-          hasInvalidToken = true;
-          break;
-        }
-        currentIndex += tokenMatches[0].length;
-        continue;
-      }
-      break;
-    }
-    hasInvalidToken |= openingBrackets !== closingBrackets;
-    if (hasJsonFunction && hasInvalidToken) {
-      throw new Error(`Invalid json statement: ${stmt}`);
-    }
-    return hasJsonFunction;
-  }
-  _toJSONValue(value) {
-    if (value instanceof Date) {
-      return value.toISOString();
-    }
-    if (Array.isArray(value) && value[0] instanceof Date) {
-      return value.map((val) => val.toISOString());
-    }
-    return value;
-  }
-  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
-    if (smth instanceof Utils.Json) {
-      return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);
-    }
-    if (smth instanceof Utils.Cast) {
-      if (/timestamp/i.test(smth.type)) {
-        smth.type = "datetime";
-      }
-    }
-    return AbstractQueryGenerator.prototype.handleSequelizeMethod.call(this, smth, tableName, factory, options, prepend);
-  }
-  addColumnQuery(table, key, dataType) {
-    const attributes = {};
-    attributes[key] = dataType;
-    const fields = this.attributesToSQL(attributes, { context: "addColumn" });
-    const attribute = `${this.quoteIdentifier(key)} ${fields[key]}`;
-    const sql = `ALTER TABLE ${this.quoteTable(table)} ADD ${attribute};`;
-    return this.replaceBooleanDefaults(sql);
-  }
-  showTablesQuery() {
-    return "SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';";
-  }
-  updateQuery(tableName, attrValueHash, where, options, attributes) {
-    options = options || {};
-    _.defaults(options, this.options);
-    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);
-    const modelAttributeMap = {};
-    const values = [];
-    const bind = [];
-    const bindParam = options.bindParam || this.bindParam(bind);
-    if (attributes) {
-      _.each(attributes, (attribute, key) => {
-        modelAttributeMap[key] = attribute;
-        if (attribute.field) {
-          modelAttributeMap[attribute.field] = attribute;
-        }
-      });
-    }
-    for (const key in attrValueHash) {
-      const value = attrValueHash[key];
-      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {
-        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" })}`);
-      } else {
-        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || void 0, { context: "UPDATE" }, bindParam)}`);
-      }
-    }
-    let query;
-    const whereOptions = __spreadProps(__spreadValues({}, options), { bindParam });
-    if (options.limit) {
-      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(",")} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${this.whereQuery(where, whereOptions)} LIMIT ${this.escape(options.limit)})`;
-    } else {
-      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(",")} ${this.whereQuery(where, whereOptions)}`;
-    }
-    return { query, bind };
-  }
-  truncateTableQuery(tableName, options = {}) {
-    return [
-      `DELETE FROM ${this.quoteTable(tableName)}`,
-      options.restartIdentity ? `; DELETE FROM ${this.quoteTable("sqlite_sequence")} WHERE ${this.quoteIdentifier("name")} = ${Utils.addTicks(Utils.removeTicks(this.quoteTable(tableName), "`"), "'")};` : ""
-    ].join("");
-  }
-  deleteQuery(tableName, where, options = {}, model) {
-    _.defaults(options, this.options);
-    let whereClause = this.getWhereConditions(where, null, model, options);
-    if (whereClause) {
-      whereClause = `WHERE ${whereClause}`;
-    }
-    if (options.limit) {
-      whereClause = `WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${whereClause} LIMIT ${this.escape(options.limit)})`;
-    }
-    return `DELETE FROM ${this.quoteTable(tableName)} ${whereClause}`;
-  }
-  attributesToSQL(attributes) {
-    const result = {};
-    for (const name in attributes) {
-      const dataType = attributes[name];
-      const fieldName = dataType.field || name;
-      if (_.isObject(dataType)) {
-        let sql = dataType.type.toString();
-        if (Object.prototype.hasOwnProperty.call(dataType, "allowNull") && !dataType.allowNull) {
-          sql += " NOT NULL";
-        }
-        if (Utils.defaultValueSchemable(dataType.defaultValue)) {
-          sql += ` DEFAULT ${this.escape(dataType.defaultValue, dataType)}`;
-        }
-        if (dataType.unique === true) {
-          sql += " UNIQUE";
-        }
-        if (dataType.primaryKey) {
-          sql += " PRIMARY KEY";
-          if (dataType.autoIncrement) {
-            sql += " AUTOINCREMENT";
-          }
-        }
-        if (dataType.references) {
-          const referencesTable = this.quoteTable(dataType.references.model);
-          let referencesKey;
-          if (dataType.references.key) {
-            referencesKey = this.quoteIdentifier(dataType.references.key);
-          } else {
-            referencesKey = this.quoteIdentifier("id");
-          }
-          sql += ` REFERENCES ${referencesTable} (${referencesKey})`;
-          if (dataType.onDelete) {
-            sql += ` ON DELETE ${dataType.onDelete.toUpperCase()}`;
-          }
-          if (dataType.onUpdate) {
-            sql += ` ON UPDATE ${dataType.onUpdate.toUpperCase()}`;
-          }
-        }
-        result[fieldName] = sql;
-      } else {
-        result[fieldName] = dataType;
-      }
-    }
-    return result;
-  }
-  showIndexesQuery(tableName) {
-    return `PRAGMA INDEX_LIST(${this.quoteTable(tableName)})`;
-  }
-  showConstraintsQuery(tableName, constraintName) {
-    let sql = `SELECT sql FROM sqlite_master WHERE tbl_name='${tableName}'`;
-    if (constraintName) {
-      sql += ` AND sql LIKE '%${constraintName}%'`;
-    }
-    return `${sql};`;
-  }
-  removeIndexQuery(tableName, indexNameOrAttributes) {
-    let indexName = indexNameOrAttributes;
-    if (typeof indexName !== "string") {
-      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join("_")}`);
-    }
-    return `DROP INDEX IF EXISTS ${this.quoteIdentifier(indexName)}`;
-  }
-  describeTableQuery(tableName, schema, schemaDelimiter) {
-    const table = {
-      _schema: schema,
-      _schemaDelimiter: schemaDelimiter,
-      tableName
-    };
-    return `PRAGMA TABLE_INFO(${this.quoteTable(this.addSchema(table))});`;
-  }
-  describeCreateTableQuery(tableName) {
-    return `SELECT sql FROM sqlite_master WHERE tbl_name='${tableName}';`;
-  }
-  removeColumnQuery(tableName, attributes) {
-    attributes = this.attributesToSQL(attributes);
-    let backupTableName;
-    if (typeof tableName === "object") {
-      backupTableName = {
-        tableName: `${tableName.tableName}_backup`,
-        schema: tableName.schema
-      };
-    } else {
-      backupTableName = `${tableName}_backup`;
-    }
-    const quotedTableName = this.quoteTable(tableName);
-    const quotedBackupTableName = this.quoteTable(backupTableName);
-    const attributeNames = Object.keys(attributes).map((attr) => this.quoteIdentifier(attr)).join(", ");
-    return `${this.createTableQuery(backupTableName, attributes)}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};DROP TABLE ${quotedTableName};${this.createTableQuery(tableName, attributes)}INSERT INTO ${quotedTableName} SELECT ${attributeNames} FROM ${quotedBackupTableName};DROP TABLE ${quotedBackupTableName};`;
-  }
-  _alterConstraintQuery(tableName, attributes, createTableSql) {
-    let backupTableName;
-    attributes = this.attributesToSQL(attributes);
-    if (typeof tableName === "object") {
-      backupTableName = {
-        tableName: `${tableName.tableName}_backup`,
-        schema: tableName.schema
-      };
-    } else {
-      backupTableName = `${tableName}_backup`;
-    }
-    const quotedTableName = this.quoteTable(tableName);
-    const quotedBackupTableName = this.quoteTable(backupTableName);
-    const attributeNames = Object.keys(attributes).map((attr) => this.quoteIdentifier(attr)).join(", ");
-    return `${createTableSql.replace(`CREATE TABLE ${quotedTableName}`, `CREATE TABLE ${quotedBackupTableName}`).replace(`CREATE TABLE ${quotedTableName.replace(/`/g, '"')}`, `CREATE TABLE ${quotedBackupTableName}`)}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};DROP TABLE ${quotedTableName};ALTER TABLE ${quotedBackupTableName} RENAME TO ${quotedTableName};`;
-  }
-  renameColumnQuery(tableName, attrNameBefore, attrNameAfter, attributes) {
-    let backupTableName;
-    attributes = this.attributesToSQL(attributes);
-    if (typeof tableName === "object") {
-      backupTableName = {
-        tableName: `${tableName.tableName}_backup`,
-        schema: tableName.schema
-      };
-    } else {
-      backupTableName = `${tableName}_backup`;
-    }
-    const quotedTableName = this.quoteTable(tableName);
-    const quotedBackupTableName = this.quoteTable(backupTableName);
-    const attributeNamesImport = Object.keys(attributes).map((attr) => attrNameAfter === attr ? `${this.quoteIdentifier(attrNameBefore)} AS ${this.quoteIdentifier(attr)}` : this.quoteIdentifier(attr)).join(", ");
-    const attributeNamesExport = Object.keys(attributes).map((attr) => this.quoteIdentifier(attr)).join(", ");
-    return `${this.createTableQuery(backupTableName, attributes)}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNamesImport} FROM ${quotedTableName};DROP TABLE ${quotedTableName};${this.createTableQuery(tableName, attributes)}INSERT INTO ${quotedTableName} SELECT ${attributeNamesExport} FROM ${quotedBackupTableName};DROP TABLE ${quotedBackupTableName};`;
-  }
-  startTransactionQuery(transaction) {
-    if (transaction.parent) {
-      return `SAVEPOINT ${this.quoteIdentifier(transaction.name)};`;
-    }
-    return `BEGIN ${transaction.options.type} TRANSACTION;`;
-  }
-  setIsolationLevelQuery(value) {
-    switch (value) {
-      case Transaction.ISOLATION_LEVELS.REPEATABLE_READ:
-        return "-- SQLite is not able to choose the isolation level REPEATABLE READ.";
-      case Transaction.ISOLATION_LEVELS.READ_UNCOMMITTED:
-        return "PRAGMA read_uncommitted = ON;";
-      case Transaction.ISOLATION_LEVELS.READ_COMMITTED:
-        return "PRAGMA read_uncommitted = OFF;";
-      case Transaction.ISOLATION_LEVELS.SERIALIZABLE:
-        return "-- SQLite's default isolation level is SERIALIZABLE. Nothing to do.";
-      default:
-        throw new Error(`Unknown isolation level: ${value}`);
-    }
-  }
-  replaceBooleanDefaults(sql) {
-    return sql.replace(/DEFAULT '?false'?/g, "DEFAULT 0").replace(/DEFAULT '?true'?/g, "DEFAULT 1");
-  }
-  getForeignKeysQuery(tableName) {
-    return `PRAGMA foreign_key_list(${this.quoteTable(this.addSchema(tableName))})`;
-  }
-  tableExistsQuery(tableName) {
-    return `SELECT name FROM sqlite_master WHERE type='table' AND name=${this.escape(this.addSchema(tableName))};`;
-  }
-  quoteIdentifier(identifier, force) {
-    return Utils.addTicks(Utils.removeTicks(identifier, "`"), "`");
-  }
-}
-module.exports = SQLiteQueryGenerator;
-//# sourceMappingURL=query-generator.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query-generator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query-generator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/query-generator.js"],
-  "sourcesContent": ["'use strict';\n\nconst Utils = require('../../utils');\nconst Transaction = require('../../transaction');\nconst _ = require('lodash');\nconst MySqlQueryGenerator = require('../mysql/query-generator');\nconst AbstractQueryGenerator = require('../abstract/query-generator');\n\nclass SQLiteQueryGenerator extends MySqlQueryGenerator {\n  createSchema() {\n    return \"SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';\";\n  }\n\n  showSchemasQuery() {\n    return \"SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';\";\n  }\n\n  versionQuery() {\n    return 'SELECT sqlite_version() as `version`';\n  }\n\n  createTableQuery(tableName, attributes, options) {\n    options = options || {};\n\n    const primaryKeys = [];\n    const needsMultiplePrimaryKeys = Object.values(attributes).filter(definition => definition.includes('PRIMARY KEY')).length > 1;\n    const attrArray = [];\n\n    for (const attr in attributes) {\n      if (Object.prototype.hasOwnProperty.call(attributes, attr)) {\n        const dataType = attributes[attr];\n        const containsAutoIncrement = dataType.includes('AUTOINCREMENT');\n\n        let dataTypeString = dataType;\n        if (dataType.includes('PRIMARY KEY')) {\n          if (dataType.includes('INT')) {\n            // Only INTEGER is allowed for primary key, see https://github.com/sequelize/sequelize/issues/969 (no lenght, unsigned etc)\n            dataTypeString = containsAutoIncrement ? 'INTEGER PRIMARY KEY AUTOINCREMENT' : 'INTEGER PRIMARY KEY';\n\n            if (dataType.includes(' REFERENCES')) {\n              dataTypeString += dataType.substr(dataType.indexOf(' REFERENCES'));\n            }\n          }\n\n          if (needsMultiplePrimaryKeys) {\n            primaryKeys.push(attr);\n            if (dataType.includes('NOT NULL')) {\n              dataTypeString = dataType.replace(' PRIMARY KEY', '');\n            } else {\n              dataTypeString = dataType.replace('PRIMARY KEY', 'NOT NULL');\n            }\n          }\n        }\n        attrArray.push(`${this.quoteIdentifier(attr)} ${dataTypeString}`);\n      }\n    }\n\n    const table = this.quoteTable(tableName);\n    let attrStr = attrArray.join(', ');\n    const pkString = primaryKeys.map(pk => this.quoteIdentifier(pk)).join(', ');\n\n    if (options.uniqueKeys) {\n      _.each(options.uniqueKeys, columns => {\n        if (columns.customIndex) {\n          attrStr += `, UNIQUE (${columns.fields.map(field => this.quoteIdentifier(field)).join(', ')})`;\n        }\n      });\n    }\n\n    if (pkString.length > 0) {\n      attrStr += `, PRIMARY KEY (${pkString})`;\n    }\n\n    const sql = `CREATE TABLE IF NOT EXISTS ${table} (${attrStr});`;\n    return this.replaceBooleanDefaults(sql);\n  }\n\n  booleanValue(value) {\n    return value ? 1 : 0;\n  }\n\n  /**\n   * Check whether the statmement is json function or simple path\n   *\n   * @param   {string}  stmt  The statement to validate\n   * @returns {boolean}       true if the given statement is json function\n   * @throws  {Error}         throw if the statement looks like json function but has invalid token\n   */\n  _checkValidJsonStatement(stmt) {\n    if (typeof stmt !== 'string') {\n      return false;\n    }\n\n    // https://sqlite.org/json1.html\n    const jsonFunctionRegex = /^\\s*(json(?:_[a-z]+){0,2})\\([^)]*\\)/i;\n    const tokenCaptureRegex = /^\\s*((?:([`\"'])(?:(?!\\2).|\\2{2})*\\2)|[\\w\\d\\s]+|[().,;+-])/i;\n\n    let currentIndex = 0;\n    let openingBrackets = 0;\n    let closingBrackets = 0;\n    let hasJsonFunction = false;\n    let hasInvalidToken = false;\n\n    while (currentIndex < stmt.length) {\n      const string = stmt.substr(currentIndex);\n      const functionMatches = jsonFunctionRegex.exec(string);\n      if (functionMatches) {\n        currentIndex += functionMatches[0].indexOf('(');\n        hasJsonFunction = true;\n        continue;\n      }\n\n      const tokenMatches = tokenCaptureRegex.exec(string);\n      if (tokenMatches) {\n        const capturedToken = tokenMatches[1];\n        if (capturedToken === '(') {\n          openingBrackets++;\n        } else if (capturedToken === ')') {\n          closingBrackets++;\n        } else if (capturedToken === ';') {\n          hasInvalidToken = true;\n          break;\n        }\n        currentIndex += tokenMatches[0].length;\n        continue;\n      }\n\n      break;\n    }\n\n    // Check invalid json statement\n    hasInvalidToken |= openingBrackets !== closingBrackets;\n    if (hasJsonFunction && hasInvalidToken) {\n      throw new Error(`Invalid json statement: ${stmt}`);\n    }\n\n    // return true if the statement has valid json function\n    return hasJsonFunction;\n  }\n\n  //sqlite can't cast to datetime so we need to convert date values to their ISO strings\n  _toJSONValue(value) {\n    if (value instanceof Date) {\n      return value.toISOString();\n    }\n    if (Array.isArray(value) && value[0] instanceof Date) {\n      return value.map(val => val.toISOString());\n    }\n    return value;\n  }\n\n\n  handleSequelizeMethod(smth, tableName, factory, options, prepend) {\n    if (smth instanceof Utils.Json) {\n      return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);\n    }\n\n    if (smth instanceof Utils.Cast) {\n      if (/timestamp/i.test(smth.type)) {\n        smth.type = 'datetime';\n      }\n    }\n\n    return AbstractQueryGenerator.prototype.handleSequelizeMethod.call(this, smth, tableName, factory, options, prepend);\n  }\n\n  addColumnQuery(table, key, dataType) {\n    const attributes = {};\n    attributes[key] = dataType;\n    const fields = this.attributesToSQL(attributes, { context: 'addColumn' });\n    const attribute = `${this.quoteIdentifier(key)} ${fields[key]}`;\n\n    const sql = `ALTER TABLE ${this.quoteTable(table)} ADD ${attribute};`;\n\n    return this.replaceBooleanDefaults(sql);\n  }\n\n  showTablesQuery() {\n    return 'SELECT name FROM `sqlite_master` WHERE type=\\'table\\' and name!=\\'sqlite_sequence\\';';\n  }\n\n  updateQuery(tableName, attrValueHash, where, options, attributes) {\n    options = options || {};\n    _.defaults(options, this.options);\n\n    attrValueHash = Utils.removeNullValuesFromHash(attrValueHash, options.omitNull, options);\n\n    const modelAttributeMap = {};\n    const values = [];\n    const bind = [];\n    const bindParam = options.bindParam || this.bindParam(bind);\n\n    if (attributes) {\n      _.each(attributes, (attribute, key) => {\n        modelAttributeMap[key] = attribute;\n        if (attribute.field) {\n          modelAttributeMap[attribute.field] = attribute;\n        }\n      });\n    }\n\n    for (const key in attrValueHash) {\n      const value = attrValueHash[key];\n\n      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {\n        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' })}`);\n      } else {\n        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' }, bindParam)}`);\n      }\n    }\n\n    let query;\n    const whereOptions = { ...options, bindParam };\n\n    if (options.limit) {\n      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(',')} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${this.whereQuery(where, whereOptions)} LIMIT ${this.escape(options.limit)})`;\n    } else {\n      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(',')} ${this.whereQuery(where, whereOptions)}`;\n    }\n\n    return { query, bind };\n  }\n\n  truncateTableQuery(tableName, options = {}) {\n    return [\n      `DELETE FROM ${this.quoteTable(tableName)}`,\n      options.restartIdentity ? `; DELETE FROM ${this.quoteTable('sqlite_sequence')} WHERE ${this.quoteIdentifier('name')} = ${Utils.addTicks(Utils.removeTicks(this.quoteTable(tableName), '`'), \"'\")};` : ''\n    ].join('');\n  }\n\n  deleteQuery(tableName, where, options = {}, model) {\n    _.defaults(options, this.options);\n\n    let whereClause = this.getWhereConditions(where, null, model, options);\n\n    if (whereClause) {\n      whereClause = `WHERE ${whereClause}`;\n    }\n\n    if (options.limit) {\n      whereClause = `WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${whereClause} LIMIT ${this.escape(options.limit)})`;\n    }\n\n    return `DELETE FROM ${this.quoteTable(tableName)} ${whereClause}`;\n  }\n\n  attributesToSQL(attributes) {\n    const result = {};\n    for (const name in attributes) {\n      const dataType = attributes[name];\n      const fieldName = dataType.field || name;\n\n      if (_.isObject(dataType)) {\n        let sql = dataType.type.toString();\n\n        if (Object.prototype.hasOwnProperty.call(dataType, 'allowNull') && !dataType.allowNull) {\n          sql += ' NOT NULL';\n        }\n\n        if (Utils.defaultValueSchemable(dataType.defaultValue)) {\n          // TODO thoroughly check that DataTypes.NOW will properly\n          // get populated on all databases as DEFAULT value\n          // i.e. mysql requires: DEFAULT CURRENT_TIMESTAMP\n          sql += ` DEFAULT ${this.escape(dataType.defaultValue, dataType)}`;\n        }\n\n        if (dataType.unique === true) {\n          sql += ' UNIQUE';\n        }\n\n        if (dataType.primaryKey) {\n          sql += ' PRIMARY KEY';\n\n          if (dataType.autoIncrement) {\n            sql += ' AUTOINCREMENT';\n          }\n        }\n\n        if (dataType.references) {\n          const referencesTable = this.quoteTable(dataType.references.model);\n\n          let referencesKey;\n          if (dataType.references.key) {\n            referencesKey = this.quoteIdentifier(dataType.references.key);\n          } else {\n            referencesKey = this.quoteIdentifier('id');\n          }\n\n          sql += ` REFERENCES ${referencesTable} (${referencesKey})`;\n\n          if (dataType.onDelete) {\n            sql += ` ON DELETE ${dataType.onDelete.toUpperCase()}`;\n          }\n\n          if (dataType.onUpdate) {\n            sql += ` ON UPDATE ${dataType.onUpdate.toUpperCase()}`;\n          }\n\n        }\n\n        result[fieldName] = sql;\n      } else {\n        result[fieldName] = dataType;\n      }\n    }\n\n    return result;\n  }\n\n  showIndexesQuery(tableName) {\n    return `PRAGMA INDEX_LIST(${this.quoteTable(tableName)})`;\n  }\n\n  showConstraintsQuery(tableName, constraintName) {\n    let sql = `SELECT sql FROM sqlite_master WHERE tbl_name='${tableName}'`;\n\n    if (constraintName) {\n      sql += ` AND sql LIKE '%${constraintName}%'`;\n    }\n\n    return `${sql};`;\n  }\n\n  removeIndexQuery(tableName, indexNameOrAttributes) {\n    let indexName = indexNameOrAttributes;\n\n    if (typeof indexName !== 'string') {\n      indexName = Utils.underscore(`${tableName}_${indexNameOrAttributes.join('_')}`);\n    }\n\n    return `DROP INDEX IF EXISTS ${this.quoteIdentifier(indexName)}`;\n  }\n\n  describeTableQuery(tableName, schema, schemaDelimiter) {\n    const table = {\n      _schema: schema,\n      _schemaDelimiter: schemaDelimiter,\n      tableName\n    };\n    return `PRAGMA TABLE_INFO(${this.quoteTable(this.addSchema(table))});`;\n  }\n\n  describeCreateTableQuery(tableName) {\n    return `SELECT sql FROM sqlite_master WHERE tbl_name='${tableName}';`;\n  }\n\n  removeColumnQuery(tableName, attributes) {\n\n    attributes = this.attributesToSQL(attributes);\n\n    let backupTableName;\n    if (typeof tableName === 'object') {\n      backupTableName = {\n        tableName: `${tableName.tableName}_backup`,\n        schema: tableName.schema\n      };\n    } else {\n      backupTableName = `${tableName}_backup`;\n    }\n\n    const quotedTableName = this.quoteTable(tableName);\n    const quotedBackupTableName = this.quoteTable(backupTableName);\n    const attributeNames = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');\n\n    // Temporary table cannot work for foreign keys.\n    return `${this.createTableQuery(backupTableName, attributes)\n    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};`\n      + `DROP TABLE ${quotedTableName};${\n        this.createTableQuery(tableName, attributes)\n      }INSERT INTO ${quotedTableName} SELECT ${attributeNames} FROM ${quotedBackupTableName};`\n      + `DROP TABLE ${quotedBackupTableName};`;\n  }\n\n  _alterConstraintQuery(tableName, attributes, createTableSql) {\n    let backupTableName;\n\n    attributes = this.attributesToSQL(attributes);\n\n    if (typeof tableName === 'object') {\n      backupTableName = {\n        tableName: `${tableName.tableName}_backup`,\n        schema: tableName.schema\n      };\n    } else {\n      backupTableName = `${tableName}_backup`;\n    }\n    const quotedTableName = this.quoteTable(tableName);\n    const quotedBackupTableName = this.quoteTable(backupTableName);\n    const attributeNames = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');\n\n    return `${createTableSql\n      .replace(`CREATE TABLE ${quotedTableName}`, `CREATE TABLE ${quotedBackupTableName}`)\n      .replace(`CREATE TABLE ${quotedTableName.replace(/`/g, '\"')}`, `CREATE TABLE ${quotedBackupTableName}`)\n    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};`\n      + `DROP TABLE ${quotedTableName};`\n      + `ALTER TABLE ${quotedBackupTableName} RENAME TO ${quotedTableName};`;\n  }\n\n  renameColumnQuery(tableName, attrNameBefore, attrNameAfter, attributes) {\n\n    let backupTableName;\n\n    attributes = this.attributesToSQL(attributes);\n\n    if (typeof tableName === 'object') {\n      backupTableName = {\n        tableName: `${tableName.tableName}_backup`,\n        schema: tableName.schema\n      };\n    } else {\n      backupTableName = `${tableName}_backup`;\n    }\n\n    const quotedTableName = this.quoteTable(tableName);\n    const quotedBackupTableName = this.quoteTable(backupTableName);\n    const attributeNamesImport = Object.keys(attributes).map(attr =>\n      attrNameAfter === attr ? `${this.quoteIdentifier(attrNameBefore)} AS ${this.quoteIdentifier(attr)}` : this.quoteIdentifier(attr)\n    ).join(', ');\n    const attributeNamesExport = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');\n\n    // Temporary tables don't support foreign keys, so creating a temporary table will not allow foreign keys to be preserved\n    return `${this.createTableQuery(backupTableName, attributes)\n    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNamesImport} FROM ${quotedTableName};`\n      + `DROP TABLE ${quotedTableName};${\n        this.createTableQuery(tableName, attributes)\n      }INSERT INTO ${quotedTableName} SELECT ${attributeNamesExport} FROM ${quotedBackupTableName};`\n      + `DROP TABLE ${quotedBackupTableName};`;\n  }\n\n  startTransactionQuery(transaction) {\n    if (transaction.parent) {\n      return `SAVEPOINT ${this.quoteIdentifier(transaction.name)};`;\n    }\n\n    return `BEGIN ${transaction.options.type} TRANSACTION;`;\n  }\n\n  setIsolationLevelQuery(value) {\n    switch (value) {\n      case Transaction.ISOLATION_LEVELS.REPEATABLE_READ:\n        return '-- SQLite is not able to choose the isolation level REPEATABLE READ.';\n      case Transaction.ISOLATION_LEVELS.READ_UNCOMMITTED:\n        return 'PRAGMA read_uncommitted = ON;';\n      case Transaction.ISOLATION_LEVELS.READ_COMMITTED:\n        return 'PRAGMA read_uncommitted = OFF;';\n      case Transaction.ISOLATION_LEVELS.SERIALIZABLE:\n        return '-- SQLite\\'s default isolation level is SERIALIZABLE. Nothing to do.';\n      default:\n        throw new Error(`Unknown isolation level: ${value}`);\n    }\n  }\n\n  replaceBooleanDefaults(sql) {\n    return sql.replace(/DEFAULT '?false'?/g, 'DEFAULT 0').replace(/DEFAULT '?true'?/g, 'DEFAULT 1');\n  }\n\n  /**\n   * Generates an SQL query that returns all foreign keys of a table.\n   *\n   * @param  {TableName} tableName  The name of the table.\n   * @returns {string}            The generated sql query.\n   * @private\n   */\n  getForeignKeysQuery(tableName) {\n    return `PRAGMA foreign_key_list(${this.quoteTable(this.addSchema(tableName))})`;\n  }\n\n  tableExistsQuery(tableName) {\n    return `SELECT name FROM sqlite_master WHERE type='table' AND name=${this.escape(this.addSchema(tableName))};`;\n  }\n\n  /**\n   * Quote identifier in sql clause\n   *\n   * @param {string} identifier\n   * @param {boolean} force\n   *\n   * @returns {string}\n   */\n  quoteIdentifier(identifier, force) {\n    return Utils.addTicks(Utils.removeTicks(identifier, '`'), '`');\n  }\n\n}\n\nmodule.exports = SQLiteQueryGenerator;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query-interface.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query-interface.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,175 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const sequelizeErrors = require("../../errors");
-const QueryTypes = require("../../query-types");
-const { QueryInterface } = require("../abstract/query-interface");
-const { cloneDeep } = require("../../utils");
-const _ = require("lodash");
-class SQLiteQueryInterface extends QueryInterface {
-  async removeColumn(tableName, attributeName, options) {
-    options = options || {};
-    const fields = await this.describeTable(tableName, options);
-    delete fields[attributeName];
-    const sql = this.queryGenerator.removeColumnQuery(tableName, fields);
-    const subQueries = sql.split(";").filter((q) => q !== "");
-    for (const subQuery of subQueries)
-      await this.sequelize.query(`${subQuery};`, __spreadValues({ raw: true }, options));
-  }
-  async changeColumn(tableName, attributeName, dataTypeOrOptions, options) {
-    options = options || {};
-    const fields = await this.describeTable(tableName, options);
-    Object.assign(fields[attributeName], this.normalizeAttribute(dataTypeOrOptions));
-    const sql = this.queryGenerator.removeColumnQuery(tableName, fields);
-    const subQueries = sql.split(";").filter((q) => q !== "");
-    for (const subQuery of subQueries)
-      await this.sequelize.query(`${subQuery};`, __spreadValues({ raw: true }, options));
-  }
-  async renameColumn(tableName, attrNameBefore, attrNameAfter, options) {
-    options = options || {};
-    const fields = await this.assertTableHasColumn(tableName, attrNameBefore, options);
-    fields[attrNameAfter] = __spreadValues({}, fields[attrNameBefore]);
-    delete fields[attrNameBefore];
-    const sql = this.queryGenerator.renameColumnQuery(tableName, attrNameBefore, attrNameAfter, fields);
-    const subQueries = sql.split(";").filter((q) => q !== "");
-    for (const subQuery of subQueries)
-      await this.sequelize.query(`${subQuery};`, __spreadValues({ raw: true }, options));
-  }
-  async removeConstraint(tableName, constraintName, options) {
-    let createTableSql;
-    const constraints = await this.showConstraint(tableName, constraintName);
-    const constraint = constraints.find((constaint) => constaint.constraintName === constraintName);
-    if (!constraint) {
-      throw new sequelizeErrors.UnknownConstraintError({
-        message: `Constraint ${constraintName} on table ${tableName} does not exist`,
-        constraint: constraintName,
-        table: tableName
-      });
-    }
-    createTableSql = constraint.sql;
-    constraint.constraintName = this.queryGenerator.quoteIdentifier(constraint.constraintName);
-    let constraintSnippet = `, CONSTRAINT ${constraint.constraintName} ${constraint.constraintType} ${constraint.constraintCondition}`;
-    if (constraint.constraintType === "FOREIGN KEY") {
-      const referenceTableName = this.queryGenerator.quoteTable(constraint.referenceTableName);
-      constraint.referenceTableKeys = constraint.referenceTableKeys.map((columnName) => this.queryGenerator.quoteIdentifier(columnName));
-      const referenceTableKeys = constraint.referenceTableKeys.join(", ");
-      constraintSnippet += ` REFERENCES ${referenceTableName} (${referenceTableKeys})`;
-      constraintSnippet += ` ON UPDATE ${constraint.updateAction}`;
-      constraintSnippet += ` ON DELETE ${constraint.deleteAction}`;
-    }
-    createTableSql = createTableSql.replace(constraintSnippet, "");
-    createTableSql += ";";
-    const fields = await this.describeTable(tableName, options);
-    const sql = this.queryGenerator._alterConstraintQuery(tableName, fields, createTableSql);
-    const subQueries = sql.split(";").filter((q) => q !== "");
-    for (const subQuery of subQueries)
-      await this.sequelize.query(`${subQuery};`, __spreadValues({ raw: true }, options));
-  }
-  async addConstraint(tableName, options) {
-    if (!options.fields) {
-      throw new Error("Fields must be specified through options.fields");
-    }
-    if (!options.type) {
-      throw new Error("Constraint type must be specified through options.type");
-    }
-    options = cloneDeep(options);
-    const constraintSnippet = this.queryGenerator.getConstraintSnippet(tableName, options);
-    const describeCreateTableSql = this.queryGenerator.describeCreateTableQuery(tableName);
-    const constraints = await this.sequelize.query(describeCreateTableSql, __spreadProps(__spreadValues({}, options), { type: QueryTypes.SELECT, raw: true }));
-    let sql = constraints[0].sql;
-    const index = sql.length - 1;
-    const createTableSql = `${sql.substr(0, index)}, ${constraintSnippet})${sql.substr(index + 1)};`;
-    const fields = await this.describeTable(tableName, options);
-    sql = this.queryGenerator._alterConstraintQuery(tableName, fields, createTableSql);
-    const subQueries = sql.split(";").filter((q) => q !== "");
-    for (const subQuery of subQueries)
-      await this.sequelize.query(`${subQuery};`, __spreadValues({ raw: true }, options));
-  }
-  async getForeignKeyReferencesForTable(tableName, options) {
-    const database = this.sequelize.config.database;
-    const query = this.queryGenerator.getForeignKeysQuery(tableName, database);
-    const result = await this.sequelize.query(query, options);
-    return result.map((row) => ({
-      tableName,
-      columnName: row.from,
-      referencedTableName: row.table,
-      referencedColumnName: row.to,
-      tableCatalog: database,
-      referencedTableCatalog: database
-    }));
-  }
-  async dropAllTables(options) {
-    options = options || {};
-    const skip = options.skip || [];
-    const tableNames = await this.showAllTables(options);
-    await this.sequelize.query("PRAGMA foreign_keys = OFF", options);
-    await this._dropAllTables(tableNames, skip, options);
-    await this.sequelize.query("PRAGMA foreign_keys = ON", options);
-  }
-  async describeTable(tableName, options) {
-    let schema = null;
-    let schemaDelimiter = null;
-    if (typeof options === "string") {
-      schema = options;
-    } else if (typeof options === "object" && options !== null) {
-      schema = options.schema || null;
-      schemaDelimiter = options.schemaDelimiter || null;
-    }
-    if (typeof tableName === "object" && tableName !== null) {
-      schema = tableName.schema;
-      tableName = tableName.tableName;
-    }
-    const sql = this.queryGenerator.describeTableQuery(tableName, schema, schemaDelimiter);
-    options = __spreadProps(__spreadValues({}, options), { type: QueryTypes.DESCRIBE });
-    const sqlIndexes = this.queryGenerator.showIndexesQuery(tableName);
-    try {
-      const data = await this.sequelize.query(sql, options);
-      if (_.isEmpty(data)) {
-        throw new Error(`No description found for "${tableName}" table. Check the table name and schema; remember, they _are_ case sensitive.`);
-      }
-      const indexes = await this.sequelize.query(sqlIndexes, options);
-      for (const prop in data) {
-        data[prop].unique = false;
-      }
-      for (const index of indexes) {
-        for (const field of index.fields) {
-          if (index.unique !== void 0) {
-            data[field.attribute].unique = index.unique;
-          }
-        }
-      }
-      const foreignKeys = await this.getForeignKeyReferencesForTable(tableName, options);
-      for (const foreignKey of foreignKeys) {
-        data[foreignKey.columnName].references = {
-          model: foreignKey.referencedTableName,
-          key: foreignKey.referencedColumnName
-        };
-      }
-      return data;
-    } catch (e) {
-      if (e.original && e.original.code === "ER_NO_SUCH_TABLE") {
-        throw new Error(`No description found for "${tableName}" table. Check the table name and schema; remember, they _are_ case sensitive.`);
-      }
-      throw e;
-    }
-  }
-}
-exports.SQLiteQueryInterface = SQLiteQueryInterface;
-//# sourceMappingURL=query-interface.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query-interface.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query-interface.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/query-interface.js"],
-  "sourcesContent": ["'use strict';\n\nconst sequelizeErrors = require('../../errors');\nconst QueryTypes = require('../../query-types');\nconst { QueryInterface } = require('../abstract/query-interface');\nconst { cloneDeep } = require('../../utils');\nconst _ = require('lodash');\n\n/**\n * The interface that Sequelize uses to talk with SQLite database\n */\nclass SQLiteQueryInterface extends QueryInterface {\n  /**\n   * A wrapper that fixes SQLite's inability to remove columns from existing tables.\n   * It will create a backup of the table, drop the table afterwards and create a\n   * new table with the same name but without the obsolete column.\n   *\n   * @override\n   */\n  async removeColumn(tableName, attributeName, options) {\n    options = options || {};\n\n    const fields = await this.describeTable(tableName, options);\n    delete fields[attributeName];\n\n    const sql = this.queryGenerator.removeColumnQuery(tableName, fields);\n    const subQueries = sql.split(';').filter(q => q !== '');\n\n    for (const subQuery of subQueries) await this.sequelize.query(`${subQuery};`, { raw: true, ...options });\n  }\n\n  /**\n   * A wrapper that fixes SQLite's inability to change columns from existing tables.\n   * It will create a backup of the table, drop the table afterwards and create a\n   * new table with the same name but with a modified version of the respective column.\n   *\n   * @override\n   */\n  async changeColumn(tableName, attributeName, dataTypeOrOptions, options) {\n    options = options || {};\n\n    const fields = await this.describeTable(tableName, options);\n    Object.assign(fields[attributeName], this.normalizeAttribute(dataTypeOrOptions));\n\n    const sql = this.queryGenerator.removeColumnQuery(tableName, fields);\n    const subQueries = sql.split(';').filter(q => q !== '');\n\n    for (const subQuery of subQueries) await this.sequelize.query(`${subQuery};`, { raw: true, ...options });\n  }\n\n  /**\n   * A wrapper that fixes SQLite's inability to rename columns from existing tables.\n   * It will create a backup of the table, drop the table afterwards and create a\n   * new table with the same name but with a renamed version of the respective column.\n   *\n   * @override\n   */\n  async renameColumn(tableName, attrNameBefore, attrNameAfter, options) {\n    options = options || {};\n    const fields = await this.assertTableHasColumn(tableName, attrNameBefore, options);\n\n    fields[attrNameAfter] = { ...fields[attrNameBefore] };\n    delete fields[attrNameBefore];\n\n    const sql = this.queryGenerator.renameColumnQuery(tableName, attrNameBefore, attrNameAfter, fields);\n    const subQueries = sql.split(';').filter(q => q !== '');\n\n    for (const subQuery of subQueries) await this.sequelize.query(`${subQuery};`, { raw: true, ...options });\n  }\n\n  /**\n   * @override\n   */\n  async removeConstraint(tableName, constraintName, options) {\n    let createTableSql;\n\n    const constraints = await this.showConstraint(tableName, constraintName);\n    // sqlite can't show only one constraint, so we find here the one to remove\n    const constraint = constraints.find(constaint => constaint.constraintName === constraintName);\n\n    if (!constraint) {\n      throw new sequelizeErrors.UnknownConstraintError({\n        message: `Constraint ${constraintName} on table ${tableName} does not exist`,\n        constraint: constraintName,\n        table: tableName\n      });\n    }\n    createTableSql = constraint.sql;\n    constraint.constraintName = this.queryGenerator.quoteIdentifier(constraint.constraintName);\n    let constraintSnippet = `, CONSTRAINT ${constraint.constraintName} ${constraint.constraintType} ${constraint.constraintCondition}`;\n\n    if (constraint.constraintType === 'FOREIGN KEY') {\n      const referenceTableName = this.queryGenerator.quoteTable(constraint.referenceTableName);\n      constraint.referenceTableKeys = constraint.referenceTableKeys.map(columnName => this.queryGenerator.quoteIdentifier(columnName));\n      const referenceTableKeys = constraint.referenceTableKeys.join(', ');\n      constraintSnippet += ` REFERENCES ${referenceTableName} (${referenceTableKeys})`;\n      constraintSnippet += ` ON UPDATE ${constraint.updateAction}`;\n      constraintSnippet += ` ON DELETE ${constraint.deleteAction}`;\n    }\n\n    createTableSql = createTableSql.replace(constraintSnippet, '');\n    createTableSql += ';';\n\n    const fields = await this.describeTable(tableName, options);\n\n    const sql = this.queryGenerator._alterConstraintQuery(tableName, fields, createTableSql);\n    const subQueries = sql.split(';').filter(q => q !== '');\n\n    for (const subQuery of subQueries) await this.sequelize.query(`${subQuery};`, { raw: true, ...options });\n  }\n\n  /**\n   * @override\n   */\n  async addConstraint(tableName, options) {\n    if (!options.fields) {\n      throw new Error('Fields must be specified through options.fields');\n    }\n\n    if (!options.type) {\n      throw new Error('Constraint type must be specified through options.type');\n    }\n\n    options = cloneDeep(options);\n\n    const constraintSnippet = this.queryGenerator.getConstraintSnippet(tableName, options);\n    const describeCreateTableSql = this.queryGenerator.describeCreateTableQuery(tableName);\n\n    const constraints = await this.sequelize.query(describeCreateTableSql, { ...options, type: QueryTypes.SELECT, raw: true });\n    let sql = constraints[0].sql;\n    const index = sql.length - 1;\n    //Replace ending ')' with constraint snippet - Simulates String.replaceAt\n    //http://stackoverflow.com/questions/1431094\n    const createTableSql = `${sql.substr(0, index)}, ${constraintSnippet})${sql.substr(index + 1)};`;\n\n    const fields = await this.describeTable(tableName, options);\n    sql = this.queryGenerator._alterConstraintQuery(tableName, fields, createTableSql);\n    const subQueries = sql.split(';').filter(q => q !== '');\n\n    for (const subQuery of subQueries) await this.sequelize.query(`${subQuery};`, { raw: true, ...options });\n  }\n\n  /**\n   * @override\n   */\n  async getForeignKeyReferencesForTable(tableName, options) {\n    const database = this.sequelize.config.database;\n    const query = this.queryGenerator.getForeignKeysQuery(tableName, database);\n    const result = await this.sequelize.query(query, options);\n    return result.map(row => ({\n      tableName,\n      columnName: row.from,\n      referencedTableName: row.table,\n      referencedColumnName: row.to,\n      tableCatalog: database,\n      referencedTableCatalog: database\n    }));\n  }\n\n  /**\n   * @override\n   */\n  async dropAllTables(options) {\n    options = options || {};\n    const skip = options.skip || [];\n\n    const tableNames = await this.showAllTables(options);\n    await this.sequelize.query('PRAGMA foreign_keys = OFF', options);\n    await this._dropAllTables(tableNames, skip, options);\n    await this.sequelize.query('PRAGMA foreign_keys = ON', options);\n  }\n\n  /**\n   * @override\n   */\n  async describeTable(tableName, options) {\n    let schema = null;\n    let schemaDelimiter = null;\n\n    if (typeof options === 'string') {\n      schema = options;\n    } else if (typeof options === 'object' && options !== null) {\n      schema = options.schema || null;\n      schemaDelimiter = options.schemaDelimiter || null;\n    }\n\n    if (typeof tableName === 'object' && tableName !== null) {\n      schema = tableName.schema;\n      tableName = tableName.tableName;\n    }\n\n    const sql = this.queryGenerator.describeTableQuery(tableName, schema, schemaDelimiter);\n    options = { ...options, type: QueryTypes.DESCRIBE };\n    const sqlIndexes = this.queryGenerator.showIndexesQuery(tableName);\n\n    try {\n      const data = await this.sequelize.query(sql, options);\n      /*\n       * If no data is returned from the query, then the table name may be wrong.\n       * Query generators that use information_schema for retrieving table info will just return an empty result set,\n       * it will not throw an error like built-ins do (e.g. DESCRIBE on MySql).\n       */\n      if (_.isEmpty(data)) {\n        throw new Error(`No description found for \"${tableName}\" table. Check the table name and schema; remember, they _are_ case sensitive.`);\n      }\n\n      const indexes = await this.sequelize.query(sqlIndexes, options);\n      for (const prop in data) {\n        data[prop].unique = false;\n      }\n      for (const index of indexes) {\n        for (const field of index.fields) {\n          if (index.unique !== undefined) {\n            data[field.attribute].unique = index.unique;\n          }\n        }\n      }\n\n      const foreignKeys = await this.getForeignKeyReferencesForTable(tableName, options);\n      for (const foreignKey of foreignKeys) {\n        data[foreignKey.columnName].references = {\n          model: foreignKey.referencedTableName,\n          key: foreignKey.referencedColumnName\n        };\n      }\n\n      return data;\n    } catch (e) {\n      if (e.original && e.original.code === 'ER_NO_SUCH_TABLE') {\n        throw new Error(`No description found for \"${tableName}\" table. Check the table name and schema; remember, they _are_ case sensitive.`);\n      }\n\n      throw e;\n    }\n  }\n}\n\nexports.SQLiteQueryInterface = SQLiteQueryInterface;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,364 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const Utils = require("../../utils");
-const AbstractQuery = require("../abstract/query");
-const QueryTypes = require("../../query-types");
-const sequelizeErrors = require("../../errors");
-const parserStore = require("../parserStore")("sqlite");
-const { logger } = require("../../utils/logger");
-const debug = logger.debugContext("sql:sqlite");
-function stringifyIfBigint(value) {
-  if (typeof value === "bigint") {
-    return value.toString();
-  }
-  return value;
-}
-class Query extends AbstractQuery {
-  getInsertIdField() {
-    return "lastID";
-  }
-  static formatBindParameters(sql, values, dialect) {
-    let bindParam;
-    if (Array.isArray(values)) {
-      bindParam = {};
-      values.forEach((v, i) => {
-        bindParam[`$${i + 1}`] = v;
-      });
-      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];
-    } else {
-      bindParam = {};
-      if (typeof values === "object") {
-        for (const k of Object.keys(values)) {
-          bindParam[`$${k}`] = values[k];
-        }
-      }
-      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];
-    }
-    return [sql, bindParam];
-  }
-  _collectModels(include, prefix) {
-    const ret = {};
-    if (include) {
-      for (const _include of include) {
-        let key;
-        if (!prefix) {
-          key = _include.as;
-        } else {
-          key = `${prefix}.${_include.as}`;
-        }
-        ret[key] = _include.model;
-        if (_include.include) {
-          _.merge(ret, this._collectModels(_include.include, key));
-        }
-      }
-    }
-    return ret;
-  }
-  _handleQueryResponse(metaData, columnTypes, err, results, errStack) {
-    if (err) {
-      err.sql = this.sql;
-      throw this.formatError(err, errStack);
-    }
-    let result = this.instance;
-    if (this.isInsertQuery(results, metaData) || this.isUpsertQuery()) {
-      this.handleInsertQuery(results, metaData);
-      if (!this.instance) {
-        if (metaData.constructor.name === "Statement" && this.model && this.model.autoIncrementAttribute && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute && this.model.rawAttributes[this.model.primaryKeyAttribute]) {
-          const startId = metaData[this.getInsertIdField()] - metaData.changes + 1;
-          result = [];
-          for (let i = startId; i < startId + metaData.changes; i++) {
-            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });
-          }
-        } else {
-          result = metaData[this.getInsertIdField()];
-        }
-      }
-    }
-    if (this.isShowTablesQuery()) {
-      return results.map((row) => row.name);
-    }
-    if (this.isShowConstraintsQuery()) {
-      result = results;
-      if (results && results[0] && results[0].sql) {
-        result = this.parseConstraintsFromSql(results[0].sql);
-      }
-      return result;
-    }
-    if (this.isSelectQuery()) {
-      if (this.options.raw) {
-        return this.handleSelectQuery(results);
-      }
-      const prefixes = this._collectModels(this.options.include);
-      results = results.map((result2) => {
-        return _.mapValues(result2, (value, name) => {
-          let model;
-          if (name.includes(".")) {
-            const lastind = name.lastIndexOf(".");
-            model = prefixes[name.substr(0, lastind)];
-            name = name.substr(lastind + 1);
-          } else {
-            model = this.options.model;
-          }
-          const tableName = model.getTableName().toString().replace(/`/g, "");
-          const tableTypes = columnTypes[tableName] || {};
-          if (tableTypes && !(name in tableTypes)) {
-            _.forOwn(model.rawAttributes, (attribute, key) => {
-              if (name === key && attribute.field) {
-                name = attribute.field;
-                return false;
-              }
-            });
-          }
-          return Object.prototype.hasOwnProperty.call(tableTypes, name) ? this.applyParsers(tableTypes[name], value) : value;
-        });
-      });
-      return this.handleSelectQuery(results);
-    }
-    if (this.isShowOrDescribeQuery()) {
-      return results;
-    }
-    if (this.sql.includes("PRAGMA INDEX_LIST")) {
-      return this.handleShowIndexesQuery(results);
-    }
-    if (this.sql.includes("PRAGMA INDEX_INFO")) {
-      return results;
-    }
-    if (this.sql.includes("PRAGMA TABLE_INFO")) {
-      result = {};
-      let defaultValue;
-      for (const _result of results) {
-        if (_result.dflt_value === null) {
-          defaultValue = void 0;
-        } else if (_result.dflt_value === "NULL") {
-          defaultValue = null;
-        } else {
-          defaultValue = _result.dflt_value;
-        }
-        result[_result.name] = {
-          type: _result.type,
-          allowNull: _result.notnull === 0,
-          defaultValue,
-          primaryKey: _result.pk !== 0
-        };
-        if (result[_result.name].type === "TINYINT(1)") {
-          result[_result.name].defaultValue = { "0": false, "1": true }[result[_result.name].defaultValue];
-        }
-        if (typeof result[_result.name].defaultValue === "string") {
-          result[_result.name].defaultValue = result[_result.name].defaultValue.replace(/'/g, "");
-        }
-      }
-      return result;
-    }
-    if (this.sql.includes("PRAGMA foreign_keys;")) {
-      return results[0];
-    }
-    if (this.sql.includes("PRAGMA foreign_keys")) {
-      return results;
-    }
-    if (this.sql.includes("PRAGMA foreign_key_list")) {
-      return results;
-    }
-    if ([QueryTypes.BULKUPDATE, QueryTypes.BULKDELETE].includes(this.options.type)) {
-      return metaData.changes;
-    }
-    if (this.options.type === QueryTypes.VERSION) {
-      return results[0].version;
-    }
-    if (this.options.type === QueryTypes.RAW) {
-      return [results, metaData];
-    }
-    if (this.isUpsertQuery()) {
-      return [result, null];
-    }
-    if (this.isUpdateQuery() || this.isInsertQuery()) {
-      return [result, metaData.changes];
-    }
-    return result;
-  }
-  async run(sql, parameters) {
-    const conn = this.connection;
-    this.sql = sql;
-    const method = this.getDatabaseMethod();
-    const complete = this._logQuery(sql, debug, parameters);
-    return new Promise((resolve, reject) => conn.serialize(async () => {
-      const columnTypes = {};
-      const errForStack = new Error();
-      const executeSql = () => {
-        if (sql.startsWith("-- ")) {
-          return resolve();
-        }
-        const query = this;
-        function afterExecute(executionError, results) {
-          try {
-            complete();
-            resolve(query._handleQueryResponse(this, columnTypes, executionError, results, errForStack.stack));
-            return;
-          } catch (error) {
-            reject(error);
-          }
-        }
-        if (!parameters)
-          parameters = [];
-        if (_.isPlainObject(parameters)) {
-          const newParameters = Object.create(null);
-          for (const key of Object.keys(parameters)) {
-            newParameters[`${key}`] = stringifyIfBigint(parameters[key]);
-          }
-          parameters = newParameters;
-        } else {
-          parameters = parameters.map(stringifyIfBigint);
-        }
-        conn[method](sql, parameters, afterExecute);
-        return null;
-      };
-      if (this.getDatabaseMethod() === "all") {
-        let tableNames = [];
-        if (this.options && this.options.tableNames) {
-          tableNames = this.options.tableNames;
-        } else if (/FROM `(.*?)`/i.exec(this.sql)) {
-          tableNames.push(/FROM `(.*?)`/i.exec(this.sql)[1]);
-        }
-        tableNames = tableNames.filter((tableName) => !(tableName in columnTypes) && tableName !== "sqlite_master");
-        if (!tableNames.length) {
-          return executeSql();
-        }
-        await Promise.all(tableNames.map((tableName) => new Promise((resolve2) => {
-          tableName = tableName.replace(/`/g, "");
-          columnTypes[tableName] = {};
-          conn.all(`PRAGMA table_info(\`${tableName}\`)`, (err, results) => {
-            if (!err) {
-              for (const result of results) {
-                columnTypes[tableName][result.name] = result.type;
-              }
-            }
-            resolve2();
-          });
-        })));
-      }
-      return executeSql();
-    }));
-  }
-  parseConstraintsFromSql(sql) {
-    let constraints = sql.split("CONSTRAINT ");
-    let referenceTableName, referenceTableKeys, updateAction, deleteAction;
-    constraints.splice(0, 1);
-    constraints = constraints.map((constraintSql) => {
-      if (constraintSql.includes("REFERENCES")) {
-        updateAction = constraintSql.match(/ON UPDATE (CASCADE|SET NULL|RESTRICT|NO ACTION|SET DEFAULT){1}/);
-        deleteAction = constraintSql.match(/ON DELETE (CASCADE|SET NULL|RESTRICT|NO ACTION|SET DEFAULT){1}/);
-        if (updateAction) {
-          updateAction = updateAction[1];
-        }
-        if (deleteAction) {
-          deleteAction = deleteAction[1];
-        }
-        const referencesRegex = /REFERENCES.+\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)/;
-        const referenceConditions = constraintSql.match(referencesRegex)[0].split(" ");
-        referenceTableName = Utils.removeTicks(referenceConditions[1]);
-        let columnNames = referenceConditions[2];
-        columnNames = columnNames.replace(/\(|\)/g, "").split(", ");
-        referenceTableKeys = columnNames.map((column) => Utils.removeTicks(column));
-      }
-      const constraintCondition = constraintSql.match(/\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)/)[0];
-      constraintSql = constraintSql.replace(/\(.+\)/, "");
-      const constraint = constraintSql.split(" ");
-      if (["PRIMARY", "FOREIGN"].includes(constraint[1])) {
-        constraint[1] += " KEY";
-      }
-      return {
-        constraintName: Utils.removeTicks(constraint[0]),
-        constraintType: constraint[1],
-        updateAction,
-        deleteAction,
-        sql: sql.replace(/"/g, "`"),
-        constraintCondition,
-        referenceTableName,
-        referenceTableKeys
-      };
-    });
-    return constraints;
-  }
-  applyParsers(type, value) {
-    if (type.includes("(")) {
-      type = type.substr(0, type.indexOf("("));
-    }
-    type = type.replace("UNSIGNED", "").replace("ZEROFILL", "");
-    type = type.trim().toUpperCase();
-    const parse = parserStore.get(type);
-    if (value !== null && parse) {
-      return parse(value, { timezone: this.sequelize.options.timezone });
-    }
-    return value;
-  }
-  formatError(err, errStack) {
-    switch (err.code) {
-      case "SQLITE_CONSTRAINT_UNIQUE":
-      case "SQLITE_CONSTRAINT_PRIMARYKEY":
-      case "SQLITE_CONSTRAINT_TRIGGER":
-      case "SQLITE_CONSTRAINT_FOREIGNKEY":
-      case "SQLITE_CONSTRAINT": {
-        if (err.message.includes("FOREIGN KEY constraint failed")) {
-          return new sequelizeErrors.ForeignKeyConstraintError({
-            parent: err,
-            stack: errStack
-          });
-        }
-        let fields = [];
-        let match = err.message.match(/columns (.*?) are/);
-        if (match !== null && match.length >= 2) {
-          fields = match[1].split(", ");
-        } else {
-          match = err.message.match(/UNIQUE constraint failed: (.*)/);
-          if (match !== null && match.length >= 2) {
-            fields = match[1].split(", ").map((columnWithTable) => columnWithTable.split(".")[1]);
-          }
-        }
-        const errors = [];
-        let message = "Validation error";
-        for (const field of fields) {
-          errors.push(new sequelizeErrors.ValidationErrorItem(this.getUniqueConstraintErrorMessage(field), "unique violation", field, this.instance && this.instance[field], this.instance, "not_unique"));
-        }
-        if (this.model) {
-          _.forOwn(this.model.uniqueKeys, (constraint) => {
-            if (_.isEqual(constraint.fields, fields) && !!constraint.msg) {
-              message = constraint.msg;
-              return false;
-            }
-          });
-        }
-        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });
-      }
-      case "SQLITE_BUSY":
-        return new sequelizeErrors.TimeoutError(err, { stack: errStack });
-      default:
-        return new sequelizeErrors.DatabaseError(err, { stack: errStack });
-    }
-  }
-  async handleShowIndexesQuery(data) {
-    return Promise.all(data.reverse().map(async (item) => {
-      item.fields = [];
-      item.primary = false;
-      item.unique = !!item.unique;
-      item.constraintName = item.name;
-      const columns = await this.run(`PRAGMA INDEX_INFO(\`${item.name}\`)`);
-      for (const column of columns) {
-        item.fields[column.seqno] = {
-          attribute: column.name,
-          length: void 0,
-          order: void 0
-        };
-      }
-      return item;
-    }));
-  }
-  getDatabaseMethod() {
-    if (this.isInsertQuery() || this.isUpdateQuery() || this.isUpsertQuery() || this.isBulkUpdateQuery() || this.sql.toLowerCase().includes("CREATE TEMPORARY TABLE".toLowerCase()) || this.options.type === QueryTypes.BULKDELETE) {
-      return "run";
-    }
-    return "all";
-  }
-}
-module.exports = Query;
-module.exports.Query = Query;
-module.exports.default = Query;
-//# sourceMappingURL=query.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/query.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/query.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/query.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('../../utils');\nconst AbstractQuery = require('../abstract/query');\nconst QueryTypes = require('../../query-types');\nconst sequelizeErrors = require('../../errors');\nconst parserStore = require('../parserStore')('sqlite');\nconst { logger } = require('../../utils/logger');\n\nconst debug = logger.debugContext('sql:sqlite');\n\n// sqlite3 currently ignores bigint values, so we have to translate to string for now\n// There's a WIP here: https://github.com/TryGhost/node-sqlite3/pull/1501\nfunction stringifyIfBigint(value) {\n  if (typeof value === 'bigint') {\n    return value.toString();\n  }\n\n  return value;\n}\n\nclass Query extends AbstractQuery {\n  getInsertIdField() {\n    return 'lastID';\n  }\n\n  /**\n   * rewrite query with parameters.\n   *\n   * @param {string} sql\n   * @param {Array|object} values\n   * @param {string} dialect\n   * @private\n   */\n  static formatBindParameters(sql, values, dialect) {\n    let bindParam;\n    if (Array.isArray(values)) {\n      bindParam = {};\n      values.forEach((v, i) => {\n        bindParam[`$${i + 1}`] = v;\n      });\n      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];\n    } else {\n      bindParam = {};\n      if (typeof values === 'object') {\n        for (const k of Object.keys(values)) {\n          bindParam[`$${k}`] = values[k];\n        }\n      }\n      sql = AbstractQuery.formatBindParameters(sql, values, dialect, { skipValueReplace: true })[0];\n    }\n    return [sql, bindParam];\n  }\n\n  _collectModels(include, prefix) {\n    const ret = {};\n\n    if (include) {\n      for (const _include of include) {\n        let key;\n        if (!prefix) {\n          key = _include.as;\n        } else {\n          key = `${prefix}.${_include.as}`;\n        }\n        ret[key] = _include.model;\n\n        if (_include.include) {\n          _.merge(ret, this._collectModels(_include.include, key));\n        }\n      }\n    }\n\n    return ret;\n  }\n\n  _handleQueryResponse(metaData, columnTypes, err, results, errStack) {\n    if (err) {\n      err.sql = this.sql;\n      throw this.formatError(err, errStack);\n    }\n    let result = this.instance;\n\n    // add the inserted row id to the instance\n    if (this.isInsertQuery(results, metaData) || this.isUpsertQuery()) {\n      this.handleInsertQuery(results, metaData);\n      if (!this.instance) {\n        // handle bulkCreate AI primary key\n        if (\n          metaData.constructor.name === 'Statement'\n          && this.model\n          && this.model.autoIncrementAttribute\n          && this.model.autoIncrementAttribute === this.model.primaryKeyAttribute\n          && this.model.rawAttributes[this.model.primaryKeyAttribute]\n        ) {\n          const startId = metaData[this.getInsertIdField()] - metaData.changes + 1;\n          result = [];\n          for (let i = startId; i < startId + metaData.changes; i++) {\n            result.push({ [this.model.rawAttributes[this.model.primaryKeyAttribute].field]: i });\n          }\n        } else {\n          result = metaData[this.getInsertIdField()];\n        }\n      }\n    }\n\n    if (this.isShowTablesQuery()) {\n      return results.map(row => row.name);\n    }\n    if (this.isShowConstraintsQuery()) {\n      result = results;\n      if (results && results[0] && results[0].sql) {\n        result = this.parseConstraintsFromSql(results[0].sql);\n      }\n      return result;\n    }\n    if (this.isSelectQuery()) {\n      if (this.options.raw) {\n        return this.handleSelectQuery(results);\n      }\n      // This is a map of prefix strings to models, e.g. user.projects -> Project model\n      const prefixes = this._collectModels(this.options.include);\n\n      results = results.map(result => {\n        return _.mapValues(result, (value, name) => {\n          let model;\n          if (name.includes('.')) {\n            const lastind = name.lastIndexOf('.');\n\n            model = prefixes[name.substr(0, lastind)];\n\n            name = name.substr(lastind + 1);\n          } else {\n            model = this.options.model;\n          }\n\n          const tableName = model.getTableName().toString().replace(/`/g, '');\n          const tableTypes = columnTypes[tableName] || {};\n\n          if (tableTypes && !(name in tableTypes)) {\n            // The column is aliased\n            _.forOwn(model.rawAttributes, (attribute, key) => {\n              if (name === key && attribute.field) {\n                name = attribute.field;\n                return false;\n              }\n            });\n          }\n\n          return Object.prototype.hasOwnProperty.call(tableTypes, name)\n            ? this.applyParsers(tableTypes[name], value)\n            : value;\n        });\n      });\n\n      return this.handleSelectQuery(results);\n    }\n    if (this.isShowOrDescribeQuery()) {\n      return results;\n    }\n    if (this.sql.includes('PRAGMA INDEX_LIST')) {\n      return this.handleShowIndexesQuery(results);\n    }\n    if (this.sql.includes('PRAGMA INDEX_INFO')) {\n      return results;\n    }\n    if (this.sql.includes('PRAGMA TABLE_INFO')) {\n      // this is the sqlite way of getting the metadata of a table\n      result = {};\n\n      let defaultValue;\n      for (const _result of results) {\n        if (_result.dflt_value === null) {\n          // Column schema omits any \"DEFAULT ...\"\n          defaultValue = undefined;\n        } else if (_result.dflt_value === 'NULL') {\n          // Column schema is a \"DEFAULT NULL\"\n          defaultValue = null;\n        } else {\n          defaultValue = _result.dflt_value;\n        }\n\n        result[_result.name] = {\n          type: _result.type,\n          allowNull: _result.notnull === 0,\n          defaultValue,\n          primaryKey: _result.pk !== 0\n        };\n\n        if (result[_result.name].type === 'TINYINT(1)') {\n          result[_result.name].defaultValue = { '0': false, '1': true }[result[_result.name].defaultValue];\n        }\n\n        if (typeof result[_result.name].defaultValue === 'string') {\n          result[_result.name].defaultValue = result[_result.name].defaultValue.replace(/'/g, '');\n        }\n      }\n      return result;\n    }\n    if (this.sql.includes('PRAGMA foreign_keys;')) {\n      return results[0];\n    }\n    if (this.sql.includes('PRAGMA foreign_keys')) {\n      return results;\n    }\n    if (this.sql.includes('PRAGMA foreign_key_list')) {\n      return results;\n    }\n    if ([QueryTypes.BULKUPDATE, QueryTypes.BULKDELETE].includes(this.options.type)) {\n      return metaData.changes;\n    }\n    if (this.options.type === QueryTypes.VERSION) {\n      return results[0].version;\n    }\n    if (this.options.type === QueryTypes.RAW) {\n      return [results, metaData];\n    }\n    if (this.isUpsertQuery()) {\n      return [result, null];\n    }\n    if (this.isUpdateQuery() || this.isInsertQuery()) {\n      return [result, metaData.changes];\n    }\n    return result;\n  }\n\n  async run(sql, parameters) {\n    const conn = this.connection;\n    this.sql = sql;\n    const method = this.getDatabaseMethod();\n    const complete = this._logQuery(sql, debug, parameters);\n\n    return new Promise((resolve, reject) => conn.serialize(async () => {\n      const columnTypes = {};\n      const errForStack = new Error();\n      const executeSql = () => {\n        if (sql.startsWith('-- ')) {\n          return resolve();\n        }\n        const query = this;\n        // cannot use arrow function here because the function is bound to the statement\n        function afterExecute(executionError, results) {\n          try {\n            complete();\n            // `this` is passed from sqlite, we have no control over this.\n            // eslint-disable-next-line no-invalid-this\n            resolve(query._handleQueryResponse(this, columnTypes, executionError, results, errForStack.stack));\n            return;\n          } catch (error) {\n            reject(error);\n          }\n        }\n\n        if (!parameters) parameters = [];\n\n        if (_.isPlainObject(parameters)) {\n          const newParameters = Object.create(null);\n          for (const key of Object.keys(parameters)) {\n            newParameters[`${key}`] = stringifyIfBigint(parameters[key]);\n          }\n          parameters = newParameters;\n        } else {\n          parameters = parameters.map(stringifyIfBigint);\n        }\n\n        conn[method](sql, parameters, afterExecute);\n\n        return null;\n      };\n\n      if (this.getDatabaseMethod() === 'all') {\n        let tableNames = [];\n        if (this.options && this.options.tableNames) {\n          tableNames = this.options.tableNames;\n        } else if (/FROM `(.*?)`/i.exec(this.sql)) {\n          tableNames.push(/FROM `(.*?)`/i.exec(this.sql)[1]);\n        }\n\n        // If we already have the metadata for the table, there's no need to ask for it again\n        tableNames = tableNames.filter(tableName => !(tableName in columnTypes) && tableName !== 'sqlite_master');\n\n        if (!tableNames.length) {\n          return executeSql();\n        }\n        await Promise.all(tableNames.map(tableName =>\n          new Promise(resolve => {\n            tableName = tableName.replace(/`/g, '');\n            columnTypes[tableName] = {};\n\n            conn.all(`PRAGMA table_info(\\`${tableName}\\`)`, (err, results) => {\n              if (!err) {\n                for (const result of results) {\n                  columnTypes[tableName][result.name] = result.type;\n                }\n              }\n              resolve();\n            });\n          })));\n      }\n      return executeSql();\n    }));\n  }\n\n  parseConstraintsFromSql(sql) {\n    let constraints = sql.split('CONSTRAINT ');\n    let referenceTableName, referenceTableKeys, updateAction, deleteAction;\n    constraints.splice(0, 1);\n    constraints = constraints.map(constraintSql => {\n      //Parse foreign key snippets\n      if (constraintSql.includes('REFERENCES')) {\n        //Parse out the constraint condition form sql string\n        updateAction = constraintSql.match(/ON UPDATE (CASCADE|SET NULL|RESTRICT|NO ACTION|SET DEFAULT){1}/);\n        deleteAction = constraintSql.match(/ON DELETE (CASCADE|SET NULL|RESTRICT|NO ACTION|SET DEFAULT){1}/);\n\n        if (updateAction) {\n          updateAction = updateAction[1];\n        }\n\n        if (deleteAction) {\n          deleteAction = deleteAction[1];\n        }\n\n        const referencesRegex = /REFERENCES.+\\((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*\\)/;\n        const referenceConditions = constraintSql.match(referencesRegex)[0].split(' ');\n        referenceTableName = Utils.removeTicks(referenceConditions[1]);\n        let columnNames = referenceConditions[2];\n        columnNames = columnNames.replace(/\\(|\\)/g, '').split(', ');\n        referenceTableKeys = columnNames.map(column => Utils.removeTicks(column));\n      }\n\n      const constraintCondition = constraintSql.match(/\\((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*\\)/)[0];\n      constraintSql = constraintSql.replace(/\\(.+\\)/, '');\n      const constraint = constraintSql.split(' ');\n\n      if (['PRIMARY', 'FOREIGN'].includes(constraint[1])) {\n        constraint[1] += ' KEY';\n      }\n\n      return {\n        constraintName: Utils.removeTicks(constraint[0]),\n        constraintType: constraint[1],\n        updateAction,\n        deleteAction,\n        sql: sql.replace(/\"/g, '`'), //Sqlite returns double quotes for table name\n        constraintCondition,\n        referenceTableName,\n        referenceTableKeys\n      };\n    });\n\n    return constraints;\n  }\n\n  applyParsers(type, value) {\n    if (type.includes('(')) {\n      // Remove the length part\n      type = type.substr(0, type.indexOf('('));\n    }\n    type = type.replace('UNSIGNED', '').replace('ZEROFILL', '');\n    type = type.trim().toUpperCase();\n    const parse = parserStore.get(type);\n\n    if (value !== null && parse) {\n      return parse(value, { timezone: this.sequelize.options.timezone });\n    }\n    return value;\n  }\n\n  formatError(err, errStack) {\n\n    switch (err.code) {\n      case 'SQLITE_CONSTRAINT_UNIQUE':\n      case 'SQLITE_CONSTRAINT_PRIMARYKEY':\n      case 'SQLITE_CONSTRAINT_TRIGGER':\n      case 'SQLITE_CONSTRAINT_FOREIGNKEY':\n      case 'SQLITE_CONSTRAINT': {\n        if (err.message.includes('FOREIGN KEY constraint failed')) {\n          return new sequelizeErrors.ForeignKeyConstraintError({\n            parent: err,\n            stack: errStack\n          });\n        }\n\n        let fields = [];\n\n        // Sqlite pre 2.2 behavior - Error: SQLITE_CONSTRAINT: columns x, y are not unique\n        let match = err.message.match(/columns (.*?) are/);\n        if (match !== null && match.length >= 2) {\n          fields = match[1].split(', ');\n        } else {\n\n          // Sqlite post 2.2 behavior - Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: table.x, table.y\n          match = err.message.match(/UNIQUE constraint failed: (.*)/);\n          if (match !== null && match.length >= 2) {\n            fields = match[1].split(', ').map(columnWithTable => columnWithTable.split('.')[1]);\n          }\n        }\n\n        const errors = [];\n        let message = 'Validation error';\n\n        for (const field of fields) {\n          errors.push(new sequelizeErrors.ValidationErrorItem(\n            this.getUniqueConstraintErrorMessage(field),\n            'unique violation', // sequelizeErrors.ValidationErrorItem.Origins.DB,\n            field,\n            this.instance && this.instance[field],\n            this.instance,\n            'not_unique'\n          ));\n        }\n\n        if (this.model) {\n          _.forOwn(this.model.uniqueKeys, constraint => {\n            if (_.isEqual(constraint.fields, fields) && !!constraint.msg) {\n              message = constraint.msg;\n              return false;\n            }\n          });\n        }\n\n        return new sequelizeErrors.UniqueConstraintError({ message, errors, parent: err, fields, stack: errStack });\n      }\n      case 'SQLITE_BUSY':\n        return new sequelizeErrors.TimeoutError(err, { stack: errStack });\n\n      default:\n        return new sequelizeErrors.DatabaseError(err, { stack: errStack });\n    }\n  }\n\n  async handleShowIndexesQuery(data) {\n    // Sqlite returns indexes so the one that was defined last is returned first. Lets reverse that!\n    return Promise.all(data.reverse().map(async item => {\n      item.fields = [];\n      item.primary = false;\n      item.unique = !!item.unique;\n      item.constraintName = item.name;\n      const columns = await this.run(`PRAGMA INDEX_INFO(\\`${item.name}\\`)`);\n      for (const column of columns) {\n        item.fields[column.seqno] = {\n          attribute: column.name,\n          length: undefined,\n          order: undefined\n        };\n      }\n\n      return item;\n    }));\n  }\n\n  getDatabaseMethod() {\n    if (this.isInsertQuery() || this.isUpdateQuery() || this.isUpsertQuery() || this.isBulkUpdateQuery() || this.sql.toLowerCase().includes('CREATE TEMPORARY TABLE'.toLowerCase()) || this.options.type === QueryTypes.BULKDELETE) {\n      return 'run';\n    }\n    return 'all';\n  }\n}\n\nmodule.exports = Query;\nmodule.exports.Query = Query;\nmodule.exports.default = Query;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/sqlite-utils.js
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/sqlite-utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  withSqliteForeignKeysOff: () => withSqliteForeignKeysOff
-});
-async function withSqliteForeignKeysOff(sequelize, options, cb) {
-  try {
-    await sequelize.query("PRAGMA foreign_keys = OFF", options);
-    return await cb();
-  } finally {
-    await sequelize.query("PRAGMA foreign_keys = ON", options);
-  }
-}
-//# sourceMappingURL=sqlite-utils.js.map
Index: ckend/node_modules/sequelize/lib/dialects/sqlite/sqlite-utils.js.map
===================================================================
--- backend/node_modules/sequelize/lib/dialects/sqlite/sqlite-utils.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/dialects/sqlite/sqlite-utils.ts"],
-  "sourcesContent": ["import type { Sequelize } from '../../sequelize.js';\nimport type { QueryOptions } from '../abstract/query-interface.js';\n\nexport async function withSqliteForeignKeysOff<T>(sequelize: Sequelize, options: QueryOptions, cb: () => Promise<T>): Promise<T> {\n  try {\n    await sequelize.query('PRAGMA foreign_keys = OFF', options);\n\n    return await cb();\n  } finally {\n    await sequelize.query('PRAGMA foreign_keys = ON', options);\n  }\n}\n"],
-  "mappings": ";;;;;;;AAAA;AAAA;AAAA;AAGA,wCAAkD,WAAsB,SAAuB,IAAkC;AAC/H,MAAI;AACF,UAAM,UAAU,MAAM,6BAA6B;AAEnD,WAAO,MAAM;AAAA,YACb;AACA,UAAM,UAAU,MAAM,4BAA4B;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/aggregate-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/aggregate-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => aggregate_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class AggregateError extends import_base_error.default {
-  constructor(errors) {
-    super();
-    __publicField(this, "errors");
-    this.errors = errors;
-    this.name = "AggregateError";
-  }
-  toString() {
-    const message = `AggregateError of:
-${this.errors.map((error) => error === this ? "[Circular AggregateError]" : error instanceof AggregateError ? String(error).replace(/\n$/, "").replace(/^/gm, "  ") : String(error).replace(/^/gm, "    ").substring(2)).join("\n")}
-`;
-    return message;
-  }
-}
-var aggregate_error_default = AggregateError;
-//# sourceMappingURL=aggregate-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/aggregate-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/aggregate-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/aggregate-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * A wrapper for multiple Errors\n *\n * @param errors The aggregated errors that occurred\n */\nclass AggregateError extends BaseError {\n  /** the aggregated errors that occurred */\n  readonly errors: Array<AggregateError | Error>;\n\n  constructor(errors: Array<AggregateError | Error>) {\n    super();\n    this.errors = errors;\n    this.name = 'AggregateError';\n  }\n\n  toString(): string {\n    const message = `AggregateError of:\\n${this.errors\n      .map((error: Error | AggregateError) =>\n        error === this\n          ? '[Circular AggregateError]'\n          : error instanceof AggregateError\n            ? String(error).replace(/\\n$/, '').replace(/^/gm, '  ')\n            : String(error).replace(/^/gm, '    ').substring(2)\n      )\n      .join('\\n')}\\n`;\n    return message;\n  }\n}\n\nexport default AggregateError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAOtB,6BAA6B,0BAAU;AAAA,EAIrC,YAAY,QAAuC;AACjD;AAHO;AAIP,SAAK,SAAS;AACd,SAAK,OAAO;AAAA;AAAA,EAGd,WAAmB;AACjB,UAAM,UAAU;AAAA,EAAuB,KAAK,OACzC,IAAI,CAAC,UACJ,UAAU,OACN,8BACA,iBAAiB,iBACf,OAAO,OAAO,QAAQ,OAAO,IAAI,QAAQ,OAAO,QAChD,OAAO,OAAO,QAAQ,OAAO,QAAQ,UAAU,IAEtD,KAAK;AAAA;AACR,WAAO;AAAA;AAAA;AAIX,IAAO,0BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/association-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/association-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => association_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class AssociationError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeAssociationError";
-  }
-}
-var association_error_default = AssociationError;
-//# sourceMappingURL=association-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/association-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/association-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/association-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Thrown when an association is improperly constructed (see message for details)\n */\nclass AssociationError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeAssociationError';\n  }\n}\n\nexport default AssociationError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,+BAA+B,0BAAU;AAAA,EACvC,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,4BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/base-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/base-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  default: () => base_error_default
-});
-class BaseError extends Error {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeBaseError";
-  }
-}
-var base_error_default = BaseError;
-//# sourceMappingURL=base-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/base-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/base-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/base-error.ts"],
-  "sourcesContent": ["export interface ErrorOptions {\n  stack?: string;\n}\n\nexport interface CommonErrorProperties {\n  /** The database specific error which triggered this one */\n  readonly parent: Error;\n\n  /** The database specific error which triggered this one */\n  readonly original: Error;\n\n  /** The SQL that triggered the error */\n  readonly sql: string;\n}\n\n/**\n * The Base Error all Sequelize Errors inherit from.\n *\n * Sequelize provides a host of custom error classes, to allow you to do easier debugging. All of these errors are exposed on the sequelize object and the sequelize constructor.\n * All sequelize errors inherit from the base JS error object.\n *\n * This means that errors can be accessed using `Sequelize.ValidationError`\n */\nabstract class BaseError extends Error {\n  constructor(message?: string) {\n    super(message);\n    this.name = 'SequelizeBaseError';\n  }\n}\n\nexport default BaseError;\n"],
-  "mappings": ";;;;;;;AAAA;AAAA;AAAA;AAuBA,wBAAiC,MAAM;AAAA,EACrC,YAAY,SAAkB;AAC5B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,qBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/bulk-record-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/bulk-record-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => bulk_record_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class BulkRecordError extends import_base_error.default {
-  constructor(error, record) {
-    super(error.message);
-    __publicField(this, "errors");
-    __publicField(this, "record");
-    this.name = "SequelizeBulkRecordError";
-    this.errors = error;
-    this.record = record;
-  }
-}
-var bulk_record_error_default = BulkRecordError;
-//# sourceMappingURL=bulk-record-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/bulk-record-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/bulk-record-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/bulk-record-error.ts"],
-  "sourcesContent": ["import type { Model } from '..';\nimport BaseError from './base-error';\n\n/**\n * Thrown when bulk operation fails, it represent per record level error.\n * Used with AggregateError\n *\n * @param error Error for a given record/instance\n * @param record DAO instance that error belongs to\n */\nclass BulkRecordError extends BaseError {\n  errors: Error;\n  record: Model;\n\n  constructor(error: Error, record: Model) {\n    super(error.message);\n    this.name = 'SequelizeBulkRecordError';\n    this.errors = error;\n    this.record = record;\n  }\n}\n\nexport default BulkRecordError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AACA,wBAAsB;AAStB,8BAA8B,0BAAU;AAAA,EAItC,YAAY,OAAc,QAAe;AACvC,UAAM,MAAM;AAJd;AACA;AAIE,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,SAAS;AAAA;AAAA;AAIlB,IAAO,4BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => connection_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class ConnectionError extends import_base_error.default {
-  constructor(parent) {
-    super(parent ? parent.message : "");
-    __publicField(this, "parent");
-    __publicField(this, "original");
-    this.name = "SequelizeConnectionError";
-    this.parent = parent;
-    this.original = parent;
-  }
-}
-var connection_error_default = ConnectionError;
-//# sourceMappingURL=connection-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/connection-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * A base class for all connection related errors.\n */\nclass ConnectionError extends BaseError {\n  /** The connection specific error which triggered this one */\n  parent: Error;\n  original: Error;\n\n  constructor(parent: Error) {\n    super(parent ? parent.message : '');\n    this.name = 'SequelizeConnectionError';\n    this.parent = parent;\n    this.original = parent;\n  }\n}\n\nexport default ConnectionError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,8BAA8B,0BAAU;AAAA,EAKtC,YAAY,QAAe;AACzB,UAAM,SAAS,OAAO,UAAU;AAJlC;AACA;AAIE,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,WAAW;AAAA;AAAA;AAIpB,IAAO,2BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/access-denied-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/access-denied-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => access_denied_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class AccessDeniedError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeAccessDeniedError";
-  }
-}
-var access_denied_error_default = AccessDeniedError;
-//# sourceMappingURL=access-denied-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/access-denied-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/access-denied-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/access-denied-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database is refused due to insufficient privileges\n */\nclass AccessDeniedError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeAccessDeniedError';\n  }\n}\n\nexport default AccessDeniedError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,gCAAgC,gCAAgB;AAAA,EAC9C,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,8BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-acquire-timeout-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-acquire-timeout-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => connection_acquire_timeout_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class ConnectionAcquireTimeoutError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeConnectionAcquireTimeoutError";
-  }
-}
-var connection_acquire_timeout_error_default = ConnectionAcquireTimeoutError;
-//# sourceMappingURL=connection-acquire-timeout-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-acquire-timeout-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-acquire-timeout-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/connection-acquire-timeout-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when connection is not acquired due to timeout\n */\nclass ConnectionAcquireTimeoutError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeConnectionAcquireTimeoutError';\n  }\n}\n\nexport default ConnectionAcquireTimeoutError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,4CAA4C,gCAAgB;AAAA,EAC1D,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,2CAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-refused-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-refused-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => connection_refused_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class ConnectionRefusedError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeConnectionRefusedError";
-  }
-}
-var connection_refused_error_default = ConnectionRefusedError;
-//# sourceMappingURL=connection-refused-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-refused-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-refused-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/connection-refused-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database is refused\n */\nclass ConnectionRefusedError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeConnectionRefusedError';\n  }\n}\n\nexport default ConnectionRefusedError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,qCAAqC,gCAAgB;AAAA,EACnD,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,mCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-timed-out-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-timed-out-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => connection_timed_out_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class ConnectionTimedOutError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeConnectionTimedOutError";
-  }
-}
-var connection_timed_out_error_default = ConnectionTimedOutError;
-//# sourceMappingURL=connection-timed-out-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/connection-timed-out-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/connection-timed-out-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/connection-timed-out-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database times out\n */\nclass ConnectionTimedOutError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeConnectionTimedOutError';\n  }\n}\n\nexport default ConnectionTimedOutError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,sCAAsC,gCAAgB;AAAA,EACpD,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,qCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/host-not-found-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/host-not-found-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => host_not_found_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class HostNotFoundError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeHostNotFoundError";
-  }
-}
-var host_not_found_error_default = HostNotFoundError;
-//# sourceMappingURL=host-not-found-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/host-not-found-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/host-not-found-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/host-not-found-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database has a hostname that was not found\n */\nclass HostNotFoundError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeHostNotFoundError';\n  }\n}\n\nexport default HostNotFoundError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,gCAAgC,gCAAgB;AAAA,EAC9C,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,+BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/host-not-reachable-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/host-not-reachable-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => host_not_reachable_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class HostNotReachableError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeHostNotReachableError";
-  }
-}
-var host_not_reachable_error_default = HostNotReachableError;
-//# sourceMappingURL=host-not-reachable-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/host-not-reachable-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/host-not-reachable-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/host-not-reachable-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database has a hostname that was not reachable\n */\nclass HostNotReachableError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeHostNotReachableError';\n  }\n}\n\nexport default HostNotReachableError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,oCAAoC,gCAAgB;AAAA,EAClD,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,mCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/connection/invalid-connection-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/invalid-connection-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => invalid_connection_error_default
-});
-var import_connection_error = __toModule(require("../connection-error"));
-class InvalidConnectionError extends import_connection_error.default {
-  constructor(parent) {
-    super(parent);
-    this.name = "SequelizeInvalidConnectionError";
-  }
-}
-var invalid_connection_error_default = InvalidConnectionError;
-//# sourceMappingURL=invalid-connection-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/connection/invalid-connection-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/connection/invalid-connection-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/connection/invalid-connection-error.ts"],
-  "sourcesContent": ["import ConnectionError from '../connection-error';\n\n/**\n * Thrown when a connection to a database has invalid values for any of the connection parameters\n */\nclass InvalidConnectionError extends ConnectionError {\n  constructor(parent: Error) {\n    super(parent);\n    this.name = 'SequelizeInvalidConnectionError';\n  }\n}\n\nexport default InvalidConnectionError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,8BAA4B;AAK5B,qCAAqC,gCAAgB;AAAA,EACnD,YAAY,QAAe;AACzB,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,mCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/database-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/database-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => database_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class DatabaseError extends import_base_error.default {
-  constructor(parent, options = {}) {
-    super(parent.message);
-    __publicField(this, "parent");
-    __publicField(this, "original");
-    __publicField(this, "sql");
-    __publicField(this, "parameters");
-    var _a;
-    this.name = "SequelizeDatabaseError";
-    this.parent = parent;
-    this.original = parent;
-    this.sql = parent.sql;
-    this.parameters = (_a = parent.parameters) != null ? _a : {};
-    if (options.stack) {
-      this.stack = options.stack;
-    }
-  }
-}
-var database_error_default = DatabaseError;
-//# sourceMappingURL=database-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/database-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/database-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/database-error.ts"],
-  "sourcesContent": ["import BaseError, { CommonErrorProperties, ErrorOptions } from './base-error';\n\nexport interface DatabaseErrorParent\n  extends Error,\n    Pick<CommonErrorProperties, 'sql'> {\n  /** The parameters for the sql that triggered the error */\n  readonly parameters?: object;\n}\n\nexport interface DatabaseErrorSubclassOptions extends ErrorOptions {\n  parent?: DatabaseErrorParent;\n  message?: string;\n}\n\n/**\n * A base class for all database related errors.\n */\nclass DatabaseError\n  extends BaseError\n  implements DatabaseErrorParent, CommonErrorProperties\n{\n  parent: Error;\n  original: Error;\n  sql: string;\n  parameters: object;\n\n  /**\n   * @param parent The database specific error which triggered this one\n   * @param options\n   */\n  constructor(parent: DatabaseErrorParent, options: ErrorOptions = {}) {\n    super(parent.message);\n    this.name = 'SequelizeDatabaseError';\n\n    this.parent = parent;\n    this.original = parent;\n\n    this.sql = parent.sql;\n    this.parameters = parent.parameters ?? {};\n\n    if (options.stack) {\n      this.stack = options.stack;\n    }\n  }\n}\n\nexport default DatabaseError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAA+D;AAiB/D,4BACU,0BAEV;AAAA,EAUE,YAAY,QAA6B,UAAwB,IAAI;AACnE,UAAM,OAAO;AAVf;AACA;AACA;AACA;AAxBF;AAgCI,SAAK,OAAO;AAEZ,SAAK,SAAS;AACd,SAAK,WAAW;AAEhB,SAAK,MAAM,OAAO;AAClB,SAAK,aAAa,aAAO,eAAP,YAAqB;AAEvC,QAAI,QAAQ,OAAO;AACjB,WAAK,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAK3B,IAAO,yBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/database/exclusion-constraint-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/exclusion-constraint-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => exclusion_constraint_error_default
-});
-var import_database_error = __toModule(require("../database-error"));
-class ExclusionConstraintError extends import_database_error.default {
-  constructor(options) {
-    options = options || {};
-    options.parent = options.parent || { sql: "", name: "", message: "" };
-    super(options.parent, { stack: options.stack });
-    __publicField(this, "constraint");
-    __publicField(this, "fields");
-    __publicField(this, "table");
-    this.name = "SequelizeExclusionConstraintError";
-    this.message = options.message || options.parent.message || "";
-    this.constraint = options.constraint;
-    this.fields = options.fields;
-    this.table = options.table;
-  }
-}
-var exclusion_constraint_error_default = ExclusionConstraintError;
-//# sourceMappingURL=exclusion-constraint-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/database/exclusion-constraint-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/exclusion-constraint-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/database/exclusion-constraint-error.ts"],
-  "sourcesContent": ["import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';\n\ninterface ExclusionConstraintErrorOptions {\n  constraint?: string;\n  fields?: Record<string, string | number>;\n  table?: string;\n}\n\n/**\n * Thrown when an exclusion constraint is violated in the database\n */\nclass ExclusionConstraintError extends DatabaseError implements ExclusionConstraintErrorOptions {\n  constraint: string | undefined;\n  fields: Record<string, string | number> | undefined;\n  table: string | undefined;\n\n  constructor(\n    options: DatabaseErrorSubclassOptions & ExclusionConstraintErrorOptions\n  ) {\n    options = options || {};\n    options.parent = options.parent || { sql: '', name: '', message: '' };\n\n    super(options.parent, { stack: options.stack });\n    this.name = 'SequelizeExclusionConstraintError';\n\n    this.message = options.message || options.parent.message || '';\n    this.constraint = options.constraint;\n    this.fields = options.fields;\n    this.table = options.table;\n  }\n}\n\nexport default ExclusionConstraintError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,4BAA4D;AAW5D,uCAAuC,8BAAyD;AAAA,EAK9F,YACE,SACA;AACA,cAAU,WAAW;AACrB,YAAQ,SAAS,QAAQ,UAAU,EAAE,KAAK,IAAI,MAAM,IAAI,SAAS;AAEjE,UAAM,QAAQ,QAAQ,EAAE,OAAO,QAAQ;AAVzC;AACA;AACA;AASE,SAAK,OAAO;AAEZ,SAAK,UAAU,QAAQ,WAAW,QAAQ,OAAO,WAAW;AAC5D,SAAK,aAAa,QAAQ;AAC1B,SAAK,SAAS,QAAQ;AACtB,SAAK,QAAQ,QAAQ;AAAA;AAAA;AAIzB,IAAO,qCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/database/foreign-key-constraint-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/foreign-key-constraint-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,59 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  RelationshipType: () => RelationshipType,
-  default: () => foreign_key_constraint_error_default
-});
-var import_database_error = __toModule(require("../database-error"));
-var RelationshipType = /* @__PURE__ */ ((RelationshipType2) => {
-  RelationshipType2["parent"] = "parent";
-  RelationshipType2["child"] = "child";
-  return RelationshipType2;
-})(RelationshipType || {});
-class ForeignKeyConstraintError extends import_database_error.default {
-  constructor(options) {
-    options = options || {};
-    options.parent = options.parent || { sql: "", name: "", message: "" };
-    super(options.parent, { stack: options.stack });
-    __publicField(this, "table");
-    __publicField(this, "fields");
-    __publicField(this, "value");
-    __publicField(this, "index");
-    __publicField(this, "reltype");
-    this.name = "SequelizeForeignKeyConstraintError";
-    this.message = options.message || options.parent.message || "Database Error";
-    this.fields = options.fields;
-    this.table = options.table;
-    this.value = options.value;
-    this.index = options.index;
-    this.reltype = options.reltype;
-  }
-}
-var foreign_key_constraint_error_default = ForeignKeyConstraintError;
-//# sourceMappingURL=foreign-key-constraint-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/database/foreign-key-constraint-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/foreign-key-constraint-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/database/foreign-key-constraint-error.ts"],
-  "sourcesContent": ["import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';\n\nexport enum RelationshipType {\n  parent = 'parent',\n  child = 'child',\n}\n\ninterface ForeignKeyConstraintErrorOptions {\n  table?: string;\n  fields?: { [field: string]: string };\n  value?: unknown;\n  index?: string;\n  reltype?: RelationshipType;\n}\n\n/**\n * Thrown when a foreign key constraint is violated in the database\n */\nclass ForeignKeyConstraintError extends DatabaseError {\n  table: string | undefined;\n  fields: { [field: string]: string } | undefined;\n  value: unknown;\n  index: string | undefined;\n  reltype: RelationshipType | undefined;\n\n  constructor(\n    options: ForeignKeyConstraintErrorOptions & DatabaseErrorSubclassOptions\n  ) {\n    options = options || {};\n    options.parent = options.parent || { sql: '', name: '', message: '' };\n\n    super(options.parent, { stack: options.stack });\n    this.name = 'SequelizeForeignKeyConstraintError';\n\n    this.message =\n      options.message || options.parent.message || 'Database Error';\n    this.fields = options.fields;\n    this.table = options.table;\n    this.value = options.value;\n    this.index = options.index;\n    this.reltype = options.reltype;\n  }\n}\n\nexport default ForeignKeyConstraintError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA,4BAA4D;AAErD,IAAK,mBAAL,kBAAK,sBAAL;AACL,gCAAS;AACT,+BAAQ;AAFE;AAAA;AAgBZ,wCAAwC,8BAAc;AAAA,EAOpD,YACE,SACA;AACA,cAAU,WAAW;AACrB,YAAQ,SAAS,QAAQ,UAAU,EAAE,KAAK,IAAI,MAAM,IAAI,SAAS;AAEjE,UAAM,QAAQ,QAAQ,EAAE,OAAO,QAAQ;AAZzC;AACA;AACA;AACA;AACA;AASE,SAAK,OAAO;AAEZ,SAAK,UACH,QAAQ,WAAW,QAAQ,OAAO,WAAW;AAC/C,SAAK,SAAS,QAAQ;AACtB,SAAK,QAAQ,QAAQ;AACrB,SAAK,QAAQ,QAAQ;AACrB,SAAK,QAAQ,QAAQ;AACrB,SAAK,UAAU,QAAQ;AAAA;AAAA;AAI3B,IAAO,uCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/database/timeout-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/timeout-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => timeout_error_default
-});
-var import_database_error = __toModule(require("../database-error"));
-class TimeoutError extends import_database_error.default {
-  constructor(parent, options = {}) {
-    super(parent, options);
-    this.name = "SequelizeTimeoutError";
-  }
-}
-var timeout_error_default = TimeoutError;
-//# sourceMappingURL=timeout-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/database/timeout-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/timeout-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/database/timeout-error.ts"],
-  "sourcesContent": ["import { ErrorOptions } from '../base-error';\nimport DatabaseError, { DatabaseErrorParent } from '../database-error';\n\n/**\n * Thrown when a database query times out because of a deadlock\n */\nclass TimeoutError extends DatabaseError {\n  constructor(parent: DatabaseErrorParent, options: ErrorOptions = {}) {\n    super(parent, options);\n    this.name = 'SequelizeTimeoutError';\n  }\n}\n\nexport default TimeoutError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AACA,4BAAmD;AAKnD,2BAA2B,8BAAc;AAAA,EACvC,YAAY,QAA6B,UAAwB,IAAI;AACnE,UAAM,QAAQ;AACd,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,wBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/database/unknown-constraint-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/unknown-constraint-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => unknown_constraint_error_default
-});
-var import_database_error = __toModule(require("../database-error"));
-class UnknownConstraintError extends import_database_error.default {
-  constructor(options) {
-    options = options || {};
-    options.parent = options.parent || { sql: "", name: "", message: "" };
-    super(options.parent, { stack: options.stack });
-    __publicField(this, "constraint");
-    __publicField(this, "fields");
-    __publicField(this, "table");
-    this.name = "SequelizeUnknownConstraintError";
-    this.message = options.message || "The specified constraint does not exist";
-    this.constraint = options.constraint;
-    this.fields = options.fields;
-    this.table = options.table;
-  }
-}
-var unknown_constraint_error_default = UnknownConstraintError;
-//# sourceMappingURL=unknown-constraint-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/database/unknown-constraint-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/database/unknown-constraint-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/database/unknown-constraint-error.ts"],
-  "sourcesContent": ["import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';\n\ninterface UnknownConstraintErrorOptions {\n  constraint?: string;\n  fields?: Record<string, string | number>;\n  table?: string;\n}\n\n/**\n * Thrown when constraint name is not found in the database\n */\nclass UnknownConstraintError extends DatabaseError implements UnknownConstraintErrorOptions {\n  constraint: string | undefined;\n  fields: Record<string, string | number> | undefined;\n  table: string | undefined;\n\n  constructor(\n    options: UnknownConstraintErrorOptions & DatabaseErrorSubclassOptions\n  ) {\n    options = options || {};\n    options.parent = options.parent || { sql: '', name: '', message: '' };\n\n    super(options.parent, { stack: options.stack });\n    this.name = 'SequelizeUnknownConstraintError';\n\n    this.message = options.message || 'The specified constraint does not exist';\n    this.constraint = options.constraint;\n    this.fields = options.fields;\n    this.table = options.table;\n  }\n}\n\nexport default UnknownConstraintError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,4BAA4D;AAW5D,qCAAqC,8BAAuD;AAAA,EAK1F,YACE,SACA;AACA,cAAU,WAAW;AACrB,YAAQ,SAAS,QAAQ,UAAU,EAAE,KAAK,IAAI,MAAM,IAAI,SAAS;AAEjE,UAAM,QAAQ,QAAQ,EAAE,OAAO,QAAQ;AAVzC;AACA;AACA;AASE,SAAK,OAAO;AAEZ,SAAK,UAAU,QAAQ,WAAW;AAClC,SAAK,aAAa,QAAQ;AAC1B,SAAK,SAAS,QAAQ;AACtB,SAAK,QAAQ,QAAQ;AAAA;AAAA;AAIzB,IAAO,mCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/eager-loading-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/eager-loading-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => eager_loading_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class EagerLoadingError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeEagerLoadingError";
-  }
-}
-var eager_loading_error_default = EagerLoadingError;
-//# sourceMappingURL=eager-loading-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/eager-loading-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/eager-loading-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/eager-loading-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Thrown when an include statement is improperly constructed (see message for details)\n */\nclass EagerLoadingError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeEagerLoadingError';\n  }\n}\n\nexport default EagerLoadingError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,gCAAgC,0BAAU;AAAA,EACxC,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,8BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/empty-result-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/empty-result-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => empty_result_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class EmptyResultError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeEmptyResultError";
-  }
-}
-var empty_result_error_default = EmptyResultError;
-//# sourceMappingURL=empty-result-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/empty-result-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/empty-result-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/empty-result-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Thrown when a record was not found, Usually used with rejectOnEmpty mode (see message for details)\n */\nclass EmptyResultError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeEmptyResultError';\n  }\n}\n\nexport default EmptyResultError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,+BAA+B,0BAAU;AAAA,EACvC,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,6BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/index.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,81 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  AccessDeniedError: () => import_access_denied_error.default,
-  AggregateError: () => import_aggregate_error.default,
-  AssociationError: () => import_association_error.default,
-  AsyncQueueError: () => import_async_queue.AsyncQueueError,
-  BaseError: () => import_base_error.default,
-  BulkRecordError: () => import_bulk_record_error.default,
-  ConnectionAcquireTimeoutError: () => import_connection_acquire_timeout_error.default,
-  ConnectionError: () => import_connection_error.default,
-  ConnectionRefusedError: () => import_connection_refused_error.default,
-  ConnectionTimedOutError: () => import_connection_timed_out_error.default,
-  DatabaseError: () => import_database_error.default,
-  EagerLoadingError: () => import_eager_loading_error.default,
-  EmptyResultError: () => import_empty_result_error.default,
-  ExclusionConstraintError: () => import_exclusion_constraint_error.default,
-  ForeignKeyConstraintError: () => import_foreign_key_constraint_error.default,
-  HostNotFoundError: () => import_host_not_found_error.default,
-  HostNotReachableError: () => import_host_not_reachable_error.default,
-  InstanceError: () => import_instance_error.default,
-  InvalidConnectionError: () => import_invalid_connection_error.default,
-  OptimisticLockError: () => import_optimistic_lock_error.default,
-  QueryError: () => import_query_error.default,
-  SequelizeScopeError: () => import_sequelize_scope_error.default,
-  TimeoutError: () => import_timeout_error.default,
-  UniqueConstraintError: () => import_unique_constraint_error.default,
-  UnknownConstraintError: () => import_unknown_constraint_error.default,
-  ValidationError: () => import_validation_error.default,
-  ValidationErrorItem: () => import_validation_error.ValidationErrorItem,
-  ValidationErrorItemOrigin: () => import_validation_error.ValidationErrorItemOrigin,
-  ValidationErrorItemType: () => import_validation_error.ValidationErrorItemType
-});
-var import_base_error = __toModule(require("./base-error"));
-var import_database_error = __toModule(require("./database-error"));
-var import_aggregate_error = __toModule(require("./aggregate-error"));
-var import_association_error = __toModule(require("./association-error"));
-var import_bulk_record_error = __toModule(require("./bulk-record-error"));
-var import_connection_error = __toModule(require("./connection-error"));
-var import_eager_loading_error = __toModule(require("./eager-loading-error"));
-var import_empty_result_error = __toModule(require("./empty-result-error"));
-var import_instance_error = __toModule(require("./instance-error"));
-var import_optimistic_lock_error = __toModule(require("./optimistic-lock-error"));
-var import_query_error = __toModule(require("./query-error"));
-var import_sequelize_scope_error = __toModule(require("./sequelize-scope-error"));
-var import_validation_error = __toModule(require("./validation-error"));
-var import_access_denied_error = __toModule(require("./connection/access-denied-error"));
-var import_connection_acquire_timeout_error = __toModule(require("./connection/connection-acquire-timeout-error"));
-var import_connection_refused_error = __toModule(require("./connection/connection-refused-error"));
-var import_connection_timed_out_error = __toModule(require("./connection/connection-timed-out-error"));
-var import_host_not_found_error = __toModule(require("./connection/host-not-found-error"));
-var import_host_not_reachable_error = __toModule(require("./connection/host-not-reachable-error"));
-var import_invalid_connection_error = __toModule(require("./connection/invalid-connection-error"));
-var import_exclusion_constraint_error = __toModule(require("./database/exclusion-constraint-error"));
-var import_foreign_key_constraint_error = __toModule(require("./database/foreign-key-constraint-error"));
-var import_timeout_error = __toModule(require("./database/timeout-error"));
-var import_unknown_constraint_error = __toModule(require("./database/unknown-constraint-error"));
-var import_unique_constraint_error = __toModule(require("./validation/unique-constraint-error"));
-var import_async_queue = __toModule(require("../dialects/mssql/async-queue"));
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/errors/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/index.ts"],
-  "sourcesContent": ["export { default as BaseError } from './base-error';\n\nexport { default as DatabaseError } from './database-error';\nexport { default as AggregateError } from './aggregate-error';\nexport { default as AssociationError } from './association-error';\nexport { default as BulkRecordError } from './bulk-record-error';\nexport { default as ConnectionError } from './connection-error';\nexport { default as EagerLoadingError } from './eager-loading-error';\nexport { default as EmptyResultError } from './empty-result-error';\nexport { default as InstanceError } from './instance-error';\nexport { default as OptimisticLockError } from './optimistic-lock-error';\nexport { default as QueryError } from './query-error';\nexport { default as SequelizeScopeError } from './sequelize-scope-error';\nexport {\n  default as ValidationError,\n  ValidationErrorItem,\n  ValidationErrorItemOrigin,\n  ValidationErrorItemType\n} from './validation-error';\n\nexport { default as AccessDeniedError } from './connection/access-denied-error';\nexport { default as ConnectionAcquireTimeoutError } from './connection/connection-acquire-timeout-error';\nexport { default as ConnectionRefusedError } from './connection/connection-refused-error';\nexport { default as ConnectionTimedOutError } from './connection/connection-timed-out-error';\nexport { default as HostNotFoundError } from './connection/host-not-found-error';\nexport { default as HostNotReachableError } from './connection/host-not-reachable-error';\nexport { default as InvalidConnectionError } from './connection/invalid-connection-error';\n\nexport { default as ExclusionConstraintError } from './database/exclusion-constraint-error';\nexport { default as ForeignKeyConstraintError } from './database/foreign-key-constraint-error';\nexport { default as TimeoutError } from './database/timeout-error';\nexport { default as UnknownConstraintError } from './database/unknown-constraint-error';\n\nexport { default as UniqueConstraintError } from './validation/unique-constraint-error';\n\nexport { AsyncQueueError } from '../dialects/mssql/async-queue';\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAqC;AAErC,4BAAyC;AACzC,6BAA0C;AAC1C,+BAA4C;AAC5C,+BAA2C;AAC3C,8BAA2C;AAC3C,iCAA6C;AAC7C,gCAA4C;AAC5C,4BAAyC;AACzC,mCAA+C;AAC/C,yBAAsC;AACtC,mCAA+C;AAC/C,8BAKO;AAEP,iCAA6C;AAC7C,8CAAyD;AACzD,sCAAkD;AAClD,wCAAmD;AACnD,kCAA6C;AAC7C,sCAAiD;AACjD,sCAAkD;AAElD,wCAAoD;AACpD,0CAAqD;AACrD,2BAAwC;AACxC,sCAAkD;AAElD,qCAAiD;AAEjD,yBAAgC;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/instance-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/instance-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => instance_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class InstanceError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeInstanceError";
-  }
-}
-var instance_error_default = InstanceError;
-//# sourceMappingURL=instance-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/instance-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/instance-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/instance-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Thrown when a some problem occurred with Instance methods (see message for details)\n */\nclass InstanceError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeInstanceError';\n  }\n}\n\nexport default InstanceError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,4BAA4B,0BAAU;AAAA,EACpC,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,yBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/optimistic-lock-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/optimistic-lock-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => optimistic_lock_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class OptimisticLockError extends import_base_error.default {
-  constructor(options) {
-    options = options || {};
-    options.message = options.message || `Attempting to update a stale model instance: ${options.modelName}`;
-    super(options.message);
-    __publicField(this, "modelName");
-    __publicField(this, "values");
-    __publicField(this, "where");
-    this.name = "SequelizeOptimisticLockError";
-    this.modelName = options.modelName;
-    this.values = options.values;
-    this.where = options.where;
-  }
-}
-var optimistic_lock_error_default = OptimisticLockError;
-//# sourceMappingURL=optimistic-lock-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/optimistic-lock-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/optimistic-lock-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/optimistic-lock-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\ninterface OptimisticLockErrorOptions {\n  message?: string;\n\n  /** The name of the model on which the update was attempted */\n  modelName?: string;\n\n  /** The values of the attempted update */\n  values?: Record<string, unknown>;\n  where?: Record<string, unknown>;\n}\n\n/**\n * Thrown when attempting to update a stale model instance\n */\nclass OptimisticLockError extends BaseError {\n  modelName: string | undefined;\n  values: Record<string, unknown> | undefined;\n  where: Record<string, unknown> | undefined;\n\n  constructor(options: OptimisticLockErrorOptions) {\n    options = options || {};\n    options.message =\n      options.message ||\n      `Attempting to update a stale model instance: ${options.modelName}`;\n\n    super(options.message);\n    this.name = 'SequelizeOptimisticLockError';\n    this.modelName = options.modelName;\n    this.values = options.values;\n    this.where = options.where;\n  }\n}\n\nexport default OptimisticLockError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAgBtB,kCAAkC,0BAAU;AAAA,EAK1C,YAAY,SAAqC;AAC/C,cAAU,WAAW;AACrB,YAAQ,UACN,QAAQ,WACR,gDAAgD,QAAQ;AAE1D,UAAM,QAAQ;AAVhB;AACA;AACA;AASE,SAAK,OAAO;AACZ,SAAK,YAAY,QAAQ;AACzB,SAAK,SAAS,QAAQ;AACtB,SAAK,QAAQ,QAAQ;AAAA;AAAA;AAIzB,IAAO,gCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/query-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/query-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => query_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class QueryError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeQueryError";
-  }
-}
-var query_error_default = QueryError;
-//# sourceMappingURL=query-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/query-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/query-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/query-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Thrown when a query is passed invalid options (see message for details)\n */\nclass QueryError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeQueryError';\n  }\n}\n\nexport default QueryError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,yBAAyB,0BAAU;AAAA,EACjC,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,sBAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/sequelize-scope-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/sequelize-scope-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  default: () => sequelize_scope_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-class SequelizeScopeError extends import_base_error.default {
-  constructor(message) {
-    super(message);
-    this.name = "SequelizeScopeError";
-  }
-}
-var sequelize_scope_error_default = SequelizeScopeError;
-//# sourceMappingURL=sequelize-scope-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/sequelize-scope-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/sequelize-scope-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/sequelize-scope-error.ts"],
-  "sourcesContent": ["import BaseError from './base-error';\n\n/**\n * Scope Error. Thrown when the sequelize cannot query the specified scope.\n */\nclass SequelizeScopeError extends BaseError {\n  constructor(message: string) {\n    super(message);\n    this.name = 'SequelizeScopeError';\n  }\n}\n\nexport default SequelizeScopeError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,wBAAsB;AAKtB,kCAAkC,0BAAU;AAAA,EAC1C,YAAY,SAAiB;AAC3B,UAAM;AACN,SAAK,OAAO;AAAA;AAAA;AAIhB,IAAO,gCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/validation-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/validation-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  ValidationErrorItem: () => ValidationErrorItem,
-  ValidationErrorItemOrigin: () => ValidationErrorItemOrigin,
-  ValidationErrorItemType: () => ValidationErrorItemType,
-  default: () => validation_error_default
-});
-var import_base_error = __toModule(require("./base-error"));
-var ValidationErrorItemType = /* @__PURE__ */ ((ValidationErrorItemType2) => {
-  ValidationErrorItemType2["notnull violation"] = "CORE";
-  ValidationErrorItemType2["string violation"] = "CORE";
-  ValidationErrorItemType2["unique violation"] = "DB";
-  ValidationErrorItemType2["validation error"] = "FUNCTION";
-  return ValidationErrorItemType2;
-})(ValidationErrorItemType || {});
-var ValidationErrorItemOrigin = /* @__PURE__ */ ((ValidationErrorItemOrigin2) => {
-  ValidationErrorItemOrigin2["CORE"] = "CORE";
-  ValidationErrorItemOrigin2["DB"] = "DB";
-  ValidationErrorItemOrigin2["FUNCTION"] = "FUNCTION";
-  return ValidationErrorItemOrigin2;
-})(ValidationErrorItemOrigin || {});
-class ValidationErrorItem {
-  constructor(message, type, path, value, instance, validatorKey, fnName, fnArgs) {
-    __publicField(this, "message");
-    __publicField(this, "type");
-    __publicField(this, "path");
-    __publicField(this, "value");
-    __publicField(this, "origin");
-    __publicField(this, "instance");
-    __publicField(this, "validatorKey");
-    __publicField(this, "validatorName");
-    __publicField(this, "validatorArgs");
-    this.message = message || "";
-    this.type = null;
-    this.path = path || null;
-    this.value = value !== void 0 ? value : null;
-    this.origin = null;
-    this.instance = instance || null;
-    this.validatorKey = validatorKey || null;
-    this.validatorName = fnName || null;
-    this.validatorArgs = fnArgs || [];
-    if (type) {
-      if (this.isValidationErrorItemOrigin(type)) {
-        this.origin = type;
-      } else {
-        const lowercaseType = this.normalizeString(type);
-        const realType = ValidationErrorItemType[lowercaseType];
-        if (realType && ValidationErrorItemOrigin[realType]) {
-          this.origin = realType;
-          this.type = type;
-        }
-      }
-    }
-  }
-  isValidationErrorItemOrigin(origin) {
-    return ValidationErrorItemOrigin[origin] !== void 0;
-  }
-  normalizeString(str) {
-    return str.toLowerCase().trim();
-  }
-  getValidatorKey(useTypeAsNS, NSSeparator) {
-    const useTANS = useTypeAsNS === void 0 || !!useTypeAsNS;
-    const NSSep = NSSeparator === void 0 ? "." : NSSeparator;
-    const type = this.origin;
-    const key = this.validatorKey || this.validatorName;
-    const useNS = useTANS && type && ValidationErrorItemOrigin[type];
-    if (useNS && (typeof NSSep !== "string" || !NSSep.length)) {
-      throw new Error("Invalid namespace separator given, must be a non-empty string");
-    }
-    if (!(typeof key === "string" && key.length)) {
-      return "";
-    }
-    return (useNS ? [this.origin, key].join(NSSep) : key).toLowerCase().trim();
-  }
-}
-__publicField(ValidationErrorItem, "TypeStringMap", ValidationErrorItemType);
-__publicField(ValidationErrorItem, "Origins", ValidationErrorItemOrigin);
-class ValidationError extends import_base_error.default {
-  constructor(message, errors, options = {}) {
-    super(message);
-    __publicField(this, "errors");
-    this.name = "SequelizeValidationError";
-    this.message = "Validation Error";
-    this.errors = errors || [];
-    if (message) {
-      this.message = message;
-    } else if (this.errors.length > 0 && this.errors[0].message) {
-      this.message = this.errors.map((err) => `${err.type || err.origin}: ${err.message}`).join(",\n");
-    }
-    if (options.stack) {
-      this.stack = options.stack;
-    }
-  }
-  get(path) {
-    return this.errors.reduce((reduced, error) => {
-      if (error.path === path) {
-        reduced.push(error);
-      }
-      return reduced;
-    }, []);
-  }
-}
-var validation_error_default = ValidationError;
-//# sourceMappingURL=validation-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/validation-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/validation-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/errors/validation-error.ts"],
-  "sourcesContent": ["import type { Model } from '..';\nimport type { ErrorOptions } from './base-error';\nimport BaseError from './base-error';\n\n/**\n * An enum that is used internally by the `ValidationErrorItem` class\n * that maps current `type` strings (as given to ValidationErrorItem.constructor()) to\n * our new `origin` values.\n */\nexport enum ValidationErrorItemType {\n  'notnull violation' = 'CORE',\n  'string violation' = 'CORE',\n  'unique violation' = 'DB',\n  'validation error' = 'FUNCTION',\n}\n\n/**\n * An enum that defines valid ValidationErrorItem `origin` values\n */\nexport enum ValidationErrorItemOrigin {\n  /**\n   * specifies errors that originate from the sequelize \"core\"\n   */\n  CORE = 'CORE',\n\n  /**\n   * specifies validation errors that originate from the storage engine\n   */\n  DB = 'DB',\n\n  /**\n   * specifies validation errors that originate from validator functions (both built-in and custom) defined for a given attribute\n   */\n  FUNCTION = 'FUNCTION',\n}\n\n/**\n * Validation Error Item\n * Instances of this class are included in the `ValidationError.errors` property.\n */\nexport class ValidationErrorItem {\n  /**\n   * @deprecated Will be removed in v7\n   */\n  static TypeStringMap = ValidationErrorItemType;\n\n  /**\n   * @deprecated Will be removed in v7\n   */\n  static Origins = ValidationErrorItemOrigin;\n\n  /**\n   * An error message\n   */\n  readonly message: string;\n\n  /**\n   * The type/origin of the validation error\n   */\n  readonly type: keyof typeof ValidationErrorItemType | null;\n\n  /**\n   * The field that triggered the validation error\n   */\n  readonly path: string | null;\n\n  /**\n   * The value that generated the error\n   */\n  readonly value: string | null;\n\n  readonly origin: keyof typeof ValidationErrorItemOrigin | null;\n\n  /**\n   * The DAO instance that caused the validation error\n   */\n  readonly instance: Model | null;\n\n  /**\n   * A validation \"key\", used for identification\n   */\n  readonly validatorKey: string | null;\n\n  /**\n   * Property name of the BUILT-IN validator function that caused the validation error (e.g. \"in\" or \"len\"), if applicable\n   */\n  readonly validatorName: string | null;\n\n  /**\n   * Parameters used with the BUILT-IN validator function, if applicable\n   */\n  readonly validatorArgs: unknown[];\n\n  /**\n   * Creates a new ValidationError item. Instances of this class are included in the `ValidationError.errors` property.\n   *\n   * @param message An error message\n   * @param type The type/origin of the validation error\n   * @param path The field that triggered the validation error\n   * @param value The value that generated the error\n   * @param instance the DAO instance that caused the validation error\n   * @param validatorKey a validation \"key\", used for identification\n   * @param fnName property name of the BUILT-IN validator function that caused the validation error (e.g. \"in\" or \"len\"), if applicable\n   * @param fnArgs parameters used with the BUILT-IN validator function, if applicable\n   */\n  constructor(\n    message: string,\n    type:\n      | keyof typeof ValidationErrorItemType\n      | keyof typeof ValidationErrorItemOrigin,\n    path: string,\n    value: string,\n    instance: Model,\n    validatorKey: string,\n    fnName: string,\n    fnArgs: unknown[]\n  ) {\n    this.message = message || '';\n    this.type = null;\n    this.path = path || null;\n\n    this.value = value !== undefined ? value : null;\n\n    this.origin = null;\n\n    this.instance = instance || null;\n\n    this.validatorKey = validatorKey || null;\n\n    this.validatorName = fnName || null;\n\n    this.validatorArgs = fnArgs || [];\n\n    if (type) {\n      if (this.isValidationErrorItemOrigin(type)) {\n        this.origin = type;\n      } else {\n        const lowercaseType = this.normalizeString(type);\n        const realType = ValidationErrorItemType[lowercaseType];\n\n        if (realType && ValidationErrorItemOrigin[realType]) {\n          this.origin = realType;\n          this.type = type;\n        }\n      }\n    }\n\n    // This doesn't need captureStackTrace because it's not a subclass of Error\n  }\n\n  private isValidationErrorItemOrigin(\n    origin:\n      | keyof typeof ValidationErrorItemOrigin\n      | keyof typeof ValidationErrorItemType\n  ): origin is keyof typeof ValidationErrorItemOrigin {\n    return (\n      ValidationErrorItemOrigin[\n        origin as keyof typeof ValidationErrorItemOrigin\n      ] !== undefined\n    );\n  }\n\n  private normalizeString<T extends string>(str: T): T {\n    return str.toLowerCase().trim() as T;\n  }\n\n  /**\n   * return a lowercase, trimmed string \"key\" that identifies the validator.\n   *\n   * Note: the string will be empty if the instance has neither a valid `validatorKey` property nor a valid `validatorName` property\n   *\n   * @param useTypeAsNS controls whether the returned value is \"namespace\",\n   *                    this parameter is ignored if the validator's `type` is not one of ValidationErrorItem.Origins\n   * @param NSSeparator a separator string for concatenating the namespace, must be not be empty,\n   *                    defaults to \".\" (fullstop). only used and validated if useTypeAsNS is TRUE.\n   * @throws {Error}    thrown if NSSeparator is found to be invalid.\n   */\n  getValidatorKey(useTypeAsNS: boolean, NSSeparator: string): string {\n    const useTANS = useTypeAsNS === undefined || !!useTypeAsNS;\n    const NSSep = NSSeparator === undefined ? '.' : NSSeparator;\n\n    const type = this.origin;\n    const key = this.validatorKey || this.validatorName;\n    const useNS = useTANS && type && ValidationErrorItemOrigin[type];\n\n    if (useNS && (typeof NSSep !== 'string' || !NSSep.length)) {\n      throw new Error('Invalid namespace separator given, must be a non-empty string');\n    }\n\n    if (!(typeof key === 'string' && key.length)) {\n      return '';\n    }\n\n    return (useNS ? [this.origin, key].join(NSSep) : key).toLowerCase().trim();\n  }\n}\n\n/**\n * Validation Error. Thrown when the sequelize validation has failed. The error contains an `errors` property,\n * which is an array with 1 or more ValidationErrorItems, one for each validation that failed.\n *\n * @param message Error message\n * @param errors Array of ValidationErrorItem objects describing the validation errors\n */\nclass ValidationError extends BaseError {\n  /** Array of ValidationErrorItem objects describing the validation errors */\n  readonly errors: ValidationErrorItem[];\n\n  constructor(\n    message: string,\n    errors: ValidationErrorItem[],\n    options: ErrorOptions = {}\n  ) {\n    super(message);\n    this.name = 'SequelizeValidationError';\n    this.message = 'Validation Error';\n    this.errors = errors || [];\n\n    // Use provided error message if available...\n    if (message) {\n      this.message = message;\n\n      // ... otherwise create a concatenated message out of existing errors.\n    } else if (this.errors.length > 0 && this.errors[0].message) {\n      this.message = this.errors\n        .map(\n          (err: ValidationErrorItem) =>\n            `${err.type || err.origin}: ${err.message}`\n        )\n        .join(',\\n');\n    }\n\n    // Allow overriding the stack if the original stacktrace is uninformative\n    if (options.stack) {\n      this.stack = options.stack;\n    }\n  }\n\n  /**\n   * Gets all validation error items for the path / field specified.\n   *\n   * @param {string} path The path to be checked for error items\n   *\n   * @returns {Array<ValidationErrorItem>} Validation error items for the specified path\n   */\n  get(path: string): ValidationErrorItem[] {\n    return this.errors.reduce<ValidationErrorItem[]>((reduced, error) => {\n      if (error.path === path) {\n        reduced.push(error);\n      }\n      return reduced;\n    }, []);\n  }\n}\n\nexport default ValidationError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,wBAAsB;AAOf,IAAK,0BAAL,kBAAK,6BAAL;AACL,kDAAsB;AACtB,iDAAqB;AACrB,iDAAqB;AACrB,iDAAqB;AAJX;AAAA;AAUL,IAAK,4BAAL,kBAAK,+BAAL;AAIL,uCAAO;AAKP,qCAAK;AAKL,2CAAW;AAdD;AAAA;AAqBL,0BAA0B;AAAA,EAiE/B,YACE,SACA,MAGA,MACA,OACA,UACA,cACA,QACA,QACA;AA9DO;AAKA;AAKA;AAKA;AAEA;AAKA;AAKA;AAKA;AAKA;AA0BP,SAAK,UAAU,WAAW;AAC1B,SAAK,OAAO;AACZ,SAAK,OAAO,QAAQ;AAEpB,SAAK,QAAQ,UAAU,SAAY,QAAQ;AAE3C,SAAK,SAAS;AAEd,SAAK,WAAW,YAAY;AAE5B,SAAK,eAAe,gBAAgB;AAEpC,SAAK,gBAAgB,UAAU;AAE/B,SAAK,gBAAgB,UAAU;AAE/B,QAAI,MAAM;AACR,UAAI,KAAK,4BAA4B,OAAO;AAC1C,aAAK,SAAS;AAAA,aACT;AACL,cAAM,gBAAgB,KAAK,gBAAgB;AAC3C,cAAM,WAAW,wBAAwB;AAEzC,YAAI,YAAY,0BAA0B,WAAW;AACnD,eAAK,SAAS;AACd,eAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAQZ,4BACN,QAGkD;AAClD,WACE,0BACE,YACI;AAAA;AAAA,EAIF,gBAAkC,KAAW;AACnD,WAAO,IAAI,cAAc;AAAA;AAAA,EAc3B,gBAAgB,aAAsB,aAA6B;AACjE,UAAM,UAAU,gBAAgB,UAAa,CAAC,CAAC;AAC/C,UAAM,QAAQ,gBAAgB,SAAY,MAAM;AAEhD,UAAM,OAAO,KAAK;AAClB,UAAM,MAAM,KAAK,gBAAgB,KAAK;AACtC,UAAM,QAAQ,WAAW,QAAQ,0BAA0B;AAE3D,QAAI,SAAU,QAAO,UAAU,YAAY,CAAC,MAAM,SAAS;AACzD,YAAM,IAAI,MAAM;AAAA;AAGlB,QAAI,CAAE,QAAO,QAAQ,YAAY,IAAI,SAAS;AAC5C,aAAO;AAAA;AAGT,WAAQ,SAAQ,CAAC,KAAK,QAAQ,KAAK,KAAK,SAAS,KAAK,cAAc;AAAA;AAAA;AArJ/D,cAJF,qBAIE,iBAAgB;AAKhB,cATF,qBASE,WAAU;AA2JnB,8BAA8B,0BAAU;AAAA,EAItC,YACE,SACA,QACA,UAAwB,IACxB;AACA,UAAM;AAPC;AAQP,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,SAAS,UAAU;AAGxB,QAAI,SAAS;AACX,WAAK,UAAU;AAAA,eAGN,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,GAAG,SAAS;AAC3D,WAAK,UAAU,KAAK,OACjB,IACC,CAAC,QACC,GAAG,IAAI,QAAQ,IAAI,WAAW,IAAI,WAErC,KAAK;AAAA;AAIV,QAAI,QAAQ,OAAO;AACjB,WAAK,QAAQ,QAAQ;AAAA;AAAA;AAAA,EAWzB,IAAI,MAAqC;AACvC,WAAO,KAAK,OAAO,OAA8B,CAAC,SAAS,UAAU;AACnE,UAAI,MAAM,SAAS,MAAM;AACvB,gBAAQ,KAAK;AAAA;AAEf,aAAO;AAAA,OACN;AAAA;AAAA;AAIP,IAAO,2BAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/errors/validation/unique-constraint-error.js
===================================================================
--- backend/node_modules/sequelize/lib/errors/validation/unique-constraint-error.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,53 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  default: () => unique_constraint_error_default
-});
-var import_validation_error = __toModule(require("../validation-error"));
-class UniqueConstraintError extends import_validation_error.default {
-  constructor(options) {
-    var _a, _b, _c;
-    options = options != null ? options : {};
-    options.parent = (_a = options.parent) != null ? _a : { sql: "", name: "", message: "" };
-    options.message = options.message || options.parent.message || "Validation Error";
-    options.errors = (_b = options.errors) != null ? _b : [];
-    super(options.message, options.errors, { stack: options.stack });
-    __publicField(this, "parent");
-    __publicField(this, "original");
-    __publicField(this, "fields");
-    __publicField(this, "sql");
-    this.name = "SequelizeUniqueConstraintError";
-    this.fields = (_c = options.fields) != null ? _c : {};
-    this.parent = options.parent;
-    this.original = options.parent;
-    this.sql = options.parent.sql;
-  }
-}
-var unique_constraint_error_default = UniqueConstraintError;
-//# sourceMappingURL=unique-constraint-error.js.map
Index: ckend/node_modules/sequelize/lib/errors/validation/unique-constraint-error.js.map
===================================================================
--- backend/node_modules/sequelize/lib/errors/validation/unique-constraint-error.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../../src/errors/validation/unique-constraint-error.ts"],
-  "sourcesContent": ["import { CommonErrorProperties, ErrorOptions } from '../base-error';\nimport ValidationError, { ValidationErrorItem } from '../validation-error';\n\ninterface UniqueConstraintErrorParent\n  extends Error,\n    Pick<CommonErrorProperties, 'sql'> {}\n\nexport interface UniqueConstraintErrorOptions extends ErrorOptions {\n  parent?: UniqueConstraintErrorParent;\n  original?: UniqueConstraintErrorParent;\n  errors?: ValidationErrorItem[];\n  fields?: Record<string, unknown>;\n  message?: string;\n}\n\n/**\n * Thrown when a unique constraint is violated in the database\n */\nclass UniqueConstraintError extends ValidationError implements CommonErrorProperties {\n  readonly parent: UniqueConstraintErrorParent;\n  readonly original: UniqueConstraintErrorParent;\n  readonly fields: Record<string, unknown>;\n  readonly sql: string;\n\n  constructor(options: UniqueConstraintErrorOptions) {\n    options = options ?? {};\n    options.parent = options.parent ?? { sql: '', name: '', message: '' };\n    options.message =\n      options.message || options.parent.message || 'Validation Error';\n    options.errors = options.errors ?? [];\n    super(options.message, options.errors, { stack: options.stack });\n\n    this.name = 'SequelizeUniqueConstraintError';\n    this.fields = options.fields ?? {};\n    this.parent = options.parent;\n    this.original = options.parent;\n    this.sql = options.parent.sql;\n  }\n}\n\nexport default UniqueConstraintError;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AACA,8BAAqD;AAiBrD,oCAAoC,gCAAiD;AAAA,EAMnF,YAAY,SAAuC;AAxBrD;AAyBI,cAAU,4BAAW;AACrB,YAAQ,SAAS,cAAQ,WAAR,YAAkB,EAAE,KAAK,IAAI,MAAM,IAAI,SAAS;AACjE,YAAQ,UACN,QAAQ,WAAW,QAAQ,OAAO,WAAW;AAC/C,YAAQ,SAAS,cAAQ,WAAR,YAAkB;AACnC,UAAM,QAAQ,SAAS,QAAQ,QAAQ,EAAE,OAAO,QAAQ;AAXjD;AACA;AACA;AACA;AAUP,SAAK,OAAO;AACZ,SAAK,SAAS,cAAQ,WAAR,YAAkB;AAChC,SAAK,SAAS,QAAQ;AACtB,SAAK,WAAW,QAAQ;AACxB,SAAK,MAAM,QAAQ,OAAO;AAAA;AAAA;AAI9B,IAAO,kCAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/generic/falsy.js
===================================================================
--- backend/node_modules/sequelize/lib/generic/falsy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-__markAsModule(exports);
-//# sourceMappingURL=falsy.js.map
Index: ckend/node_modules/sequelize/lib/generic/falsy.js.map
===================================================================
--- backend/node_modules/sequelize/lib/generic/falsy.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/generic/falsy.ts"],
-  "sourcesContent": ["export type Falsy = false | 0 | -0 | 0n | '' | null | undefined | void;\n"],
-  "mappings": ";;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/generic/sql-fragment.js
===================================================================
--- backend/node_modules/sequelize/lib/generic/sql-fragment.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-__markAsModule(exports);
-//# sourceMappingURL=sql-fragment.js.map
Index: ckend/node_modules/sequelize/lib/generic/sql-fragment.js.map
===================================================================
--- backend/node_modules/sequelize/lib/generic/sql-fragment.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/generic/sql-fragment.ts"],
-  "sourcesContent": ["import { Falsy } from './falsy';\n\nexport type SQLFragment = string | Falsy | SQLFragment[];\nexport type TruthySQLFragment = string | SQLFragment[];\n"],
-  "mappings": ";;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/hooks.js
===================================================================
--- backend/node_modules/sequelize/lib/hooks.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,150 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const { logger } = require("./utils/logger");
-const debug = logger.debugContext("hooks");
-const hookTypes = {
-  beforeValidate: { params: 2 },
-  afterValidate: { params: 2 },
-  validationFailed: { params: 3 },
-  beforeCreate: { params: 2 },
-  afterCreate: { params: 2 },
-  beforeDestroy: { params: 2 },
-  afterDestroy: { params: 2 },
-  beforeRestore: { params: 2 },
-  afterRestore: { params: 2 },
-  beforeUpdate: { params: 2 },
-  afterUpdate: { params: 2 },
-  beforeSave: { params: 2, proxies: ["beforeUpdate", "beforeCreate"] },
-  afterSave: { params: 2, proxies: ["afterUpdate", "afterCreate"] },
-  beforeUpsert: { params: 2 },
-  afterUpsert: { params: 2 },
-  beforeBulkCreate: { params: 2 },
-  afterBulkCreate: { params: 2 },
-  beforeBulkDestroy: { params: 1 },
-  afterBulkDestroy: { params: 1 },
-  beforeBulkRestore: { params: 1 },
-  afterBulkRestore: { params: 1 },
-  beforeBulkUpdate: { params: 1 },
-  afterBulkUpdate: { params: 1 },
-  beforeFind: { params: 1 },
-  beforeFindAfterExpandIncludeAll: { params: 1 },
-  beforeFindAfterOptions: { params: 1 },
-  afterFind: { params: 2 },
-  beforeCount: { params: 1 },
-  beforeDefine: { params: 2, sync: true, noModel: true },
-  afterDefine: { params: 1, sync: true, noModel: true },
-  beforeInit: { params: 2, sync: true, noModel: true },
-  afterInit: { params: 1, sync: true, noModel: true },
-  beforeAssociate: { params: 2, sync: true },
-  afterAssociate: { params: 2, sync: true },
-  beforeConnect: { params: 1, noModel: true },
-  afterConnect: { params: 2, noModel: true },
-  beforeDisconnect: { params: 1, noModel: true },
-  afterDisconnect: { params: 1, noModel: true },
-  beforePoolAcquire: { params: 1, noModel: true },
-  afterPoolAcquire: { params: 2, noModel: true },
-  beforeSync: { params: 1 },
-  afterSync: { params: 1 },
-  beforeBulkSync: { params: 1 },
-  afterBulkSync: { params: 1 },
-  beforeQuery: { params: 2 },
-  afterQuery: { params: 2 }
-};
-exports.hooks = hookTypes;
-const getProxiedHooks = (hookType) => hookTypes[hookType].proxies ? hookTypes[hookType].proxies.concat(hookType) : [hookType];
-function getHooks(hooked, hookType) {
-  return (hooked.options.hooks || {})[hookType] || [];
-}
-const Hooks = {
-  _setupHooks(hooks) {
-    this.options.hooks = {};
-    _.map(hooks || {}, (hooksArray, hookName) => {
-      if (!Array.isArray(hooksArray))
-        hooksArray = [hooksArray];
-      hooksArray.forEach((hookFn) => this.addHook(hookName, hookFn));
-    });
-  },
-  async runHooks(hooks, ...hookArgs) {
-    if (!hooks)
-      throw new Error("runHooks requires at least 1 argument");
-    let hookType;
-    if (typeof hooks === "string") {
-      hookType = hooks;
-      hooks = getHooks(this, hookType);
-      if (this.sequelize) {
-        hooks = hooks.concat(getHooks(this.sequelize, hookType));
-      }
-    }
-    if (!Array.isArray(hooks)) {
-      hooks = [hooks];
-    }
-    if (hookTypes[hookType] && hookTypes[hookType].sync) {
-      for (let hook of hooks) {
-        if (typeof hook === "object") {
-          hook = hook.fn;
-        }
-        debug(`running hook(sync) ${hookType}`);
-        hook.apply(this, hookArgs);
-      }
-      return;
-    }
-    for (let hook of hooks) {
-      if (typeof hook === "object") {
-        hook = hook.fn;
-      }
-      debug(`running hook ${hookType}`);
-      await hook.apply(this, hookArgs);
-    }
-  },
-  addHook(hookType, name, fn) {
-    if (typeof name === "function") {
-      fn = name;
-      name = null;
-    }
-    debug(`adding hook ${hookType}`);
-    hookType = getProxiedHooks(hookType);
-    hookType.forEach((type) => {
-      const hooks = getHooks(this, type);
-      hooks.push(name ? { name, fn } : fn);
-      this.options.hooks[type] = hooks;
-    });
-    return this;
-  },
-  removeHook(hookType, name) {
-    const isReference = typeof name === "function" ? true : false;
-    if (!this.hasHook(hookType)) {
-      return this;
-    }
-    debug(`removing hook ${hookType}`);
-    hookType = getProxiedHooks(hookType);
-    for (const type of hookType) {
-      this.options.hooks[type] = this.options.hooks[type].filter((hook) => {
-        if (isReference && typeof hook === "function") {
-          return hook !== name;
-        }
-        if (!isReference && typeof hook === "object") {
-          return hook.name !== name;
-        }
-        return true;
-      });
-    }
-    return this;
-  },
-  hasHook(hookType) {
-    return this.options.hooks[hookType] && !!this.options.hooks[hookType].length;
-  }
-};
-Hooks.hasHooks = Hooks.hasHook;
-function applyTo(target, isModel = false) {
-  _.mixin(target, Hooks);
-  for (const hook of Object.keys(hookTypes)) {
-    if (isModel && hookTypes[hook].noModel) {
-      continue;
-    }
-    target[hook] = function(name, callback) {
-      return this.addHook(hook, name, callback);
-    };
-  }
-}
-exports.applyTo = applyTo;
-//# sourceMappingURL=hooks.js.map
Index: ckend/node_modules/sequelize/lib/hooks.js.map
===================================================================
--- backend/node_modules/sequelize/lib/hooks.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/hooks.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst { logger } = require('./utils/logger');\nconst debug = logger.debugContext('hooks');\n\nconst hookTypes = {\n  beforeValidate: { params: 2 },\n  afterValidate: { params: 2 },\n  validationFailed: { params: 3 },\n  beforeCreate: { params: 2 },\n  afterCreate: { params: 2 },\n  beforeDestroy: { params: 2 },\n  afterDestroy: { params: 2 },\n  beforeRestore: { params: 2 },\n  afterRestore: { params: 2 },\n  beforeUpdate: { params: 2 },\n  afterUpdate: { params: 2 },\n  beforeSave: { params: 2, proxies: ['beforeUpdate', 'beforeCreate'] },\n  afterSave: { params: 2, proxies: ['afterUpdate', 'afterCreate'] },\n  beforeUpsert: { params: 2 },\n  afterUpsert: { params: 2 },\n  beforeBulkCreate: { params: 2 },\n  afterBulkCreate: { params: 2 },\n  beforeBulkDestroy: { params: 1 },\n  afterBulkDestroy: { params: 1 },\n  beforeBulkRestore: { params: 1 },\n  afterBulkRestore: { params: 1 },\n  beforeBulkUpdate: { params: 1 },\n  afterBulkUpdate: { params: 1 },\n  beforeFind: { params: 1 },\n  beforeFindAfterExpandIncludeAll: { params: 1 },\n  beforeFindAfterOptions: { params: 1 },\n  afterFind: { params: 2 },\n  beforeCount: { params: 1 },\n  beforeDefine: { params: 2, sync: true, noModel: true },\n  afterDefine: { params: 1, sync: true, noModel: true },\n  beforeInit: { params: 2, sync: true, noModel: true },\n  afterInit: { params: 1, sync: true, noModel: true },\n  beforeAssociate: { params: 2, sync: true },\n  afterAssociate: { params: 2, sync: true },\n  beforeConnect: { params: 1, noModel: true },\n  afterConnect: { params: 2, noModel: true },\n  beforeDisconnect: { params: 1, noModel: true },\n  afterDisconnect: { params: 1, noModel: true },\n  beforePoolAcquire: { params: 1, noModel: true },\n  afterPoolAcquire: { params: 2, noModel: true },\n  beforeSync: { params: 1 },\n  afterSync: { params: 1 },\n  beforeBulkSync: { params: 1 },\n  afterBulkSync: { params: 1 },\n  beforeQuery: { params: 2 },\n  afterQuery: { params: 2 }\n};\nexports.hooks = hookTypes;\n\n\n/**\n * get array of current hook and its proxies combined\n *\n * @param {string} hookType any hook type @see {@link hookTypes}\n *\n * @private\n */\nconst getProxiedHooks = hookType =>\n  hookTypes[hookType].proxies\n    ? hookTypes[hookType].proxies.concat(hookType)\n    : [hookType]\n;\n\nfunction getHooks(hooked, hookType) {\n  return (hooked.options.hooks || {})[hookType] || [];\n}\n\nconst Hooks = {\n  /**\n   * Process user supplied hooks definition\n   *\n   * @param {object} hooks hooks definition\n   *\n   * @private\n   * @memberof Sequelize\n   * @memberof Sequelize.Model\n   */\n  _setupHooks(hooks) {\n    this.options.hooks = {};\n    _.map(hooks || {}, (hooksArray, hookName) => {\n      if (!Array.isArray(hooksArray)) hooksArray = [hooksArray];\n      hooksArray.forEach(hookFn => this.addHook(hookName, hookFn));\n    });\n  },\n\n  async runHooks(hooks, ...hookArgs) {\n    if (!hooks) throw new Error('runHooks requires at least 1 argument');\n\n    let hookType;\n\n    if (typeof hooks === 'string') {\n      hookType = hooks;\n      hooks = getHooks(this, hookType);\n\n      if (this.sequelize) {\n        hooks = hooks.concat(getHooks(this.sequelize, hookType));\n      }\n    }\n\n    if (!Array.isArray(hooks)) {\n      hooks = [hooks];\n    }\n\n    // synchronous hooks\n    if (hookTypes[hookType] && hookTypes[hookType].sync) {\n      for (let hook of hooks) {\n        if (typeof hook === 'object') {\n          hook = hook.fn;\n        }\n\n        debug(`running hook(sync) ${hookType}`);\n        hook.apply(this, hookArgs);\n      }\n      return;\n    }\n\n    // asynchronous hooks (default)\n    for (let hook of hooks) {\n      if (typeof hook === 'object') {\n        hook = hook.fn;\n      }\n\n      debug(`running hook ${hookType}`);\n      await hook.apply(this, hookArgs);\n    }\n  },\n\n  /**\n   * Add a hook to the model\n   *\n   * @param {string}          hookType hook name @see {@link hookTypes}\n   * @param {string|Function} [name] Provide a name for the hook function. It can be used to remove the hook later or to order hooks based on some sort of priority system in the future.\n   * @param {Function}        fn The hook function\n   *\n   * @memberof Sequelize\n   * @memberof Sequelize.Model\n   */\n  addHook(hookType, name, fn) {\n    if (typeof name === 'function') {\n      fn = name;\n      name = null;\n    }\n\n    debug(`adding hook ${hookType}`);\n    // check for proxies, add them too\n    hookType = getProxiedHooks(hookType);\n\n    hookType.forEach(type => {\n      const hooks = getHooks(this, type);\n      hooks.push(name ? { name, fn } : fn);\n      this.options.hooks[type] = hooks;\n    });\n\n    return this;\n  },\n\n  /**\n   * Remove hook from the model\n   *\n   * @param {string} hookType @see {@link hookTypes}\n   * @param {string|Function} name name of hook or function reference which was attached\n   *\n   * @memberof Sequelize\n   * @memberof Sequelize.Model\n   */\n  removeHook(hookType, name) {\n    const isReference = typeof name === 'function' ? true : false;\n\n    if (!this.hasHook(hookType)) {\n      return this;\n    }\n\n    debug(`removing hook ${hookType}`);\n\n    // check for proxies, add them too\n    hookType = getProxiedHooks(hookType);\n\n    for (const type of hookType) {\n      this.options.hooks[type] = this.options.hooks[type].filter(hook => {\n        if (isReference && typeof hook === 'function') {\n          return hook !== name; // check if same method\n        }\n        if (!isReference && typeof hook === 'object') {\n          return hook.name !== name;\n        }\n        return true;\n      });\n    }\n\n    return this;\n  },\n\n  /**\n   * Check whether the mode has any hooks of this type\n   *\n   * @param {string} hookType @see {@link hookTypes}\n   *\n   * @alias hasHooks\n   *\n   * @memberof Sequelize\n   * @memberof Sequelize.Model\n   */\n  hasHook(hookType) {\n    return this.options.hooks[hookType] && !!this.options.hooks[hookType].length;\n  }\n};\nHooks.hasHooks = Hooks.hasHook;\n\n\nfunction applyTo(target, isModel = false) {\n  _.mixin(target, Hooks);\n\n  for (const hook of Object.keys(hookTypes)) {\n    if (isModel && hookTypes[hook].noModel) {\n      continue;\n    }\n    target[hook] = function(name, callback) {\n      return this.addHook(hook, name, callback);\n    };\n  }\n}\nexports.applyTo = applyTo;\n\n/**\n * A hook that is run before validation\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n * @name beforeValidate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after validation\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n * @name afterValidate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run when validation fails\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options, error. Error is the\n * SequelizeValidationError. If the callback throws an error, it will replace the original validation error.\n * @name validationFailed\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before creating a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with attributes, options\n * @name beforeCreate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after creating a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with attributes, options\n * @name afterCreate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before creating or updating a single instance, It proxies `beforeCreate` and `beforeUpdate`\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with attributes, options\n * @name beforeSave\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before upserting\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with attributes, options\n * @name beforeUpsert\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after upserting\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with the result of upsert(), options\n * @name afterUpsert\n * @memberof Sequelize.Model\n */\n\n/**\n  * A hook that is run after creating or updating a single instance, It proxies `afterCreate` and `afterUpdate`\n *\n  * @param {string}   name\n  * @param {Function} fn   A callback function that is called with attributes, options\n  * @name afterSave\n  * @memberof Sequelize.Model\n  */\n\n/**\n * A hook that is run before destroying a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n *\n * @name beforeDestroy\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after destroying a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n *\n * @name afterDestroy\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before restoring a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n *\n * @name beforeRestore\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after restoring a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n *\n * @name afterRestore\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before updating a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n * @name beforeUpdate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after updating a single instance\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance, options\n * @name afterUpdate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before creating instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instances, options\n * @name beforeBulkCreate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after creating instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instances, options\n * @name afterBulkCreate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before destroying instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n *\n * @name beforeBulkDestroy\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after destroying instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n *\n * @name afterBulkDestroy\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before restoring instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n *\n * @name beforeBulkRestore\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after restoring instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n *\n * @name afterBulkRestore\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before updating instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name beforeBulkUpdate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after updating instances in bulk\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name afterBulkUpdate\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before a find (select) query\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name beforeFind\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before a find (select) query, after any { include: {all: ...} } options are expanded\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name beforeFindAfterExpandIncludeAll\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before a find (select) query, after all option parsing is complete\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name beforeFindAfterOptions\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run after a find (select) query\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with instance(s), options\n * @name afterFind\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before a count query\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options\n * @name beforeCount\n * @memberof Sequelize.Model\n */\n\n/**\n * A hook that is run before a define call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with attributes, options\n * @name beforeDefine\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after a define call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with factory\n * @name afterDefine\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run before Sequelize() call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with config, options\n * @name beforeInit\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after Sequelize() call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with sequelize\n * @name afterInit\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run before a connection is created\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with config passed to connection\n * @name beforeConnect\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after a connection is created\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with the connection object and the config passed to connection\n * @name afterConnect\n * @memberof Sequelize\n */\n\n/**\n *  A hook that is run before a connection to the pool\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with config passed to connection\n * @name beforePoolAcquire\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after a connection to the pool\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with the connection object and the config passed to connection\n * @name afterPoolAcquire\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run before a connection is disconnected\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with the connection object\n * @name beforeDisconnect\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after a connection is disconnected\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with the connection object\n * @name afterDisconnect\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run before Model.sync call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options passed to Model.sync\n * @name beforeSync\n * @memberof Sequelize\n */\n\n/**\n * A hook that is run after Model.sync call\n *\n * @param {string}   name\n * @param {Function} fn   A callback function that is called with options passed to Model.sync\n * @name afterSync\n * @memberof Sequelize\n */\n\n/**\n  * A hook that is run before sequelize.sync call\n *\n  * @param {string}   name\n  * @param {Function} fn   A callback function that is called with options passed to sequelize.sync\n  * @name beforeBulkSync\n  * @memberof Sequelize\n  */\n\n/**\n  * A hook that is run after sequelize.sync call\n *\n  * @param {string}   name\n  * @param {Function} fn   A callback function that is called with options passed to sequelize.sync\n  * @name afterBulkSync\n  * @memberof Sequelize\n  */\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/index-hints.js
===================================================================
--- backend/node_modules/sequelize/lib/index-hints.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-"use strict";
-const IndexHints = module.exports = {
-  USE: "USE",
-  FORCE: "FORCE",
-  IGNORE: "IGNORE"
-};
-//# sourceMappingURL=index-hints.js.map
Index: ckend/node_modules/sequelize/lib/index-hints.js.map
===================================================================
--- backend/node_modules/sequelize/lib/index-hints.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/index-hints.js"],
-  "sourcesContent": ["'use strict';\n\n/**\n * An enum of index hints to be used in mysql for querying with index hints\n *\n * @property USE\n * @property FORCE\n * @property IGNORE\n */\nconst IndexHints = module.exports = { // eslint-disable-line\n  USE: 'USE',\n  FORCE: 'FORCE',\n  IGNORE: 'IGNORE'\n};\n"],
-  "mappings": ";AASA,MAAM,aAAa,OAAO,UAAU;AAAA,EAClC,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/index.js
===================================================================
--- backend/node_modules/sequelize/lib/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-"use strict";
-module.exports = require("./sequelize");
-//# sourceMappingURL=index.js.map
Index: ckend/node_modules/sequelize/lib/index.js.map
===================================================================
--- backend/node_modules/sequelize/lib/index.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/index.js"],
-  "sourcesContent": ["'use strict';\n\n/**\n  * A Sequelize module that contains the sequelize entry point.\n  *\n  * @module sequelize\n  */\n\n/** Exports the sequelize entry point. */\nmodule.exports = require('./sequelize');\n"],
-  "mappings": ";AASA,OAAO,UAAU,QAAQ;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/index.mjs
===================================================================
--- backend/node_modules/sequelize/lib/index.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,125 +1,0 @@
-import Pkg from './index.js';
-
-export default Pkg;
-
-// export * from './lib/sequelize';
-export const Sequelize = Pkg.Sequelize;
-export const fn = Pkg.fn;
-export const col = Pkg.col;
-export const cast = Pkg.cast;
-export const literal = Pkg.literal;
-export const and = Pkg.and;
-export const or = Pkg.or;
-export const json = Pkg.json;
-export const where = Pkg.where;
-
-// export * from './lib/query-interface';
-export const QueryInterface = Pkg.QueryInterface;
-
-// export * from './lib/data-types';
-// 'DOUBLE PRECISION' is missing because its name is not a valid export identifier.
-export const ABSTRACT = Pkg.ABSTRACT;
-export const STRING = Pkg.STRING;
-export const CHAR = Pkg.CHAR;
-export const TEXT = Pkg.TEXT;
-export const NUMBER = Pkg.NUMBER;
-export const TINYINT = Pkg.TINYINT;
-export const SMALLINT = Pkg.SMALLINT;
-export const MEDIUMINT = Pkg.MEDIUMINT;
-export const INTEGER = Pkg.INTEGER;
-export const BIGINT = Pkg.BIGINT;
-export const FLOAT = Pkg.FLOAT;
-export const TIME = Pkg.TIME;
-export const DATE = Pkg.DATE;
-export const DATEONLY = Pkg.DATEONLY;
-export const BOOLEAN = Pkg.BOOLEAN;
-export const NOW = Pkg.NOW;
-export const BLOB = Pkg.BLOB;
-export const DECIMAL = Pkg.DECIMAL;
-export const NUMERIC = Pkg.NUMERIC;
-export const UUID = Pkg.UUID;
-export const UUIDV1 = Pkg.UUIDV1;
-export const UUIDV4 = Pkg.UUIDV4;
-export const HSTORE = Pkg.HSTORE;
-export const JSON = Pkg.JSON;
-export const JSONB = Pkg.JSONB;
-export const VIRTUAL = Pkg.VIRTUAL;
-export const ARRAY = Pkg.ARRAY;
-export const ENUM = Pkg.ENUM;
-export const RANGE = Pkg.RANGE;
-export const REAL = Pkg.REAL;
-export const DOUBLE = Pkg.DOUBLE;
-export const GEOMETRY = Pkg.GEOMETRY;
-export const GEOGRAPHY = Pkg.GEOGRAPHY;
-export const CIDR = Pkg.CIDR;
-export const INET = Pkg.INET;
-export const MACADDR = Pkg.MACADDR;
-export const CITEXT = Pkg.CITEXT;
-export const TSVECTOR = Pkg.TSVECTOR;
-
-// export * from './lib/model';
-export const Model = Pkg.Model;
-
-// export * from './lib/transaction';
-export const Transaction = Pkg.Transaction;
-
-// export * from './lib/associations/index';
-export const Association = Pkg.Association;
-export const BelongsTo = Pkg.BelongsTo;
-export const HasOne = Pkg.HasOne;
-export const HasMany = Pkg.HasMany;
-export const BelongsToMany = Pkg.BelongsToMany;
-
-// export * from './lib/errors';
-export const BaseError = Pkg.BaseError;
-
-export const AggregateError = Pkg.AggregateError;
-export const AsyncQueueError = Pkg.AsyncQueueError;
-export const AssociationError = Pkg.AssociationError;
-export const BulkRecordError = Pkg.BulkRecordError;
-export const ConnectionError = Pkg.ConnectionError;
-export const DatabaseError = Pkg.DatabaseError;
-export const EagerLoadingError = Pkg.EagerLoadingError;
-export const EmptyResultError = Pkg.EmptyResultError;
-export const InstanceError = Pkg.InstanceError;
-export const OptimisticLockError = Pkg.OptimisticLockError;
-export const QueryError = Pkg.QueryError;
-export const SequelizeScopeError = Pkg.SequelizeScopeError;
-export const ValidationError = Pkg.ValidationError;
-export const ValidationErrorItem = Pkg.ValidationErrorItem;
-
-export const AccessDeniedError = Pkg.AccessDeniedError;
-export const ConnectionAcquireTimeoutError = Pkg.ConnectionAcquireTimeoutError;
-export const ConnectionRefusedError = Pkg.ConnectionRefusedError;
-export const ConnectionTimedOutError = Pkg.ConnectionTimedOutError;
-export const HostNotFoundError = Pkg.HostNotFoundError;
-export const HostNotReachableError = Pkg.HostNotReachableError;
-export const InvalidConnectionError = Pkg.InvalidConnectionError;
-
-export const ExclusionConstraintError = Pkg.ExclusionConstraintError;
-export const ForeignKeyConstraintError = Pkg.ForeignKeyConstraintError;
-export const TimeoutError = Pkg.TimeoutError;
-export const UnknownConstraintError = Pkg.UnknownConstraintError;
-
-export const UniqueConstraintError = Pkg.UniqueConstraintError;
-
-// export { BaseError as Error } from './lib/errors';
-export const Error = Pkg.Error;
-
-// export { useInflection } from './lib/utils';
-export const useInflection = Pkg.useInflection;
-
-// export { Utils, QueryTypes, Op, TableHints, IndexHints, DataTypes, Deferrable };
-export const Utils = Pkg.Utils;
-export const QueryTypes = Pkg.QueryTypes;
-export const Op = Pkg.Op;
-export const TableHints = Pkg.TableHints;
-export const IndexHints = Pkg.IndexHints;
-export const DataTypes = Pkg.DataTypes;
-export const Deferrable = Pkg.Deferrable;
-
-// export { Validator as validator } from './lib/utils/validator-extras';
-export const Validator = Pkg.Validator;
-
-export const ValidationErrorItemOrigin = Pkg.ValidationErrorItemOrigin;
-export const ValidationErrorItemType = Pkg.ValidationErrorItemType;
Index: ckend/node_modules/sequelize/lib/instance-validator.js
===================================================================
--- backend/node_modules/sequelize/lib/instance-validator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,213 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const _ = require("lodash");
-const Utils = require("./utils");
-const sequelizeError = require("./errors");
-const DataTypes = require("./data-types");
-const BelongsTo = require("./associations/belongs-to");
-const validator = require("./utils/validator-extras").validator;
-const { promisify } = require("util");
-class InstanceValidator {
-  constructor(modelInstance, options) {
-    options = __spreadValues({
-      hooks: true
-    }, options);
-    if (options.fields && !options.skip) {
-      options.skip = _.difference(Object.keys(modelInstance.constructor.rawAttributes), options.fields);
-    } else {
-      options.skip = options.skip || [];
-    }
-    this.options = options;
-    this.modelInstance = modelInstance;
-    this.validator = validator;
-    this.errors = [];
-    this.inProgress = false;
-  }
-  async _validate() {
-    if (this.inProgress)
-      throw new Error("Validations already in progress.");
-    this.inProgress = true;
-    await Promise.all([
-      this._perAttributeValidators(),
-      this._customValidators()
-    ]);
-    if (this.errors.length) {
-      throw new sequelizeError.ValidationError(null, this.errors);
-    }
-  }
-  async validate() {
-    return await (this.options.hooks ? this._validateAndRunHooks() : this._validate());
-  }
-  async _validateAndRunHooks() {
-    const runHooks = this.modelInstance.constructor.runHooks.bind(this.modelInstance.constructor);
-    await runHooks("beforeValidate", this.modelInstance, this.options);
-    try {
-      await this._validate();
-    } catch (error) {
-      const newError = await runHooks("validationFailed", this.modelInstance, this.options, error);
-      throw newError || error;
-    }
-    await runHooks("afterValidate", this.modelInstance, this.options);
-    return this.modelInstance;
-  }
-  async _perAttributeValidators() {
-    const validators = [];
-    _.forIn(this.modelInstance.rawAttributes, (rawAttribute, field) => {
-      if (this.options.skip.includes(field)) {
-        return;
-      }
-      const value = this.modelInstance.dataValues[field];
-      if (value instanceof Utils.SequelizeMethod) {
-        return;
-      }
-      if (!rawAttribute._autoGenerated && !rawAttribute.autoIncrement) {
-        this._validateSchema(rawAttribute, field, value);
-      }
-      if (Object.prototype.hasOwnProperty.call(this.modelInstance.validators, field)) {
-        validators.push(this._singleAttrValidate(value, field, rawAttribute.allowNull));
-      }
-    });
-    return await Promise.all(validators);
-  }
-  async _customValidators() {
-    const validators = [];
-    _.each(this.modelInstance.constructor.options.validate, (validator2, validatorType) => {
-      if (this.options.skip.includes(validatorType)) {
-        return;
-      }
-      const valprom = this._invokeCustomValidator(validator2, validatorType).catch(() => {
-      });
-      validators.push(valprom);
-    });
-    return await Promise.all(validators);
-  }
-  async _singleAttrValidate(value, field, allowNull) {
-    if ((value === null || value === void 0) && !allowNull) {
-      return;
-    }
-    const validators = [];
-    _.forIn(this.modelInstance.validators[field], (test, validatorType) => {
-      if (["isUrl", "isURL", "isEmail"].includes(validatorType)) {
-        if (typeof test === "object" && test !== null && test.msg) {
-          test = {
-            msg: test.msg
-          };
-        } else if (test === true) {
-          test = {};
-        }
-      }
-      if (typeof test === "function") {
-        validators.push(this._invokeCustomValidator(test, validatorType, true, value, field));
-        return;
-      }
-      if (value === null || value === void 0) {
-        return;
-      }
-      const validatorPromise = this._invokeBuiltinValidator(value, test, validatorType, field);
-      validatorPromise.catch(() => {
-      });
-      validators.push(validatorPromise);
-    });
-    return Promise.all(validators.map((validator2) => validator2.catch((rejection) => {
-      const isBuiltIn = !!rejection.validatorName;
-      this._pushError(isBuiltIn, field, rejection, value, rejection.validatorName, rejection.validatorArgs);
-    })));
-  }
-  async _invokeCustomValidator(validator2, validatorType, optAttrDefined, optValue, optField) {
-    let isAsync = false;
-    const validatorArity = validator2.length;
-    let asyncArity = 1;
-    let errorKey = validatorType;
-    let invokeArgs;
-    if (optAttrDefined) {
-      asyncArity = 2;
-      invokeArgs = optValue;
-      errorKey = optField;
-    }
-    if (validatorArity === asyncArity) {
-      isAsync = true;
-    }
-    if (isAsync) {
-      try {
-        if (optAttrDefined) {
-          return await promisify(validator2.bind(this.modelInstance, invokeArgs))();
-        }
-        return await promisify(validator2.bind(this.modelInstance))();
-      } catch (e) {
-        return this._pushError(false, errorKey, e, optValue, validatorType);
-      }
-    }
-    try {
-      return await validator2.call(this.modelInstance, invokeArgs);
-    } catch (e) {
-      return this._pushError(false, errorKey, e, optValue, validatorType);
-    }
-  }
-  async _invokeBuiltinValidator(value, test, validatorType, field) {
-    const valueString = String(value);
-    if (typeof validator[validatorType] !== "function") {
-      throw new Error(`Invalid validator function: ${validatorType}`);
-    }
-    const validatorArgs = this._extractValidatorArgs(test, validatorType, field);
-    if (!validator[validatorType](valueString, ...validatorArgs)) {
-      throw Object.assign(new Error(test.msg || `Validation ${validatorType} on ${field} failed`), { validatorName: validatorType, validatorArgs });
-    }
-  }
-  _extractValidatorArgs(test, validatorType, field) {
-    let validatorArgs = test.args || test;
-    const isLocalizedValidator = typeof validatorArgs !== "string" && ["isAlpha", "isAlphanumeric", "isMobilePhone"].includes(validatorType);
-    if (!Array.isArray(validatorArgs)) {
-      if (validatorType === "isImmutable") {
-        validatorArgs = [validatorArgs, field, this.modelInstance];
-      } else if (isLocalizedValidator || validatorType === "isIP") {
-        validatorArgs = [];
-      } else {
-        validatorArgs = [validatorArgs];
-      }
-    } else {
-      validatorArgs = validatorArgs.slice(0);
-    }
-    return validatorArgs;
-  }
-  _validateSchema(rawAttribute, field, value) {
-    if (rawAttribute.allowNull === false && (value === null || value === void 0)) {
-      const association = Object.values(this.modelInstance.constructor.associations).find((association2) => association2 instanceof BelongsTo && association2.foreignKey === rawAttribute.fieldName);
-      if (!association || !this.modelInstance.get(association.associationAccessor)) {
-        const validators = this.modelInstance.validators[field];
-        const errMsg = _.get(validators, "notNull.msg", `${this.modelInstance.constructor.name}.${field} cannot be null`);
-        this.errors.push(new sequelizeError.ValidationErrorItem(errMsg, "notNull Violation", field, value, this.modelInstance, "is_null"));
-      }
-    }
-    if (rawAttribute.type instanceof DataTypes.STRING || rawAttribute.type instanceof DataTypes.TEXT || rawAttribute.type instanceof DataTypes.CITEXT) {
-      if (Array.isArray(value) || _.isObject(value) && !(value instanceof Utils.SequelizeMethod) && !Buffer.isBuffer(value)) {
-        this.errors.push(new sequelizeError.ValidationErrorItem(`${field} cannot be an array or an object`, "string violation", field, value, this.modelInstance, "not_a_string"));
-      }
-    }
-  }
-  _pushError(isBuiltin, errorKey, rawError, value, fnName, fnArgs) {
-    const message = rawError.message || rawError || "Validation error";
-    const error = new sequelizeError.ValidationErrorItem(message, "Validation error", errorKey, value, this.modelInstance, fnName, isBuiltin ? fnName : void 0, isBuiltin ? fnArgs : void 0);
-    error[InstanceValidator.RAW_KEY_NAME] = rawError;
-    this.errors.push(error);
-  }
-}
-InstanceValidator.RAW_KEY_NAME = "original";
-module.exports = InstanceValidator;
-module.exports.InstanceValidator = InstanceValidator;
-module.exports.default = InstanceValidator;
-//# sourceMappingURL=instance-validator.js.map
Index: ckend/node_modules/sequelize/lib/instance-validator.js.map
===================================================================
--- backend/node_modules/sequelize/lib/instance-validator.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/instance-validator.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst Utils = require('./utils');\nconst sequelizeError = require('./errors');\nconst DataTypes = require('./data-types');\nconst BelongsTo = require('./associations/belongs-to');\nconst validator = require('./utils/validator-extras').validator;\nconst { promisify } = require('util');\n\n/**\n * Instance Validator.\n *\n * @param {Instance} modelInstance The model instance.\n * @param {object} options A dictionary with options.\n *\n * @private\n */\nclass InstanceValidator {\n  constructor(modelInstance, options) {\n    options = {\n      // assign defined and default options\n      hooks: true,\n      ...options\n    };\n\n    if (options.fields && !options.skip) {\n      options.skip = _.difference(Object.keys(modelInstance.constructor.rawAttributes), options.fields);\n    } else {\n      options.skip = options.skip || [];\n    }\n\n    this.options = options;\n\n    this.modelInstance = modelInstance;\n\n    /**\n     * Exposes a reference to validator.js. This allows you to add custom validations using `validator.extend`\n     *\n     * @name validator\n     * @private\n     */\n    this.validator = validator;\n\n    /**\n     *  All errors will be stored here from the validations.\n     *\n     * @type {Array} Will contain keys that correspond to attributes which will\n     *   be Arrays of Errors.\n     * @private\n     */\n    this.errors = [];\n\n    /**\n     * @type {boolean} Indicates if validations are in progress\n     * @private\n     */\n    this.inProgress = false;\n  }\n\n  /**\n   * The main entry point for the Validation module, invoke to start the dance.\n   *\n   * @returns {Promise}\n   * @private\n   */\n  async _validate() {\n    if (this.inProgress) throw new Error('Validations already in progress.');\n\n    this.inProgress = true;\n\n    await Promise.all([\n      this._perAttributeValidators(),\n      this._customValidators()\n    ]);\n\n    if (this.errors.length) {\n      throw new sequelizeError.ValidationError(null, this.errors);\n    }\n  }\n\n  /**\n   * Invoke the Validation sequence and run validation hooks if defined\n   *   - Before Validation Model Hooks\n   *   - Validation\n   *   - On validation success: After Validation Model Hooks\n   *   - On validation failure: Validation Failed Model Hooks\n   *\n   * @returns {Promise}\n   * @private\n   */\n  async validate() {\n    return await (this.options.hooks ? this._validateAndRunHooks() : this._validate());\n  }\n\n  /**\n   * Invoke the Validation sequence and run hooks\n   *   - Before Validation Model Hooks\n   *   - Validation\n   *   - On validation success: After Validation Model Hooks\n   *   - On validation failure: Validation Failed Model Hooks\n   *\n   * @returns {Promise}\n   * @private\n   */\n  async _validateAndRunHooks() {\n    const runHooks = this.modelInstance.constructor.runHooks.bind(this.modelInstance.constructor);\n    await runHooks('beforeValidate', this.modelInstance, this.options);\n\n    try {\n      await this._validate();\n    } catch (error) {\n      const newError = await runHooks('validationFailed', this.modelInstance, this.options, error);\n      throw newError || error;\n    }\n\n    await runHooks('afterValidate', this.modelInstance, this.options);\n    return this.modelInstance;\n  }\n\n  /**\n   * Will run all the validators defined per attribute (built-in validators and custom validators)\n   *\n   * @returns {Promise<Array>}\n   * @private\n   */\n  async _perAttributeValidators() {\n    // promisify all attribute invocations\n    const validators = [];\n\n    _.forIn(this.modelInstance.rawAttributes, (rawAttribute, field) => {\n      if (this.options.skip.includes(field)) {\n        return;\n      }\n\n      const value = this.modelInstance.dataValues[field];\n\n      if (value instanceof Utils.SequelizeMethod) {\n        return;\n      }\n\n      if (!rawAttribute._autoGenerated && !rawAttribute.autoIncrement) {\n        // perform validations based on schema\n        this._validateSchema(rawAttribute, field, value);\n      }\n\n      if (Object.prototype.hasOwnProperty.call(this.modelInstance.validators, field)) {\n        validators.push(this._singleAttrValidate(value, field, rawAttribute.allowNull));\n      }\n    });\n\n    return await Promise.all(validators);\n  }\n\n  /**\n   * Will run all the custom validators defined in the model's options.\n   *\n   * @returns {Promise<Array>}\n   * @private\n   */\n  async _customValidators() {\n    const validators = [];\n    _.each(this.modelInstance.constructor.options.validate, (validator, validatorType) => {\n      if (this.options.skip.includes(validatorType)) {\n        return;\n      }\n\n      const valprom = this._invokeCustomValidator(validator, validatorType)\n        // errors are handled in settling, stub this\n        .catch(() => {});\n\n      validators.push(valprom);\n    });\n\n    return await Promise.all(validators);\n  }\n\n  /**\n   * Validate a single attribute with all the defined built-in validators and custom validators.\n   *\n   * @private\n   *\n   * @param {*} value Anything.\n   * @param {string} field The field name.\n   * @param {boolean} allowNull Whether or not the schema allows null values\n   *\n   * @returns {Promise} A promise, will always resolve, auto populates error on this.error local object.\n   */\n  async _singleAttrValidate(value, field, allowNull) {\n    // If value is null and allowNull is false, no validators should run (see #9143)\n    if ((value === null || value === undefined) && !allowNull) {\n      // The schema validator (_validateSchema) has already generated the validation error. Nothing to do here.\n      return;\n    }\n\n    // Promisify each validator\n    const validators = [];\n    _.forIn(this.modelInstance.validators[field], (test, validatorType) => {\n\n      if (['isUrl', 'isURL', 'isEmail'].includes(validatorType)) {\n        // Preserve backwards compat. Validator.js now expects the second param to isURL and isEmail to be an object\n        if (typeof test === 'object' && test !== null && test.msg) {\n          test = {\n            msg: test.msg\n          };\n        } else if (test === true) {\n          test = {};\n        }\n      }\n\n      // Custom validators should always run, except if value is null and allowNull is false (see #9143)\n      if (typeof test === 'function') {\n        validators.push(this._invokeCustomValidator(test, validatorType, true, value, field));\n        return;\n      }\n\n      // If value is null, built-in validators should not run (only custom validators have to run) (see #9134).\n      if (value === null || value === undefined) {\n        return;\n      }\n\n      const validatorPromise = this._invokeBuiltinValidator(value, test, validatorType, field);\n      // errors are handled in settling, stub this\n      validatorPromise.catch(() => {});\n      validators.push(validatorPromise);\n    });\n\n    return Promise\n      .all(validators.map(validator => validator.catch(rejection => {\n        const isBuiltIn = !!rejection.validatorName;\n        this._pushError(isBuiltIn, field, rejection, value, rejection.validatorName, rejection.validatorArgs);\n      })));\n  }\n\n  /**\n   * Prepare and invoke a custom validator.\n   *\n   * @private\n   *\n   * @param {Function} validator The custom validator.\n   * @param {string} validatorType the custom validator type (name).\n   * @param {boolean} optAttrDefined Set to true if custom validator was defined from the attribute\n   * @param {*} optValue value for attribute\n   * @param {string} optField field for attribute\n   *\n   * @returns {Promise} A promise.\n   */\n  async _invokeCustomValidator(validator, validatorType, optAttrDefined, optValue, optField) {\n    let isAsync = false;\n\n    const validatorArity = validator.length;\n    // check if validator is async and requires a callback\n    let asyncArity = 1;\n    let errorKey = validatorType;\n    let invokeArgs;\n    if (optAttrDefined) {\n      asyncArity = 2;\n      invokeArgs = optValue;\n      errorKey = optField;\n    }\n    if (validatorArity === asyncArity) {\n      isAsync = true;\n    }\n\n    if (isAsync) {\n      try {\n        if (optAttrDefined) {\n          return await promisify(validator.bind(this.modelInstance, invokeArgs))();\n        }\n        return await promisify(validator.bind(this.modelInstance))();\n      } catch (e) {\n        return this._pushError(false, errorKey, e, optValue, validatorType);\n      }\n    }\n\n    try {\n      return await validator.call(this.modelInstance, invokeArgs);\n    } catch (e) {\n      return this._pushError(false, errorKey, e, optValue, validatorType);\n    }\n  }\n\n  /**\n   * Prepare and invoke a build-in validator.\n   *\n   * @private\n   *\n   * @param {*} value Anything.\n   * @param {*} test The test case.\n   * @param {string} validatorType One of known to Sequelize validators.\n   * @param {string} field The field that is being validated\n   *\n   * @returns {object} An object with specific keys to invoke the validator.\n   */\n  async _invokeBuiltinValidator(value, test, validatorType, field) {\n    // Cast value as string to pass new Validator.js string requirement\n    const valueString = String(value);\n    // check if Validator knows that kind of validation test\n    if (typeof validator[validatorType] !== 'function') {\n      throw new Error(`Invalid validator function: ${validatorType}`);\n    }\n\n    const validatorArgs = this._extractValidatorArgs(test, validatorType, field);\n\n    if (!validator[validatorType](valueString, ...validatorArgs)) {\n      throw Object.assign(new Error(test.msg || `Validation ${validatorType} on ${field} failed`), { validatorName: validatorType, validatorArgs });\n    }\n  }\n\n  /**\n   * Will extract arguments for the validator.\n   *\n   * @param {*} test The test case.\n   * @param {string} validatorType One of known to Sequelize validators.\n   * @param {string} field The field that is being validated.\n   *\n   * @private\n   */\n  _extractValidatorArgs(test, validatorType, field) {\n    let validatorArgs = test.args || test;\n    const isLocalizedValidator = typeof validatorArgs !== 'string' && ['isAlpha', 'isAlphanumeric', 'isMobilePhone'].includes(validatorType);\n\n    if (!Array.isArray(validatorArgs)) {\n      if (validatorType === 'isImmutable') {\n        validatorArgs = [validatorArgs, field, this.modelInstance];\n      } else if (isLocalizedValidator || validatorType === 'isIP') {\n        validatorArgs = [];\n      } else {\n        validatorArgs = [validatorArgs];\n      }\n    } else {\n      validatorArgs = validatorArgs.slice(0);\n    }\n    return validatorArgs;\n  }\n\n  /**\n   * Will validate a single field against its schema definition (isnull).\n   *\n   * @param {object} rawAttribute As defined in the Schema.\n   * @param {string} field The field name.\n   * @param {*} value anything.\n   *\n   * @private\n   */\n  _validateSchema(rawAttribute, field, value) {\n    if (rawAttribute.allowNull === false && (value === null || value === undefined)) {\n      const association = Object.values(this.modelInstance.constructor.associations).find(association => association instanceof BelongsTo && association.foreignKey === rawAttribute.fieldName);\n      if (!association || !this.modelInstance.get(association.associationAccessor)) {\n        const validators = this.modelInstance.validators[field];\n        const errMsg = _.get(validators, 'notNull.msg', `${this.modelInstance.constructor.name}.${field} cannot be null`);\n\n        this.errors.push(new sequelizeError.ValidationErrorItem(\n          errMsg,\n          'notNull Violation', // sequelizeError.ValidationErrorItem.Origins.CORE,\n          field,\n          value,\n          this.modelInstance,\n          'is_null'\n        ));\n      }\n    }\n\n    if (rawAttribute.type instanceof DataTypes.STRING || rawAttribute.type instanceof DataTypes.TEXT || rawAttribute.type instanceof DataTypes.CITEXT) {\n      if (Array.isArray(value) || _.isObject(value) && !(value instanceof Utils.SequelizeMethod) && !Buffer.isBuffer(value)) {\n        this.errors.push(new sequelizeError.ValidationErrorItem(\n          `${field} cannot be an array or an object`,\n          'string violation', // sequelizeError.ValidationErrorItem.Origins.CORE,\n          field,\n          value,\n          this.modelInstance,\n          'not_a_string'\n        ));\n      }\n    }\n  }\n\n  /**\n   * Signs all errors retaining the original.\n   *\n   * @param {boolean}       isBuiltin   - Determines if error is from builtin validator.\n   * @param {string}        errorKey    - name of invalid attribute.\n   * @param {Error|string}  rawError    - The original error.\n   * @param {string|number} value       - The data that triggered the error.\n   * @param {string}        fnName      - Name of the validator, if any\n   * @param {Array}         fnArgs      - Arguments for the validator [function], if any\n   *\n   * @private\n   */\n  _pushError(isBuiltin, errorKey, rawError, value, fnName, fnArgs) {\n    const message = rawError.message || rawError || 'Validation error';\n    const error = new sequelizeError.ValidationErrorItem(\n      message,\n      'Validation error', // sequelizeError.ValidationErrorItem.Origins.FUNCTION,\n      errorKey,\n      value,\n      this.modelInstance,\n      fnName,\n      isBuiltin ? fnName : undefined,\n      isBuiltin ? fnArgs : undefined\n    );\n\n    error[InstanceValidator.RAW_KEY_NAME] = rawError;\n\n    this.errors.push(error);\n  }\n}\n/**\n * The error key for arguments as passed by custom validators\n *\n * @type {string}\n * @private\n */\nInstanceValidator.RAW_KEY_NAME = 'original';\n\nmodule.exports = InstanceValidator;\nmodule.exports.InstanceValidator = InstanceValidator;\nmodule.exports.default = InstanceValidator;\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,QAAQ,QAAQ;AACtB,MAAM,iBAAiB,QAAQ;AAC/B,MAAM,YAAY,QAAQ;AAC1B,MAAM,YAAY,QAAQ;AAC1B,MAAM,YAAY,QAAQ,4BAA4B;AACtD,MAAM,EAAE,cAAc,QAAQ;AAU9B,wBAAwB;AAAA,EACtB,YAAY,eAAe,SAAS;AAClC,cAAU;AAAA,MAER,OAAO;AAAA,OACJ;AAGL,QAAI,QAAQ,UAAU,CAAC,QAAQ,MAAM;AACnC,cAAQ,OAAO,EAAE,WAAW,OAAO,KAAK,cAAc,YAAY,gBAAgB,QAAQ;AAAA,WACrF;AACL,cAAQ,OAAO,QAAQ,QAAQ;AAAA;AAGjC,SAAK,UAAU;AAEf,SAAK,gBAAgB;AAQrB,SAAK,YAAY;AASjB,SAAK,SAAS;AAMd,SAAK,aAAa;AAAA;AAAA,QASd,YAAY;AAChB,QAAI,KAAK;AAAY,YAAM,IAAI,MAAM;AAErC,SAAK,aAAa;AAElB,UAAM,QAAQ,IAAI;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA;AAGP,QAAI,KAAK,OAAO,QAAQ;AACtB,YAAM,IAAI,eAAe,gBAAgB,MAAM,KAAK;AAAA;AAAA;AAAA,QAclD,WAAW;AACf,WAAO,MAAO,MAAK,QAAQ,QAAQ,KAAK,yBAAyB,KAAK;AAAA;AAAA,QAalE,uBAAuB;AAC3B,UAAM,WAAW,KAAK,cAAc,YAAY,SAAS,KAAK,KAAK,cAAc;AACjF,UAAM,SAAS,kBAAkB,KAAK,eAAe,KAAK;AAE1D,QAAI;AACF,YAAM,KAAK;AAAA,aACJ,OAAP;AACA,YAAM,WAAW,MAAM,SAAS,oBAAoB,KAAK,eAAe,KAAK,SAAS;AACtF,YAAM,YAAY;AAAA;AAGpB,UAAM,SAAS,iBAAiB,KAAK,eAAe,KAAK;AACzD,WAAO,KAAK;AAAA;AAAA,QASR,0BAA0B;AAE9B,UAAM,aAAa;AAEnB,MAAE,MAAM,KAAK,cAAc,eAAe,CAAC,cAAc,UAAU;AACjE,UAAI,KAAK,QAAQ,KAAK,SAAS,QAAQ;AACrC;AAAA;AAGF,YAAM,QAAQ,KAAK,cAAc,WAAW;AAE5C,UAAI,iBAAiB,MAAM,iBAAiB;AAC1C;AAAA;AAGF,UAAI,CAAC,aAAa,kBAAkB,CAAC,aAAa,eAAe;AAE/D,aAAK,gBAAgB,cAAc,OAAO;AAAA;AAG5C,UAAI,OAAO,UAAU,eAAe,KAAK,KAAK,cAAc,YAAY,QAAQ;AAC9E,mBAAW,KAAK,KAAK,oBAAoB,OAAO,OAAO,aAAa;AAAA;AAAA;AAIxE,WAAO,MAAM,QAAQ,IAAI;AAAA;AAAA,QASrB,oBAAoB;AACxB,UAAM,aAAa;AACnB,MAAE,KAAK,KAAK,cAAc,YAAY,QAAQ,UAAU,CAAC,YAAW,kBAAkB;AACpF,UAAI,KAAK,QAAQ,KAAK,SAAS,gBAAgB;AAC7C;AAAA;AAGF,YAAM,UAAU,KAAK,uBAAuB,YAAW,eAEpD,MAAM,MAAM;AAAA;AAEf,iBAAW,KAAK;AAAA;AAGlB,WAAO,MAAM,QAAQ,IAAI;AAAA;AAAA,QAcrB,oBAAoB,OAAO,OAAO,WAAW;AAEjD,QAAK,WAAU,QAAQ,UAAU,WAAc,CAAC,WAAW;AAEzD;AAAA;AAIF,UAAM,aAAa;AACnB,MAAE,MAAM,KAAK,cAAc,WAAW,QAAQ,CAAC,MAAM,kBAAkB;AAErE,UAAI,CAAC,SAAS,SAAS,WAAW,SAAS,gBAAgB;AAEzD,YAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,KAAK,KAAK;AACzD,iBAAO;AAAA,YACL,KAAK,KAAK;AAAA;AAAA,mBAEH,SAAS,MAAM;AACxB,iBAAO;AAAA;AAAA;AAKX,UAAI,OAAO,SAAS,YAAY;AAC9B,mBAAW,KAAK,KAAK,uBAAuB,MAAM,eAAe,MAAM,OAAO;AAC9E;AAAA;AAIF,UAAI,UAAU,QAAQ,UAAU,QAAW;AACzC;AAAA;AAGF,YAAM,mBAAmB,KAAK,wBAAwB,OAAO,MAAM,eAAe;AAElF,uBAAiB,MAAM,MAAM;AAAA;AAC7B,iBAAW,KAAK;AAAA;AAGlB,WAAO,QACJ,IAAI,WAAW,IAAI,gBAAa,WAAU,MAAM,eAAa;AAC5D,YAAM,YAAY,CAAC,CAAC,UAAU;AAC9B,WAAK,WAAW,WAAW,OAAO,WAAW,OAAO,UAAU,eAAe,UAAU;AAAA;AAAA;AAAA,QAiBvF,uBAAuB,YAAW,eAAe,gBAAgB,UAAU,UAAU;AACzF,QAAI,UAAU;AAEd,UAAM,iBAAiB,WAAU;AAEjC,QAAI,aAAa;AACjB,QAAI,WAAW;AACf,QAAI;AACJ,QAAI,gBAAgB;AAClB,mBAAa;AACb,mBAAa;AACb,iBAAW;AAAA;AAEb,QAAI,mBAAmB,YAAY;AACjC,gBAAU;AAAA;AAGZ,QAAI,SAAS;AACX,UAAI;AACF,YAAI,gBAAgB;AAClB,iBAAO,MAAM,UAAU,WAAU,KAAK,KAAK,eAAe;AAAA;AAE5D,eAAO,MAAM,UAAU,WAAU,KAAK,KAAK;AAAA,eACpC,GAAP;AACA,eAAO,KAAK,WAAW,OAAO,UAAU,GAAG,UAAU;AAAA;AAAA;AAIzD,QAAI;AACF,aAAO,MAAM,WAAU,KAAK,KAAK,eAAe;AAAA,aACzC,GAAP;AACA,aAAO,KAAK,WAAW,OAAO,UAAU,GAAG,UAAU;AAAA;AAAA;AAAA,QAgBnD,wBAAwB,OAAO,MAAM,eAAe,OAAO;AAE/D,UAAM,cAAc,OAAO;AAE3B,QAAI,OAAO,UAAU,mBAAmB,YAAY;AAClD,YAAM,IAAI,MAAM,+BAA+B;AAAA;AAGjD,UAAM,gBAAgB,KAAK,sBAAsB,MAAM,eAAe;AAEtE,QAAI,CAAC,UAAU,eAAe,aAAa,GAAG,gBAAgB;AAC5D,YAAM,OAAO,OAAO,IAAI,MAAM,KAAK,OAAO,cAAc,oBAAoB,iBAAiB,EAAE,eAAe,eAAe;AAAA;AAAA;AAAA,EAajI,sBAAsB,MAAM,eAAe,OAAO;AAChD,QAAI,gBAAgB,KAAK,QAAQ;AACjC,UAAM,uBAAuB,OAAO,kBAAkB,YAAY,CAAC,WAAW,kBAAkB,iBAAiB,SAAS;AAE1H,QAAI,CAAC,MAAM,QAAQ,gBAAgB;AACjC,UAAI,kBAAkB,eAAe;AACnC,wBAAgB,CAAC,eAAe,OAAO,KAAK;AAAA,iBACnC,wBAAwB,kBAAkB,QAAQ;AAC3D,wBAAgB;AAAA,aACX;AACL,wBAAgB,CAAC;AAAA;AAAA,WAEd;AACL,sBAAgB,cAAc,MAAM;AAAA;AAEtC,WAAO;AAAA;AAAA,EAYT,gBAAgB,cAAc,OAAO,OAAO;AAC1C,QAAI,aAAa,cAAc,SAAU,WAAU,QAAQ,UAAU,SAAY;AAC/E,YAAM,cAAc,OAAO,OAAO,KAAK,cAAc,YAAY,cAAc,KAAK,kBAAe,wBAAuB,aAAa,aAAY,eAAe,aAAa;AAC/K,UAAI,CAAC,eAAe,CAAC,KAAK,cAAc,IAAI,YAAY,sBAAsB;AAC5E,cAAM,aAAa,KAAK,cAAc,WAAW;AACjD,cAAM,SAAS,EAAE,IAAI,YAAY,eAAe,GAAG,KAAK,cAAc,YAAY,QAAQ;AAE1F,aAAK,OAAO,KAAK,IAAI,eAAe,oBAClC,QACA,qBACA,OACA,OACA,KAAK,eACL;AAAA;AAAA;AAKN,QAAI,aAAa,gBAAgB,UAAU,UAAU,aAAa,gBAAgB,UAAU,QAAQ,aAAa,gBAAgB,UAAU,QAAQ;AACjJ,UAAI,MAAM,QAAQ,UAAU,EAAE,SAAS,UAAU,CAAE,kBAAiB,MAAM,oBAAoB,CAAC,OAAO,SAAS,QAAQ;AACrH,aAAK,OAAO,KAAK,IAAI,eAAe,oBAClC,GAAG,yCACH,oBACA,OACA,OACA,KAAK,eACL;AAAA;AAAA;AAAA;AAAA,EAkBR,WAAW,WAAW,UAAU,UAAU,OAAO,QAAQ,QAAQ;AAC/D,UAAM,UAAU,SAAS,WAAW,YAAY;AAChD,UAAM,QAAQ,IAAI,eAAe,oBAC/B,SACA,oBACA,UACA,OACA,KAAK,eACL,QACA,YAAY,SAAS,QACrB,YAAY,SAAS;AAGvB,UAAM,kBAAkB,gBAAgB;AAExC,SAAK,OAAO,KAAK;AAAA;AAAA;AASrB,kBAAkB,eAAe;AAEjC,OAAO,UAAU;AACjB,OAAO,QAAQ,oBAAoB;AACnC,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/model-manager.js
===================================================================
--- backend/node_modules/sequelize/lib/model-manager.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,87 +1,0 @@
-"use strict";
-const Toposort = require("toposort-class");
-const _ = require("lodash");
-class ModelManager {
-  constructor(sequelize) {
-    this.models = [];
-    this.sequelize = sequelize;
-  }
-  addModel(model) {
-    this.models.push(model);
-    this.sequelize.models[model.name] = model;
-    return model;
-  }
-  removeModel(modelToRemove) {
-    this.models = this.models.filter((model) => model.name !== modelToRemove.name);
-    delete this.sequelize.models[modelToRemove.name];
-  }
-  getModel(against, options) {
-    options = _.defaults(options || {}, {
-      attribute: "name"
-    });
-    return this.models.find((model) => model[options.attribute] === against);
-  }
-  findModel(callback) {
-    return this.models.find(callback);
-  }
-  get all() {
-    return this.models;
-  }
-  getModelsTopoSortedByForeignKey() {
-    const models = /* @__PURE__ */ new Map();
-    const sorter = new Toposort();
-    for (const model of this.models) {
-      let deps = [];
-      let tableName = model.getTableName();
-      if (_.isObject(tableName)) {
-        tableName = `${tableName.schema}.${tableName.tableName}`;
-      }
-      models.set(tableName, model);
-      for (const attrName in model.rawAttributes) {
-        if (Object.prototype.hasOwnProperty.call(model.rawAttributes, attrName)) {
-          const attribute = model.rawAttributes[attrName];
-          if (attribute.references) {
-            let dep = attribute.references.model;
-            if (_.isObject(dep)) {
-              dep = `${dep.schema}.${dep.tableName}`;
-            }
-            deps.push(dep);
-          }
-        }
-      }
-      deps = deps.filter((dep) => tableName !== dep);
-      sorter.add(tableName, deps);
-    }
-    let sorted;
-    try {
-      sorted = sorter.sort();
-    } catch (e) {
-      if (!e.message.startsWith("Cyclic dependency found.")) {
-        throw e;
-      }
-      return null;
-    }
-    return sorted.map((modelName) => {
-      return models.get(modelName);
-    }).filter(Boolean);
-  }
-  forEachModel(iterator, options) {
-    const sortedModels = this.getModelsTopoSortedByForeignKey();
-    if (sortedModels == null) {
-      throw new Error("Cyclic dependency found.");
-    }
-    options = _.defaults(options || {}, {
-      reverse: true
-    });
-    if (options.reverse) {
-      sortedModels.reverse();
-    }
-    for (const model of sortedModels) {
-      iterator(model);
-    }
-  }
-}
-module.exports = ModelManager;
-module.exports.ModelManager = ModelManager;
-module.exports.default = ModelManager;
-//# sourceMappingURL=model-manager.js.map
Index: ckend/node_modules/sequelize/lib/model-manager.js.map
===================================================================
--- backend/node_modules/sequelize/lib/model-manager.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/model-manager.js"],
-  "sourcesContent": ["'use strict';\n\nconst Toposort = require('toposort-class');\nconst _ = require('lodash');\n\nclass ModelManager {\n  constructor(sequelize) {\n    this.models = [];\n    this.sequelize = sequelize;\n  }\n\n  addModel(model) {\n    this.models.push(model);\n    this.sequelize.models[model.name] = model;\n\n    return model;\n  }\n\n  removeModel(modelToRemove) {\n    this.models = this.models.filter(model => model.name !== modelToRemove.name);\n\n    delete this.sequelize.models[modelToRemove.name];\n  }\n\n  getModel(against, options) {\n    options = _.defaults(options || {}, {\n      attribute: 'name'\n    });\n\n    return this.models.find(model => model[options.attribute] === against);\n  }\n\n  findModel(callback) {\n    return this.models.find(callback);\n  }\n\n  get all() {\n    return this.models;\n  }\n\n  /**\n   * Returns an array that lists every model, sorted in order\n   * of foreign key references: The first model is a model that is depended upon,\n   * the last model is a model that is not depended upon.\n   *\n   * If there is a cyclic dependency, this returns null.\n   */\n  getModelsTopoSortedByForeignKey() {\n    const models = new Map();\n    const sorter = new Toposort();\n\n    for (const model of this.models) {\n      let deps = [];\n      let tableName = model.getTableName();\n\n      if (_.isObject(tableName)) {\n        tableName = `${tableName.schema}.${tableName.tableName}`;\n      }\n\n      models.set(tableName, model);\n\n      for (const attrName in model.rawAttributes) {\n        if (Object.prototype.hasOwnProperty.call(model.rawAttributes, attrName)) {\n          const attribute = model.rawAttributes[attrName];\n\n          if (attribute.references) {\n            let dep = attribute.references.model;\n\n            if (_.isObject(dep)) {\n              dep = `${dep.schema}.${dep.tableName}`;\n            }\n\n            deps.push(dep);\n          }\n        }\n      }\n\n      deps = deps.filter(dep => tableName !== dep);\n\n      sorter.add(tableName, deps);\n    }\n\n    let sorted;\n    try {\n      sorted = sorter.sort();\n    } catch (e) {\n      if (!e.message.startsWith('Cyclic dependency found.')) {\n        throw e;\n      }\n\n      return null;\n    }\n\n    return sorted\n      .map(modelName => {\n        return models.get(modelName);\n      })\n      .filter(Boolean);\n  }\n\n  /**\n   * Iterate over Models in an order suitable for e.g. creating tables.\n   * Will take foreign key constraints into account so that dependencies are visited before dependents.\n   *\n   * @param {Function} iterator method to execute on each model\n   * @param {object} options\n   * @private\n   *\n   * @deprecated\n   */\n  forEachModel(iterator, options) {\n    const sortedModels = this.getModelsTopoSortedByForeignKey();\n    if (sortedModels == null) {\n      throw new Error('Cyclic dependency found.');\n    }\n\n    options = _.defaults(options || {}, {\n      reverse: true\n    });\n\n    if (options.reverse) {\n      sortedModels.reverse();\n    }\n\n    for (const model of sortedModels) {\n      iterator(model);\n    }\n  }\n}\n\nmodule.exports = ModelManager;\nmodule.exports.ModelManager = ModelManager;\nmodule.exports.default = ModelManager;\n"],
-  "mappings": ";AAEA,MAAM,WAAW,QAAQ;AACzB,MAAM,IAAI,QAAQ;AAElB,mBAAmB;AAAA,EACjB,YAAY,WAAW;AACrB,SAAK,SAAS;AACd,SAAK,YAAY;AAAA;AAAA,EAGnB,SAAS,OAAO;AACd,SAAK,OAAO,KAAK;AACjB,SAAK,UAAU,OAAO,MAAM,QAAQ;AAEpC,WAAO;AAAA;AAAA,EAGT,YAAY,eAAe;AACzB,SAAK,SAAS,KAAK,OAAO,OAAO,WAAS,MAAM,SAAS,cAAc;AAEvE,WAAO,KAAK,UAAU,OAAO,cAAc;AAAA;AAAA,EAG7C,SAAS,SAAS,SAAS;AACzB,cAAU,EAAE,SAAS,WAAW,IAAI;AAAA,MAClC,WAAW;AAAA;AAGb,WAAO,KAAK,OAAO,KAAK,WAAS,MAAM,QAAQ,eAAe;AAAA;AAAA,EAGhE,UAAU,UAAU;AAClB,WAAO,KAAK,OAAO,KAAK;AAAA;AAAA,MAGtB,MAAM;AACR,WAAO,KAAK;AAAA;AAAA,EAUd,kCAAkC;AAChC,UAAM,SAAS,oBAAI;AACnB,UAAM,SAAS,IAAI;AAEnB,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI,OAAO;AACX,UAAI,YAAY,MAAM;AAEtB,UAAI,EAAE,SAAS,YAAY;AACzB,oBAAY,GAAG,UAAU,UAAU,UAAU;AAAA;AAG/C,aAAO,IAAI,WAAW;AAEtB,iBAAW,YAAY,MAAM,eAAe;AAC1C,YAAI,OAAO,UAAU,eAAe,KAAK,MAAM,eAAe,WAAW;AACvE,gBAAM,YAAY,MAAM,cAAc;AAEtC,cAAI,UAAU,YAAY;AACxB,gBAAI,MAAM,UAAU,WAAW;AAE/B,gBAAI,EAAE,SAAS,MAAM;AACnB,oBAAM,GAAG,IAAI,UAAU,IAAI;AAAA;AAG7B,iBAAK,KAAK;AAAA;AAAA;AAAA;AAKhB,aAAO,KAAK,OAAO,SAAO,cAAc;AAExC,aAAO,IAAI,WAAW;AAAA;AAGxB,QAAI;AACJ,QAAI;AACF,eAAS,OAAO;AAAA,aACT,GAAP;AACA,UAAI,CAAC,EAAE,QAAQ,WAAW,6BAA6B;AACrD,cAAM;AAAA;AAGR,aAAO;AAAA;AAGT,WAAO,OACJ,IAAI,eAAa;AAChB,aAAO,OAAO,IAAI;AAAA,OAEnB,OAAO;AAAA;AAAA,EAaZ,aAAa,UAAU,SAAS;AAC9B,UAAM,eAAe,KAAK;AAC1B,QAAI,gBAAgB,MAAM;AACxB,YAAM,IAAI,MAAM;AAAA;AAGlB,cAAU,EAAE,SAAS,WAAW,IAAI;AAAA,MAClC,SAAS;AAAA;AAGX,QAAI,QAAQ,SAAS;AACnB,mBAAa;AAAA;AAGf,eAAW,SAAS,cAAc;AAChC,eAAS;AAAA;AAAA;AAAA;AAKf,OAAO,UAAU;AACjB,OAAO,QAAQ,eAAe;AAC9B,OAAO,QAAQ,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/model.js
===================================================================
--- backend/node_modules/sequelize/lib/model.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2745 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const assert = require("assert");
-const _ = require("lodash");
-const Dottie = require("dottie");
-const Utils = require("./utils");
-const { logger } = require("./utils/logger");
-const BelongsTo = require("./associations/belongs-to");
-const BelongsToMany = require("./associations/belongs-to-many");
-const InstanceValidator = require("./instance-validator");
-const QueryTypes = require("./query-types");
-const sequelizeErrors = require("./errors");
-const Association = require("./associations/base");
-const HasMany = require("./associations/has-many");
-const DataTypes = require("./data-types");
-const Hooks = require("./hooks");
-const associationsMixin = require("./associations/mixin");
-const Op = require("./operators");
-const { noDoubleNestedGroup } = require("./utils/deprecations");
-const validQueryKeywords = /* @__PURE__ */ new Set([
-  "where",
-  "attributes",
-  "paranoid",
-  "include",
-  "order",
-  "limit",
-  "offset",
-  "transaction",
-  "lock",
-  "raw",
-  "logging",
-  "benchmark",
-  "having",
-  "searchPath",
-  "rejectOnEmpty",
-  "plain",
-  "scope",
-  "group",
-  "through",
-  "defaults",
-  "distinct",
-  "primary",
-  "exception",
-  "type",
-  "hooks",
-  "force",
-  "name"
-]);
-const nonCascadingOptions = ["include", "attributes", "originalAttributes", "order", "where", "limit", "offset", "plain", "group", "having"];
-class Model {
-  static get queryInterface() {
-    return this.sequelize.getQueryInterface();
-  }
-  static get queryGenerator() {
-    return this.queryInterface.queryGenerator;
-  }
-  get sequelize() {
-    return this.constructor.sequelize;
-  }
-  constructor(values = {}, options = {}) {
-    if (!this.constructor._overwrittenAttributesChecked) {
-      this.constructor._overwrittenAttributesChecked = true;
-      setTimeout(() => {
-        const overwrittenAttributes = [];
-        for (const key of Object.keys(this.constructor._attributeManipulation)) {
-          if (Object.prototype.hasOwnProperty.call(this, key)) {
-            overwrittenAttributes.push(key);
-          }
-        }
-        if (overwrittenAttributes.length > 0) {
-          logger.warn(`Model ${JSON.stringify(this.constructor.name)} is declaring public class fields for attribute(s): ${overwrittenAttributes.map((attr) => JSON.stringify(attr)).join(", ")}.
-These class fields are shadowing Sequelize's attribute getters & setters.
-See https://sequelize.org/main/manual/model-basics.html#caveat-with-public-class-fields`);
-        }
-      }, 0);
-    }
-    options = __spreadValues({
-      isNewRecord: true,
-      _schema: this.constructor._schema,
-      _schemaDelimiter: this.constructor._schemaDelimiter
-    }, options);
-    if (options.attributes) {
-      options.attributes = options.attributes.map((attribute) => Array.isArray(attribute) ? attribute[1] : attribute);
-    }
-    if (!options.includeValidated) {
-      this.constructor._conformIncludes(options, this.constructor);
-      if (options.include) {
-        this.constructor._expandIncludeAll(options);
-        this.constructor._validateIncludedElements(options);
-      }
-    }
-    this.dataValues = {};
-    this._previousDataValues = {};
-    this.uniqno = 1;
-    this._changed = /* @__PURE__ */ new Set();
-    this._options = options;
-    this.isNewRecord = options.isNewRecord;
-    this._initValues(values, options);
-  }
-  _initValues(values, options) {
-    let defaults;
-    let key;
-    values = __spreadValues({}, values);
-    if (options.isNewRecord) {
-      defaults = {};
-      if (this.constructor._hasDefaultValues) {
-        defaults = _.mapValues(this.constructor._defaultValues, (valueFn) => {
-          const value = valueFn();
-          return value && value instanceof Utils.SequelizeMethod ? value : _.cloneDeep(value);
-        });
-      }
-      if (this.constructor.primaryKeyAttributes.length) {
-        this.constructor.primaryKeyAttributes.forEach((primaryKeyAttribute) => {
-          if (!Object.prototype.hasOwnProperty.call(defaults, primaryKeyAttribute)) {
-            defaults[primaryKeyAttribute] = null;
-          }
-        });
-      }
-      if (this.constructor._timestampAttributes.createdAt && defaults[this.constructor._timestampAttributes.createdAt]) {
-        this.dataValues[this.constructor._timestampAttributes.createdAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.createdAt], this.sequelize.options.dialect);
-        delete defaults[this.constructor._timestampAttributes.createdAt];
-      }
-      if (this.constructor._timestampAttributes.updatedAt && defaults[this.constructor._timestampAttributes.updatedAt]) {
-        this.dataValues[this.constructor._timestampAttributes.updatedAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.updatedAt], this.sequelize.options.dialect);
-        delete defaults[this.constructor._timestampAttributes.updatedAt];
-      }
-      if (this.constructor._timestampAttributes.deletedAt && defaults[this.constructor._timestampAttributes.deletedAt]) {
-        this.dataValues[this.constructor._timestampAttributes.deletedAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.deletedAt], this.sequelize.options.dialect);
-        delete defaults[this.constructor._timestampAttributes.deletedAt];
-      }
-      for (key in defaults) {
-        if (values[key] === void 0) {
-          this.set(key, Utils.toDefaultValue(defaults[key], this.sequelize.options.dialect), { raw: true });
-          delete values[key];
-        }
-      }
-    }
-    this.set(values, options);
-  }
-  static _paranoidClause(model, options = {}) {
-    if (options.include) {
-      for (const include of options.include) {
-        this._paranoidClause(include.model, include);
-      }
-    }
-    if (_.get(options, "groupedLimit.on.options.paranoid")) {
-      const throughModel = _.get(options, "groupedLimit.on.through.model");
-      if (throughModel) {
-        options.groupedLimit.through = this._paranoidClause(throughModel, options.groupedLimit.through);
-      }
-    }
-    if (!model.options.timestamps || !model.options.paranoid || options.paranoid === false) {
-      return options;
-    }
-    const deletedAtCol = model._timestampAttributes.deletedAt;
-    const deletedAtAttribute = model.rawAttributes[deletedAtCol];
-    const deletedAtObject = {};
-    let deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, "defaultValue") ? deletedAtAttribute.defaultValue : null;
-    deletedAtDefaultValue = deletedAtDefaultValue || {
-      [Op.eq]: null
-    };
-    deletedAtObject[deletedAtAttribute.field || deletedAtCol] = deletedAtDefaultValue;
-    if (Utils.isWhereEmpty(options.where)) {
-      options.where = deletedAtObject;
-    } else {
-      options.where = { [Op.and]: [deletedAtObject, options.where] };
-    }
-    return options;
-  }
-  static _addDefaultAttributes() {
-    const tail = {};
-    let head = {};
-    if (!_.some(this.rawAttributes, "primaryKey")) {
-      if ("id" in this.rawAttributes) {
-        throw new Error(`A column called 'id' was added to the attributes of '${this.tableName}' but not marked with 'primaryKey: true'`);
-      }
-      head = {
-        id: {
-          type: new DataTypes.INTEGER(),
-          allowNull: false,
-          primaryKey: true,
-          autoIncrement: true,
-          _autoGenerated: true
-        }
-      };
-    }
-    if (this._timestampAttributes.createdAt) {
-      tail[this._timestampAttributes.createdAt] = {
-        type: DataTypes.DATE,
-        allowNull: false,
-        _autoGenerated: true
-      };
-    }
-    if (this._timestampAttributes.updatedAt) {
-      tail[this._timestampAttributes.updatedAt] = {
-        type: DataTypes.DATE,
-        allowNull: false,
-        _autoGenerated: true
-      };
-    }
-    if (this._timestampAttributes.deletedAt) {
-      tail[this._timestampAttributes.deletedAt] = {
-        type: DataTypes.DATE,
-        _autoGenerated: true
-      };
-    }
-    if (this._versionAttribute) {
-      tail[this._versionAttribute] = {
-        type: DataTypes.INTEGER,
-        allowNull: false,
-        defaultValue: 0,
-        _autoGenerated: true
-      };
-    }
-    const newRawAttributes = __spreadValues(__spreadValues({}, head), this.rawAttributes);
-    _.each(tail, (value, attr) => {
-      if (newRawAttributes[attr] === void 0) {
-        newRawAttributes[attr] = value;
-      }
-    });
-    this.rawAttributes = newRawAttributes;
-    if (!Object.keys(this.primaryKeys).length) {
-      this.primaryKeys.id = this.rawAttributes.id;
-    }
-  }
-  static getAttributes() {
-    return this.rawAttributes;
-  }
-  static _findAutoIncrementAttribute() {
-    this.autoIncrementAttribute = null;
-    for (const name in this.rawAttributes) {
-      if (Object.prototype.hasOwnProperty.call(this.rawAttributes, name)) {
-        const definition = this.rawAttributes[name];
-        if (definition && definition.autoIncrement) {
-          if (this.autoIncrementAttribute) {
-            throw new Error("Invalid Instance definition. Only one autoincrement field allowed.");
-          }
-          this.autoIncrementAttribute = name;
-        }
-      }
-    }
-  }
-  static _conformIncludes(options, self) {
-    if (!options.include)
-      return;
-    if (!Array.isArray(options.include)) {
-      options.include = [options.include];
-    } else if (!options.include.length) {
-      delete options.include;
-      return;
-    }
-    options.include = options.include.map((include) => this._conformInclude(include, self));
-  }
-  static _transformStringAssociation(include, self) {
-    if (self && typeof include === "string") {
-      if (!Object.prototype.hasOwnProperty.call(self.associations, include)) {
-        throw new Error(`Association with alias "${include}" does not exist on ${self.name}`);
-      }
-      return self.associations[include];
-    }
-    return include;
-  }
-  static _conformInclude(include, self) {
-    if (include) {
-      let model;
-      if (include._pseudo)
-        return include;
-      include = this._transformStringAssociation(include, self);
-      if (include instanceof Association) {
-        if (self && include.target.name === self.name) {
-          model = include.source;
-        } else {
-          model = include.target;
-        }
-        return { model, association: include, as: include.as };
-      }
-      if (include.prototype && include.prototype instanceof Model) {
-        return { model: include };
-      }
-      if (_.isPlainObject(include)) {
-        if (include.association) {
-          include.association = this._transformStringAssociation(include.association, self);
-          if (self && include.association.target.name === self.name) {
-            model = include.association.source;
-          } else {
-            model = include.association.target;
-          }
-          if (!include.model)
-            include.model = model;
-          if (!include.as)
-            include.as = include.association.as;
-          this._conformIncludes(include, model);
-          return include;
-        }
-        if (include.model) {
-          this._conformIncludes(include, include.model);
-          return include;
-        }
-        if (include.all) {
-          this._conformIncludes(include);
-          return include;
-        }
-      }
-    }
-    throw new Error("Include unexpected. Element has to be either a Model, an Association or an object.");
-  }
-  static _expandIncludeAllElement(includes, include) {
-    let all = include.all;
-    delete include.all;
-    if (all !== true) {
-      if (!Array.isArray(all)) {
-        all = [all];
-      }
-      const validTypes = {
-        BelongsTo: true,
-        HasOne: true,
-        HasMany: true,
-        One: ["BelongsTo", "HasOne"],
-        Has: ["HasOne", "HasMany"],
-        Many: ["HasMany"]
-      };
-      for (let i = 0; i < all.length; i++) {
-        const type = all[i];
-        if (type === "All") {
-          all = true;
-          break;
-        }
-        const types = validTypes[type];
-        if (!types) {
-          throw new sequelizeErrors.EagerLoadingError(`include all '${type}' is not valid - must be BelongsTo, HasOne, HasMany, One, Has, Many or All`);
-        }
-        if (types !== true) {
-          all.splice(i, 1);
-          i--;
-          for (let j = 0; j < types.length; j++) {
-            if (!all.includes(types[j])) {
-              all.unshift(types[j]);
-              i++;
-            }
-          }
-        }
-      }
-    }
-    const nested = include.nested;
-    if (nested) {
-      delete include.nested;
-      if (!include.include) {
-        include.include = [];
-      } else if (!Array.isArray(include.include)) {
-        include.include = [include.include];
-      }
-    }
-    const used = [];
-    (function addAllIncludes(parent, includes2) {
-      _.forEach(parent.associations, (association) => {
-        if (all !== true && !all.includes(association.associationType)) {
-          return;
-        }
-        const model = association.target;
-        const as = association.options.as;
-        const predicate = { model };
-        if (as) {
-          predicate.as = as;
-        }
-        if (_.some(includes2, predicate)) {
-          return;
-        }
-        if (nested && used.includes(model)) {
-          return;
-        }
-        used.push(parent);
-        const thisInclude = Utils.cloneDeep(include);
-        thisInclude.model = model;
-        if (as) {
-          thisInclude.as = as;
-        }
-        includes2.push(thisInclude);
-        if (nested) {
-          addAllIncludes(model, thisInclude.include);
-          if (thisInclude.include.length === 0)
-            delete thisInclude.include;
-        }
-      });
-      used.pop();
-    })(this, includes);
-  }
-  static _validateIncludedElements(options, tableNames) {
-    if (!options.model)
-      options.model = this;
-    tableNames = tableNames || {};
-    options.includeNames = [];
-    options.includeMap = {};
-    options.hasSingleAssociation = false;
-    options.hasMultiAssociation = false;
-    if (!options.parent) {
-      options.topModel = options.model;
-      options.topLimit = options.limit;
-    }
-    options.include = options.include.map((include) => {
-      include = this._conformInclude(include);
-      include.parent = options;
-      include.topLimit = options.topLimit;
-      this._validateIncludedElement.call(options.model, include, tableNames, options);
-      if (include.duplicating === void 0) {
-        include.duplicating = include.association.isMultiAssociation;
-      }
-      include.hasDuplicating = include.hasDuplicating || include.duplicating;
-      include.hasRequired = include.hasRequired || include.required;
-      options.hasDuplicating = options.hasDuplicating || include.hasDuplicating;
-      options.hasRequired = options.hasRequired || include.required;
-      options.hasWhere = options.hasWhere || include.hasWhere || !!include.where;
-      return include;
-    });
-    for (const include of options.include) {
-      include.hasParentWhere = options.hasParentWhere || !!options.where;
-      include.hasParentRequired = options.hasParentRequired || !!options.required;
-      if (include.subQuery !== false && options.hasDuplicating && options.topLimit) {
-        if (include.duplicating) {
-          include.subQuery = include.subQuery || false;
-          include.subQueryFilter = include.hasRequired;
-        } else {
-          include.subQuery = include.hasRequired;
-          include.subQueryFilter = false;
-        }
-      } else {
-        include.subQuery = include.subQuery || false;
-        if (include.duplicating) {
-          include.subQueryFilter = include.subQuery;
-        } else {
-          include.subQueryFilter = false;
-          include.subQuery = include.subQuery || include.hasParentRequired && include.hasRequired && !include.separate;
-        }
-      }
-      options.includeMap[include.as] = include;
-      options.includeNames.push(include.as);
-      if (options.topModel === options.model && options.subQuery === void 0 && options.topLimit) {
-        if (include.subQuery) {
-          options.subQuery = include.subQuery;
-        } else if (include.hasDuplicating) {
-          options.subQuery = true;
-        }
-      }
-      options.hasIncludeWhere = options.hasIncludeWhere || include.hasIncludeWhere || !!include.where;
-      options.hasIncludeRequired = options.hasIncludeRequired || include.hasIncludeRequired || !!include.required;
-      if (include.association.isMultiAssociation || include.hasMultiAssociation) {
-        options.hasMultiAssociation = true;
-      }
-      if (include.association.isSingleAssociation || include.hasSingleAssociation) {
-        options.hasSingleAssociation = true;
-      }
-    }
-    if (options.topModel === options.model && options.subQuery === void 0) {
-      options.subQuery = false;
-    }
-    return options;
-  }
-  static _validateIncludedElement(include, tableNames, options) {
-    tableNames[include.model.getTableName()] = true;
-    if (include.attributes && !options.raw) {
-      include.model._expandAttributes(include);
-      include.originalAttributes = include.model._injectDependentVirtualAttributes(include.attributes);
-      include = Utils.mapFinderOptions(include, include.model);
-      if (include.attributes.length) {
-        _.each(include.model.primaryKeys, (attr, key) => {
-          if (!include.attributes.some((includeAttr) => {
-            if (attr.field !== key) {
-              return Array.isArray(includeAttr) && includeAttr[0] === attr.field && includeAttr[1] === key;
-            }
-            return includeAttr === key;
-          })) {
-            include.attributes.unshift(key);
-          }
-        });
-      }
-    } else {
-      include = Utils.mapFinderOptions(include, include.model);
-    }
-    if (include._pseudo) {
-      if (!include.attributes) {
-        include.attributes = Object.keys(include.model.tableAttributes);
-      }
-      return Utils.mapFinderOptions(include, include.model);
-    }
-    const association = include.association || this._getIncludedAssociation(include.model, include.as);
-    include.association = association;
-    include.as = association.as;
-    if (include.association.through && Object(include.association.through.model) === include.association.through.model) {
-      if (!include.include)
-        include.include = [];
-      const through = include.association.through;
-      include.through = _.defaults(include.through || {}, {
-        model: through.model,
-        as: through.model.name,
-        association: {
-          isSingleAssociation: true
-        },
-        _pseudo: true,
-        parent: include
-      });
-      if (through.scope) {
-        include.through.where = include.through.where ? { [Op.and]: [include.through.where, through.scope] } : through.scope;
-      }
-      include.include.push(include.through);
-      tableNames[through.tableName] = true;
-    }
-    let model;
-    if (include.model.scoped === true) {
-      model = include.model;
-    } else {
-      model = include.association.target.name === include.model.name ? include.association.target : include.association.source;
-    }
-    model._injectScope(include);
-    if (!include.attributes) {
-      include.attributes = Object.keys(include.model.tableAttributes);
-    }
-    include = Utils.mapFinderOptions(include, include.model);
-    if (include.required === void 0) {
-      include.required = !!include.where;
-    }
-    if (include.association.scope) {
-      include.where = include.where ? { [Op.and]: [include.where, include.association.scope] } : include.association.scope;
-    }
-    if (include.limit && include.separate === void 0) {
-      include.separate = true;
-    }
-    if (include.separate === true) {
-      if (!(include.association instanceof HasMany)) {
-        throw new Error("Only HasMany associations support include.separate");
-      }
-      include.duplicating = false;
-      if (options.attributes && options.attributes.length && !_.flattenDepth(options.attributes, 2).includes(association.sourceKey)) {
-        options.attributes.push(association.sourceKey);
-      }
-      if (include.attributes && include.attributes.length && !_.flattenDepth(include.attributes, 2).includes(association.foreignKey)) {
-        include.attributes.push(association.foreignKey);
-      }
-    }
-    if (Object.prototype.hasOwnProperty.call(include, "include")) {
-      this._validateIncludedElements.call(include.model, include, tableNames);
-    }
-    return include;
-  }
-  static _getIncludedAssociation(targetModel, targetAlias) {
-    const associations = this.getAssociations(targetModel);
-    let association = null;
-    if (associations.length === 0) {
-      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is not associated to ${this.name}!`);
-    }
-    if (associations.length === 1) {
-      association = this.getAssociationForAlias(targetModel, targetAlias);
-      if (association) {
-        return association;
-      }
-      if (targetAlias) {
-        const existingAliases = this.getAssociations(targetModel).map((association2) => association2.as);
-        throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} using an alias. You've included an alias (${targetAlias}), but it does not match the alias(es) defined in your association (${existingAliases.join(", ")}).`);
-      }
-      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} using an alias. You must use the 'as' keyword to specify the alias within your include statement.`);
-    }
-    association = this.getAssociationForAlias(targetModel, targetAlias);
-    if (!association) {
-      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} multiple times. To identify the correct association, you must use the 'as' keyword to specify the alias of the association you want to include.`);
-    }
-    return association;
-  }
-  static _expandIncludeAll(options) {
-    const includes = options.include;
-    if (!includes) {
-      return;
-    }
-    for (let index = 0; index < includes.length; index++) {
-      const include = includes[index];
-      if (include.all) {
-        includes.splice(index, 1);
-        index--;
-        this._expandIncludeAllElement(includes, include);
-      }
-    }
-    includes.forEach((include) => {
-      this._expandIncludeAll.call(include.model, include);
-    });
-  }
-  static _conformIndex(index) {
-    if (!index.fields) {
-      throw new Error('Missing "fields" property for index definition');
-    }
-    index = _.defaults(index, {
-      type: "",
-      parser: null
-    });
-    if (index.type && index.type.toLowerCase() === "unique") {
-      index.unique = true;
-      delete index.type;
-    }
-    return index;
-  }
-  static _uniqIncludes(options) {
-    if (!options.include)
-      return;
-    options.include = _(options.include).groupBy((include) => `${include.model && include.model.name}-${include.as}`).map((includes) => this._assignOptions(...includes)).value();
-  }
-  static _baseMerge(...args) {
-    _.assignWith(...args);
-    this._conformIncludes(args[0], this);
-    this._uniqIncludes(args[0]);
-    return args[0];
-  }
-  static _mergeFunction(objValue, srcValue, key) {
-    if (Array.isArray(objValue) && Array.isArray(srcValue)) {
-      return _.union(objValue, srcValue);
-    }
-    if (["where", "having"].includes(key)) {
-      if (this.options && this.options.whereMergeStrategy === "and") {
-        return combineWheresWithAnd(objValue, srcValue);
-      }
-      if (srcValue instanceof Utils.SequelizeMethod) {
-        srcValue = { [Op.and]: srcValue };
-      }
-      if (_.isPlainObject(objValue) && _.isPlainObject(srcValue)) {
-        return Object.assign(objValue, srcValue);
-      }
-    } else if (key === "attributes" && _.isPlainObject(objValue) && _.isPlainObject(srcValue)) {
-      return _.assignWith(objValue, srcValue, (objValue2, srcValue2) => {
-        if (Array.isArray(objValue2) && Array.isArray(srcValue2)) {
-          return _.union(objValue2, srcValue2);
-        }
-      });
-    }
-    if (srcValue) {
-      return Utils.cloneDeep(srcValue, true);
-    }
-    return srcValue === void 0 ? objValue : srcValue;
-  }
-  static _assignOptions(...args) {
-    return this._baseMerge(...args, this._mergeFunction.bind(this));
-  }
-  static _defaultsOptions(target, opts) {
-    return this._baseMerge(target, opts, (srcValue, objValue, key) => {
-      return this._mergeFunction(objValue, srcValue, key);
-    });
-  }
-  static init(attributes, options = {}) {
-    if (!options.sequelize) {
-      throw new Error("No Sequelize instance passed");
-    }
-    this.sequelize = options.sequelize;
-    const globalOptions = this.sequelize.options;
-    options = Utils.merge(_.cloneDeep(globalOptions.define), options);
-    if (!options.modelName) {
-      options.modelName = this.name;
-    }
-    options = Utils.merge({
-      name: {
-        plural: Utils.pluralize(options.modelName),
-        singular: Utils.singularize(options.modelName)
-      },
-      indexes: [],
-      omitNull: globalOptions.omitNull,
-      schema: globalOptions.schema
-    }, options);
-    this.sequelize.runHooks("beforeDefine", attributes, options);
-    if (options.modelName !== this.name) {
-      Object.defineProperty(this, "name", { value: options.modelName });
-    }
-    delete options.modelName;
-    this.options = __spreadValues({
-      timestamps: true,
-      validate: {},
-      freezeTableName: false,
-      underscored: false,
-      paranoid: false,
-      rejectOnEmpty: false,
-      whereCollection: null,
-      schema: null,
-      schemaDelimiter: "",
-      defaultScope: {},
-      scopes: {},
-      indexes: [],
-      whereMergeStrategy: "overwrite"
-    }, options);
-    if (this.sequelize.isDefined(this.name)) {
-      this.sequelize.modelManager.removeModel(this.sequelize.modelManager.getModel(this.name));
-    }
-    this.associations = {};
-    this._setupHooks(options.hooks);
-    this.underscored = this.options.underscored;
-    if (!this.options.tableName) {
-      this.tableName = this.options.freezeTableName ? this.name : Utils.underscoredIf(Utils.pluralize(this.name), this.underscored);
-    } else {
-      this.tableName = this.options.tableName;
-    }
-    this._schema = this.options.schema;
-    this._schemaDelimiter = this.options.schemaDelimiter;
-    _.each(options.validate, (validator, validatorType) => {
-      if (Object.prototype.hasOwnProperty.call(attributes, validatorType)) {
-        throw new Error(`A model validator function must not have the same name as a field. Model: ${this.name}, field/validation name: ${validatorType}`);
-      }
-      if (typeof validator !== "function") {
-        throw new Error(`Members of the validate option must be functions. Model: ${this.name}, error with validate member ${validatorType}`);
-      }
-    });
-    if (!_.includes(["and", "overwrite"], this.options && this.options.whereMergeStrategy)) {
-      throw new Error(`Invalid value ${this.options && this.options.whereMergeStrategy} for whereMergeStrategy. Allowed values are 'and' and 'overwrite'.`);
-    }
-    this.rawAttributes = _.mapValues(attributes, (attribute, name) => {
-      attribute = this.sequelize.normalizeAttribute(attribute);
-      if (attribute.type === void 0) {
-        throw new Error(`Unrecognized datatype for attribute "${this.name}.${name}"`);
-      }
-      if (attribute.allowNull !== false && _.get(attribute, "validate.notNull")) {
-        throw new Error(`Invalid definition for "${this.name}.${name}", "notNull" validator is only allowed with "allowNull:false"`);
-      }
-      if (_.get(attribute, "references.model.prototype") instanceof Model) {
-        attribute.references.model = attribute.references.model.getTableName();
-      }
-      return attribute;
-    });
-    const tableName = this.getTableName();
-    this._indexes = this.options.indexes.map((index) => Utils.nameIndex(this._conformIndex(index), tableName));
-    this.primaryKeys = {};
-    this._readOnlyAttributes = /* @__PURE__ */ new Set();
-    this._timestampAttributes = {};
-    if (this.options.timestamps) {
-      for (const key of ["createdAt", "updatedAt", "deletedAt"]) {
-        if (!["undefined", "string", "boolean"].includes(typeof this.options[key])) {
-          throw new Error(`Value for "${key}" option must be a string or a boolean, got ${typeof this.options[key]}`);
-        }
-        if (this.options[key] === "") {
-          throw new Error(`Value for "${key}" option cannot be an empty string`);
-        }
-      }
-      if (this.options.createdAt !== false) {
-        this._timestampAttributes.createdAt = typeof this.options.createdAt === "string" ? this.options.createdAt : "createdAt";
-        this._readOnlyAttributes.add(this._timestampAttributes.createdAt);
-      }
-      if (this.options.updatedAt !== false) {
-        this._timestampAttributes.updatedAt = typeof this.options.updatedAt === "string" ? this.options.updatedAt : "updatedAt";
-        this._readOnlyAttributes.add(this._timestampAttributes.updatedAt);
-      }
-      if (this.options.paranoid && this.options.deletedAt !== false) {
-        this._timestampAttributes.deletedAt = typeof this.options.deletedAt === "string" ? this.options.deletedAt : "deletedAt";
-        this._readOnlyAttributes.add(this._timestampAttributes.deletedAt);
-      }
-    }
-    if (this.options.version) {
-      this._versionAttribute = typeof this.options.version === "string" ? this.options.version : "version";
-      this._readOnlyAttributes.add(this._versionAttribute);
-    }
-    this._hasReadOnlyAttributes = this._readOnlyAttributes.size > 0;
-    this._addDefaultAttributes();
-    this.refreshAttributes();
-    this._findAutoIncrementAttribute();
-    this._scope = this.options.defaultScope;
-    this._scopeNames = ["defaultScope"];
-    this.sequelize.modelManager.addModel(this);
-    this.sequelize.runHooks("afterDefine", this);
-    return this;
-  }
-  static refreshAttributes() {
-    const attributeManipulation = {};
-    this.prototype._customGetters = {};
-    this.prototype._customSetters = {};
-    ["get", "set"].forEach((type) => {
-      const opt = `${type}terMethods`;
-      const funcs = __spreadValues({}, this.options[opt]);
-      const _custom = type === "get" ? this.prototype._customGetters : this.prototype._customSetters;
-      _.each(funcs, (method, attribute) => {
-        _custom[attribute] = method;
-        if (type === "get") {
-          funcs[attribute] = function() {
-            return this.get(attribute);
-          };
-        }
-        if (type === "set") {
-          funcs[attribute] = function(value) {
-            return this.set(attribute, value);
-          };
-        }
-      });
-      _.each(this.rawAttributes, (options, attribute) => {
-        if (Object.prototype.hasOwnProperty.call(options, type)) {
-          _custom[attribute] = options[type];
-        }
-        if (type === "get") {
-          funcs[attribute] = function() {
-            return this.get(attribute);
-          };
-        }
-        if (type === "set") {
-          funcs[attribute] = function(value) {
-            return this.set(attribute, value);
-          };
-        }
-      });
-      _.each(funcs, (fct, name) => {
-        if (!attributeManipulation[name]) {
-          attributeManipulation[name] = {
-            configurable: true
-          };
-        }
-        attributeManipulation[name][type] = fct;
-      });
-    });
-    this._dataTypeChanges = {};
-    this._dataTypeSanitizers = {};
-    this._hasBooleanAttributes = false;
-    this._hasDateAttributes = false;
-    this._jsonAttributes = /* @__PURE__ */ new Set();
-    this._virtualAttributes = /* @__PURE__ */ new Set();
-    this._defaultValues = {};
-    this.prototype.validators = {};
-    this.fieldRawAttributesMap = {};
-    this.primaryKeys = {};
-    this.uniqueKeys = {};
-    _.each(this.rawAttributes, (definition, name) => {
-      definition.type = this.sequelize.normalizeDataType(definition.type);
-      definition.Model = this;
-      definition.fieldName = name;
-      definition._modelAttribute = true;
-      if (definition.field === void 0) {
-        definition.field = Utils.underscoredIf(name, this.underscored);
-      }
-      if (definition.primaryKey === true) {
-        this.primaryKeys[name] = definition;
-      }
-      this.fieldRawAttributesMap[definition.field] = definition;
-      if (definition.type._sanitize) {
-        this._dataTypeSanitizers[name] = definition.type._sanitize;
-      }
-      if (definition.type._isChanged) {
-        this._dataTypeChanges[name] = definition.type._isChanged;
-      }
-      if (definition.type instanceof DataTypes.BOOLEAN) {
-        this._hasBooleanAttributes = true;
-      } else if (definition.type instanceof DataTypes.DATE || definition.type instanceof DataTypes.DATEONLY) {
-        this._hasDateAttributes = true;
-      } else if (definition.type instanceof DataTypes.JSON) {
-        this._jsonAttributes.add(name);
-      } else if (definition.type instanceof DataTypes.VIRTUAL) {
-        this._virtualAttributes.add(name);
-      }
-      if (Object.prototype.hasOwnProperty.call(definition, "defaultValue")) {
-        this._defaultValues[name] = () => Utils.toDefaultValue(definition.defaultValue, this.sequelize.options.dialect);
-      }
-      if (Object.prototype.hasOwnProperty.call(definition, "unique") && definition.unique) {
-        let idxName;
-        if (typeof definition.unique === "object" && Object.prototype.hasOwnProperty.call(definition.unique, "name")) {
-          idxName = definition.unique.name;
-        } else if (typeof definition.unique === "string") {
-          idxName = definition.unique;
-        } else {
-          idxName = `${this.tableName}_${name}_unique`;
-        }
-        const idx = this.uniqueKeys[idxName] || { fields: [] };
-        idx.fields.push(definition.field);
-        idx.msg = idx.msg || definition.unique.msg || null;
-        idx.name = idxName || false;
-        idx.column = name;
-        idx.customIndex = definition.unique !== true;
-        this.uniqueKeys[idxName] = idx;
-      }
-      if (Object.prototype.hasOwnProperty.call(definition, "validate")) {
-        this.prototype.validators[name] = definition.validate;
-      }
-      if (definition.index === true && definition.type instanceof DataTypes.JSONB) {
-        this._indexes.push(Utils.nameIndex(this._conformIndex({
-          fields: [definition.field || name],
-          using: "gin"
-        }), this.getTableName()));
-        delete definition.index;
-      }
-    });
-    this.fieldAttributeMap = _.reduce(this.fieldRawAttributesMap, (map, value, key) => {
-      if (key !== value.fieldName) {
-        map[key] = value.fieldName;
-      }
-      return map;
-    }, {});
-    this._hasJsonAttributes = !!this._jsonAttributes.size;
-    this._hasVirtualAttributes = !!this._virtualAttributes.size;
-    this._hasDefaultValues = !_.isEmpty(this._defaultValues);
-    this.tableAttributes = _.omitBy(this.rawAttributes, (_a, key) => this._virtualAttributes.has(key));
-    this.prototype._hasCustomGetters = Object.keys(this.prototype._customGetters).length;
-    this.prototype._hasCustomSetters = Object.keys(this.prototype._customSetters).length;
-    for (const key of Object.keys(attributeManipulation)) {
-      if (Object.prototype.hasOwnProperty.call(Model.prototype, key)) {
-        this.sequelize.log(`Not overriding built-in method from model attribute: ${key}`);
-        continue;
-      }
-      Object.defineProperty(this.prototype, key, attributeManipulation[key]);
-    }
-    this.prototype.rawAttributes = this.rawAttributes;
-    this.prototype._isAttribute = (key) => Object.prototype.hasOwnProperty.call(this.prototype.rawAttributes, key);
-    this.primaryKeyAttributes = Object.keys(this.primaryKeys);
-    this.primaryKeyAttribute = this.primaryKeyAttributes[0];
-    if (this.primaryKeyAttribute) {
-      this.primaryKeyField = this.rawAttributes[this.primaryKeyAttribute].field || this.primaryKeyAttribute;
-    }
-    this._hasPrimaryKeys = this.primaryKeyAttributes.length > 0;
-    this._isPrimaryKey = (key) => this.primaryKeyAttributes.includes(key);
-    this._attributeManipulation = attributeManipulation;
-  }
-  static removeAttribute(attribute) {
-    delete this.rawAttributes[attribute];
-    this.refreshAttributes();
-  }
-  static async sync(options) {
-    options = __spreadValues(__spreadValues({}, this.options), options);
-    options.hooks = options.hooks === void 0 ? true : !!options.hooks;
-    const attributes = this.tableAttributes;
-    const rawAttributes = this.fieldRawAttributesMap;
-    if (options.hooks) {
-      await this.runHooks("beforeSync", options);
-    }
-    const tableName = this.getTableName(options);
-    let tableExists;
-    if (options.force) {
-      await this.drop(options);
-      tableExists = false;
-    } else {
-      tableExists = await this.queryInterface.tableExists(tableName, options);
-    }
-    if (!tableExists) {
-      await this.queryInterface.createTable(tableName, attributes, options, this);
-    } else {
-      await this.queryInterface.ensureEnums(tableName, attributes, options, this);
-    }
-    if (tableExists && options.alter) {
-      const tableInfos = await Promise.all([
-        this.queryInterface.describeTable(tableName, options),
-        this.queryInterface.getForeignKeyReferencesForTable(tableName, options)
-      ]);
-      const columns = tableInfos[0];
-      const foreignKeyReferences = tableInfos[1];
-      const removedConstraints = {};
-      for (const columnName in attributes) {
-        if (!Object.prototype.hasOwnProperty.call(attributes, columnName))
-          continue;
-        if (!columns[columnName] && !columns[attributes[columnName].field]) {
-          await this.queryInterface.addColumn(tableName, attributes[columnName].field || columnName, attributes[columnName], options);
-        }
-      }
-      if (options.alter === true || typeof options.alter === "object" && options.alter.drop !== false) {
-        for (const columnName in columns) {
-          if (!Object.prototype.hasOwnProperty.call(columns, columnName))
-            continue;
-          const currentAttribute = rawAttributes[columnName];
-          if (!currentAttribute) {
-            await this.queryInterface.removeColumn(tableName, columnName, options);
-            continue;
-          }
-          if (currentAttribute.primaryKey)
-            continue;
-          const references = currentAttribute.references;
-          if (currentAttribute.references) {
-            const database = this.sequelize.config.database;
-            const schema = this.sequelize.config.schema;
-            for (const foreignKeyReference of foreignKeyReferences) {
-              const constraintName = foreignKeyReference.constraintName;
-              if (!!constraintName && foreignKeyReference.tableCatalog === database && (schema ? foreignKeyReference.tableSchema === schema : true) && foreignKeyReference.referencedTableName === references.model && foreignKeyReference.referencedColumnName === references.key && (schema ? foreignKeyReference.referencedTableSchema === schema : true) && !removedConstraints[constraintName]) {
-                await this.queryInterface.removeConstraint(tableName, constraintName, options);
-                removedConstraints[constraintName] = true;
-              }
-            }
-          }
-          await this.queryInterface.changeColumn(tableName, columnName, currentAttribute, options);
-        }
-      }
-    }
-    const existingIndexes = await this.queryInterface.showIndex(tableName, options);
-    const missingIndexes = this._indexes.filter((item1) => !existingIndexes.some((item2) => item1.name === item2.name)).sort((index1, index2) => {
-      if (this.sequelize.options.dialect === "postgres") {
-        if (index1.concurrently === true)
-          return 1;
-        if (index2.concurrently === true)
-          return -1;
-      }
-      return 0;
-    });
-    for (const index of missingIndexes) {
-      await this.queryInterface.addIndex(tableName, __spreadValues(__spreadValues({}, options), index));
-    }
-    if (options.hooks) {
-      await this.runHooks("afterSync", options);
-    }
-    return this;
-  }
-  static async drop(options) {
-    return await this.queryInterface.dropTable(this.getTableName(options), options);
-  }
-  static async dropSchema(schema) {
-    return await this.queryInterface.dropSchema(schema);
-  }
-  static schema(schema, options) {
-    const clone = class extends this {
-    };
-    Object.defineProperty(clone, "name", { value: this.name });
-    clone._schema = schema;
-    if (options) {
-      if (typeof options === "string") {
-        clone._schemaDelimiter = options;
-      } else if (options.schemaDelimiter) {
-        clone._schemaDelimiter = options.schemaDelimiter;
-      }
-    }
-    return clone;
-  }
-  static getTableName() {
-    return this.queryGenerator.addSchema(this);
-  }
-  static unscoped() {
-    return this.scope();
-  }
-  static addScope(name, scope, options) {
-    options = __spreadValues({ override: false }, options);
-    if ((name === "defaultScope" && Object.keys(this.options.defaultScope).length > 0 || name in this.options.scopes) && options.override === false) {
-      throw new Error(`The scope ${name} already exists. Pass { override: true } as options to silence this error`);
-    }
-    if (name === "defaultScope") {
-      this.options.defaultScope = this._scope = scope;
-    } else {
-      this.options.scopes[name] = scope;
-    }
-  }
-  static scope(option) {
-    const self = class extends this {
-    };
-    let scope;
-    let scopeName;
-    Object.defineProperty(self, "name", { value: this.name });
-    self._scope = {};
-    self._scopeNames = [];
-    self.scoped = true;
-    if (!option) {
-      return self;
-    }
-    const options = _.flatten(arguments);
-    for (const option2 of options) {
-      scope = null;
-      scopeName = null;
-      if (_.isPlainObject(option2)) {
-        if (option2.method) {
-          if (Array.isArray(option2.method) && !!self.options.scopes[option2.method[0]]) {
-            scopeName = option2.method[0];
-            scope = self.options.scopes[scopeName].apply(self, option2.method.slice(1));
-          } else if (self.options.scopes[option2.method]) {
-            scopeName = option2.method;
-            scope = self.options.scopes[scopeName].apply(self);
-          }
-        } else {
-          scope = option2;
-        }
-      } else if (option2 === "defaultScope" && _.isPlainObject(self.options.defaultScope)) {
-        scope = self.options.defaultScope;
-      } else {
-        scopeName = option2;
-        scope = self.options.scopes[scopeName];
-        if (typeof scope === "function") {
-          scope = scope();
-        }
-      }
-      if (scope) {
-        this._conformIncludes(scope, this);
-        this._assignOptions(self._scope, Utils.cloneDeep(scope));
-        self._scopeNames.push(scopeName ? scopeName : "defaultScope");
-      } else {
-        throw new sequelizeErrors.SequelizeScopeError(`Invalid scope ${scopeName} called.`);
-      }
-    }
-    return self;
-  }
-  static async findAll(options) {
-    if (options !== void 0 && !_.isPlainObject(options)) {
-      throw new sequelizeErrors.QueryError("The argument passed to findAll must be an options object, use findByPk if you wish to pass a single primary key value");
-    }
-    if (options !== void 0 && options.attributes) {
-      if (!Array.isArray(options.attributes) && !_.isPlainObject(options.attributes)) {
-        throw new sequelizeErrors.QueryError("The attributes option must be an array of column names or an object");
-      }
-    }
-    this.warnOnInvalidOptions(options, Object.keys(this.rawAttributes));
-    const tableNames = {};
-    tableNames[this.getTableName(options)] = true;
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    _.defaults(options, { hooks: true });
-    options.rejectOnEmpty = Object.prototype.hasOwnProperty.call(options, "rejectOnEmpty") ? options.rejectOnEmpty : this.options.rejectOnEmpty;
-    this._injectScope(options);
-    if (options.hooks) {
-      await this.runHooks("beforeFind", options);
-    }
-    this._conformIncludes(options, this);
-    this._expandAttributes(options);
-    this._expandIncludeAll(options);
-    if (options.hooks) {
-      await this.runHooks("beforeFindAfterExpandIncludeAll", options);
-    }
-    options.originalAttributes = this._injectDependentVirtualAttributes(options.attributes);
-    if (options.include) {
-      options.hasJoin = true;
-      this._validateIncludedElements(options, tableNames);
-      if (options.attributes && !options.raw && this.primaryKeyAttribute && !options.attributes.includes(this.primaryKeyAttribute) && (!options.group || !options.hasSingleAssociation || options.hasMultiAssociation)) {
-        options.attributes = [this.primaryKeyAttribute].concat(options.attributes);
-      }
-    }
-    if (!options.attributes) {
-      options.attributes = Object.keys(this.rawAttributes);
-      options.originalAttributes = this._injectDependentVirtualAttributes(options.attributes);
-    }
-    this.options.whereCollection = options.where || null;
-    Utils.mapFinderOptions(options, this);
-    options = this._paranoidClause(this, options);
-    if (options.hooks) {
-      await this.runHooks("beforeFindAfterOptions", options);
-    }
-    const selectOptions = __spreadProps(__spreadValues({}, options), { tableNames: Object.keys(tableNames) });
-    const results = await this.queryInterface.select(this, this.getTableName(selectOptions), selectOptions);
-    if (options.hooks) {
-      await this.runHooks("afterFind", results, options);
-    }
-    if (_.isEmpty(results) && options.rejectOnEmpty) {
-      if (typeof options.rejectOnEmpty === "function") {
-        throw new options.rejectOnEmpty();
-      }
-      if (typeof options.rejectOnEmpty === "object") {
-        throw options.rejectOnEmpty;
-      }
-      throw new sequelizeErrors.EmptyResultError();
-    }
-    return await Model._findSeparate(results, options);
-  }
-  static warnOnInvalidOptions(options, validColumnNames) {
-    if (!_.isPlainObject(options)) {
-      return;
-    }
-    const unrecognizedOptions = Object.keys(options).filter((k) => !validQueryKeywords.has(k));
-    const unexpectedModelAttributes = _.intersection(unrecognizedOptions, validColumnNames);
-    if (!options.where && unexpectedModelAttributes.length > 0) {
-      logger.warn(`Model attributes (${unexpectedModelAttributes.join(", ")}) passed into finder method options of model ${this.name}, but the options.where object is empty. Did you forget to use options.where?`);
-    }
-  }
-  static _injectDependentVirtualAttributes(attributes) {
-    if (!this._hasVirtualAttributes)
-      return attributes;
-    if (!attributes || !Array.isArray(attributes))
-      return attributes;
-    for (const attribute of attributes) {
-      if (this._virtualAttributes.has(attribute) && this.rawAttributes[attribute].type.fields) {
-        attributes = attributes.concat(this.rawAttributes[attribute].type.fields);
-      }
-    }
-    attributes = _.uniq(attributes);
-    return attributes;
-  }
-  static async _findSeparate(results, options) {
-    if (!options.include || options.raw || !results)
-      return results;
-    const original = results;
-    if (options.plain)
-      results = [results];
-    if (!results.length)
-      return original;
-    await Promise.all(options.include.map(async (include) => {
-      if (!include.separate) {
-        return await Model._findSeparate(results.reduce((memo, result) => {
-          let associations = result.get(include.association.as);
-          if (!associations)
-            return memo;
-          if (!Array.isArray(associations))
-            associations = [associations];
-          for (let i = 0, len = associations.length; i !== len; ++i) {
-            memo.push(associations[i]);
-          }
-          return memo;
-        }, []), __spreadProps(__spreadValues({}, _.omit(options, "include", "attributes", "order", "where", "limit", "offset", "plain", "scope")), {
-          include: include.include || []
-        }));
-      }
-      const map = await include.association.get(results, __spreadValues(__spreadValues({}, _.omit(options, nonCascadingOptions)), _.omit(include, ["parent", "association", "as", "originalAttributes"])));
-      for (const result of results) {
-        result.set(include.association.as, map[result.get(include.association.sourceKey)], { raw: true });
-      }
-    }));
-    return original;
-  }
-  static async findByPk(param, options) {
-    if ([null, void 0].includes(param)) {
-      return null;
-    }
-    options = Utils.cloneDeep(options) || {};
-    if (typeof param === "number" || typeof param === "bigint" || typeof param === "string" || Buffer.isBuffer(param)) {
-      options.where = {
-        [this.primaryKeyAttribute]: param
-      };
-    } else {
-      throw new Error(`Argument passed to findByPk is invalid: ${param}`);
-    }
-    return await this.findOne(options);
-  }
-  static async findOne(options) {
-    if (options !== void 0 && !_.isPlainObject(options)) {
-      throw new Error("The argument passed to findOne must be an options object, use findByPk if you wish to pass a single primary key value");
-    }
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    if (options.limit === void 0) {
-      const uniqueSingleColumns = _.chain(this.uniqueKeys).values().filter((c) => c.fields.length === 1).map("column").value();
-      if (!options.where || !_.some(options.where, (value, key) => (key === this.primaryKeyAttribute || uniqueSingleColumns.includes(key)) && (Utils.isPrimitive(value) || Buffer.isBuffer(value)))) {
-        options.limit = 1;
-      }
-    }
-    return await this.findAll(_.defaults(options, {
-      plain: true
-    }));
-  }
-  static async aggregate(attribute, aggregateFunction, options) {
-    options = Utils.cloneDeep(options);
-    const prevAttributes = options.attributes;
-    this._injectScope(options);
-    options.attributes = prevAttributes;
-    this._conformIncludes(options, this);
-    if (options.include) {
-      this._expandIncludeAll(options);
-      this._validateIncludedElements(options);
-    }
-    const attrOptions = this.rawAttributes[attribute];
-    const field = attrOptions && attrOptions.field || attribute;
-    let aggregateColumn = this.sequelize.col(field);
-    if (options.distinct) {
-      aggregateColumn = this.sequelize.fn("DISTINCT", aggregateColumn);
-    }
-    let { group } = options;
-    if (Array.isArray(group) && Array.isArray(group[0])) {
-      noDoubleNestedGroup();
-      group = _.flatten(group);
-    }
-    options.attributes = _.unionBy(options.attributes, group, [[this.sequelize.fn(aggregateFunction, aggregateColumn), aggregateFunction]], (a) => Array.isArray(a) ? a[1] : a);
-    if (!options.dataType) {
-      if (attrOptions) {
-        options.dataType = attrOptions.type;
-      } else {
-        options.dataType = new DataTypes.FLOAT();
-      }
-    } else {
-      options.dataType = this.sequelize.normalizeDataType(options.dataType);
-    }
-    Utils.mapOptionFieldNames(options, this);
-    options = this._paranoidClause(this, options);
-    const value = await this.queryInterface.rawSelect(this.getTableName(options), options, aggregateFunction, this);
-    return value;
-  }
-  static async count(options) {
-    options = Utils.cloneDeep(options);
-    options = _.defaults(options, { hooks: true });
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    options.raw = true;
-    if (options.hooks) {
-      await this.runHooks("beforeCount", options);
-    }
-    let col = options.col || "*";
-    if (options.include) {
-      col = `${this.name}.${options.col || this.primaryKeyField}`;
-    }
-    if (options.distinct && col === "*") {
-      col = this.primaryKeyField;
-    }
-    options.plain = !options.group;
-    options.dataType = new DataTypes.INTEGER();
-    options.includeIgnoreAttributes = false;
-    options.limit = null;
-    options.offset = null;
-    options.order = null;
-    const result = await this.aggregate(col, "count", options);
-    if (Array.isArray(result)) {
-      return result.map((item) => __spreadProps(__spreadValues({}, item), {
-        count: Number(item.count)
-      }));
-    }
-    return result;
-  }
-  static async findAndCountAll(options) {
-    if (options !== void 0 && !_.isPlainObject(options)) {
-      throw new Error("The argument passed to findAndCountAll must be an options object, use findByPk if you wish to pass a single primary key value");
-    }
-    const countOptions = Utils.cloneDeep(options);
-    if (countOptions.attributes) {
-      countOptions.attributes = void 0;
-    }
-    const [count, rows] = await Promise.all([
-      this.count(countOptions),
-      this.findAll(options)
-    ]);
-    return {
-      count,
-      rows: count === 0 ? [] : rows
-    };
-  }
-  static async max(field, options) {
-    return await this.aggregate(field, "max", options);
-  }
-  static async min(field, options) {
-    return await this.aggregate(field, "min", options);
-  }
-  static async sum(field, options) {
-    return await this.aggregate(field, "sum", options);
-  }
-  static build(values, options) {
-    if (Array.isArray(values)) {
-      return this.bulkBuild(values, options);
-    }
-    return new this(values, options);
-  }
-  static bulkBuild(valueSets, options) {
-    options = __spreadValues({ isNewRecord: true }, options);
-    if (!options.includeValidated) {
-      this._conformIncludes(options, this);
-      if (options.include) {
-        this._expandIncludeAll(options);
-        this._validateIncludedElements(options);
-      }
-    }
-    if (options.attributes) {
-      options.attributes = options.attributes.map((attribute) => Array.isArray(attribute) ? attribute[1] : attribute);
-    }
-    return valueSets.map((values) => this.build(values, options));
-  }
-  static async create(values, options) {
-    options = Utils.cloneDeep(options || {});
-    return await this.build(values, {
-      isNewRecord: true,
-      attributes: options.fields,
-      include: options.include,
-      raw: options.raw,
-      silent: options.silent
-    }).save(options);
-  }
-  static async findOrBuild(options) {
-    if (!options || !options.where || arguments.length > 1) {
-      throw new Error("Missing where attribute in the options parameter passed to findOrBuild. Please note that the API has changed, and is now options only (an object with where, defaults keys, transaction etc.)");
-    }
-    let values;
-    let instance = await this.findOne(options);
-    if (instance === null) {
-      values = __spreadValues({}, options.defaults);
-      if (_.isPlainObject(options.where)) {
-        values = Utils.defaults(values, options.where);
-      }
-      instance = this.build(values, options);
-      return [instance, true];
-    }
-    return [instance, false];
-  }
-  static async findOrCreate(options) {
-    if (!options || !options.where || arguments.length > 1) {
-      throw new Error("Missing where attribute in the options parameter passed to findOrCreate. Please note that the API has changed, and is now options only (an object with where, defaults keys, transaction etc.)");
-    }
-    options = __spreadValues({}, options);
-    if (options.defaults) {
-      const defaults = Object.keys(options.defaults);
-      const unknownDefaults = defaults.filter((name) => !this.rawAttributes[name]);
-      if (unknownDefaults.length) {
-        logger.warn(`Unknown attributes (${unknownDefaults}) passed to defaults option of findOrCreate`);
-      }
-    }
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    const internalTransaction = !options.transaction;
-    let values;
-    let transaction;
-    try {
-      const t = await this.sequelize.transaction(options);
-      transaction = t;
-      options.transaction = t;
-      const found = await this.findOne(Utils.defaults({ transaction }, options));
-      if (found !== null) {
-        return [found, false];
-      }
-      values = __spreadValues({}, options.defaults);
-      if (_.isPlainObject(options.where)) {
-        values = Utils.defaults(values, options.where);
-      }
-      options.exception = true;
-      options.returning = true;
-      try {
-        const created = await this.create(values, options);
-        if (created.get(this.primaryKeyAttribute, { raw: true }) === null) {
-          throw new sequelizeErrors.UniqueConstraintError();
-        }
-        return [created, true];
-      } catch (err) {
-        if (!(err instanceof sequelizeErrors.UniqueConstraintError))
-          throw err;
-        const flattenedWhere = Utils.flattenObjectDeep(options.where);
-        const flattenedWhereKeys = Object.keys(flattenedWhere).map((name) => _.last(name.split(".")));
-        const whereFields = flattenedWhereKeys.map((name) => _.get(this.rawAttributes, `${name}.field`, name));
-        const defaultFields = options.defaults && Object.keys(options.defaults).filter((name) => this.rawAttributes[name]).map((name) => this.rawAttributes[name].field || name);
-        const errFieldKeys = Object.keys(err.fields);
-        const errFieldsWhereIntersects = Utils.intersects(errFieldKeys, whereFields);
-        if (defaultFields && !errFieldsWhereIntersects && Utils.intersects(errFieldKeys, defaultFields)) {
-          throw err;
-        }
-        if (errFieldsWhereIntersects) {
-          _.each(err.fields, (value, key) => {
-            const name = this.fieldRawAttributesMap[key].fieldName;
-            if (value.toString() !== options.where[name].toString()) {
-              throw new Error(`${this.name}#findOrCreate: value used for ${name} was not equal for both the find and the create calls, '${options.where[name]}' vs '${value}'`);
-            }
-          });
-        }
-        const otherCreated = await this.findOne(Utils.defaults({
-          transaction: internalTransaction ? null : transaction
-        }, options));
-        if (otherCreated === null)
-          throw err;
-        return [otherCreated, false];
-      }
-    } finally {
-      if (internalTransaction && transaction) {
-        await transaction.commit();
-      }
-    }
-  }
-  static async findCreateFind(options) {
-    if (!options || !options.where) {
-      throw new Error("Missing where attribute in the options parameter passed to findCreateFind.");
-    }
-    let values = __spreadValues({}, options.defaults);
-    if (_.isPlainObject(options.where)) {
-      values = Utils.defaults(values, options.where);
-    }
-    const found = await this.findOne(options);
-    if (found)
-      return [found, false];
-    try {
-      const createOptions = __spreadValues({}, options);
-      if (this.sequelize.options.dialect === "postgres" && options.transaction) {
-        createOptions.ignoreDuplicates = true;
-      }
-      const created = await this.create(values, createOptions);
-      return [created, true];
-    } catch (err) {
-      if (!(err instanceof sequelizeErrors.UniqueConstraintError || err instanceof sequelizeErrors.EmptyResultError)) {
-        throw err;
-      }
-      const foundAgain = await this.findOne(options);
-      return [foundAgain, false];
-    }
-  }
-  static async upsert(values, options) {
-    options = __spreadValues({
-      hooks: true,
-      returning: true,
-      validate: true
-    }, Utils.cloneDeep(options));
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    const createdAtAttr = this._timestampAttributes.createdAt;
-    const updatedAtAttr = this._timestampAttributes.updatedAt;
-    const hasPrimary = this.primaryKeyField in values || this.primaryKeyAttribute in values;
-    const instance = this.build(values);
-    options.model = this;
-    options.instance = instance;
-    const changed = Array.from(instance._changed);
-    if (!options.fields) {
-      options.fields = changed;
-    }
-    if (options.validate) {
-      await instance.validate(options);
-    }
-    const updatedDataValues = _.pick(instance.dataValues, changed);
-    const insertValues = Utils.mapValueFieldNames(instance.dataValues, Object.keys(instance.rawAttributes), this);
-    const updateValues = Utils.mapValueFieldNames(updatedDataValues, options.fields, this);
-    const now = Utils.now(this.sequelize.options.dialect);
-    if (createdAtAttr && !insertValues[createdAtAttr]) {
-      const field = this.rawAttributes[createdAtAttr].field || createdAtAttr;
-      insertValues[field] = this._getDefaultTimestamp(createdAtAttr) || now;
-    }
-    if (updatedAtAttr && !insertValues[updatedAtAttr]) {
-      const field = this.rawAttributes[updatedAtAttr].field || updatedAtAttr;
-      insertValues[field] = updateValues[field] = this._getDefaultTimestamp(updatedAtAttr) || now;
-    }
-    if (this.sequelize.options.dialect === "db2") {
-      this.uniqno = this.sequelize.dialect.queryGenerator.addUniqueFields(insertValues, this.rawAttributes, this.uniqno);
-    }
-    if (!hasPrimary && this.primaryKeyAttribute && !this.rawAttributes[this.primaryKeyAttribute].defaultValue) {
-      delete insertValues[this.primaryKeyField];
-      delete updateValues[this.primaryKeyField];
-    }
-    if (options.hooks) {
-      await this.runHooks("beforeUpsert", values, options);
-    }
-    const result = await this.queryInterface.upsert(this.getTableName(options), insertValues, updateValues, instance.where(), options);
-    const [record] = result;
-    record.isNewRecord = false;
-    if (options.hooks) {
-      await this.runHooks("afterUpsert", result, options);
-      return result;
-    }
-    return result;
-  }
-  static async bulkCreate(records, options = {}) {
-    if (!records.length) {
-      return [];
-    }
-    const dialect = this.sequelize.options.dialect;
-    const now = Utils.now(this.sequelize.options.dialect);
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    options.model = this;
-    if (!options.includeValidated) {
-      this._conformIncludes(options, this);
-      if (options.include) {
-        this._expandIncludeAll(options);
-        this._validateIncludedElements(options);
-      }
-    }
-    const instances = records.map((values) => this.build(values, { isNewRecord: true, include: options.include }));
-    const recursiveBulkCreate = async (instances2, options2) => {
-      options2 = __spreadValues({
-        validate: false,
-        hooks: true,
-        individualHooks: false,
-        ignoreDuplicates: false
-      }, options2);
-      if (options2.returning === void 0) {
-        if (options2.association) {
-          options2.returning = false;
-        } else {
-          options2.returning = true;
-        }
-      }
-      if (options2.ignoreDuplicates && !this.sequelize.dialect.supports.inserts.ignoreDuplicates && !this.sequelize.dialect.supports.inserts.onConflictDoNothing) {
-        throw new Error(`${dialect} does not support the ignoreDuplicates option.`);
-      }
-      if (options2.updateOnDuplicate && (dialect !== "mysql" && dialect !== "mariadb" && dialect !== "sqlite" && dialect !== "postgres")) {
-        throw new Error(`${dialect} does not support the updateOnDuplicate option.`);
-      }
-      const model = options2.model;
-      options2.fields = options2.fields || Object.keys(model.rawAttributes);
-      const createdAtAttr = model._timestampAttributes.createdAt;
-      const updatedAtAttr = model._timestampAttributes.updatedAt;
-      if (options2.updateOnDuplicate !== void 0) {
-        if (Array.isArray(options2.updateOnDuplicate) && options2.updateOnDuplicate.length) {
-          options2.updateOnDuplicate = _.intersection(_.without(Object.keys(model.tableAttributes), createdAtAttr), options2.updateOnDuplicate);
-        } else {
-          throw new Error("updateOnDuplicate option only supports non-empty array.");
-        }
-      }
-      if (options2.hooks) {
-        await model.runHooks("beforeBulkCreate", instances2, options2);
-      }
-      if (options2.validate) {
-        const errors = [];
-        const validateOptions = __spreadValues({}, options2);
-        validateOptions.hooks = options2.individualHooks;
-        await Promise.all(instances2.map(async (instance) => {
-          try {
-            await instance.validate(validateOptions);
-          } catch (err) {
-            errors.push(new sequelizeErrors.BulkRecordError(err, instance));
-          }
-        }));
-        delete options2.skip;
-        if (errors.length) {
-          throw new sequelizeErrors.AggregateError(errors);
-        }
-      }
-      if (options2.individualHooks) {
-        await Promise.all(instances2.map(async (instance) => {
-          const individualOptions = __spreadProps(__spreadValues({}, options2), {
-            validate: false,
-            hooks: true
-          });
-          delete individualOptions.fields;
-          delete individualOptions.individualHooks;
-          delete individualOptions.ignoreDuplicates;
-          await instance.save(individualOptions);
-        }));
-      } else {
-        if (options2.include && options2.include.length) {
-          await Promise.all(options2.include.filter((include) => include.association instanceof BelongsTo).map(async (include) => {
-            const associationInstances = [];
-            const associationInstanceIndexToInstanceMap = [];
-            for (const instance of instances2) {
-              const associationInstance = instance.get(include.as);
-              if (associationInstance) {
-                associationInstances.push(associationInstance);
-                associationInstanceIndexToInstanceMap.push(instance);
-              }
-            }
-            if (!associationInstances.length) {
-              return;
-            }
-            const includeOptions = _(Utils.cloneDeep(include)).omit(["association"]).defaults({
-              transaction: options2.transaction,
-              logging: options2.logging
-            }).value();
-            const createdAssociationInstances = await recursiveBulkCreate(associationInstances, includeOptions);
-            for (const idx in createdAssociationInstances) {
-              const associationInstance = createdAssociationInstances[idx];
-              const instance = associationInstanceIndexToInstanceMap[idx];
-              await include.association.set(instance, associationInstance, { save: false, logging: options2.logging });
-            }
-          }));
-        }
-        records = instances2.map((instance) => {
-          const values = instance.dataValues;
-          if (createdAtAttr && !values[createdAtAttr]) {
-            values[createdAtAttr] = now;
-            if (!options2.fields.includes(createdAtAttr)) {
-              options2.fields.push(createdAtAttr);
-            }
-          }
-          if (updatedAtAttr && !values[updatedAtAttr]) {
-            values[updatedAtAttr] = now;
-            if (!options2.fields.includes(updatedAtAttr)) {
-              options2.fields.push(updatedAtAttr);
-            }
-          }
-          const out = Utils.mapValueFieldNames(values, options2.fields, model);
-          for (const key of model._virtualAttributes) {
-            delete out[key];
-          }
-          return out;
-        });
-        const fieldMappedAttributes = {};
-        for (const attr in model.tableAttributes) {
-          fieldMappedAttributes[model.rawAttributes[attr].field || attr] = model.rawAttributes[attr];
-        }
-        if (options2.updateOnDuplicate) {
-          options2.updateOnDuplicate = options2.updateOnDuplicate.map((attr) => model.rawAttributes[attr].field || attr);
-          if (options2.conflictAttributes) {
-            options2.upsertKeys = options2.conflictAttributes.map((attrName) => model.rawAttributes[attrName].field || attrName);
-          } else {
-            const upsertKeys = [];
-            for (const i of model._indexes) {
-              if (i.unique && !i.where) {
-                upsertKeys.push(...i.fields);
-              }
-            }
-            const firstUniqueKey = Object.values(model.uniqueKeys).find((c) => c.fields.length > 0);
-            if (firstUniqueKey && firstUniqueKey.fields) {
-              upsertKeys.push(...firstUniqueKey.fields);
-            }
-            options2.upsertKeys = upsertKeys.length > 0 ? upsertKeys : Object.values(model.primaryKeys).map((x) => x.field);
-          }
-        }
-        if (options2.returning && Array.isArray(options2.returning)) {
-          options2.returning = options2.returning.map((attr) => _.get(model.rawAttributes[attr], "field", attr));
-        }
-        const results = await model.queryInterface.bulkInsert(model.getTableName(options2), records, options2, fieldMappedAttributes);
-        if (Array.isArray(results)) {
-          results.forEach((result, i) => {
-            const instance = instances2[i];
-            for (const key in result) {
-              if (!instance || key === model.primaryKeyAttribute && instance.get(model.primaryKeyAttribute) && ["mysql", "mariadb", "sqlite"].includes(dialect)) {
-                continue;
-              }
-              if (Object.prototype.hasOwnProperty.call(result, key)) {
-                const record = result[key];
-                const attr = _.find(model.rawAttributes, (attribute) => attribute.fieldName === key || attribute.field === key);
-                instance.dataValues[attr && attr.fieldName || key] = record;
-              }
-            }
-          });
-        }
-      }
-      if (options2.include && options2.include.length) {
-        await Promise.all(options2.include.filter((include) => !(include.association instanceof BelongsTo || include.parent && include.parent.association instanceof BelongsToMany)).map(async (include) => {
-          const associationInstances = [];
-          const associationInstanceIndexToInstanceMap = [];
-          for (const instance of instances2) {
-            let associated = instance.get(include.as);
-            if (!Array.isArray(associated))
-              associated = [associated];
-            for (const associationInstance of associated) {
-              if (associationInstance) {
-                if (!(include.association instanceof BelongsToMany)) {
-                  associationInstance.set(include.association.foreignKey, instance.get(include.association.sourceKey || instance.constructor.primaryKeyAttribute, { raw: true }), { raw: true });
-                  Object.assign(associationInstance, include.association.scope);
-                }
-                associationInstances.push(associationInstance);
-                associationInstanceIndexToInstanceMap.push(instance);
-              }
-            }
-          }
-          if (!associationInstances.length) {
-            return;
-          }
-          const includeOptions = _(Utils.cloneDeep(include)).omit(["association"]).defaults({
-            transaction: options2.transaction,
-            logging: options2.logging
-          }).value();
-          const createdAssociationInstances = await recursiveBulkCreate(associationInstances, includeOptions);
-          if (include.association instanceof BelongsToMany) {
-            const valueSets = [];
-            for (const idx in createdAssociationInstances) {
-              const associationInstance = createdAssociationInstances[idx];
-              const instance = associationInstanceIndexToInstanceMap[idx];
-              const values = __spreadValues({
-                [include.association.foreignKey]: instance.get(instance.constructor.primaryKeyAttribute, { raw: true }),
-                [include.association.otherKey]: associationInstance.get(associationInstance.constructor.primaryKeyAttribute, { raw: true })
-              }, include.association.through.scope);
-              if (associationInstance[include.association.through.model.name]) {
-                for (const attr of Object.keys(include.association.through.model.rawAttributes)) {
-                  if (include.association.through.model.rawAttributes[attr]._autoGenerated || attr === include.association.foreignKey || attr === include.association.otherKey || typeof associationInstance[include.association.through.model.name][attr] === "undefined") {
-                    continue;
-                  }
-                  values[attr] = associationInstance[include.association.through.model.name][attr];
-                }
-              }
-              valueSets.push(values);
-            }
-            const throughOptions = _(Utils.cloneDeep(include)).omit(["association", "attributes"]).defaults({
-              transaction: options2.transaction,
-              logging: options2.logging
-            }).value();
-            throughOptions.model = include.association.throughModel;
-            const throughInstances = include.association.throughModel.bulkBuild(valueSets, throughOptions);
-            await recursiveBulkCreate(throughInstances, throughOptions);
-          }
-        }));
-      }
-      instances2.forEach((instance) => {
-        for (const attr in model.rawAttributes) {
-          if (model.rawAttributes[attr].field && instance.dataValues[model.rawAttributes[attr].field] !== void 0 && model.rawAttributes[attr].field !== attr) {
-            instance.dataValues[attr] = instance.dataValues[model.rawAttributes[attr].field];
-            delete instance.dataValues[model.rawAttributes[attr].field];
-          }
-          instance._previousDataValues[attr] = instance.dataValues[attr];
-          instance.changed(attr, false);
-        }
-        instance.isNewRecord = false;
-      });
-      if (options2.hooks) {
-        await model.runHooks("afterBulkCreate", instances2, options2);
-      }
-      return instances2;
-    };
-    return await recursiveBulkCreate(instances, options);
-  }
-  static async truncate(options) {
-    options = Utils.cloneDeep(options) || {};
-    options.truncate = true;
-    return await this.destroy(options);
-  }
-  static async destroy(options) {
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    this._injectScope(options);
-    if (!options || !(options.where || options.truncate)) {
-      throw new Error("Missing where or truncate attribute in the options parameter of model.destroy.");
-    }
-    if (!options.truncate && !_.isPlainObject(options.where) && !Array.isArray(options.where) && !(options.where instanceof Utils.SequelizeMethod)) {
-      throw new Error("Expected plain object, array or sequelize method in the options.where parameter of model.destroy.");
-    }
-    options = _.defaults(options, {
-      hooks: true,
-      individualHooks: false,
-      force: false,
-      cascade: false,
-      restartIdentity: false
-    });
-    options.type = QueryTypes.BULKDELETE;
-    Utils.mapOptionFieldNames(options, this);
-    options.model = this;
-    if (options.hooks) {
-      await this.runHooks("beforeBulkDestroy", options);
-    }
-    let instances;
-    if (options.individualHooks) {
-      instances = await this.findAll({ where: options.where, transaction: options.transaction, logging: options.logging, benchmark: options.benchmark });
-      await Promise.all(instances.map((instance) => this.runHooks("beforeDestroy", instance, options)));
-    }
-    let result;
-    if (this._timestampAttributes.deletedAt && !options.force) {
-      options.type = QueryTypes.BULKUPDATE;
-      const attrValueHash = {};
-      const deletedAtAttribute = this.rawAttributes[this._timestampAttributes.deletedAt];
-      const field = this.rawAttributes[this._timestampAttributes.deletedAt].field;
-      const where = {
-        [field]: Object.prototype.hasOwnProperty.call(deletedAtAttribute, "defaultValue") ? deletedAtAttribute.defaultValue : null
-      };
-      attrValueHash[field] = Utils.now(this.sequelize.options.dialect);
-      result = await this.queryInterface.bulkUpdate(this.getTableName(options), attrValueHash, Object.assign(where, options.where), options, this.rawAttributes);
-    } else {
-      result = await this.queryInterface.bulkDelete(this.getTableName(options), options.where, options, this);
-    }
-    if (options.individualHooks) {
-      await Promise.all(instances.map((instance) => this.runHooks("afterDestroy", instance, options)));
-    }
-    if (options.hooks) {
-      await this.runHooks("afterBulkDestroy", options);
-    }
-    return result;
-  }
-  static async restore(options) {
-    if (!this._timestampAttributes.deletedAt)
-      throw new Error("Model is not paranoid");
-    options = __spreadValues({
-      hooks: true,
-      individualHooks: false
-    }, options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    options.type = QueryTypes.RAW;
-    options.model = this;
-    Utils.mapOptionFieldNames(options, this);
-    if (options.hooks) {
-      await this.runHooks("beforeBulkRestore", options);
-    }
-    let instances;
-    if (options.individualHooks) {
-      instances = await this.findAll({ where: options.where, transaction: options.transaction, logging: options.logging, benchmark: options.benchmark, paranoid: false });
-      await Promise.all(instances.map((instance) => this.runHooks("beforeRestore", instance, options)));
-    }
-    const attrValueHash = {};
-    const deletedAtCol = this._timestampAttributes.deletedAt;
-    const deletedAtAttribute = this.rawAttributes[deletedAtCol];
-    const deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, "defaultValue") ? deletedAtAttribute.defaultValue : null;
-    attrValueHash[deletedAtAttribute.field || deletedAtCol] = deletedAtDefaultValue;
-    options.omitNull = false;
-    const result = await this.queryInterface.bulkUpdate(this.getTableName(options), attrValueHash, options.where, options, this.rawAttributes);
-    if (options.individualHooks) {
-      await Promise.all(instances.map((instance) => this.runHooks("afterRestore", instance, options)));
-    }
-    if (options.hooks) {
-      await this.runHooks("afterBulkRestore", options);
-    }
-    return result;
-  }
-  static async update(values, options) {
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    this._injectScope(options);
-    this._optionsMustContainWhere(options);
-    options = this._paranoidClause(this, _.defaults(options, {
-      validate: true,
-      hooks: true,
-      individualHooks: false,
-      returning: false,
-      force: false,
-      sideEffects: true
-    }));
-    options.type = QueryTypes.BULKUPDATE;
-    values = _.omitBy(values, (value) => value === void 0);
-    if (options.fields && options.fields instanceof Array) {
-      for (const key of Object.keys(values)) {
-        if (!options.fields.includes(key)) {
-          delete values[key];
-        }
-      }
-    } else {
-      const updatedAtAttr = this._timestampAttributes.updatedAt;
-      options.fields = _.intersection(Object.keys(values), Object.keys(this.tableAttributes));
-      if (updatedAtAttr && !options.fields.includes(updatedAtAttr)) {
-        options.fields.push(updatedAtAttr);
-      }
-    }
-    if (this._timestampAttributes.updatedAt && !options.silent) {
-      values[this._timestampAttributes.updatedAt] = this._getDefaultTimestamp(this._timestampAttributes.updatedAt) || Utils.now(this.sequelize.options.dialect);
-    }
-    options.model = this;
-    let valuesUse;
-    if (options.validate) {
-      const build = this.build(values);
-      build.set(this._timestampAttributes.updatedAt, values[this._timestampAttributes.updatedAt], { raw: true });
-      if (options.sideEffects) {
-        Object.assign(values, _.pick(build.get(), build.changed()));
-        options.fields = _.union(options.fields, Object.keys(values));
-      }
-      options.skip = _.difference(Object.keys(this.rawAttributes), Object.keys(values));
-      const attributes = await build.validate(options);
-      options.skip = void 0;
-      if (attributes && attributes.dataValues) {
-        values = _.pick(attributes.dataValues, Object.keys(values));
-      }
-    }
-    if (options.hooks) {
-      options.attributes = values;
-      await this.runHooks("beforeBulkUpdate", options);
-      values = options.attributes;
-      delete options.attributes;
-    }
-    valuesUse = values;
-    let instances;
-    let updateDoneRowByRow = false;
-    if (options.individualHooks) {
-      instances = await this.findAll({
-        where: options.where,
-        transaction: options.transaction,
-        logging: options.logging,
-        benchmark: options.benchmark,
-        paranoid: options.paranoid
-      });
-      if (instances.length) {
-        let changedValues;
-        let different = false;
-        instances = await Promise.all(instances.map(async (instance) => {
-          Object.assign(instance.dataValues, values);
-          _.forIn(valuesUse, (newValue, attr) => {
-            if (newValue !== instance._previousDataValues[attr]) {
-              instance.setDataValue(attr, newValue);
-            }
-          });
-          await this.runHooks("beforeUpdate", instance, options);
-          if (!different) {
-            const thisChangedValues = {};
-            _.forIn(instance.dataValues, (newValue, attr) => {
-              if (newValue !== instance._previousDataValues[attr]) {
-                thisChangedValues[attr] = newValue;
-              }
-            });
-            if (!changedValues) {
-              changedValues = thisChangedValues;
-            } else {
-              different = !_.isEqual(changedValues, thisChangedValues);
-            }
-          }
-          return instance;
-        }));
-        if (!different) {
-          const keys = Object.keys(changedValues);
-          if (keys.length) {
-            valuesUse = changedValues;
-            options.fields = _.union(options.fields, keys);
-          }
-        } else {
-          instances = await Promise.all(instances.map(async (instance) => {
-            const individualOptions = __spreadProps(__spreadValues({}, options), {
-              hooks: false,
-              validate: false
-            });
-            delete individualOptions.individualHooks;
-            return instance.save(individualOptions);
-          }));
-          updateDoneRowByRow = true;
-        }
-      }
-    }
-    let result;
-    if (updateDoneRowByRow) {
-      result = [instances.length, instances];
-    } else if (_.isEmpty(valuesUse) || Object.keys(valuesUse).length === 1 && valuesUse[this._timestampAttributes.updatedAt]) {
-      result = [0];
-    } else {
-      valuesUse = Utils.mapValueFieldNames(valuesUse, options.fields, this);
-      options = Utils.mapOptionFieldNames(options, this);
-      options.hasTrigger = this.options ? this.options.hasTrigger : false;
-      const affectedRows = await this.queryInterface.bulkUpdate(this.getTableName(options), valuesUse, options.where, options, this.tableAttributes);
-      if (options.returning) {
-        result = [affectedRows.length, affectedRows];
-        instances = affectedRows;
-      } else {
-        result = [affectedRows];
-      }
-    }
-    if (options.individualHooks) {
-      await Promise.all(instances.map((instance) => this.runHooks("afterUpdate", instance, options)));
-      result[1] = instances;
-    }
-    if (options.hooks) {
-      options.attributes = values;
-      await this.runHooks("afterBulkUpdate", options);
-      delete options.attributes;
-    }
-    return result;
-  }
-  static async describe(schema, options) {
-    return await this.queryInterface.describeTable(this.tableName, __spreadValues({ schema: schema || this._schema || void 0 }, options));
-  }
-  static _getDefaultTimestamp(attr) {
-    if (!!this.rawAttributes[attr] && !!this.rawAttributes[attr].defaultValue) {
-      return Utils.toDefaultValue(this.rawAttributes[attr].defaultValue, this.sequelize.options.dialect);
-    }
-    return void 0;
-  }
-  static _expandAttributes(options) {
-    if (!_.isPlainObject(options.attributes)) {
-      return;
-    }
-    let attributes = Object.keys(this.rawAttributes);
-    if (options.attributes.exclude) {
-      attributes = attributes.filter((elem) => !options.attributes.exclude.includes(elem));
-    }
-    if (options.attributes.include) {
-      attributes = attributes.concat(options.attributes.include);
-    }
-    options.attributes = attributes;
-  }
-  static _injectScope(options) {
-    const scope = Utils.cloneDeep(this._scope);
-    this._defaultsOptions(options, scope);
-  }
-  static [Symbol.for("nodejs.util.inspect.custom")]() {
-    return this.name;
-  }
-  static hasAlias(alias) {
-    return Object.prototype.hasOwnProperty.call(this.associations, alias);
-  }
-  static async increment(fields, options) {
-    options = options || {};
-    if (typeof fields === "string")
-      fields = [fields];
-    if (Array.isArray(fields)) {
-      fields = fields.map((f) => {
-        if (this.rawAttributes[f] && this.rawAttributes[f].field && this.rawAttributes[f].field !== f) {
-          return this.rawAttributes[f].field;
-        }
-        return f;
-      });
-    } else if (fields && typeof fields === "object") {
-      fields = Object.keys(fields).reduce((rawFields, f) => {
-        if (this.rawAttributes[f] && this.rawAttributes[f].field && this.rawAttributes[f].field !== f) {
-          rawFields[this.rawAttributes[f].field] = fields[f];
-        } else {
-          rawFields[f] = fields[f];
-        }
-        return rawFields;
-      }, {});
-    }
-    this._injectScope(options);
-    this._optionsMustContainWhere(options);
-    options = Utils.defaults({}, options, {
-      by: 1,
-      where: {},
-      increment: true
-    });
-    const isSubtraction = !options.increment;
-    Utils.mapOptionFieldNames(options, this);
-    const where = __spreadValues({}, options.where);
-    let incrementAmountsByField = {};
-    if (Array.isArray(fields)) {
-      incrementAmountsByField = {};
-      for (const field of fields) {
-        incrementAmountsByField[field] = options.by;
-      }
-    } else {
-      incrementAmountsByField = fields;
-    }
-    if (this._versionAttribute) {
-      incrementAmountsByField[this._versionAttribute] = isSubtraction ? -1 : 1;
-    }
-    const extraAttributesToBeUpdated = {};
-    const updatedAtAttr = this._timestampAttributes.updatedAt;
-    if (!options.silent && updatedAtAttr && !incrementAmountsByField[updatedAtAttr]) {
-      const attrName = this.rawAttributes[updatedAtAttr].field || updatedAtAttr;
-      extraAttributesToBeUpdated[attrName] = this._getDefaultTimestamp(updatedAtAttr) || Utils.now(this.sequelize.options.dialect);
-    }
-    const tableName = this.getTableName(options);
-    let affectedRows;
-    if (isSubtraction) {
-      affectedRows = await this.queryInterface.decrement(this, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);
-    } else {
-      affectedRows = await this.queryInterface.increment(this, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options);
-    }
-    if (options.returning) {
-      return [affectedRows, affectedRows.length];
-    }
-    return [affectedRows];
-  }
-  static async decrement(fields, options) {
-    return this.increment(fields, __spreadProps(__spreadValues({
-      by: 1
-    }, options), {
-      increment: false
-    }));
-  }
-  static _optionsMustContainWhere(options) {
-    assert(options && options.where, "Missing where attribute in the options parameter");
-    assert(_.isPlainObject(options.where) || Array.isArray(options.where) || options.where instanceof Utils.SequelizeMethod, "Expected plain object, array or sequelize method in the options.where parameter");
-  }
-  where(checkVersion) {
-    const where = this.constructor.primaryKeyAttributes.reduce((result, attribute) => {
-      result[attribute] = this.get(attribute, { raw: true });
-      return result;
-    }, {});
-    if (_.size(where) === 0) {
-      return this.constructor.options.whereCollection;
-    }
-    const versionAttr = this.constructor._versionAttribute;
-    if (checkVersion && versionAttr) {
-      where[versionAttr] = this.get(versionAttr, { raw: true });
-    }
-    return Utils.mapWhereFieldNames(where, this.constructor);
-  }
-  toString() {
-    return `[object SequelizeInstance:${this.constructor.name}]`;
-  }
-  getDataValue(key) {
-    return this.dataValues[key];
-  }
-  setDataValue(key, value) {
-    const originalValue = this._previousDataValues[key];
-    if (!_.isEqual(value, originalValue)) {
-      this.changed(key, true);
-    }
-    this.dataValues[key] = value;
-  }
-  get(key, options) {
-    if (options === void 0 && typeof key === "object") {
-      options = key;
-      key = void 0;
-    }
-    options = options || {};
-    if (key) {
-      if (Object.prototype.hasOwnProperty.call(this._customGetters, key) && !options.raw) {
-        return this._customGetters[key].call(this, key, options);
-      }
-      if (options.plain && this._options.include && this._options.includeNames.includes(key)) {
-        if (Array.isArray(this.dataValues[key])) {
-          return this.dataValues[key].map((instance) => instance.get(options));
-        }
-        if (this.dataValues[key] instanceof Model) {
-          return this.dataValues[key].get(options);
-        }
-        return this.dataValues[key];
-      }
-      return this.dataValues[key];
-    }
-    if (this._hasCustomGetters || options.plain && this._options.include || options.clone) {
-      const values = {};
-      let _key;
-      if (this._hasCustomGetters) {
-        for (_key in this._customGetters) {
-          if (this._options.attributes && !this._options.attributes.includes(_key)) {
-            continue;
-          }
-          if (Object.prototype.hasOwnProperty.call(this._customGetters, _key)) {
-            values[_key] = this.get(_key, options);
-          }
-        }
-      }
-      for (_key in this.dataValues) {
-        if (!Object.prototype.hasOwnProperty.call(values, _key) && Object.prototype.hasOwnProperty.call(this.dataValues, _key)) {
-          values[_key] = this.get(_key, options);
-        }
-      }
-      return values;
-    }
-    return this.dataValues;
-  }
-  set(key, value, options) {
-    let values;
-    let originalValue;
-    if (typeof key === "object" && key !== null) {
-      values = key;
-      options = value || {};
-      if (options.reset) {
-        this.dataValues = {};
-        for (const key2 in values) {
-          this.changed(key2, false);
-        }
-      }
-      if (options.raw && !(this._options && this._options.include) && !(options && options.attributes) && !this.constructor._hasDateAttributes && !this.constructor._hasBooleanAttributes) {
-        if (Object.keys(this.dataValues).length) {
-          Object.assign(this.dataValues, values);
-        } else {
-          this.dataValues = values;
-        }
-        this._previousDataValues = __spreadValues({}, this.dataValues);
-      } else {
-        if (options.attributes) {
-          const setKeys = (data) => {
-            for (const k of data) {
-              if (values[k] === void 0) {
-                continue;
-              }
-              this.set(k, values[k], options);
-            }
-          };
-          setKeys(options.attributes);
-          if (this.constructor._hasVirtualAttributes) {
-            setKeys(this.constructor._virtualAttributes);
-          }
-          if (this._options.includeNames) {
-            setKeys(this._options.includeNames);
-          }
-        } else {
-          for (const key2 in values) {
-            this.set(key2, values[key2], options);
-          }
-        }
-        if (options.raw) {
-          this._previousDataValues = __spreadValues({}, this.dataValues);
-        }
-      }
-      return this;
-    }
-    if (!options)
-      options = {};
-    if (!options.raw) {
-      originalValue = this.dataValues[key];
-    }
-    if (!options.raw && this._customSetters[key]) {
-      this._customSetters[key].call(this, value, key);
-      const newValue = this.dataValues[key];
-      if (!_.isEqual(newValue, originalValue)) {
-        this._previousDataValues[key] = originalValue;
-        this.changed(key, true);
-      }
-    } else {
-      if (this._options && this._options.include && this._options.includeNames.includes(key)) {
-        this._setInclude(key, value, options);
-        return this;
-      }
-      if (!options.raw) {
-        if (!this._isAttribute(key)) {
-          if (key.includes(".") && this.constructor._jsonAttributes.has(key.split(".")[0])) {
-            const previousNestedValue = Dottie.get(this.dataValues, key);
-            if (!_.isEqual(previousNestedValue, value)) {
-              Dottie.set(this.dataValues, key, value);
-              this.changed(key.split(".")[0], true);
-            }
-          }
-          return this;
-        }
-        if (this.constructor._hasPrimaryKeys && originalValue && this.constructor._isPrimaryKey(key)) {
-          return this;
-        }
-        if (!this.isNewRecord && this.constructor._hasReadOnlyAttributes && this.constructor._readOnlyAttributes.has(key)) {
-          return this;
-        }
-      }
-      if (!(value instanceof Utils.SequelizeMethod) && Object.prototype.hasOwnProperty.call(this.constructor._dataTypeSanitizers, key)) {
-        value = this.constructor._dataTypeSanitizers[key].call(this, value, options);
-      }
-      if (!options.raw && (value instanceof Utils.SequelizeMethod || !(value instanceof Utils.SequelizeMethod) && this.constructor._dataTypeChanges[key] && this.constructor._dataTypeChanges[key].call(this, value, originalValue, options) || !this.constructor._dataTypeChanges[key] && !_.isEqual(value, originalValue))) {
-        this._previousDataValues[key] = originalValue;
-        this.changed(key, true);
-      }
-      this.dataValues[key] = value;
-    }
-    return this;
-  }
-  setAttributes(updates) {
-    return this.set(updates);
-  }
-  changed(key, value) {
-    if (key === void 0) {
-      if (this._changed.size > 0) {
-        return Array.from(this._changed);
-      }
-      return false;
-    }
-    if (value === true) {
-      this._changed.add(key);
-      return this;
-    }
-    if (value === false) {
-      this._changed.delete(key);
-      return this;
-    }
-    return this._changed.has(key);
-  }
-  previous(key) {
-    if (key) {
-      return this._previousDataValues[key];
-    }
-    return _.pickBy(this._previousDataValues, (value, key2) => this.changed(key2));
-  }
-  _setInclude(key, value, options) {
-    if (!Array.isArray(value))
-      value = [value];
-    if (value[0] instanceof Model) {
-      value = value.map((instance) => instance.dataValues);
-    }
-    const include = this._options.includeMap[key];
-    const association = include.association;
-    const accessor = key;
-    const primaryKeyAttribute = include.model.primaryKeyAttribute;
-    const childOptions = {
-      isNewRecord: this.isNewRecord,
-      include: include.include,
-      includeNames: include.includeNames,
-      includeMap: include.includeMap,
-      includeValidated: true,
-      raw: options.raw,
-      attributes: include.originalAttributes
-    };
-    let isEmpty;
-    if (include.originalAttributes === void 0 || include.originalAttributes.length) {
-      if (association.isSingleAssociation) {
-        if (Array.isArray(value)) {
-          value = value[0];
-        }
-        isEmpty = value && value[primaryKeyAttribute] === null || value === null;
-        this[accessor] = this.dataValues[accessor] = isEmpty ? null : include.model.build(value, childOptions);
-      } else {
-        isEmpty = value[0] && value[0][primaryKeyAttribute] === null;
-        this[accessor] = this.dataValues[accessor] = isEmpty ? [] : include.model.bulkBuild(value, childOptions);
-      }
-    }
-  }
-  async save(options) {
-    if (arguments.length > 1) {
-      throw new Error("The second argument was removed in favor of the options object.");
-    }
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    options = _.defaults(options, {
-      hooks: true,
-      validate: true
-    });
-    if (!options.fields) {
-      if (this.isNewRecord) {
-        options.fields = Object.keys(this.constructor.rawAttributes);
-      } else {
-        options.fields = _.intersection(this.changed(), Object.keys(this.constructor.rawAttributes));
-      }
-      options.defaultFields = options.fields;
-    }
-    if (options.returning === void 0) {
-      if (options.association) {
-        options.returning = false;
-      } else if (this.isNewRecord) {
-        options.returning = true;
-      }
-    }
-    const primaryKeyName = this.constructor.primaryKeyAttribute;
-    const primaryKeyAttribute = primaryKeyName && this.constructor.rawAttributes[primaryKeyName];
-    const createdAtAttr = this.constructor._timestampAttributes.createdAt;
-    const versionAttr = this.constructor._versionAttribute;
-    const hook = this.isNewRecord ? "Create" : "Update";
-    const wasNewRecord = this.isNewRecord;
-    const now = Utils.now(this.sequelize.options.dialect);
-    let updatedAtAttr = this.constructor._timestampAttributes.updatedAt;
-    if (updatedAtAttr && options.fields.length > 0 && !options.fields.includes(updatedAtAttr)) {
-      options.fields.push(updatedAtAttr);
-    }
-    if (versionAttr && options.fields.length > 0 && !options.fields.includes(versionAttr)) {
-      options.fields.push(versionAttr);
-    }
-    if (options.silent === true && !(this.isNewRecord && this.get(updatedAtAttr, { raw: true }))) {
-      _.remove(options.fields, (val) => val === updatedAtAttr);
-      updatedAtAttr = false;
-    }
-    if (this.isNewRecord === true) {
-      if (createdAtAttr && !options.fields.includes(createdAtAttr)) {
-        options.fields.push(createdAtAttr);
-      }
-      if (primaryKeyAttribute && primaryKeyAttribute.defaultValue && !options.fields.includes(primaryKeyName)) {
-        options.fields.unshift(primaryKeyName);
-      }
-    }
-    if (this.isNewRecord === false) {
-      if (primaryKeyName && this.get(primaryKeyName, { raw: true }) === void 0) {
-        throw new Error("You attempted to save an instance with no primary key, this is not allowed since it would result in a global update");
-      }
-    }
-    if (updatedAtAttr && !options.silent && options.fields.includes(updatedAtAttr)) {
-      this.dataValues[updatedAtAttr] = this.constructor._getDefaultTimestamp(updatedAtAttr) || now;
-    }
-    if (this.isNewRecord && createdAtAttr && !this.dataValues[createdAtAttr]) {
-      this.dataValues[createdAtAttr] = this.constructor._getDefaultTimestamp(createdAtAttr) || now;
-    }
-    if (this.sequelize.options.dialect === "db2" && this.isNewRecord) {
-      this.uniqno = this.sequelize.dialect.queryGenerator.addUniqueFields(this.dataValues, this.constructor.rawAttributes, this.uniqno);
-    }
-    if (options.validate) {
-      await this.validate(options);
-    }
-    if (options.hooks) {
-      const beforeHookValues = _.pick(this.dataValues, options.fields);
-      let ignoreChanged = _.difference(this.changed(), options.fields);
-      let hookChanged;
-      let afterHookValues;
-      if (updatedAtAttr && options.fields.includes(updatedAtAttr)) {
-        ignoreChanged = _.without(ignoreChanged, updatedAtAttr);
-      }
-      await this.constructor.runHooks(`before${hook}`, this, options);
-      if (options.defaultFields && !this.isNewRecord) {
-        afterHookValues = _.pick(this.dataValues, _.difference(this.changed(), ignoreChanged));
-        hookChanged = [];
-        for (const key of Object.keys(afterHookValues)) {
-          if (afterHookValues[key] !== beforeHookValues[key]) {
-            hookChanged.push(key);
-          }
-        }
-        options.fields = _.uniq(options.fields.concat(hookChanged));
-      }
-      if (hookChanged) {
-        if (options.validate) {
-          options.skip = _.difference(Object.keys(this.constructor.rawAttributes), hookChanged);
-          await this.validate(options);
-          delete options.skip;
-        }
-      }
-    }
-    if (options.fields.length && this.isNewRecord && this._options.include && this._options.include.length) {
-      await Promise.all(this._options.include.filter((include) => include.association instanceof BelongsTo).map(async (include) => {
-        const instance = this.get(include.as);
-        if (!instance)
-          return;
-        const includeOptions = _(Utils.cloneDeep(include)).omit(["association"]).defaults({
-          transaction: options.transaction,
-          logging: options.logging,
-          parentRecord: this
-        }).value();
-        await instance.save(includeOptions);
-        await this[include.association.accessors.set](instance, { save: false, logging: options.logging });
-      }));
-    }
-    const realFields = options.fields.filter((field) => !this.constructor._virtualAttributes.has(field));
-    if (!realFields.length)
-      return this;
-    if (!this.changed() && !this.isNewRecord)
-      return this;
-    const versionFieldName = _.get(this.constructor.rawAttributes[versionAttr], "field") || versionAttr;
-    const values = Utils.mapValueFieldNames(this.dataValues, options.fields, this.constructor);
-    let query = null;
-    let args = [];
-    let where;
-    if (this.isNewRecord) {
-      query = "insert";
-      args = [this, this.constructor.getTableName(options), values, options];
-    } else {
-      where = this.where(true);
-      if (versionAttr) {
-        values[versionFieldName] = parseInt(values[versionFieldName], 10) + 1;
-      }
-      query = "update";
-      args = [this, this.constructor.getTableName(options), values, where, options];
-    }
-    const [result, rowsUpdated] = await this.constructor.queryInterface[query](...args);
-    if (versionAttr) {
-      if (rowsUpdated < 1) {
-        throw new sequelizeErrors.OptimisticLockError({
-          modelName: this.constructor.name,
-          values,
-          where
-        });
-      } else {
-        result.dataValues[versionAttr] = values[versionFieldName];
-      }
-    }
-    for (const attr of Object.keys(this.constructor.rawAttributes)) {
-      if (this.constructor.rawAttributes[attr].field && values[this.constructor.rawAttributes[attr].field] !== void 0 && this.constructor.rawAttributes[attr].field !== attr) {
-        values[attr] = values[this.constructor.rawAttributes[attr].field];
-        delete values[this.constructor.rawAttributes[attr].field];
-      }
-    }
-    Object.assign(values, result.dataValues);
-    Object.assign(result.dataValues, values);
-    if (wasNewRecord && this._options.include && this._options.include.length) {
-      await Promise.all(this._options.include.filter((include) => !(include.association instanceof BelongsTo || include.parent && include.parent.association instanceof BelongsToMany)).map(async (include) => {
-        let instances = this.get(include.as);
-        if (!instances)
-          return;
-        if (!Array.isArray(instances))
-          instances = [instances];
-        const includeOptions = _(Utils.cloneDeep(include)).omit(["association"]).defaults({
-          transaction: options.transaction,
-          logging: options.logging,
-          parentRecord: this
-        }).value();
-        await Promise.all(instances.map(async (instance) => {
-          if (include.association instanceof BelongsToMany) {
-            await instance.save(includeOptions);
-            const values0 = __spreadValues({
-              [include.association.foreignKey]: this.get(this.constructor.primaryKeyAttribute, { raw: true }),
-              [include.association.otherKey]: instance.get(instance.constructor.primaryKeyAttribute, { raw: true })
-            }, include.association.through.scope);
-            if (instance[include.association.through.model.name]) {
-              for (const attr of Object.keys(include.association.through.model.rawAttributes)) {
-                if (include.association.through.model.rawAttributes[attr]._autoGenerated || attr === include.association.foreignKey || attr === include.association.otherKey || typeof instance[include.association.through.model.name][attr] === "undefined") {
-                  continue;
-                }
-                values0[attr] = instance[include.association.through.model.name][attr];
-              }
-            }
-            await include.association.throughModel.create(values0, includeOptions);
-          } else {
-            instance.set(include.association.foreignKey, this.get(include.association.sourceKey || this.constructor.primaryKeyAttribute, { raw: true }), { raw: true });
-            Object.assign(instance, include.association.scope);
-            await instance.save(includeOptions);
-          }
-        }));
-      }));
-    }
-    if (options.hooks) {
-      await this.constructor.runHooks(`after${hook}`, result, options);
-    }
-    for (const field of options.fields) {
-      result._previousDataValues[field] = result.dataValues[field];
-      this.changed(field, false);
-    }
-    this.isNewRecord = false;
-    return result;
-  }
-  async reload(options) {
-    options = Utils.defaults({
-      where: this.where()
-    }, options, {
-      include: this._options.include || void 0
-    });
-    const reloaded = await this.constructor.findOne(options);
-    if (!reloaded) {
-      throw new sequelizeErrors.InstanceError("Instance could not be reloaded because it does not exist anymore (find call returned null)");
-    }
-    this._options = reloaded._options;
-    this.set(reloaded.dataValues, {
-      raw: true,
-      reset: !options.attributes
-    });
-    return this;
-  }
-  async validate(options) {
-    return new InstanceValidator(this, options).validate();
-  }
-  async update(values, options) {
-    values = _.omitBy(values, (value) => value === void 0);
-    const changedBefore = this.changed() || [];
-    options = options || {};
-    if (Array.isArray(options))
-      options = { fields: options };
-    options = Utils.cloneDeep(options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    const setOptions = Utils.cloneDeep(options);
-    setOptions.attributes = options.fields;
-    this.set(values, setOptions);
-    const sideEffects = _.without(this.changed(), ...changedBefore);
-    const fields = _.union(Object.keys(values), sideEffects);
-    if (!options.fields) {
-      options.fields = _.intersection(fields, this.changed());
-      options.defaultFields = options.fields;
-    }
-    return await this.save(options);
-  }
-  async destroy(options) {
-    options = __spreadValues({
-      hooks: true,
-      force: false
-    }, options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    if (options.hooks) {
-      await this.constructor.runHooks("beforeDestroy", this, options);
-    }
-    const where = this.where(true);
-    let result;
-    if (this.constructor._timestampAttributes.deletedAt && options.force === false) {
-      const attributeName = this.constructor._timestampAttributes.deletedAt;
-      const attribute = this.constructor.rawAttributes[attributeName];
-      const defaultValue = Object.prototype.hasOwnProperty.call(attribute, "defaultValue") ? attribute.defaultValue : null;
-      const currentValue = this.getDataValue(attributeName);
-      const undefinedOrNull = currentValue == null && defaultValue == null;
-      if (undefinedOrNull || _.isEqual(currentValue, defaultValue)) {
-        this.setDataValue(attributeName, new Date());
-      }
-      result = await this.save(__spreadProps(__spreadValues({}, options), { hooks: false }));
-    } else {
-      result = await this.constructor.queryInterface.delete(this, this.constructor.getTableName(options), where, __spreadValues({ type: QueryTypes.DELETE, limit: null }, options));
-    }
-    if (options.hooks) {
-      await this.constructor.runHooks("afterDestroy", this, options);
-    }
-    return result;
-  }
-  isSoftDeleted() {
-    if (!this.constructor._timestampAttributes.deletedAt) {
-      throw new Error("Model is not paranoid");
-    }
-    const deletedAtAttribute = this.constructor.rawAttributes[this.constructor._timestampAttributes.deletedAt];
-    const defaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, "defaultValue") ? deletedAtAttribute.defaultValue : null;
-    const deletedAt = this.get(this.constructor._timestampAttributes.deletedAt) || null;
-    const isSet = deletedAt !== defaultValue;
-    return isSet;
-  }
-  async restore(options) {
-    if (!this.constructor._timestampAttributes.deletedAt)
-      throw new Error("Model is not paranoid");
-    options = __spreadValues({
-      hooks: true,
-      force: false
-    }, options);
-    if (options.transaction === void 0 && this.sequelize.constructor._cls) {
-      const t = this.sequelize.constructor._cls.get("transaction");
-      if (t) {
-        options.transaction = t;
-      }
-    }
-    if (options.hooks) {
-      await this.constructor.runHooks("beforeRestore", this, options);
-    }
-    const deletedAtCol = this.constructor._timestampAttributes.deletedAt;
-    const deletedAtAttribute = this.constructor.rawAttributes[deletedAtCol];
-    const deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, "defaultValue") ? deletedAtAttribute.defaultValue : null;
-    this.setDataValue(deletedAtCol, deletedAtDefaultValue);
-    const result = await this.save(__spreadProps(__spreadValues({}, options), { hooks: false, omitNull: false }));
-    if (options.hooks) {
-      await this.constructor.runHooks("afterRestore", this, options);
-      return result;
-    }
-    return result;
-  }
-  async increment(fields, options) {
-    const identifier = this.where();
-    options = Utils.cloneDeep(options);
-    options.where = __spreadValues(__spreadValues({}, options.where), identifier);
-    options.instance = this;
-    await this.constructor.increment(fields, options);
-    return this;
-  }
-  async decrement(fields, options) {
-    return this.increment(fields, __spreadProps(__spreadValues({
-      by: 1
-    }, options), {
-      increment: false
-    }));
-  }
-  equals(other) {
-    if (!other || !other.constructor) {
-      return false;
-    }
-    if (!(other instanceof this.constructor)) {
-      return false;
-    }
-    return this.constructor.primaryKeyAttributes.every((attribute) => this.get(attribute, { raw: true }) === other.get(attribute, { raw: true }));
-  }
-  equalsOneOf(others) {
-    return others.some((other) => this.equals(other));
-  }
-  setValidators(attribute, validators) {
-    this.validators[attribute] = validators;
-  }
-  toJSON() {
-    return _.cloneDeep(this.get({
-      plain: true
-    }));
-  }
-  static hasMany(target, options) {
-  }
-  static belongsToMany(target, options) {
-  }
-  static hasOne(target, options) {
-  }
-  static belongsTo(target, options) {
-  }
-}
-function unpackAnd(where) {
-  if (!_.isObject(where)) {
-    return where;
-  }
-  const keys = Utils.getComplexKeys(where);
-  if (keys.length === 0) {
-    return;
-  }
-  if (keys.length !== 1 || keys[0] !== Op.and) {
-    return where;
-  }
-  const andParts = where[Op.and];
-  return andParts;
-}
-function combineWheresWithAnd(whereA, whereB) {
-  const unpackedA = unpackAnd(whereA);
-  if (unpackedA === void 0) {
-    return whereB;
-  }
-  const unpackedB = unpackAnd(whereB);
-  if (unpackedB === void 0) {
-    return whereA;
-  }
-  return {
-    [Op.and]: _.flatten([unpackedA, unpackedB])
-  };
-}
-Object.assign(Model, associationsMixin);
-Hooks.applyTo(Model, true);
-module.exports = Model;
-//# sourceMappingURL=model.js.map
Index: ckend/node_modules/sequelize/lib/model.js.map
===================================================================
--- backend/node_modules/sequelize/lib/model.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/model.js"],
-  "sourcesContent": ["'use strict';\n\nconst assert = require('assert');\nconst _ = require('lodash');\nconst Dottie = require('dottie');\n\nconst Utils = require('./utils');\nconst { logger } = require('./utils/logger');\nconst BelongsTo = require('./associations/belongs-to');\nconst BelongsToMany = require('./associations/belongs-to-many');\nconst InstanceValidator = require('./instance-validator');\nconst QueryTypes = require('./query-types');\nconst sequelizeErrors = require('./errors');\nconst Association = require('./associations/base');\nconst HasMany = require('./associations/has-many');\nconst DataTypes = require('./data-types');\nconst Hooks = require('./hooks');\nconst associationsMixin = require('./associations/mixin');\nconst Op = require('./operators');\nconst { noDoubleNestedGroup } = require('./utils/deprecations');\n\n\n// This list will quickly become dated, but failing to maintain this list just means\n// we won't throw a warning when we should. At least most common cases will forever be covered\n// so we stop throwing erroneous warnings when we shouldn't.\nconst validQueryKeywords = new Set(['where', 'attributes', 'paranoid', 'include', 'order', 'limit', 'offset',\n  'transaction', 'lock', 'raw', 'logging', 'benchmark', 'having', 'searchPath', 'rejectOnEmpty', 'plain',\n  'scope', 'group', 'through', 'defaults', 'distinct', 'primary', 'exception', 'type', 'hooks', 'force',\n  'name']);\n\n// List of attributes that should not be implicitly passed into subqueries/includes.\nconst nonCascadingOptions = ['include', 'attributes', 'originalAttributes', 'order', 'where', 'limit', 'offset', 'plain', 'group', 'having'];\n\n/**\n * A Model represents a table in the database. Instances of this class represent a database row.\n *\n * Model instances operate with the concept of a `dataValues` property, which stores the actual values represented by the instance.\n * By default, the values from dataValues can also be accessed directly from the Instance, that is:\n * ```js\n * instance.field\n * // is the same as\n * instance.get('field')\n * // is the same as\n * instance.getDataValue('field')\n * ```\n * However, if getters and/or setters are defined for `field` they will be invoked, instead of returning the value from `dataValues`.\n * Accessing properties directly or using `get` is preferred for regular use, `getDataValue` should only be used for custom getters.\n *\n * @see\n   * {@link Sequelize#define} for more information about getters and setters\n * @mixes Hooks\n */\nclass Model {\n  static get queryInterface() {\n    return this.sequelize.getQueryInterface();\n  }\n\n  static get queryGenerator() {\n    return this.queryInterface.queryGenerator;\n  }\n\n  /**\n   * A reference to the sequelize instance\n   *\n   * @see\n   * {@link Sequelize}\n   *\n   * @property sequelize\n   *\n   * @returns {Sequelize}\n   */\n  get sequelize() {\n    return this.constructor.sequelize;\n  }\n\n  /**\n   * Builds a new model instance.\n   *\n   * @param {object}  [values={}] an object of key value pairs\n   * @param {object}  [options] instance construction options\n   * @param {boolean} [options.raw=false] If set to true, values will ignore field and virtual setters.\n   * @param {boolean} [options.isNewRecord=true] Is this a new record\n   * @param {Array}   [options.include] an array of include options - Used to build prefetched/included model instances. See `set`\n   */\n  constructor(values = {}, options = {}) {\n    if (!this.constructor._overwrittenAttributesChecked) {\n      this.constructor._overwrittenAttributesChecked = true;\n\n      // setTimeout is hacky but necessary.\n      // Public Class Fields declared by descendants of this class\n      // will not be available until after their call to super, so after\n      // this constructor is done running.\n      setTimeout(() => {\n        const overwrittenAttributes = [];\n        for (const key of Object.keys(this.constructor._attributeManipulation)) {\n          if (Object.prototype.hasOwnProperty.call(this, key)) {\n            overwrittenAttributes.push(key);\n          }\n        }\n\n        if (overwrittenAttributes.length > 0) {\n          logger.warn(`Model ${JSON.stringify(this.constructor.name)} is declaring public class fields for attribute(s): ${overwrittenAttributes.map(attr => JSON.stringify(attr)).join(', ')}.` +\n            '\\nThese class fields are shadowing Sequelize\\'s attribute getters & setters.' +\n            '\\nSee https://sequelize.org/main/manual/model-basics.html#caveat-with-public-class-fields');\n        }\n      }, 0);\n    }\n\n    options = {\n      isNewRecord: true,\n      _schema: this.constructor._schema,\n      _schemaDelimiter: this.constructor._schemaDelimiter,\n      ...options\n    };\n\n    if (options.attributes) {\n      options.attributes = options.attributes.map(attribute => Array.isArray(attribute) ? attribute[1] : attribute);\n    }\n\n    if (!options.includeValidated) {\n      this.constructor._conformIncludes(options, this.constructor);\n      if (options.include) {\n        this.constructor._expandIncludeAll(options);\n        this.constructor._validateIncludedElements(options);\n      }\n    }\n\n    this.dataValues = {};\n    this._previousDataValues = {};\n    this.uniqno = 1;\n    this._changed = new Set();\n    this._options = options;\n\n    /**\n     * Returns true if this instance has not yet been persisted to the database\n     *\n     * @property isNewRecord\n     * @returns {boolean}\n     */\n    this.isNewRecord = options.isNewRecord;\n\n    this._initValues(values, options);\n  }\n\n  _initValues(values, options) {\n    let defaults;\n    let key;\n\n    values = { ...values };\n\n    if (options.isNewRecord) {\n      defaults = {};\n\n      if (this.constructor._hasDefaultValues) {\n        defaults = _.mapValues(this.constructor._defaultValues, valueFn => {\n          const value = valueFn();\n          return value && value instanceof Utils.SequelizeMethod ? value : _.cloneDeep(value);\n        });\n      }\n\n      // set id to null if not passed as value, a newly created dao has no id\n      // removing this breaks bulkCreate\n      // do after default values since it might have UUID as a default value\n      if (this.constructor.primaryKeyAttributes.length) {\n        this.constructor.primaryKeyAttributes.forEach(primaryKeyAttribute => {\n          if (!Object.prototype.hasOwnProperty.call(defaults, primaryKeyAttribute)) {\n            defaults[primaryKeyAttribute] = null;\n          }\n        });\n      }\n\n      if (this.constructor._timestampAttributes.createdAt && defaults[this.constructor._timestampAttributes.createdAt]) {\n        this.dataValues[this.constructor._timestampAttributes.createdAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.createdAt], this.sequelize.options.dialect);\n        delete defaults[this.constructor._timestampAttributes.createdAt];\n      }\n\n      if (this.constructor._timestampAttributes.updatedAt && defaults[this.constructor._timestampAttributes.updatedAt]) {\n        this.dataValues[this.constructor._timestampAttributes.updatedAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.updatedAt], this.sequelize.options.dialect);\n        delete defaults[this.constructor._timestampAttributes.updatedAt];\n      }\n\n      if (this.constructor._timestampAttributes.deletedAt && defaults[this.constructor._timestampAttributes.deletedAt]) {\n        this.dataValues[this.constructor._timestampAttributes.deletedAt] = Utils.toDefaultValue(defaults[this.constructor._timestampAttributes.deletedAt], this.sequelize.options.dialect);\n        delete defaults[this.constructor._timestampAttributes.deletedAt];\n      }\n\n      for (key in defaults) {\n        if (values[key] === undefined) {\n          this.set(key, Utils.toDefaultValue(defaults[key], this.sequelize.options.dialect), { raw: true });\n          delete values[key];\n        }\n      }\n    }\n\n    this.set(values, options);\n  }\n\n  // validateIncludedElements should have been called before this method\n  static _paranoidClause(model, options = {}) {\n    // Apply on each include\n    // This should be handled before handling where conditions because of logic with returns\n    // otherwise this code will never run on includes of a already conditionable where\n    if (options.include) {\n      for (const include of options.include) {\n        this._paranoidClause(include.model, include);\n      }\n    }\n\n    // apply paranoid when groupedLimit is used\n    if (_.get(options, 'groupedLimit.on.options.paranoid')) {\n      const throughModel = _.get(options, 'groupedLimit.on.through.model');\n      if (throughModel) {\n        options.groupedLimit.through = this._paranoidClause(throughModel, options.groupedLimit.through);\n      }\n    }\n\n    if (!model.options.timestamps || !model.options.paranoid || options.paranoid === false) {\n      // This model is not paranoid, nothing to do here;\n      return options;\n    }\n\n    const deletedAtCol = model._timestampAttributes.deletedAt;\n    const deletedAtAttribute = model.rawAttributes[deletedAtCol];\n    const deletedAtObject = {};\n\n    let deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, 'defaultValue') ? deletedAtAttribute.defaultValue : null;\n\n    deletedAtDefaultValue = deletedAtDefaultValue || {\n      [Op.eq]: null\n    };\n\n    deletedAtObject[deletedAtAttribute.field || deletedAtCol] = deletedAtDefaultValue;\n\n    if (Utils.isWhereEmpty(options.where)) {\n      options.where = deletedAtObject;\n    } else {\n      options.where = { [Op.and]: [deletedAtObject, options.where] };\n    }\n\n    return options;\n  }\n\n  static _addDefaultAttributes() {\n    const tail = {};\n    let head = {};\n\n    // Add id if no primary key was manually added to definition\n    // Can't use this.primaryKeys here, since this function is called before PKs are identified\n    if (!_.some(this.rawAttributes, 'primaryKey')) {\n      if ('id' in this.rawAttributes) {\n        // Something is fishy here!\n        throw new Error(`A column called 'id' was added to the attributes of '${this.tableName}' but not marked with 'primaryKey: true'`);\n      }\n\n      head = {\n        id: {\n          type: new DataTypes.INTEGER(),\n          allowNull: false,\n          primaryKey: true,\n          autoIncrement: true,\n          _autoGenerated: true\n        }\n      };\n    }\n\n    if (this._timestampAttributes.createdAt) {\n      tail[this._timestampAttributes.createdAt] = {\n        type: DataTypes.DATE,\n        allowNull: false,\n        _autoGenerated: true\n      };\n    }\n\n    if (this._timestampAttributes.updatedAt) {\n      tail[this._timestampAttributes.updatedAt] = {\n        type: DataTypes.DATE,\n        allowNull: false,\n        _autoGenerated: true\n      };\n    }\n\n    if (this._timestampAttributes.deletedAt) {\n      tail[this._timestampAttributes.deletedAt] = {\n        type: DataTypes.DATE,\n        _autoGenerated: true\n      };\n    }\n\n    if (this._versionAttribute) {\n      tail[this._versionAttribute] = {\n        type: DataTypes.INTEGER,\n        allowNull: false,\n        defaultValue: 0,\n        _autoGenerated: true\n      };\n    }\n\n    const newRawAttributes = {\n      ...head,\n      ...this.rawAttributes\n    };\n    _.each(tail, (value, attr) => {\n      if (newRawAttributes[attr] === undefined) {\n        newRawAttributes[attr] = value;\n      }\n    });\n\n    this.rawAttributes = newRawAttributes;\n\n    if (!Object.keys(this.primaryKeys).length) {\n      this.primaryKeys.id = this.rawAttributes.id;\n    }\n  }\n\n  /**\n   * Returns the attributes of the model.\n   *\n   * @returns {object|any}\n  */\n  static getAttributes() {\n    return this.rawAttributes;\n  }\n\n  static _findAutoIncrementAttribute() {\n    this.autoIncrementAttribute = null;\n\n    for (const name in this.rawAttributes) {\n      if (Object.prototype.hasOwnProperty.call(this.rawAttributes, name)) {\n        const definition = this.rawAttributes[name];\n        if (definition && definition.autoIncrement) {\n          if (this.autoIncrementAttribute) {\n            throw new Error('Invalid Instance definition. Only one autoincrement field allowed.');\n          }\n          this.autoIncrementAttribute = name;\n        }\n      }\n    }\n  }\n\n  static _conformIncludes(options, self) {\n    if (!options.include) return;\n\n    // if include is not an array, wrap in an array\n    if (!Array.isArray(options.include)) {\n      options.include = [options.include];\n    } else if (!options.include.length) {\n      delete options.include;\n      return;\n    }\n\n    // convert all included elements to { model: Model } form\n    options.include = options.include.map(include => this._conformInclude(include, self));\n  }\n\n  static _transformStringAssociation(include, self) {\n    if (self && typeof include === 'string') {\n      if (!Object.prototype.hasOwnProperty.call(self.associations, include)) {\n        throw new Error(`Association with alias \"${include}\" does not exist on ${self.name}`);\n      }\n      return self.associations[include];\n    }\n    return include;\n  }\n\n  static _conformInclude(include, self) {\n    if (include) {\n      let model;\n\n      if (include._pseudo) return include;\n\n      include = this._transformStringAssociation(include, self);\n\n      if (include instanceof Association) {\n        if (self && include.target.name === self.name) {\n          model = include.source;\n        } else {\n          model = include.target;\n        }\n\n        return { model, association: include, as: include.as };\n      }\n\n      if (include.prototype && include.prototype instanceof Model) {\n        return { model: include };\n      }\n\n      if (_.isPlainObject(include)) {\n        if (include.association) {\n          include.association = this._transformStringAssociation(include.association, self);\n\n          if (self && include.association.target.name === self.name) {\n            model = include.association.source;\n          } else {\n            model = include.association.target;\n          }\n\n          if (!include.model) include.model = model;\n          if (!include.as) include.as = include.association.as;\n\n          this._conformIncludes(include, model);\n          return include;\n        }\n\n        if (include.model) {\n          this._conformIncludes(include, include.model);\n          return include;\n        }\n\n        if (include.all) {\n          this._conformIncludes(include);\n          return include;\n        }\n      }\n    }\n\n    throw new Error('Include unexpected. Element has to be either a Model, an Association or an object.');\n  }\n\n  static _expandIncludeAllElement(includes, include) {\n    // check 'all' attribute provided is valid\n    let all = include.all;\n    delete include.all;\n\n    if (all !== true) {\n      if (!Array.isArray(all)) {\n        all = [all];\n      }\n\n      const validTypes = {\n        BelongsTo: true,\n        HasOne: true,\n        HasMany: true,\n        One: ['BelongsTo', 'HasOne'],\n        Has: ['HasOne', 'HasMany'],\n        Many: ['HasMany']\n      };\n\n      for (let i = 0; i < all.length; i++) {\n        const type = all[i];\n        if (type === 'All') {\n          all = true;\n          break;\n        }\n\n        const types = validTypes[type];\n        if (!types) {\n          throw new sequelizeErrors.EagerLoadingError(`include all '${type}' is not valid - must be BelongsTo, HasOne, HasMany, One, Has, Many or All`);\n        }\n\n        if (types !== true) {\n          // replace type placeholder e.g. 'One' with its constituent types e.g. 'HasOne', 'BelongsTo'\n          all.splice(i, 1);\n          i--;\n          for (let j = 0; j < types.length; j++) {\n            if (!all.includes(types[j])) {\n              all.unshift(types[j]);\n              i++;\n            }\n          }\n        }\n      }\n    }\n\n    // add all associations of types specified to includes\n    const nested = include.nested;\n    if (nested) {\n      delete include.nested;\n\n      if (!include.include) {\n        include.include = [];\n      } else if (!Array.isArray(include.include)) {\n        include.include = [include.include];\n      }\n    }\n\n    const used = [];\n    (function addAllIncludes(parent, includes) {\n      _.forEach(parent.associations, association => {\n        if (all !== true && !all.includes(association.associationType)) {\n          return;\n        }\n\n        // check if model already included, and skip if so\n        const model = association.target;\n        const as = association.options.as;\n\n        const predicate = { model };\n        if (as) {\n          // We only add 'as' to the predicate if it actually exists\n          predicate.as = as;\n        }\n\n        if (_.some(includes, predicate)) {\n          return;\n        }\n\n        // skip if recursing over a model already nested\n        if (nested && used.includes(model)) {\n          return;\n        }\n        used.push(parent);\n\n        // include this model\n        const thisInclude = Utils.cloneDeep(include);\n        thisInclude.model = model;\n        if (as) {\n          thisInclude.as = as;\n        }\n        includes.push(thisInclude);\n\n        // run recursively if nested\n        if (nested) {\n          addAllIncludes(model, thisInclude.include);\n          if (thisInclude.include.length === 0) delete thisInclude.include;\n        }\n      });\n      used.pop();\n    })(this, includes);\n  }\n\n  static _validateIncludedElements(options, tableNames) {\n    if (!options.model) options.model = this;\n\n    tableNames = tableNames || {};\n    options.includeNames = [];\n    options.includeMap = {};\n\n    /* Legacy */\n    options.hasSingleAssociation = false;\n    options.hasMultiAssociation = false;\n\n    if (!options.parent) {\n      options.topModel = options.model;\n      options.topLimit = options.limit;\n    }\n\n    options.include = options.include.map(include => {\n      include = this._conformInclude(include);\n      include.parent = options;\n      include.topLimit = options.topLimit;\n\n      this._validateIncludedElement.call(options.model, include, tableNames, options);\n\n      if (include.duplicating === undefined) {\n        include.duplicating = include.association.isMultiAssociation;\n      }\n\n      include.hasDuplicating = include.hasDuplicating || include.duplicating;\n      include.hasRequired = include.hasRequired || include.required;\n\n      options.hasDuplicating = options.hasDuplicating || include.hasDuplicating;\n      options.hasRequired = options.hasRequired || include.required;\n\n      options.hasWhere = options.hasWhere || include.hasWhere || !!include.where;\n      return include;\n    });\n\n    for (const include of options.include) {\n      include.hasParentWhere = options.hasParentWhere || !!options.where;\n      include.hasParentRequired = options.hasParentRequired || !!options.required;\n\n      if (include.subQuery !== false && options.hasDuplicating && options.topLimit) {\n        if (include.duplicating) {\n          include.subQuery = include.subQuery || false;\n          include.subQueryFilter = include.hasRequired;\n        } else {\n          include.subQuery = include.hasRequired;\n          include.subQueryFilter = false;\n        }\n      } else {\n        include.subQuery = include.subQuery || false;\n        if (include.duplicating) {\n          include.subQueryFilter = include.subQuery;\n        } else {\n          include.subQueryFilter = false;\n          include.subQuery = include.subQuery || include.hasParentRequired && include.hasRequired && !include.separate;\n        }\n      }\n\n      options.includeMap[include.as] = include;\n      options.includeNames.push(include.as);\n\n      // Set top level options\n      if (options.topModel === options.model && options.subQuery === undefined && options.topLimit) {\n        if (include.subQuery) {\n          options.subQuery = include.subQuery;\n        } else if (include.hasDuplicating) {\n          options.subQuery = true;\n        }\n      }\n\n      /* Legacy */\n      options.hasIncludeWhere = options.hasIncludeWhere || include.hasIncludeWhere || !!include.where;\n      options.hasIncludeRequired = options.hasIncludeRequired || include.hasIncludeRequired || !!include.required;\n\n      if (include.association.isMultiAssociation || include.hasMultiAssociation) {\n        options.hasMultiAssociation = true;\n      }\n      if (include.association.isSingleAssociation || include.hasSingleAssociation) {\n        options.hasSingleAssociation = true;\n      }\n    }\n\n    if (options.topModel === options.model && options.subQuery === undefined) {\n      options.subQuery = false;\n    }\n    return options;\n  }\n\n  static _validateIncludedElement(include, tableNames, options) {\n    tableNames[include.model.getTableName()] = true;\n\n    if (include.attributes && !options.raw) {\n      include.model._expandAttributes(include);\n\n      include.originalAttributes = include.model._injectDependentVirtualAttributes(include.attributes);\n\n      include = Utils.mapFinderOptions(include, include.model);\n\n      if (include.attributes.length) {\n        _.each(include.model.primaryKeys, (attr, key) => {\n          // Include the primary key if it's not already included - take into account that the pk might be aliased (due to a .field prop)\n          if (!include.attributes.some(includeAttr => {\n            if (attr.field !== key) {\n              return Array.isArray(includeAttr) && includeAttr[0] === attr.field && includeAttr[1] === key;\n            }\n            return includeAttr === key;\n          })) {\n            include.attributes.unshift(key);\n          }\n        });\n      }\n    } else {\n      include = Utils.mapFinderOptions(include, include.model);\n    }\n\n    // pseudo include just needed the attribute logic, return\n    if (include._pseudo) {\n      if (!include.attributes) {\n        include.attributes = Object.keys(include.model.tableAttributes);\n      }\n      return Utils.mapFinderOptions(include, include.model);\n    }\n\n    // check if the current Model is actually associated with the passed Model - or it's a pseudo include\n    const association = include.association || this._getIncludedAssociation(include.model, include.as);\n\n    include.association = association;\n    include.as = association.as;\n\n    // If through, we create a pseudo child include, to ease our parsing later on\n    if (include.association.through && Object(include.association.through.model) === include.association.through.model) {\n      if (!include.include) include.include = [];\n      const through = include.association.through;\n\n      include.through = _.defaults(include.through || {}, {\n        model: through.model,\n        as: through.model.name,\n        association: {\n          isSingleAssociation: true\n        },\n        _pseudo: true,\n        parent: include\n      });\n\n\n      if (through.scope) {\n        include.through.where = include.through.where ? { [Op.and]: [include.through.where, through.scope] } : through.scope;\n      }\n\n      include.include.push(include.through);\n      tableNames[through.tableName] = true;\n    }\n\n    // include.model may be the main model, while the association target may be scoped - thus we need to look at association.target/source\n    let model;\n    if (include.model.scoped === true) {\n      // If the passed model is already scoped, keep that\n      model = include.model;\n    } else {\n      // Otherwise use the model that was originally passed to the association\n      model = include.association.target.name === include.model.name ? include.association.target : include.association.source;\n    }\n\n    model._injectScope(include);\n\n    // This check should happen after injecting the scope, since the scope may contain a .attributes\n    if (!include.attributes) {\n      include.attributes = Object.keys(include.model.tableAttributes);\n    }\n\n    include = Utils.mapFinderOptions(include, include.model);\n\n    if (include.required === undefined) {\n      include.required = !!include.where;\n    }\n\n    if (include.association.scope) {\n      include.where = include.where ? { [Op.and]: [include.where, include.association.scope] } : include.association.scope;\n    }\n\n    if (include.limit && include.separate === undefined) {\n      include.separate = true;\n    }\n\n    if (include.separate === true) {\n      if (!(include.association instanceof HasMany)) {\n        throw new Error('Only HasMany associations support include.separate');\n      }\n\n      include.duplicating = false;\n\n      if (\n        options.attributes\n        && options.attributes.length\n        && !_.flattenDepth(options.attributes, 2).includes(association.sourceKey)\n      ) {\n        options.attributes.push(association.sourceKey);\n      }\n\n      if (\n        include.attributes\n        && include.attributes.length\n        && !_.flattenDepth(include.attributes, 2).includes(association.foreignKey)\n      ) {\n        include.attributes.push(association.foreignKey);\n      }\n    }\n\n    // Validate child includes\n    if (Object.prototype.hasOwnProperty.call(include, 'include')) {\n      this._validateIncludedElements.call(include.model, include, tableNames);\n    }\n\n    return include;\n  }\n\n  static _getIncludedAssociation(targetModel, targetAlias) {\n    const associations = this.getAssociations(targetModel);\n    let association = null;\n    if (associations.length === 0) {\n      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is not associated to ${this.name}!`);\n    }\n    if (associations.length === 1) {\n      association = this.getAssociationForAlias(targetModel, targetAlias);\n      if (association) {\n        return association;\n      }\n      if (targetAlias) {\n        const existingAliases = this.getAssociations(targetModel).map(association => association.as);\n        throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} using an alias. ` +\n          `You've included an alias (${targetAlias}), but it does not match the alias(es) defined in your association (${existingAliases.join(', ')}).`);\n      }\n      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} using an alias. ` +\n        'You must use the \\'as\\' keyword to specify the alias within your include statement.');\n    }\n    association = this.getAssociationForAlias(targetModel, targetAlias);\n    if (!association) {\n      throw new sequelizeErrors.EagerLoadingError(`${targetModel.name} is associated to ${this.name} multiple times. ` +\n        'To identify the correct association, you must use the \\'as\\' keyword to specify the alias of the association you want to include.');\n    }\n    return association;\n  }\n\n\n  static _expandIncludeAll(options) {\n    const includes = options.include;\n    if (!includes) {\n      return;\n    }\n\n    for (let index = 0; index < includes.length; index++) {\n      const include = includes[index];\n\n      if (include.all) {\n        includes.splice(index, 1);\n        index--;\n\n        this._expandIncludeAllElement(includes, include);\n      }\n    }\n\n    includes.forEach(include => {\n      this._expandIncludeAll.call(include.model, include);\n    });\n  }\n\n  static _conformIndex(index) {\n    if (!index.fields) {\n      throw new Error('Missing \"fields\" property for index definition');\n    }\n\n    index = _.defaults(index, {\n      type: '',\n      parser: null\n    });\n\n    if (index.type && index.type.toLowerCase() === 'unique') {\n      index.unique = true;\n      delete index.type;\n    }\n\n    return index;\n  }\n\n\n  static _uniqIncludes(options) {\n    if (!options.include) return;\n\n    options.include = _(options.include)\n      .groupBy(include => `${include.model && include.model.name}-${include.as}`)\n      .map(includes => this._assignOptions(...includes))\n      .value();\n  }\n\n  static _baseMerge(...args) {\n    _.assignWith(...args);\n    this._conformIncludes(args[0], this);\n    this._uniqIncludes(args[0]);\n    return args[0];\n  }\n\n  static _mergeFunction(objValue, srcValue, key) {\n    if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n      return _.union(objValue, srcValue);\n    }\n\n    if (['where', 'having'].includes(key)) {\n      if (this.options && this.options.whereMergeStrategy === 'and') {\n        return combineWheresWithAnd(objValue, srcValue);\n      }\n\n      if (srcValue instanceof Utils.SequelizeMethod) {\n        srcValue = { [Op.and]: srcValue };\n      }\n\n      if (_.isPlainObject(objValue) && _.isPlainObject(srcValue)) {\n        return Object.assign(objValue, srcValue);\n      }\n    } else if (key === 'attributes' && _.isPlainObject(objValue) && _.isPlainObject(srcValue)) {\n      return _.assignWith(objValue, srcValue, (objValue, srcValue) => {\n        if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n          return _.union(objValue, srcValue);\n        }\n      });\n    }\n    // If we have a possible object/array to clone, we try it.\n    // Otherwise, we return the original value when it's not undefined,\n    // or the resulting object in that case.\n    if (srcValue) {\n      return Utils.cloneDeep(srcValue, true);\n    }\n    return srcValue === undefined ? objValue : srcValue;\n  }\n\n  static _assignOptions(...args) {\n    return this._baseMerge(...args, this._mergeFunction.bind(this));\n  }\n\n  static _defaultsOptions(target, opts) {\n    return this._baseMerge(target, opts, (srcValue, objValue, key) => {\n      return this._mergeFunction(objValue, srcValue, key);\n    });\n  }\n\n  /**\n   * Initialize a model, representing a table in the DB, with attributes and options.\n   *\n   * The table columns are defined by the hash that is given as the first argument.\n   * Each attribute of the hash represents a column.\n   *\n   * @example\n   * Project.init({\n   *   columnA: {\n   *     type: Sequelize.BOOLEAN,\n   *     validate: {\n   *       is: ['[a-z]','i'],        // will only allow letters\n   *       max: 23,                  // only allow values <= 23\n   *       isIn: {\n   *         args: [['en', 'zh']],\n   *         msg: \"Must be English or Chinese\"\n   *       }\n   *     },\n   *     field: 'column_a'\n   *     // Other attributes here\n   *   },\n   *   columnB: Sequelize.STRING,\n   *   columnC: 'MY VERY OWN COLUMN TYPE'\n   * }, {sequelize})\n   *\n   * sequelize.models.modelName // The model will now be available in models under the class name\n   *\n   * @see\n   * <a href=\"/master/manual/model-basics.html\">Model Basics</a> guide\n   *\n   * @see\n   * <a href=\"/master/manual/model-basics.html\">Hooks</a> guide\n   *\n   * @see\n   * <a href=\"/master/manual/validations-and-constraints.html\"/>Validations & Constraints</a> guide\n   *\n   * @param {object}                  attributes An object, where each attribute is a column of the table. Each column can be either a DataType, a string or a type-description object, with the properties described below:\n   * @param {string|DataTypes|object} attributes.column The description of a database column\n   * @param {string|DataTypes}        attributes.column.type A string or a data type\n   * @param {boolean}                 [attributes.column.allowNull=true] If false, the column will have a NOT NULL constraint, and a not null validation will be run before an instance is saved.\n   * @param {any}                     [attributes.column.defaultValue=null] A literal default value, a JavaScript function, or an SQL function (see `sequelize.fn`)\n   * @param {string|boolean}          [attributes.column.unique=false] If true, the column will get a unique constraint. If a string is provided, the column will be part of a composite unique index. If multiple columns have the same string, they will be part of the same unique index\n   * @param {boolean}                 [attributes.column.primaryKey=false] If true, this attribute will be marked as primary key\n   * @param {string}                  [attributes.column.field=null] If set, sequelize will map the attribute name to a different name in the database\n   * @param {boolean}                 [attributes.column.autoIncrement=false] If true, this column will be set to auto increment\n   * @param {boolean}                 [attributes.column.autoIncrementIdentity=false] If true, combined with autoIncrement=true, will use Postgres `GENERATED BY DEFAULT AS IDENTITY` instead of `SERIAL`. Postgres 10+ only.\n   * @param {string}                  [attributes.column.comment=null] Comment for this column\n   * @param {string|Model}            [attributes.column.references=null] An object with reference configurations\n   * @param {string|Model}            [attributes.column.references.model] If this column references another table, provide it here as a Model, or a string\n   * @param {string}                  [attributes.column.references.key='id'] The column of the foreign table that this column references\n   * @param {string}                  [attributes.column.onUpdate] What should happen when the referenced key is updated. One of CASCADE, RESTRICT, SET DEFAULT, SET NULL or NO ACTION\n   * @param {string}                  [attributes.column.onDelete] What should happen when the referenced key is deleted. One of CASCADE, RESTRICT, SET DEFAULT, SET NULL or NO ACTION\n   * @param {Function}                [attributes.column.get] Provide a custom getter for this column. Use `this.getDataValue(String)` to manipulate the underlying values.\n   * @param {Function}                [attributes.column.set] Provide a custom setter for this column. Use `this.setDataValue(String, Value)` to manipulate the underlying values.\n   * @param {object}                  [attributes.column.validate] An object of validations to execute for this column every time the model is saved. Can be either the name of a validation provided by validator.js, a validation function provided by extending validator.js (see the `DAOValidator` property for more details), or a custom validation function. Custom validation functions are called with the value of the field and the instance itself as the `this` binding, and can possibly take a second callback argument, to signal that they are asynchronous. If the validator is sync, it should throw in the case of a failed validation; if it is async, the callback should be called with the error text.\n   * @param {object}                  options These options are merged with the default define options provided to the Sequelize constructor\n   * @param {object}                  options.sequelize Define the sequelize instance to attach to the new Model. Throw error if none is provided.\n   * @param {string}                  [options.modelName] Set name of the model. By default its same as Class name.\n   * @param {object}                  [options.defaultScope={}] Define the default search scope to use for this model. Scopes have the same form as the options passed to find / findAll\n   * @param {object}                  [options.scopes] More scopes, defined in the same way as defaultScope above. See `Model.scope` for more information about how scopes are defined, and what you can do with them\n   * @param {boolean}                 [options.omitNull] Don't persist null values. This means that all columns with null values will not be saved\n   * @param {boolean}                 [options.timestamps=true] Adds createdAt and updatedAt timestamps to the model.\n   * @param {boolean}                 [options.paranoid=false] Calling `destroy` will not delete the model, but instead set a `deletedAt` timestamp if this is true. Needs `timestamps=true` to work\n   * @param {boolean}                 [options.underscored=false] Add underscored field to all attributes, this covers user defined attributes, timestamps and foreign keys. Will not affect attributes with explicitly set `field` option\n   * @param {boolean}                 [options.freezeTableName=false] If freezeTableName is true, sequelize will not try to alter the model name to get the table name. Otherwise, the model name will be pluralized\n   * @param {object}                  [options.name] An object with two attributes, `singular` and `plural`, which are used when this model is associated to others.\n   * @param {string}                  [options.name.singular=Utils.singularize(modelName)] Singular name for model\n   * @param {string}                  [options.name.plural=Utils.pluralize(modelName)] Plural name for model\n   * @param {Array<object>}           [options.indexes] indexes definitions\n   * @param {string}                  [options.indexes[].name] The name of the index. Defaults to model name + _ + fields concatenated\n   * @param {string}                  [options.indexes[].type] Index type. Only used by mysql. One of `UNIQUE`, `FULLTEXT` and `SPATIAL`\n   * @param {string}                  [options.indexes[].using] The method to create the index by (`USING` statement in SQL). BTREE and HASH are supported by mysql and postgres, and postgres additionally supports GIST and GIN.\n   * @param {string}                  [options.indexes[].operator] Specify index operator.\n   * @param {boolean}                 [options.indexes[].unique=false] Should the index by unique? Can also be triggered by setting type to `UNIQUE`\n   * @param {boolean}                 [options.indexes[].concurrently=false] PostgresSQL will build the index without taking any write locks. Postgres only\n   * @param {Array<string|object>}    [options.indexes[].fields] An array of the fields to index. Each field can either be a string containing the name of the field, a sequelize object (e.g `sequelize.fn`), or an object with the following attributes: `attribute` (field name), `length` (create a prefix index of length chars), `order` (the direction the column should be sorted in), `collate` (the collation (sort order) for the column)\n   * @param {string|boolean}          [options.createdAt] Override the name of the createdAt attribute if a string is provided, or disable it if false. Timestamps must be true. Underscored field will be set with underscored setting.\n   * @param {string|boolean}          [options.updatedAt] Override the name of the updatedAt attribute if a string is provided, or disable it if false. Timestamps must be true. Underscored field will be set with underscored setting.\n   * @param {string|boolean}          [options.deletedAt] Override the name of the deletedAt attribute if a string is provided, or disable it if false. Timestamps must be true. Underscored field will be set with underscored setting.\n   * @param {string}                  [options.tableName] Defaults to pluralized model name, unless freezeTableName is true, in which case it uses model name verbatim\n   * @param {string}                  [options.schema='public'] schema\n   * @param {string}                  [options.engine] Specify engine for model's table\n   * @param {string}                  [options.charset] Specify charset for model's table\n   * @param {string}                  [options.comment] Specify comment for model's table\n   * @param {string}                  [options.collate] Specify collation for model's table\n   * @param {string}                  [options.initialAutoIncrement] Set the initial AUTO_INCREMENT value for the table in MySQL.\n   * @param {object}                  [options.hooks] An object of hook function that are called before and after certain lifecycle events. The possible hooks are: beforeValidate, afterValidate, validationFailed, beforeBulkCreate, beforeBulkDestroy, beforeBulkUpdate, beforeCreate, beforeDestroy, beforeUpdate, afterCreate, beforeSave, afterDestroy, afterUpdate, afterBulkCreate, afterSave, afterBulkDestroy and afterBulkUpdate. See Hooks for more information about hook functions and their signatures. Each property can either be a function, or an array of functions.\n   * @param {object}                  [options.validate] An object of model wide validations. Validations have access to all model values via `this`. If the validator function takes an argument, it is assumed to be async, and is called with a callback that accepts an optional error.\n   * @param {'and'|'overwrite'}       [options.whereMergeStrategy] Specify the scopes merging strategy (default 'overwrite'). 'and' strategy will merge `where` properties of scopes together by adding `Op.and` at the top-most level. 'overwrite' strategy will overwrite similar attributes using the lastly defined one.\n   *\n   * @returns {Model}\n   */\n  static init(attributes, options = {}) {\n    if (!options.sequelize) {\n      throw new Error('No Sequelize instance passed');\n    }\n\n    this.sequelize = options.sequelize;\n\n    const globalOptions = this.sequelize.options;\n\n    options = Utils.merge(_.cloneDeep(globalOptions.define), options);\n\n    if (!options.modelName) {\n      options.modelName = this.name;\n    }\n\n    options = Utils.merge({\n      name: {\n        plural: Utils.pluralize(options.modelName),\n        singular: Utils.singularize(options.modelName)\n      },\n      indexes: [],\n      omitNull: globalOptions.omitNull,\n      schema: globalOptions.schema\n    }, options);\n\n    this.sequelize.runHooks('beforeDefine', attributes, options);\n\n    if (options.modelName !== this.name) {\n      Object.defineProperty(this, 'name', { value: options.modelName });\n    }\n    delete options.modelName;\n\n    this.options = {\n      timestamps: true,\n      validate: {},\n      freezeTableName: false,\n      underscored: false,\n      paranoid: false,\n      rejectOnEmpty: false,\n      whereCollection: null,\n      schema: null,\n      schemaDelimiter: '',\n      defaultScope: {},\n      scopes: {},\n      indexes: [],\n      whereMergeStrategy: 'overwrite',\n      ...options\n    };\n\n    // if you call \"define\" multiple times for the same modelName, do not clutter the factory\n    if (this.sequelize.isDefined(this.name)) {\n      this.sequelize.modelManager.removeModel(this.sequelize.modelManager.getModel(this.name));\n    }\n\n    this.associations = {};\n    this._setupHooks(options.hooks);\n\n    this.underscored = this.options.underscored;\n\n    if (!this.options.tableName) {\n      this.tableName = this.options.freezeTableName ? this.name : Utils.underscoredIf(Utils.pluralize(this.name), this.underscored);\n    } else {\n      this.tableName = this.options.tableName;\n    }\n\n    this._schema = this.options.schema;\n    this._schemaDelimiter = this.options.schemaDelimiter;\n\n    // error check options\n    _.each(options.validate, (validator, validatorType) => {\n      if (Object.prototype.hasOwnProperty.call(attributes, validatorType)) {\n        throw new Error(`A model validator function must not have the same name as a field. Model: ${this.name}, field/validation name: ${validatorType}`);\n      }\n\n      if (typeof validator !== 'function') {\n        throw new Error(`Members of the validate option must be functions. Model: ${this.name}, error with validate member ${validatorType}`);\n      }\n    });\n\n    if (!_.includes(['and', 'overwrite'], this.options && this.options.whereMergeStrategy)) {\n      throw new Error(`Invalid value ${this.options && this.options.whereMergeStrategy} for whereMergeStrategy. Allowed values are 'and' and 'overwrite'.`);\n    }\n\n\n    this.rawAttributes = _.mapValues(attributes, (attribute, name) => {\n      attribute = this.sequelize.normalizeAttribute(attribute);\n\n      if (attribute.type === undefined) {\n        throw new Error(`Unrecognized datatype for attribute \"${this.name}.${name}\"`);\n      }\n\n      if (attribute.allowNull !== false && _.get(attribute, 'validate.notNull')) {\n        throw new Error(`Invalid definition for \"${this.name}.${name}\", \"notNull\" validator is only allowed with \"allowNull:false\"`);\n      }\n\n      if (_.get(attribute, 'references.model.prototype') instanceof Model) {\n        attribute.references.model = attribute.references.model.getTableName();\n      }\n\n      return attribute;\n    });\n\n    const tableName = this.getTableName();\n    this._indexes = this.options.indexes\n      .map(index => Utils.nameIndex(this._conformIndex(index), tableName));\n\n    this.primaryKeys = {};\n    this._readOnlyAttributes = new Set();\n    this._timestampAttributes = {};\n\n    // setup names of timestamp attributes\n    if (this.options.timestamps) {\n      for (const key of ['createdAt', 'updatedAt', 'deletedAt']) {\n        if (!['undefined', 'string', 'boolean'].includes(typeof this.options[key])) {\n          throw new Error(`Value for \"${key}\" option must be a string or a boolean, got ${typeof this.options[key]}`);\n        }\n        if (this.options[key] === '') {\n          throw new Error(`Value for \"${key}\" option cannot be an empty string`);\n        }\n      }\n\n      if (this.options.createdAt !== false) {\n        this._timestampAttributes.createdAt =\n          typeof this.options.createdAt === 'string' ? this.options.createdAt : 'createdAt';\n        this._readOnlyAttributes.add(this._timestampAttributes.createdAt);\n      }\n      if (this.options.updatedAt !== false) {\n        this._timestampAttributes.updatedAt =\n          typeof this.options.updatedAt === 'string' ? this.options.updatedAt : 'updatedAt';\n        this._readOnlyAttributes.add(this._timestampAttributes.updatedAt);\n      }\n      if (this.options.paranoid && this.options.deletedAt !== false) {\n        this._timestampAttributes.deletedAt =\n          typeof this.options.deletedAt === 'string' ? this.options.deletedAt : 'deletedAt';\n        this._readOnlyAttributes.add(this._timestampAttributes.deletedAt);\n      }\n    }\n\n    // setup name for version attribute\n    if (this.options.version) {\n      this._versionAttribute = typeof this.options.version === 'string' ? this.options.version : 'version';\n      this._readOnlyAttributes.add(this._versionAttribute);\n    }\n\n    this._hasReadOnlyAttributes = this._readOnlyAttributes.size > 0;\n\n    // Add head and tail default attributes (id, timestamps)\n    this._addDefaultAttributes();\n    this.refreshAttributes();\n    this._findAutoIncrementAttribute();\n\n    this._scope = this.options.defaultScope;\n    this._scopeNames = ['defaultScope'];\n\n    this.sequelize.modelManager.addModel(this);\n    this.sequelize.runHooks('afterDefine', this);\n\n    return this;\n  }\n\n  static refreshAttributes() {\n    const attributeManipulation = {};\n\n    this.prototype._customGetters = {};\n    this.prototype._customSetters = {};\n\n    ['get', 'set'].forEach(type => {\n      const opt = `${type}terMethods`;\n      const funcs = { ...this.options[opt] };\n      const _custom = type === 'get' ? this.prototype._customGetters : this.prototype._customSetters;\n\n      _.each(funcs, (method, attribute) => {\n        _custom[attribute] = method;\n\n        if (type === 'get') {\n          funcs[attribute] = function() {\n            return this.get(attribute);\n          };\n        }\n        if (type === 'set') {\n          funcs[attribute] = function(value) {\n            return this.set(attribute, value);\n          };\n        }\n      });\n\n      _.each(this.rawAttributes, (options, attribute) => {\n        if (Object.prototype.hasOwnProperty.call(options, type)) {\n          _custom[attribute] = options[type];\n        }\n\n        if (type === 'get') {\n          funcs[attribute] = function() {\n            return this.get(attribute);\n          };\n        }\n        if (type === 'set') {\n          funcs[attribute] = function(value) {\n            return this.set(attribute, value);\n          };\n        }\n      });\n\n      _.each(funcs, (fct, name) => {\n        if (!attributeManipulation[name]) {\n          attributeManipulation[name] = {\n            configurable: true\n          };\n        }\n        attributeManipulation[name][type] = fct;\n      });\n    });\n\n    this._dataTypeChanges = {};\n    this._dataTypeSanitizers = {};\n\n    this._hasBooleanAttributes = false;\n    this._hasDateAttributes = false;\n    this._jsonAttributes = new Set();\n    this._virtualAttributes = new Set();\n    this._defaultValues = {};\n    this.prototype.validators = {};\n\n    this.fieldRawAttributesMap = {};\n\n    this.primaryKeys = {};\n    this.uniqueKeys = {};\n\n    _.each(this.rawAttributes, (definition, name) => {\n      definition.type = this.sequelize.normalizeDataType(definition.type);\n\n      definition.Model = this;\n      definition.fieldName = name;\n      definition._modelAttribute = true;\n\n      if (definition.field === undefined) {\n        definition.field = Utils.underscoredIf(name, this.underscored);\n      }\n\n      if (definition.primaryKey === true) {\n        this.primaryKeys[name] = definition;\n      }\n\n      this.fieldRawAttributesMap[definition.field] = definition;\n\n      if (definition.type._sanitize) {\n        this._dataTypeSanitizers[name] = definition.type._sanitize;\n      }\n\n      if (definition.type._isChanged) {\n        this._dataTypeChanges[name] = definition.type._isChanged;\n      }\n\n      if (definition.type instanceof DataTypes.BOOLEAN) {\n        this._hasBooleanAttributes = true;\n      } else if (definition.type instanceof DataTypes.DATE || definition.type instanceof DataTypes.DATEONLY) {\n        this._hasDateAttributes = true;\n      } else if (definition.type instanceof DataTypes.JSON) {\n        this._jsonAttributes.add(name);\n      } else if (definition.type instanceof DataTypes.VIRTUAL) {\n        this._virtualAttributes.add(name);\n      }\n\n      if (Object.prototype.hasOwnProperty.call(definition, 'defaultValue')) {\n        this._defaultValues[name] = () => Utils.toDefaultValue(definition.defaultValue, this.sequelize.options.dialect);\n      }\n\n      if (Object.prototype.hasOwnProperty.call(definition, 'unique') && definition.unique) {\n        let idxName;\n        if (\n          typeof definition.unique === 'object' &&\n          Object.prototype.hasOwnProperty.call(definition.unique, 'name')\n        ) {\n          idxName = definition.unique.name;\n        } else if (typeof definition.unique === 'string') {\n          idxName = definition.unique;\n        } else {\n          idxName = `${this.tableName}_${name}_unique`;\n        }\n\n        const idx = this.uniqueKeys[idxName] || { fields: [] };\n\n        idx.fields.push(definition.field);\n        idx.msg = idx.msg || definition.unique.msg || null;\n        idx.name = idxName || false;\n        idx.column = name;\n        idx.customIndex = definition.unique !== true;\n\n        this.uniqueKeys[idxName] = idx;\n      }\n\n      if (Object.prototype.hasOwnProperty.call(definition, 'validate')) {\n        this.prototype.validators[name] = definition.validate;\n      }\n\n      if (definition.index === true && definition.type instanceof DataTypes.JSONB) {\n        this._indexes.push(\n          Utils.nameIndex(\n            this._conformIndex({\n              fields: [definition.field || name],\n              using: 'gin'\n            }),\n            this.getTableName()\n          )\n        );\n\n        delete definition.index;\n      }\n    });\n\n    // Create a map of field to attribute names\n    this.fieldAttributeMap = _.reduce(this.fieldRawAttributesMap, (map, value, key) => {\n      if (key !== value.fieldName) {\n        map[key] = value.fieldName;\n      }\n      return map;\n    }, {});\n\n    this._hasJsonAttributes = !!this._jsonAttributes.size;\n\n    this._hasVirtualAttributes = !!this._virtualAttributes.size;\n\n    this._hasDefaultValues = !_.isEmpty(this._defaultValues);\n\n    this.tableAttributes = _.omitBy(this.rawAttributes, (_a, key) => this._virtualAttributes.has(key));\n\n    this.prototype._hasCustomGetters = Object.keys(this.prototype._customGetters).length;\n    this.prototype._hasCustomSetters = Object.keys(this.prototype._customSetters).length;\n\n    for (const key of Object.keys(attributeManipulation)) {\n      if (Object.prototype.hasOwnProperty.call(Model.prototype, key)) {\n        this.sequelize.log(`Not overriding built-in method from model attribute: ${key}`);\n        continue;\n      }\n      Object.defineProperty(this.prototype, key, attributeManipulation[key]);\n    }\n\n    this.prototype.rawAttributes = this.rawAttributes;\n    this.prototype._isAttribute = key => Object.prototype.hasOwnProperty.call(this.prototype.rawAttributes, key);\n\n    // Primary key convenience constiables\n    this.primaryKeyAttributes = Object.keys(this.primaryKeys);\n    this.primaryKeyAttribute = this.primaryKeyAttributes[0];\n    if (this.primaryKeyAttribute) {\n      this.primaryKeyField = this.rawAttributes[this.primaryKeyAttribute].field || this.primaryKeyAttribute;\n    }\n\n    this._hasPrimaryKeys = this.primaryKeyAttributes.length > 0;\n    this._isPrimaryKey = key => this.primaryKeyAttributes.includes(key);\n\n    this._attributeManipulation = attributeManipulation;\n  }\n\n  /**\n   * Remove attribute from model definition\n   *\n   * @param {string} attribute name of attribute to remove\n   */\n  static removeAttribute(attribute) {\n    delete this.rawAttributes[attribute];\n    this.refreshAttributes();\n  }\n\n  /**\n   * Sync this Model to the DB, that is create the table.\n   *\n   * @param {object} [options] sync options\n   *\n   * @see\n   * {@link Sequelize#sync} for options\n   *\n   * @returns {Promise<Model>}\n   */\n  static async sync(options) {\n    options = { ...this.options, ...options };\n    options.hooks = options.hooks === undefined ? true : !!options.hooks;\n\n    const attributes = this.tableAttributes;\n    const rawAttributes = this.fieldRawAttributesMap;\n\n    if (options.hooks) {\n      await this.runHooks('beforeSync', options);\n    }\n\n    const tableName = this.getTableName(options);\n\n    let tableExists;\n    if (options.force) {\n      await this.drop(options);\n      tableExists = false;\n    } else {\n      tableExists = await this.queryInterface.tableExists(tableName, options);\n    }\n\n    if (!tableExists) {\n      await this.queryInterface.createTable(tableName, attributes, options, this);\n    } else {\n      // enums are always updated, even if alter is not set. createTable calls it too.\n      await this.queryInterface.ensureEnums(tableName, attributes, options, this);\n    }\n\n    if (tableExists && options.alter) {\n      const tableInfos = await Promise.all([\n        this.queryInterface.describeTable(tableName, options),\n        this.queryInterface.getForeignKeyReferencesForTable(tableName, options)\n      ]);\n\n      const columns = tableInfos[0];\n      // Use for alter foreign keys\n      const foreignKeyReferences = tableInfos[1];\n      const removedConstraints = {};\n\n      for (const columnName in attributes) {\n        if (!Object.prototype.hasOwnProperty.call(attributes, columnName)) continue;\n        if (!columns[columnName] && !columns[attributes[columnName].field]) {\n          await this.queryInterface.addColumn(tableName, attributes[columnName].field || columnName, attributes[columnName], options);\n        }\n      }\n\n      if (options.alter === true || typeof options.alter === 'object' && options.alter.drop !== false) {\n        for (const columnName in columns) {\n          if (!Object.prototype.hasOwnProperty.call(columns, columnName)) continue;\n          const currentAttribute = rawAttributes[columnName];\n          if (!currentAttribute) {\n            await this.queryInterface.removeColumn(tableName, columnName, options);\n            continue;\n          }\n          if (currentAttribute.primaryKey) continue;\n          // Check foreign keys. If it's a foreign key, it should remove constraint first.\n          const references = currentAttribute.references;\n          if (currentAttribute.references) {\n            const database = this.sequelize.config.database;\n            const schema = this.sequelize.config.schema;\n            // Find existed foreign keys\n            for (const foreignKeyReference of foreignKeyReferences) {\n              const constraintName = foreignKeyReference.constraintName;\n              if (!!constraintName\n                && foreignKeyReference.tableCatalog === database\n                && (schema ? foreignKeyReference.tableSchema === schema : true)\n                && foreignKeyReference.referencedTableName === references.model\n                && foreignKeyReference.referencedColumnName === references.key\n                && (schema ? foreignKeyReference.referencedTableSchema === schema : true)\n                && !removedConstraints[constraintName]) {\n                // Remove constraint on foreign keys.\n                await this.queryInterface.removeConstraint(tableName, constraintName, options);\n                removedConstraints[constraintName] = true;\n              }\n            }\n          }\n\n          await this.queryInterface.changeColumn(tableName, columnName, currentAttribute, options);\n        }\n      }\n    }\n\n    const existingIndexes = await this.queryInterface.showIndex(tableName, options);\n    const missingIndexes = this._indexes.filter(item1 =>\n      !existingIndexes.some(item2 => item1.name === item2.name)\n    ).sort((index1, index2) => {\n      if (this.sequelize.options.dialect === 'postgres') {\n      // move concurrent indexes to the bottom to avoid weird deadlocks\n        if (index1.concurrently === true) return 1;\n        if (index2.concurrently === true) return -1;\n      }\n\n      return 0;\n    });\n\n    for (const index of missingIndexes) {\n      await this.queryInterface.addIndex(tableName, { ...options, ...index });\n    }\n\n    if (options.hooks) {\n      await this.runHooks('afterSync', options);\n    }\n\n    return this;\n  }\n\n  /**\n   * Drop the table represented by this Model\n   *\n   * @param {object}   [options] drop options\n   * @param {boolean}  [options.cascade=false]   Also drop all objects depending on this table, such as views. Only works in postgres\n   * @param {Function} [options.logging=false]   A function that gets executed while running the query to log the sql.\n   * @param {boolean}  [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   *\n   * @returns {Promise}\n   */\n  static async drop(options) {\n    return await this.queryInterface.dropTable(this.getTableName(options), options);\n  }\n\n  static async dropSchema(schema) {\n    return await this.queryInterface.dropSchema(schema);\n  }\n\n  /**\n   * Apply a schema to this model. For postgres, this will actually place the schema in front of the table name - `\"schema\".\"tableName\"`,\n   * while the schema will be prepended to the table name for mysql and sqlite - `'schema.tablename'`.\n   *\n   * This method is intended for use cases where the same model is needed in multiple schemas. In such a use case it is important\n   * to call `model.schema(schema, [options]).sync()` for each model to ensure the models are created in the correct schema.\n   *\n   * If a single default schema per model is needed, set the `options.schema='schema'` parameter during the `define()` call\n   * for the model.\n   *\n   * @param {string}   schema The name of the schema\n   * @param {object}   [options] schema options\n   * @param {string}   [options.schemaDelimiter='.'] The character(s) that separates the schema name from the table name\n   * @param {Function} [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {boolean}  [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   *\n   * @see\n   * {@link Sequelize#define} for more information about setting a default schema.\n   *\n   * @returns {Model}\n   */\n  static schema(schema, options) {\n\n    const clone = class extends this {};\n    Object.defineProperty(clone, 'name', { value: this.name });\n\n    clone._schema = schema;\n\n    if (options) {\n      if (typeof options === 'string') {\n        clone._schemaDelimiter = options;\n      } else if (options.schemaDelimiter) {\n        clone._schemaDelimiter = options.schemaDelimiter;\n      }\n    }\n\n    return clone;\n  }\n\n  /**\n   * Get the table name of the model, taking schema into account. The method will return The name as a string if the model has no schema,\n   * or an object with `tableName`, `schema` and `delimiter` properties.\n   *\n   * @returns {string|object}\n   */\n  static getTableName() {\n    return this.queryGenerator.addSchema(this);\n  }\n\n  /**\n   * Get un-scoped model\n   *\n   * @returns {Model}\n   */\n  static unscoped() {\n    return this.scope();\n  }\n\n  /**\n   * Add a new scope to the model. This is especially useful for adding scopes with includes, when the model you want to include is not available at the time this model is defined.\n   *\n   * By default this will throw an error if a scope with that name already exists. Pass `override: true` in the options object to silence this error.\n   *\n   * @param {string}          name The name of the scope. Use `defaultScope` to override the default scope\n   * @param {object|Function} scope scope or options\n   * @param {object}          [options] scope options\n   * @param {boolean}         [options.override=false] override old scope if already defined\n   */\n  static addScope(name, scope, options) {\n    options = { override: false, ...options };\n\n    if ((name === 'defaultScope' && Object.keys(this.options.defaultScope).length > 0 || name in this.options.scopes) && options.override === false) {\n      throw new Error(`The scope ${name} already exists. Pass { override: true } as options to silence this error`);\n    }\n\n    if (name === 'defaultScope') {\n      this.options.defaultScope = this._scope = scope;\n    } else {\n      this.options.scopes[name] = scope;\n    }\n  }\n\n  /**\n   * Apply a scope created in `define` to the model.\n   *\n   * @example <caption>how to create scopes</caption>\n   * const Model = sequelize.define('model', attributes, {\n   *   defaultScope: {\n   *     where: {\n   *       username: 'dan'\n   *     },\n   *     limit: 12\n   *   },\n   *   scopes: {\n   *     isALie: {\n   *       where: {\n   *         stuff: 'cake'\n   *       }\n   *     },\n   *     complexFunction: function(email, accessLevel) {\n   *       return {\n   *         where: {\n   *           email: {\n   *             [Op.like]: email\n   *           },\n   *           access_level {\n   *             [Op.gte]: accessLevel\n   *           }\n   *         }\n   *       }\n   *     }\n   *   }\n   * })\n   *\n   * # As you have defined a default scope, every time you do Model.find, the default scope is appended to your query. Here's a couple of examples:\n   *\n   * Model.findAll() // WHERE username = 'dan'\n   * Model.findAll({ where: { age: { [Op.gt]: 12 } } }) // WHERE age > 12 AND username = 'dan'\n   *\n   * @example <caption>To invoke scope functions you can do</caption>\n   * Model.scope({ method: ['complexFunction', 'dan@sequelize.com', 42]}).findAll()\n   * // WHERE email like 'dan@sequelize.com%' AND access_level >= 42\n   *\n   * @param {?Array|object|string} [option] The scope(s) to apply. Scopes can either be passed as consecutive arguments, or as an array of arguments. To apply simple scopes and scope functions with no arguments, pass them as strings. For scope function, pass an object, with a `method` property. The value can either be a string, if the method does not take any arguments, or an array, where the first element is the name of the method, and consecutive elements are arguments to that method. Pass null to remove all scopes, including the default.\n   *\n   * @returns {Model} A reference to the model, with the scope(s) applied. Calling scope again on the returned model will clear the previous scope.\n   */\n  static scope(option) {\n    const self = class extends this {};\n    let scope;\n    let scopeName;\n\n    Object.defineProperty(self, 'name', { value: this.name });\n\n    self._scope = {};\n    self._scopeNames = [];\n    self.scoped = true;\n\n    if (!option) {\n      return self;\n    }\n\n    const options = _.flatten(arguments);\n\n    for (const option of options) {\n      scope = null;\n      scopeName = null;\n\n      if (_.isPlainObject(option)) {\n        if (option.method) {\n          if (Array.isArray(option.method) && !!self.options.scopes[option.method[0]]) {\n            scopeName = option.method[0];\n            scope = self.options.scopes[scopeName].apply(self, option.method.slice(1));\n          }\n          else if (self.options.scopes[option.method]) {\n            scopeName = option.method;\n            scope = self.options.scopes[scopeName].apply(self);\n          }\n        } else {\n          scope = option;\n        }\n      } else if (option === 'defaultScope' && _.isPlainObject(self.options.defaultScope)) {\n        scope = self.options.defaultScope;\n      } else {\n        scopeName = option;\n        scope = self.options.scopes[scopeName];\n        if (typeof scope === 'function') {\n          scope = scope();\n        }\n      }\n\n      if (scope) {\n        this._conformIncludes(scope, this);\n        // clone scope so it doesn't get modified\n        this._assignOptions(self._scope, Utils.cloneDeep(scope));\n        self._scopeNames.push(scopeName ? scopeName : 'defaultScope');\n      } else {\n        throw new sequelizeErrors.SequelizeScopeError(`Invalid scope ${scopeName} called.`);\n      }\n    }\n\n    return self;\n  }\n\n  /**\n   * Search for multiple instances.\n   *\n   * @example <caption>Simple search using AND and =</caption>\n   * Model.findAll({\n   *   where: {\n   *     attr1: 42,\n   *     attr2: 'cake'\n   *   }\n   * })\n   *\n   * # WHERE attr1 = 42 AND attr2 = 'cake'\n   *\n   * @example <caption>Using greater than, less than etc.</caption>\n   * const {gt, lte, ne, in: opIn} = Sequelize.Op;\n   *\n   * Model.findAll({\n   *   where: {\n   *     attr1: {\n   *       [gt]: 50\n   *     },\n   *     attr2: {\n   *       [lte]: 45\n   *     },\n   *     attr3: {\n   *       [opIn]: [1,2,3]\n   *     },\n   *     attr4: {\n   *       [ne]: 5\n   *     }\n   *   }\n   * })\n   *\n   * # WHERE attr1 > 50 AND attr2 <= 45 AND attr3 IN (1,2,3) AND attr4 != 5\n   *\n   * @example <caption>Queries using OR</caption>\n   * const {or, and, gt, lt} = Sequelize.Op;\n   *\n   * Model.findAll({\n   *   where: {\n   *     name: 'a project',\n   *     [or]: [\n   *       {id: [1, 2, 3]},\n   *       {\n   *         [and]: [\n   *           {id: {[gt]: 10}},\n   *           {id: {[lt]: 100}}\n   *         ]\n   *       }\n   *     ]\n   *   }\n   * });\n   *\n   * # WHERE `Model`.`name` = 'a project' AND (`Model`.`id` IN (1, 2, 3) OR (`Model`.`id` > 10 AND `Model`.`id` < 100));\n   *\n   * @see\n   * {@link Operators} for possible operators\n   * __Alias__: _all_\n   *\n   * The promise is resolved with an array of Model instances if the query succeeds._\n   *\n   * @param  {object}                                                    [options] A hash of options to describe the scope of the search\n   * @param  {object}                                                    [options.where] A hash of attributes to describe your search. See above for examples.\n   * @param  {Array<string>|object}                                      [options.attributes] A list of the attributes that you want to select, or an object with `include` and `exclude` keys. To rename an attribute, you can pass an array, with two elements - the first is the name of the attribute in the DB (or some kind of expression such as `Sequelize.literal`, `Sequelize.fn` and so on), and the second is the name you want the attribute to have in the returned instance\n   * @param  {Array<string>}                                             [options.attributes.include] Select all the attributes of the model, plus some additional ones. Useful for aggregations, e.g. `{ attributes: { include: [[sequelize.fn('COUNT', sequelize.col('id')), 'total']] }`\n   * @param  {Array<string>}                                             [options.attributes.exclude] Select all the attributes of the model, except some few. Useful for security purposes e.g. `{ attributes: { exclude: ['password'] } }`\n   * @param  {boolean}                                                   [options.paranoid=true] If true, only non-deleted records will be returned. If false, both deleted and non-deleted records will be returned. Only applies if `options.paranoid` is true for the model.\n   * @param  {Array<object|Model|string>}                                [options.include] A list of associations to eagerly load using a left join. Supported is either `{ include: [ Model1, Model2, ...]}` or `{ include: [{ model: Model1, as: 'Alias' }]}` or `{ include: ['Alias']}`. If your association are set up with an `as` (eg. `X.hasMany(Y, { as: 'Z' }`, you need to specify Z in the as attribute when eager loading Y).\n   * @param  {Model}                                                     [options.include[].model] The model you want to eagerly load\n   * @param  {string}                                                    [options.include[].as] The alias of the relation, in case the model you want to eagerly load is aliased. For `hasOne` / `belongsTo`, this should be the singular name, and for `hasMany`, it should be the plural\n   * @param  {Association}                                               [options.include[].association] The association you want to eagerly load. (This can be used instead of providing a model/as pair)\n   * @param  {object}                                                    [options.include[].where] Where clauses to apply to the child models. Note that this converts the eager load to an inner join, unless you explicitly set `required: false`\n   * @param  {boolean}                                                   [options.include[].or=false] Whether to bind the ON and WHERE clause together by OR instead of AND.\n   * @param  {object}                                                    [options.include[].on] Supply your own ON condition for the join.\n   * @param  {Array<string>}                                             [options.include[].attributes] A list of attributes to select from the child model\n   * @param  {boolean}                                                   [options.include[].required] If true, converts to an inner join, which means that the parent model will only be loaded if it has any matching children. True if `include.where` is set, false otherwise.\n   * @param  {boolean}                                                   [options.include[].right] If true, converts to a right join if dialect support it. Ignored if `include.required` is true.\n   * @param  {boolean}                                                   [options.include[].separate] If true, runs a separate query to fetch the associated instances, only supported for hasMany associations\n   * @param  {number}                                                    [options.include[].limit] Limit the joined rows, only supported with include.separate=true\n   * @param  {string}                                                    [options.include[].through.as] The alias for the join model, in case you want to give it a different name than the default one.\n   * @param  {boolean}                                                   [options.include[].through.paranoid] If true, only non-deleted records will be returned from the join table. If false, both deleted and non-deleted records will be returned. Only applies if through model is paranoid.\n   * @param  {object}                                                    [options.include[].through.where] Filter on the join model for belongsToMany relations\n   * @param  {Array}                                                     [options.include[].through.attributes] A list of attributes to select from the join model for belongsToMany relations\n   * @param  {Array<object|Model|string>}                                [options.include[].include] Load further nested related models\n   * @param  {boolean}                                                   [options.include[].duplicating] Mark the include as duplicating, will prevent a subquery from being used.\n   * @param  {Array|Sequelize.fn|Sequelize.col|Sequelize.literal}        [options.order] Specifies an ordering. Using an array, you can provide several columns / functions to order by. Each element can be further wrapped in a two-element array. The first element is the column / function to order by, the second is the direction. For example: `order: [['name', 'DESC']]`. In this way the column will be escaped, but the direction will not.\n   * @param  {number}                                                    [options.limit] Limit for result\n   * @param  {number}                                                    [options.offset] Offset for result\n   * @param  {Transaction}                                               [options.transaction] Transaction to run query under\n   * @param  {string|object}                                             [options.lock] Lock the selected rows. Possible options are transaction.LOCK.UPDATE and transaction.LOCK.SHARE. Postgres also supports transaction.LOCK.KEY_SHARE, transaction.LOCK.NO_KEY_UPDATE and specific model locks with joins.\n   * @param  {boolean}                                                   [options.skipLocked] Skip locked rows. Only supported in Postgres.\n   * @param  {boolean}                                                   [options.raw] Return raw result. See sequelize.query for more information.\n   * @param  {Function}                                                  [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param  {boolean}                                                   [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {object}                                                    [options.having] Having options\n   * @param  {string}                                                    [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param  {boolean|Error}                                             [options.rejectOnEmpty=false] Throws an error when no records found\n   * @param  {boolean}                                                   [options.dotNotation] Allows including tables having the same attribute/column names - which have a dot in them.\n   * @param  {boolean}                                                   [options.nest=false] If true, transforms objects with `.` separated property names into nested objects.\n   *\n   * @see\n   * {@link Sequelize#query}\n   *\n   * @returns {Promise<Array<Model>>}\n   */\n  static async findAll(options) {\n    if (options !== undefined && !_.isPlainObject(options)) {\n      throw new sequelizeErrors.QueryError('The argument passed to findAll must be an options object, use findByPk if you wish to pass a single primary key value');\n    }\n\n    if (options !== undefined && options.attributes) {\n      if (!Array.isArray(options.attributes) && !_.isPlainObject(options.attributes)) {\n        throw new sequelizeErrors.QueryError('The attributes option must be an array of column names or an object');\n      }\n    }\n\n    this.warnOnInvalidOptions(options, Object.keys(this.rawAttributes));\n\n    const tableNames = {};\n\n    tableNames[this.getTableName(options)] = true;\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    _.defaults(options, { hooks: true });\n\n    // set rejectOnEmpty option, defaults to model options\n    options.rejectOnEmpty = Object.prototype.hasOwnProperty.call(options, 'rejectOnEmpty')\n      ? options.rejectOnEmpty\n      : this.options.rejectOnEmpty;\n\n    this._injectScope(options);\n\n    if (options.hooks) {\n      await this.runHooks('beforeFind', options);\n    }\n    this._conformIncludes(options, this);\n    this._expandAttributes(options);\n    this._expandIncludeAll(options);\n\n    if (options.hooks) {\n      await this.runHooks('beforeFindAfterExpandIncludeAll', options);\n    }\n    options.originalAttributes = this._injectDependentVirtualAttributes(options.attributes);\n\n    if (options.include) {\n      options.hasJoin = true;\n\n      this._validateIncludedElements(options, tableNames);\n\n      // If we're not raw, we have to make sure we include the primary key for de-duplication\n      if (\n        options.attributes\n        && !options.raw\n        && this.primaryKeyAttribute\n        && !options.attributes.includes(this.primaryKeyAttribute)\n        && (!options.group || !options.hasSingleAssociation || options.hasMultiAssociation)\n      ) {\n        options.attributes = [this.primaryKeyAttribute].concat(options.attributes);\n      }\n    }\n\n    if (!options.attributes) {\n      options.attributes = Object.keys(this.rawAttributes);\n      options.originalAttributes = this._injectDependentVirtualAttributes(options.attributes);\n    }\n\n    // whereCollection is used for non-primary key updates\n    this.options.whereCollection = options.where || null;\n\n    Utils.mapFinderOptions(options, this);\n\n    options = this._paranoidClause(this, options);\n\n    if (options.hooks) {\n      await this.runHooks('beforeFindAfterOptions', options);\n    }\n    const selectOptions = { ...options, tableNames: Object.keys(tableNames) };\n    const results = await this.queryInterface.select(this, this.getTableName(selectOptions), selectOptions);\n    if (options.hooks) {\n      await this.runHooks('afterFind', results, options);\n    }\n\n    //rejectOnEmpty mode\n    if (_.isEmpty(results) && options.rejectOnEmpty) {\n      if (typeof options.rejectOnEmpty === 'function') {\n        throw new options.rejectOnEmpty();\n      }\n      if (typeof options.rejectOnEmpty === 'object') {\n        throw options.rejectOnEmpty;\n      }\n      throw new sequelizeErrors.EmptyResultError();\n    }\n\n    return await Model._findSeparate(results, options);\n  }\n\n  static warnOnInvalidOptions(options, validColumnNames) {\n    if (!_.isPlainObject(options)) {\n      return;\n    }\n\n    const unrecognizedOptions = Object.keys(options).filter(k => !validQueryKeywords.has(k));\n    const unexpectedModelAttributes = _.intersection(unrecognizedOptions, validColumnNames);\n    if (!options.where && unexpectedModelAttributes.length > 0) {\n      logger.warn(`Model attributes (${unexpectedModelAttributes.join(', ')}) passed into finder method options of model ${this.name}, but the options.where object is empty. Did you forget to use options.where?`);\n    }\n  }\n\n  static _injectDependentVirtualAttributes(attributes) {\n    if (!this._hasVirtualAttributes) return attributes;\n    if (!attributes || !Array.isArray(attributes)) return attributes;\n\n    for (const attribute of attributes) {\n      if (\n        this._virtualAttributes.has(attribute)\n        && this.rawAttributes[attribute].type.fields\n      ) {\n        attributes = attributes.concat(this.rawAttributes[attribute].type.fields);\n      }\n    }\n\n    attributes = _.uniq(attributes);\n\n    return attributes;\n  }\n\n  static async _findSeparate(results, options) {\n    if (!options.include || options.raw || !results) return results;\n\n    const original = results;\n    if (options.plain) results = [results];\n\n    if (!results.length) return original;\n\n    await Promise.all(options.include.map(async include => {\n      if (!include.separate) {\n        return await Model._findSeparate(\n          results.reduce((memo, result) => {\n            let associations = result.get(include.association.as);\n\n            // Might be an empty belongsTo relation\n            if (!associations) return memo;\n\n            // Force array so we can concat no matter if it's 1:1 or :M\n            if (!Array.isArray(associations)) associations = [associations];\n\n            for (let i = 0, len = associations.length; i !== len; ++i) {\n              memo.push(associations[i]);\n            }\n            return memo;\n          }, []),\n          {\n\n            ..._.omit(options, 'include', 'attributes', 'order', 'where', 'limit', 'offset', 'plain', 'scope'),\n            include: include.include || []\n          }\n        );\n      }\n\n      const map = await include.association.get(results, {\n\n        ..._.omit(options, nonCascadingOptions),\n        ..._.omit(include, ['parent', 'association', 'as', 'originalAttributes'])\n      });\n\n      for (const result of results) {\n        result.set(\n          include.association.as,\n          map[result.get(include.association.sourceKey)],\n          { raw: true }\n        );\n      }\n    }));\n\n    return original;\n  }\n\n  /**\n   * Search for a single instance by its primary key._\n   *\n   * @param  {number|bigint|string|Buffer}      param The value of the desired instance's primary key.\n   * @param  {object}                           [options] find options\n   * @param  {Transaction}                      [options.transaction] Transaction to run query under\n   * @param  {string}                           [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @see\n   * {@link Model.findAll}           for a full explanation of options, Note that options.where is not supported.\n   *\n   * @returns {Promise<Model>}\n   */\n  static async findByPk(param, options) {\n    // return Promise resolved with null if no arguments are passed\n    if ([null, undefined].includes(param)) {\n      return null;\n    }\n\n    options = Utils.cloneDeep(options) || {};\n\n    if (typeof param === 'number' || typeof param === 'bigint' || typeof param === 'string' || Buffer.isBuffer(param)) {\n      options.where = {\n        [this.primaryKeyAttribute]: param\n      };\n    } else {\n      throw new Error(`Argument passed to findByPk is invalid: ${param}`);\n    }\n\n    // Bypass a possible overloaded findOne\n    // note: in v6, we don't bypass overload https://github.com/sequelize/sequelize/issues/14003\n    return await this.findOne(options);\n  }\n\n  /**\n   * Search for a single instance. Returns the first instance found, or null if none can be found.\n   *\n   * @param  {object}       [options] A hash of options to describe the scope of the search\n   * @param  {Transaction}  [options.transaction] Transaction to run query under\n   * @param  {string}       [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @see\n   * {@link Model.findAll} for an explanation of options\n   *\n   * @returns {Promise<Model|null>}\n   */\n  static async findOne(options) {\n    if (options !== undefined && !_.isPlainObject(options)) {\n      throw new Error('The argument passed to findOne must be an options object, use findByPk if you wish to pass a single primary key value');\n    }\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    if (options.limit === undefined) {\n      const uniqueSingleColumns = _.chain(this.uniqueKeys).values().filter(c => c.fields.length === 1).map('column').value();\n\n      // Don't add limit if querying directly on the pk or a unique column\n      if (!options.where || !_.some(options.where, (value, key) =>\n        (key === this.primaryKeyAttribute || uniqueSingleColumns.includes(key)) &&\n          (Utils.isPrimitive(value) || Buffer.isBuffer(value))\n      )) {\n        options.limit = 1;\n      }\n    }\n\n    // Bypass a possible overloaded findAll.\n    // note: in v6, we don't bypass overload https://github.com/sequelize/sequelize/issues/14003\n    return await this.findAll(_.defaults(options, {\n      plain: true\n    }));\n  }\n\n  /**\n   * Run an aggregation method on the specified field\n   *\n   * @param {string}          attribute The attribute to aggregate over. Can be a field name or *\n   * @param {string}          aggregateFunction The function to use for aggregation, e.g. sum, max etc.\n   * @param {object}          [options] Query options. See sequelize.query for full options\n   * @param {object}          [options.where] A hash of search attributes.\n   * @param {Function}        [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {boolean}         [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param {DataTypes|string} [options.dataType] The type of the result. If `field` is a field in this Model, the default will be the type of that field, otherwise defaults to float.\n   * @param {boolean}         [options.distinct] Applies DISTINCT to the field being aggregated over\n   * @param {Transaction}     [options.transaction] Transaction to run query under\n   * @param {boolean}         [options.plain] When `true`, the first returned value of `aggregateFunction` is cast to `dataType` and returned. If additional attributes are specified, along with `group` clauses, set `plain` to `false` to return all values of all returned rows.  Defaults to `true`\n   *\n   * @returns {Promise<DataTypes|object>} Returns the aggregate result cast to `options.dataType`, unless `options.plain` is false, in which case the complete data result is returned.\n   */\n  static async aggregate(attribute, aggregateFunction, options) {\n    options = Utils.cloneDeep(options);\n\n    // We need to preserve attributes here as the `injectScope` call would inject non aggregate columns.\n    const prevAttributes = options.attributes;\n    this._injectScope(options);\n    options.attributes = prevAttributes;\n    this._conformIncludes(options, this);\n\n    if (options.include) {\n      this._expandIncludeAll(options);\n      this._validateIncludedElements(options);\n    }\n\n    const attrOptions = this.rawAttributes[attribute];\n    const field = attrOptions && attrOptions.field || attribute;\n    let aggregateColumn = this.sequelize.col(field);\n\n    if (options.distinct) {\n      aggregateColumn = this.sequelize.fn('DISTINCT', aggregateColumn);\n    }\n\n    let { group } = options;\n    if (Array.isArray(group) && Array.isArray(group[0])) {\n      noDoubleNestedGroup();\n      group = _.flatten(group);\n    }\n    options.attributes = _.unionBy(\n      options.attributes,\n      group,\n      [[this.sequelize.fn(aggregateFunction, aggregateColumn), aggregateFunction]],\n      a => Array.isArray(a) ? a[1] : a\n    );\n\n    if (!options.dataType) {\n      if (attrOptions) {\n        options.dataType = attrOptions.type;\n      } else {\n        // Use FLOAT as fallback\n        options.dataType = new DataTypes.FLOAT();\n      }\n    } else {\n      options.dataType = this.sequelize.normalizeDataType(options.dataType);\n    }\n\n    Utils.mapOptionFieldNames(options, this);\n    options = this._paranoidClause(this, options);\n\n    const value = await this.queryInterface.rawSelect(this.getTableName(options), options, aggregateFunction, this);\n    return value;\n  }\n\n  /**\n   * Count the number of records matching the provided where clause.\n   *\n   * If you provide an `include` option, the number of matching associations will be counted instead.\n   *\n   * @param {object}        [options] options\n   * @param {object}        [options.where] A hash of search attributes.\n   * @param {object}        [options.include] Include options. See `find` for details\n   * @param {boolean}       [options.paranoid=true] Set `true` to count only non-deleted records. Can be used on models with `paranoid` enabled\n   * @param {boolean}       [options.distinct] Apply COUNT(DISTINCT(col)) on primary key or on options.col.\n   * @param {string}        [options.col] Column on which COUNT() should be applied\n   * @param {Array}         [options.attributes] Used in conjunction with `group`\n   * @param {Array}         [options.group] For creating complex counts. Will return multiple rows as needed.\n   * @param {Transaction}   [options.transaction] Transaction to run query under\n   * @param {Function}      [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {boolean}       [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param {string}        [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @returns {Promise<number>}\n   */\n  static async count(options) {\n    options = Utils.cloneDeep(options);\n    options = _.defaults(options, { hooks: true });\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    options.raw = true;\n    if (options.hooks) {\n      await this.runHooks('beforeCount', options);\n    }\n    let col = options.col || '*';\n    if (options.include) {\n      col = `${this.name}.${options.col || this.primaryKeyField}`;\n    }\n    if (options.distinct && col === '*') {\n      col = this.primaryKeyField;\n    }\n    options.plain = !options.group;\n    options.dataType = new DataTypes.INTEGER();\n    options.includeIgnoreAttributes = false;\n\n    // No limit, offset or order for the options max be given to count()\n    // Set them to null to prevent scopes setting those values\n    options.limit = null;\n    options.offset = null;\n    options.order = null;\n\n    const result = await this.aggregate(col, 'count', options);\n\n    // When grouping is used, some dialects such as PG are returning the count as string\n    // --> Manually convert it to number\n    if (Array.isArray(result)) {\n      return result.map(item => ({\n        ...item,\n        count: Number(item.count)\n      }));\n    }\n\n    return result;\n  }\n\n  /**\n   * Find all the rows matching your query, within a specified offset / limit, and get the total number of rows matching your query. This is very useful for paging\n   *\n   * @example\n   * const result = await Model.findAndCountAll({\n   *   where: ...,\n   *   limit: 12,\n   *   offset: 12\n   * });\n   *\n   * # In the above example, `result.rows` will contain rows 13 through 24, while `result.count` will return the total number of rows that matched your query.\n   *\n   * # When you add includes, only those which are required (either because they have a where clause, or because `required` is explicitly set to true on the include) will be added to the count part.\n   *\n   * # Suppose you want to find all users who have a profile attached:\n   *\n   * User.findAndCountAll({\n   *   include: [\n   *      { model: Profile, required: true}\n   *   ],\n   *   limit: 3\n   * });\n   *\n   * # Because the include for `Profile` has `required` set it will result in an inner join, and only the users who have a profile will be counted. If we remove `required` from the include, both users with and without profiles will be counted\n   *\n   * @param {object} [options] See findAll options\n   *\n   * @see\n   * {@link Model.findAll} for a specification of find and query options\n   * @see\n   * {@link Model.count} for a specification of count options\n   *\n   * @returns {Promise<{count: number | number[], rows: Model[]}>}\n   */\n  static async findAndCountAll(options) {\n    if (options !== undefined && !_.isPlainObject(options)) {\n      throw new Error('The argument passed to findAndCountAll must be an options object, use findByPk if you wish to pass a single primary key value');\n    }\n\n    const countOptions = Utils.cloneDeep(options);\n\n    if (countOptions.attributes) {\n      countOptions.attributes = undefined;\n    }\n\n    const [count, rows] = await Promise.all([\n      this.count(countOptions),\n      this.findAll(options)\n    ]);\n\n    return {\n      count,\n      rows: count === 0 ? [] : rows\n    };\n  }\n\n  /**\n   * Find the maximum value of field\n   *\n   * @param {string} field attribute / field name\n   * @param {object} [options] See aggregate\n   *\n   * @see\n   * {@link Model.aggregate} for options\n   *\n   * @returns {Promise<*>}\n   */\n  static async max(field, options) {\n    return await this.aggregate(field, 'max', options);\n  }\n\n  /**\n   * Find the minimum value of field\n   *\n   * @param {string} field attribute / field name\n   * @param {object} [options] See aggregate\n   *\n   * @see\n   * {@link Model.aggregate} for options\n   *\n   * @returns {Promise<*>}\n   */\n  static async min(field, options) {\n    return await this.aggregate(field, 'min', options);\n  }\n\n  /**\n   * Find the sum of field\n   *\n   * @param {string} field attribute / field name\n   * @param {object} [options] See aggregate\n   *\n   * @see\n   * {@link Model.aggregate} for options\n   *\n   * @returns {Promise<number>}\n   */\n  static async sum(field, options) {\n    return await this.aggregate(field, 'sum', options);\n  }\n\n  /**\n   * Builds a new model instance.\n   *\n   * @param {object|Array} values An object of key value pairs or an array of such. If an array, the function will return an array of instances.\n   * @param {object}  [options] Instance build options\n   * @param {boolean} [options.raw=false] If set to true, values will ignore field and virtual setters.\n   * @param {boolean} [options.isNewRecord=true] Is this new record\n   * @param {Array}   [options.include] an array of include options - Used to build prefetched/included model instances. See `set`\n   *\n   * @returns {Model|Array<Model>}\n   */\n  static build(values, options) {\n    if (Array.isArray(values)) {\n      return this.bulkBuild(values, options);\n    }\n\n    return new this(values, options);\n  }\n\n  static bulkBuild(valueSets, options) {\n    options = { isNewRecord: true, ...options };\n\n    if (!options.includeValidated) {\n      this._conformIncludes(options, this);\n      if (options.include) {\n        this._expandIncludeAll(options);\n        this._validateIncludedElements(options);\n      }\n    }\n\n    if (options.attributes) {\n      options.attributes = options.attributes.map(attribute => Array.isArray(attribute) ? attribute[1] : attribute);\n    }\n\n    return valueSets.map(values => this.build(values, options));\n  }\n\n  /**\n   * Builds a new model instance and calls save on it.\n   *\n   * @see\n   * {@link Model.build}\n   * @see\n   * {@link Model.save}\n   *\n   * @param  {object}         values                       Hash of data values to create new record with\n   * @param  {object}         [options]                    Build and query options\n   * @param  {boolean}        [options.raw=false]          If set to true, values will ignore field and virtual setters.\n   * @param  {boolean}        [options.isNewRecord=true]   Is this new record\n   * @param  {Array}          [options.include]            An array of include options - Used to build prefetched/included model instances. See `set`\n   * @param  {string[]}       [options.fields]             An optional array of strings, representing database columns. If fields is provided, only those columns will be validated and saved.\n   * @param  {boolean}        [options.silent=false]       If true, the updatedAt timestamp will not be updated.\n   * @param  {boolean}        [options.validate=true]      If false, validations won't be run.\n   * @param  {boolean}        [options.hooks=true]         Run before and after create / update + validate hooks\n   * @param  {Function}       [options.logging=false]      A function that gets executed while running the query to log the sql.\n   * @param  {boolean}        [options.benchmark=false]    Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {Transaction}    [options.transaction]        Transaction to run query under\n   * @param  {string}         [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param  {boolean|Array}  [options.returning=true]     Appends RETURNING <model columns> to get back all defined values; if an array of column names, append RETURNING <columns> to get back specific columns (Postgres only)\n   *\n   * @returns {Promise<Model>}\n   *\n   */\n  static async create(values, options) {\n    options = Utils.cloneDeep(options || {});\n\n    return await this.build(values, {\n      isNewRecord: true,\n      attributes: options.fields,\n      include: options.include,\n      raw: options.raw,\n      silent: options.silent\n    }).save(options);\n  }\n\n  /**\n   * Find a row that matches the query, or build (but don't save) the row if none is found.\n   * The successful result of the promise will be (instance, built)\n   *\n   * @param {object}   options find options\n   * @param {object}   options.where A hash of search attributes. If `where` is a plain object it will be appended with defaults to build a new instance.\n   * @param {object}   [options.defaults] Default values to use if building a new instance\n   * @param {object}   [options.transaction] Transaction to run query under\n   *\n   * @returns {Promise<Model,boolean>}\n   */\n  static async findOrBuild(options) {\n    if (!options || !options.where || arguments.length > 1) {\n      throw new Error(\n        'Missing where attribute in the options parameter passed to findOrBuild. ' +\n        'Please note that the API has changed, and is now options only (an object with where, defaults keys, transaction etc.)'\n      );\n    }\n\n    let values;\n\n    let instance = await this.findOne(options);\n    if (instance === null) {\n      values = { ...options.defaults };\n      if (_.isPlainObject(options.where)) {\n        values = Utils.defaults(values, options.where);\n      }\n\n      instance = this.build(values, options);\n\n      return [instance, true];\n    }\n\n    return [instance, false];\n  }\n\n  /**\n   * Find a row that matches the query, or build and save the row if none is found\n   * The successful result of the promise will be (instance, created)\n   *\n   * If no transaction is passed in the `options` object, a new transaction will be created internally, to prevent the race condition where a matching row is created by another connection after the find but before the insert call.\n   * However, it is not always possible to handle this case in SQLite, specifically if one transaction inserts and another tries to select before the first one has committed. In this case, an instance of sequelize. TimeoutError will be thrown instead.\n   * If a transaction is created, a savepoint will be created instead, and any unique constraint violation will be handled internally.\n   *\n   * @see\n   * {@link Model.findAll} for a full specification of find and options\n   *\n   * @param {object}      options find and create options\n   * @param {object}      options.where where A hash of search attributes. If `where` is a plain object it will be appended with defaults to build a new instance.\n   * @param {object}      [options.defaults] Default values to use if creating a new instance\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   *\n   * @returns {Promise<Model,boolean>}\n   */\n  static async findOrCreate(options) {\n    if (!options || !options.where || arguments.length > 1) {\n      throw new Error(\n        'Missing where attribute in the options parameter passed to findOrCreate. ' +\n        'Please note that the API has changed, and is now options only (an object with where, defaults keys, transaction etc.)'\n      );\n    }\n\n    options = { ...options };\n\n    if (options.defaults) {\n      const defaults = Object.keys(options.defaults);\n      const unknownDefaults = defaults.filter(name => !this.rawAttributes[name]);\n\n      if (unknownDefaults.length) {\n        logger.warn(`Unknown attributes (${unknownDefaults}) passed to defaults option of findOrCreate`);\n      }\n    }\n\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    const internalTransaction = !options.transaction;\n    let values;\n    let transaction;\n\n    try {\n      const t = await this.sequelize.transaction(options);\n      transaction = t;\n      options.transaction = t;\n\n      const found = await this.findOne(Utils.defaults({ transaction }, options));\n      if (found !== null) {\n        return [found, false];\n      }\n\n      values = { ...options.defaults };\n      if (_.isPlainObject(options.where)) {\n        values = Utils.defaults(values, options.where);\n      }\n\n      options.exception = true;\n      options.returning = true;\n\n      try {\n        const created = await this.create(values, options);\n        if (created.get(this.primaryKeyAttribute, { raw: true }) === null) {\n          // If the query returned an empty result for the primary key, we know that this was actually a unique constraint violation\n          throw new sequelizeErrors.UniqueConstraintError();\n        }\n\n        return [created, true];\n      } catch (err) {\n        if (!(err instanceof sequelizeErrors.UniqueConstraintError)) throw err;\n        const flattenedWhere = Utils.flattenObjectDeep(options.where);\n        const flattenedWhereKeys = Object.keys(flattenedWhere).map(name => _.last(name.split('.')));\n        const whereFields = flattenedWhereKeys.map(name => _.get(this.rawAttributes, `${name}.field`, name));\n        const defaultFields = options.defaults && Object.keys(options.defaults)\n          .filter(name => this.rawAttributes[name])\n          .map(name => this.rawAttributes[name].field || name);\n\n        const errFieldKeys = Object.keys(err.fields);\n        const errFieldsWhereIntersects = Utils.intersects(errFieldKeys, whereFields);\n        if (defaultFields && !errFieldsWhereIntersects && Utils.intersects(errFieldKeys, defaultFields)) {\n          throw err;\n        }\n\n        if (errFieldsWhereIntersects) {\n          _.each(err.fields, (value, key) => {\n            const name = this.fieldRawAttributesMap[key].fieldName;\n            if (value.toString() !== options.where[name].toString()) {\n              throw new Error(`${this.name}#findOrCreate: value used for ${name} was not equal for both the find and the create calls, '${options.where[name]}' vs '${value}'`);\n            }\n          });\n        }\n\n        // Someone must have created a matching instance inside the same transaction since we last did a find. Let's find it!\n        const otherCreated = await this.findOne(Utils.defaults({\n          transaction: internalTransaction ? null : transaction\n        }, options));\n\n        // Sanity check, ideally we caught this at the defaultFeilds/err.fields check\n        // But if we didn't and instance is null, we will throw\n        if (otherCreated === null) throw err;\n\n        return [otherCreated, false];\n      }\n    } finally {\n      if (internalTransaction && transaction) {\n        await transaction.commit();\n      }\n    }\n  }\n\n  /**\n   * A more performant findOrCreate that may not work under a transaction (working in postgres)\n   * Will execute a find call, if empty then attempt to create, if unique constraint then attempt to find again\n   *\n   * @see\n   * {@link Model.findAll} for a full specification of find and options\n   *\n   * @param {object} options find options\n   * @param {object} options.where A hash of search attributes. If `where` is a plain object it will be appended with defaults to build a new instance.\n   * @param {object} [options.defaults] Default values to use if creating a new instance\n   *\n   * @returns {Promise<Model,boolean>}\n   */\n  static async findCreateFind(options) {\n    if (!options || !options.where) {\n      throw new Error(\n        'Missing where attribute in the options parameter passed to findCreateFind.'\n      );\n    }\n\n    let values = { ...options.defaults };\n    if (_.isPlainObject(options.where)) {\n      values = Utils.defaults(values, options.where);\n    }\n\n\n    const found = await this.findOne(options);\n    if (found) return [found, false];\n\n    try {\n      const createOptions = { ...options };\n\n      // To avoid breaking a postgres transaction, run the create with `ignoreDuplicates`.\n      if (this.sequelize.options.dialect === 'postgres' && options.transaction) {\n        createOptions.ignoreDuplicates = true;\n      }\n\n      const created = await this.create(values, createOptions);\n      return [created, true];\n    } catch (err) {\n      if (!(err instanceof sequelizeErrors.UniqueConstraintError || err instanceof sequelizeErrors.EmptyResultError)) {\n        throw err;\n      }\n\n      const foundAgain = await this.findOne(options);\n      return [foundAgain, false];\n    }\n  }\n\n  /**\n   * Insert or update a single row. An update will be executed if a row which matches the supplied values on either the primary key or a unique key is found. Note that the unique index must be defined in your sequelize model and not just in the table. Otherwise you may experience a unique constraint violation, because sequelize fails to identify the row that should be updated.\n   *\n   * **Implementation details:**\n   *\n   * * MySQL - Implemented with ON DUPLICATE KEY UPDATE`\n   * * PostgreSQL - Implemented with ON CONFLICT DO UPDATE. If update data contains PK field, then PK is selected as the default conflict key. Otherwise first unique constraint/index will be selected, which can satisfy conflict key requirements.\n   * * SQLite - Implemented with ON CONFLICT DO UPDATE\n   * * MSSQL - Implemented as a single query using `MERGE` and `WHEN (NOT) MATCHED THEN`\n   *\n   * **Note** that Postgres/SQLite returns null for created, no matter if the row was created or updated\n   *\n   * @param  {object}        values                                        hash of values to upsert\n   * @param  {object}        [options]                                     upsert options\n   * @param  {boolean}       [options.validate=true]                       Run validations before the row is inserted\n   * @param  {Array}         [options.fields=Object.keys(this.attributes)] The fields to update if the record already exists. Defaults to all changed fields.  If none of the specified fields are present on the provided `values` object, an insert will still be attempted, but duplicate key conflicts will be ignored.\n   * @param  {boolean}       [options.hooks=true]                          Run before / after upsert hooks?\n   * @param  {boolean}       [options.returning=true]                      If true, fetches back auto generated values\n   * @param  {Transaction}   [options.transaction]                         Transaction to run query under\n   * @param  {Function}      [options.logging=false]                       A function that gets executed while running the query to log the sql.\n   * @param  {boolean}       [options.benchmark=false]                     Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {string}        [options.searchPath=DEFAULT]                  An optional parameter to specify the schema search_path (Postgres only)\n   * @param  {Array<string>} [options.conflictFields]                      Optional override for the conflict fields in the ON CONFLICT part of the query. Only supported in Postgres >= 9.5 and SQLite >= 3.24.0\n   *\n   * @returns {Promise<Array<Model, boolean | null>>} returns an array with two elements, the first being the new record and the second being `true` if it was just created or `false` if it already existed (except on Postgres and SQLite, which can't detect this and will always return `null` instead of a boolean).\n   */\n  static async upsert(values, options) {\n    options = {\n      hooks: true,\n      returning: true,\n      validate: true,\n      ...Utils.cloneDeep(options)\n    };\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    const createdAtAttr = this._timestampAttributes.createdAt;\n    const updatedAtAttr = this._timestampAttributes.updatedAt;\n    const hasPrimary = this.primaryKeyField in values || this.primaryKeyAttribute in values;\n    const instance = this.build(values);\n\n    options.model = this;\n    options.instance = instance;\n\n    const changed = Array.from(instance._changed);\n    if (!options.fields) {\n      options.fields = changed;\n    }\n\n    if (options.validate) {\n      await instance.validate(options);\n    }\n    // Map field names\n    const updatedDataValues = _.pick(instance.dataValues, changed);\n    const insertValues = Utils.mapValueFieldNames(instance.dataValues, Object.keys(instance.rawAttributes), this);\n    const updateValues = Utils.mapValueFieldNames(updatedDataValues, options.fields, this);\n    const now = Utils.now(this.sequelize.options.dialect);\n\n    // Attach createdAt\n    if (createdAtAttr && !insertValues[createdAtAttr]) {\n      const field = this.rawAttributes[createdAtAttr].field || createdAtAttr;\n      insertValues[field] = this._getDefaultTimestamp(createdAtAttr) || now;\n    }\n    if (updatedAtAttr && !insertValues[updatedAtAttr]) {\n      const field = this.rawAttributes[updatedAtAttr].field || updatedAtAttr;\n      insertValues[field] = updateValues[field] = this._getDefaultTimestamp(updatedAtAttr) || now;\n    }\n\n    // Db2 does not allow NULL values for unique columns.\n    // Add dummy values if not provided by test case or user.\n    if (this.sequelize.options.dialect === 'db2') {\n      this.uniqno = this.sequelize.dialect.queryGenerator.addUniqueFields(\n        insertValues, this.rawAttributes, this.uniqno);\n    }\n\n    // Build adds a null value for the primary key, if none was given by the user.\n    // We need to remove that because of some Postgres technicalities.\n    if (!hasPrimary && this.primaryKeyAttribute && !this.rawAttributes[this.primaryKeyAttribute].defaultValue) {\n      delete insertValues[this.primaryKeyField];\n      delete updateValues[this.primaryKeyField];\n    }\n\n    if (options.hooks) {\n      await this.runHooks('beforeUpsert', values, options);\n    }\n    const result = await this.queryInterface.upsert(this.getTableName(options), insertValues, updateValues, instance.where(), options);\n\n    const [record] = result;\n    record.isNewRecord = false;\n\n    if (options.hooks) {\n      await this.runHooks('afterUpsert', result, options);\n      return result;\n    }\n    return result;\n  }\n\n  /**\n   * Create and insert multiple instances in bulk.\n   *\n   * The success handler is passed an array of instances, but please notice that these may not completely represent the state of the rows in the DB. This is because MySQL\n   * and SQLite do not make it easy to obtain back automatically generated IDs and other default values in a way that can be mapped to multiple records.\n   * To obtain Instances for the newly created values, you will need to query for them again.\n   *\n   * If validation fails, the promise is rejected with an array-like AggregateError\n   *\n   * @param  {Array}          records                          List of objects (key/value pairs) to create instances from\n   * @param  {object}         [options]                        Bulk create options\n   * @param  {Array}          [options.fields]                 Fields to insert (defaults to all fields)\n   * @param  {boolean}        [options.validate=false]         Should each row be subject to validation before it is inserted. The whole insert will fail if one row fails validation\n   * @param  {boolean}        [options.hooks=true]             Run before / after bulk create hooks?\n   * @param  {boolean}        [options.individualHooks=false]  Run before / after create hooks for each individual Instance? BulkCreate hooks will still be run if options.hooks is true.\n   * @param  {boolean}        [options.ignoreDuplicates=false] Ignore duplicate values for primary keys? (not supported by MSSQL or Postgres < 9.5)\n   * @param  {Array}          [options.updateOnDuplicate]      Fields to update if row key already exists (on duplicate key update)? (only supported by MySQL, MariaDB, SQLite >= 3.24.0 & Postgres >= 9.5).\n   * @param  {Array}          [options.conflictAttributes]     Optional override for the conflict fields in the ON CONFLICT part of the query. Only supported in Postgres >= 9.5 and SQLite >= 3.24.0\n   * @param  {Transaction}    [options.transaction]            Transaction to run query under\n   * @param  {Function}       [options.logging=false]          A function that gets executed while running the query to log the sql.\n   * @param  {boolean}        [options.benchmark=false]        Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {boolean|Array}  [options.returning=false]        If true, append RETURNING <model columns> to get back all defined values; if an array of column names, append RETURNING <columns> to get back specific columns (Postgres only)\n   * @param  {string}         [options.searchPath=DEFAULT]     An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @returns {Promise<Array<Model>>}\n   */\n  static async bulkCreate(records, options = {}) {\n    if (!records.length) {\n      return [];\n    }\n\n    const dialect = this.sequelize.options.dialect;\n    const now = Utils.now(this.sequelize.options.dialect);\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    options.model = this;\n\n    if (!options.includeValidated) {\n      this._conformIncludes(options, this);\n      if (options.include) {\n        this._expandIncludeAll(options);\n        this._validateIncludedElements(options);\n      }\n    }\n\n    const instances = records.map(values => this.build(values, { isNewRecord: true, include: options.include }));\n\n    const recursiveBulkCreate = async (instances, options) => {\n      options = {\n        validate: false,\n        hooks: true,\n        individualHooks: false,\n        ignoreDuplicates: false,\n        ...options\n      };\n\n      if (options.returning === undefined) {\n        if (options.association) {\n          options.returning = false;\n        } else {\n          options.returning = true;\n        }\n      }\n      if (options.ignoreDuplicates && !this.sequelize.dialect.supports.inserts.ignoreDuplicates &&\n          !this.sequelize.dialect.supports.inserts.onConflictDoNothing) {\n        throw new Error(`${dialect} does not support the ignoreDuplicates option.`);\n      }\n      if (options.updateOnDuplicate && (dialect !== 'mysql' && dialect !== 'mariadb' && dialect !== 'sqlite' && dialect !== 'postgres')) {\n        throw new Error(`${dialect} does not support the updateOnDuplicate option.`);\n      }\n\n      const model = options.model;\n\n      options.fields = options.fields || Object.keys(model.rawAttributes);\n      const createdAtAttr = model._timestampAttributes.createdAt;\n      const updatedAtAttr = model._timestampAttributes.updatedAt;\n\n      if (options.updateOnDuplicate !== undefined) {\n        if (Array.isArray(options.updateOnDuplicate) && options.updateOnDuplicate.length) {\n          options.updateOnDuplicate = _.intersection(\n            _.without(Object.keys(model.tableAttributes), createdAtAttr),\n            options.updateOnDuplicate\n          );\n        } else {\n          throw new Error('updateOnDuplicate option only supports non-empty array.');\n        }\n      }\n\n      // Run before hook\n      if (options.hooks) {\n        await model.runHooks('beforeBulkCreate', instances, options);\n      }\n      // Validate\n      if (options.validate) {\n        const errors = [];\n        const validateOptions = { ...options };\n        validateOptions.hooks = options.individualHooks;\n\n        await Promise.all(instances.map(async instance => {\n          try {\n            await instance.validate(validateOptions);\n          } catch (err) {\n            errors.push(new sequelizeErrors.BulkRecordError(err, instance));\n          }\n        }));\n\n        delete options.skip;\n        if (errors.length) {\n          throw new sequelizeErrors.AggregateError(errors);\n        }\n      }\n      if (options.individualHooks) {\n        await Promise.all(instances.map(async instance => {\n          const individualOptions = {\n            ...options,\n            validate: false,\n            hooks: true\n          };\n          delete individualOptions.fields;\n          delete individualOptions.individualHooks;\n          delete individualOptions.ignoreDuplicates;\n\n          await instance.save(individualOptions);\n        }));\n      } else {\n        if (options.include && options.include.length) {\n          await Promise.all(options.include.filter(include => include.association instanceof BelongsTo).map(async include => {\n            const associationInstances = [];\n            const associationInstanceIndexToInstanceMap = [];\n\n            for (const instance of instances) {\n              const associationInstance = instance.get(include.as);\n              if (associationInstance) {\n                associationInstances.push(associationInstance);\n                associationInstanceIndexToInstanceMap.push(instance);\n              }\n            }\n\n            if (!associationInstances.length) {\n              return;\n            }\n\n            const includeOptions = _(Utils.cloneDeep(include))\n              .omit(['association'])\n              .defaults({\n                transaction: options.transaction,\n                logging: options.logging\n              }).value();\n\n            const createdAssociationInstances = await recursiveBulkCreate(associationInstances, includeOptions);\n            for (const idx in createdAssociationInstances) {\n              const associationInstance = createdAssociationInstances[idx];\n              const instance = associationInstanceIndexToInstanceMap[idx];\n\n              await include.association.set(instance, associationInstance, { save: false, logging: options.logging });\n            }\n          }));\n        }\n\n        // Create all in one query\n        // Recreate records from instances to represent any changes made in hooks or validation\n        records = instances.map(instance => {\n          const values = instance.dataValues;\n\n          // set createdAt/updatedAt attributes\n          if (createdAtAttr && !values[createdAtAttr]) {\n            values[createdAtAttr] = now;\n            if (!options.fields.includes(createdAtAttr)) {\n              options.fields.push(createdAtAttr);\n            }\n          }\n          if (updatedAtAttr && !values[updatedAtAttr]) {\n            values[updatedAtAttr] = now;\n            if (!options.fields.includes(updatedAtAttr)) {\n              options.fields.push(updatedAtAttr);\n            }\n          }\n\n          const out = Utils.mapValueFieldNames(values, options.fields, model);\n          for (const key of model._virtualAttributes) {\n            delete out[key];\n          }\n          return out;\n        });\n\n        // Map attributes to fields for serial identification\n        const fieldMappedAttributes = {};\n        for (const attr in model.tableAttributes) {\n          fieldMappedAttributes[model.rawAttributes[attr].field || attr] = model.rawAttributes[attr];\n        }\n\n        // Map updateOnDuplicate attributes to fields\n        if (options.updateOnDuplicate) {\n          options.updateOnDuplicate = options.updateOnDuplicate.map(attr => model.rawAttributes[attr].field || attr);\n\n          if (options.conflictAttributes) {\n            options.upsertKeys = options.conflictAttributes.map(\n              attrName => model.rawAttributes[attrName].field || attrName\n            );\n          } else {\n            const upsertKeys = [];\n\n            for (const i of model._indexes) {\n              if (i.unique && !i.where) { // Don't infer partial indexes\n                upsertKeys.push(...i.fields);\n              }\n            }\n\n            const firstUniqueKey = Object.values(model.uniqueKeys).find(c => c.fields.length > 0);\n\n            if (firstUniqueKey && firstUniqueKey.fields) {\n              upsertKeys.push(...firstUniqueKey.fields);\n            }\n\n            options.upsertKeys = upsertKeys.length > 0\n              ? upsertKeys\n              : Object.values(model.primaryKeys).map(x => x.field);\n          }\n        }\n\n        // Map returning attributes to fields\n        if (options.returning && Array.isArray(options.returning)) {\n          options.returning = options.returning.map(attr => _.get(model.rawAttributes[attr], 'field', attr));\n        }\n\n        const results = await model.queryInterface.bulkInsert(model.getTableName(options), records, options, fieldMappedAttributes);\n        if (Array.isArray(results)) {\n          results.forEach((result, i) => {\n            const instance = instances[i];\n\n            for (const key in result) {\n              if (!instance || key === model.primaryKeyAttribute &&\n                instance.get(model.primaryKeyAttribute) &&\n                ['mysql', 'mariadb', 'sqlite'].includes(dialect)) {\n                // The query.js for these DBs is blind, it autoincrements the\n                // primarykey value, even if it was set manually. Also, it can\n                // return more results than instances, bug?.\n                continue;\n              }\n              if (Object.prototype.hasOwnProperty.call(result, key)) {\n                const record = result[key];\n\n                const attr = _.find(model.rawAttributes, attribute => attribute.fieldName === key || attribute.field === key);\n\n                instance.dataValues[attr && attr.fieldName || key] = record;\n              }\n            }\n          });\n        }\n      }\n\n      if (options.include && options.include.length) {\n        await Promise.all(options.include.filter(include => !(include.association instanceof BelongsTo ||\n          include.parent && include.parent.association instanceof BelongsToMany)).map(async include => {\n          const associationInstances = [];\n          const associationInstanceIndexToInstanceMap = [];\n\n          for (const instance of instances) {\n            let associated = instance.get(include.as);\n            if (!Array.isArray(associated)) associated = [associated];\n\n            for (const associationInstance of associated) {\n              if (associationInstance) {\n                if (!(include.association instanceof BelongsToMany)) {\n                  associationInstance.set(include.association.foreignKey, instance.get(include.association.sourceKey || instance.constructor.primaryKeyAttribute, { raw: true }), { raw: true });\n                  Object.assign(associationInstance, include.association.scope);\n                }\n                associationInstances.push(associationInstance);\n                associationInstanceIndexToInstanceMap.push(instance);\n              }\n            }\n          }\n\n          if (!associationInstances.length) {\n            return;\n          }\n\n          const includeOptions = _(Utils.cloneDeep(include))\n            .omit(['association'])\n            .defaults({\n              transaction: options.transaction,\n              logging: options.logging\n            }).value();\n\n          const createdAssociationInstances = await recursiveBulkCreate(associationInstances, includeOptions);\n          if (include.association instanceof BelongsToMany) {\n            const valueSets = [];\n\n            for (const idx in createdAssociationInstances) {\n              const associationInstance = createdAssociationInstances[idx];\n              const instance = associationInstanceIndexToInstanceMap[idx];\n\n              const values = {\n                [include.association.foreignKey]: instance.get(instance.constructor.primaryKeyAttribute, { raw: true }),\n                [include.association.otherKey]: associationInstance.get(associationInstance.constructor.primaryKeyAttribute, { raw: true }),\n                // Include values defined in the association\n                ...include.association.through.scope\n              };\n              if (associationInstance[include.association.through.model.name]) {\n                for (const attr of Object.keys(include.association.through.model.rawAttributes)) {\n                  if (include.association.through.model.rawAttributes[attr]._autoGenerated ||\n                    attr === include.association.foreignKey ||\n                    attr === include.association.otherKey ||\n                    typeof associationInstance[include.association.through.model.name][attr] === 'undefined') {\n                    continue;\n                  }\n                  values[attr] = associationInstance[include.association.through.model.name][attr];\n                }\n              }\n\n              valueSets.push(values);\n            }\n\n            const throughOptions = _(Utils.cloneDeep(include))\n              .omit(['association', 'attributes'])\n              .defaults({\n                transaction: options.transaction,\n                logging: options.logging\n              }).value();\n            throughOptions.model = include.association.throughModel;\n            const throughInstances = include.association.throughModel.bulkBuild(valueSets, throughOptions);\n\n            await recursiveBulkCreate(throughInstances, throughOptions);\n          }\n        }));\n      }\n\n      // map fields back to attributes\n      instances.forEach(instance => {\n        for (const attr in model.rawAttributes) {\n          if (model.rawAttributes[attr].field &&\n              instance.dataValues[model.rawAttributes[attr].field] !== undefined &&\n              model.rawAttributes[attr].field !== attr\n          ) {\n            instance.dataValues[attr] = instance.dataValues[model.rawAttributes[attr].field];\n            delete instance.dataValues[model.rawAttributes[attr].field];\n          }\n          instance._previousDataValues[attr] = instance.dataValues[attr];\n          instance.changed(attr, false);\n        }\n        instance.isNewRecord = false;\n      });\n\n      // Run after hook\n      if (options.hooks) {\n        await model.runHooks('afterBulkCreate', instances, options);\n      }\n\n      return instances;\n    };\n\n    return await recursiveBulkCreate(instances, options);\n  }\n\n  /**\n   * Truncate all instances of the model. This is a convenient method for Model.destroy({ truncate: true }).\n   *\n   * @param {object}           [options] The options passed to Model.destroy in addition to truncate\n   * @param {boolean|Function} [options.cascade = false] Truncates all tables that have foreign-key references to the named table, or to any tables added to the group due to CASCADE.\n   * @param {boolean}          [options.restartIdentity=false] Automatically restart sequences owned by columns of the truncated table.\n   * @param {Transaction}      [options.transaction] Transaction to run query under\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   * @param {boolean}          [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param {string}           [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @returns {Promise}\n   *\n   * @see\n   * {@link Model.destroy} for more information\n   */\n  static async truncate(options) {\n    options = Utils.cloneDeep(options) || {};\n    options.truncate = true;\n    return await this.destroy(options);\n  }\n\n  /**\n   * Delete multiple instances, or set their deletedAt timestamp to the current time if `paranoid` is enabled.\n   *\n   * @param  {object}       options                         destroy options\n   * @param  {object}       [options.where]                 Filter the destroy\n   * @param  {boolean}      [options.hooks=true]            Run before / after bulk destroy hooks?\n   * @param  {boolean}      [options.individualHooks=false] If set to true, destroy will SELECT all records matching the where parameter and will execute before / after destroy hooks on each row\n   * @param  {number}       [options.limit]                 How many rows to delete\n   * @param  {boolean}      [options.force=false]           Delete instead of setting deletedAt to current timestamp (only applicable if `paranoid` is enabled)\n   * @param  {boolean}      [options.truncate=false]        If set to true, dialects that support it will use TRUNCATE instead of DELETE FROM. If a table is truncated the where and limit options are ignored\n   * @param  {boolean}      [options.cascade=false]         Only used in conjunction with TRUNCATE. Truncates  all tables that have foreign-key references to the named table, or to any tables added to the group due to CASCADE.\n   * @param  {boolean}      [options.restartIdentity=false] Only used in conjunction with TRUNCATE. Automatically restart sequences owned by columns of the truncated table.\n   * @param  {Transaction}  [options.transaction] Transaction to run query under\n   * @param  {Function}     [options.logging=false]         A function that gets executed while running the query to log the sql.\n   * @param  {boolean}      [options.benchmark=false]       Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   *\n   * @returns {Promise<number>} The number of destroyed rows\n   */\n  static async destroy(options) {\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    this._injectScope(options);\n\n    if (!options || !(options.where || options.truncate)) {\n      throw new Error('Missing where or truncate attribute in the options parameter of model.destroy.');\n    }\n\n    if (!options.truncate && !_.isPlainObject(options.where) && !Array.isArray(options.where) && !(options.where instanceof Utils.SequelizeMethod)) {\n      throw new Error('Expected plain object, array or sequelize method in the options.where parameter of model.destroy.');\n    }\n\n    options = _.defaults(options, {\n      hooks: true,\n      individualHooks: false,\n      force: false,\n      cascade: false,\n      restartIdentity: false\n    });\n\n    options.type = QueryTypes.BULKDELETE;\n\n    Utils.mapOptionFieldNames(options, this);\n    options.model = this;\n\n\n    // Run before hook\n    if (options.hooks) {\n      await this.runHooks('beforeBulkDestroy', options);\n    }\n    let instances;\n    // Get daos and run beforeDestroy hook on each record individually\n    if (options.individualHooks) {\n      instances = await this.findAll({ where: options.where, transaction: options.transaction, logging: options.logging, benchmark: options.benchmark });\n\n      await Promise.all(instances.map(instance => this.runHooks('beforeDestroy', instance, options)));\n    }\n    let result;\n    // Run delete query (or update if paranoid)\n    if (this._timestampAttributes.deletedAt && !options.force) {\n      // Set query type appropriately when running soft delete\n      options.type = QueryTypes.BULKUPDATE;\n\n      const attrValueHash = {};\n      const deletedAtAttribute = this.rawAttributes[this._timestampAttributes.deletedAt];\n      const field = this.rawAttributes[this._timestampAttributes.deletedAt].field;\n      const where = {\n        [field]: Object.prototype.hasOwnProperty.call(deletedAtAttribute, 'defaultValue') ? deletedAtAttribute.defaultValue : null\n      };\n\n\n      attrValueHash[field] = Utils.now(this.sequelize.options.dialect);\n      result = await this.queryInterface.bulkUpdate(this.getTableName(options), attrValueHash, Object.assign(where, options.where), options, this.rawAttributes);\n    } else {\n      result = await this.queryInterface.bulkDelete(this.getTableName(options), options.where, options, this);\n    }\n    // Run afterDestroy hook on each record individually\n    if (options.individualHooks) {\n      await Promise.all(\n        instances.map(instance => this.runHooks('afterDestroy', instance, options))\n      );\n    }\n    // Run after hook\n    if (options.hooks) {\n      await this.runHooks('afterBulkDestroy', options);\n    }\n    return result;\n  }\n\n  /**\n   * Restore multiple instances if `paranoid` is enabled.\n   *\n   * @param  {object}       options                         restore options\n   * @param  {object}       [options.where]                 Filter the restore\n   * @param  {boolean}      [options.hooks=true]            Run before / after bulk restore hooks?\n   * @param  {boolean}      [options.individualHooks=false] If set to true, restore will find all records within the where parameter and will execute before / after bulkRestore hooks on each row\n   * @param  {number}       [options.limit]                 How many rows to undelete (only for mysql)\n   * @param  {Function}     [options.logging=false]         A function that gets executed while running the query to log the sql.\n   * @param  {boolean}      [options.benchmark=false]       Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {Transaction}  [options.transaction]           Transaction to run query under\n   *\n   * @returns {Promise}\n   */\n  static async restore(options) {\n    if (!this._timestampAttributes.deletedAt) throw new Error('Model is not paranoid');\n\n    options = {\n      hooks: true,\n      individualHooks: false,\n      ...options\n    };\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    options.type = QueryTypes.RAW;\n    options.model = this;\n\n    Utils.mapOptionFieldNames(options, this);\n\n    // Run before hook\n    if (options.hooks) {\n      await this.runHooks('beforeBulkRestore', options);\n    }\n\n    let instances;\n    // Get daos and run beforeRestore hook on each record individually\n    if (options.individualHooks) {\n      instances = await this.findAll({ where: options.where, transaction: options.transaction, logging: options.logging, benchmark: options.benchmark, paranoid: false });\n\n      await Promise.all(instances.map(instance => this.runHooks('beforeRestore', instance, options)));\n    }\n    // Run undelete query\n    const attrValueHash = {};\n    const deletedAtCol = this._timestampAttributes.deletedAt;\n    const deletedAtAttribute = this.rawAttributes[deletedAtCol];\n    const deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, 'defaultValue') ? deletedAtAttribute.defaultValue : null;\n\n    attrValueHash[deletedAtAttribute.field || deletedAtCol] = deletedAtDefaultValue;\n    options.omitNull = false;\n    const result = await this.queryInterface.bulkUpdate(this.getTableName(options), attrValueHash, options.where, options, this.rawAttributes);\n    // Run afterDestroy hook on each record individually\n    if (options.individualHooks) {\n      await Promise.all(\n        instances.map(instance => this.runHooks('afterRestore', instance, options))\n      );\n    }\n    // Run after hook\n    if (options.hooks) {\n      await this.runHooks('afterBulkRestore', options);\n    }\n    return result;\n  }\n\n  /**\n   * Update multiple instances that match the where options.\n   *\n   * @param  {object}         values                          hash of values to update\n   * @param  {object}         options                         update options\n   * @param  {object}         options.where                   Options to describe the scope of the search.\n   * @param  {boolean}        [options.paranoid=true]         If true, only non-deleted records will be updated. If false, both deleted and non-deleted records will be updated. Only applies if `options.paranoid` is true for the model.\n   * @param  {Array}          [options.fields]                Fields to update (defaults to all fields)\n   * @param  {boolean}        [options.validate=true]         Should each row be subject to validation before it is inserted. The whole insert will fail if one row fails validation\n   * @param  {boolean}        [options.hooks=true]            Run before / after bulk update hooks?\n   * @param  {boolean}        [options.sideEffects=true]      Whether or not to update the side effects of any virtual setters.\n   * @param  {boolean}        [options.individualHooks=false] Run before / after update hooks?. If true, this will execute a SELECT followed by individual UPDATEs. A select is needed, because the row data needs to be passed to the hooks\n   * @param  {boolean|Array}  [options.returning=false]       If true, append RETURNING <model columns> to get back all defined values; if an array of column names, append RETURNING <columns> to get back specific columns (Postgres only)\n   * @param  {number}         [options.limit]                 How many rows to update (only for mysql and mariadb, implemented as TOP(n) for MSSQL; for sqlite it is supported only when rowid is present)\n   * @param  {Function}       [options.logging=false]         A function that gets executed while running the query to log the sql.\n   * @param  {boolean}        [options.benchmark=false]       Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param  {Transaction}    [options.transaction]           Transaction to run query under\n   * @param  {boolean}        [options.silent=false]          If true, the updatedAt timestamp will not be updated.\n   *\n   * @returns {Promise<Array<number,number>>}  The promise returns an array with one or two elements. The first element is always the number\n   * of affected rows, while the second element is the actual affected rows (only supported in postgres with `options.returning` true).\n   *\n   */\n  static async update(values, options) {\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    this._injectScope(options);\n    this._optionsMustContainWhere(options);\n\n    options = this._paranoidClause(this, _.defaults(options, {\n      validate: true,\n      hooks: true,\n      individualHooks: false,\n      returning: false,\n      force: false,\n      sideEffects: true\n    }));\n\n    options.type = QueryTypes.BULKUPDATE;\n\n    // Clone values so it doesn't get modified for caller scope and ignore undefined values\n    values = _.omitBy(values, value => value === undefined);\n\n    // Remove values that are not in the options.fields\n    if (options.fields && options.fields instanceof Array) {\n      for (const key of Object.keys(values)) {\n        if (!options.fields.includes(key)) {\n          delete values[key];\n        }\n      }\n    } else {\n      const updatedAtAttr = this._timestampAttributes.updatedAt;\n      options.fields = _.intersection(Object.keys(values), Object.keys(this.tableAttributes));\n      if (updatedAtAttr && !options.fields.includes(updatedAtAttr)) {\n        options.fields.push(updatedAtAttr);\n      }\n    }\n\n    if (this._timestampAttributes.updatedAt && !options.silent) {\n      values[this._timestampAttributes.updatedAt] = this._getDefaultTimestamp(this._timestampAttributes.updatedAt) || Utils.now(this.sequelize.options.dialect);\n    }\n\n    options.model = this;\n\n    let valuesUse;\n    // Validate\n    if (options.validate) {\n      const build = this.build(values);\n      build.set(this._timestampAttributes.updatedAt, values[this._timestampAttributes.updatedAt], { raw: true });\n\n      if (options.sideEffects) {\n        Object.assign(values, _.pick(build.get(), build.changed()));\n        options.fields = _.union(options.fields, Object.keys(values));\n      }\n\n      // We want to skip validations for all other fields\n      options.skip = _.difference(Object.keys(this.rawAttributes), Object.keys(values));\n      const attributes = await build.validate(options);\n      options.skip = undefined;\n      if (attributes && attributes.dataValues) {\n        values = _.pick(attributes.dataValues, Object.keys(values));\n      }\n    }\n    // Run before hook\n    if (options.hooks) {\n      options.attributes = values;\n      await this.runHooks('beforeBulkUpdate', options);\n      values = options.attributes;\n      delete options.attributes;\n    }\n\n    valuesUse = values;\n\n    // Get instances and run beforeUpdate hook on each record individually\n    let instances;\n    let updateDoneRowByRow = false;\n    if (options.individualHooks) {\n      instances = await this.findAll({\n        where: options.where,\n        transaction: options.transaction,\n        logging: options.logging,\n        benchmark: options.benchmark,\n        paranoid: options.paranoid\n      });\n\n      if (instances.length) {\n        // Run beforeUpdate hooks on each record and check whether beforeUpdate hook changes values uniformly\n        // i.e. whether they change values for each record in the same way\n        let changedValues;\n        let different = false;\n\n        instances = await Promise.all(instances.map(async instance => {\n          // Record updates in instances dataValues\n          Object.assign(instance.dataValues, values);\n          // Set the changed fields on the instance\n          _.forIn(valuesUse, (newValue, attr) => {\n            if (newValue !== instance._previousDataValues[attr]) {\n              instance.setDataValue(attr, newValue);\n            }\n          });\n\n          // Run beforeUpdate hook\n          await this.runHooks('beforeUpdate', instance, options);\n          if (!different) {\n            const thisChangedValues = {};\n            _.forIn(instance.dataValues, (newValue, attr) => {\n              if (newValue !== instance._previousDataValues[attr]) {\n                thisChangedValues[attr] = newValue;\n              }\n            });\n\n            if (!changedValues) {\n              changedValues = thisChangedValues;\n            } else {\n              different = !_.isEqual(changedValues, thisChangedValues);\n            }\n          }\n\n          return instance;\n        }));\n\n        if (!different) {\n          const keys = Object.keys(changedValues);\n          // Hooks do not change values or change them uniformly\n          if (keys.length) {\n            // Hooks change values - record changes in valuesUse so they are executed\n            valuesUse = changedValues;\n            options.fields = _.union(options.fields, keys);\n          }\n        } else {\n          instances = await Promise.all(instances.map(async instance => {\n            const individualOptions = {\n              ...options,\n              hooks: false,\n              validate: false\n            };\n            delete individualOptions.individualHooks;\n\n            return instance.save(individualOptions);\n          }));\n          updateDoneRowByRow = true;\n        }\n      }\n    }\n    let result;\n    if (updateDoneRowByRow) {\n      result = [instances.length, instances];\n    } else if (_.isEmpty(valuesUse)\n       || Object.keys(valuesUse).length === 1 && valuesUse[this._timestampAttributes.updatedAt]) {\n      // only updatedAt is being passed, then skip update\n      result = [0];\n    } else {\n      valuesUse = Utils.mapValueFieldNames(valuesUse, options.fields, this);\n      options = Utils.mapOptionFieldNames(options, this);\n      options.hasTrigger = this.options ? this.options.hasTrigger : false;\n\n      const affectedRows = await this.queryInterface.bulkUpdate(this.getTableName(options), valuesUse, options.where, options, this.tableAttributes);\n      if (options.returning) {\n        result = [affectedRows.length, affectedRows];\n        instances = affectedRows;\n      } else {\n        result = [affectedRows];\n      }\n    }\n\n    if (options.individualHooks) {\n      await Promise.all(instances.map(instance => this.runHooks('afterUpdate', instance, options)));\n      result[1] = instances;\n    }\n    // Run after hook\n    if (options.hooks) {\n      options.attributes = values;\n      await this.runHooks('afterBulkUpdate', options);\n      delete options.attributes;\n    }\n    return result;\n  }\n\n  /**\n   * Run a describe query on the table.\n   *\n   * @param {string} [schema] schema name to search table in\n   * @param {object} [options] query options\n   *\n   * @returns {Promise} hash of attributes and their types\n   */\n  static async describe(schema, options) {\n    return await this.queryInterface.describeTable(this.tableName, { schema: schema || this._schema || undefined, ...options });\n  }\n\n  static _getDefaultTimestamp(attr) {\n    if (!!this.rawAttributes[attr] && !!this.rawAttributes[attr].defaultValue) {\n      return Utils.toDefaultValue(this.rawAttributes[attr].defaultValue, this.sequelize.options.dialect);\n    }\n    return undefined;\n  }\n\n  static _expandAttributes(options) {\n    if (!_.isPlainObject(options.attributes)) {\n      return;\n    }\n    let attributes = Object.keys(this.rawAttributes);\n\n    if (options.attributes.exclude) {\n      attributes = attributes.filter(elem => !options.attributes.exclude.includes(elem));\n    }\n\n    if (options.attributes.include) {\n      attributes = attributes.concat(options.attributes.include);\n    }\n\n    options.attributes = attributes;\n  }\n\n  // Inject _scope into options.\n  static _injectScope(options) {\n    const scope = Utils.cloneDeep(this._scope);\n    this._defaultsOptions(options, scope);\n  }\n\n  static [Symbol.for('nodejs.util.inspect.custom')]() {\n    return this.name;\n  }\n\n  static hasAlias(alias) {\n    return Object.prototype.hasOwnProperty.call(this.associations, alias);\n  }\n\n  /**\n   * Increment the value of one or more columns. This is done in the database, which means it does not use the values currently stored on the Instance. The increment is done using a\n   * ``` SET column = column + X WHERE foo = 'bar' ``` query. To get the correct value after an increment into the Instance you should do a reload.\n   *\n   * @example <caption>increment number by 1</caption>\n   * Model.increment('number', { where: { foo: 'bar' });\n   *\n   * @example <caption>increment number and count by 2</caption>\n   * Model.increment(['number', 'count'], { by: 2, where: { foo: 'bar' } });\n   *\n   * @example <caption>increment answer by 42, and decrement tries by 1</caption>\n   * // `by` is ignored, as each column has its own value\n   * Model.increment({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });\n   *\n   * @see\n   * {@link Model#reload}\n   *\n   * @param  {string|Array|object}  fields                       If a string is provided, that column is incremented by the value of `by` given in options. If an array is provided, the same is true for each column. If and object is provided, each column is incremented by the value given.\n   * @param  {object}               options                      increment options\n   * @param  {object}               options.where                conditions hash\n   * @param  {number}               [options.by=1]               The number to increment by\n   * @param  {boolean}              [options.silent=false]       If true, the updatedAt timestamp will not be updated.\n   * @param  {Function}             [options.logging=false]      A function that gets executed while running the query to log the sql.\n   * @param  {Transaction}          [options.transaction]        Transaction to run query under\n   * @param  {string}               [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @returns {Promise<Model[],?number>} returns an array of affected rows and affected count with `options.returning` true, whenever supported by dialect\n   */\n  static async increment(fields, options) {\n    options = options || {};\n    if (typeof fields === 'string') fields = [fields];\n    if (Array.isArray(fields)) {\n      fields = fields.map(f => {\n        if (this.rawAttributes[f] && this.rawAttributes[f].field && this.rawAttributes[f].field !== f) {\n          return this.rawAttributes[f].field;\n        }\n        return f;\n      });\n    } else if (fields && typeof fields === 'object') {\n      fields = Object.keys(fields).reduce((rawFields, f) => {\n        if (this.rawAttributes[f] && this.rawAttributes[f].field && this.rawAttributes[f].field !== f) {\n          rawFields[this.rawAttributes[f].field] = fields[f];\n        } else {\n          rawFields[f] = fields[f];\n        }\n        return rawFields;\n      }, {});\n    }\n\n    this._injectScope(options);\n    this._optionsMustContainWhere(options);\n\n    options = Utils.defaults({}, options, {\n      by: 1,\n      where: {},\n      increment: true\n    });\n    const isSubtraction = !options.increment;\n\n    Utils.mapOptionFieldNames(options, this);\n\n    const where = { ...options.where };\n\n    // A plain object whose keys are the fields to be incremented and whose values are\n    // the amounts to be incremented by.\n    let incrementAmountsByField = {};\n    if (Array.isArray(fields)) {\n      incrementAmountsByField = {};\n      for (const field of fields) {\n        incrementAmountsByField[field] = options.by;\n      }\n    } else {\n      // If the `fields` argument is not an array, then we assume it already has the\n      // form necessary to be placed directly in the `incrementAmountsByField` variable.\n      incrementAmountsByField = fields;\n    }\n\n    // If optimistic locking is enabled, we can take advantage that this is an\n    // increment/decrement operation and send it here as well. We put `-1` for\n    // decrementing because it will be subtracted, getting `-(-1)` which is `+1`\n    if (this._versionAttribute) {\n      incrementAmountsByField[this._versionAttribute] = isSubtraction ? -1 : 1;\n    }\n\n    const extraAttributesToBeUpdated = {};\n\n    const updatedAtAttr = this._timestampAttributes.updatedAt;\n    if (!options.silent && updatedAtAttr && !incrementAmountsByField[updatedAtAttr]) {\n      const attrName = this.rawAttributes[updatedAtAttr].field || updatedAtAttr;\n      extraAttributesToBeUpdated[attrName] = this._getDefaultTimestamp(updatedAtAttr) || Utils.now(this.sequelize.options.dialect);\n    }\n\n    const tableName = this.getTableName(options);\n    let affectedRows;\n    if (isSubtraction) {\n      affectedRows = await this.queryInterface.decrement(\n        this, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options\n      );\n    } else {\n      affectedRows = await this.queryInterface.increment(\n        this, tableName, where, incrementAmountsByField, extraAttributesToBeUpdated, options\n      );\n    }\n\n    if (options.returning) {\n      return [affectedRows, affectedRows.length];\n    }\n\n    return [affectedRows];\n  }\n\n  /**\n   * Decrement the value of one or more columns. This is done in the database, which means it does not use the values currently stored on the Instance. The decrement is done using a\n   * ```sql SET column = column - X WHERE foo = 'bar'``` query. To get the correct value after a decrement into the Instance you should do a reload.\n   *\n   * @example <caption>decrement number by 1</caption>\n   * Model.decrement('number', { where: { foo: 'bar' });\n   *\n   * @example <caption>decrement number and count by 2</caption>\n   * Model.decrement(['number', 'count'], { by: 2, where: { foo: 'bar' } });\n   *\n   * @example <caption>decrement answer by 42, and decrement tries by -1</caption>\n   * // `by` is ignored, since each column has its own value\n   * Model.decrement({ answer: 42, tries: -1}, { by: 2, where: { foo: 'bar' } });\n   *\n   * @param {string|Array|object} fields If a string is provided, that column is incremented by the value of `by` given in options. If an array is provided, the same is true for each column. If and object is provided, each column is incremented by the value given.\n   * @param {object} options decrement options, similar to increment\n   *\n   * @see\n   * {@link Model.increment}\n   * @see\n   * {@link Model#reload}\n   * @since 4.36.0\n   *\n   * @returns {Promise<Model[],?number>} returns an array of affected rows and affected count with `options.returning` true, whenever supported by dialect\n   */\n  static async decrement(fields, options) {\n    return this.increment(fields, {\n      by: 1,\n      ...options,\n      increment: false\n    });\n  }\n\n  static _optionsMustContainWhere(options) {\n    assert(options && options.where, 'Missing where attribute in the options parameter');\n    assert(_.isPlainObject(options.where) || Array.isArray(options.where) || options.where instanceof Utils.SequelizeMethod,\n      'Expected plain object, array or sequelize method in the options.where parameter');\n  }\n\n  /**\n   * Get an object representing the query for this instance, use with `options.where`\n   *\n   * @param {boolean} [checkVersion=false] include version attribute in where hash\n   *\n   * @returns {object}\n   */\n  where(checkVersion) {\n    const where = this.constructor.primaryKeyAttributes.reduce((result, attribute) => {\n      result[attribute] = this.get(attribute, { raw: true });\n      return result;\n    }, {});\n\n    if (_.size(where) === 0) {\n      return this.constructor.options.whereCollection;\n    }\n    const versionAttr = this.constructor._versionAttribute;\n    if (checkVersion && versionAttr) {\n      where[versionAttr] = this.get(versionAttr, { raw: true });\n    }\n    return Utils.mapWhereFieldNames(where, this.constructor);\n  }\n\n  toString() {\n    return `[object SequelizeInstance:${this.constructor.name}]`;\n  }\n\n  /**\n   * Get the value of the underlying data value\n   *\n   * @param {string} key key to look in instance data store\n   *\n   * @returns {any}\n   */\n  getDataValue(key) {\n    return this.dataValues[key];\n  }\n\n  /**\n   * Update the underlying data value\n   *\n   * @param {string} key key to set in instance data store\n   * @param {any} value new value for given key\n   *\n   */\n  setDataValue(key, value) {\n    const originalValue = this._previousDataValues[key];\n\n    if (!_.isEqual(value, originalValue)) {\n      this.changed(key, true);\n    }\n\n    this.dataValues[key] = value;\n  }\n\n  /**\n   * If no key is given, returns all values of the instance, also invoking virtual getters.\n   *\n   * If key is given and a field or virtual getter is present for the key it will call that getter - else it will return the value for key.\n   *\n   * @param {string}  [key] key to get value of\n   * @param {object}  [options] get options\n   * @param {boolean} [options.plain=false] If set to true, included instances will be returned as plain objects\n   * @param {boolean} [options.raw=false] If set to true, field and virtual setters will be ignored\n   *\n   * @returns {object|any}\n   */\n  get(key, options) {\n    if (options === undefined && typeof key === 'object') {\n      options = key;\n      key = undefined;\n    }\n\n    options = options || {};\n\n    if (key) {\n      if (Object.prototype.hasOwnProperty.call(this._customGetters, key) && !options.raw) {\n        return this._customGetters[key].call(this, key, options);\n      }\n\n      if (options.plain && this._options.include && this._options.includeNames.includes(key)) {\n        if (Array.isArray(this.dataValues[key])) {\n          return this.dataValues[key].map(instance => instance.get(options));\n        }\n        if (this.dataValues[key] instanceof Model) {\n          return this.dataValues[key].get(options);\n        }\n        return this.dataValues[key];\n      }\n\n      return this.dataValues[key];\n    }\n\n    if (\n      this._hasCustomGetters\n      || options.plain && this._options.include\n      || options.clone\n    ) {\n      const values = {};\n      let _key;\n\n      if (this._hasCustomGetters) {\n        for (_key in this._customGetters) {\n          if (\n            this._options.attributes\n            && !this._options.attributes.includes(_key)\n          ) {\n            continue;\n          }\n\n          if (Object.prototype.hasOwnProperty.call(this._customGetters, _key)) {\n            values[_key] = this.get(_key, options);\n          }\n        }\n      }\n\n      for (_key in this.dataValues) {\n        if (\n          !Object.prototype.hasOwnProperty.call(values, _key)\n          && Object.prototype.hasOwnProperty.call(this.dataValues, _key)\n        ) {\n          values[_key] = this.get(_key, options);\n        }\n      }\n\n      return values;\n    }\n\n    return this.dataValues;\n  }\n\n  /**\n   * Set is used to update values on the instance (the sequelize representation of the instance that is, remember that nothing will be persisted before you actually call `save`).\n   * In its most basic form `set` will update a value stored in the underlying `dataValues` object. However, if a custom setter function is defined for the key, that function\n   * will be called instead. To bypass the setter, you can pass `raw: true` in the options object.\n   *\n   * If set is called with an object, it will loop over the object, and call set recursively for each key, value pair. If you set raw to true, the underlying dataValues will either be\n   * set directly to the object passed, or used to extend dataValues, if dataValues already contain values.\n   *\n   * When set is called, the previous value of the field is stored and sets a changed flag(see `changed`).\n   *\n   * Set can also be used to build instances for associations, if you have values for those.\n   * When using set with associations you need to make sure the property key matches the alias of the association\n   * while also making sure that the proper include options have been set (from .build() or .findOne())\n   *\n   * If called with a dot.separated key on a JSON/JSONB attribute it will set the value nested and flag the entire object as changed.\n   *\n   * @see\n   * {@link Model.findAll} for more information about includes\n   *\n   * @param {string|object} key key to set, it can be string or object. When string it will set that key, for object it will loop over all object properties nd set them.\n   * @param {any} value value to set\n   * @param {object} [options] set options\n   * @param {boolean} [options.raw=false] If set to true, field and virtual setters will be ignored\n   * @param {boolean} [options.reset=false] Clear all previously set data values\n   *\n   * @returns {Model}\n   */\n  set(key, value, options) {\n    let values;\n    let originalValue;\n\n    if (typeof key === 'object' && key !== null) {\n      values = key;\n      options = value || {};\n\n      if (options.reset) {\n        this.dataValues = {};\n        for (const key in values) {\n          this.changed(key, false);\n        }\n      }\n\n      // If raw, and we're not dealing with includes or special attributes, just set it straight on the dataValues object\n      if (options.raw && !(this._options && this._options.include) && !(options && options.attributes) && !this.constructor._hasDateAttributes && !this.constructor._hasBooleanAttributes) {\n        if (Object.keys(this.dataValues).length) {\n          Object.assign(this.dataValues, values);\n        } else {\n          this.dataValues = values;\n        }\n        // If raw, .changed() shouldn't be true\n        this._previousDataValues = { ...this.dataValues };\n      } else {\n        // Loop and call set\n        if (options.attributes) {\n          const setKeys = data => {\n            for (const k of data) {\n              if (values[k] === undefined) {\n                continue;\n              }\n              this.set(k, values[k], options);\n            }\n          };\n          setKeys(options.attributes);\n          if (this.constructor._hasVirtualAttributes) {\n            setKeys(this.constructor._virtualAttributes);\n          }\n          if (this._options.includeNames) {\n            setKeys(this._options.includeNames);\n          }\n        } else {\n          for (const key in values) {\n            this.set(key, values[key], options);\n          }\n        }\n\n        if (options.raw) {\n          // If raw, .changed() shouldn't be true\n          this._previousDataValues = { ...this.dataValues };\n        }\n      }\n      return this;\n    }\n    if (!options)\n      options = {};\n    if (!options.raw) {\n      originalValue = this.dataValues[key];\n    }\n\n    // If not raw, and there's a custom setter\n    if (!options.raw && this._customSetters[key]) {\n      this._customSetters[key].call(this, value, key);\n      // custom setter should have changed value, get that changed value\n      // TODO: v5 make setters return new value instead of changing internal store\n      const newValue = this.dataValues[key];\n      if (!_.isEqual(newValue, originalValue)) {\n        this._previousDataValues[key] = originalValue;\n        this.changed(key, true);\n      }\n    } else {\n      // Check if we have included models, and if this key matches the include model names/aliases\n      if (this._options && this._options.include && this._options.includeNames.includes(key)) {\n        // Pass it on to the include handler\n        this._setInclude(key, value, options);\n        return this;\n      }\n      // Bunch of stuff we won't do when it's raw\n      if (!options.raw) {\n        // If attribute is not in model definition, return\n        if (!this._isAttribute(key)) {\n          if (key.includes('.') && this.constructor._jsonAttributes.has(key.split('.')[0])) {\n            const previousNestedValue = Dottie.get(this.dataValues, key);\n            if (!_.isEqual(previousNestedValue, value)) {\n              Dottie.set(this.dataValues, key, value);\n              this.changed(key.split('.')[0], true);\n            }\n          }\n          return this;\n        }\n\n        // If attempting to set primary key and primary key is already defined, return\n        if (this.constructor._hasPrimaryKeys && originalValue && this.constructor._isPrimaryKey(key)) {\n          return this;\n        }\n\n        // If attempting to set read only attributes, return\n        if (!this.isNewRecord && this.constructor._hasReadOnlyAttributes && this.constructor._readOnlyAttributes.has(key)) {\n          return this;\n        }\n      }\n\n      // If there's a data type sanitizer\n      if (\n        !(value instanceof Utils.SequelizeMethod)\n        && Object.prototype.hasOwnProperty.call(this.constructor._dataTypeSanitizers, key)\n      ) {\n        value = this.constructor._dataTypeSanitizers[key].call(this, value, options);\n      }\n\n      // Set when the value has changed and not raw\n      if (\n        !options.raw &&\n        (\n          // True when sequelize method\n          value instanceof Utils.SequelizeMethod ||\n          // Check for data type type comparators\n          !(value instanceof Utils.SequelizeMethod) && this.constructor._dataTypeChanges[key] && this.constructor._dataTypeChanges[key].call(this, value, originalValue, options) || // Check default\n          !this.constructor._dataTypeChanges[key] && !_.isEqual(value, originalValue)\n        )\n      ) {\n        this._previousDataValues[key] = originalValue;\n        this.changed(key, true);\n      }\n\n      // set data value\n      this.dataValues[key] = value;\n    }\n    return this;\n  }\n\n  setAttributes(updates) {\n    return this.set(updates);\n  }\n\n  /**\n   * If changed is called with a string it will return a boolean indicating whether the value of that key in `dataValues` is different from the value in `_previousDataValues`.\n   *\n   * If changed is called without an argument, it will return an array of keys that have changed.\n   *\n   * If changed is called without an argument and no keys have changed, it will return `false`.\n   *\n   * Please note that this function will return `false` when a property from a nested (for example JSON) property\n   * was edited manually, you must call `changed('key', true)` manually in these cases.\n   * Writing an entirely new object (eg. deep cloned) will be detected.\n   *\n   * @example\n   * ```\n   * const mdl = await MyModel.findOne();\n   * mdl.myJsonField.a = 1;\n   * console.log(mdl.changed()) => false\n   * mdl.save(); // this will not save anything\n   * mdl.changed('myJsonField', true);\n   * console.log(mdl.changed()) => ['myJsonField']\n   * mdl.save(); // will save\n   * ```\n   *\n   * @param {string} [key] key to check or change status of\n   * @param {any} [value] value to set\n   *\n   * @returns {boolean|Array}\n   */\n  changed(key, value) {\n    if (key === undefined) {\n      if (this._changed.size > 0) {\n        return Array.from(this._changed);\n      }\n      return false;\n    }\n    if (value === true) {\n      this._changed.add(key);\n      return this;\n    }\n    if (value === false) {\n      this._changed.delete(key);\n      return this;\n    }\n    return this._changed.has(key);\n  }\n\n  /**\n   * Returns the previous value for key from `_previousDataValues`.\n   *\n   * If called without a key, returns the previous values for all values which have changed\n   *\n   * @param {string} [key] key to get previous value of\n   *\n   * @returns {any|Array<any>}\n   */\n  previous(key) {\n    if (key) {\n      return this._previousDataValues[key];\n    }\n\n    return _.pickBy(this._previousDataValues, (value, key) => this.changed(key));\n  }\n\n  _setInclude(key, value, options) {\n    if (!Array.isArray(value)) value = [value];\n    if (value[0] instanceof Model) {\n      value = value.map(instance => instance.dataValues);\n    }\n\n    const include = this._options.includeMap[key];\n    const association = include.association;\n    const accessor = key;\n    const primaryKeyAttribute = include.model.primaryKeyAttribute;\n    const childOptions = {\n      isNewRecord: this.isNewRecord,\n      include: include.include,\n      includeNames: include.includeNames,\n      includeMap: include.includeMap,\n      includeValidated: true,\n      raw: options.raw,\n      attributes: include.originalAttributes\n    };\n    let isEmpty;\n\n    if (include.originalAttributes === undefined || include.originalAttributes.length) {\n      if (association.isSingleAssociation) {\n        if (Array.isArray(value)) {\n          value = value[0];\n        }\n        isEmpty = value && value[primaryKeyAttribute] === null || value === null;\n        this[accessor] = this.dataValues[accessor] = isEmpty ? null : include.model.build(value, childOptions);\n      } else {\n        isEmpty = value[0] && value[0][primaryKeyAttribute] === null;\n        this[accessor] = this.dataValues[accessor] = isEmpty ? [] : include.model.bulkBuild(value, childOptions);\n      }\n    }\n  }\n\n  /**\n   * Validates this instance, and if the validation passes, persists it to the database.\n   *\n   * Returns a Promise that resolves to the saved instance (or rejects with a `Sequelize.ValidationError`, which will have a property for each of the fields for which the validation failed, with the error message for that field).\n   *\n   * This method is optimized to perform an UPDATE only into the fields that changed. If nothing has changed, no SQL query will be performed.\n   *\n   * This method is not aware of eager loaded associations. In other words, if some other model instance (child) was eager loaded with this instance (parent), and you change something in the child, calling `save()` will simply ignore the change that happened on the child.\n   *\n   * @param {object}      [options] save options\n   * @param {string[]}    [options.fields] An optional array of strings, representing database columns. If fields is provided, only those columns will be validated and saved.\n   * @param {boolean}     [options.silent=false] If true, the updatedAt timestamp will not be updated.\n   * @param {boolean}     [options.validate=true] If false, validations won't be run.\n   * @param {boolean}     [options.hooks=true] Run before and after create / update + validate hooks\n   * @param {Function}    [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   * @param {string}      [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param {boolean}     [options.returning] Append RETURNING * to get back auto generated values (Postgres only)\n   *\n   * @returns {Promise<Model>}\n   */\n  async save(options) {\n    if (arguments.length > 1) {\n      throw new Error('The second argument was removed in favor of the options object.');\n    }\n\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    options = _.defaults(options, {\n      hooks: true,\n      validate: true\n    });\n\n    if (!options.fields) {\n      if (this.isNewRecord) {\n        options.fields = Object.keys(this.constructor.rawAttributes);\n      } else {\n        options.fields = _.intersection(this.changed(), Object.keys(this.constructor.rawAttributes));\n      }\n\n      options.defaultFields = options.fields;\n    }\n\n    if (options.returning === undefined) {\n      if (options.association) {\n        options.returning = false;\n      } else if (this.isNewRecord) {\n        options.returning = true;\n      }\n    }\n\n    const primaryKeyName = this.constructor.primaryKeyAttribute;\n    const primaryKeyAttribute = primaryKeyName && this.constructor.rawAttributes[primaryKeyName];\n    const createdAtAttr = this.constructor._timestampAttributes.createdAt;\n    const versionAttr = this.constructor._versionAttribute;\n    const hook = this.isNewRecord ? 'Create' : 'Update';\n    const wasNewRecord = this.isNewRecord;\n    const now = Utils.now(this.sequelize.options.dialect);\n    let updatedAtAttr = this.constructor._timestampAttributes.updatedAt;\n\n    if (updatedAtAttr && options.fields.length > 0 && !options.fields.includes(updatedAtAttr)) {\n      options.fields.push(updatedAtAttr);\n    }\n    if (versionAttr && options.fields.length > 0 && !options.fields.includes(versionAttr)) {\n      options.fields.push(versionAttr);\n    }\n\n    if (options.silent === true && !(this.isNewRecord && this.get(updatedAtAttr, { raw: true }))) {\n      // UpdateAtAttr might have been added as a result of Object.keys(Model.rawAttributes). In that case we have to remove it again\n      _.remove(options.fields, val => val === updatedAtAttr);\n      updatedAtAttr = false;\n    }\n\n    if (this.isNewRecord === true) {\n      if (createdAtAttr && !options.fields.includes(createdAtAttr)) {\n        options.fields.push(createdAtAttr);\n      }\n\n      if (primaryKeyAttribute && primaryKeyAttribute.defaultValue && !options.fields.includes(primaryKeyName)) {\n        options.fields.unshift(primaryKeyName);\n      }\n    }\n\n    if (this.isNewRecord === false) {\n      if (primaryKeyName && this.get(primaryKeyName, { raw: true }) === undefined) {\n        throw new Error('You attempted to save an instance with no primary key, this is not allowed since it would result in a global update');\n      }\n    }\n\n    if (updatedAtAttr && !options.silent && options.fields.includes(updatedAtAttr)) {\n      this.dataValues[updatedAtAttr] = this.constructor._getDefaultTimestamp(updatedAtAttr) || now;\n    }\n\n    if (this.isNewRecord && createdAtAttr && !this.dataValues[createdAtAttr]) {\n      this.dataValues[createdAtAttr] = this.constructor._getDefaultTimestamp(createdAtAttr) || now;\n    }\n    // Db2 does not allow NULL values for unique columns.\n    // Add dummy values if not provided by test case or user.\n    if (this.sequelize.options.dialect === 'db2' && this.isNewRecord) {\n      this.uniqno = this.sequelize.dialect.queryGenerator.addUniqueFields(\n        this.dataValues, this.constructor.rawAttributes, this.uniqno);\n    }\n    // Validate\n    if (options.validate) {\n      await this.validate(options);\n    }\n    // Run before hook\n    if (options.hooks) {\n      const beforeHookValues = _.pick(this.dataValues, options.fields);\n      let ignoreChanged = _.difference(this.changed(), options.fields); // In case of update where it's only supposed to update the passed values and the hook values\n      let hookChanged;\n      let afterHookValues;\n\n      if (updatedAtAttr && options.fields.includes(updatedAtAttr)) {\n        ignoreChanged = _.without(ignoreChanged, updatedAtAttr);\n      }\n\n      await this.constructor.runHooks(`before${hook}`, this, options);\n      if (options.defaultFields && !this.isNewRecord) {\n        afterHookValues = _.pick(this.dataValues, _.difference(this.changed(), ignoreChanged));\n\n        hookChanged = [];\n        for (const key of Object.keys(afterHookValues)) {\n          if (afterHookValues[key] !== beforeHookValues[key]) {\n            hookChanged.push(key);\n          }\n        }\n\n        options.fields = _.uniq(options.fields.concat(hookChanged));\n      }\n\n      if (hookChanged) {\n        if (options.validate) {\n          // Validate again\n\n          options.skip = _.difference(Object.keys(this.constructor.rawAttributes), hookChanged);\n          await this.validate(options);\n          delete options.skip;\n        }\n      }\n    }\n    if (options.fields.length && this.isNewRecord && this._options.include && this._options.include.length) {\n      await Promise.all(this._options.include.filter(include => include.association instanceof BelongsTo).map(async include => {\n        const instance = this.get(include.as);\n        if (!instance) return;\n\n        const includeOptions = _(Utils.cloneDeep(include))\n          .omit(['association'])\n          .defaults({\n            transaction: options.transaction,\n            logging: options.logging,\n            parentRecord: this\n          }).value();\n\n        await instance.save(includeOptions);\n\n        await this[include.association.accessors.set](instance, { save: false, logging: options.logging });\n      }));\n    }\n    const realFields = options.fields.filter(field => !this.constructor._virtualAttributes.has(field));\n    if (!realFields.length) return this;\n    if (!this.changed() && !this.isNewRecord) return this;\n\n    const versionFieldName = _.get(this.constructor.rawAttributes[versionAttr], 'field') || versionAttr;\n    const values = Utils.mapValueFieldNames(this.dataValues, options.fields, this.constructor);\n    let query = null;\n    let args = [];\n    let where;\n\n    if (this.isNewRecord) {\n      query = 'insert';\n      args = [this, this.constructor.getTableName(options), values, options];\n    } else {\n      where = this.where(true);\n      if (versionAttr) {\n        values[versionFieldName] = parseInt(values[versionFieldName], 10) + 1;\n      }\n      query = 'update';\n      args = [this, this.constructor.getTableName(options), values, where, options];\n    }\n\n    const [result, rowsUpdated] = await this.constructor.queryInterface[query](...args);\n    if (versionAttr) {\n      // Check to see that a row was updated, otherwise it's an optimistic locking error.\n      if (rowsUpdated < 1) {\n        throw new sequelizeErrors.OptimisticLockError({\n          modelName: this.constructor.name,\n          values,\n          where\n        });\n      } else {\n        result.dataValues[versionAttr] = values[versionFieldName];\n      }\n    }\n\n    // Transfer database generated values (defaults, autoincrement, etc)\n    for (const attr of Object.keys(this.constructor.rawAttributes)) {\n      if (this.constructor.rawAttributes[attr].field &&\n          values[this.constructor.rawAttributes[attr].field] !== undefined &&\n          this.constructor.rawAttributes[attr].field !== attr\n      ) {\n        values[attr] = values[this.constructor.rawAttributes[attr].field];\n        delete values[this.constructor.rawAttributes[attr].field];\n      }\n    }\n    Object.assign(values, result.dataValues);\n\n    Object.assign(result.dataValues, values);\n    if (wasNewRecord && this._options.include && this._options.include.length) {\n      await Promise.all(\n        this._options.include.filter(include => !(include.association instanceof BelongsTo ||\n          include.parent && include.parent.association instanceof BelongsToMany)).map(async include => {\n          let instances = this.get(include.as);\n\n          if (!instances) return;\n          if (!Array.isArray(instances)) instances = [instances];\n\n          const includeOptions = _(Utils.cloneDeep(include))\n            .omit(['association'])\n            .defaults({\n              transaction: options.transaction,\n              logging: options.logging,\n              parentRecord: this\n            }).value();\n\n          // Instances will be updated in place so we can safely treat HasOne like a HasMany\n          await Promise.all(instances.map(async instance => {\n            if (include.association instanceof BelongsToMany) {\n              await instance.save(includeOptions);\n              const values0 = {\n                [include.association.foreignKey]: this.get(this.constructor.primaryKeyAttribute, { raw: true }),\n                [include.association.otherKey]: instance.get(instance.constructor.primaryKeyAttribute, { raw: true }),\n                // Include values defined in the association\n                ...include.association.through.scope\n              };\n\n              if (instance[include.association.through.model.name]) {\n                for (const attr of Object.keys(include.association.through.model.rawAttributes)) {\n                  if (include.association.through.model.rawAttributes[attr]._autoGenerated ||\n                    attr === include.association.foreignKey ||\n                    attr === include.association.otherKey ||\n                    typeof instance[include.association.through.model.name][attr] === 'undefined') {\n                    continue;\n                  }\n                  values0[attr] = instance[include.association.through.model.name][attr];\n                }\n              }\n\n              await include.association.throughModel.create(values0, includeOptions);\n            } else {\n              instance.set(include.association.foreignKey, this.get(include.association.sourceKey || this.constructor.primaryKeyAttribute, { raw: true }), { raw: true });\n              Object.assign(instance, include.association.scope);\n              await instance.save(includeOptions);\n            }\n          }));\n        })\n      );\n    }\n    // Run after hook\n    if (options.hooks) {\n      await this.constructor.runHooks(`after${hook}`, result, options);\n    }\n    for (const field of options.fields) {\n      result._previousDataValues[field] = result.dataValues[field];\n      this.changed(field, false);\n    }\n    this.isNewRecord = false;\n\n    return result;\n  }\n\n  /**\n   * Refresh the current instance in-place, i.e. update the object with current data from the DB and return the same object.\n   * This is different from doing a `find(Instance.id)`, because that would create and return a new instance. With this method,\n   * all references to the Instance are updated with the new data and no new objects are created.\n   *\n   * @see\n   * {@link Model.findAll}\n   *\n   * @param {object} [options] Options that are passed on to `Model.find`\n   * @param {Function} [options.logging=false] A function that gets executed while running the query to log the sql.\n   *\n   * @returns {Promise<Model>}\n   */\n  async reload(options) {\n    options = Utils.defaults({\n      where: this.where()\n    }, options, {\n      include: this._options.include || undefined\n    });\n\n    const reloaded = await this.constructor.findOne(options);\n    if (!reloaded) {\n      throw new sequelizeErrors.InstanceError(\n        'Instance could not be reloaded because it does not exist anymore (find call returned null)'\n      );\n    }\n    // update the internal options of the instance\n    this._options = reloaded._options;\n    // re-set instance values\n    this.set(reloaded.dataValues, {\n      raw: true,\n      reset: true && !options.attributes\n    });\n\n    return this;\n  }\n\n  /**\n  * Validate the attributes of this instance according to validation rules set in the model definition.\n  *\n  * The promise fulfills if and only if validation successful; otherwise it rejects an Error instance containing { field name : [error msgs] } entries.\n  *\n  * @param {object} [options] Options that are passed to the validator\n  * @param {Array} [options.skip] An array of strings. All properties that are in this array will not be validated\n  * @param {Array} [options.fields] An array of strings. Only the properties that are in this array will be validated\n  * @param {boolean} [options.hooks=true] Run before and after validate hooks\n  *\n  * @returns {Promise}\n  */\n  async validate(options) {\n    return new InstanceValidator(this, options).validate();\n  }\n\n  /**\n   * This is the same as calling `set` and then calling `save` but it only saves the\n   * exact values passed to it, making it more atomic and safer.\n   *\n   * @see\n   * {@link Model#set}\n   * @see\n   * {@link Model#save}\n   *\n   * @param {object} values See `set`\n   * @param {object} options See `save`\n   *\n   * @returns {Promise<Model>}\n   */\n  async update(values, options) {\n    // Clone values so it doesn't get modified for caller scope and ignore undefined values\n    values = _.omitBy(values, value => value === undefined);\n\n    const changedBefore = this.changed() || [];\n\n    options = options || {};\n    if (Array.isArray(options)) options = { fields: options };\n\n    options = Utils.cloneDeep(options);\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    const setOptions = Utils.cloneDeep(options);\n    setOptions.attributes = options.fields;\n    this.set(values, setOptions);\n\n    // Now we need to figure out which fields were actually affected by the setter.\n    const sideEffects = _.without(this.changed(), ...changedBefore);\n    const fields = _.union(Object.keys(values), sideEffects);\n\n    if (!options.fields) {\n      options.fields = _.intersection(fields, this.changed());\n      options.defaultFields = options.fields;\n    }\n\n    return await this.save(options);\n  }\n\n  /**\n   * Destroy the row corresponding to this instance. Depending on your setting for paranoid, the row will either be completely deleted, or have its deletedAt timestamp set to the current time.\n   *\n   * @param {object}      [options={}] destroy options\n   * @param {boolean}     [options.force=false] If set to true, paranoid models will actually be deleted\n   * @param {Function}    [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   * @param {string}      [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   *\n   * @returns {Promise}\n   */\n  async destroy(options) {\n    options = {\n      hooks: true,\n      force: false,\n      ...options\n    };\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    // Run before hook\n    if (options.hooks) {\n      await this.constructor.runHooks('beforeDestroy', this, options);\n    }\n    const where = this.where(true);\n\n    let result;\n    if (this.constructor._timestampAttributes.deletedAt && options.force === false) {\n      const attributeName = this.constructor._timestampAttributes.deletedAt;\n      const attribute = this.constructor.rawAttributes[attributeName];\n      const defaultValue = Object.prototype.hasOwnProperty.call(attribute, 'defaultValue')\n        ? attribute.defaultValue\n        : null;\n      const currentValue = this.getDataValue(attributeName);\n      const undefinedOrNull = currentValue == null && defaultValue == null;\n      if (undefinedOrNull || _.isEqual(currentValue, defaultValue)) {\n        // only update timestamp if it wasn't already set\n        this.setDataValue(attributeName, new Date());\n      }\n\n      result = await this.save({ ...options, hooks: false });\n    } else {\n      result = await this.constructor.queryInterface.delete(this, this.constructor.getTableName(options), where, { type: QueryTypes.DELETE, limit: null, ...options });\n    }\n    // Run after hook\n    if (options.hooks) {\n      await this.constructor.runHooks('afterDestroy', this, options);\n    }\n    return result;\n  }\n\n  /**\n   * Helper method to determine if a instance is \"soft deleted\".  This is\n   * particularly useful if the implementer renamed the `deletedAt` attribute\n   * to something different.  This method requires `paranoid` to be enabled.\n   *\n   * @returns {boolean}\n   */\n  isSoftDeleted() {\n    if (!this.constructor._timestampAttributes.deletedAt) {\n      throw new Error('Model is not paranoid');\n    }\n\n    const deletedAtAttribute = this.constructor.rawAttributes[this.constructor._timestampAttributes.deletedAt];\n    const defaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, 'defaultValue') ? deletedAtAttribute.defaultValue : null;\n    const deletedAt = this.get(this.constructor._timestampAttributes.deletedAt) || null;\n    const isSet = deletedAt !== defaultValue;\n\n    return isSet;\n  }\n\n  /**\n   * Restore the row corresponding to this instance. Only available for paranoid models.\n   *\n   * @param {object}      [options={}] restore options\n   * @param {Function}    [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   *\n   * @returns {Promise}\n   */\n  async restore(options) {\n    if (!this.constructor._timestampAttributes.deletedAt) throw new Error('Model is not paranoid');\n\n    options = {\n      hooks: true,\n      force: false,\n      ...options\n    };\n\n    // Add CLS transaction\n    if (options.transaction === undefined && this.sequelize.constructor._cls) {\n      const t = this.sequelize.constructor._cls.get('transaction');\n      if (t) {\n        options.transaction = t;\n      }\n    }\n\n    // Run before hook\n    if (options.hooks) {\n      await this.constructor.runHooks('beforeRestore', this, options);\n    }\n    const deletedAtCol = this.constructor._timestampAttributes.deletedAt;\n    const deletedAtAttribute = this.constructor.rawAttributes[deletedAtCol];\n    const deletedAtDefaultValue = Object.prototype.hasOwnProperty.call(deletedAtAttribute, 'defaultValue') ? deletedAtAttribute.defaultValue : null;\n\n    this.setDataValue(deletedAtCol, deletedAtDefaultValue);\n    const result = await this.save({ ...options, hooks: false, omitNull: false });\n    // Run after hook\n    if (options.hooks) {\n      await this.constructor.runHooks('afterRestore', this, options);\n      return result;\n    }\n    return result;\n  }\n\n  /**\n   * Increment the value of one or more columns. This is done in the database, which means it does not use the values currently stored on the Instance. The increment is done using a\n   * ```sql\n   * SET column = column + X\n   * ```\n   * query. The updated instance will be returned by default in Postgres. However, in other dialects, you will need to do a reload to get the new values.\n   *\n   * @example\n   * instance.increment('number') // increment number by 1\n   *\n   * instance.increment(['number', 'count'], { by: 2 }) // increment number and count by 2\n   *\n   * // increment answer by 42, and tries by 1.\n   * // `by` is ignored, since each column has its own value\n   * instance.increment({ answer: 42, tries: 1}, { by: 2 })\n   *\n   * @see\n   * {@link Model#reload}\n   *\n   * @param {string|Array|object} fields If a string is provided, that column is incremented by the value of `by` given in options. If an array is provided, the same is true for each column. If and object is provided, each column is incremented by the value given.\n   * @param {object} [options] options\n   * @param {number} [options.by=1] The number to increment by\n   * @param {boolean} [options.silent=false] If true, the updatedAt timestamp will not be updated.\n   * @param {Function} [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   * @param {string} [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param {boolean} [options.returning=true] Append RETURNING * to get back auto generated values (Postgres only)\n   *\n   * @returns {Promise<Model>}\n   * @since 4.0.0\n   */\n  async increment(fields, options) {\n    const identifier = this.where();\n\n    options = Utils.cloneDeep(options);\n    options.where = { ...options.where, ...identifier };\n    options.instance = this;\n\n    await this.constructor.increment(fields, options);\n\n    return this;\n  }\n\n  /**\n   * Decrement the value of one or more columns. This is done in the database, which means it does not use the values currently stored on the Instance. The decrement is done using a\n   * ```sql\n   * SET column = column - X\n   * ```\n   * query. The updated instance will be returned by default in Postgres. However, in other dialects, you will need to do a reload to get the new values.\n   *\n   * @example\n   * instance.decrement('number') // decrement number by 1\n   *\n   * instance.decrement(['number', 'count'], { by: 2 }) // decrement number and count by 2\n   *\n   * // decrement answer by 42, and tries by 1.\n   * // `by` is ignored, since each column has its own value\n   * instance.decrement({ answer: 42, tries: 1}, { by: 2 })\n   *\n   * @see\n   * {@link Model#reload}\n   * @param {string|Array|object} fields If a string is provided, that column is decremented by the value of `by` given in options. If an array is provided, the same is true for each column. If and object is provided, each column is decremented by the value given\n   * @param {object}      [options] decrement options\n   * @param {number}      [options.by=1] The number to decrement by\n   * @param {boolean}     [options.silent=false] If true, the updatedAt timestamp will not be updated.\n   * @param {Function}    [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Transaction} [options.transaction] Transaction to run query under\n   * @param {string}      [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param {boolean}     [options.returning=true] Append RETURNING * to get back auto generated values (Postgres only)\n   *\n   * @returns {Promise}\n   */\n  async decrement(fields, options) {\n    return this.increment(fields, {\n      by: 1,\n      ...options,\n      increment: false\n    });\n  }\n\n  /**\n   * Check whether this and `other` Instance refer to the same row\n   *\n   * @param {Model} other Other instance to compare against\n   *\n   * @returns {boolean}\n   */\n  equals(other) {\n    if (!other || !other.constructor) {\n      return false;\n    }\n\n    if (!(other instanceof this.constructor)) {\n      return false;\n    }\n\n    return this.constructor.primaryKeyAttributes.every(attribute => this.get(attribute, { raw: true }) === other.get(attribute, { raw: true }));\n  }\n\n  /**\n   * Check if this is equal to one of `others` by calling equals\n   *\n   * @param {Array<Model>} others An array of instances to check against\n   *\n   * @returns {boolean}\n   */\n  equalsOneOf(others) {\n    return others.some(other => this.equals(other));\n  }\n\n  setValidators(attribute, validators) {\n    this.validators[attribute] = validators;\n  }\n\n  /**\n   * Convert the instance to a JSON representation.\n   * Proxies to calling `get` with no keys.\n   * This means get all values gotten from the DB, and apply all custom getters.\n   *\n   * @see\n   * {@link Model#get}\n   *\n   * @returns {object}\n   */\n  toJSON() {\n    return _.cloneDeep(\n      this.get({\n        plain: true\n      })\n    );\n  }\n\n  /**\n   * Creates a 1:m association between this (the source) and the provided target.\n   * The foreign key is added on the target.\n   *\n   * @param {Model}               target Target model\n   * @param {object}              [options] hasMany association options\n   * @param {boolean}             [options.hooks=false] Set to true to run before-/afterDestroy hooks when an associated model is deleted because of a cascade. For example if `User.hasOne(Profile, {onDelete: 'cascade', hooks:true})`, the before-/afterDestroy hooks for profile will be called when a user is deleted. Otherwise the profile will be deleted without invoking any hooks\n   * @param {string|object}       [options.as] The alias of this model. If you provide a string, it should be plural, and will be singularized using node.inflection. If you want to control the singular version yourself, provide an object with `plural` and `singular` keys. See also the `name` option passed to `sequelize.define`. If you create multiple associations between the same tables, you should provide an alias to be able to distinguish between them. If you provide an alias when creating the association, you should provide the same alias when eager loading and when getting associated models. Defaults to the pluralized name of target\n   * @param {string|object}       [options.foreignKey] The name of the foreign key in the target table or an object representing the type definition for the foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property to set the name of the column. Defaults to the name of source + primary key of source\n   * @param {string}              [options.sourceKey] The name of the field to use as the key for the association in the source table. Defaults to the primary key of the source table\n   * @param {object}              [options.scope] A key/value set that will be used for association create and find defaults on the target. (sqlite not supported for N:M)\n   * @param {string}              [options.onDelete='SET&nbsp;NULL|CASCADE'] SET NULL if foreignKey allows nulls, CASCADE if otherwise\n   * @param {string}              [options.onUpdate='CASCADE'] Set `ON UPDATE`\n   * @param {boolean}             [options.constraints=true] Should on update and on delete constraints be enabled on the foreign key.\n   *\n   * @returns {HasMany}\n   *\n   * @example\n   * User.hasMany(Profile) // This will add userId to the profile table\n   */\n  static hasMany(target, options) {} // eslint-disable-line\n\n  /**\n   * Create an N:M association with a join table. Defining `through` is required.\n   *\n   * @param {Model}               target Target model\n   * @param {object}              options belongsToMany association options\n   * @param {boolean}             [options.hooks=false] Set to true to run before-/afterDestroy hooks when an associated model is deleted because of a cascade. For example if `User.hasOne(Profile, {onDelete: 'cascade', hooks:true})`, the before-/afterDestroy hooks for profile will be called when a user is deleted. Otherwise the profile will be deleted without invoking any hooks\n   * @param {Model|string|object} options.through The name of the table that is used to join source and target in n:m associations. Can also be a sequelize model if you want to define the junction table yourself and add extra attributes to it.\n   * @param {Model}               [options.through.model] The model used to join both sides of the N:M association.\n   * @param {object}              [options.through.scope] A key/value set that will be used for association create and find defaults on the through model. (Remember to add the attributes to the through model)\n   * @param {boolean}             [options.through.unique=true] If true a unique key will be generated from the foreign keys used (might want to turn this off and create specific unique keys when using scopes)\n   * @param {boolean}             [options.through.paranoid=false] If true the generated join table will be paranoid\n   * @param {string|object}       [options.as] The alias of this association. If you provide a string, it should be plural, and will be singularized using node.inflection. If you want to control the singular version yourself, provide an object with `plural` and `singular` keys. See also the `name` option passed to `sequelize.define`. If you create multiple associations between the same tables, you should provide an alias to be able to distinguish between them. If you provide an alias when creating the association, you should provide the same alias when eager loading and when getting associated models. Defaults to the pluralized name of target\n   * @param {string|object}       [options.foreignKey] The name of the foreign key in the join table (representing the source model) or an object representing the type definition for the foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property to set the name of the column. Defaults to the name of source + primary key of source\n   * @param {string|object}       [options.otherKey] The name of the foreign key in the join table (representing the target model) or an object representing the type definition for the other column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property to set the name of the column. Defaults to the name of target + primary key of target\n   * @param {object}              [options.scope] A key/value set that will be used for association create and find defaults on the target. (sqlite not supported for N:M)\n   * @param {boolean}             [options.timestamps=sequelize.options.timestamps] Should the join model have timestamps\n   * @param {string}              [options.onDelete='SET&nbsp;NULL|CASCADE'] Cascade if this is a n:m, and set null if it is a 1:m\n   * @param {string}              [options.onUpdate='CASCADE'] Sets `ON UPDATE`\n   * @param {boolean}             [options.constraints=true] Should on update and on delete constraints be enabled on the foreign key.\n   *\n   * @returns {BelongsToMany}\n   *\n   * @example\n   * // Automagically generated join model\n   * User.belongsToMany(Project, { through: 'UserProjects' })\n   * Project.belongsToMany(User, { through: 'UserProjects' })\n   *\n   * // Join model with additional attributes\n   * const UserProjects = sequelize.define('UserProjects', {\n   *   started: Sequelize.BOOLEAN\n   * })\n   * User.belongsToMany(Project, { through: UserProjects })\n   * Project.belongsToMany(User, { through: UserProjects })\n   */\n  static belongsToMany(target, options) {} // eslint-disable-line\n\n  /**\n   * Creates an association between this (the source) and the provided target. The foreign key is added on the target.\n   *\n   * @param {Model}           target Target model\n   * @param {object}          [options] hasOne association options\n   * @param {boolean}         [options.hooks=false] Set to true to run before-/afterDestroy hooks when an associated model is deleted because of a cascade. For example if `User.hasOne(Profile, {onDelete: 'cascade', hooks:true})`, the before-/afterDestroy hooks for profile will be called when a user is deleted. Otherwise the profile will be deleted without invoking any hooks\n   * @param {string}          [options.as] The alias of this model, in singular form. See also the `name` option passed to `sequelize.define`. If you create multiple associations between the same tables, you should provide an alias to be able to distinguish between them. If you provide an alias when creating the association, you should provide the same alias when eager loading and when getting associated models. Defaults to the singularized name of target\n   * @param {string|object}   [options.foreignKey] The name of the foreign key attribute in the target model or an object representing the type definition for the foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property to set the name of the column. Defaults to the name of source + primary key of source\n   * @param {string}          [options.sourceKey] The name of the attribute to use as the key for the association in the source table. Defaults to the primary key of the source table\n   * @param {string}          [options.onDelete='SET&nbsp;NULL|CASCADE'] SET NULL if foreignKey allows nulls, CASCADE if otherwise\n   * @param {string}          [options.onUpdate='CASCADE'] Sets 'ON UPDATE'\n   * @param {boolean}         [options.constraints=true] Should on update and on delete constraints be enabled on the foreign key.\n   * @param {string}          [options.uniqueKey] The custom name for unique constraint.\n   *\n   * @returns {HasOne}\n   *\n   * @example\n   * User.hasOne(Profile) // This will add userId to the profile table\n   */\n  static hasOne(target, options) {} // eslint-disable-line\n\n  /**\n   * Creates an association between this (the source) and the provided target. The foreign key is added on the source.\n   *\n   * @param {Model}           target The target model\n   * @param {object}          [options] belongsTo association options\n   * @param {boolean}         [options.hooks=false] Set to true to run before-/afterDestroy hooks when an associated model is deleted because of a cascade. For example if `User.hasOne(Profile, {onDelete: 'cascade', hooks:true})`, the before-/afterDestroy hooks for profile will be called when a user is deleted. Otherwise the profile will be deleted without invoking any hooks\n   * @param {string}          [options.as] The alias of this model, in singular form. See also the `name` option passed to `sequelize.define`. If you create multiple associations between the same tables, you should provide an alias to be able to distinguish between them. If you provide an alias when creating the association, you should provide the same alias when eager loading and when getting associated models. Defaults to the singularized name of target\n   * @param {string|object}   [options.foreignKey] The name of the foreign key attribute in the source table or an object representing the type definition for the foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property to set the name of the column. Defaults to the name of target + primary key of target\n   * @param {string}          [options.targetKey] The name of the attribute to use as the key for the association in the target table. Defaults to the primary key of the target table\n   * @param {string}          [options.onDelete='SET&nbsp;NULL|NO&nbsp;ACTION'] SET NULL if foreignKey allows nulls, NO ACTION if otherwise\n   * @param {string}          [options.onUpdate='CASCADE'] Sets 'ON UPDATE'\n   * @param {boolean}         [options.constraints=true] Should on update and on delete constraints be enabled on the foreign key.\n   *\n   * @returns {BelongsTo}\n   *\n   * @example\n   * Profile.belongsTo(User) // This will add userId to the profile table\n   */\n  static belongsTo(target, options) {} // eslint-disable-line\n}\n\n/**\n * Unpacks an object that only contains a single Op.and key to the value of Op.and\n *\n * Internal method used by {@link combineWheresWithAnd}\n *\n * @param {WhereOptions} where The object to unpack\n * @example `{ [Op.and]: [a, b] }` becomes `[a, b]`\n * @example `{ [Op.and]: { key: val } }` becomes `{ key: val }`\n * @example `{ [Op.or]: [a, b] }` remains as `{ [Op.or]: [a, b] }`\n * @example `{ [Op.and]: [a, b], key: c }` remains as `{ [Op.and]: [a, b], key: c }`\n * @private\n */\nfunction unpackAnd(where) {\n  if (!_.isObject(where)) {\n    return where;\n  }\n\n  const keys = Utils.getComplexKeys(where);\n\n  // object is empty, remove it.\n  if (keys.length === 0) {\n    return;\n  }\n\n  // we have more than just Op.and, keep as-is\n  if (keys.length !== 1 || keys[0] !== Op.and) {\n    return where;\n  }\n\n  const andParts = where[Op.and];\n\n  return andParts;\n}\n\nfunction combineWheresWithAnd(whereA, whereB) {\n  const unpackedA = unpackAnd(whereA);\n\n  if (unpackedA === undefined) {\n    return whereB;\n  }\n\n  const unpackedB = unpackAnd(whereB);\n\n  if (unpackedB === undefined) {\n    return whereA;\n  }\n\n  return {\n    [Op.and]: _.flatten([unpackedA, unpackedB])\n  };\n}\n\nObject.assign(Model, associationsMixin);\nHooks.applyTo(Model, true);\n\nmodule.exports = Model;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/operators.js
===================================================================
--- backend/node_modules/sequelize/lib/operators.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  Op: () => Op,
-  default: () => operators_default
-});
-const Op = {
-  eq: Symbol.for("eq"),
-  ne: Symbol.for("ne"),
-  gte: Symbol.for("gte"),
-  gt: Symbol.for("gt"),
-  lte: Symbol.for("lte"),
-  lt: Symbol.for("lt"),
-  not: Symbol.for("not"),
-  is: Symbol.for("is"),
-  in: Symbol.for("in"),
-  notIn: Symbol.for("notIn"),
-  like: Symbol.for("like"),
-  notLike: Symbol.for("notLike"),
-  iLike: Symbol.for("iLike"),
-  notILike: Symbol.for("notILike"),
-  startsWith: Symbol.for("startsWith"),
-  endsWith: Symbol.for("endsWith"),
-  substring: Symbol.for("substring"),
-  regexp: Symbol.for("regexp"),
-  notRegexp: Symbol.for("notRegexp"),
-  iRegexp: Symbol.for("iRegexp"),
-  notIRegexp: Symbol.for("notIRegexp"),
-  between: Symbol.for("between"),
-  notBetween: Symbol.for("notBetween"),
-  overlap: Symbol.for("overlap"),
-  contains: Symbol.for("contains"),
-  contained: Symbol.for("contained"),
-  adjacent: Symbol.for("adjacent"),
-  strictLeft: Symbol.for("strictLeft"),
-  strictRight: Symbol.for("strictRight"),
-  noExtendRight: Symbol.for("noExtendRight"),
-  noExtendLeft: Symbol.for("noExtendLeft"),
-  and: Symbol.for("and"),
-  or: Symbol.for("or"),
-  any: Symbol.for("any"),
-  all: Symbol.for("all"),
-  values: Symbol.for("values"),
-  col: Symbol.for("col"),
-  placeholder: Symbol.for("placeholder"),
-  join: Symbol.for("join"),
-  match: Symbol.for("match")
-};
-var operators_default = Op;
-module.exports = Op;
-//# sourceMappingURL=operators.js.map
Index: ckend/node_modules/sequelize/lib/operators.js.map
===================================================================
--- backend/node_modules/sequelize/lib/operators.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/operators.ts"],
-  "sourcesContent": ["interface OpTypes {\n  /**\n   * Operator -|- (PG range is adjacent to operator)\n   *\n   * ```js\n   * [Op.adjacent]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * -|- [1, 2)\n   * ```\n   */\n  readonly adjacent: unique symbol;\n  /**\n   * Operator ALL\n   *\n   * ```js\n   * [Op.gt]: {\n   *  [Op.all]: literal('SELECT 1')\n   * }\n   * ```\n   * In SQL\n   * ```sql\n   * > ALL (SELECT 1)\n   * ```\n   */\n  readonly all: unique symbol;\n  /**\n   * Operator AND\n   *\n   * ```js\n   * [Op.and]: {a: 5}\n   * ```\n   * In SQL\n   * ```sql\n   * AND (a = 5)\n   * ```\n   */\n  readonly and: unique symbol;\n  /**\n   * Operator ANY ARRAY (PG only)\n   *\n   * ```js\n   * [Op.any]: [2,3]\n   * ```\n   * In SQL\n   * ```sql\n   * ANY ARRAY[2, 3]::INTEGER\n   * ```\n   *\n   * Operator LIKE ANY ARRAY (also works for iLike and notLike)\n   *\n   * ```js\n   * [Op.like]: { [Op.any]: ['cat', 'hat']}\n   * ```\n   * In SQL\n   * ```sql\n   * LIKE ANY ARRAY['cat', 'hat']\n   * ```\n   */\n  readonly any: unique symbol;\n  /**\n   * Operator BETWEEN\n   *\n   * ```js\n   * [Op.between]: [6, 10]\n   * ```\n   * In SQL\n   * ```sql\n   * BETWEEN 6 AND 10\n   * ```\n   */\n  readonly between: unique symbol;\n  /**\n   * With dialect specific column identifiers (PG in this example)\n   *\n   * ```js\n   * [Op.col]: 'user.organization_id'\n   * ```\n   * In SQL\n   * ```sql\n   * = \"user\".\"organization_id\"\n   * ```\n   */\n  readonly col: unique symbol;\n  /**\n   * Operator <@ (PG array contained by operator)\n   *\n   * ```js\n   * [Op.contained]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * <@ [1, 2)\n   * ```\n   */\n  readonly contained: unique symbol;\n  /**\n   * Operator @> (PG array contains operator)\n   *\n   * ```js\n   * [Op.contains]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * @> [1, 2)\n   * ```\n   */\n  readonly contains: unique symbol;\n  /**\n   * Operator LIKE\n   *\n   * ```js\n   * [Op.endsWith]: 'hat'\n   * ```\n   * In SQL\n   * ```sql\n   * LIKE '%hat'\n   * ```\n   */\n  readonly endsWith: unique symbol;\n  /**\n   * Operator =\n   *\n   * ```js\n   * [Op.eq]: 3\n   * ```\n   * In SQL\n   * ```sql\n   * = 3\n   * ```\n   */\n  readonly eq: unique symbol;\n  /**\n   * Operator >\n   *\n   * ```js\n   * [Op.gt]: 6\n   * ```\n   * In SQL\n   * ```sql\n   * > 6\n   * ```\n   */\n  readonly gt: unique symbol;\n  /**\n   * Operator >=\n   *\n   * ```js\n   * [Op.gte]: 6\n   * ```\n   * In SQL\n   * ```sql\n   * >= 6\n   * ```\n   */\n  readonly gte: unique symbol;\n\n  /**\n   * Operator ILIKE (case insensitive) (PG only)\n   *\n   * ```js\n   * [Op.iLike]: '%hat'\n   * ```\n   * In SQL\n   * ```sql\n   * ILIKE '%hat'\n   * ```\n   */\n  readonly iLike: unique symbol;\n  /**\n   * Operator IN\n   *\n   * ```js\n   * [Op.in]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * IN [1, 2]\n   * ```\n   */\n  readonly in: unique symbol;\n  /**\n   * Operator ~* (PG only)\n   *\n   * ```js\n   * [Op.iRegexp]: '^[h|a|t]'\n   * ```\n   * In SQL\n   * ```sql\n   * ~* '^[h|a|t]'\n   * ```\n   */\n  readonly iRegexp: unique symbol;\n  /**\n   * Operator IS\n   *\n   * ```js\n   * [Op.is]: null\n   * ```\n   * In SQL\n   * ```sql\n   * IS null\n   * ```\n   */\n  readonly is: unique symbol;\n  /**\n   * Operator LIKE\n   *\n   * ```js\n   * [Op.like]: '%hat'\n   * ```\n   * In SQL\n   * ```sql\n   * LIKE '%hat'\n   * ```\n   */\n  readonly like: unique symbol;\n  /**\n   * Operator <\n   *\n   * ```js\n   * [Op.lt]: 10\n   * ```\n   * In SQL\n   * ```sql\n   * < 10\n   * ```\n   */\n  readonly lt: unique symbol;\n  /**\n   * Operator <=\n   *\n   * ```js\n   * [Op.lte]: 10\n   * ```\n   * In SQL\n   * ```sql\n   * <= 10\n   * ```\n   */\n  readonly lte: unique symbol;\n  /**\n   * Operator @@\n   *\n   * ```js\n   * [Op.match]: Sequelize.fn('to_tsquery', 'fat & rat')`\n   * ```\n   * In SQL\n   * ```sql\n   * @@ to_tsquery('fat & rat')\n   * ```\n   */\n  readonly match: unique symbol;\n  /**\n   * Operator !=\n   *\n   * ```js\n   * [Op.ne]: 20\n   * ```\n   * In SQL\n   * ```sql\n   * != 20\n   * ```\n   */\n  readonly ne: unique symbol;\n  /**\n   * Operator &> (PG range does not extend to the left of operator)\n   *\n   * ```js\n   * [Op.noExtendLeft]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * &> [1, 2)\n   * ```\n   */\n  readonly noExtendLeft: unique symbol;\n  /**\n   * Operator &< (PG range does not extend to the right of operator)\n   *\n   * ```js\n   * [Op.noExtendRight]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * &< [1, 2)\n   * ```\n   */\n  readonly noExtendRight: unique symbol;\n  /**\n   * Operator NOT\n   *\n   * ```js\n   * [Op.not]: true\n   * ```\n   * In SQL\n   * ```sql\n   * IS NOT TRUE\n   * ```\n   */\n  readonly not: unique symbol;\n  /**\n   * Operator NOT BETWEEN\n   *\n   * ```js\n   * [Op.notBetween]: [11, 15]\n   * ```\n   * In SQL\n   * ```sql\n   * NOT BETWEEN 11 AND 15\n   * ```\n   */\n  readonly notBetween: unique symbol;\n  /**\n   * Operator NOT ILIKE (case insensitive) (PG only)\n   *\n   * ```js\n   * [Op.notILike]: '%hat'\n   * ```\n   * In SQL\n   * ```sql\n   * NOT ILIKE '%hat'\n   * ```\n   */\n  readonly notILike: unique symbol;\n  /**\n   * Operator NOT IN\n   *\n   * ```js\n   * [Op.notIn]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * NOT IN [1, 2]\n   * ```\n   */\n  readonly notIn: unique symbol;\n  /**\n   * Operator !~* (PG only)\n   *\n   * ```js\n   * [Op.notIRegexp]: '^[h|a|t]'\n   * ```\n   * In SQL\n   * ```sql\n   * !~* '^[h|a|t]'\n   * ```\n   */\n  readonly notIRegexp: unique symbol;\n  /**\n   * Operator NOT LIKE\n   *\n   * ```js\n   * [Op.notLike]: '%hat'\n   * ```\n   * In SQL\n   * ```sql\n   * NOT LIKE '%hat'\n   * ```\n   */\n  readonly notLike: unique symbol;\n  /**\n   * Operator NOT REGEXP (MySQL/PG only)\n   *\n   * ```js\n   * [Op.notRegexp]: '^[h|a|t]'\n   * ```\n   * In SQL\n   * ```sql\n   * NOT REGEXP/!~ '^[h|a|t]'\n   * ```\n   */\n  readonly notRegexp: unique symbol;\n  /**\n   * Operator OR\n   *\n   * ```js\n   * [Op.or]: [{a: 5}, {a: 6}]\n   * ```\n   * In SQL\n   * ```sql\n   * (a = 5 OR a = 6)\n   * ```\n   */\n  readonly or: unique symbol;\n  /**\n   * Operator && (PG array overlap operator)\n   *\n   * ```js\n   * [Op.overlap]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * && [1, 2)\n   * ```\n   */\n  readonly overlap: unique symbol;\n  /**\n   * Internal placeholder\n   *\n   * ```js\n   * [Op.placeholder]: true\n   * ```\n   */\n  readonly placeholder: unique symbol;\n  /**\n   * Operator REGEXP (MySQL/PG only)\n   *\n   * ```js\n   * [Op.regexp]: '^[h|a|t]'\n   * ```\n   * In SQL\n   * ```sql\n   * REGEXP/~ '^[h|a|t]'\n   * ```\n   */\n  readonly regexp: unique symbol;\n  /**\n   * Operator LIKE\n   *\n   * ```js\n   * [Op.startsWith]: 'hat'\n   * ```\n   * In SQL\n   * ```sql\n   * LIKE 'hat%'\n   * ```\n   */\n  readonly startsWith: unique symbol;\n  /**\n   * Operator << (PG range strictly left of operator)\n   *\n   * ```js\n   * [Op.strictLeft]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * << [1, 2)\n   * ```\n   */\n  readonly strictLeft: unique symbol;\n  /**\n   * Operator >> (PG range strictly right of operator)\n   *\n   * ```js\n   * [Op.strictRight]: [1, 2]\n   * ```\n   * In SQL\n   * ```sql\n   * >> [1, 2)\n   * ```\n   */\n  readonly strictRight: unique symbol;\n  /**\n   * Operator LIKE\n   *\n   * ```js\n   * [Op.substring]: 'hat'\n   * ```\n   * In SQL\n   * ```sql\n   * LIKE '%hat%'\n   * ```\n   */\n  readonly substring: unique symbol;\n  /**\n   * Operator VALUES\n   *\n   * ```js\n   * [Op.values]: [4, 5, 6]\n   * ```\n   * In SQL\n   * ```sql\n   * VALUES (4), (5), (6)\n   * ```\n   */\n  readonly values: unique symbol;\n}\n\n// Note: These symbols are registered in the Global Symbol Registry\n//  to counter bugs when two different versions of this library are loaded\n//  Source issue: https://github.com/sequelize/sequelize/issues/8663\n// This is not an endorsement of having two different versions of the library loaded at the same time,\n//  a lot more is going to silently break if you do this.\nexport const Op: OpTypes = {\n  eq: Symbol.for('eq'),\n  ne: Symbol.for('ne'),\n  gte: Symbol.for('gte'),\n  gt: Symbol.for('gt'),\n  lte: Symbol.for('lte'),\n  lt: Symbol.for('lt'),\n  not: Symbol.for('not'),\n  is: Symbol.for('is'),\n  in: Symbol.for('in'),\n  notIn: Symbol.for('notIn'),\n  like: Symbol.for('like'),\n  notLike: Symbol.for('notLike'),\n  iLike: Symbol.for('iLike'),\n  notILike: Symbol.for('notILike'),\n  startsWith: Symbol.for('startsWith'),\n  endsWith: Symbol.for('endsWith'),\n  substring: Symbol.for('substring'),\n  regexp: Symbol.for('regexp'),\n  notRegexp: Symbol.for('notRegexp'),\n  iRegexp: Symbol.for('iRegexp'),\n  notIRegexp: Symbol.for('notIRegexp'),\n  between: Symbol.for('between'),\n  notBetween: Symbol.for('notBetween'),\n  overlap: Symbol.for('overlap'),\n  contains: Symbol.for('contains'),\n  contained: Symbol.for('contained'),\n  adjacent: Symbol.for('adjacent'),\n  strictLeft: Symbol.for('strictLeft'),\n  strictRight: Symbol.for('strictRight'),\n  noExtendRight: Symbol.for('noExtendRight'),\n  noExtendLeft: Symbol.for('noExtendLeft'),\n  and: Symbol.for('and'),\n  or: Symbol.for('or'),\n  any: Symbol.for('any'),\n  all: Symbol.for('all'),\n  values: Symbol.for('values'),\n  col: Symbol.for('col'),\n  placeholder: Symbol.for('placeholder'),\n  join: Symbol.for('join'),\n  match: Symbol.for('match')\n} as OpTypes;\n\nexport default Op;\n\n// https://github.com/sequelize/sequelize/issues/13791\n// remove me in v7: kept for backward compatibility as `export default Op` is\n// transpiled to `module.exports.default` instead of `module.exports`\nmodule.exports = Op;\n"],
-  "mappings": ";;;;;;;AAAA;AAAA;AAAA;AAAA;AAqeO,MAAM,KAAc;AAAA,EACzB,IAAI,OAAO,IAAI;AAAA,EACf,IAAI,OAAO,IAAI;AAAA,EACf,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,OAAO,IAAI;AAAA,EACf,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,OAAO,IAAI;AAAA,EACf,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,OAAO,IAAI;AAAA,EACf,IAAI,OAAO,IAAI;AAAA,EACf,OAAO,OAAO,IAAI;AAAA,EAClB,MAAM,OAAO,IAAI;AAAA,EACjB,SAAS,OAAO,IAAI;AAAA,EACpB,OAAO,OAAO,IAAI;AAAA,EAClB,UAAU,OAAO,IAAI;AAAA,EACrB,YAAY,OAAO,IAAI;AAAA,EACvB,UAAU,OAAO,IAAI;AAAA,EACrB,WAAW,OAAO,IAAI;AAAA,EACtB,QAAQ,OAAO,IAAI;AAAA,EACnB,WAAW,OAAO,IAAI;AAAA,EACtB,SAAS,OAAO,IAAI;AAAA,EACpB,YAAY,OAAO,IAAI;AAAA,EACvB,SAAS,OAAO,IAAI;AAAA,EACpB,YAAY,OAAO,IAAI;AAAA,EACvB,SAAS,OAAO,IAAI;AAAA,EACpB,UAAU,OAAO,IAAI;AAAA,EACrB,WAAW,OAAO,IAAI;AAAA,EACtB,UAAU,OAAO,IAAI;AAAA,EACrB,YAAY,OAAO,IAAI;AAAA,EACvB,aAAa,OAAO,IAAI;AAAA,EACxB,eAAe,OAAO,IAAI;AAAA,EAC1B,cAAc,OAAO,IAAI;AAAA,EACzB,KAAK,OAAO,IAAI;AAAA,EAChB,IAAI,OAAO,IAAI;AAAA,EACf,KAAK,OAAO,IAAI;AAAA,EAChB,KAAK,OAAO,IAAI;AAAA,EAChB,QAAQ,OAAO,IAAI;AAAA,EACnB,KAAK,OAAO,IAAI;AAAA,EAChB,aAAa,OAAO,IAAI;AAAA,EACxB,MAAM,OAAO,IAAI;AAAA,EACjB,OAAO,OAAO,IAAI;AAAA;AAGpB,IAAO,oBAAQ;AAKf,OAAO,UAAU;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/query-types.js
===================================================================
--- backend/node_modules/sequelize/lib/query-types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-const QueryTypes = module.exports = {
-  SELECT: "SELECT",
-  INSERT: "INSERT",
-  UPDATE: "UPDATE",
-  BULKUPDATE: "BULKUPDATE",
-  BULKDELETE: "BULKDELETE",
-  DELETE: "DELETE",
-  UPSERT: "UPSERT",
-  VERSION: "VERSION",
-  SHOWTABLES: "SHOWTABLES",
-  SHOWINDEXES: "SHOWINDEXES",
-  DESCRIBE: "DESCRIBE",
-  RAW: "RAW",
-  FOREIGNKEYS: "FOREIGNKEYS",
-  SHOWCONSTRAINTS: "SHOWCONSTRAINTS"
-};
-//# sourceMappingURL=query-types.js.map
Index: ckend/node_modules/sequelize/lib/query-types.js.map
===================================================================
--- backend/node_modules/sequelize/lib/query-types.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/query-types.js"],
-  "sourcesContent": ["'use strict';\n\n/**\n * An enum of query types used by `sequelize.query`\n *\n * @see {@link Sequelize#query}\n *\n * @property SELECT\n * @property INSERT\n * @property UPDATE\n * @property BULKUPDATE\n * @property BULKDELETE\n * @property DELETE\n * @property UPSERT\n * @property VERSION\n * @property SHOWTABLES\n * @property SHOWINDEXES\n * @property DESCRIBE\n * @property RAW\n * @property FOREIGNKEYS\n * @property SHOWCONSTRAINTS\n */\nconst QueryTypes = module.exports = { // eslint-disable-line\n  SELECT: 'SELECT',\n  INSERT: 'INSERT',\n  UPDATE: 'UPDATE',\n  BULKUPDATE: 'BULKUPDATE',\n  BULKDELETE: 'BULKDELETE',\n  DELETE: 'DELETE',\n  UPSERT: 'UPSERT',\n  VERSION: 'VERSION',\n  SHOWTABLES: 'SHOWTABLES',\n  SHOWINDEXES: 'SHOWINDEXES',\n  DESCRIBE: 'DESCRIBE',\n  RAW: 'RAW',\n  FOREIGNKEYS: 'FOREIGNKEYS',\n  SHOWCONSTRAINTS: 'SHOWCONSTRAINTS'\n};\n"],
-  "mappings": ";AAsBA,MAAM,aAAa,OAAO,UAAU;AAAA,EAClC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,KAAK;AAAA,EACL,aAAa;AAAA,EACb,iBAAiB;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/sequelize.js
===================================================================
--- backend/node_modules/sequelize/lib/sequelize.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,645 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __defProps = Object.defineProperties;
-var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
-const url = require("url");
-const path = require("path");
-const pgConnectionString = require("pg-connection-string");
-const retry = require("retry-as-promised").default;
-const _ = require("lodash");
-const Utils = require("./utils");
-const Model = require("./model");
-const DataTypes = require("./data-types");
-const Deferrable = require("./deferrable");
-const ModelManager = require("./model-manager");
-const Transaction = require("./transaction");
-const QueryTypes = require("./query-types");
-const TableHints = require("./table-hints");
-const IndexHints = require("./index-hints");
-const sequelizeErrors = require("./errors");
-const Hooks = require("./hooks");
-const Association = require("./associations/index");
-const Validator = require("./utils/validator-extras").validator;
-const Op = require("./operators");
-const deprecations = require("./utils/deprecations");
-const { QueryInterface } = require("./dialects/abstract/query-interface");
-const { BelongsTo } = require("./associations/belongs-to");
-const HasOne = require("./associations/has-one");
-const { BelongsToMany } = require("./associations/belongs-to-many");
-const { HasMany } = require("./associations/has-many");
-const { withSqliteForeignKeysOff } = require("./dialects/sqlite/sqlite-utils");
-const { injectReplacements } = require("./utils/sql");
-class Sequelize {
-  constructor(database, username, password, options) {
-    let config;
-    if (arguments.length === 1 && typeof database === "object") {
-      options = database;
-      config = _.pick(options, "host", "port", "database", "username", "password");
-    } else if (arguments.length === 1 && typeof database === "string" || arguments.length === 2 && typeof username === "object") {
-      config = {};
-      options = username || {};
-      const urlParts = url.parse(arguments[0], true);
-      options.dialect = urlParts.protocol.replace(/:$/, "");
-      options.host = urlParts.hostname;
-      if (options.dialect === "sqlite" && urlParts.pathname && !urlParts.pathname.startsWith("/:memory")) {
-        const storagePath = path.join(options.host, urlParts.pathname);
-        options.storage = path.resolve(options.storage || storagePath);
-      }
-      if (urlParts.pathname) {
-        config.database = urlParts.pathname.replace(/^\//, "");
-      }
-      if (urlParts.port) {
-        options.port = urlParts.port;
-      }
-      if (urlParts.auth) {
-        const authParts = urlParts.auth.split(":");
-        config.username = authParts[0];
-        if (authParts.length > 1)
-          config.password = authParts.slice(1).join(":");
-      }
-      if (urlParts.query) {
-        if (urlParts.query.host) {
-          options.host = urlParts.query.host;
-        }
-        if (options.dialectOptions) {
-          Object.assign(options.dialectOptions, urlParts.query);
-        } else {
-          options.dialectOptions = urlParts.query;
-          if (urlParts.query.options) {
-            try {
-              const o = JSON.parse(urlParts.query.options);
-              options.dialectOptions.options = o;
-            } catch (e) {
-            }
-          }
-        }
-      }
-      if (["postgres", "postgresql"].includes(options.dialect)) {
-        Object.assign(options.dialectOptions, pgConnectionString.parse(arguments[0]));
-      }
-    } else {
-      options = options || {};
-      config = { database, username, password };
-    }
-    Sequelize.runHooks("beforeInit", config, options);
-    this.options = __spreadValues({
-      dialect: null,
-      dialectModule: null,
-      dialectModulePath: null,
-      host: "localhost",
-      protocol: "tcp",
-      define: {},
-      query: {},
-      sync: {},
-      timezone: "+00:00",
-      standardConformingStrings: true,
-      logging: console.log,
-      omitNull: false,
-      native: false,
-      replication: false,
-      ssl: void 0,
-      pool: {},
-      quoteIdentifiers: true,
-      hooks: {},
-      retry: {
-        max: 5,
-        match: [
-          "SQLITE_BUSY: database is locked"
-        ]
-      },
-      transactionType: Transaction.TYPES.DEFERRED,
-      isolationLevel: null,
-      databaseVersion: 0,
-      typeValidation: false,
-      benchmark: false,
-      minifyAliases: false,
-      logQueryParameters: false,
-      attributeBehavior: "throw"
-    }, options);
-    if (!this.options.dialect) {
-      throw new Error("Dialect needs to be explicitly supplied as of v4.0.0");
-    }
-    if (this.options.dialect === "postgresql") {
-      this.options.dialect = "postgres";
-    }
-    if (this.options.dialect === "sqlite" && this.options.timezone !== "+00:00") {
-      throw new Error("Setting a custom timezone is not supported by SQLite, dates are always returned as UTC. Please remove the custom timezone parameter.");
-    }
-    if (this.options.logging === true) {
-      deprecations.noTrueLogging();
-      this.options.logging = console.log;
-    }
-    this._setupHooks(options.hooks);
-    this.config = {
-      database: config.database || this.options.database,
-      username: config.username || this.options.username,
-      password: config.password || this.options.password || null,
-      host: config.host || this.options.host,
-      port: config.port || this.options.port,
-      pool: this.options.pool,
-      protocol: this.options.protocol,
-      native: this.options.native,
-      ssl: this.options.ssl,
-      replication: this.options.replication,
-      dialectModule: this.options.dialectModule,
-      dialectModulePath: this.options.dialectModulePath,
-      keepDefaultTimezone: this.options.keepDefaultTimezone,
-      dialectOptions: this.options.dialectOptions
-    };
-    let Dialect;
-    switch (this.getDialect()) {
-      case "mariadb":
-        Dialect = require("./dialects/mariadb");
-        break;
-      case "mssql":
-        Dialect = require("./dialects/mssql");
-        break;
-      case "mysql":
-        Dialect = require("./dialects/mysql");
-        break;
-      case "oracle":
-        Dialect = require("./dialects/oracle");
-        break;
-      case "postgres":
-        Dialect = require("./dialects/postgres");
-        break;
-      case "sqlite":
-        Dialect = require("./dialects/sqlite");
-        break;
-      case "db2":
-        Dialect = require("./dialects/db2");
-        break;
-      case "snowflake":
-        Dialect = require("./dialects/snowflake");
-        break;
-      default:
-        throw new Error(`The dialect ${this.getDialect()} is not supported. Supported dialects: mssql, mariadb, mysql, oracle, postgres, db2 and sqlite.`);
-    }
-    this.dialect = new Dialect(this);
-    this.dialect.queryGenerator.typeValidation = options.typeValidation;
-    if (_.isPlainObject(this.options.operatorsAliases)) {
-      deprecations.noStringOperators();
-      this.dialect.queryGenerator.setOperatorsAliases(this.options.operatorsAliases);
-    } else if (typeof this.options.operatorsAliases === "boolean") {
-      deprecations.noBoolOperatorAliases();
-    }
-    this.queryInterface = this.dialect.queryInterface;
-    this.models = {};
-    this.modelManager = new ModelManager(this);
-    this.connectionManager = this.dialect.connectionManager;
-    Sequelize.runHooks("afterInit", this);
-  }
-  refreshTypes() {
-    this.connectionManager.refreshTypeParser(DataTypes);
-  }
-  getDialect() {
-    return this.options.dialect;
-  }
-  getDatabaseName() {
-    return this.config.database;
-  }
-  getQueryInterface() {
-    return this.queryInterface;
-  }
-  define(modelName, attributes, options = {}) {
-    options.modelName = modelName;
-    options.sequelize = this;
-    const model = class extends Model {
-    };
-    model.init(attributes, options);
-    return model;
-  }
-  model(modelName) {
-    if (!this.isDefined(modelName)) {
-      throw new Error(`${modelName} has not been defined`);
-    }
-    return this.modelManager.getModel(modelName);
-  }
-  isDefined(modelName) {
-    return !!this.modelManager.models.find((model) => model.name === modelName);
-  }
-  async query(sql, options) {
-    options = __spreadValues(__spreadValues({}, this.options.query), options);
-    if (options.instance && !options.model) {
-      options.model = options.instance.constructor;
-    }
-    if (!options.instance && !options.model) {
-      options.raw = true;
-    }
-    if (options.mapToModel) {
-      options.fieldMap = _.get(options, "model.fieldAttributeMap", {});
-    }
-    options = _.defaults(options, {
-      logging: Object.prototype.hasOwnProperty.call(this.options, "logging") ? this.options.logging : console.log,
-      searchPath: Object.prototype.hasOwnProperty.call(this.options, "searchPath") ? this.options.searchPath : "DEFAULT"
-    });
-    if (!options.type) {
-      if (options.model || options.nest || options.plain) {
-        options.type = QueryTypes.SELECT;
-      } else {
-        options.type = QueryTypes.RAW;
-      }
-    }
-    if (!this.dialect.supports.searchPath || !this.options.dialectOptions || !this.options.dialectOptions.prependSearchPath || options.supportsSearchPath === false) {
-      delete options.searchPath;
-    } else if (!options.searchPath) {
-      options.searchPath = "DEFAULT";
-    }
-    if (typeof sql === "object") {
-      if (sql.values !== void 0) {
-        if (options.replacements !== void 0) {
-          throw new Error("Both `sql.values` and `options.replacements` cannot be set at the same time");
-        }
-        options.replacements = sql.values;
-      }
-      if (sql.bind !== void 0) {
-        if (options.bind !== void 0) {
-          throw new Error("Both `sql.bind` and `options.bind` cannot be set at the same time");
-        }
-        options.bind = sql.bind;
-      }
-      if (sql.query !== void 0) {
-        sql = sql.query;
-      }
-    }
-    sql = sql.trim();
-    if (options.replacements && options.bind) {
-      throw new Error("Both `replacements` and `bind` cannot be set at the same time");
-    }
-    if (options.replacements) {
-      sql = injectReplacements(sql, this.dialect, options.replacements);
-    }
-    let bindParameters;
-    if (options.bind) {
-      [sql, bindParameters] = this.dialect.Query.formatBindParameters(sql, options.bind, this.options.dialect);
-    }
-    const checkTransaction = () => {
-      if (options.transaction && options.transaction.finished && !options.completesTransaction) {
-        const error = new Error(`${options.transaction.finished} has been called on this transaction(${options.transaction.id}), you can no longer use it. (The rejected query is attached as the 'sql' property of this error)`);
-        error.sql = sql;
-        throw error;
-      }
-    };
-    const retryOptions = __spreadValues(__spreadValues({}, this.options.retry), options.retry);
-    return retry(async () => {
-      if (options.transaction === void 0 && Sequelize._cls) {
-        options.transaction = Sequelize._cls.get("transaction");
-      }
-      checkTransaction();
-      const connection = await (options.transaction ? options.transaction.connection : this.connectionManager.getConnection(options));
-      if (this.options.dialect === "db2" && options.alter) {
-        if (options.alter.drop === false) {
-          connection.dropTable = false;
-        }
-      }
-      const query = new this.dialect.Query(connection, this, options);
-      try {
-        await this.runHooks("beforeQuery", options, query);
-        checkTransaction();
-        return await query.run(sql, bindParameters);
-      } finally {
-        await this.runHooks("afterQuery", options, query);
-        if (!options.transaction) {
-          this.connectionManager.releaseConnection(connection);
-        }
-      }
-    }, retryOptions);
-  }
-  async set(variables, options) {
-    options = __spreadValues(__spreadValues({}, this.options.set), typeof options === "object" && options);
-    if (!["mysql", "mariadb"].includes(this.options.dialect)) {
-      throw new Error("sequelize.set is only supported for mysql or mariadb");
-    }
-    if (!options.transaction || !(options.transaction instanceof Transaction)) {
-      throw new TypeError("options.transaction is required");
-    }
-    options.raw = true;
-    options.plain = true;
-    options.type = "SET";
-    const query = `SET ${_.map(variables, (v, k) => `@${k} := ${typeof v === "string" ? `"${v}"` : v}`).join(", ")}`;
-    return await this.query(query, options);
-  }
-  escape(value) {
-    return this.dialect.queryGenerator.escape(value);
-  }
-  async createSchema(schema, options) {
-    return await this.getQueryInterface().createSchema(schema, options);
-  }
-  async showAllSchemas(options) {
-    return await this.getQueryInterface().showAllSchemas(options);
-  }
-  async dropSchema(schema, options) {
-    return await this.getQueryInterface().dropSchema(schema, options);
-  }
-  async dropAllSchemas(options) {
-    return await this.getQueryInterface().dropAllSchemas(options);
-  }
-  async sync(options) {
-    options = __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, this.options), this.options.sync), options), {
-      hooks: options ? options.hooks !== false : true
-    });
-    if (options.match) {
-      if (!options.match.test(this.config.database)) {
-        throw new Error(`Database "${this.config.database}" does not match sync match parameter "${options.match}"`);
-      }
-    }
-    if (options.hooks) {
-      await this.runHooks("beforeBulkSync", options);
-    }
-    if (options.force) {
-      await this.drop(options);
-    }
-    if (this.modelManager.models.length === 0) {
-      await this.authenticate(options);
-    } else {
-      const models = this.modelManager.getModelsTopoSortedByForeignKey();
-      if (models == null) {
-        return this._syncModelsWithCyclicReferences(options);
-      }
-      models.reverse();
-      for (const model of models) {
-        await model.sync(options);
-      }
-    }
-    if (options.hooks) {
-      await this.runHooks("afterBulkSync", options);
-    }
-    return this;
-  }
-  async _syncModelsWithCyclicReferences(options) {
-    if (this.dialect.name === "sqlite") {
-      await withSqliteForeignKeysOff(this, options, async () => {
-        for (const model of this.modelManager.models) {
-          await model.sync(options);
-        }
-      });
-      return;
-    }
-    for (const model of this.modelManager.models) {
-      await model.sync(__spreadProps(__spreadValues({}, options), { withoutForeignKeyConstraints: true }));
-    }
-    for (const model of this.modelManager.models) {
-      await model.sync(__spreadProps(__spreadValues({}, options), { force: false, alter: true }));
-    }
-  }
-  async truncate(options) {
-    const sortedModels = this.modelManager.getModelsTopoSortedByForeignKey();
-    const models = sortedModels || this.modelManager.models;
-    const hasCyclicDependencies = sortedModels == null;
-    if (hasCyclicDependencies && (!options || !options.cascade)) {
-      throw new Error('Sequelize#truncate: Some of your models have cyclic references (foreign keys). You need to use the "cascade" option to be able to delete rows from models that have cyclic references.');
-    }
-    if (hasCyclicDependencies && this.dialect.name === "sqlite") {
-      return withSqliteForeignKeysOff(this, options, async () => {
-        await Promise.all(models.map((model) => model.truncate(options)));
-      });
-    }
-    if (options && options.cascade) {
-      for (const model of models)
-        await model.truncate(options);
-    } else {
-      await Promise.all(models.map((model) => model.truncate(options)));
-    }
-  }
-  async drop(options) {
-    if (options && options.cascade) {
-      for (const model of this.modelManager.models) {
-        await model.drop(options);
-      }
-    }
-    const sortedModels = this.modelManager.getModelsTopoSortedByForeignKey();
-    if (sortedModels) {
-      for (const model of sortedModels) {
-        await model.drop(options);
-      }
-    }
-    if (this.dialect.name === "sqlite") {
-      await withSqliteForeignKeysOff(this, options, async () => {
-        for (const model of this.modelManager.models) {
-          await model.drop(options);
-        }
-      });
-      return;
-    }
-    for (const model of this.modelManager.models) {
-      const tableName = model.getTableName();
-      const foreignKeys = await this.queryInterface.getForeignKeyReferencesForTable(tableName, options);
-      await Promise.all(foreignKeys.map((foreignKey) => {
-        return this.queryInterface.removeConstraint(tableName, foreignKey.constraintName, options);
-      }));
-    }
-    for (const model of this.modelManager.models) {
-      await model.drop(options);
-    }
-  }
-  async authenticate(options) {
-    options = __spreadValues({
-      raw: true,
-      plain: true,
-      type: QueryTypes.SELECT
-    }, options);
-    await this.query(this.dialect.queryGenerator.authTestQuery(), options);
-    return;
-  }
-  async databaseVersion(options) {
-    return await this.getQueryInterface().databaseVersion(options);
-  }
-  random() {
-    if (["postgres", "sqlite", "snowflake"].includes(this.getDialect())) {
-      return this.fn("RANDOM");
-    }
-    return this.fn("RAND");
-  }
-  static fn(fn, ...args) {
-    return new Utils.Fn(fn, args);
-  }
-  static col(col) {
-    return new Utils.Col(col);
-  }
-  static cast(val, type) {
-    return new Utils.Cast(val, type);
-  }
-  static literal(val) {
-    return new Utils.Literal(val);
-  }
-  static and(...args) {
-    return { [Op.and]: args };
-  }
-  static or(...args) {
-    return { [Op.or]: args };
-  }
-  static json(conditionsOrPath, value) {
-    return new Utils.Json(conditionsOrPath, value);
-  }
-  static where(attr, comparator, logic) {
-    return new Utils.Where(attr, comparator, logic);
-  }
-  async transaction(options, autoCallback) {
-    if (typeof options === "function") {
-      autoCallback = options;
-      options = void 0;
-    }
-    const transaction = new Transaction(this, options);
-    if (!autoCallback) {
-      await transaction.prepareEnvironment(false);
-      return transaction;
-    }
-    return Sequelize._clsRun(async () => {
-      await transaction.prepareEnvironment(true);
-      let result;
-      try {
-        result = await autoCallback(transaction);
-      } catch (err) {
-        try {
-          await transaction.rollback();
-        } catch (ignore) {
-        }
-        throw err;
-      }
-      await transaction.commit();
-      return result;
-    });
-  }
-  static useCLS(ns) {
-    if (!ns || typeof ns !== "object" || typeof ns.bind !== "function" || typeof ns.run !== "function")
-      throw new Error("Must provide CLS namespace");
-    Sequelize._cls = ns;
-    return this;
-  }
-  static _clsRun(fn) {
-    const ns = Sequelize._cls;
-    if (!ns)
-      return fn();
-    let res;
-    ns.run((context) => res = fn(context));
-    return res;
-  }
-  log(...args) {
-    let options;
-    const last = _.last(args);
-    if (last && _.isPlainObject(last) && Object.prototype.hasOwnProperty.call(last, "logging")) {
-      options = last;
-      if (options.logging === console.log) {
-        args.splice(args.length - 1, 1);
-      }
-    } else {
-      options = this.options;
-    }
-    if (options.logging) {
-      if (options.logging === true) {
-        deprecations.noTrueLogging();
-        options.logging = console.log;
-      }
-      if ((this.options.benchmark || options.benchmark) && options.logging === console.log) {
-        args = [`${args[0]} Elapsed time: ${args[1]}ms`];
-      }
-      options.logging(...args);
-    }
-  }
-  close() {
-    return this.connectionManager.close();
-  }
-  normalizeDataType(Type) {
-    let type = typeof Type === "function" ? new Type() : Type;
-    const dialectTypes = this.dialect.DataTypes || {};
-    if (dialectTypes[type.key]) {
-      type = dialectTypes[type.key].extend(type);
-    }
-    if (type instanceof DataTypes.ARRAY) {
-      if (!type.type) {
-        throw new Error("ARRAY is missing type definition for its values.");
-      }
-      if (dialectTypes[type.type.key]) {
-        type.type = dialectTypes[type.type.key].extend(type.type);
-      }
-    }
-    return type;
-  }
-  normalizeAttribute(attribute) {
-    if (!_.isPlainObject(attribute)) {
-      attribute = { type: attribute };
-    }
-    if (!attribute.type)
-      return attribute;
-    attribute.type = this.normalizeDataType(attribute.type);
-    if (Object.prototype.hasOwnProperty.call(attribute, "defaultValue")) {
-      if (typeof attribute.defaultValue === "function" && [DataTypes.NOW, DataTypes.UUIDV1, DataTypes.UUIDV4].includes(attribute.defaultValue)) {
-        attribute.defaultValue = new attribute.defaultValue();
-      }
-    }
-    if (attribute.type instanceof DataTypes.ENUM) {
-      if (attribute.values) {
-        attribute.type.values = attribute.type.options.values = attribute.values;
-      } else {
-        attribute.values = attribute.type.values;
-      }
-      if (!attribute.values.length) {
-        throw new Error("Values for ENUM have not been defined.");
-      }
-    }
-    return attribute;
-  }
-}
-Sequelize.prototype.fn = Sequelize.fn;
-Sequelize.prototype.col = Sequelize.col;
-Sequelize.prototype.cast = Sequelize.cast;
-Sequelize.prototype.literal = Sequelize.literal;
-Sequelize.prototype.and = Sequelize.and;
-Sequelize.prototype.or = Sequelize.or;
-Sequelize.prototype.json = Sequelize.json;
-Sequelize.prototype.where = Sequelize.where;
-Sequelize.prototype.validate = Sequelize.prototype.authenticate;
-Object.defineProperty(Sequelize, "version", {
-  enumerable: true,
-  get() {
-    return require("../package.json").version;
-  }
-});
-Sequelize.options = { hooks: {} };
-Sequelize.Utils = Utils;
-Sequelize.Op = Op;
-Sequelize.TableHints = TableHints;
-Sequelize.IndexHints = IndexHints;
-Sequelize.Transaction = Transaction;
-Sequelize.prototype.Sequelize = Sequelize;
-Sequelize.prototype.QueryTypes = Sequelize.QueryTypes = QueryTypes;
-Sequelize.prototype.Validator = Sequelize.Validator = Validator;
-Sequelize.Model = Model;
-Sequelize.QueryInterface = QueryInterface;
-Sequelize.BelongsTo = BelongsTo;
-Sequelize.HasOne = HasOne;
-Sequelize.HasMany = HasMany;
-Sequelize.BelongsToMany = BelongsToMany;
-Sequelize.DataTypes = DataTypes;
-for (const dataType in DataTypes) {
-  Sequelize[dataType] = DataTypes[dataType];
-}
-Sequelize.Deferrable = Deferrable;
-Sequelize.prototype.Association = Sequelize.Association = Association;
-Sequelize.useInflection = Utils.useInflection;
-Hooks.applyTo(Sequelize);
-Hooks.applyTo(Sequelize.prototype);
-Sequelize.Error = sequelizeErrors.BaseError;
-for (const error of Object.keys(sequelizeErrors)) {
-  Sequelize[error] = sequelizeErrors[error];
-}
-module.exports = Sequelize;
-module.exports.Sequelize = Sequelize;
-module.exports.default = Sequelize;
-//# sourceMappingURL=sequelize.js.map
Index: ckend/node_modules/sequelize/lib/sequelize.js.map
===================================================================
--- backend/node_modules/sequelize/lib/sequelize.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/sequelize.js"],
-  "sourcesContent": ["'use strict';\n\nconst url = require('url');\nconst path = require('path');\nconst pgConnectionString = require('pg-connection-string');\nconst retry = require('retry-as-promised').default;\nconst _ = require('lodash');\n\nconst Utils = require('./utils');\nconst Model = require('./model');\nconst DataTypes = require('./data-types');\nconst Deferrable = require('./deferrable');\nconst ModelManager = require('./model-manager');\nconst Transaction = require('./transaction');\nconst QueryTypes = require('./query-types');\nconst TableHints = require('./table-hints');\nconst IndexHints = require('./index-hints');\nconst sequelizeErrors = require('./errors');\nconst Hooks = require('./hooks');\nconst Association = require('./associations/index');\nconst Validator = require('./utils/validator-extras').validator;\nconst Op = require('./operators');\nconst deprecations = require('./utils/deprecations');\nconst { QueryInterface } = require('./dialects/abstract/query-interface');\nconst { BelongsTo } = require('./associations/belongs-to');\nconst HasOne = require('./associations/has-one');\nconst { BelongsToMany } = require('./associations/belongs-to-many');\nconst { HasMany } = require('./associations/has-many');\nconst { withSqliteForeignKeysOff } = require('./dialects/sqlite/sqlite-utils');\nconst { injectReplacements } = require('./utils/sql');\n\n/**\n * This is the main class, the entry point to sequelize.\n */\nclass Sequelize {\n  /**\n   * Instantiate sequelize with name of database, username and password.\n   *\n   * @example\n   * // without password / with blank password\n   * const sequelize = new Sequelize('database', 'username', null, {\n   *   dialect: 'mysql'\n   * })\n   *\n   * // with password and options\n   * const sequelize = new Sequelize('my_database', 'john', 'doe', {\n   *   dialect: 'postgres'\n   * })\n   *\n   * // with database, username, and password in the options object\n   * const sequelize = new Sequelize({ database, username, password, dialect: 'mssql' });\n   *\n   * // with uri\n   * const sequelize = new Sequelize('mysql://localhost:3306/database', {})\n   *\n   * // option examples\n   * const sequelize = new Sequelize('database', 'username', 'password', {\n   *   // the sql dialect of the database\n   *   // currently supported: 'mysql', 'sqlite', 'postgres', 'mssql'\n   *   dialect: 'mysql',\n   *\n   *   // custom host; default: localhost\n   *   host: 'my.server.tld',\n   *   // for postgres, you can also specify an absolute path to a directory\n   *   // containing a UNIX socket to connect over\n   *   // host: '/sockets/psql_sockets'.\n   *\n   *   // custom port; default: dialect default\n   *   port: 12345,\n   *\n   *   // custom protocol; default: 'tcp'\n   *   // postgres only, useful for Heroku\n   *   protocol: null,\n   *\n   *   // disable logging or provide a custom logging function; default: console.log\n   *   logging: false,\n   *\n   *   // you can also pass any dialect options to the underlying dialect library\n   *   // - default is empty\n   *   // - currently supported: 'mysql', 'postgres', 'mssql'\n   *   dialectOptions: {\n   *     socketPath: '/Applications/MAMP/tmp/mysql/mysql.sock',\n   *     supportBigNumbers: true,\n   *     bigNumberStrings: true\n   *   },\n   *\n   *   // the storage engine for sqlite\n   *   // - default ':memory:'\n   *   storage: 'path/to/database.sqlite',\n   *\n   *   // disable inserting undefined values as NULL\n   *   // - default: false\n   *   omitNull: true,\n   *\n   *   // a flag for using a native library or not.\n   *   // in the case of 'pg' -- set this to true will allow SSL support\n   *   // - default: false\n   *   native: true,\n   *\n   *   // A flag that defines if connection should be over ssl or not\n   *   // - default: undefined\n   *   ssl: true,\n   *\n   *   // Specify options, which are used when sequelize.define is called.\n   *   // The following example:\n   *   //   define: { timestamps: false }\n   *   // is basically the same as:\n   *   //   Model.init(attributes, { timestamps: false });\n   *   //   sequelize.define(name, attributes, { timestamps: false });\n   *   // so defining the timestamps for each model will be not necessary\n   *   define: {\n   *     underscored: false,\n   *     freezeTableName: false,\n   *     charset: 'utf8',\n   *     dialectOptions: {\n   *       collate: 'utf8_general_ci'\n   *     },\n   *     timestamps: true\n   *   },\n   *\n   *   // similar for sync: you can define this to always force sync for models\n   *   sync: { force: true },\n   *\n   *   // pool configuration used to pool database connections\n   *   pool: {\n   *     max: 5,\n   *     idle: 30000,\n   *     acquire: 60000,\n   *   },\n   *\n   *   // isolation level of each transaction\n   *   // defaults to dialect default\n   *   isolationLevel: Transaction.ISOLATION_LEVELS.REPEATABLE_READ\n   * })\n   *\n   * @param {string}   [database] The name of the database\n   * @param {string}   [username=null] The username which is used to authenticate against the database.\n   * @param {string}   [password=null] The password which is used to authenticate against the database. Supports SQLCipher encryption for SQLite.\n   * @param {object}   [options={}] An object with options.\n   * @param {string}   [options.host='localhost'] The host of the relational database.\n   * @param {number}   [options.port] The port of the relational database.\n   * @param {string}   [options.username=null] The username which is used to authenticate against the database.\n   * @param {string}   [options.password=null] The password which is used to authenticate against the database.\n   * @param {string}   [options.database=null] The name of the database.\n   * @param {string}   [options.dialect] The dialect of the database you are connecting to. One of mysql, postgres, sqlite, db2, mariadb and mssql.\n   * @param {string}   [options.dialectModule=null] If specified, use this dialect library. For example, if you want to use pg.js instead of pg when connecting to a pg database, you should specify 'require(\"pg.js\")' here\n   * @param {string}   [options.dialectModulePath=null] If specified, load the dialect library from this path. For example, if you want to use pg.js instead of pg when connecting to a pg database, you should specify '/path/to/pg.js' here\n   * @param {object}   [options.dialectOptions] An object of additional options, which are passed directly to the connection library\n   * @param {string}   [options.storage] Only used by sqlite. Defaults to ':memory:'\n   * @param {string}   [options.protocol='tcp'] The protocol of the relational database.\n   * @param {object}   [options.define={}] Default options for model definitions. See {@link Model.init}.\n   * @param {object}   [options.query={}] Default options for sequelize.query\n   * @param {string}   [options.schema=null] A schema to use\n   * @param {object}   [options.set={}] Default options for sequelize.set\n   * @param {object}   [options.sync={}] Default options for sequelize.sync\n   * @param {string}   [options.timezone='+00:00'] The timezone used when converting a date from the database into a JavaScript date. The timezone is also used to SET TIMEZONE when connecting to the server, to ensure that the result of NOW, CURRENT_TIMESTAMP and other time related functions have in the right timezone. For best cross platform performance use the format +/-HH:MM. Will also accept string versions of timezones used by moment.js (e.g. 'America/Los_Angeles'); this is useful to capture daylight savings time changes.\n   * @param {string|boolean} [options.clientMinMessages='warning'] (Deprecated) The PostgreSQL `client_min_messages` session parameter. Set to `false` to not override the database's default.\n   * @param {boolean}  [options.standardConformingStrings=true] The PostgreSQL `standard_conforming_strings` session parameter. Set to `false` to not set the option. WARNING: Setting this to false may expose vulnerabilities and is not recommended!\n   * @param {Function} [options.logging=console.log] A function that gets executed every time Sequelize would log something. Function may receive multiple parameters but only first one is printed by `console.log`. To print all values use `(...msg) => console.log(msg)`\n   * @param {boolean}  [options.benchmark=false] Pass query execution time in milliseconds as second argument to logging function (options.logging).\n   * @param {boolean}  [options.omitNull=false] A flag that defines if null values should be passed as values to CREATE/UPDATE SQL queries or not.\n   * @param {boolean}  [options.native=false] A flag that defines if native library shall be used or not. Currently only has an effect for postgres\n   * @param {boolean}  [options.ssl=undefined] A flag that defines if connection should be over ssl or not\n   * @param {boolean}  [options.replication=false] Use read / write replication. To enable replication, pass an object, with two properties, read and write. Write should be an object (a single server for handling writes), and read an array of object (several servers to handle reads). Each read/write server can have the following properties: `host`, `port`, `username`, `password`, `database`\n   * @param {object}   [options.pool] sequelize connection pool configuration\n   * @param {number}   [options.pool.max=5] Maximum number of connection in pool\n   * @param {number}   [options.pool.min=0] Minimum number of connection in pool\n   * @param {number}   [options.pool.idle=10000] The maximum time, in milliseconds, that a connection can be idle before being released.\n   * @param {number}   [options.pool.acquire=60000] The maximum time, in milliseconds, that pool will try to get connection before throwing error\n   * @param {number}   [options.pool.evict=1000] The time interval, in milliseconds, after which sequelize-pool will remove idle connections.\n   * @param {Function} [options.pool.validate] A function that validates a connection. Called with client. The default function checks that client is an object, and that its state is not disconnected\n   * @param {number}   [options.pool.maxUses=Infinity] The number of times a connection can be used before discarding it for a replacement, [`used for eventual cluster rebalancing`](https://github.com/sequelize/sequelize-pool).\n   * @param {boolean}  [options.quoteIdentifiers=true] Set to `false` to make table names and attributes case-insensitive on Postgres and skip double quoting of them.  WARNING: Setting this to false may expose vulnerabilities and is not recommended!\n   * @param {string}   [options.transactionType='DEFERRED'] Set the default transaction type. See `Sequelize.Transaction.TYPES` for possible options. Sqlite only.\n   * @param {string}   [options.isolationLevel] Set the default transaction isolation level. See `Sequelize.Transaction.ISOLATION_LEVELS` for possible options.\n   * @param {object}   [options.retry] Set of flags that control when a query is automatically retried. Accepts all options for [`retry-as-promised`](https://github.com/mickhansen/retry-as-promised).\n   * @param {Array}    [options.retry.match] Only retry a query if the error matches one of these strings.\n   * @param {number}   [options.retry.max] How many times a failing query is automatically retried.  Set to 0 to disable retrying on SQL_BUSY error.\n   * @param {boolean}  [options.typeValidation=false] Run built-in type validators on insert and update, and select with where clause, e.g. validate that arguments passed to integer fields are integer-like.\n   * @param {object}   [options.operatorsAliases] String based operator alias. Pass object to limit set of aliased operators.\n   * @param {object}   [options.hooks] An object of global hook functions that are called before and after certain lifecycle events. Global hooks will run after any model-specific hooks defined for the same event (See `Sequelize.Model.init()` for a list).  Additionally, `beforeConnect()`, `afterConnect()`, `beforeDisconnect()`, and `afterDisconnect()` hooks may be defined here.\n   * @param {boolean}  [options.minifyAliases=false] A flag that defines if aliases should be minified (mostly useful to avoid Postgres alias character limit of 64)\n   * @param {boolean}  [options.logQueryParameters=false] A flag that defines if show bind parameters in log.\n   */\n  constructor(database, username, password, options) {\n    let config;\n\n    if (arguments.length === 1 && typeof database === 'object') {\n      // new Sequelize({ ... options })\n      options = database;\n      config = _.pick(options, 'host', 'port', 'database', 'username', 'password');\n    } else if (arguments.length === 1 && typeof database === 'string' || arguments.length === 2 && typeof username === 'object') {\n      // new Sequelize(URI, { ... options })\n\n      config = {};\n      options = username || {};\n\n      const urlParts = url.parse(arguments[0], true);\n\n      options.dialect = urlParts.protocol.replace(/:$/, '');\n      options.host = urlParts.hostname;\n\n      if (options.dialect === 'sqlite' && urlParts.pathname && !urlParts.pathname.startsWith('/:memory')) {\n        const storagePath = path.join(options.host, urlParts.pathname);\n        options.storage = path.resolve(options.storage || storagePath);\n      }\n\n      if (urlParts.pathname) {\n        config.database = urlParts.pathname.replace(/^\\//, '');\n      }\n\n      if (urlParts.port) {\n        options.port = urlParts.port;\n      }\n\n      if (urlParts.auth) {\n        const authParts = urlParts.auth.split(':');\n\n        config.username = authParts[0];\n\n        if (authParts.length > 1)\n          config.password = authParts.slice(1).join(':');\n      }\n\n      if (urlParts.query) {\n        // Allow host query argument to override the url host.\n        // Enables specifying domain socket hosts which cannot be specified via the typical\n        // host part of a url.\n        if (urlParts.query.host) {\n          options.host = urlParts.query.host;\n        }\n\n        if (options.dialectOptions) {\n          Object.assign(options.dialectOptions, urlParts.query);\n        } else {\n          options.dialectOptions = urlParts.query;\n          if (urlParts.query.options) {\n            try {\n              const o = JSON.parse(urlParts.query.options);\n              options.dialectOptions.options = o;\n            } catch (e) {\n              // Nothing to do, string is not a valid JSON\n              // an thus does not need any further processing\n            }\n          }\n        }\n      }\n\n      // For postgres, we can use this helper to load certs directly from the\n      // connection string.\n      if (['postgres', 'postgresql'].includes(options.dialect)) {\n        Object.assign(options.dialectOptions, pgConnectionString.parse(arguments[0]));\n      }\n    } else {\n      // new Sequelize(database, username, password, { ... options })\n      options = options || {};\n      config = { database, username, password };\n    }\n\n    Sequelize.runHooks('beforeInit', config, options);\n\n    this.options = {\n      dialect: null,\n      dialectModule: null,\n      dialectModulePath: null,\n      host: 'localhost',\n      protocol: 'tcp',\n      define: {},\n      query: {},\n      sync: {},\n      timezone: '+00:00',\n      standardConformingStrings: true,\n      // eslint-disable-next-line no-console\n      logging: console.log,\n      omitNull: false,\n      native: false,\n      replication: false,\n      ssl: undefined,\n      pool: {},\n      quoteIdentifiers: true,\n      hooks: {},\n      retry: {\n        max: 5,\n        match: [\n          'SQLITE_BUSY: database is locked'\n        ]\n      },\n      transactionType: Transaction.TYPES.DEFERRED,\n      isolationLevel: null,\n      databaseVersion: 0,\n      typeValidation: false,\n      benchmark: false,\n      minifyAliases: false,\n      logQueryParameters: false,\n      attributeBehavior: 'throw',\n      ...options\n    };\n\n    if (!this.options.dialect) {\n      throw new Error('Dialect needs to be explicitly supplied as of v4.0.0');\n    }\n\n    if (this.options.dialect === 'postgresql') {\n      this.options.dialect = 'postgres';\n    }\n\n    if (this.options.dialect === 'sqlite' && this.options.timezone !== '+00:00') {\n      throw new Error('Setting a custom timezone is not supported by SQLite, dates are always returned as UTC. Please remove the custom timezone parameter.');\n    }\n\n    if (this.options.logging === true) {\n      deprecations.noTrueLogging();\n      // eslint-disable-next-line no-console\n      this.options.logging = console.log;\n    }\n\n    this._setupHooks(options.hooks);\n\n    this.config = {\n      database: config.database || this.options.database,\n      username: config.username || this.options.username,\n      password: config.password || this.options.password || null,\n      host: config.host || this.options.host,\n      port: config.port || this.options.port,\n      pool: this.options.pool,\n      protocol: this.options.protocol,\n      native: this.options.native,\n      ssl: this.options.ssl,\n      replication: this.options.replication,\n      dialectModule: this.options.dialectModule,\n      dialectModulePath: this.options.dialectModulePath,\n      keepDefaultTimezone: this.options.keepDefaultTimezone,\n      dialectOptions: this.options.dialectOptions\n    };\n\n    let Dialect;\n    // Requiring the dialect in a switch-case to keep the\n    // require calls static. (Browserify fix)\n    switch (this.getDialect()) {\n      case 'mariadb':\n        Dialect = require('./dialects/mariadb');\n        break;\n      case 'mssql':\n        Dialect = require('./dialects/mssql');\n        break;\n      case 'mysql':\n        Dialect = require('./dialects/mysql');\n        break;\n      case 'oracle':\n        Dialect = require('./dialects/oracle');\n        break;\n      case 'postgres':\n        Dialect = require('./dialects/postgres');\n        break;\n      case 'sqlite':\n        Dialect = require('./dialects/sqlite');\n        break;\n      case 'db2':\n        Dialect = require('./dialects/db2');\n        break;\n      case 'snowflake':\n        Dialect = require('./dialects/snowflake');\n        break;\n      default:\n        throw new Error(`The dialect ${this.getDialect()} is not supported. Supported dialects: mssql, mariadb, mysql, oracle, postgres, db2 and sqlite.`);\n    }\n\n    this.dialect = new Dialect(this);\n    this.dialect.queryGenerator.typeValidation = options.typeValidation;\n\n    if (_.isPlainObject(this.options.operatorsAliases)) {\n      deprecations.noStringOperators();\n      this.dialect.queryGenerator.setOperatorsAliases(this.options.operatorsAliases);\n    } else if (typeof this.options.operatorsAliases === 'boolean') {\n      deprecations.noBoolOperatorAliases();\n    }\n\n    this.queryInterface = this.dialect.queryInterface;\n\n    /**\n     * Models are stored here under the name given to `sequelize.define`\n     */\n    this.models = {};\n    this.modelManager = new ModelManager(this);\n    this.connectionManager = this.dialect.connectionManager;\n\n    Sequelize.runHooks('afterInit', this);\n  }\n\n  /**\n   * Refresh data types and parsers.\n   *\n   * @private\n   */\n  refreshTypes() {\n    this.connectionManager.refreshTypeParser(DataTypes);\n  }\n\n  /**\n   * Returns the specified dialect.\n   *\n   * @returns {string} The specified dialect.\n   */\n  getDialect() {\n    return this.options.dialect;\n  }\n\n  /**\n   * Returns the database name.\n   *\n   * @returns {string} The database name.\n   */\n  getDatabaseName() {\n    return this.config.database;\n  }\n\n  /**\n   * Returns an instance of QueryInterface.\n   *\n   * @returns {QueryInterface} An instance (singleton) of QueryInterface.\n   */\n  getQueryInterface() {\n    return this.queryInterface;\n  }\n\n  /**\n   * Define a new model, representing a table in the database.\n   *\n   * The table columns are defined by the object that is given as the second argument. Each key of the object represents a column\n   *\n   * @param {string} modelName The name of the model. The model will be stored in `sequelize.models` under this name\n   * @param {object} attributes An object, where each attribute is a column of the table. See {@link Model.init}\n   * @param {object} [options] These options are merged with the default define options provided to the Sequelize constructor and passed to Model.init()\n   *\n   * @see\n   * {@link Model.init} for a more comprehensive specification of the `options` and `attributes` objects.\n   * @see\n   * <a href=\"/master/manual/model-basics.html\">Model Basics</a> guide\n   *\n   * @returns {Model} Newly defined model\n   *\n   * @example\n   * sequelize.define('modelName', {\n   *   columnA: {\n   *       type: Sequelize.BOOLEAN,\n   *       validate: {\n   *         is: [\"[a-z]\",'i'],        // will only allow letters\n   *         max: 23,                  // only allow values <= 23\n   *         isIn: {\n   *           args: [['en', 'zh']],\n   *           msg: \"Must be English or Chinese\"\n   *         }\n   *       },\n   *       field: 'column_a'\n   *   },\n   *   columnB: Sequelize.STRING,\n   *   columnC: 'MY VERY OWN COLUMN TYPE'\n   * });\n   *\n   * sequelize.models.modelName // The model will now be available in models under the name given to define\n   */\n  define(modelName, attributes, options = {}) {\n    options.modelName = modelName;\n    options.sequelize = this;\n\n    const model = class extends Model {};\n\n    model.init(attributes, options);\n\n    return model;\n  }\n\n  /**\n   * Fetch a Model which is already defined\n   *\n   * @param {string} modelName The name of a model defined with Sequelize.define\n   *\n   * @throws Will throw an error if the model is not defined (that is, if sequelize#isDefined returns false)\n   * @returns {Model} Specified model\n   */\n  model(modelName) {\n    if (!this.isDefined(modelName)) {\n      throw new Error(`${modelName} has not been defined`);\n    }\n\n    return this.modelManager.getModel(modelName);\n  }\n\n  /**\n   * Checks whether a model with the given name is defined\n   *\n   * @param {string} modelName The name of a model defined with Sequelize.define\n   *\n   * @returns {boolean} Returns true if model is already defined, otherwise false\n   */\n  isDefined(modelName) {\n    return !!this.modelManager.models.find(model => model.name === modelName);\n  }\n\n  /**\n   * Execute a query on the DB, optionally bypassing all the Sequelize goodness.\n   *\n   * By default, the function will return two arguments: an array of results, and a metadata object, containing number of affected rows etc.\n   *\n   * If you are running a type of query where you don't need the metadata, for example a `SELECT` query, you can pass in a query type to make sequelize format the results:\n   *\n   * ```js\n   * const [results, metadata] = await sequelize.query('SELECT...'); // Raw query - use array destructuring\n   *\n   * const results = await sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }); // SELECT query - no destructuring\n   * ```\n   *\n   * @param {string}          sql\n   * @param {object}          [options={}] Query options.\n   * @param {boolean}         [options.raw] If true, sequelize will not try to format the results of the query, or build an instance of a model from the result\n   * @param {Transaction}     [options.transaction=null] The transaction that the query should be executed under\n   * @param {QueryTypes}      [options.type='RAW'] The type of query you are executing. The query type affects how results are formatted before they are passed back. The type is a string, but `Sequelize.QueryTypes` is provided as convenience shortcuts.\n   * @param {boolean}         [options.nest=false] If true, transforms objects with `.` separated property names into nested objects using [dottie.js](https://github.com/mickhansen/dottie.js). For example { 'user.username': 'john' } becomes { user: { username: 'john' }}. When `nest` is true, the query type is assumed to be `'SELECT'`, unless otherwise specified\n   * @param {boolean}         [options.plain=false] Sets the query type to `SELECT` and return a single row\n   * @param {object|Array}    [options.replacements] Either an object of named parameter replacements in the format `:param` or an array of unnamed replacements to replace `?` in your SQL.\n   * @param {object|Array}    [options.bind] Either an object of named bind parameter in the format `_param` or an array of unnamed bind parameter to replace `$1, $2, ...` in your SQL.\n   * @param {boolean}         [options.useMaster=false] Force the query to use the write pool, regardless of the query type.\n   * @param {Function}        [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Model}           [options.instance] A sequelize model instance whose Model is to be used to build the query result\n   * @param {typeof Model}    [options.model] A sequelize model used to build the returned model instances\n   * @param {object}          [options.retry] Set of flags that control when a query is automatically retried. Accepts all options for [`retry-as-promised`](https://github.com/mickhansen/retry-as-promised).\n   * @param {Array}           [options.retry.match] Only retry a query if the error matches one of these strings.\n   * @param {Integer}         [options.retry.max] How many times a failing query is automatically retried.\n   * @param {string}          [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param {boolean}         [options.supportsSearchPath] If false do not prepend the query with the search_path (Postgres only)\n   * @param {boolean}         [options.mapToModel=false] Map returned fields to model's fields if `options.model` or `options.instance` is present. Mapping will occur before building the model instance.\n   * @param {object}          [options.fieldMap] Map returned fields to arbitrary names for `SELECT` query type.\n   * @param {boolean}         [options.rawErrors=false] Set to `true` to cause errors coming from the underlying connection/database library to be propagated unmodified and unformatted. Else, the default behavior (=false) is to reinterpret errors as sequelize.errors.BaseError objects.\n   *\n   * @returns {Promise}\n   *\n   * @see {@link Model.build} for more information about instance option.\n   */\n\n  async query(sql, options) {\n    options = { ...this.options.query, ...options };\n\n    if (options.instance && !options.model) {\n      options.model = options.instance.constructor;\n    }\n\n    if (!options.instance && !options.model) {\n      options.raw = true;\n    }\n\n    // map raw fields to model attributes\n    if (options.mapToModel) {\n      options.fieldMap = _.get(options, 'model.fieldAttributeMap', {});\n    }\n\n    options = _.defaults(options, {\n      // eslint-disable-next-line no-console\n      logging: Object.prototype.hasOwnProperty.call(this.options, 'logging') ? this.options.logging : console.log,\n      searchPath: Object.prototype.hasOwnProperty.call(this.options, 'searchPath') ? this.options.searchPath : 'DEFAULT'\n    });\n\n    if (!options.type) {\n      if (options.model || options.nest || options.plain) {\n        options.type = QueryTypes.SELECT;\n      } else {\n        options.type = QueryTypes.RAW;\n      }\n    }\n\n    //if dialect doesn't support search_path or dialect option\n    //to prepend searchPath is not true delete the searchPath option\n    if (\n      !this.dialect.supports.searchPath ||\n      !this.options.dialectOptions ||\n      !this.options.dialectOptions.prependSearchPath ||\n      options.supportsSearchPath === false\n    ) {\n      delete options.searchPath;\n    } else if (!options.searchPath) {\n      //if user wants to always prepend searchPath (dialectOptions.preprendSearchPath = true)\n      //then set to DEFAULT if none is provided\n      options.searchPath = 'DEFAULT';\n    }\n\n    if (typeof sql === 'object') {\n      if (sql.values !== undefined) {\n        if (options.replacements !== undefined) {\n          throw new Error('Both `sql.values` and `options.replacements` cannot be set at the same time');\n        }\n        options.replacements = sql.values;\n      }\n\n      if (sql.bind !== undefined) {\n        if (options.bind !== undefined) {\n          throw new Error('Both `sql.bind` and `options.bind` cannot be set at the same time');\n        }\n        options.bind = sql.bind;\n      }\n\n      if (sql.query !== undefined) {\n        sql = sql.query;\n      }\n    }\n\n    sql = sql.trim();\n\n    if (options.replacements && options.bind) {\n      throw new Error('Both `replacements` and `bind` cannot be set at the same time');\n    }\n\n    if (options.replacements) {\n      sql = injectReplacements(sql, this.dialect, options.replacements);\n    }\n\n    let bindParameters;\n\n    if (options.bind) {\n      [sql, bindParameters] = this.dialect.Query.formatBindParameters(sql, options.bind, this.options.dialect);\n    }\n\n    const checkTransaction = () => {\n      if (options.transaction && options.transaction.finished && !options.completesTransaction) {\n        const error = new Error(`${options.transaction.finished} has been called on this transaction(${options.transaction.id}), you can no longer use it. (The rejected query is attached as the 'sql' property of this error)`);\n        error.sql = sql;\n        throw error;\n      }\n    };\n\n    const retryOptions = { ...this.options.retry, ...options.retry };\n\n    return retry(async () => {\n      if (options.transaction === undefined && Sequelize._cls) {\n        options.transaction = Sequelize._cls.get('transaction');\n      }\n\n      checkTransaction();\n\n      const connection = await (options.transaction ? options.transaction.connection : this.connectionManager.getConnection(options));\n\n      if (this.options.dialect === 'db2' && options.alter) {\n        if (options.alter.drop === false) {\n          connection.dropTable = false;\n        }\n      }\n      const query = new this.dialect.Query(connection, this, options);\n\n      try {\n        await this.runHooks('beforeQuery', options, query);\n        checkTransaction();\n        return await query.run(sql, bindParameters);\n      } finally {\n        await this.runHooks('afterQuery', options, query);\n        if (!options.transaction) {\n          this.connectionManager.releaseConnection(connection);\n        }\n      }\n    }, retryOptions);\n  }\n\n  /**\n   * Execute a query which would set an environment or user variable. The variables are set per connection, so this function needs a transaction.\n   * Only works for MySQL or MariaDB.\n   *\n   * @param {object}        variables Object with multiple variables.\n   * @param {object}        [options] query options.\n   * @param {Transaction}   [options.transaction] The transaction that the query should be executed under\n   *\n   * @memberof Sequelize\n   *\n   * @returns {Promise}\n   */\n  async set(variables, options) {\n\n    // Prepare options\n    options = { ...this.options.set, ...typeof options === 'object' && options };\n\n    if (!['mysql', 'mariadb'].includes(this.options.dialect)) {\n      throw new Error('sequelize.set is only supported for mysql or mariadb');\n    }\n    if (!options.transaction || !(options.transaction instanceof Transaction) ) {\n      throw new TypeError('options.transaction is required');\n    }\n\n    // Override some options, since this isn't a SELECT\n    options.raw = true;\n    options.plain = true;\n    options.type = 'SET';\n\n    // Generate SQL Query\n    const query =\n      `SET ${\n        _.map(variables, (v, k) => `@${k} := ${typeof v === 'string' ? `\"${v}\"` : v}`).join(', ')}`;\n\n    return await this.query(query, options);\n  }\n\n  /**\n   * Escape value.\n   *\n   * @param {string} value string value to escape\n   *\n   * @returns {string}\n   */\n  escape(value) {\n    return this.dialect.queryGenerator.escape(value);\n  }\n\n  /**\n   * Create a new database schema.\n   *\n   * **Note:** this is a schema in the [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),\n   * not a database table. In mysql and sqlite, this command will do nothing.\n   *\n   * @see\n   * {@link Model.schema}\n   *\n   * @param {string} schema Name of the schema\n   * @param {object} [options={}] query options\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   *\n   * @returns {Promise}\n   */\n  async createSchema(schema, options) {\n    return await this.getQueryInterface().createSchema(schema, options);\n  }\n\n  /**\n   * Show all defined schemas\n   *\n   * **Note:** this is a schema in the [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),\n   * not a database table. In mysql and sqlite, this will show all tables.\n   *\n   * @param {object} [options={}] query options\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   *\n   * @returns {Promise}\n   */\n  async showAllSchemas(options) {\n    return await this.getQueryInterface().showAllSchemas(options);\n  }\n\n  /**\n   * Drop a single schema\n   *\n   * **Note:** this is a schema in the [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),\n   * not a database table. In mysql and sqlite, this drop a table matching the schema name\n   *\n   * @param {string} schema Name of the schema\n   * @param {object} [options={}] query options\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   *\n   * @returns {Promise}\n   */\n  async dropSchema(schema, options) {\n    return await this.getQueryInterface().dropSchema(schema, options);\n  }\n\n  /**\n   * Drop all schemas.\n   *\n   * **Note:** this is a schema in the [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),\n   * not a database table. In mysql and sqlite, this is the equivalent of drop all tables.\n   *\n   * @param {object} [options={}] query options\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   *\n   * @returns {Promise}\n   */\n  async dropAllSchemas(options) {\n    return await this.getQueryInterface().dropAllSchemas(options);\n  }\n\n  /**\n   * Sync all defined models to the DB.\n   *\n   * @param {object} [options={}] sync options\n   * @param {boolean} [options.force=false] If force is true, each Model will run `DROP TABLE IF EXISTS`, before it tries to create its own table\n   * @param {RegExp} [options.match] Match a regex against the database name before syncing, a safety check for cases where force: true is used in tests but not live code\n   * @param {boolean|Function} [options.logging=console.log] A function that logs sql queries, or false for no logging\n   * @param {string} [options.schema='public'] The schema that the tables should be created in. This can be overridden for each table in sequelize.define\n   * @param {string} [options.searchPath=DEFAULT] An optional parameter to specify the schema search_path (Postgres only)\n   * @param {boolean} [options.hooks=true] If hooks is true then beforeSync, afterSync, beforeBulkSync, afterBulkSync hooks will be called\n   * @param {boolean|object} [options.alter=false] Alters tables to fit models. Provide an object for additional configuration. Not recommended for production use. If not further configured deletes data in columns that were removed or had their type changed in the model.\n   * @param {boolean} [options.alter.drop=true] Prevents any drop statements while altering a table when set to `false`\n   *\n   * @returns {Promise}\n   */\n  async sync(options) {\n    options = {\n      ...this.options,\n      ...this.options.sync,\n      ...options,\n      hooks: options ? options.hooks !== false : true\n    };\n\n    if (options.match) {\n      if (!options.match.test(this.config.database)) {\n        throw new Error(`Database \"${this.config.database}\" does not match sync match parameter \"${options.match}\"`);\n      }\n    }\n\n    if (options.hooks) {\n      await this.runHooks('beforeBulkSync', options);\n    }\n\n    if (options.force) {\n      await this.drop(options);\n    }\n\n    // no models defined, just authenticate\n    if (this.modelManager.models.length === 0) {\n      await this.authenticate(options);\n    } else {\n      const models = this.modelManager.getModelsTopoSortedByForeignKey();\n      if (models == null) {\n        return this._syncModelsWithCyclicReferences(options);\n      }\n\n      // reverse to start with the one model that does not depend on anything\n      models.reverse();\n\n      // Topologically sort by foreign key constraints to give us an appropriate\n      // creation order\n      for (const model of models) {\n        await model.sync(options);\n      }\n    }\n\n    if (options.hooks) {\n      await this.runHooks('afterBulkSync', options);\n    }\n\n    return this;\n  }\n\n  /**\n   * Used instead of sync() when two models reference each-other, so their foreign keys cannot be created immediately.\n   *\n   * @param {object} options - sync options\n   * @private\n   */\n  async _syncModelsWithCyclicReferences(options) {\n    if (this.dialect.name === 'sqlite') {\n      // Optimisation: no need to do this in two passes in SQLite because we can temporarily disable foreign keys\n      await withSqliteForeignKeysOff(this, options, async () => {\n        for (const model of this.modelManager.models) {\n          await model.sync(options);\n        }\n      });\n\n      return;\n    }\n\n    // create all tables, but don't create foreign key constraints\n    for (const model of this.modelManager.models) {\n      await model.sync({ ...options, withoutForeignKeyConstraints: true });\n    }\n\n    // add foreign key constraints\n    for (const model of this.modelManager.models) {\n      await model.sync({ ...options, force: false, alter: true });\n    }\n  }\n\n  /**\n   * Truncate all tables defined through the sequelize models.\n   * This is done by calling `Model.truncate()` on each model.\n   *\n   * @param {object} [options] The options passed to Model.destroy in addition to truncate\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   * @returns {Promise}\n   *\n   * @see\n   * {@link Model.truncate} for more information\n   */\n  async truncate(options) {\n    const sortedModels = this.modelManager.getModelsTopoSortedByForeignKey();\n    const models = sortedModels || this.modelManager.models;\n    const hasCyclicDependencies = sortedModels == null;\n\n    // we have cyclic dependencies, cascade must be enabled.\n    if (hasCyclicDependencies && (!options || !options.cascade)) {\n      throw new Error('Sequelize#truncate: Some of your models have cyclic references (foreign keys). You need to use the \"cascade\" option to be able to delete rows from models that have cyclic references.');\n    }\n\n    // TODO [>=7]: throw if options.cascade is specified but unsupported in the given dialect.\n    if (hasCyclicDependencies && this.dialect.name === 'sqlite') {\n      // Workaround: SQLite does not support options.cascade, but we can disable its foreign key constraints while we\n      // truncate all tables.\n      return withSqliteForeignKeysOff(this, options, async () => {\n        await Promise.all(models.map(model => model.truncate(options)));\n      });\n    }\n\n    if (options && options.cascade) {\n      for (const model of models) await model.truncate(options);\n    } else {\n      await Promise.all(models.map(model => model.truncate(options)));\n    }\n  }\n\n  /**\n   * Drop all tables defined through this sequelize instance.\n   * This is done by calling Model.drop on each model.\n   *\n   * @see\n   * {@link Model.drop} for options\n   *\n   * @param {object} [options] The options passed to each call to Model.drop\n   * @param {boolean|Function} [options.logging] A function that logs sql queries, or false for no logging\n   *\n   * @returns {Promise}\n   */\n  async drop(options) {\n    // if 'cascade' is specified, we don't have to worry about cyclic dependencies.\n    if (options && options.cascade) {\n      for (const model of this.modelManager.models) {\n        await model.drop(options);\n      }\n    }\n\n    const sortedModels = this.modelManager.getModelsTopoSortedByForeignKey();\n\n    // no cyclic dependency between models, we can delete them in an order that will not cause an error.\n    if (sortedModels) {\n      for (const model of sortedModels) {\n        await model.drop(options);\n      }\n    }\n\n    if (this.dialect.name === 'sqlite') {\n      // Optimisation: no need to do this in two passes in SQLite because we can temporarily disable foreign keys\n      await withSqliteForeignKeysOff(this, options, async () => {\n        for (const model of this.modelManager.models) {\n          await model.drop(options);\n        }\n      });\n\n      return;\n    }\n\n    // has cyclic dependency: we first remove each foreign key, then delete each model.\n    for (const model of this.modelManager.models) {\n      const tableName = model.getTableName();\n      const foreignKeys = await this.queryInterface.getForeignKeyReferencesForTable(tableName, options);\n\n      await Promise.all(foreignKeys.map(foreignKey => {\n        return this.queryInterface.removeConstraint(tableName, foreignKey.constraintName, options);\n      }));\n    }\n\n    for (const model of this.modelManager.models) {\n      await model.drop(options);\n    }\n  }\n\n  /**\n   * Test the connection by trying to authenticate. It runs `SELECT 1+1 AS result` query.\n   *\n   * @param {object} [options={}] query options\n   *\n   * @returns {Promise}\n   */\n  async authenticate(options) {\n    options = {\n      raw: true,\n      plain: true,\n      type: QueryTypes.SELECT,\n      ...options\n    };\n\n    await this.query(this.dialect.queryGenerator.authTestQuery(), options);\n\n    return;\n  }\n\n  async databaseVersion(options) {\n    return await this.getQueryInterface().databaseVersion(options);\n  }\n\n  /**\n   * Get the fn for random based on the dialect\n   *\n   * @returns {Sequelize.fn}\n   */\n  random() {\n    if (['postgres', 'sqlite', 'snowflake'].includes(this.getDialect())) {\n      return this.fn('RANDOM');\n    }\n    return this.fn('RAND');\n  }\n\n  /**\n   * Creates an object representing a database function. This can be used in search queries, both in where and order parts, and as default values in column definitions.\n   * If you want to refer to columns in your function, you should use `sequelize.col`, so that the columns are properly interpreted as columns and not a strings.\n   *\n   * @see\n   * {@link Model.findAll}\n   * @see\n   * {@link Sequelize.define}\n   * @see\n   * {@link Sequelize.col}\n   *\n   * @param {string} fn The function you want to call\n   * @param {any} args All further arguments will be passed as arguments to the function\n   *\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   * @returns {Sequelize.fn}\n   *\n   * @example <caption>Convert a user's username to upper case</caption>\n   * instance.update({\n   *   username: sequelize.fn('upper', sequelize.col('username'))\n   * });\n   */\n  static fn(fn, ...args) {\n    return new Utils.Fn(fn, args);\n  }\n\n  /**\n   * Creates an object which represents a column in the DB, this allows referencing another column in your query. This is often useful in conjunction with `sequelize.fn`, since raw string arguments to fn will be escaped.\n   *\n   * @see\n   * {@link Sequelize#fn}\n   *\n   * @param {string} col The name of the column\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.col}\n   */\n  static col(col) {\n    return new Utils.Col(col);\n  }\n\n  /**\n   * Creates an object representing a call to the cast function.\n   *\n   * @param {any} val The value to cast\n   * @param {string} type The type to cast it to\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.cast}\n   */\n  static cast(val, type) {\n    return new Utils.Cast(val, type);\n  }\n\n  /**\n   * Creates an object representing a literal, i.e. something that will not be escaped.\n   *\n   * @param {any} val literal value\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.literal}\n   */\n  static literal(val) {\n    return new Utils.Literal(val);\n  }\n\n  /**\n   * An AND query\n   *\n   * @see\n   * {@link Model.findAll}\n   *\n   * @param {...string|object} args Each argument will be joined by AND\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.and}\n   */\n  static and(...args) {\n    return { [Op.and]: args };\n  }\n\n  /**\n   * An OR query\n   *\n   * @see\n   * {@link Model.findAll}\n   *\n   * @param {...string|object} args Each argument will be joined by OR\n   * @since v2.0.0-dev3\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.or}\n   */\n  static or(...args) {\n    return { [Op.or]: args };\n  }\n\n  /**\n   * Creates an object representing nested where conditions for postgres/sqlite/mysql json data-type.\n   *\n   * @see\n   * {@link Model.findAll}\n   *\n   * @param {string|object} conditionsOrPath A hash containing strings/numbers or other nested hash, a string using dot notation or a string using postgres/sqlite/mysql json syntax.\n   * @param {string|number|boolean} [value] An optional value to compare against. Produces a string of the form \"<json path> = '<value>'\".\n   * @memberof Sequelize\n   *\n   * @returns {Sequelize.json}\n   */\n  static json(conditionsOrPath, value) {\n    return new Utils.Json(conditionsOrPath, value);\n  }\n\n  /**\n   * A way of specifying attr = condition.\n   *\n   * The attr can either be an object taken from `Model.rawAttributes` (for example `Model.rawAttributes.id` or `Model.rawAttributes.name`). The\n   * attribute should be defined in your model definition. The attribute can also be an object from one of the sequelize utility functions (`sequelize.fn`, `sequelize.col` etc.)\n   *\n   * For string attributes, use the regular `{ where: { attr: something }}` syntax. If you don't want your string to be escaped, use `sequelize.literal`.\n   *\n   * @see\n   * {@link Model.findAll}\n   *\n   * @param {object} attr The attribute, which can be either an attribute object from `Model.rawAttributes` or a sequelize object, for example an instance of `sequelize.fn`. For simple string attributes, use the POJO syntax\n   * @param {symbol} [comparator='Op.eq'] operator\n   * @param {string|object} logic The condition. Can be both a simply type, or a further condition (`or`, `and`, `.literal` etc.)\n   * @since v2.0.0-dev3\n   */\n  static where(attr, comparator, logic) {\n    return new Utils.Where(attr, comparator, logic);\n  }\n\n  /**\n   * Start a transaction. When using transactions, you should pass the transaction in the options argument in order for the query to happen under that transaction @see {@link Transaction}\n   *\n   * If you have [CLS](https://github.com/Jeff-Lewis/cls-hooked) enabled, the transaction will automatically be passed to any query that runs within the callback\n   *\n   * @example\n   *\n   * try {\n   *   const transaction = await sequelize.transaction();\n   *   const user = await User.findOne(..., { transaction });\n   *   await user.update(..., { transaction });\n   *   await transaction.commit();\n   * } catch {\n   *   await transaction.rollback()\n   * }\n   *\n   * @example <caption>A syntax for automatically committing or rolling back based on the promise chain resolution is also supported</caption>\n   *\n   * try {\n   *   await sequelize.transaction(transaction => { // Note that we pass a callback rather than awaiting the call with no arguments\n   *     const user = await User.findOne(..., {transaction});\n   *     await user.update(..., {transaction});\n   *   });\n   *   // Committed\n   * } catch(err) {\n   *   // Rolled back\n   *   console.error(err);\n   * }\n   * @example <caption>To enable CLS, add it do your project, create a namespace and set it on the sequelize constructor:</caption>\n   *\n   * const cls = require('cls-hooked');\n   * const namespace = cls.createNamespace('....');\n   * const Sequelize = require('sequelize');\n   * Sequelize.useCLS(namespace);\n   *\n   * // Note, that CLS is enabled for all sequelize instances, and all instances will share the same namespace\n   *\n   * @param {object}   [options] Transaction options\n   * @param {string}   [options.type='DEFERRED'] See `Sequelize.Transaction.TYPES` for possible options. Sqlite only.\n   * @param {string}   [options.isolationLevel] See `Sequelize.Transaction.ISOLATION_LEVELS` for possible options\n   * @param {string}   [options.deferrable] Sets the constraints to be deferred or immediately checked. See `Sequelize.Deferrable`. PostgreSQL Only\n   * @param {boolean}  [options.readOnly] Whether this transaction will only be used to read data. Used to determine whether sequelize is allowed to use a read replication server.\n   * @param {Function} [options.logging=false] A function that gets executed while running the query to log the sql.\n   * @param {Function} [autoCallback] The callback is called with the transaction object, and should return a promise. If the promise is resolved, the transaction commits; if the promise rejects, the transaction rolls back\n   *\n   * @returns {Promise}\n   */\n  async transaction(options, autoCallback) {\n    if (typeof options === 'function') {\n      autoCallback = options;\n      options = undefined;\n    }\n\n    const transaction = new Transaction(this, options);\n\n    if (!autoCallback) {\n      await transaction.prepareEnvironment(/* cls */ false);\n      return transaction;\n    }\n\n    // autoCallback provided\n    return Sequelize._clsRun(async () => {\n      await transaction.prepareEnvironment(/* cls */ true);\n\n      let result;\n      try {\n        result = await autoCallback(transaction);\n      } catch (err) {\n        try {\n          await transaction.rollback();\n        } catch (ignore) {\n          // ignore, because 'rollback' will already print the error before killing the connection\n        }\n\n        throw err;\n      }\n\n      await transaction.commit();\n      return result;\n    });\n  }\n\n  /**\n   * Use CLS (Continuation Local Storage) with Sequelize. With Continuation\n   * Local Storage, all queries within the transaction callback will\n   * automatically receive the transaction object.\n   *\n   * CLS namespace provided is stored as `Sequelize._cls`\n   *\n   * @param {object} ns CLS namespace\n   * @returns {object} Sequelize constructor\n   */\n  static useCLS(ns) {\n    // check `ns` is valid CLS namespace\n    if (!ns || typeof ns !== 'object' || typeof ns.bind !== 'function' || typeof ns.run !== 'function') throw new Error('Must provide CLS namespace');\n\n    // save namespace as `Sequelize._cls`\n    Sequelize._cls = ns;\n\n    // return Sequelize for chaining\n    return this;\n  }\n\n  /**\n   * Run function in CLS context.\n   * If no CLS context in use, just runs the function normally\n   *\n   * @private\n   * @param {Function} fn Function to run\n   * @returns {*} Return value of function\n   */\n  static _clsRun(fn) {\n    const ns = Sequelize._cls;\n    if (!ns) return fn();\n\n    let res;\n    ns.run(context => res = fn(context));\n    return res;\n  }\n\n  log(...args) {\n    let options;\n\n    const last = _.last(args);\n\n    if (last && _.isPlainObject(last) && Object.prototype.hasOwnProperty.call(last, 'logging')) {\n      options = last;\n\n      // remove options from set of logged arguments if options.logging is equal to console.log\n      // eslint-disable-next-line no-console\n      if (options.logging === console.log) {\n        args.splice(args.length - 1, 1);\n      }\n    } else {\n      options = this.options;\n    }\n\n    if (options.logging) {\n      if (options.logging === true) {\n        deprecations.noTrueLogging();\n        // eslint-disable-next-line no-console\n        options.logging = console.log;\n      }\n\n      // second argument is sql-timings, when benchmarking option enabled\n      // eslint-disable-next-line no-console\n      if ((this.options.benchmark || options.benchmark) && options.logging === console.log) {\n        args = [`${args[0]} Elapsed time: ${args[1]}ms`];\n      }\n\n      options.logging(...args);\n    }\n  }\n\n  /**\n   * Close all connections used by this sequelize instance, and free all references so the instance can be garbage collected.\n   *\n   * Normally this is done on process exit, so you only need to call this method if you are creating multiple instances, and want\n   * to garbage collect some of them.\n   *\n   * @returns {Promise}\n   */\n  close() {\n    return this.connectionManager.close();\n  }\n\n  normalizeDataType(Type) {\n    let type = typeof Type === 'function' ? new Type() : Type;\n    const dialectTypes = this.dialect.DataTypes || {};\n\n    if (dialectTypes[type.key]) {\n      type = dialectTypes[type.key].extend(type);\n    }\n\n    if (type instanceof DataTypes.ARRAY) {\n      if (!type.type) {\n        throw new Error('ARRAY is missing type definition for its values.');\n      }\n      if (dialectTypes[type.type.key]) {\n        type.type = dialectTypes[type.type.key].extend(type.type);\n      }\n    }\n\n    return type;\n  }\n\n  normalizeAttribute(attribute) {\n    if (!_.isPlainObject(attribute)) {\n      attribute = { type: attribute };\n    }\n\n    if (!attribute.type) return attribute;\n\n    attribute.type = this.normalizeDataType(attribute.type);\n\n    if (Object.prototype.hasOwnProperty.call(attribute, 'defaultValue')) {\n      if (typeof attribute.defaultValue === 'function' &&\n        [DataTypes.NOW, DataTypes.UUIDV1, DataTypes.UUIDV4].includes(attribute.defaultValue)\n      ) {\n        attribute.defaultValue = new attribute.defaultValue();\n      }\n    }\n\n    if (attribute.type instanceof DataTypes.ENUM) {\n      // The ENUM is a special case where the type is an object containing the values\n      if (attribute.values) {\n        attribute.type.values = attribute.type.options.values = attribute.values;\n      } else {\n        attribute.values = attribute.type.values;\n      }\n\n      if (!attribute.values.length) {\n        throw new Error('Values for ENUM have not been defined.');\n      }\n    }\n\n    return attribute;\n  }\n}\n\n// Aliases\nSequelize.prototype.fn = Sequelize.fn;\nSequelize.prototype.col = Sequelize.col;\nSequelize.prototype.cast = Sequelize.cast;\nSequelize.prototype.literal = Sequelize.literal;\nSequelize.prototype.and = Sequelize.and;\nSequelize.prototype.or = Sequelize.or;\nSequelize.prototype.json = Sequelize.json;\nSequelize.prototype.where = Sequelize.where;\nSequelize.prototype.validate = Sequelize.prototype.authenticate;\n\n/**\n * Sequelize version number.\n */\n// To avoid any errors on startup when this field is unused, only resolve it as needed.\n// this is to prevent any potential issues on startup with unusual environments (eg, bundled code)\n// where relative paths may fail that are unnecessary.\nObject.defineProperty(Sequelize, 'version', {\n  enumerable: true,\n  get() {\n    return require('../package.json').version;\n  }\n});\n\nSequelize.options = { hooks: {} };\n\n/**\n * @private\n */\nSequelize.Utils = Utils;\n\n/**\n * Operators symbols to be used for querying data\n *\n * @see  {@link Operators}\n */\nSequelize.Op = Op;\n\n/**\n * Available table hints to be used for querying data in mssql for table hints\n *\n * @see {@link TableHints}\n */\nSequelize.TableHints = TableHints;\n\n/**\n * Available index hints to be used for querying data in mysql for index hints\n *\n * @see {@link IndexHints}\n */\nSequelize.IndexHints = IndexHints;\n\n/**\n * A reference to the sequelize transaction class. Use this to access isolationLevels and types when creating a transaction\n *\n * @see {@link Transaction}\n * @see {@link Sequelize.transaction}\n */\nSequelize.Transaction = Transaction;\n\n/**\n * A reference to Sequelize constructor from sequelize. Useful for accessing DataTypes, Errors etc.\n *\n * @see {@link Sequelize}\n */\nSequelize.prototype.Sequelize = Sequelize;\n\n/**\n * Available query types for use with `sequelize.query`\n *\n * @see {@link QueryTypes}\n */\nSequelize.prototype.QueryTypes = Sequelize.QueryTypes = QueryTypes;\n\n/**\n * Exposes the validator.js object, so you can extend it with custom validation functions. The validator is exposed both on the instance, and on the constructor.\n *\n * @see https://github.com/chriso/validator.js\n */\nSequelize.prototype.Validator = Sequelize.Validator = Validator;\n\nSequelize.Model = Model;\n\nSequelize.QueryInterface = QueryInterface;\nSequelize.BelongsTo = BelongsTo;\nSequelize.HasOne = HasOne;\nSequelize.HasMany = HasMany;\nSequelize.BelongsToMany = BelongsToMany;\n\nSequelize.DataTypes = DataTypes;\nfor (const dataType in DataTypes) {\n  Sequelize[dataType] = DataTypes[dataType];\n}\n\n/**\n * A reference to the deferrable collection. Use this to access the different deferrable options.\n *\n * @see {@link Transaction.Deferrable}\n * @see {@link Sequelize#transaction}\n */\nSequelize.Deferrable = Deferrable;\n\n/**\n * A reference to the sequelize association class.\n *\n * @see {@link Association}\n */\nSequelize.prototype.Association = Sequelize.Association = Association;\n\n/**\n * Provide alternative version of `inflection` module to be used by `Utils.pluralize` etc.\n *\n * @param {object} _inflection - `inflection` module\n */\nSequelize.useInflection = Utils.useInflection;\n\n/**\n * Allow hooks to be defined on Sequelize + on sequelize instance as universal hooks to run on all models\n * and on Sequelize/sequelize methods e.g. Sequelize(), Sequelize#define()\n */\nHooks.applyTo(Sequelize);\nHooks.applyTo(Sequelize.prototype);\n\n/**\n * Expose various errors available\n */\n\n// expose alias to BaseError\nSequelize.Error = sequelizeErrors.BaseError;\n\nfor (const error of Object.keys(sequelizeErrors)) {\n  Sequelize[error] = sequelizeErrors[error];\n}\n\nmodule.exports = Sequelize;\nmodule.exports.Sequelize = Sequelize;\nmodule.exports.default = Sequelize;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/sql-string.js
===================================================================
--- backend/node_modules/sequelize/lib/sql-string.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,148 +1,0 @@
-"use strict";
-const moment = require("moment");
-const dataTypes = require("./data-types");
-const { logger } = require("./utils/logger");
-function arrayToList(array, timeZone, dialect, format2) {
-  return array.reduce((sql, val, i) => {
-    if (i !== 0) {
-      sql += ", ";
-    }
-    if (Array.isArray(val)) {
-      sql += `(${arrayToList(val, timeZone, dialect, format2)})`;
-    } else {
-      sql += escape(val, timeZone, dialect, format2);
-    }
-    return sql;
-  }, "");
-}
-exports.arrayToList = arrayToList;
-function escape(val, timeZone, dialect, format2) {
-  let prependN = false;
-  if (val === void 0 || val === null) {
-    return "NULL";
-  }
-  switch (typeof val) {
-    case "boolean":
-      if (["sqlite", "mssql", "oracle"].includes(dialect)) {
-        return +!!val;
-      }
-      return (!!val).toString();
-    case "number":
-    case "bigint":
-      return val.toString();
-    case "string":
-      prependN = dialect === "mssql";
-      break;
-  }
-  if (val instanceof Date) {
-    val = dataTypes[dialect].DATE.prototype.stringify(val, { timezone: timeZone });
-  }
-  if (Buffer.isBuffer(val)) {
-    if (dataTypes[dialect].BLOB) {
-      return dataTypes[dialect].BLOB.prototype.stringify(val);
-    }
-    return dataTypes.BLOB.prototype.stringify(val);
-  }
-  if (Array.isArray(val)) {
-    const partialEscape = (escVal) => escape(escVal, timeZone, dialect, format2);
-    if (dialect === "postgres" && !format2) {
-      return dataTypes.ARRAY.prototype.stringify(val, { escape: partialEscape });
-    }
-    return arrayToList(val, timeZone, dialect, format2);
-  }
-  if (!val.replace) {
-    throw new Error(`Invalid value ${logger.inspect(val)}`);
-  }
-  if (["postgres", "sqlite", "mssql", "snowflake", "db2"].includes(dialect)) {
-    val = val.replace(/'/g, "''");
-    if (dialect === "postgres") {
-      val = val.replace(/\0/g, "\\0");
-    }
-  } else if (dialect === "oracle" && typeof val === "string") {
-    if (val.startsWith("TO_TIMESTAMP_TZ") || val.startsWith("TO_DATE")) {
-      const splitVal = val.split(/\(|\)/);
-      if (splitVal.length !== 3 || splitVal[2] !== "") {
-        throw new Error("Invalid SQL function call.");
-      }
-      const functionName = splitVal[0].trim();
-      const insideParens = splitVal[1].trim();
-      if (functionName !== "TO_TIMESTAMP_TZ" && functionName !== "TO_DATE") {
-        throw new Error("Invalid SQL function call. Expected TO_TIMESTAMP_TZ or TO_DATE.");
-      }
-      const params = insideParens.split(",");
-      if (params.length !== 2) {
-        throw new Error("Unexpected input received.\nSequelize supports TO_TIMESTAMP_TZ or TO_DATE exclusively with a combination of value and format.");
-      }
-      const dateValue = params[0].trim().replace(/'/g, "");
-      const formatValue = params[1].trim();
-      if (functionName === "TO_TIMESTAMP_TZ") {
-        const expectedFormat = "'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM'";
-        if (formatValue !== expectedFormat) {
-          throw new Error(`Invalid format string for TO_TIMESTAMP_TZ. Expected format: ${expectedFormat}`);
-        }
-        const formattedDate = moment(dateValue).format("YYYY-MM-DD HH:mm:ss.SSS Z");
-        if (formattedDate !== dateValue) {
-          throw new Error("Invalid date value for TO_TIMESTAMP_TZ. Expected format: 'YYYY-MM-DD HH:mm:ss.SSS Z'");
-        }
-      } else if (functionName === "TO_DATE") {
-        const expectedFormat = "'YYYY/MM/DD'";
-        if (formatValue !== expectedFormat) {
-          throw new Error(`Invalid format string for TO_DATE. Expected format: ${expectedFormat}`);
-        }
-        const formattedDate = moment(dateValue).format("YYYY-MM-DD");
-        if (formattedDate !== dateValue) {
-          throw new Error("Invalid date value for TO_DATE. Expected format: 'YYYY-MM-DD'");
-        }
-      }
-      return val;
-    }
-    val = val.replace(/'/g, "''");
-  } else {
-    val = val.replace(/[\0\n\r\b\t\\'"\x1a]/g, (s) => {
-      switch (s) {
-        case "\0":
-          return "\\0";
-        case "\n":
-          return "\\n";
-        case "\r":
-          return "\\r";
-        case "\b":
-          return "\\b";
-        case "	":
-          return "\\t";
-        case "":
-          return "\\Z";
-        default:
-          return `\\${s}`;
-      }
-    });
-  }
-  return `${(prependN ? "N'" : "'") + val}'`;
-}
-exports.escape = escape;
-function format(sql, values, timeZone, dialect) {
-  values = [].concat(values);
-  if (typeof sql !== "string") {
-    throw new Error(`Invalid SQL string provided: ${sql}`);
-  }
-  return sql.replace(/\?/g, (match) => {
-    if (!values.length) {
-      return match;
-    }
-    return escape(values.shift(), timeZone, dialect, true);
-  });
-}
-exports.format = format;
-function formatNamedParameters(sql, values, timeZone, dialect) {
-  return sql.replace(/:+(?!\d)(\w+)/g, (value, key) => {
-    if (dialect === "postgres" && value.slice(0, 2) === "::") {
-      return value;
-    }
-    if (values[key] !== void 0) {
-      return escape(values[key], timeZone, dialect, true);
-    }
-    throw new Error(`Named parameter "${value}" has no value in the given object.`);
-  });
-}
-exports.formatNamedParameters = formatNamedParameters;
-//# sourceMappingURL=sql-string.js.map
Index: ckend/node_modules/sequelize/lib/sql-string.js.map
===================================================================
--- backend/node_modules/sequelize/lib/sql-string.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/sql-string.js"],
-  "sourcesContent": ["'use strict';\n\nconst moment = require('moment');\nconst dataTypes = require('./data-types');\nconst { logger } = require('./utils/logger');\n\nfunction arrayToList(array, timeZone, dialect, format) {\n  return array.reduce((sql, val, i) => {\n    if (i !== 0) {\n      sql += ', ';\n    }\n    if (Array.isArray(val)) {\n      sql += `(${arrayToList(val, timeZone, dialect, format)})`;\n    } else {\n      sql += escape(val, timeZone, dialect, format);\n    }\n    return sql;\n  }, '');\n}\nexports.arrayToList = arrayToList;\n\nfunction escape(val, timeZone, dialect, format) {\n  let prependN = false;\n  if (val === undefined || val === null) {\n    return 'NULL';\n  }\n  switch (typeof val) {\n    case 'boolean':\n    // SQLite doesn't have true/false support. MySQL aliases true/false to 1/0\n    // for us. Postgres actually has a boolean type with true/false literals,\n    // but sequelize doesn't use it yet.\n      if (['sqlite', 'mssql', 'oracle'].includes(dialect)) {\n        return +!!val;\n      }\n      return (!!val).toString();\n    case 'number':\n    case 'bigint':\n      return val.toString();\n    case 'string':\n    // In mssql, prepend N to all quoted vals which are originally a string (for\n    // unicode compatibility)\n      prependN = dialect === 'mssql';\n      break;\n  }\n\n  if (val instanceof Date) {\n    val = dataTypes[dialect].DATE.prototype.stringify(val, { timezone: timeZone });\n  }\n\n  if (Buffer.isBuffer(val)) {\n    if (dataTypes[dialect].BLOB) {\n      return dataTypes[dialect].BLOB.prototype.stringify(val);\n    }\n\n    return dataTypes.BLOB.prototype.stringify(val);\n  }\n\n  if (Array.isArray(val)) {\n    const partialEscape = escVal => escape(escVal, timeZone, dialect, format);\n    if (dialect === 'postgres' && !format) {\n      return dataTypes.ARRAY.prototype.stringify(val, { escape: partialEscape });\n    }\n    return arrayToList(val, timeZone, dialect, format);\n  }\n\n  if (!val.replace) {\n    throw new Error(`Invalid value ${logger.inspect(val)}`);\n  }\n\n  if (['postgres', 'sqlite', 'mssql', 'snowflake', 'db2'].includes(dialect)) {\n    // http://www.postgresql.org/docs/8.2/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS\n    // http://stackoverflow.com/q/603572/130598\n    val = val.replace(/'/g, \"''\");\n\n    if (dialect === 'postgres') {\n      // null character is not allowed in Postgres\n      val = val.replace(/\\0/g, '\\\\0');\n    }\n  } else if (dialect === 'oracle' && typeof val === 'string') {\n    if (val.startsWith('TO_TIMESTAMP_TZ') || val.startsWith('TO_DATE')) {\n      // Split the string using parentheses to isolate the function name, parameters, and potential extra parts\n      const splitVal = val.split(/\\(|\\)/);\n    \n      // Validate that the split result has exactly three parts (function name, parameters, and an empty string)\n      // and that there are no additional SQL commands after the function call (indicated by the last empty string).\n      if (splitVal.length !== 3 || splitVal[2] !== '') {\n        throw new Error('Invalid SQL function call.'); // Error if function call has unexpected format\n      }\n    \n      // Extract the function name (either 'TO_TIMESTAMP_TZ' or 'TO_DATE') and the contents inside the parentheses\n      const functionName = splitVal[0].trim(); // Function name should be 'TO_TIMESTAMP_TZ' or 'TO_DATE'\n      const insideParens = splitVal[1].trim(); // This contains the parameters (date value and format string)\n    \n      if (functionName !== 'TO_TIMESTAMP_TZ' && functionName !== 'TO_DATE') {\n        throw new Error('Invalid SQL function call. Expected TO_TIMESTAMP_TZ or TO_DATE.');\n      }\n    \n      // Split the parameters inside the parentheses by commas (should contain exactly two: date and format)\n      const params = insideParens.split(',');\n    \n      // Validate that the parameters contain exactly two parts (date value and format string)\n      if (params.length !== 2) {\n        throw new Error('Unexpected input received.\\nSequelize supports TO_TIMESTAMP_TZ or TO_DATE exclusively with a combination of value and format.');\n      }\n    \n      // Extract the date value (first parameter) and remove single quotes around it\n      const dateValue = params[0].trim().replace(/'/g, '');\n      const formatValue = params[1].trim();\n    \n      if (functionName === 'TO_TIMESTAMP_TZ') {\n        const expectedFormat = \"'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM'\";\n        // Validate that the formatValue is equal to expectedFormat since that is the only format used within sequelize\n        if (formatValue !== expectedFormat) {\n          throw new Error(`Invalid format string for TO_TIMESTAMP_TZ. Expected format: ${expectedFormat}`);\n        }\n      \n        // Validate the date value using Moment.js with the expected format\n        const formattedDate = moment(dateValue).format('YYYY-MM-DD HH:mm:ss.SSS Z');\n      \n        // If the formatted date doesn't match the input date value, throw an error\n        if (formattedDate !== dateValue) {\n          throw new Error(\"Invalid date value for TO_TIMESTAMP_TZ. Expected format: 'YYYY-MM-DD HH:mm:ss.SSS Z'\");\n        }\n      } else if (functionName === 'TO_DATE') {\n        const expectedFormat = \"'YYYY/MM/DD'\";\n        // Validate that the formatValue is equal to expectedFormat since that is the only format used within sequelize\n        if (formatValue !== expectedFormat) {\n          throw new Error(`Invalid format string for TO_DATE. Expected format: ${expectedFormat}`);\n        }\n      \n        // Validate the date value using Moment.js with the expected format\n        const formattedDate = moment(dateValue).format('YYYY-MM-DD');\n      \n        // If the formatted date doesn't match the input date value, throw an error\n        if (formattedDate !== dateValue) {\n          throw new Error(\"Invalid date value for TO_DATE. Expected format: 'YYYY-MM-DD'\");\n        }\n      }\n\n      return val;\n    }\n    \n    val = val.replace(/'/g, \"''\");\n  } else {\n\n    // eslint-disable-next-line no-control-regex\n    val = val.replace(/[\\0\\n\\r\\b\\t\\\\'\"\\x1a]/g, s => {\n      switch (s) {\n        case '\\0': return '\\\\0';\n        case '\\n': return '\\\\n';\n        case '\\r': return '\\\\r';\n        case '\\b': return '\\\\b';\n        case '\\t': return '\\\\t';\n        case '\\x1a': return '\\\\Z';\n        default: return `\\\\${s}`;\n      }\n    });\n  }\n  return `${(prependN ? \"N'\" : \"'\") + val}'`;\n}\nexports.escape = escape;\n\nfunction format(sql, values, timeZone, dialect) {\n  values = [].concat(values);\n\n  if (typeof sql !== 'string') {\n    throw new Error(`Invalid SQL string provided: ${sql}`);\n  }\n\n  return sql.replace(/\\?/g, match => {\n    if (!values.length) {\n      return match;\n    }\n\n    return escape(values.shift(), timeZone, dialect, true);\n  });\n}\nexports.format = format;\n\nfunction formatNamedParameters(sql, values, timeZone, dialect) {\n  return sql.replace(/:+(?!\\d)(\\w+)/g, (value, key) => {\n    if ('postgres' === dialect && '::' === value.slice(0, 2)) {\n      return value;\n    }\n\n    if (values[key] !== undefined) {\n      return escape(values[key], timeZone, dialect, true);\n    }\n    throw new Error(`Named parameter \"${value}\" has no value in the given object.`);\n  });\n}\nexports.formatNamedParameters = formatNamedParameters;\n"],
-  "mappings": ";AAEA,MAAM,SAAS,QAAQ;AACvB,MAAM,YAAY,QAAQ;AAC1B,MAAM,EAAE,WAAW,QAAQ;AAE3B,qBAAqB,OAAO,UAAU,SAAS,SAAQ;AACrD,SAAO,MAAM,OAAO,CAAC,KAAK,KAAK,MAAM;AACnC,QAAI,MAAM,GAAG;AACX,aAAO;AAAA;AAET,QAAI,MAAM,QAAQ,MAAM;AACtB,aAAO,IAAI,YAAY,KAAK,UAAU,SAAS;AAAA,WAC1C;AACL,aAAO,OAAO,KAAK,UAAU,SAAS;AAAA;AAExC,WAAO;AAAA,KACN;AAAA;AAEL,QAAQ,cAAc;AAEtB,gBAAgB,KAAK,UAAU,SAAS,SAAQ;AAC9C,MAAI,WAAW;AACf,MAAI,QAAQ,UAAa,QAAQ,MAAM;AACrC,WAAO;AAAA;AAET,UAAQ,OAAO;AAAA,SACR;AAIH,UAAI,CAAC,UAAU,SAAS,UAAU,SAAS,UAAU;AACnD,eAAO,CAAC,CAAC,CAAC;AAAA;AAEZ,aAAQ,EAAC,CAAC,KAAK;AAAA,SACZ;AAAA,SACA;AACH,aAAO,IAAI;AAAA,SACR;AAGH,iBAAW,YAAY;AACvB;AAAA;AAGJ,MAAI,eAAe,MAAM;AACvB,UAAM,UAAU,SAAS,KAAK,UAAU,UAAU,KAAK,EAAE,UAAU;AAAA;AAGrE,MAAI,OAAO,SAAS,MAAM;AACxB,QAAI,UAAU,SAAS,MAAM;AAC3B,aAAO,UAAU,SAAS,KAAK,UAAU,UAAU;AAAA;AAGrD,WAAO,UAAU,KAAK,UAAU,UAAU;AAAA;AAG5C,MAAI,MAAM,QAAQ,MAAM;AACtB,UAAM,gBAAgB,YAAU,OAAO,QAAQ,UAAU,SAAS;AAClE,QAAI,YAAY,cAAc,CAAC,SAAQ;AACrC,aAAO,UAAU,MAAM,UAAU,UAAU,KAAK,EAAE,QAAQ;AAAA;AAE5D,WAAO,YAAY,KAAK,UAAU,SAAS;AAAA;AAG7C,MAAI,CAAC,IAAI,SAAS;AAChB,UAAM,IAAI,MAAM,iBAAiB,OAAO,QAAQ;AAAA;AAGlD,MAAI,CAAC,YAAY,UAAU,SAAS,aAAa,OAAO,SAAS,UAAU;AAGzE,UAAM,IAAI,QAAQ,MAAM;AAExB,QAAI,YAAY,YAAY;AAE1B,YAAM,IAAI,QAAQ,OAAO;AAAA;AAAA,aAElB,YAAY,YAAY,OAAO,QAAQ,UAAU;AAC1D,QAAI,IAAI,WAAW,sBAAsB,IAAI,WAAW,YAAY;AAElE,YAAM,WAAW,IAAI,MAAM;AAI3B,UAAI,SAAS,WAAW,KAAK,SAAS,OAAO,IAAI;AAC/C,cAAM,IAAI,MAAM;AAAA;AAIlB,YAAM,eAAe,SAAS,GAAG;AACjC,YAAM,eAAe,SAAS,GAAG;AAEjC,UAAI,iBAAiB,qBAAqB,iBAAiB,WAAW;AACpE,cAAM,IAAI,MAAM;AAAA;AAIlB,YAAM,SAAS,aAAa,MAAM;AAGlC,UAAI,OAAO,WAAW,GAAG;AACvB,cAAM,IAAI,MAAM;AAAA;AAIlB,YAAM,YAAY,OAAO,GAAG,OAAO,QAAQ,MAAM;AACjD,YAAM,cAAc,OAAO,GAAG;AAE9B,UAAI,iBAAiB,mBAAmB;AACtC,cAAM,iBAAiB;AAEvB,YAAI,gBAAgB,gBAAgB;AAClC,gBAAM,IAAI,MAAM,+DAA+D;AAAA;AAIjF,cAAM,gBAAgB,OAAO,WAAW,OAAO;AAG/C,YAAI,kBAAkB,WAAW;AAC/B,gBAAM,IAAI,MAAM;AAAA;AAAA,iBAET,iBAAiB,WAAW;AACrC,cAAM,iBAAiB;AAEvB,YAAI,gBAAgB,gBAAgB;AAClC,gBAAM,IAAI,MAAM,uDAAuD;AAAA;AAIzE,cAAM,gBAAgB,OAAO,WAAW,OAAO;AAG/C,YAAI,kBAAkB,WAAW;AAC/B,gBAAM,IAAI,MAAM;AAAA;AAAA;AAIpB,aAAO;AAAA;AAGT,UAAM,IAAI,QAAQ,MAAM;AAAA,SACnB;AAGL,UAAM,IAAI,QAAQ,yBAAyB,OAAK;AAC9C,cAAQ;AAAA,aACD;AAAM,iBAAO;AAAA,aACb;AAAM,iBAAO;AAAA,aACb;AAAM,iBAAO;AAAA,aACb;AAAM,iBAAO;AAAA,aACb;AAAM,iBAAO;AAAA,aACb;AAAQ,iBAAO;AAAA;AACX,iBAAO,KAAK;AAAA;AAAA;AAAA;AAI3B,SAAO,GAAI,YAAW,OAAO,OAAO;AAAA;AAEtC,QAAQ,SAAS;AAEjB,gBAAgB,KAAK,QAAQ,UAAU,SAAS;AAC9C,WAAS,GAAG,OAAO;AAEnB,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,IAAI,MAAM,gCAAgC;AAAA;AAGlD,SAAO,IAAI,QAAQ,OAAO,WAAS;AACjC,QAAI,CAAC,OAAO,QAAQ;AAClB,aAAO;AAAA;AAGT,WAAO,OAAO,OAAO,SAAS,UAAU,SAAS;AAAA;AAAA;AAGrD,QAAQ,SAAS;AAEjB,+BAA+B,KAAK,QAAQ,UAAU,SAAS;AAC7D,SAAO,IAAI,QAAQ,kBAAkB,CAAC,OAAO,QAAQ;AACnD,QAAI,AAAe,YAAf,cAA0B,AAAS,MAAM,MAAM,GAAG,OAAxB,MAA4B;AACxD,aAAO;AAAA;AAGT,QAAI,OAAO,SAAS,QAAW;AAC7B,aAAO,OAAO,OAAO,MAAM,UAAU,SAAS;AAAA;AAEhD,UAAM,IAAI,MAAM,oBAAoB;AAAA;AAAA;AAGxC,QAAQ,wBAAwB;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/table-hints.js
===================================================================
--- backend/node_modules/sequelize/lib/table-hints.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-const TableHints = module.exports = {
-  NOLOCK: "NOLOCK",
-  READUNCOMMITTED: "READUNCOMMITTED",
-  UPDLOCK: "UPDLOCK",
-  REPEATABLEREAD: "REPEATABLEREAD",
-  SERIALIZABLE: "SERIALIZABLE",
-  READCOMMITTED: "READCOMMITTED",
-  TABLOCK: "TABLOCK",
-  TABLOCKX: "TABLOCKX",
-  PAGLOCK: "PAGLOCK",
-  ROWLOCK: "ROWLOCK",
-  NOWAIT: "NOWAIT",
-  READPAST: "READPAST",
-  XLOCK: "XLOCK",
-  SNAPSHOT: "SNAPSHOT",
-  NOEXPAND: "NOEXPAND"
-};
-//# sourceMappingURL=table-hints.js.map
Index: ckend/node_modules/sequelize/lib/table-hints.js.map
===================================================================
--- backend/node_modules/sequelize/lib/table-hints.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/table-hints.js"],
-  "sourcesContent": ["'use strict';\n\n/**\n * An enum of table hints to be used in mssql for querying with table hints\n *\n * @property NOLOCK\n * @property READUNCOMMITTED\n * @property UPDLOCK\n * @property REPEATABLEREAD\n * @property SERIALIZABLE\n * @property READCOMMITTED\n * @property TABLOCK\n * @property TABLOCKX\n * @property PAGLOCK\n * @property ROWLOCK\n * @property NOWAIT\n * @property READPAST\n * @property XLOCK\n * @property SNAPSHOT\n * @property NOEXPAND\n */\nconst TableHints = module.exports = { // eslint-disable-line\n  NOLOCK: 'NOLOCK',\n  READUNCOMMITTED: 'READUNCOMMITTED',\n  UPDLOCK: 'UPDLOCK',\n  REPEATABLEREAD: 'REPEATABLEREAD',\n  SERIALIZABLE: 'SERIALIZABLE',\n  READCOMMITTED: 'READCOMMITTED',\n  TABLOCK: 'TABLOCK',\n  TABLOCKX: 'TABLOCKX',\n  PAGLOCK: 'PAGLOCK',\n  ROWLOCK: 'ROWLOCK',\n  NOWAIT: 'NOWAIT',\n  READPAST: 'READPAST',\n  XLOCK: 'XLOCK',\n  SNAPSHOT: 'SNAPSHOT',\n  NOEXPAND: 'NOEXPAND'\n};\n"],
-  "mappings": ";AAqBA,MAAM,aAAa,OAAO,UAAU;AAAA,EAClC,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/transaction.js
===================================================================
--- backend/node_modules/sequelize/lib/transaction.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,177 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-class Transaction {
-  constructor(sequelize, options) {
-    this.sequelize = sequelize;
-    this.savepoints = [];
-    this._afterCommitHooks = [];
-    const generateTransactionId = this.sequelize.dialect.queryGenerator.generateTransactionId;
-    this.options = __spreadValues({
-      type: sequelize.options.transactionType,
-      isolationLevel: sequelize.options.isolationLevel,
-      readOnly: false
-    }, options);
-    this.parent = this.options.transaction;
-    if (this.parent) {
-      this.id = this.parent.id;
-      this.parent.savepoints.push(this);
-      this.name = `${this.id}-sp-${this.parent.savepoints.length}`;
-    } else {
-      this.id = this.name = generateTransactionId();
-    }
-    delete this.options.transaction;
-  }
-  async commit() {
-    if (this.finished) {
-      throw new Error(`Transaction cannot be committed because it has been finished with state: ${this.finished}`);
-    }
-    try {
-      await this.sequelize.getQueryInterface().commitTransaction(this, this.options);
-      this.cleanup();
-    } catch (e) {
-      console.warn(`Committing transaction ${this.id} failed with error ${JSON.stringify(e.message)}. We are killing its connection as it is now in an undetermined state.`);
-      await this.forceCleanup();
-      throw e;
-    } finally {
-      this.finished = "commit";
-      for (const hook of this._afterCommitHooks) {
-        await hook.apply(this, [this]);
-      }
-    }
-  }
-  async rollback() {
-    if (this.finished) {
-      throw new Error(`Transaction cannot be rolled back because it has been finished with state: ${this.finished}`);
-    }
-    if (!this.connection) {
-      throw new Error("Transaction cannot be rolled back because it never started");
-    }
-    try {
-      await this.sequelize.getQueryInterface().rollbackTransaction(this, this.options);
-      this.cleanup();
-    } catch (e) {
-      console.warn(`Rolling back transaction ${this.id} failed with error ${JSON.stringify(e.message)}. We are killing its connection as it is now in an undetermined state.`);
-      await this.forceCleanup();
-      throw e;
-    }
-  }
-  async prepareEnvironment(useCLS = true) {
-    let connectionPromise;
-    if (this.parent) {
-      connectionPromise = Promise.resolve(this.parent.connection);
-    } else {
-      const acquireOptions = { uuid: this.id };
-      if (this.options.readOnly) {
-        acquireOptions.type = "SELECT";
-      }
-      connectionPromise = this.sequelize.connectionManager.getConnection(acquireOptions);
-    }
-    let result;
-    const connection = await connectionPromise;
-    this.connection = connection;
-    this.connection.uuid = this.id;
-    try {
-      await this.begin();
-      result = await this.setDeferrable();
-    } catch (setupErr) {
-      try {
-        result = await this.rollback();
-      } finally {
-        throw setupErr;
-      }
-    }
-    if (useCLS && this.sequelize.constructor._cls) {
-      this.sequelize.constructor._cls.set("transaction", this);
-    }
-    return result;
-  }
-  async setDeferrable() {
-    if (this.options.deferrable) {
-      return await this.sequelize.getQueryInterface().deferConstraints(this, this.options);
-    }
-  }
-  async begin() {
-    const queryInterface = this.sequelize.getQueryInterface();
-    if (this.sequelize.dialect.supports.settingIsolationLevelDuringTransaction) {
-      await queryInterface.startTransaction(this, this.options);
-      return queryInterface.setIsolationLevel(this, this.options.isolationLevel, this.options);
-    }
-    await queryInterface.setIsolationLevel(this, this.options.isolationLevel, this.options);
-    return queryInterface.startTransaction(this, this.options);
-  }
-  cleanup() {
-    if (this.parent || this.connection.uuid === void 0) {
-      return;
-    }
-    this._clearCls();
-    this.sequelize.connectionManager.releaseConnection(this.connection);
-    this.connection.uuid = void 0;
-  }
-  async forceCleanup() {
-    if (this.parent || this.connection.uuid === void 0) {
-      return;
-    }
-    this._clearCls();
-    await this.sequelize.connectionManager.destroyConnection(this.connection);
-    this.connection.uuid = void 0;
-  }
-  _clearCls() {
-    const cls = this.sequelize.constructor._cls;
-    if (cls) {
-      if (cls.get("transaction") === this) {
-        cls.set("transaction", null);
-      }
-    }
-  }
-  afterCommit(fn) {
-    if (!fn || typeof fn !== "function") {
-      throw new Error('"fn" must be a function');
-    }
-    this._afterCommitHooks.push(fn);
-  }
-  static get TYPES() {
-    return {
-      DEFERRED: "DEFERRED",
-      IMMEDIATE: "IMMEDIATE",
-      EXCLUSIVE: "EXCLUSIVE"
-    };
-  }
-  static get ISOLATION_LEVELS() {
-    return {
-      READ_UNCOMMITTED: "READ UNCOMMITTED",
-      READ_COMMITTED: "READ COMMITTED",
-      REPEATABLE_READ: "REPEATABLE READ",
-      SERIALIZABLE: "SERIALIZABLE"
-    };
-  }
-  static get LOCK() {
-    return {
-      UPDATE: "UPDATE",
-      SHARE: "SHARE",
-      KEY_SHARE: "KEY SHARE",
-      NO_KEY_UPDATE: "NO KEY UPDATE"
-    };
-  }
-  get LOCK() {
-    return Transaction.LOCK;
-  }
-}
-module.exports = Transaction;
-module.exports.Transaction = Transaction;
-module.exports.default = Transaction;
-//# sourceMappingURL=transaction.js.map
Index: ckend/node_modules/sequelize/lib/transaction.js.map
===================================================================
--- backend/node_modules/sequelize/lib/transaction.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/transaction.js"],
-  "sourcesContent": ["'use strict';\n\n/**\n * The transaction object is used to identify a running transaction.\n * It is created by calling `Sequelize.transaction()`.\n * To run a query under a transaction, you should pass the transaction in the options object.\n *\n * @class Transaction\n * @see {@link Sequelize.transaction}\n */\nclass Transaction {\n  /**\n   * Creates a new transaction instance\n   *\n   * @param {Sequelize} sequelize A configured sequelize Instance\n   * @param {object} options An object with options\n   * @param {string} [options.type] Sets the type of the transaction. Sqlite only\n   * @param {string} [options.isolationLevel] Sets the isolation level of the transaction.\n   * @param {string} [options.deferrable] Sets the constraints to be deferred or immediately checked. PostgreSQL only\n   * @param {boolean} [options.readOnly] Whether this transaction will only be used to read data. Used to determine whether sequelize is allowed to use a read replication server.\n   */\n  constructor(sequelize, options) {\n    this.sequelize = sequelize;\n    this.savepoints = [];\n    this._afterCommitHooks = [];\n\n    // get dialect specific transaction options\n    const generateTransactionId = this.sequelize.dialect.queryGenerator.generateTransactionId;\n\n    this.options = {\n      type: sequelize.options.transactionType,\n      isolationLevel: sequelize.options.isolationLevel,\n      readOnly: false,\n      ...options\n    };\n\n    this.parent = this.options.transaction;\n\n    if (this.parent) {\n      this.id = this.parent.id;\n      this.parent.savepoints.push(this);\n      this.name = `${this.id}-sp-${this.parent.savepoints.length}`;\n    } else {\n      this.id = this.name = generateTransactionId();\n    }\n\n    delete this.options.transaction;\n  }\n\n  /**\n   * Commit the transaction\n   *\n   * @returns {Promise}\n   */\n  async commit() {\n    if (this.finished) {\n      throw new Error(`Transaction cannot be committed because it has been finished with state: ${this.finished}`);\n    }\n\n    try {\n      await this.sequelize.getQueryInterface().commitTransaction(this, this.options);\n      this.cleanup();\n    } catch (e) {\n      console.warn(`Committing transaction ${this.id} failed with error ${JSON.stringify(e.message)}. We are killing its connection as it is now in an undetermined state.`);\n      await this.forceCleanup();\n\n      throw e;\n    } finally {\n      this.finished = 'commit';\n      for (const hook of this._afterCommitHooks) {\n        await hook.apply(this, [this]);\n      }\n    }\n  }\n\n  /**\n   * Rollback (abort) the transaction\n   *\n   * @returns {Promise}\n   */\n  async rollback() {\n    if (this.finished) {\n      throw new Error(`Transaction cannot be rolled back because it has been finished with state: ${this.finished}`);\n    }\n\n    if (!this.connection) {\n      throw new Error('Transaction cannot be rolled back because it never started');\n    }\n\n    try {\n      await this\n        .sequelize\n        .getQueryInterface()\n        .rollbackTransaction(this, this.options);\n\n      this.cleanup();\n    } catch (e) {\n      console.warn(`Rolling back transaction ${this.id} failed with error ${JSON.stringify(e.message)}. We are killing its connection as it is now in an undetermined state.`);\n      await this.forceCleanup();\n\n      throw e;\n    }\n  }\n\n  /**\n   * Called to acquire a connection to use and set the correct options on the connection.\n   * We should ensure all of the environment that's set up is cleaned up in `cleanup()` below.\n   *\n   * @param {boolean} useCLS Defaults to true: Use CLS (Continuation Local Storage) with Sequelize. With CLS, all queries within the transaction callback will automatically receive the transaction object.\n   * @returns {Promise}\n   */\n  async prepareEnvironment(useCLS = true) {\n    let connectionPromise;\n\n    if (this.parent) {\n      connectionPromise = Promise.resolve(this.parent.connection);\n    } else {\n      const acquireOptions = { uuid: this.id };\n      if (this.options.readOnly) {\n        acquireOptions.type = 'SELECT';\n      }\n      connectionPromise = this.sequelize.connectionManager.getConnection(acquireOptions);\n    }\n\n    let result;\n    const connection = await connectionPromise;\n    this.connection = connection;\n    this.connection.uuid = this.id;\n\n    try {\n      await this.begin();\n      result = await this.setDeferrable();\n    } catch (setupErr) {\n      try {\n        result = await this.rollback();\n      } finally {\n        throw setupErr; // eslint-disable-line no-unsafe-finally\n      }\n    }\n\n    // TODO (@ephys) [>=7.0.0]: move this inside of sequelize.transaction, remove parameter.\n    if (useCLS && this.sequelize.constructor._cls) {\n      this.sequelize.constructor._cls.set('transaction', this);\n    }\n\n    return result;\n  }\n\n  async setDeferrable() {\n    if (this.options.deferrable) {\n      return await this\n        .sequelize\n        .getQueryInterface()\n        .deferConstraints(this, this.options);\n    }\n  }\n\n  async begin() {\n    const queryInterface = this.sequelize.getQueryInterface();\n\n    if ( this.sequelize.dialect.supports.settingIsolationLevelDuringTransaction ) {\n      await queryInterface.startTransaction(this, this.options);\n      return queryInterface.setIsolationLevel(this, this.options.isolationLevel, this.options);\n    }\n\n    await queryInterface.setIsolationLevel(this, this.options.isolationLevel, this.options);\n\n    return queryInterface.startTransaction(this, this.options);\n  }\n\n  cleanup() {\n    // Don't release the connection if there's a parent transaction or\n    // if we've already cleaned up\n    if (this.parent || this.connection.uuid === undefined) {\n      return;\n    }\n\n    this._clearCls();\n    this.sequelize.connectionManager.releaseConnection(this.connection);\n    this.connection.uuid = undefined;\n  }\n\n  /**\n   * Kills the connection this transaction uses.\n   * Used as a last resort, for instance because COMMIT or ROLLBACK resulted in an error\n   * and the transaction is left in a broken state,\n   * and releasing the connection to the pool would be dangerous.\n   */\n  async forceCleanup() {\n    // Don't release the connection if there's a parent transaction or\n    // if we've already cleaned up\n    if (this.parent || this.connection.uuid === undefined) {\n      return;\n    }\n\n    this._clearCls();\n    await this.sequelize.connectionManager.destroyConnection(this.connection);\n    this.connection.uuid = undefined;\n  }\n\n  _clearCls() {\n    const cls = this.sequelize.constructor._cls;\n\n    if (cls) {\n      if (cls.get('transaction') === this) {\n        cls.set('transaction', null);\n      }\n    }\n  }\n\n  /**\n   * A hook that is run after a transaction is committed\n   *\n   * @param {Function} fn   A callback function that is called with the committed transaction\n   * @name afterCommit\n   * @memberof Sequelize.Transaction\n   */\n  afterCommit(fn) {\n    if (!fn || typeof fn !== 'function') {\n      throw new Error('\"fn\" must be a function');\n    }\n    this._afterCommitHooks.push(fn);\n  }\n\n  /**\n   * Types can be set per-transaction by passing `options.type` to `sequelize.transaction`.\n   * Default to `DEFERRED` but you can override the default type by passing `options.transactionType` in `new Sequelize`.\n   * Sqlite only.\n   *\n   * Pass in the desired level as the first argument:\n   *\n   * @example\n   * try {\n   *   await sequelize.transaction({ type: Sequelize.Transaction.TYPES.EXCLUSIVE }, transaction => {\n   *      // your transactions\n   *   });\n   *   // transaction has been committed. Do something after the commit if required.\n   * } catch(err) {\n   *   // do something with the err.\n   * }\n   *\n   * @property DEFERRED\n   * @property IMMEDIATE\n   * @property EXCLUSIVE\n   */\n  static get TYPES() {\n    return {\n      DEFERRED: 'DEFERRED',\n      IMMEDIATE: 'IMMEDIATE',\n      EXCLUSIVE: 'EXCLUSIVE'\n    };\n  }\n\n  /**\n   * Isolation levels can be set per-transaction by passing `options.isolationLevel` to `sequelize.transaction`.\n   * Sequelize uses the default isolation level of the database, you can override this by passing `options.isolationLevel` in Sequelize constructor options.\n   *\n   * Pass in the desired level as the first argument:\n   *\n   * @example\n   * try {\n   *   const result = await sequelize.transaction({isolationLevel: Sequelize.Transaction.ISOLATION_LEVELS.SERIALIZABLE}, transaction => {\n   *     // your transactions\n   *   });\n   *   // transaction has been committed. Do something after the commit if required.\n   * } catch(err) {\n   *   // do something with the err.\n   * }\n   *\n   * @property READ_UNCOMMITTED\n   * @property READ_COMMITTED\n   * @property REPEATABLE_READ\n   * @property SERIALIZABLE\n   */\n  static get ISOLATION_LEVELS() {\n    return {\n      READ_UNCOMMITTED: 'READ UNCOMMITTED',\n      READ_COMMITTED: 'READ COMMITTED',\n      REPEATABLE_READ: 'REPEATABLE READ',\n      SERIALIZABLE: 'SERIALIZABLE'\n    };\n  }\n\n\n  /**\n   * Possible options for row locking. Used in conjunction with `find` calls:\n   *\n   * @example\n   * // t1 is a transaction\n   * Model.findAll({\n   *   where: ...,\n   *   transaction: t1,\n   *   lock: t1.LOCK...\n   * });\n   *\n   * @example <caption>Postgres also supports specific locks while eager loading by using OF:</caption>\n   * UserModel.findAll({\n   *   where: ...,\n   *   include: [TaskModel, ...],\n   *   transaction: t1,\n   *   lock: {\n   *     level: t1.LOCK...,\n   *     of: UserModel\n   *   }\n   * });\n   *\n   * # UserModel will be locked but TaskModel won't!\n   *\n   * @example <caption>You can also skip locked rows:</caption>\n   * // t1 is a transaction\n   * Model.findAll({\n   *   where: ...,\n   *   transaction: t1,\n   *   lock: true,\n   *   skipLocked: true\n   * });\n   * # The query will now return any rows that aren't locked by another transaction\n   *\n   * @returns {object}\n   * @property UPDATE\n   * @property SHARE\n   * @property KEY_SHARE Postgres 9.3+ only\n   * @property NO_KEY_UPDATE Postgres 9.3+ only\n   */\n  static get LOCK() {\n    return {\n      UPDATE: 'UPDATE',\n      SHARE: 'SHARE',\n      KEY_SHARE: 'KEY SHARE',\n      NO_KEY_UPDATE: 'NO KEY UPDATE'\n    };\n  }\n\n  /**\n   * Please see {@link Transaction.LOCK}\n   */\n  get LOCK() {\n    return Transaction.LOCK;\n  }\n}\n\nmodule.exports = Transaction;\nmodule.exports.Transaction = Transaction;\nmodule.exports.default = Transaction;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils.js
===================================================================
--- backend/node_modules/sequelize/lib/utils.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,436 +1,0 @@
-"use strict";
-var __defProp = Object.defineProperty;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-const DataTypes = require("./data-types");
-const SqlString = require("./sql-string");
-const _ = require("lodash");
-const baseIsNative = require("lodash/_baseIsNative");
-const uuidv1 = require("uuid").v1;
-const uuidv4 = require("uuid").v4;
-const operators = require("./operators");
-const operatorsSet = new Set(Object.values(operators));
-let inflection = require("inflection");
-exports.classToInvokable = require("./utils/class-to-invokable").classToInvokable;
-exports.joinSQLFragments = require("./utils/join-sql-fragments").joinSQLFragments;
-function useInflection(_inflection) {
-  inflection = _inflection;
-}
-exports.useInflection = useInflection;
-function camelizeIf(str, condition) {
-  let result = str;
-  if (condition) {
-    result = camelize(str);
-  }
-  return result;
-}
-exports.camelizeIf = camelizeIf;
-function underscoredIf(str, condition) {
-  let result = str;
-  if (condition) {
-    result = underscore(str);
-  }
-  return result;
-}
-exports.underscoredIf = underscoredIf;
-function isPrimitive(val) {
-  const type = typeof val;
-  return ["string", "number", "boolean"].includes(type);
-}
-exports.isPrimitive = isPrimitive;
-function mergeDefaults(a, b) {
-  return _.mergeWith(a, b, (objectValue, sourceValue) => {
-    if (!_.isPlainObject(objectValue) && objectValue !== void 0) {
-      if (_.isFunction(objectValue) && baseIsNative(objectValue)) {
-        return sourceValue || objectValue;
-      }
-      return objectValue;
-    }
-  });
-}
-exports.mergeDefaults = mergeDefaults;
-function merge() {
-  const result = {};
-  for (const obj of arguments) {
-    _.forOwn(obj, (value, key) => {
-      if (value !== void 0) {
-        if (!result[key]) {
-          result[key] = value;
-        } else if (_.isPlainObject(value) && _.isPlainObject(result[key])) {
-          result[key] = merge(result[key], value);
-        } else if (Array.isArray(value) && Array.isArray(result[key])) {
-          result[key] = value.concat(result[key]);
-        } else {
-          result[key] = value;
-        }
-      }
-    });
-  }
-  return result;
-}
-exports.merge = merge;
-function spliceStr(str, index, count, add) {
-  return str.slice(0, index) + add + str.slice(index + count);
-}
-exports.spliceStr = spliceStr;
-function camelize(str) {
-  return str.trim().replace(/[-_\s]+(.)?/g, (match, c) => c.toUpperCase());
-}
-exports.camelize = camelize;
-function underscore(str) {
-  return inflection.underscore(str);
-}
-exports.underscore = underscore;
-function singularize(str) {
-  return inflection.singularize(str);
-}
-exports.singularize = singularize;
-function pluralize(str) {
-  return inflection.pluralize(str);
-}
-exports.pluralize = pluralize;
-function format(arr, dialect) {
-  const timeZone = null;
-  return SqlString.format(arr[0], arr.slice(1), timeZone, dialect);
-}
-exports.format = format;
-function formatNamedParameters(sql, parameters, dialect) {
-  const timeZone = null;
-  return SqlString.formatNamedParameters(sql, parameters, timeZone, dialect);
-}
-exports.formatNamedParameters = formatNamedParameters;
-function cloneDeep(obj, onlyPlain) {
-  obj = obj || {};
-  return _.cloneDeepWith(obj, (elem) => {
-    if (Array.isArray(elem) || _.isPlainObject(elem)) {
-      return void 0;
-    }
-    if (onlyPlain || typeof elem === "object") {
-      return elem;
-    }
-    if (elem && typeof elem.clone === "function") {
-      return elem.clone();
-    }
-  });
-}
-exports.cloneDeep = cloneDeep;
-function mapFinderOptions(options, Model) {
-  if (options.attributes && Array.isArray(options.attributes)) {
-    options.attributes = Model._injectDependentVirtualAttributes(options.attributes);
-    options.attributes = options.attributes.filter((v) => !Model._virtualAttributes.has(v));
-  }
-  mapOptionFieldNames(options, Model);
-  return options;
-}
-exports.mapFinderOptions = mapFinderOptions;
-function mapOptionFieldNames(options, Model) {
-  if (Array.isArray(options.attributes)) {
-    options.attributes = options.attributes.map((attr) => {
-      if (typeof attr !== "string")
-        return attr;
-      if (Model.rawAttributes[attr] && attr !== Model.rawAttributes[attr].field) {
-        return [Model.rawAttributes[attr].field, attr];
-      }
-      return attr;
-    });
-  }
-  if (options.where && _.isPlainObject(options.where)) {
-    options.where = mapWhereFieldNames(options.where, Model);
-  }
-  return options;
-}
-exports.mapOptionFieldNames = mapOptionFieldNames;
-function mapWhereFieldNames(attributes, Model) {
-  if (attributes) {
-    attributes = cloneDeep(attributes);
-    getComplexKeys(attributes).forEach((attribute) => {
-      const rawAttribute = Model.rawAttributes[attribute];
-      if (rawAttribute && rawAttribute.field !== rawAttribute.fieldName) {
-        attributes[rawAttribute.field] = attributes[attribute];
-        delete attributes[attribute];
-      }
-      if (_.isPlainObject(attributes[attribute]) && !(rawAttribute && (rawAttribute.type instanceof DataTypes.HSTORE || rawAttribute.type instanceof DataTypes.JSON))) {
-        attributes[attribute] = mapOptionFieldNames({
-          where: attributes[attribute]
-        }, Model).where;
-      }
-      if (Array.isArray(attributes[attribute])) {
-        attributes[attribute].forEach((where, index) => {
-          if (_.isPlainObject(where)) {
-            attributes[attribute][index] = mapWhereFieldNames(where, Model);
-          }
-        });
-      }
-    });
-  }
-  return attributes;
-}
-exports.mapWhereFieldNames = mapWhereFieldNames;
-function mapValueFieldNames(dataValues, fields, Model) {
-  const values = {};
-  for (const attr of fields) {
-    if (dataValues[attr] !== void 0 && !Model._virtualAttributes.has(attr)) {
-      if (Model.rawAttributes[attr] && Model.rawAttributes[attr].field && Model.rawAttributes[attr].field !== attr) {
-        values[Model.rawAttributes[attr].field] = dataValues[attr];
-      } else {
-        values[attr] = dataValues[attr];
-      }
-    }
-  }
-  return values;
-}
-exports.mapValueFieldNames = mapValueFieldNames;
-function isColString(value) {
-  return typeof value === "string" && value[0] === "$" && value[value.length - 1] === "$";
-}
-exports.isColString = isColString;
-function canTreatArrayAsAnd(arr) {
-  return arr.some((arg) => _.isPlainObject(arg) || arg instanceof Where);
-}
-exports.canTreatArrayAsAnd = canTreatArrayAsAnd;
-function combineTableNames(tableName1, tableName2) {
-  return tableName1.toLowerCase() < tableName2.toLowerCase() ? tableName1 + tableName2 : tableName2 + tableName1;
-}
-exports.combineTableNames = combineTableNames;
-function toDefaultValue(value, dialect) {
-  if (typeof value === "function") {
-    const tmp = value();
-    if (tmp instanceof DataTypes.ABSTRACT) {
-      return tmp.toSql();
-    }
-    return tmp;
-  }
-  if (value instanceof DataTypes.UUIDV1) {
-    return uuidv1();
-  }
-  if (value instanceof DataTypes.UUIDV4) {
-    return uuidv4();
-  }
-  if (value instanceof DataTypes.NOW) {
-    return now(dialect);
-  }
-  if (Array.isArray(value)) {
-    return value.slice();
-  }
-  if (_.isPlainObject(value)) {
-    return __spreadValues({}, value);
-  }
-  return value;
-}
-exports.toDefaultValue = toDefaultValue;
-function defaultValueSchemable(value) {
-  if (value === void 0) {
-    return false;
-  }
-  if (value instanceof DataTypes.NOW) {
-    return false;
-  }
-  if (value instanceof DataTypes.UUIDV1 || value instanceof DataTypes.UUIDV4) {
-    return false;
-  }
-  return typeof value !== "function";
-}
-exports.defaultValueSchemable = defaultValueSchemable;
-function removeNullValuesFromHash(hash, omitNull, options) {
-  let result = hash;
-  options = options || {};
-  options.allowNull = options.allowNull || [];
-  if (omitNull) {
-    const _hash = {};
-    _.forIn(hash, (val, key) => {
-      if (options.allowNull.includes(key) || key.endsWith("Id") || val !== null && val !== void 0) {
-        _hash[key] = val;
-      }
-    });
-    result = _hash;
-  }
-  return result;
-}
-exports.removeNullValuesFromHash = removeNullValuesFromHash;
-const dialects = /* @__PURE__ */ new Set(["mariadb", "mysql", "postgres", "sqlite", "mssql", "db2", "oracle"]);
-function now(dialect) {
-  const d = new Date();
-  if (!dialects.has(dialect)) {
-    d.setMilliseconds(0);
-  }
-  return d;
-}
-exports.now = now;
-const TICK_CHAR = "`";
-exports.TICK_CHAR = TICK_CHAR;
-function addTicks(s, tickChar) {
-  tickChar = tickChar || TICK_CHAR;
-  return tickChar + removeTicks(s, tickChar) + tickChar;
-}
-exports.addTicks = addTicks;
-function removeTicks(s, tickChar) {
-  tickChar = tickChar || TICK_CHAR;
-  return s.replace(new RegExp(tickChar, "g"), "");
-}
-exports.removeTicks = removeTicks;
-function flattenObjectDeep(value) {
-  if (!_.isPlainObject(value))
-    return value;
-  const flattenedObj = {};
-  function flattenObject(obj, subPath) {
-    Object.keys(obj).forEach((key) => {
-      const pathToProperty = subPath ? `${subPath}.${key}` : key;
-      if (typeof obj[key] === "object" && obj[key] !== null) {
-        flattenObject(obj[key], pathToProperty);
-      } else {
-        flattenedObj[pathToProperty] = _.get(obj, key);
-      }
-    });
-    return flattenedObj;
-  }
-  return flattenObject(value, void 0);
-}
-exports.flattenObjectDeep = flattenObjectDeep;
-class SequelizeMethod {
-}
-exports.SequelizeMethod = SequelizeMethod;
-class Fn extends SequelizeMethod {
-  constructor(fn, args) {
-    super();
-    this.fn = fn;
-    this.args = args;
-  }
-  clone() {
-    return new Fn(this.fn, this.args);
-  }
-}
-exports.Fn = Fn;
-class Col extends SequelizeMethod {
-  constructor(col, ...args) {
-    super();
-    if (args.length > 0) {
-      col = args;
-    }
-    this.col = col;
-  }
-}
-exports.Col = Col;
-class Cast extends SequelizeMethod {
-  constructor(val, type, json) {
-    super();
-    this.val = val;
-    this.type = (type || "").trim();
-    this.json = json || false;
-  }
-}
-exports.Cast = Cast;
-class Literal extends SequelizeMethod {
-  constructor(val) {
-    super();
-    this.val = val;
-  }
-}
-exports.Literal = Literal;
-class Json extends SequelizeMethod {
-  constructor(conditionsOrPath, value) {
-    super();
-    if (_.isObject(conditionsOrPath)) {
-      this.conditions = conditionsOrPath;
-    } else {
-      this.path = conditionsOrPath;
-      if (value) {
-        this.value = value;
-      }
-    }
-  }
-}
-exports.Json = Json;
-class Where extends SequelizeMethod {
-  constructor(attribute, comparator, logic) {
-    super();
-    if (logic === void 0) {
-      logic = comparator;
-      comparator = "=";
-    }
-    this.attribute = attribute;
-    this.comparator = comparator;
-    this.logic = logic;
-  }
-}
-exports.Where = Where;
-function getOperators(obj) {
-  return Object.getOwnPropertySymbols(obj).filter((s) => operatorsSet.has(s));
-}
-exports.getOperators = getOperators;
-function getComplexKeys(obj) {
-  return getOperators(obj).concat(Object.keys(obj));
-}
-exports.getComplexKeys = getComplexKeys;
-function getComplexSize(obj) {
-  return Array.isArray(obj) ? obj.length : getComplexKeys(obj).length;
-}
-exports.getComplexSize = getComplexSize;
-function isWhereEmpty(obj) {
-  return !!obj && _.isEmpty(obj) && getOperators(obj).length === 0;
-}
-exports.isWhereEmpty = isWhereEmpty;
-function generateEnumName(tableName, columnName) {
-  return `enum_${tableName}_${columnName}`;
-}
-exports.generateEnumName = generateEnumName;
-function camelizeObjectKeys(obj) {
-  const newObj = new Object();
-  Object.keys(obj).forEach((key) => {
-    newObj[camelize(key)] = obj[key];
-  });
-  return newObj;
-}
-exports.camelizeObjectKeys = camelizeObjectKeys;
-function defaults(object, ...sources) {
-  object = Object(object);
-  sources.forEach((source) => {
-    if (source) {
-      source = Object(source);
-      getComplexKeys(source).forEach((key) => {
-        const value = object[key];
-        if (value === void 0 || _.eq(value, Object.prototype[key]) && !Object.prototype.hasOwnProperty.call(object, key)) {
-          object[key] = source[key];
-        }
-      });
-    }
-  });
-  return object;
-}
-exports.defaults = defaults;
-function nameIndex(index, tableName) {
-  if (tableName.tableName)
-    tableName = tableName.tableName;
-  if (!Object.prototype.hasOwnProperty.call(index, "name")) {
-    const fields = index.fields.map((field) => typeof field === "string" ? field : field.name || field.attribute);
-    index.name = underscore(`${tableName}_${fields.join("_")}`);
-  }
-  return index;
-}
-exports.nameIndex = nameIndex;
-function intersects(arr1, arr2) {
-  return arr1.some((v) => arr2.includes(v));
-}
-exports.intersects = intersects;
-function safeStringifyJson(value) {
-  return JSON.stringify(value, (key, value2) => {
-    if (typeof value2 === "bigint") {
-      return String(value2);
-    }
-    return value2;
-  });
-}
-exports.safeStringifyJson = safeStringifyJson;
-//# sourceMappingURL=utils.js.map
Index: ckend/node_modules/sequelize/lib/utils.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../src/utils.js"],
-  "sourcesContent": ["'use strict';\n\nconst DataTypes = require('./data-types');\nconst SqlString = require('./sql-string');\nconst _ = require('lodash');\nconst baseIsNative = require('lodash/_baseIsNative');\nconst uuidv1 = require('uuid').v1;\nconst uuidv4 = require('uuid').v4;\nconst operators = require('./operators');\nconst operatorsSet = new Set(Object.values(operators));\n\nlet inflection = require('inflection');\n\nexports.classToInvokable = require('./utils/class-to-invokable').classToInvokable;\nexports.joinSQLFragments = require('./utils/join-sql-fragments').joinSQLFragments;\n\nfunction useInflection(_inflection) {\n  inflection = _inflection;\n}\nexports.useInflection = useInflection;\n\nfunction camelizeIf(str, condition) {\n  let result = str;\n\n  if (condition) {\n    result = camelize(str);\n  }\n\n  return result;\n}\nexports.camelizeIf = camelizeIf;\n\nfunction underscoredIf(str, condition) {\n  let result = str;\n\n  if (condition) {\n    result = underscore(str);\n  }\n\n  return result;\n}\nexports.underscoredIf = underscoredIf;\n\nfunction isPrimitive(val) {\n  const type = typeof val;\n  return ['string', 'number', 'boolean'].includes(type);\n}\nexports.isPrimitive = isPrimitive;\n\n// Same concept as _.merge, but don't overwrite properties that have already been assigned\nfunction mergeDefaults(a, b) {\n  return _.mergeWith(a, b, (objectValue, sourceValue) => {\n    // If it's an object, let _ handle it this time, we will be called again for each property\n    if (!_.isPlainObject(objectValue) && objectValue !== undefined) {\n      // _.isNative includes a check for core-js and throws an error if present.\n      // Depending on _baseIsNative bypasses the core-js check.\n      if (_.isFunction(objectValue) && baseIsNative(objectValue)) {\n        return sourceValue || objectValue;\n      }\n      return objectValue;\n    }\n  });\n}\nexports.mergeDefaults = mergeDefaults;\n\n// An alternative to _.merge, which doesn't clone its arguments\n// Cloning is a bad idea because options arguments may contain references to sequelize\n// models - which again reference database libs which don't like to be cloned (in particular pg-native)\nfunction merge() {\n  const result = {};\n\n  for (const obj of arguments) {\n    _.forOwn(obj, (value, key) => {\n      if (value !== undefined) {\n        if (!result[key]) {\n          result[key] = value;\n        } else if (_.isPlainObject(value) && _.isPlainObject(result[key])) {\n          result[key] = merge(result[key], value);\n        } else if (Array.isArray(value) && Array.isArray(result[key])) {\n          result[key] = value.concat(result[key]);\n        } else {\n          result[key] = value;\n        }\n      }\n    });\n  }\n\n  return result;\n}\nexports.merge = merge;\n\nfunction spliceStr(str, index, count, add) {\n  return str.slice(0, index) + add + str.slice(index + count);\n}\nexports.spliceStr = spliceStr;\n\nfunction camelize(str) {\n  return str.trim().replace(/[-_\\s]+(.)?/g, (match, c) => c.toUpperCase());\n}\nexports.camelize = camelize;\n\nfunction underscore(str) {\n  return inflection.underscore(str);\n}\nexports.underscore = underscore;\n\nfunction singularize(str) {\n  return inflection.singularize(str);\n}\nexports.singularize = singularize;\n\nfunction pluralize(str) {\n  return inflection.pluralize(str);\n}\nexports.pluralize = pluralize;\n\n/**\n * @deprecated use {@link injectReplacements} instead. This method has been removed in v7.\n *\n * @param {unknown[]} arr - first item is the SQL, following items are the positional replacements.\n * @param {AbstractDialect} dialect\n */\nfunction format(arr, dialect) {\n  const timeZone = null;\n  // Make a clone of the array beacuse format modifies the passed args\n  return SqlString.format(arr[0], arr.slice(1), timeZone, dialect);\n}\nexports.format = format;\n\n/**\n * @deprecated use {@link injectReplacements} instead. This method has been removed in v7.\n *\n * @param {string} sql\n * @param {object} parameters\n * @param {AbstractDialect} dialect\n */\nfunction formatNamedParameters(sql, parameters, dialect) {\n  const timeZone = null;\n  return SqlString.formatNamedParameters(sql, parameters, timeZone, dialect);\n}\nexports.formatNamedParameters = formatNamedParameters;\n\nfunction cloneDeep(obj, onlyPlain) {\n  obj = obj || {};\n  return _.cloneDeepWith(obj, elem => {\n    // Do not try to customize cloning of arrays or POJOs\n    if (Array.isArray(elem) || _.isPlainObject(elem)) {\n      return undefined;\n    }\n\n    // If we specified to clone only plain objects & arrays, we ignore everyhing else\n    // In any case, don't clone stuff that's an object, but not a plain one - fx example sequelize models and instances\n    if (onlyPlain || typeof elem === 'object') {\n      return elem;\n    }\n\n    // Preserve special data-types like `fn` across clones. _.get() is used for checking up the prototype chain\n    if (elem && typeof elem.clone === 'function') {\n      return elem.clone();\n    }\n  });\n}\nexports.cloneDeep = cloneDeep;\n\n/* Expand and normalize finder options */\nfunction mapFinderOptions(options, Model) {\n  if (options.attributes && Array.isArray(options.attributes)) {\n    options.attributes = Model._injectDependentVirtualAttributes(options.attributes);\n    options.attributes = options.attributes.filter(v => !Model._virtualAttributes.has(v));\n  }\n\n  mapOptionFieldNames(options, Model);\n\n  return options;\n}\nexports.mapFinderOptions = mapFinderOptions;\n\n/* Used to map field names in attributes and where conditions */\nfunction mapOptionFieldNames(options, Model) {\n  if (Array.isArray(options.attributes)) {\n    options.attributes = options.attributes.map(attr => {\n      // Object lookups will force any variable to strings, we don't want that for special objects etc\n      if (typeof attr !== 'string') return attr;\n      // Map attributes to aliased syntax attributes\n      if (Model.rawAttributes[attr] && attr !== Model.rawAttributes[attr].field) {\n        return [Model.rawAttributes[attr].field, attr];\n      }\n      return attr;\n    });\n  }\n\n  if (options.where && _.isPlainObject(options.where)) {\n    options.where = mapWhereFieldNames(options.where, Model);\n  }\n\n  return options;\n}\nexports.mapOptionFieldNames = mapOptionFieldNames;\n\nfunction mapWhereFieldNames(attributes, Model) {\n  if (attributes) {\n    attributes = cloneDeep(attributes);\n    getComplexKeys(attributes).forEach(attribute => {\n      const rawAttribute = Model.rawAttributes[attribute];\n\n      if (rawAttribute && rawAttribute.field !== rawAttribute.fieldName) {\n        attributes[rawAttribute.field] = attributes[attribute];\n        delete attributes[attribute];\n      }\n\n      if (_.isPlainObject(attributes[attribute])\n        && !(rawAttribute && (\n          rawAttribute.type instanceof DataTypes.HSTORE\n          || rawAttribute.type instanceof DataTypes.JSON))) { // Prevent renaming of HSTORE & JSON fields\n        attributes[attribute] = mapOptionFieldNames({\n          where: attributes[attribute]\n        }, Model).where;\n      }\n\n      if (Array.isArray(attributes[attribute])) {\n        attributes[attribute].forEach((where, index) => {\n          if (_.isPlainObject(where)) {\n            attributes[attribute][index] = mapWhereFieldNames(where, Model);\n          }\n        });\n      }\n\n    });\n  }\n\n  return attributes;\n}\nexports.mapWhereFieldNames = mapWhereFieldNames;\n\n/* Used to map field names in values */\nfunction mapValueFieldNames(dataValues, fields, Model) {\n  const values = {};\n\n  for (const attr of fields) {\n    if (dataValues[attr] !== undefined && !Model._virtualAttributes.has(attr)) {\n      // Field name mapping\n      if (Model.rawAttributes[attr] && Model.rawAttributes[attr].field && Model.rawAttributes[attr].field !== attr) {\n        values[Model.rawAttributes[attr].field] = dataValues[attr];\n      } else {\n        values[attr] = dataValues[attr];\n      }\n    }\n  }\n\n  return values;\n}\nexports.mapValueFieldNames = mapValueFieldNames;\n\nfunction isColString(value) {\n  return typeof value === 'string' && value[0] === '$' && value[value.length - 1] === '$';\n}\nexports.isColString = isColString;\n\nfunction canTreatArrayAsAnd(arr) {\n  return arr.some(arg => _.isPlainObject(arg) || arg instanceof Where);\n}\nexports.canTreatArrayAsAnd = canTreatArrayAsAnd;\n\nfunction combineTableNames(tableName1, tableName2) {\n  return tableName1.toLowerCase() < tableName2.toLowerCase() ? tableName1 + tableName2 : tableName2 + tableName1;\n}\nexports.combineTableNames = combineTableNames;\n\nfunction toDefaultValue(value, dialect) {\n  if (typeof value === 'function') {\n    const tmp = value();\n    if (tmp instanceof DataTypes.ABSTRACT) {\n      return tmp.toSql();\n    }\n    return tmp;\n  }\n  if (value instanceof DataTypes.UUIDV1) {\n    return uuidv1();\n  }\n  if (value instanceof DataTypes.UUIDV4) {\n    return uuidv4();\n  }\n  if (value instanceof DataTypes.NOW) {\n    return now(dialect);\n  }\n  if (Array.isArray(value)) {\n    return value.slice();\n  }\n  if (_.isPlainObject(value)) {\n    return { ...value };\n  }\n  return value;\n}\nexports.toDefaultValue = toDefaultValue;\n\n/**\n * Determine if the default value provided exists and can be described\n * in a db schema using the DEFAULT directive.\n *\n * @param  {*} value Any default value.\n * @returns {boolean} yes / no.\n * @private\n */\nfunction defaultValueSchemable(value) {\n  if (value === undefined) { return false; }\n\n  // TODO this will be schemable when all supported db\n  // have been normalized for this case\n  if (value instanceof DataTypes.NOW) { return false; }\n\n  if (value instanceof DataTypes.UUIDV1 || value instanceof DataTypes.UUIDV4) { return false; }\n\n  return typeof value !== 'function';\n}\nexports.defaultValueSchemable = defaultValueSchemable;\n\nfunction removeNullValuesFromHash(hash, omitNull, options) {\n  let result = hash;\n\n  options = options || {};\n  options.allowNull = options.allowNull || [];\n\n  if (omitNull) {\n    const _hash = {};\n\n    _.forIn(hash, (val, key) => {\n      if (options.allowNull.includes(key) || key.endsWith('Id') || val !== null && val !== undefined) {\n        _hash[key] = val;\n      }\n    });\n\n    result = _hash;\n  }\n\n  return result;\n}\nexports.removeNullValuesFromHash = removeNullValuesFromHash;\n\nconst dialects = new Set(['mariadb', 'mysql', 'postgres', 'sqlite', 'mssql', 'db2', 'oracle']);\n\nfunction now(dialect) {\n  const d = new Date();\n  if (!dialects.has(dialect)) {\n    d.setMilliseconds(0);\n  }\n  return d;\n}\nexports.now = now;\n\n// Note: Use the `quoteIdentifier()` and `escape()` methods on the\n// `QueryInterface` instead for more portable code.\n\nconst TICK_CHAR = '`';\nexports.TICK_CHAR = TICK_CHAR;\n\nfunction addTicks(s, tickChar) {\n  tickChar = tickChar || TICK_CHAR;\n  return tickChar + removeTicks(s, tickChar) + tickChar;\n}\nexports.addTicks = addTicks;\n\nfunction removeTicks(s, tickChar) {\n  tickChar = tickChar || TICK_CHAR;\n  return s.replace(new RegExp(tickChar, 'g'), '');\n}\nexports.removeTicks = removeTicks;\n\n/**\n * Receives a tree-like object and returns a plain object which depth is 1.\n *\n * - Input:\n *\n *  {\n *    name: 'John',\n *    address: {\n *      street: 'Fake St. 123',\n *      coordinates: {\n *        longitude: 55.6779627,\n *        latitude: 12.5964313\n *      }\n *    }\n *  }\n *\n * - Output:\n *\n *  {\n *    name: 'John',\n *    address.street: 'Fake St. 123',\n *    address.coordinates.latitude: 55.6779627,\n *    address.coordinates.longitude: 12.5964313\n *  }\n *\n * @param {object} value an Object\n * @returns {object} a flattened object\n * @private\n */\nfunction flattenObjectDeep(value) {\n  if (!_.isPlainObject(value)) return value;\n  const flattenedObj = {};\n\n  function flattenObject(obj, subPath) {\n    Object.keys(obj).forEach(key => {\n      const pathToProperty = subPath ? `${subPath}.${key}` : key;\n      if (typeof obj[key] === 'object' && obj[key] !== null) {\n        flattenObject(obj[key], pathToProperty);\n      } else {\n        flattenedObj[pathToProperty] = _.get(obj, key);\n      }\n    });\n    return flattenedObj;\n  }\n\n  return flattenObject(value, undefined);\n}\nexports.flattenObjectDeep = flattenObjectDeep;\n\n/**\n * Utility functions for representing SQL functions, and columns that should be escaped.\n * Please do not use these functions directly, use Sequelize.fn and Sequelize.col instead.\n *\n * @private\n */\nclass SequelizeMethod {}\nexports.SequelizeMethod = SequelizeMethod;\n\nclass Fn extends SequelizeMethod {\n  constructor(fn, args) {\n    super();\n    this.fn = fn;\n    this.args = args;\n  }\n  clone() {\n    return new Fn(this.fn, this.args);\n  }\n}\nexports.Fn = Fn;\n\nclass Col extends SequelizeMethod {\n  constructor(col, ...args) {\n    super();\n    if (args.length > 0) {\n      col = args;\n    }\n    this.col = col;\n  }\n}\nexports.Col = Col;\n\nclass Cast extends SequelizeMethod {\n  constructor(val, type, json) {\n    super();\n    this.val = val;\n    this.type = (type || '').trim();\n    this.json = json || false;\n  }\n}\nexports.Cast = Cast;\n\nclass Literal extends SequelizeMethod {\n  constructor(val) {\n    super();\n    this.val = val;\n  }\n}\nexports.Literal = Literal;\n\nclass Json extends SequelizeMethod {\n  constructor(conditionsOrPath, value) {\n    super();\n    if (_.isObject(conditionsOrPath)) {\n      this.conditions = conditionsOrPath;\n    } else {\n      this.path = conditionsOrPath;\n      if (value) {\n        this.value = value;\n      }\n    }\n  }\n}\nexports.Json = Json;\n\nclass Where extends SequelizeMethod {\n  constructor(attribute, comparator, logic) {\n    super();\n    if (logic === undefined) {\n      logic = comparator;\n      comparator = '=';\n    }\n\n    this.attribute = attribute;\n    this.comparator = comparator;\n    this.logic = logic;\n  }\n}\nexports.Where = Where;\n\n//Collection of helper methods to make it easier to work with symbol operators\n\n/**\n * getOperators\n *\n * @param  {object} obj\n * @returns {Array<symbol>} All operators properties of obj\n * @private\n */\nfunction getOperators(obj) {\n  return Object.getOwnPropertySymbols(obj).filter(s => operatorsSet.has(s));\n}\nexports.getOperators = getOperators;\n\n/**\n * getComplexKeys\n *\n * @param  {object} obj\n * @returns {Array<string|symbol>} All keys including operators\n * @private\n */\nfunction getComplexKeys(obj) {\n  return getOperators(obj).concat(Object.keys(obj));\n}\nexports.getComplexKeys = getComplexKeys;\n\n/**\n * getComplexSize\n *\n * @param  {object|Array} obj\n * @returns {number}      Length of object properties including operators if obj is array returns its length\n * @private\n */\nfunction getComplexSize(obj) {\n  return Array.isArray(obj) ? obj.length : getComplexKeys(obj).length;\n}\nexports.getComplexSize = getComplexSize;\n\n/**\n * Returns true if a where clause is empty, even with Symbols\n *\n * @param  {object} obj\n * @returns {boolean}\n * @private\n */\nfunction isWhereEmpty(obj) {\n  return !!obj && _.isEmpty(obj) && getOperators(obj).length === 0;\n}\nexports.isWhereEmpty = isWhereEmpty;\n\n/**\n * Returns ENUM name by joining table and column name\n *\n * @param {string} tableName\n * @param {string} columnName\n * @returns {string}\n * @private\n */\nfunction generateEnumName(tableName, columnName) {\n  return `enum_${tableName}_${columnName}`;\n}\nexports.generateEnumName = generateEnumName;\n\n/**\n * Returns an new Object which keys are camelized\n *\n * @param {object} obj\n * @returns {string}\n * @private\n */\nfunction camelizeObjectKeys(obj) {\n  const newObj = new Object();\n  Object.keys(obj).forEach(key => {\n    newObj[camelize(key)] = obj[key];\n  });\n  return newObj;\n}\nexports.camelizeObjectKeys = camelizeObjectKeys;\n\n/**\n * Assigns own and inherited enumerable string and symbol keyed properties of source\n * objects to the destination object.\n *\n * https://lodash.com/docs/4.17.4#defaults\n *\n * **Note:** This method mutates `object`.\n *\n * @param {object} object The destination object.\n * @param {...object} [sources] The source objects.\n * @returns {object} Returns `object`.\n * @private\n */\nfunction defaults(object, ...sources) {\n  object = Object(object);\n\n  sources.forEach(source => {\n    if (source) {\n      source = Object(source);\n\n      getComplexKeys(source).forEach(key => {\n        const value = object[key];\n        if (\n          value === undefined ||\n            _.eq(value, Object.prototype[key]) &&\n            !Object.prototype.hasOwnProperty.call(object, key)\n\n        ) {\n          object[key] = source[key];\n        }\n      });\n    }\n  });\n\n  return object;\n}\nexports.defaults = defaults;\n\n/**\n *\n * @param {object} index\n * @param {Array}  index.fields\n * @param {string} [index.name]\n * @param {string|object} tableName\n *\n * @returns {object}\n * @private\n */\nfunction nameIndex(index, tableName) {\n  if (tableName.tableName) tableName = tableName.tableName;\n\n  if (!Object.prototype.hasOwnProperty.call(index, 'name')) {\n    const fields = index.fields.map(\n      field => typeof field === 'string' ? field : field.name || field.attribute\n    );\n    index.name = underscore(`${tableName}_${fields.join('_')}`);\n  }\n\n  return index;\n}\nexports.nameIndex = nameIndex;\n\n/**\n * Checks if 2 arrays intersect.\n *\n * @param {Array} arr1\n * @param {Array} arr2\n * @private\n */\nfunction intersects(arr1, arr2) {\n  return arr1.some(v => arr2.includes(v));\n}\nexports.intersects = intersects;\n\n/**\n * Stringify a value as JSON with some differences:\n * - bigints are stringified as a json string. (`safeStringifyJson({ val: 1n })` outputs `'{ \"val\": \"1\" }'`).\n *   This is because of a decision by TC39 to not support bigint in JSON.stringify https://github.com/tc39/proposal-bigint/issues/24\n *\n * @param {any} value the value to stringify.\n * @returns {string} the resulting json.\n */\nfunction safeStringifyJson(value /* : any */) /* : string */ {\n  return JSON.stringify(value, (key, value) => {\n    if (typeof value === 'bigint') {\n      return String(value);\n    }\n\n    return value;\n  });\n}\n\nexports.safeStringifyJson = safeStringifyJson;\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/class-to-invokable.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/class-to-invokable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-var __defProp = Object.defineProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-__export(exports, {
-  classToInvokable: () => classToInvokable
-});
-function classToInvokable(Class) {
-  return new Proxy(Class, {
-    apply(_target, _thisArg, args) {
-      return new Class(...args);
-    },
-    construct(_target, args) {
-      return new Class(...args);
-    }
-  });
-}
-//# sourceMappingURL=class-to-invokable.js.map
Index: ckend/node_modules/sequelize/lib/utils/class-to-invokable.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/class-to-invokable.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/class-to-invokable.ts"],
-  "sourcesContent": ["/**\n * Utility type for a class which can be called in addion to being used as a constructor.\n */\ninterface Invokeable<Args extends Array<any>, Instance> {\n  (...args: Args): Instance;\n  new (...args: Args): Instance;\n}\n\n/**\n * Wraps a constructor to not need the `new` keyword using a proxy.\n * Only used for data types.\n *\n * @param {ProxyConstructor} Class The class instance to wrap as invocable.\n * @returns {Proxy} Wrapped class instance.\n * @private\n */\nexport function classToInvokable<Args extends Array<any>, Instance extends object>(\n  Class: new (...args: Args) => Instance\n): Invokeable<Args, Instance> {\n  return new Proxy<Invokeable<Args, Instance>>(Class as any, {\n    apply(_target, _thisArg, args: Args) {\n      return new Class(...args);\n    },\n    construct(_target, args: Args) {\n      return new Class(...args);\n    }\n  });\n}\n"],
-  "mappings": ";;;;;;;AAAA;AAAA;AAAA;AAgBO,0BACL,OAC4B;AAC5B,SAAO,IAAI,MAAkC,OAAc;AAAA,IACzD,MAAM,SAAS,UAAU,MAAY;AACnC,aAAO,IAAI,MAAM,GAAG;AAAA;AAAA,IAEtB,UAAU,SAAS,MAAY;AAC7B,aAAO,IAAI,MAAM,GAAG;AAAA;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/deprecations.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/deprecations.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  noBoolOperatorAliases: () => noBoolOperatorAliases,
-  noDoubleNestedGroup: () => noDoubleNestedGroup,
-  noStringOperators: () => noStringOperators,
-  noTrueLogging: () => noTrueLogging,
-  unsupportedEngine: () => unsupportedEngine
-});
-var import_util = __toModule(require("util"));
-const noop = () => {
-};
-const noTrueLogging = (0, import_util.deprecate)(noop, "The logging-option should be either a function or false. Default: console.log", "SEQUELIZE0002");
-const noStringOperators = (0, import_util.deprecate)(noop, "String based operators are deprecated. Please use Symbol based operators for better security, read more at https://sequelize.org/master/manual/querying.html#operators", "SEQUELIZE0003");
-const noBoolOperatorAliases = (0, import_util.deprecate)(noop, "A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.", "SEQUELIZE0004");
-const noDoubleNestedGroup = (0, import_util.deprecate)(noop, "Passing a double nested nested array to `group` is unsupported and will be removed in v6.", "SEQUELIZE0005");
-const unsupportedEngine = (0, import_util.deprecate)(noop, "This database engine version is not supported, please update your database server. More information https://github.com/sequelize/sequelize/blob/main/ENGINE.md", "SEQUELIZE0006");
-//# sourceMappingURL=deprecations.js.map
Index: ckend/node_modules/sequelize/lib/utils/deprecations.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/deprecations.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/deprecations.ts"],
-  "sourcesContent": ["import { deprecate } from 'util';\n\nconst noop = () => { /* noop */ };\n\nexport const noTrueLogging = deprecate(noop, 'The logging-option should be either a function or false. Default: console.log', 'SEQUELIZE0002');\nexport const noStringOperators = deprecate(noop, 'String based operators are deprecated. Please use Symbol based operators for better security, read more at https://sequelize.org/master/manual/querying.html#operators', 'SEQUELIZE0003');\nexport const noBoolOperatorAliases = deprecate(noop, 'A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.', 'SEQUELIZE0004');\nexport const noDoubleNestedGroup = deprecate(noop, 'Passing a double nested nested array to `group` is unsupported and will be removed in v6.', 'SEQUELIZE0005');\nexport const unsupportedEngine = deprecate(noop, 'This database engine version is not supported, please update your database server. More information https://github.com/sequelize/sequelize/blob/main/ENGINE.md', 'SEQUELIZE0006');\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAE1B,MAAM,OAAO,MAAM;AAAA;AAEZ,MAAM,gBAAgB,2BAAU,MAAM,iFAAiF;AACvH,MAAM,oBAAoB,2BAAU,MAAM,0KAA0K;AACpN,MAAM,wBAAwB,2BAAU,MAAM,0GAA0G;AACxJ,MAAM,sBAAsB,2BAAU,MAAM,6FAA6F;AACzI,MAAM,oBAAoB,2BAAU,MAAM,kKAAkK;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/join-sql-fragments.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/join-sql-fragments.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,68 +1,0 @@
-var __defProp = Object.defineProperty;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  JoinSQLFragmentsError: () => JoinSQLFragmentsError,
-  joinSQLFragments: () => joinSQLFragments
-});
-function doesNotWantLeadingSpace(str) {
-  return /^[;,)]/.test(str);
-}
-function doesNotWantTrailingSpace(str) {
-  return /\($/.test(str);
-}
-function singleSpaceJoinHelper(parts) {
-  return parts.reduce(({ skipNextLeadingSpace, result }, part) => {
-    if (skipNextLeadingSpace || doesNotWantLeadingSpace(part)) {
-      result += part.trim();
-    } else {
-      result += ` ${part.trim()}`;
-    }
-    return {
-      skipNextLeadingSpace: doesNotWantTrailingSpace(part),
-      result
-    };
-  }, {
-    skipNextLeadingSpace: true,
-    result: ""
-  }).result;
-}
-function joinSQLFragments(array) {
-  if (array.length === 0)
-    return "";
-  const truthyArray = array.filter((x) => !!x);
-  const flattenedArray = truthyArray.map((fragment) => {
-    if (Array.isArray(fragment)) {
-      return joinSQLFragments(fragment);
-    }
-    return fragment;
-  });
-  for (const fragment of flattenedArray) {
-    if (fragment && typeof fragment !== "string") {
-      throw new JoinSQLFragmentsError(flattenedArray, fragment, `Tried to construct a SQL string with a non-string, non-falsy fragment (${fragment}).`);
-    }
-  }
-  const trimmedArray = flattenedArray.map((x) => x.trim());
-  const nonEmptyStringArray = trimmedArray.filter((x) => x !== "");
-  return singleSpaceJoinHelper(nonEmptyStringArray);
-}
-class JoinSQLFragmentsError extends TypeError {
-  constructor(args, fragment, message) {
-    super(message);
-    __publicField(this, "args");
-    __publicField(this, "fragment");
-    this.args = args;
-    this.fragment = fragment;
-    this.name = "JoinSQLFragmentsError";
-  }
-}
-//# sourceMappingURL=join-sql-fragments.js.map
Index: ckend/node_modules/sequelize/lib/utils/join-sql-fragments.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/join-sql-fragments.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/join-sql-fragments.ts"],
-  "sourcesContent": ["import { SQLFragment, TruthySQLFragment } from '../generic/sql-fragment';\n\nfunction doesNotWantLeadingSpace(str: string): boolean {\n  return /^[;,)]/.test(str);\n}\nfunction doesNotWantTrailingSpace(str: string): boolean {\n  return /\\($/.test(str);\n}\n\n/**\n * Joins an array of strings with a single space between them,\n * except for:\n *\n * - Strings starting with ';', ',' and ')', which do not get a leading space.\n * - Strings ending with '(', which do not get a trailing space.\n *\n * @param {string[]} parts\n * @returns {string}\n * @private\n */\nfunction singleSpaceJoinHelper(parts: string[]): string {\n  return parts.reduce(\n    ({ skipNextLeadingSpace, result }, part) => {\n      if (skipNextLeadingSpace || doesNotWantLeadingSpace(part)) {\n        result += part.trim();\n      } else {\n        result += ` ${part.trim()}`;\n      }\n      return {\n        skipNextLeadingSpace: doesNotWantTrailingSpace(part),\n        result\n      };\n    },\n    {\n      skipNextLeadingSpace: true,\n      result: ''\n    }\n  ).result;\n}\n\n/**\n * Joins an array with a single space, auto trimming when needed.\n *\n * Certain elements do not get leading/trailing spaces.\n *\n * @param {SQLFragment[]} array The array to be joined. Falsy values are skipped. If an\n * element is another array, this function will be called recursively on that array.\n * Otherwise, if a non-string, non-falsy value is present, a TypeError will be thrown.\n *\n * @returns {string} The joined string.\n *\n * @private\n */\nexport function joinSQLFragments(array: SQLFragment[]): string {\n  if (array.length === 0) return '';\n\n  const truthyArray: TruthySQLFragment[] = array.filter(\n    (x): x is string | SQLFragment[] => !!x\n  );\n  const flattenedArray: string[] = truthyArray.map(\n    (fragment: TruthySQLFragment) => {\n      if (Array.isArray(fragment)) {\n        return joinSQLFragments(fragment);\n      }\n\n      return fragment;\n    }\n  );\n\n  // Ensure strings\n  for (const fragment of flattenedArray) {\n    if (fragment && typeof fragment !== 'string') {\n      throw new JoinSQLFragmentsError(\n        flattenedArray,\n        fragment,\n        `Tried to construct a SQL string with a non-string, non-falsy fragment (${fragment}).`\n      );\n    }\n  }\n\n  // Trim fragments\n  const trimmedArray = flattenedArray.map(x => x.trim());\n\n  // Skip full-whitespace fragments (empty after the above trim)\n  const nonEmptyStringArray = trimmedArray.filter(x => x !== '');\n\n  return singleSpaceJoinHelper(nonEmptyStringArray);\n}\n\nexport class JoinSQLFragmentsError extends TypeError {\n  args: SQLFragment[];\n  fragment: any; // iirc this error is only used when we get an invalid fragment.\n\n  constructor(args: SQLFragment[], fragment: any, message: string) {\n    super(message);\n    \n    this.args = args;\n    this.fragment = fragment;\n    this.name = 'JoinSQLFragmentsError';\n  }\n}\n"],
-  "mappings": ";;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAEA,iCAAiC,KAAsB;AACrD,SAAO,SAAS,KAAK;AAAA;AAEvB,kCAAkC,KAAsB;AACtD,SAAO,MAAM,KAAK;AAAA;AAcpB,+BAA+B,OAAyB;AACtD,SAAO,MAAM,OACX,CAAC,EAAE,sBAAsB,UAAU,SAAS;AAC1C,QAAI,wBAAwB,wBAAwB,OAAO;AACzD,gBAAU,KAAK;AAAA,WACV;AACL,gBAAU,IAAI,KAAK;AAAA;AAErB,WAAO;AAAA,MACL,sBAAsB,yBAAyB;AAAA,MAC/C;AAAA;AAAA,KAGJ;AAAA,IACE,sBAAsB;AAAA,IACtB,QAAQ;AAAA,KAEV;AAAA;AAgBG,0BAA0B,OAA8B;AAC7D,MAAI,MAAM,WAAW;AAAG,WAAO;AAE/B,QAAM,cAAmC,MAAM,OAC7C,CAAC,MAAmC,CAAC,CAAC;AAExC,QAAM,iBAA2B,YAAY,IAC3C,CAAC,aAAgC;AAC/B,QAAI,MAAM,QAAQ,WAAW;AAC3B,aAAO,iBAAiB;AAAA;AAG1B,WAAO;AAAA;AAKX,aAAW,YAAY,gBAAgB;AACrC,QAAI,YAAY,OAAO,aAAa,UAAU;AAC5C,YAAM,IAAI,sBACR,gBACA,UACA,0EAA0E;AAAA;AAAA;AAMhF,QAAM,eAAe,eAAe,IAAI,OAAK,EAAE;AAG/C,QAAM,sBAAsB,aAAa,OAAO,OAAK,MAAM;AAE3D,SAAO,sBAAsB;AAAA;AAGxB,oCAAoC,UAAU;AAAA,EAInD,YAAY,MAAqB,UAAe,SAAiB;AAC/D,UAAM;AAJR;AACA;AAKE,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,OAAO;AAAA;AAAA;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/logger.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/logger.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getOwnPropSymbols = Object.getOwnPropertySymbols;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __propIsEnum = Object.prototype.propertyIsEnumerable;
-var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
-var __spreadValues = (a, b) => {
-  for (var prop in b || (b = {}))
-    if (__hasOwnProp.call(b, prop))
-      __defNormalProp(a, prop, b[prop]);
-  if (__getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(b)) {
-      if (__propIsEnum.call(b, prop))
-        __defNormalProp(a, prop, b[prop]);
-    }
-  return a;
-};
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __objRest = (source, exclude) => {
-  var target = {};
-  for (var prop in source)
-    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
-      target[prop] = source[prop];
-  if (source != null && __getOwnPropSymbols)
-    for (var prop of __getOwnPropSymbols(source)) {
-      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
-        target[prop] = source[prop];
-    }
-  return target;
-};
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-var __publicField = (obj, key, value) => {
-  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
-  return value;
-};
-__export(exports, {
-  Logger: () => Logger,
-  logger: () => logger
-});
-var import_debug = __toModule(require("debug"));
-var import_util = __toModule(require("util"));
-class Logger {
-  constructor(_a = {}) {
-    __publicField(this, "config");
-    var _b = _a, { context = "sequelize" } = _b, rest = __objRest(_b, ["context"]);
-    this.config = __spreadValues({
-      context
-    }, rest);
-  }
-  warn(message) {
-    console.warn(`(${this.config.context}) Warning: ${message}`);
-  }
-  inspect(value) {
-    return import_util.default.inspect(value, {
-      showHidden: false,
-      depth: 1
-    });
-  }
-  debugContext(name) {
-    return (0, import_debug.default)(`${this.config.context}:${name}`);
-  }
-}
-const logger = new Logger();
-//# sourceMappingURL=logger.js.map
Index: ckend/node_modules/sequelize/lib/utils/logger.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/logger.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/logger.ts"],
-  "sourcesContent": ["/**\n * @file Sequelize module for debug and deprecation messages.\n * It require a `context` for which messages will be printed.\n *\n * @module logging\n * @access package\n */\nimport nodeDebug from 'debug';\nimport util from 'util';\n\n/**\n * The configuration for sequelize's logging interface.\n *\n * @access package\n */\nexport interface LoggerConfig {\n  /**\n   * The context which the logger should log in.\n   *\n   * @default 'sequelize'\n   */\n  context?: string;\n}\n\nexport class Logger {\n  protected config: LoggerConfig;\n\n  constructor({ context = 'sequelize', ...rest }: Partial<LoggerConfig> = {}) {\n    this.config = {\n      context,\n      ...rest\n    };\n  }\n\n  /**\n   * Logs a warning in the logger's context.\n   *\n   * @param message The message of the warning.\n   */\n  warn(message: string): void {\n    console.warn(`(${this.config.context}) Warning: ${message}`);\n  }\n\n  /**\n   * Uses node's util.inspect to stringify a value.\n   *\n   * @param value The value which should be inspected.\n   * @returns The string of the inspected value.\n   */\n  inspect(value: unknown): string {\n    return util.inspect(value, {\n      showHidden: false,\n      depth: 1\n    });\n  }\n\n  /**\n   * Gets a debugger for a context.\n   *\n   * @param name The name of the context.\n   * @returns A debugger interace which can be used to debug.\n   */\n  debugContext(name: string): nodeDebug.Debugger {\n    return nodeDebug(`${this.config.context}:${name}`);\n  }\n}\n\nexport const logger = new Logger();\n"],
-  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAOA,mBAAsB;AACtB,kBAAiB;AAgBV,aAAa;AAAA,EAGlB,YAAY,KAA4D,IAAI;AAFlE;AAEE,iBAAE,YAAU,gBAAZ,IAA4B,iBAA5B,IAA4B,CAA1B;AACZ,SAAK,SAAS;AAAA,MACZ;AAAA,OACG;AAAA;AAAA,EASP,KAAK,SAAuB;AAC1B,YAAQ,KAAK,IAAI,KAAK,OAAO,qBAAqB;AAAA;AAAA,EASpD,QAAQ,OAAwB;AAC9B,WAAO,oBAAK,QAAQ,OAAO;AAAA,MACzB,YAAY;AAAA,MACZ,OAAO;AAAA;AAAA;AAAA,EAUX,aAAa,MAAkC;AAC7C,WAAO,0BAAU,GAAG,KAAK,OAAO,WAAW;AAAA;AAAA;AAIxC,MAAM,SAAS,IAAI;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/sql.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/sql.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,180 +1,0 @@
-var __create = Object.create;
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __getOwnPropNames = Object.getOwnPropertyNames;
-var __getProtoOf = Object.getPrototypeOf;
-var __hasOwnProp = Object.prototype.hasOwnProperty;
-var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
-var __export = (target, all) => {
-  __markAsModule(target);
-  for (var name in all)
-    __defProp(target, name, { get: all[name], enumerable: true });
-};
-var __reExport = (target, module2, desc) => {
-  if (module2 && typeof module2 === "object" || typeof module2 === "function") {
-    for (let key of __getOwnPropNames(module2))
-      if (!__hasOwnProp.call(target, key) && key !== "default")
-        __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
-  }
-  return target;
-};
-var __toModule = (module2) => {
-  return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
-};
-__export(exports, {
-  injectReplacements: () => injectReplacements
-});
-var import_isPlainObject = __toModule(require("lodash/isPlainObject"));
-var import_sql_string = __toModule(require("../sql-string"));
-function injectReplacements(sqlString, dialect, replacements) {
-  var _a, _b, _c, _d;
-  if (replacements == null) {
-    return sqlString;
-  }
-  if (!Array.isArray(replacements) && !(0, import_isPlainObject.default)(replacements)) {
-    throw new TypeError(`"replacements" must be an array or a plain object, but received ${JSON.stringify(replacements)} instead.`);
-  }
-  const isNamedReplacements = (0, import_isPlainObject.default)(replacements);
-  const isPositionalReplacements = Array.isArray(replacements);
-  let lastConsumedPositionalReplacementIndex = -1;
-  let output = "";
-  let currentDollarStringTagName = null;
-  let isString = false;
-  let isColumn = false;
-  let previousSliceEnd = 0;
-  let isSingleLineComment = false;
-  let isCommentBlock = false;
-  let stringIsBackslashEscapable = false;
-  for (let i = 0; i < sqlString.length; i++) {
-    const char = sqlString[i];
-    if (isColumn) {
-      if (char === dialect.TICK_CHAR_RIGHT) {
-        isColumn = false;
-      }
-      continue;
-    }
-    if (isString) {
-      if (char === "'" && (!stringIsBackslashEscapable || !isBackslashEscaped(sqlString, i - 1))) {
-        isString = false;
-        stringIsBackslashEscapable = false;
-      }
-      continue;
-    }
-    if (currentDollarStringTagName !== null) {
-      if (char !== "$") {
-        continue;
-      }
-      const remainingString = sqlString.slice(i, sqlString.length);
-      const dollarStringStartMatch = remainingString.match(/^\$(?<name>[a-z_][0-9a-z_]*)?(\$)/i);
-      const tagName = ((_a = dollarStringStartMatch == null ? void 0 : dollarStringStartMatch.groups) == null ? void 0 : _a.name) || "";
-      if (currentDollarStringTagName === tagName) {
-        currentDollarStringTagName = null;
-      }
-      continue;
-    }
-    if (isSingleLineComment) {
-      if (char === "\n") {
-        isSingleLineComment = false;
-      }
-      continue;
-    }
-    if (isCommentBlock) {
-      if (char === "*" && sqlString[i + 1] === "/") {
-        isCommentBlock = false;
-      }
-      continue;
-    }
-    if (char === dialect.TICK_CHAR_LEFT) {
-      isColumn = true;
-      continue;
-    }
-    if (char === "'") {
-      isString = true;
-      stringIsBackslashEscapable = dialect.canBackslashEscape() || dialect.supports.escapeStringConstants && (sqlString[i - 1] === "E" || sqlString[i - 1] === "e") && canPrecedeNewToken(sqlString[i - 2]);
-      continue;
-    }
-    if (char === "-" && sqlString.slice(i, i + 3) === "-- ") {
-      isSingleLineComment = true;
-      continue;
-    }
-    if (char === "/" && sqlString.slice(i, i + 2) === "/*") {
-      isCommentBlock = true;
-      continue;
-    }
-    if (char === "$") {
-      const previousChar = sqlString[i - 1];
-      if (/[0-9a-z_]/i.test(previousChar)) {
-        continue;
-      }
-      const remainingString = sqlString.slice(i, sqlString.length);
-      const dollarStringStartMatch = remainingString.match(/^\$(?<name>[a-z_][0-9a-z_]*)?(\$)/i);
-      if (dollarStringStartMatch) {
-        currentDollarStringTagName = (_c = (_b = dollarStringStartMatch.groups) == null ? void 0 : _b.name) != null ? _c : "";
-        i += dollarStringStartMatch[0].length - 1;
-        continue;
-      }
-      continue;
-    }
-    if (isNamedReplacements && char === ":") {
-      const previousChar = sqlString[i - 1];
-      if (!canPrecedeNewToken(previousChar) && previousChar !== "[") {
-        continue;
-      }
-      const remainingString = sqlString.slice(i, sqlString.length);
-      const match = remainingString.match(/^:(?<name>[a-z_][0-9a-z_]*)(?:\)|,|$|\s|::|;|])/i);
-      const replacementName = (_d = match == null ? void 0 : match.groups) == null ? void 0 : _d.name;
-      if (!replacementName) {
-        continue;
-      }
-      const replacementValue = replacements[replacementName];
-      if (!Object.prototype.hasOwnProperty.call(replacements, replacementName) || replacementValue === void 0) {
-        throw new Error(`Named replacement ":${replacementName}" has no entry in the replacement map.`);
-      }
-      const escapedReplacement = (0, import_sql_string.escape)(replacementValue, void 0, dialect.name, true);
-      output += sqlString.slice(previousSliceEnd, i);
-      previousSliceEnd = i + replacementName.length + 1;
-      output += escapedReplacement;
-      continue;
-    }
-    if (isPositionalReplacements && char === "?") {
-      const previousChar = sqlString[i - 1];
-      if (!canPrecedeNewToken(previousChar) && previousChar !== "[") {
-        continue;
-      }
-      const nextChar = sqlString[i + 1];
-      if (nextChar === "|" || nextChar === "&") {
-        continue;
-      }
-      const replacementIndex = ++lastConsumedPositionalReplacementIndex;
-      const replacementValue = replacements[lastConsumedPositionalReplacementIndex];
-      if (replacementValue === void 0) {
-        throw new Error(`Positional replacement (?) ${replacementIndex} has no entry in the replacement map (replacements[${replacementIndex}] is undefined).`);
-      }
-      const escapedReplacement = (0, import_sql_string.escape)(replacementValue, void 0, dialect.name, true);
-      output += sqlString.slice(previousSliceEnd, i);
-      previousSliceEnd = i + 1;
-      output += escapedReplacement;
-    }
-  }
-  if (isString) {
-    throw new Error(`The following SQL query includes an unterminated string literal:
-${sqlString}`);
-  }
-  output += sqlString.slice(previousSliceEnd, sqlString.length);
-  return output;
-}
-function canPrecedeNewToken(char) {
-  return char === void 0 || /[\s(>,=]/.test(char);
-}
-function isBackslashEscaped(string, pos) {
-  let escaped = false;
-  for (let i = pos; i >= 0; i--) {
-    const char = string[i];
-    if (char !== "\\") {
-      break;
-    }
-    escaped = !escaped;
-  }
-  return escaped;
-}
-//# sourceMappingURL=sql.js.map
Index: ckend/node_modules/sequelize/lib/utils/sql.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/sql.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/sql.ts"],
-  "sourcesContent": ["import isPlainObject from 'lodash/isPlainObject';\nimport type { AbstractDialect } from '../dialects/abstract/index.js';\nimport { escape as escapeSqlValue } from '../sql-string';\n\ntype BindOrReplacements = { [key: string]: unknown } | unknown[];\n\n/**\n * Inlines replacements in places where they would be valid SQL values.\n *\n * @param sqlString The SQL that contains the replacements\n * @param dialect The dialect of the SQL\n * @param replacements if provided, this method will replace ':named' replacements & positional replacements (?)\n *\n * @returns The SQL with replacements rewritten in their dialect-specific syntax.\n */\nexport function injectReplacements(\n  sqlString: string,\n  dialect: AbstractDialect,\n  replacements: BindOrReplacements\n): string {\n  if (replacements == null) {\n    return sqlString;\n  }\n\n  if (!Array.isArray(replacements) && !isPlainObject(replacements)) {\n    throw new TypeError(`\"replacements\" must be an array or a plain object, but received ${JSON.stringify(replacements)} instead.`);\n  }\n\n  const isNamedReplacements = isPlainObject(replacements);\n  const isPositionalReplacements = Array.isArray(replacements);\n  let lastConsumedPositionalReplacementIndex = -1;\n\n  let output = '';\n\n  let currentDollarStringTagName = null;\n  let isString = false;\n  let isColumn = false;\n  let previousSliceEnd = 0;\n  let isSingleLineComment = false;\n  let isCommentBlock = false;\n  let stringIsBackslashEscapable = false;\n\n  for (let i = 0; i < sqlString.length; i++) {\n    const char = sqlString[i];\n\n    if (isColumn) {\n      if (char === dialect.TICK_CHAR_RIGHT) {\n        isColumn = false;\n      }\n\n      continue;\n    }\n\n    if (isString) {\n      if (\n        char === '\\'' &&\n        (!stringIsBackslashEscapable || !isBackslashEscaped(sqlString, i - 1))\n      ) {\n        isString = false;\n        stringIsBackslashEscapable = false;\n      }\n\n      continue;\n    }\n\n    if (currentDollarStringTagName !== null) {\n      if (char !== '$') {\n        continue;\n      }\n\n      const remainingString = sqlString.slice(i, sqlString.length);\n\n      const dollarStringStartMatch = remainingString.match(/^\\$(?<name>[a-z_][0-9a-z_]*)?(\\$)/i);\n      const tagName = dollarStringStartMatch?.groups?.name || '';\n      if (currentDollarStringTagName === tagName) {\n        currentDollarStringTagName = null;\n      }\n\n      continue;\n    }\n\n    if (isSingleLineComment) {\n      if (char === '\\n') {\n        isSingleLineComment = false;\n      }\n\n      continue;\n    }\n\n    if (isCommentBlock) {\n      if (char === '*' && sqlString[i + 1] === '/') {\n        isCommentBlock = false;\n      }\n\n      continue;\n    }\n\n    if (char === dialect.TICK_CHAR_LEFT) {\n      isColumn = true;\n      continue;\n    }\n\n    if (char === '\\'') {\n      isString = true;\n\n      // The following query is supported in almost all dialects,\n      //  SELECT E'test';\n      // but postgres interprets it as an E-prefixed string, while other dialects interpret it as\n      //  SELECT E 'test';\n      // which selects the type E and aliases it to 'test'.\n\n      stringIsBackslashEscapable =\n        // all ''-style strings in this dialect can be backslash escaped\n        dialect.canBackslashEscape() ||\n        // checking if this is a postgres-style E-prefixed string, which also supports backslash escaping\n        dialect.supports.escapeStringConstants &&\n          // is this a E-prefixed string, such as `E'abc'`, `e'abc'` ?\n          (sqlString[i - 1] === 'E' || sqlString[i - 1] === 'e') &&\n          // reject things such as `AE'abc'` (the prefix must be exactly E)\n          canPrecedeNewToken(sqlString[i - 2]);\n\n      continue;\n    }\n\n    if (char === '-' && sqlString.slice(i, i + 3) === '-- ') {\n      isSingleLineComment = true;\n      continue;\n    }\n\n    if (char === '/' && sqlString.slice(i, i + 2) === '/*') {\n      isCommentBlock = true;\n      continue;\n    }\n\n    // either the start of a $bind parameter, or the start of a $tag$string$tag$\n    if (char === '$') {\n      const previousChar = sqlString[i - 1];\n\n      // we are part of an identifier\n      if (/[0-9a-z_]/i.test(previousChar)) {\n        continue;\n      }\n\n      const remainingString = sqlString.slice(i, sqlString.length);\n\n      const dollarStringStartMatch = remainingString.match(/^\\$(?<name>[a-z_][0-9a-z_]*)?(\\$)/i);\n      if (dollarStringStartMatch) {\n        currentDollarStringTagName = dollarStringStartMatch.groups?.name ?? '';\n        i += dollarStringStartMatch[0].length - 1;\n\n        continue;\n      }\n\n      continue;\n    }\n\n    if (isNamedReplacements && char === ':') {\n      const previousChar = sqlString[i - 1];\n      // we want to be conservative with what we consider to be a replacement to avoid risk of conflict with potential operators\n      // users need to add a space before the bind parameter (except after '(', ',', and '=', '[' (for arrays))\n      if (!canPrecedeNewToken(previousChar) && previousChar !== '[') {\n        continue;\n      }\n\n      const remainingString = sqlString.slice(i, sqlString.length);\n\n      const match = remainingString.match(/^:(?<name>[a-z_][0-9a-z_]*)(?:\\)|,|$|\\s|::|;|])/i);\n      const replacementName = match?.groups?.name;\n      if (!replacementName) {\n        continue;\n      }\n\n      // @ts-expect-error -- isPlainObject does not tell typescript that replacements is a plain object, not an array\n      const replacementValue = replacements[replacementName];\n      if (!Object.prototype.hasOwnProperty.call(replacements, replacementName) || replacementValue === undefined) {\n        throw new Error(`Named replacement \":${replacementName}\" has no entry in the replacement map.`);\n      }\n\n      const escapedReplacement = escapeSqlValue(replacementValue, undefined, dialect.name, true);\n\n      // add everything before the bind parameter name\n      output += sqlString.slice(previousSliceEnd, i);\n      // continue after the bind parameter name\n      previousSliceEnd = i + replacementName.length + 1;\n\n      output += escapedReplacement;\n\n      continue;\n    }\n\n    if (isPositionalReplacements && char === '?') {\n      const previousChar = sqlString[i - 1];\n\n      // we want to be conservative with what we consider to be a replacement to avoid risk of conflict with potential operators\n      // users need to add a space before the bind parameter (except after '(', ',', and '=', '[' (for arrays))\n      // -> [ is temporarily added to allow 'ARRAY[:name]' to be replaced\n      // https://github.com/sequelize/sequelize/issues/14410 will make this obsolete.\n      if (!canPrecedeNewToken(previousChar) && previousChar !== '[') {\n        continue;\n      }\n\n      // don't parse ?| and ?& operators as replacements\n      const nextChar = sqlString[i + 1];\n      if (nextChar === '|' || nextChar === '&') {\n        continue;\n      }\n\n      const replacementIndex = ++lastConsumedPositionalReplacementIndex;\n      // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n      // @ts-ignore -- ts < 4.4 loses the information that 'replacements' is an array when using 'isPositionalReplacements' instead of 'Array.isArray'\n      //  but performance matters here.\n      const replacementValue = replacements[lastConsumedPositionalReplacementIndex];\n\n      if (replacementValue === undefined) {\n        throw new Error(`Positional replacement (?) ${replacementIndex} has no entry in the replacement map (replacements[${replacementIndex}] is undefined).`);\n      }\n\n      const escapedReplacement = escapeSqlValue(replacementValue as any, undefined, dialect.name, true);\n\n      // add everything before the bind parameter name\n      output += sqlString.slice(previousSliceEnd, i);\n      // continue after the bind parameter name\n      previousSliceEnd = i + 1;\n\n      output += escapedReplacement;\n    }\n  }\n\n  if (isString) {\n    throw new Error(\n      `The following SQL query includes an unterminated string literal:\\n${sqlString}`\n    );\n  }\n\n  output += sqlString.slice(previousSliceEnd, sqlString.length);\n\n  return output;\n}\n\nfunction canPrecedeNewToken(char: string | undefined): boolean {\n  return char === undefined || /[\\s(>,=]/.test(char);\n}\n\nfunction isBackslashEscaped(string: string, pos: number): boolean {\n  let escaped = false;\n  for (let i = pos; i >= 0; i--) {\n    const char = string[i];\n    if (char !== '\\\\') {\n      break;\n    }\n\n    escaped = !escaped;\n  }\n\n  return escaped;\n}\n"],
-  "mappings": "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",
-  "names": []
-}
Index: ckend/node_modules/sequelize/lib/utils/validator-extras.js
===================================================================
--- backend/node_modules/sequelize/lib/utils/validator-extras.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,82 +1,0 @@
-"use strict";
-const _ = require("lodash");
-const validator = _.cloneDeep(require("validator"));
-const moment = require("moment");
-const extensions = {
-  extend(name, fn) {
-    this[name] = fn;
-    return this;
-  },
-  notEmpty(str) {
-    return !str.match(/^[\s\t\r\n]*$/);
-  },
-  len(str, min, max) {
-    return this.isLength(str, min, max);
-  },
-  isUrl(str) {
-    return this.isURL(str);
-  },
-  isIPv6(str) {
-    return this.isIP(str, 6);
-  },
-  isIPv4(str) {
-    return this.isIP(str, 4);
-  },
-  notIn(str, values) {
-    return !this.isIn(str, values);
-  },
-  regex(str, pattern, modifiers) {
-    str += "";
-    if (Object.prototype.toString.call(pattern).slice(8, -1) !== "RegExp") {
-      pattern = new RegExp(pattern, modifiers);
-    }
-    return str.match(pattern);
-  },
-  notRegex(str, pattern, modifiers) {
-    return !this.regex(str, pattern, modifiers);
-  },
-  isDecimal(str) {
-    return str !== "" && !!str.match(/^(?:-?(?:[0-9]+))?(?:\.[0-9]*)?(?:[eE][+-]?(?:[0-9]+))?$/);
-  },
-  min(str, val) {
-    const number = parseFloat(str);
-    return isNaN(number) || number >= val;
-  },
-  max(str, val) {
-    const number = parseFloat(str);
-    return isNaN(number) || number <= val;
-  },
-  not(str, pattern, modifiers) {
-    return this.notRegex(str, pattern, modifiers);
-  },
-  contains(str, elem) {
-    return !!elem && str.includes(elem);
-  },
-  notContains(str, elem) {
-    return !this.contains(str, elem);
-  },
-  is(str, pattern, modifiers) {
-    return this.regex(str, pattern, modifiers);
-  }
-};
-exports.extensions = extensions;
-validator.isImmutable = function(value, validatorArgs, field, modelInstance) {
-  return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field];
-};
-validator.notNull = function(val) {
-  return val !== null && val !== void 0;
-};
-_.forEach(extensions, (extend, key) => {
-  validator[key] = extend;
-});
-validator.isNull = validator.isEmpty;
-validator.isDate = function(dateString) {
-  const parsed = Date.parse(dateString);
-  if (isNaN(parsed)) {
-    return false;
-  }
-  const date = new Date(parsed);
-  return moment(date.toISOString()).isValid();
-};
-exports.validator = validator;
-//# sourceMappingURL=validator-extras.js.map
Index: ckend/node_modules/sequelize/lib/utils/validator-extras.js.map
===================================================================
--- backend/node_modules/sequelize/lib/utils/validator-extras.js.map	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-{
-  "version": 3,
-  "sources": ["../../src/utils/validator-extras.js"],
-  "sourcesContent": ["'use strict';\n\nconst _ = require('lodash');\nconst validator = _.cloneDeep(require('validator'));\nconst moment = require('moment');\n\nconst extensions = {\n  extend(name, fn) {\n    this[name] = fn;\n\n    return this;\n  },\n  notEmpty(str) {\n    return !str.match(/^[\\s\\t\\r\\n]*$/);\n  },\n  len(str, min, max) {\n    return this.isLength(str, min, max);\n  },\n  isUrl(str) {\n    return this.isURL(str);\n  },\n  isIPv6(str) {\n    return this.isIP(str, 6);\n  },\n  isIPv4(str) {\n    return this.isIP(str, 4);\n  },\n  notIn(str, values) {\n    return !this.isIn(str, values);\n  },\n  regex(str, pattern, modifiers) {\n    str += '';\n    if (Object.prototype.toString.call(pattern).slice(8, -1) !== 'RegExp') {\n      pattern = new RegExp(pattern, modifiers);\n    }\n    return str.match(pattern);\n  },\n  notRegex(str, pattern, modifiers) {\n    return !this.regex(str, pattern, modifiers);\n  },\n  isDecimal(str) {\n    return str !== '' && !!str.match(/^(?:-?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][+-]?(?:[0-9]+))?$/);\n  },\n  min(str, val) {\n    const number = parseFloat(str);\n    return isNaN(number) || number >= val;\n  },\n  max(str, val) {\n    const number = parseFloat(str);\n    return isNaN(number) || number <= val;\n  },\n  not(str, pattern, modifiers) {\n    return this.notRegex(str, pattern, modifiers);\n  },\n  contains(str, elem) {\n    return !!elem && str.includes(elem);\n  },\n  notContains(str, elem) {\n    return !this.contains(str, elem);\n  },\n  is(str, pattern, modifiers) {\n    return this.regex(str, pattern, modifiers);\n  }\n};\nexports.extensions = extensions;\n\n// instance based validators\nvalidator.isImmutable = function(value, validatorArgs, field, modelInstance) {\n  return modelInstance.isNewRecord || modelInstance.dataValues[field] === modelInstance._previousDataValues[field];\n};\n\n// extra validators\nvalidator.notNull = function(val) {\n  return val !== null && val !== undefined;\n};\n\n// https://github.com/chriso/validator.js/blob/6.2.0/validator.js\n_.forEach(extensions, (extend, key) => {\n  validator[key] = extend;\n});\n\n// map isNull to isEmpty\n// https://github.com/chriso/validator.js/commit/e33d38a26ee2f9666b319adb67c7fc0d3dea7125\nvalidator.isNull = validator.isEmpty;\n\n// isDate removed in 7.0.0\n// https://github.com/chriso/validator.js/commit/095509fc707a4dc0e99f85131df1176ad6389fc9\nvalidator.isDate = function(dateString) {\n  // avoid http://momentjs.com/guides/#/warnings/js-date/\n  // by doing a preliminary check on `dateString`\n  const parsed = Date.parse(dateString);\n  if (isNaN(parsed)) {\n    // fail if we can't parse it\n    return false;\n  }\n  // otherwise convert to ISO 8601 as moment prefers\n  // http://momentjs.com/docs/#/parsing/string/\n  const date = new Date(parsed);\n  return moment(date.toISOString()).isValid();\n};\n\nexports.validator = validator;\n"],
-  "mappings": ";AAEA,MAAM,IAAI,QAAQ;AAClB,MAAM,YAAY,EAAE,UAAU,QAAQ;AACtC,MAAM,SAAS,QAAQ;AAEvB,MAAM,aAAa;AAAA,EACjB,OAAO,MAAM,IAAI;AACf,SAAK,QAAQ;AAEb,WAAO;AAAA;AAAA,EAET,SAAS,KAAK;AACZ,WAAO,CAAC,IAAI,MAAM;AAAA;AAAA,EAEpB,IAAI,KAAK,KAAK,KAAK;AACjB,WAAO,KAAK,SAAS,KAAK,KAAK;AAAA;AAAA,EAEjC,MAAM,KAAK;AACT,WAAO,KAAK,MAAM;AAAA;AAAA,EAEpB,OAAO,KAAK;AACV,WAAO,KAAK,KAAK,KAAK;AAAA;AAAA,EAExB,OAAO,KAAK;AACV,WAAO,KAAK,KAAK,KAAK;AAAA;AAAA,EAExB,MAAM,KAAK,QAAQ;AACjB,WAAO,CAAC,KAAK,KAAK,KAAK;AAAA;AAAA,EAEzB,MAAM,KAAK,SAAS,WAAW;AAC7B,WAAO;AACP,QAAI,OAAO,UAAU,SAAS,KAAK,SAAS,MAAM,GAAG,QAAQ,UAAU;AACrE,gBAAU,IAAI,OAAO,SAAS;AAAA;AAEhC,WAAO,IAAI,MAAM;AAAA;AAAA,EAEnB,SAAS,KAAK,SAAS,WAAW;AAChC,WAAO,CAAC,KAAK,MAAM,KAAK,SAAS;AAAA;AAAA,EAEnC,UAAU,KAAK;AACb,WAAO,QAAQ,MAAM,CAAC,CAAC,IAAI,MAAM;AAAA;AAAA,EAEnC,IAAI,KAAK,KAAK;AACZ,UAAM,SAAS,WAAW;AAC1B,WAAO,MAAM,WAAW,UAAU;AAAA;AAAA,EAEpC,IAAI,KAAK,KAAK;AACZ,UAAM,SAAS,WAAW;AAC1B,WAAO,MAAM,WAAW,UAAU;AAAA;AAAA,EAEpC,IAAI,KAAK,SAAS,WAAW;AAC3B,WAAO,KAAK,SAAS,KAAK,SAAS;AAAA;AAAA,EAErC,SAAS,KAAK,MAAM;AAClB,WAAO,CAAC,CAAC,QAAQ,IAAI,SAAS;AAAA;AAAA,EAEhC,YAAY,KAAK,MAAM;AACrB,WAAO,CAAC,KAAK,SAAS,KAAK;AAAA;AAAA,EAE7B,GAAG,KAAK,SAAS,WAAW;AAC1B,WAAO,KAAK,MAAM,KAAK,SAAS;AAAA;AAAA;AAGpC,QAAQ,aAAa;AAGrB,UAAU,cAAc,SAAS,OAAO,eAAe,OAAO,eAAe;AAC3E,SAAO,cAAc,eAAe,cAAc,WAAW,WAAW,cAAc,oBAAoB;AAAA;AAI5G,UAAU,UAAU,SAAS,KAAK;AAChC,SAAO,QAAQ,QAAQ,QAAQ;AAAA;AAIjC,EAAE,QAAQ,YAAY,CAAC,QAAQ,QAAQ;AACrC,YAAU,OAAO;AAAA;AAKnB,UAAU,SAAS,UAAU;AAI7B,UAAU,SAAS,SAAS,YAAY;AAGtC,QAAM,SAAS,KAAK,MAAM;AAC1B,MAAI,MAAM,SAAS;AAEjB,WAAO;AAAA;AAIT,QAAM,OAAO,IAAI,KAAK;AACtB,SAAO,OAAO,KAAK,eAAe;AAAA;AAGpC,QAAQ,YAAY;",
-  "names": []
-}
Index: ckend/node_modules/sequelize/package.json
===================================================================
--- backend/node_modules/sequelize/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,310 +1,0 @@
-{
-  "name": "sequelize",
-  "description": "Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server, Amazon Redshift and Snowflake’s Data Cloud. It features solid transaction support, relations, eager and lazy loading, read replication and more.",
-  "version": "6.37.7",
-  "funding": [
-    {
-      "type": "opencollective",
-      "url": "https://opencollective.com/sequelize"
-    }
-  ],
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/sequelize/sequelize.git"
-  },
-  "bugs": {
-    "url": "https://github.com/sequelize/sequelize/issues"
-  },
-  "homepage": "https://sequelize.org/",
-  "main": "./lib/index.js",
-  "types": "./types/index.d.ts",
-  "type": "commonjs",
-  "exports": {
-    ".": {
-      "types": "./types/index.d.ts",
-      "import": "./lib/index.mjs",
-      "require": "./lib/index.js"
-    },
-    "./lib/*": {
-      "types": "./types/*.d.ts",
-      "default": "./lib/*.js"
-    },
-    "./lib/errors": {
-      "types": "./types/errors/index.d.ts",
-      "default": "./lib/errors/index.js"
-    },
-    "./package.json": "./package.json",
-    "./types/*": {
-      "types": "./types/*.d.ts"
-    }
-  },
-  "engines": {
-    "node": ">=10.0.0"
-  },
-  "files": [
-    "lib",
-    "types",
-    "index.js"
-  ],
-  "license": "MIT",
-  "dependencies": {
-    "@types/debug": "^4.1.8",
-    "@types/validator": "^13.7.17",
-    "debug": "^4.3.4",
-    "dottie": "^2.0.6",
-    "inflection": "^1.13.4",
-    "lodash": "^4.17.21",
-    "moment": "^2.29.4",
-    "moment-timezone": "^0.5.43",
-    "pg-connection-string": "^2.6.1",
-    "retry-as-promised": "^7.0.4",
-    "semver": "^7.5.4",
-    "sequelize-pool": "^7.1.0",
-    "toposort-class": "^1.0.1",
-    "uuid": "^8.3.2",
-    "validator": "^13.9.0",
-    "wkx": "^0.5.0"
-  },
-  "devDependencies": {
-    "@commitlint/cli": "^15.0.0",
-    "@commitlint/config-angular": "^15.0.0",
-    "@octokit/rest": "^18.12.0",
-    "@octokit/types": "^6.34.0",
-    "@types/chai": "^4.3.0",
-    "@types/lodash": "4.14.197",
-    "@types/mocha": "^9.0.0",
-    "@types/node": "^16.11.17",
-    "@types/sinon": "^10.0.6",
-    "@typescript-eslint/eslint-plugin": "^5.8.1",
-    "@typescript-eslint/parser": "^5.8.1",
-    "acorn": "^8.7.0",
-    "chai": "^4.3.7",
-    "chai-as-promised": "^7.1.1",
-    "chai-datetime": "^1.8.0",
-    "cheerio": "^1.0.0-rc.10",
-    "cls-hooked": "^4.2.2",
-    "copyfiles": "^2.4.1",
-    "cross-env": "^7.0.3",
-    "delay": "^5.0.0",
-    "esbuild": "0.14.3",
-    "esdoc": "^1.1.0",
-    "esdoc-ecmascript-proposal-plugin": "^1.0.0",
-    "esdoc-inject-style-plugin": "^1.0.0",
-    "esdoc-standard-plugin": "^1.0.0",
-    "eslint": "^8.5.0",
-    "eslint-plugin-jsdoc": "^37.4.0",
-    "eslint-plugin-mocha": "^9.0.0",
-    "expect-type": "^0.12.0",
-    "fast-glob": "^3.2.7",
-    "fs-jetpack": "^4.3.0",
-    "husky": "^7.0.4",
-    "ibm_db": "^2.8.1",
-    "js-combinatorics": "^0.6.1",
-    "lcov-result-merger": "^3.1.0",
-    "lint-staged": "^12.1.4",
-    "mariadb": "^2.5.5",
-    "markdownlint-cli": "^0.30.0",
-    "mocha": "^7.2.0",
-    "module-alias": "^2.2.2",
-    "mysql2": "^2.3.3",
-    "node-hook": "^1.0.0",
-    "nyc": "^15.1.0",
-    "oracledb": "^5.5.0",
-    "p-map": "^4.0.0",
-    "p-props": "^4.0.0",
-    "p-settle": "^4.1.1",
-    "p-timeout": "^4.0.0",
-    "pg": "^8.7.1",
-    "pg-hstore": "^2.3.4",
-    "rimraf": "^3.0.2",
-    "semantic-release": "^18.0.1",
-    "semantic-release-fail-on-major-bump": "^1.0.0",
-    "sinon": "^12.0.1",
-    "sinon-chai": "^3.7.0",
-    "snowflake-sdk": "^1.6.6",
-    "source-map-support": "^0.5.21",
-    "sqlite3": "^5.1.6",
-    "tedious": "8.3.0",
-    "typescript": "^4.5.4"
-  },
-  "peerDependenciesMeta": {
-    "pg": {
-      "optional": true
-    },
-    "pg-hstore": {
-      "optional": true
-    },
-    "mysql2": {
-      "optional": true
-    },
-    "ibm_db": {
-      "optional": true
-    },
-    "snowflake-sdk": {
-      "optional": true
-    },
-    "mariadb": {
-      "optional": true
-    },
-    "sqlite3": {
-      "optional": true
-    },
-    "tedious": {
-      "optional": true
-    },
-    "oracledb": {
-      "optional": true
-    }
-  },
-  "keywords": [
-    "mysql",
-    "mariadb",
-    "sqlite",
-    "postgresql",
-    "postgres",
-    "pg",
-    "mssql",
-    "db2",
-    "ibm_db",
-    "sql",
-    "oracledb",
-    "sqlserver",
-    "snowflake",
-    "orm",
-    "nodejs",
-    "object relational mapper",
-    "database",
-    "db"
-  ],
-  "commitlint": {
-    "extends": [
-      "@commitlint/config-angular"
-    ],
-    "rules": {
-      "type-enum": [
-        2,
-        "always",
-        [
-          "build",
-          "ci",
-          "docs",
-          "feat",
-          "fix",
-          "perf",
-          "refactor",
-          "revert",
-          "style",
-          "test",
-          "meta"
-        ]
-      ]
-    }
-  },
-  "lint-staged": {
-    "*!(d).[tj]s": "eslint"
-  },
-  "release": {
-    "plugins": [
-      "@semantic-release/commit-analyzer",
-      "semantic-release-fail-on-major-bump",
-      "@semantic-release/release-notes-generator",
-      "@semantic-release/npm",
-      "@semantic-release/github"
-    ],
-    "branches": [
-      "v6",
-      {
-        "name": "v6-beta",
-        "prerelease": "beta"
-      }
-    ]
-  },
-  "publishConfig": {
-    "tag": "latest"
-  },
-  "scripts": {
-    "----------------------------------------- static analysis -----------------------------------------": "",
-    "lint": "eslint src test --quiet --fix",
-    "lint-docs": "markdownlint docs",
-    "test-typings": "tsc --noEmit --emitDeclarationOnly false && tsc -b test/tsconfig.json",
-    "----------------------------------------- documentation -------------------------------------------": "",
-    "docs": "sh docs.sh",
-    "----------------------------------------- tests ---------------------------------------------------": "",
-    "mocha": "mocha -r ./test/registerEsbuild",
-    "test-unit": "yarn mocha \"test/unit/**/*.test.[tj]s\"",
-    "test-integration": "yarn mocha \"test/integration/**/*.test.[tj]s\"",
-    "teaser": "node test/teaser.js",
-    "test": "npm run prepare && npm run test-typings && npm run teaser && npm run test-unit && npm run test-integration",
-    "----------------------------------------- coverage ------------------------------------------------": "",
-    "cover": "rimraf coverage && npm run teaser && npm run cover-integration && npm run cover-unit && npm run merge-coverage",
-    "cover-integration": "cross-env COVERAGE=true nyc --reporter=lcovonly yarn mocha \"test/integration/**/*.test.[tj]s\" && node -e \"require('fs').renameSync('coverage/lcov.info', 'coverage/integration.info')\"",
-    "cover-unit": "cross-env COVERAGE=true nyc --reporter=lcovonly yarn mocha \"test/unit/**/*.test.[tj]s\" && node -e \"require('fs').renameSync('coverage/lcov.info', 'coverage/unit.info')\"",
-    "merge-coverage": "lcov-result-merger \"coverage/*.info\" \"coverage/lcov.info\"",
-    "----------------------------------------- local test dbs ------------------------------------------": "",
-    "start-mariadb": "bash dev/mariadb/10.3/start.sh",
-    "start-mysql": "bash dev/mysql/5.7/start.sh",
-    "start-mysql-8": "bash dev/mysql/8.0/start.sh",
-    "start-postgres": "bash dev/postgres/10/start.sh",
-    "start-mssql": "bash dev/mssql/2019/start.sh",
-    "start-db2": "bash dev/db2/11.5/start.sh",
-    "start-oracle-oldest": "bash dev/oracle/18-slim/start.sh",
-    "start-oracle-latest": "bash dev/oracle/23-slim/start.sh",
-    "stop-mariadb": "bash dev/mariadb/10.3/stop.sh",
-    "stop-mysql": "bash dev/mysql/5.7/stop.sh",
-    "stop-mysql-8": "bash dev/mysql/8.0/stop.sh",
-    "stop-postgres": "bash dev/postgres/10/stop.sh",
-    "stop-mssql": "bash dev/mssql/2019/stop.sh",
-    "stop-db2": "bash dev/db2/11.5/stop.sh",
-    "stop-oracle-oldest": "bash dev/oracle/18-slim/stop.sh",
-    "stop-oracle-latest": "bash dev/oracle/23-slim/stop.sh",
-    "restart-mariadb": "npm run start-mariadb",
-    "restart-mysql": "npm run start-mysql",
-    "restart-postgres": "npm run start-postgres",
-    "restart-mssql": "npm run start-mssql",
-    "restart-db2": "npm run start-db2",
-    "restart-oracle-oldest": "npm run start-oracle-oldest",
-    "restart-oracle-latest": "npm run start-oracle-latest",
-    "----------------------------------------- local tests ---------------------------------------------": "",
-    "test-unit-mariadb": "cross-env DIALECT=mariadb npm run test-unit",
-    "test-unit-mysql": "cross-env DIALECT=mysql npm run test-unit",
-    "test-unit-postgres": "cross-env DIALECT=postgres npm run test-unit",
-    "test-unit-postgres-native": "cross-env DIALECT=postgres-native npm run test-unit",
-    "test-unit-sqlite": "cross-env DIALECT=sqlite npm run test-unit",
-    "test-unit-mssql": "cross-env DIALECT=mssql npm run test-unit",
-    "test-unit-db2": "cross-env DIALECT=db2 npm run test-unit",
-    "test-unit-snowflake": "cross-env DIALECT=snowflake npm run test-unit",
-    "test-unit-oracle": "cross-env DIALECT=oracle npm run test-unit",
-    "test-unit-all": "npm run test-unit-mariadb && npm run test-unit-mysql && npm run test-unit-postgres && npm run test-unit-postgres-native && npm run test-unit-mssql && npm run test-unit-sqlite && npm run test-unit-snowflake && npm run test-unit-db2 && npm run test-unit-oracle",
-    "test-integration-mariadb": "cross-env DIALECT=mariadb npm run test-integration",
-    "test-integration-mysql": "cross-env DIALECT=mysql npm run test-integration",
-    "test-integration-postgres": "cross-env DIALECT=postgres npm run test-integration",
-    "test-integration-postgres-native": "cross-env DIALECT=postgres-native npm run test-integration",
-    "test-integration-sqlite": "cross-env DIALECT=sqlite npm run test-integration",
-    "test-integration-mssql": "cross-env DIALECT=mssql npm run test-integration",
-    "test-integration-db2": "cross-env DIALECT=db2 npm run test-integration",
-    "test-integration-snowflake": "cross-env DIALECT=snowflake npm run test-integration",
-    "test-integration-oracle": "cross-env LD_LIBRARY_PATH=\"$PWD/.oracle/instantclient/\" DIALECT=oracle UV_THREADPOOL_SIZE=128 npm run test-integration",
-    "test-mariadb": "cross-env DIALECT=mariadb npm test",
-    "test-mysql": "cross-env DIALECT=mysql npm test",
-    "test-sqlite": "cross-env DIALECT=sqlite npm test",
-    "test-postgres": "cross-env DIALECT=postgres npm test",
-    "test-postgres-native": "cross-env DIALECT=postgres-native npm test",
-    "test-mssql": "cross-env DIALECT=mssql npm test",
-    "test-db2": "cross-env DIALECT=db2 npm test",
-    "test-oracle": "cross-env LD_LIBRARY_PATH=\"$PWD/.oracle/instantclient/\" DIALECT=oracle UV_THREADPOOL_SIZE=128 npm test",
-    "----------------------------------------- development ---------------------------------------------": "",
-    "sscce": "node sscce.js",
-    "sscce-mariadb": "cross-env DIALECT=mariadb node sscce.js",
-    "sscce-mysql": "cross-env DIALECT=mysql node sscce.js",
-    "sscce-postgres": "cross-env DIALECT=postgres node sscce.js",
-    "sscce-postgres-native": "cross-env DIALECT=postgres-native node sscce.js",
-    "sscce-sqlite": "cross-env DIALECT=sqlite node sscce.js",
-    "sscce-mssql": "cross-env DIALECT=mssql node sscce.js",
-    "sscce-db2": "cross-env DIALECT=db2 node sscce.js",
-    "sscce-oracle": "cross-env LD_LIBRARY_PATH=\"$PWD/.oracle/instantclient/\" DIALECT=oracle UV_THREADPOOL_SIZE=128 node sscce.js",
-    "prepare": "npm run build && husky install",
-    "build": "node ./build.js",
-    "---------------------------------------------------------------------------------------------------": ""
-  },
-  "support": true
-}
Index: ckend/node_modules/sequelize/types/associations/base.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/base.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-import { ColumnOptions, Model, ModelCtor, Hookable } from '../model';
-
-export abstract class Association<S extends Model = Model, T extends Model = Model> {
-  public associationType: string;
-  public source: ModelCtor<S>;
-  public target: ModelCtor<T>;
-  public isSelfAssociation: boolean;
-  public isSingleAssociation: boolean;
-  public isMultiAssociation: boolean;
-  public as: string;
-  public isAliased: boolean;
-  public foreignKey: string;
-  public identifier: string;
-  public inspect(): string;
-}
-
-export interface SingleAssociationAccessors {
-  get: string;
-  set: string;
-  create: string;
-}
-
-export interface MultiAssociationAccessors {
-  get: string;
-  set: string;
-  addMultiple: string;
-  add: string;
-  create: string;
-  remove: string;
-  removeMultiple: string;
-  hasSingle: string;
-  hasAll: string;
-  count: string;
-}
-
-/** Foreign Key Options */
-export interface ForeignKeyOptions extends ColumnOptions {
-  /** Attribute name for the relation */
-  name?: string;
-}
-
-/**
- * Options provided when associating models
- */
-export interface AssociationOptions extends Hookable {
-  /**
-   * The alias of this model, in singular form. See also the `name` option passed to `sequelize.define`. If
-   * you create multiple associations between the same tables, you should provide an alias to be able to
-   * distinguish between them. If you provide an alias when creating the assocition, you should provide the
-   * same alias when eager loading and when getting associated models. Defaults to the singularized name of
-   * target
-   */
-  as?: string | { singular: string; plural: string };
-
-  /**
-   * The name of the foreign key in the target table or an object representing the type definition for the
-   * foreign column (see `Sequelize.define` for syntax). When using an object, you can add a `name` property
-   * to set the name of the column. Defaults to the name of source + primary key of source
-   */
-  foreignKey?: string | ForeignKeyOptions;
-
-  /**
-   * What happens when delete occurs.
-   *
-   * Cascade if this is a n:m, and set null if it is a 1:m
-   *
-   * @default 'SET NULL' or 'CASCADE'
-   */
-  onDelete?: string;
-
-  /**
-   * What happens when update occurs
-   *
-   * @default 'CASCADE'
-   */
-  onUpdate?: string;
-
-  /**
-   * Should on update and on delete constraints be enabled on the foreign key.
-   */
-  constraints?: boolean;
-  foreignKeyConstraint?: boolean;
-
-  scope?: AssociationScope;
-}
-
-/**
- * Options for Association Scope
- */
-export interface AssociationScope {
-  /**
-   * The name of the column that will be used for the associated scope and it's value
-   */
-  [scopeName: string]: unknown;
-}
-
-/**
- * Options provided for many-to-many relationships
- */
-export interface ManyToManyOptions extends AssociationOptions {
-  /**
-   * A key/value set that will be used for association create and find defaults on the target.
-   * (sqlite not supported for N:M)
-   */
-  scope?: AssociationScope;
-}
Index: ckend/node_modules/sequelize/types/associations/belongs-to-many.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/belongs-to-many.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,493 +1,0 @@
-import {
-  BulkCreateOptions,
-  CreateOptions,
-  CreationAttributes,
-  Filterable,
-  FindAttributeOptions,
-  FindOptions,
-  InstanceDestroyOptions,
-  InstanceUpdateOptions,
-  Model,
-  ModelCtor,
-  ModelType,
-  Transactionable,
-} from '../model';
-import { Association, AssociationScope, ForeignKeyOptions, ManyToManyOptions, MultiAssociationAccessors } from './base';
-
-/**
- * Used for a association table in n:m associations.
- */
-export interface ThroughOptions {
-  /**
-   * The model used to join both sides of the N:M association.
-   * Can be a string if you want the model to be generated by sequelize.
-   */
-  model: ModelType | string;
-
-  /**
-   * If true the generated join table will be paranoid
-   * @default false
-   */
-  paranoid?: boolean;
-
-  /**
-   * A key/value set that will be used for association create and find defaults on the through model.
-   * (Remember to add the attributes to the through model)
-   */
-  scope?: AssociationScope;
-
-  /**
-   * If true a unique key will be generated from the foreign keys used (might want to turn this off and create
-   * specific unique keys when using scopes)
-   *
-   * @default true
-   */
-  unique?: boolean;
-}
-
-/**
- * Attributes for the join table
- */
-export interface JoinTableAttributes {
-  [attribute: string]: unknown;
-}
-
-/**
- * Options provided when associating models with belongsToMany relationship
- */
-export interface BelongsToManyOptions extends ManyToManyOptions {
-  /**
-   * The name of the table that is used to join source and target in n:m associations. Can also be a
-   * sequelize model if you want to define the junction table yourself and add extra attributes to it.
-   */
-  through: ModelType | string | ThroughOptions;
-
-  /**
-   * The name of the foreign key in the join table (representing the target model) or an object representing
-   * the type definition for the other column (see `Sequelize.define` for syntax). When using an object, you
-   * can add a `name` property to set the name of the colum. Defaults to the name of target + primary key of
-   * target
-   */
-  otherKey?: string | ForeignKeyOptions;
-
-  /**
-   * The name of the field to use as the key for the association in the source table. Defaults to the primary
-   * key of the source table
-   */
-  sourceKey?: string;
-
-  /**
-   * The name of the field to use as the key for the association in the target table. Defaults to the primary
-   * key of the target table
-   */
-  targetKey?: string;
-
-  /**
-   * Should the join model have timestamps
-   */
-  timestamps?: boolean;
-
-  /**
-   * The unique key name to override the autogenerated one when primary key is not present on through model
-   */
-  uniqueKey?: string;
-}
-
-export class BelongsToMany<S extends Model = Model, T extends Model = Model> extends Association<S, T> {
-  public otherKey: string;
-  public sourceKey: string;
-  public targetKey: string;
-  public accessors: MultiAssociationAccessors;
-  constructor(source: ModelCtor<S>, target: ModelCtor<T>, options: BelongsToManyOptions);
-}
-
-/**
- * The options for the getAssociations mixin of the belongsToMany association.
- * @see BelongsToManyGetAssociationsMixin
- */
-export interface BelongsToManyGetAssociationsMixinOptions extends FindOptions<any> {
-  /**
-   * A list of the attributes from the join table that you want to select.
-   */
-  joinTableAttributes?: FindAttributeOptions
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | boolean;
-}
-
-/**
- * The getAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  getRoles: Sequelize.BelongsToManyGetAssociationsMixin<RoleInstance>;
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyGetAssociationsMixin<TModel> = (
-  options?: BelongsToManyGetAssociationsMixinOptions
-) => Promise<TModel[]>;
-
-/**
- * The options for the setAssociations mixin of the belongsToMany association.
- * @see BelongsToManySetAssociationsMixin
- */
-export interface BelongsToManySetAssociationsMixinOptions
-  extends FindOptions<any>,
-    BulkCreateOptions<any>,
-    InstanceUpdateOptions<any>,
-    InstanceDestroyOptions {
-  through?: JoinTableAttributes;
-}
-
-/**
- * The setAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  setRoles: Sequelize.BelongsToManySetAssociationsMixin<RoleInstance, RoleId, UserRoleAttributes>;
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManySetAssociationsMixin<TModel, TModelPrimaryKey> = (
-  newAssociations?: (TModel | TModelPrimaryKey)[],
-  options?: BelongsToManySetAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the addAssociations mixin of the belongsToMany association.
- * @see BelongsToManyAddAssociationsMixin
- */
-export interface BelongsToManyAddAssociationsMixinOptions
-  extends FindOptions<any>,
-    BulkCreateOptions<any>,
-    InstanceUpdateOptions<any>,
-    InstanceDestroyOptions {
-  through?: JoinTableAttributes;
-}
-
-/**
- * The addAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  addRoles: Sequelize.BelongsToManyAddAssociationsMixin<RoleInstance, RoleId, UserRoleAttributes>;
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyAddAssociationsMixin<TModel, TModelPrimaryKey> = (
-  newAssociations?: (TModel | TModelPrimaryKey)[],
-  options?: BelongsToManyAddAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the addAssociation mixin of the belongsToMany association.
- * @see BelongsToManyAddAssociationMixin
- */
-export interface BelongsToManyAddAssociationMixinOptions
-  extends FindOptions<any>,
-    BulkCreateOptions<any>,
-    InstanceUpdateOptions<any>,
-    InstanceDestroyOptions {
-  through?: JoinTableAttributes;
-}
-
-/**
- * The addAssociation mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  addRole: Sequelize.BelongsToManyAddAssociationMixin<RoleInstance, RoleId, UserRoleAttributes>;
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyAddAssociationMixin<TModel, TModelPrimaryKey> = (
-  newAssociation?: TModel | TModelPrimaryKey,
-  options?: BelongsToManyAddAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the createAssociation mixin of the belongsToMany association.
- * @see BelongsToManyCreateAssociationMixin
- */
-export interface BelongsToManyCreateAssociationMixinOptions extends CreateOptions<any> {
-  through?: JoinTableAttributes;
-}
-/**
- * The createAssociation mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  createRole: Sequelize.BelongsToManyCreateAssociationMixin<RoleAttributes, UserRoleAttributes>;
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyCreateAssociationMixin<TModel extends Model> = (
-  values?: CreationAttributes<TModel>,
-  options?: BelongsToManyCreateAssociationMixinOptions
-) => Promise<TModel>;
-
-/**
- * The options for the removeAssociation mixin of the belongsToMany association.
- * @see BelongsToManyRemoveAssociationMixin
- */
-export interface BelongsToManyRemoveAssociationMixinOptions extends InstanceDestroyOptions {}
-
-/**
- * The removeAssociation mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  removeRole: Sequelize.BelongsToManyRemoveAssociationMixin<RoleInstance, RoleId>;
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyRemoveAssociationMixin<TModel, TModelPrimaryKey> = (
-  oldAssociated?: TModel | TModelPrimaryKey,
-  options?: BelongsToManyRemoveAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the removeAssociations mixin of the belongsToMany association.
- * @see BelongsToManyRemoveAssociationsMixin
- */
-export interface BelongsToManyRemoveAssociationsMixinOptions extends InstanceDestroyOptions, InstanceDestroyOptions {}
-
-/**
- * The removeAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  removeRoles: Sequelize.BelongsToManyRemoveAssociationsMixin<RoleInstance, RoleId>;
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyRemoveAssociationsMixin<TModel, TModelPrimaryKey> = (
-  oldAssociateds?: (TModel | TModelPrimaryKey)[],
-  options?: BelongsToManyRemoveAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the hasAssociation mixin of the belongsToMany association.
- * @see BelongsToManyHasAssociationMixin
- */
-export interface BelongsToManyHasAssociationMixinOptions extends BelongsToManyGetAssociationsMixinOptions {}
-
-/**
- * The hasAssociation mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  hasRole: Sequelize.BelongsToManyHasAssociationMixin<RoleInstance, RoleId>;
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyHasAssociationMixin<TModel, TModelPrimaryKey> = (
-  target: TModel | TModelPrimaryKey,
-  options?: BelongsToManyHasAssociationMixinOptions
-) => Promise<boolean>;
-
-/**
- * The options for the hasAssociations mixin of the belongsToMany association.
- * @see BelongsToManyHasAssociationsMixin
- */
-export interface BelongsToManyHasAssociationsMixinOptions extends BelongsToManyGetAssociationsMixinOptions {}
-
-/**
- * The removeAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles
- *  // hasRole...
- *  hasRoles: Sequelize.BelongsToManyHasAssociationsMixin<RoleInstance, RoleId>;
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyHasAssociationsMixin<TModel, TModelPrimaryKey> = (
-  targets: (TModel | TModelPrimaryKey)[],
-  options?: BelongsToManyHasAssociationsMixinOptions
-) => Promise<boolean>;
-
-/**
- * The options for the countAssociations mixin of the belongsToMany association.
- * @see BelongsToManyCountAssociationsMixin
- */
-export interface BelongsToManyCountAssociationsMixinOptions extends Transactionable, Filterable<any> {
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | boolean;
-}
-
-/**
- * The countAssociations mixin applied to models with belongsToMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsToMany(Role, { through: UserRole });
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  countRoles: Sequelize.BelongsToManyCountAssociationsMixin;
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to-many.js~BelongsToMany.html
- * @see Instance
- */
-export type BelongsToManyCountAssociationsMixin = (
-  options?: BelongsToManyCountAssociationsMixinOptions
-) => Promise<number>;
Index: ckend/node_modules/sequelize/types/associations/belongs-to.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/belongs-to.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-import { DataType } from '../data-types';
-import { CreateOptions, CreationAttributes, FindOptions, Model, ModelCtor, SaveOptions } from '../model';
-import { Association, AssociationOptions, SingleAssociationAccessors } from './base';
-
-// type ModelCtor<M extends Model> = InstanceType<typeof M>;
-/**
- * Options provided when associating models with belongsTo relationship
- *
- * @see Association class belongsTo method
- */
-export interface BelongsToOptions extends AssociationOptions {
-  /**
-   * The name of the field to use as the key for the association in the target table. Defaults to the primary
-   * key of the target table
-   */
-  targetKey?: string;
-
-  /**
-   * A string or a data type to represent the identifier in the table
-   */
-  keyType?: DataType;
-}
-
-export class BelongsTo<S extends Model = Model, T extends Model = Model> extends Association<S, T> {
-  public accessors: SingleAssociationAccessors;
-  constructor(source: ModelCtor<S>, target: ModelCtor<T>, options: BelongsToOptions);
-}
-
-/**
- * The options for the getAssociation mixin of the belongsTo association.
- * @see BelongsToGetAssociationMixin
- */
-export interface BelongsToGetAssociationMixinOptions extends FindOptions<any> {
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | string[] | boolean;
-}
-
-/**
- * The getAssociation mixin applied to models with belongsTo.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsTo(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttrib>, UserAttrib {
- *  getRole: Sequelize.BelongsToGetAssociationMixin<RoleInstance>;
- *  // setRole...
- *  // createRole...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to.js~BelongsTo.html
- * @see Instance
- */
-export type BelongsToGetAssociationMixin<TModel> = (options?: BelongsToGetAssociationMixinOptions) => Promise<TModel>;
-
-/**
- * The options for the setAssociation mixin of the belongsTo association.
- * @see BelongsToSetAssociationMixin
- */
-export interface BelongsToSetAssociationMixinOptions extends SaveOptions<any> {
-  /**
-   * Skip saving this after setting the foreign key if false.
-   */
-  save?: boolean;
-}
-
-/**
- * The setAssociation mixin applied to models with belongsTo.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsTo(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRole...
- *  setRole: Sequelize.BelongsToSetAssociationMixin<RoleInstance, RoleId>;
- *  // createRole...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to.js~BelongsTo.html
- * @see Instance
- */
-export type BelongsToSetAssociationMixin<TModel, TPrimaryKey> = (
-  newAssociation?: TModel | TPrimaryKey,
-  options?: BelongsToSetAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the createAssociation mixin of the belongsTo association.
- * @see BelongsToCreateAssociationMixin
- */
-export interface BelongsToCreateAssociationMixinOptions
-  extends CreateOptions<any>, BelongsToSetAssociationMixinOptions {}
-
-/**
- * The createAssociation mixin applied to models with belongsTo.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.belongsTo(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRole...
- *  // setRole...
- *  createRole: Sequelize.BelongsToCreateAssociationMixin<RoleAttributes>;
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/belongs-to.js~BelongsTo.html
- * @see Instance
- */
-export type BelongsToCreateAssociationMixin<TModel extends Model> = (
-  values?: CreationAttributes<TModel>,
-  options?: BelongsToCreateAssociationMixinOptions
-) => Promise<TModel>;
-
-export default BelongsTo;
Index: ckend/node_modules/sequelize/types/associations/has-many.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/has-many.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,402 +1,0 @@
-import { DataType } from '../data-types';
-import {
-  CreateOptions,
-  CreationAttributes,
-  Filterable,
-  FindOptions,
-  InstanceUpdateOptions,
-  Model,
-  ModelCtor,
-  Transactionable,
-} from '../model';
-import { Association, ManyToManyOptions, MultiAssociationAccessors } from './base';
-
-/**
- * Options provided when associating models with hasMany relationship
- */
-export interface HasManyOptions extends ManyToManyOptions {
-
-  /**
-   * The name of the field to use as the key for the association in the source table. Defaults to the primary
-   * key of the source table
-   */
-  sourceKey?: string;
-
-  /**
-   * A string or a data type to represent the identifier in the table
-   */
-  keyType?: DataType;
-}
-
-export class HasMany<S extends Model = Model, T extends Model = Model> extends Association<S, T> {
-  public accessors: MultiAssociationAccessors;
-  constructor(source: ModelCtor<S>, target: ModelCtor<T>, options: HasManyOptions);
-}
-
-/**
- * The options for the getAssociations mixin of the hasMany association.
- * @see HasManyGetAssociationsMixin
- */
-export interface HasManyGetAssociationsMixinOptions extends FindOptions<any> {
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | string[] | boolean;
-}
-
-/**
- * The getAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  getRoles: Sequelize.HasManyGetAssociationsMixin<RoleInstance>;
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyGetAssociationsMixin<TModel> = (options?: HasManyGetAssociationsMixinOptions) => Promise<TModel[]>;
-
-/**
- * The options for the setAssociations mixin of the hasMany association.
- * @see HasManySetAssociationsMixin
- */
-export interface HasManySetAssociationsMixinOptions extends FindOptions<any>, InstanceUpdateOptions<any> {}
-
-/**
- * The setAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  setRoles: Sequelize.HasManySetAssociationsMixin<RoleInstance, RoleId>;
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManySetAssociationsMixin<TModel, TModelPrimaryKey> = (
-  newAssociations?: (TModel | TModelPrimaryKey)[],
-  options?: HasManySetAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the addAssociations mixin of the hasMany association.
- * @see HasManyAddAssociationsMixin
- */
-export interface HasManyAddAssociationsMixinOptions extends InstanceUpdateOptions<any> {}
-
-/**
- * The addAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  addRoles: Sequelize.HasManyAddAssociationsMixin<RoleInstance, RoleId>;
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyAddAssociationsMixin<TModel, TModelPrimaryKey> = (
-  newAssociations?: (TModel | TModelPrimaryKey)[],
-  options?: HasManyAddAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the addAssociation mixin of the hasMany association.
- * @see HasManyAddAssociationMixin
- */
-export interface HasManyAddAssociationMixinOptions extends InstanceUpdateOptions<any> {}
-
-/**
- * The addAssociation mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  addRole: Sequelize.HasManyAddAssociationMixin<RoleInstance, RoleId>;
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyAddAssociationMixin<TModel, TModelPrimaryKey> = (
-  newAssociation?: TModel | TModelPrimaryKey,
-  options?: HasManyAddAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the createAssociation mixin of the hasMany association.
- * @see HasManyCreateAssociationMixin
- */
-export interface HasManyCreateAssociationMixinOptions extends CreateOptions<any> {}
-
-/**
- * The createAssociation mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  createRole: Sequelize.HasManyCreateAssociationMixin<RoleAttributes>;
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyCreateAssociationMixin<
-  TModel extends Model,
-  TForeignKey extends keyof CreationAttributes<TModel> = never,
-  TScope extends keyof CreationAttributes<TModel> = never
-> = (
-  values?: Omit<CreationAttributes<TModel>, TForeignKey | TScope>,
-  options?: HasManyCreateAssociationMixinOptions
-) => Promise<TModel>;
-
-/**
- * The options for the removeAssociation mixin of the hasMany association.
- * @see HasManyRemoveAssociationMixin
- */
-export interface HasManyRemoveAssociationMixinOptions extends InstanceUpdateOptions<any> {}
-
-/**
- * The removeAssociation mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  removeRole: Sequelize.HasManyRemoveAssociationMixin<RoleInstance, RoleId>;
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyRemoveAssociationMixin<TModel, TModelPrimaryKey> = (
-  oldAssociated?: TModel | TModelPrimaryKey,
-  options?: HasManyRemoveAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the removeAssociations mixin of the hasMany association.
- * @see HasManyRemoveAssociationsMixin
- */
-export interface HasManyRemoveAssociationsMixinOptions extends InstanceUpdateOptions<any> {}
-
-/**
- * The removeAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  removeRoles: Sequelize.HasManyRemoveAssociationsMixin<RoleInstance, RoleId>;
- *  // hasRole...
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyRemoveAssociationsMixin<TModel, TModelPrimaryKey> = (
-  oldAssociateds?: (TModel | TModelPrimaryKey)[],
-  options?: HasManyRemoveAssociationsMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the hasAssociation mixin of the hasMany association.
- * @see HasManyHasAssociationMixin
- */
-export interface HasManyHasAssociationMixinOptions extends HasManyGetAssociationsMixinOptions {}
-
-/**
- * The hasAssociation mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  hasRole: Sequelize.HasManyHasAssociationMixin<RoleInstance, RoleId>;
- *  // hasRoles...
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyHasAssociationMixin<TModel, TModelPrimaryKey> = (
-  target: TModel | TModelPrimaryKey,
-  options?: HasManyHasAssociationMixinOptions
-) => Promise<boolean>;
-
-/**
- * The options for the hasAssociations mixin of the hasMany association.
- * @see HasManyHasAssociationsMixin
- */
-export interface HasManyHasAssociationsMixinOptions extends HasManyGetAssociationsMixinOptions {}
-
-/**
- * The removeAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles
- *  // hasRole...
- *  hasRoles: Sequelize.HasManyHasAssociationsMixin<RoleInstance, RoleId>;
- *  // countRoles...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyHasAssociationsMixin<TModel, TModelPrimaryKey> = (
-  targets: (TModel | TModelPrimaryKey)[],
-  options?: HasManyHasAssociationsMixinOptions
-) => Promise<boolean>;
-
-/**
- * The options for the countAssociations mixin of the hasMany association.
- * @see HasManyCountAssociationsMixin
- */
-export interface HasManyCountAssociationsMixinOptions extends Transactionable, Filterable<any> {
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | boolean;
-}
-
-/**
- * The countAssociations mixin applied to models with hasMany.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasMany(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRoles...
- *  // setRoles...
- *  // addRoles...
- *  // addRole...
- *  // createRole...
- *  // removeRole...
- *  // removeRoles...
- *  // hasRole...
- *  // hasRoles...
- *  countRoles: Sequelize.HasManyCountAssociationsMixin;
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-many.js~HasMany.html
- * @see Instance
- */
-export type HasManyCountAssociationsMixin = (options?: HasManyCountAssociationsMixinOptions) => Promise<number>;
Index: ckend/node_modules/sequelize/types/associations/has-one.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/has-one.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,119 +1,0 @@
-import { DataType } from '../data-types';
-import { CreateOptions, CreationAttributes, FindOptions, Model, ModelCtor, SaveOptions } from '../model';
-import { Association, AssociationOptions, SingleAssociationAccessors } from './base';
-
-/**
- * Options provided when associating models with hasOne relationship
- */
-export interface HasOneOptions extends AssociationOptions {
-
-  /**
-   * The name of the field to use as the key for the association in the source table. Defaults to the primary
-   * key of the source table
-   */
-  sourceKey?: string;
-
-  /**
-   * A string or a data type to represent the identifier in the table
-   */
-  keyType?: DataType;
-}
-
-export class HasOne<S extends Model = Model, T extends Model = Model> extends Association<S, T> {
-  public accessors: SingleAssociationAccessors;
-  constructor(source: ModelCtor<S>, target: ModelCtor<T>, options: HasOneOptions);
-}
-
-/**
- * The options for the getAssociation mixin of the hasOne association.
- * @see HasOneGetAssociationMixin
- */
-export interface HasOneGetAssociationMixinOptions extends FindOptions<any> {
-  /**
-   * Apply a scope on the related model, or remove its default scope by passing false.
-   */
-  scope?: string | string[] | boolean;
-}
-
-/**
- * The getAssociation mixin applied to models with hasOne.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasOne(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttrib>, UserAttrib {
- *  getRole: Sequelize.HasOneGetAssociationMixin<RoleInstance>;
- *  // setRole...
- *  // createRole...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-one.js~HasOne.html
- * @see Instance
- */
-export type HasOneGetAssociationMixin<TModel> = (options?: HasOneGetAssociationMixinOptions) => Promise<TModel>;
-
-/**
- * The options for the setAssociation mixin of the hasOne association.
- * @see HasOneSetAssociationMixin
- */
-export interface HasOneSetAssociationMixinOptions extends HasOneGetAssociationMixinOptions, SaveOptions<any> {
-  /**
-   * Skip saving this after setting the foreign key if false.
-   */
-  save?: boolean;
-}
-
-/**
- * The setAssociation mixin applied to models with hasOne.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasOne(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRole...
- *  setRole: Sequelize.HasOneSetAssociationMixin<RoleInstance, RoleId>;
- *  // createRole...
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-one.js~HasOne.html
- * @see Instance
- */
-export type HasOneSetAssociationMixin<TModel, TModelPrimaryKey> = (
-  newAssociation?: TModel | TModelPrimaryKey,
-  options?: HasOneSetAssociationMixinOptions
-) => Promise<void>;
-
-/**
- * The options for the createAssociation mixin of the hasOne association.
- * @see HasOneCreateAssociationMixin
- */
-export interface HasOneCreateAssociationMixinOptions extends HasOneSetAssociationMixinOptions, CreateOptions<any> {}
-
-/**
- * The createAssociation mixin applied to models with hasOne.
- * An example of usage is as follows:
- *
- * ```js
- *
- * User.hasOne(Role);
- *
- * interface UserInstance extends Sequelize.Instance<UserInstance, UserAttributes>, UserAttributes {
- *  // getRole...
- *  // setRole...
- *  createRole: Sequelize.HasOneCreateAssociationMixin<RoleAttributes>;
- * }
- * ```
- *
- * @see https://sequelize.org/master/class/lib/associations/has-one.js~HasOne.html
- * @see Instance
- */
-export type HasOneCreateAssociationMixin<TModel extends Model> = (
-  values?: CreationAttributes<TModel>,
-  options?: HasOneCreateAssociationMixinOptions
-) => Promise<TModel>;
Index: ckend/node_modules/sequelize/types/associations/index.d.ts
===================================================================
--- backend/node_modules/sequelize/types/associations/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export * from './base';
-export * from './belongs-to';
-export * from './has-one';
-export * from './has-many';
-export * from './belongs-to-many';
Index: ckend/node_modules/sequelize/types/data-types.d.ts
===================================================================
--- backend/node_modules/sequelize/types/data-types.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,618 +1,0 @@
-/**
- * The datatypes are used when defining a new model using `Model.init`, like this:
- * ```js
- * class MyModel extends MyModel {}
- * MyModel.init({ column: DataTypes.INTEGER }, { sequelize });
- * ```
- * When defining a model you can just as easily pass a string as type, but often using the types defined here is beneficial. For example, using `DataTypes.BLOB`, mean
- * that that column will be returned as an instance of `Buffer` when being fetched by sequelize.
- *
- * Some data types have special properties that can be accessed in order to change the data type.
- * For example, to get an unsigned integer with zerofill you can do `DataTypes.INTEGER.UNSIGNED.ZEROFILL`.
- * The order you access the properties in do not matter, so `DataTypes.INTEGER.ZEROFILL.UNSIGNED` is fine as well. The available properties are listed under each data type.
- *
- * To provide a length for the data type, you can invoke it like a function: `INTEGER(2)`
- *
- * Three of the values provided here (`NOW`, `UUIDV1` and `UUIDV4`) are special default values, that should not be used to define types. Instead they are used as shorthands for
- * defining default values. For example, to get a uuid field with a default value generated following v1 of the UUID standard:
- * ```js
- * class MyModel extends Model {}
- * MyModel.init({
- *   uuid: {
- *     type: DataTypes.UUID,
- *     defaultValue: DataTypes.UUIDV1,
- *     primaryKey: true
- *   }
- * }, { sequelize })
- * ```
- * There may be times when you want to generate your own UUID conforming to some other algorithm. This is accomplised
- * using the defaultValue property as well, but instead of specifying one of the supplied UUID types, you return a value
- * from a function.
- * ```js
- * class MyModel extends Model {}
- * MyModel.init({
- *   uuid: {
- *     type: DataTypes.UUID,
- *     defaultValue() {
- *       return generateMyId()
- *     },
- *     primaryKey: true
- *    }
- * }, { sequelize })
- * ```
- */
-
-/**
- *
- */
-export type DataType = string | AbstractDataTypeConstructor | AbstractDataType;
-
-export const ABSTRACT: AbstractDataTypeConstructor;
-
-interface AbstractDataTypeConstructor {
-  key: string;
-  warn(link: string, text: string): void;
-  new (): AbstractDataType;
-  (): AbstractDataType;
-}
-
-export interface AbstractDataType {
-  key: string;
-  dialectTypes: string;
-  toSql(): string;
-  stringify(value: unknown, options?: object): string;
-  toString(options: object): string;
-}
-
-/**
- * A variable length string. Default length 255
- */
-export const STRING: StringDataTypeConstructor;
-
-interface StringDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (length?: number, binary?: boolean): StringDataType;
-  new (options?: StringDataTypeOptions): StringDataType;
-  (length?: number, binary?: boolean): StringDataType;
-  (options?: StringDataTypeOptions): StringDataType;
-}
-
-export interface StringDataType extends AbstractDataType {
-  options?: StringDataTypeOptions;
-  BINARY: this;
-  validate(value: unknown): boolean;
-}
-
-export interface StringDataTypeOptions {
-  length?: number;
-  binary?: boolean;
-}
-
-/**
- * A fixed length string. Default length 255
- */
-export const CHAR: CharDataTypeConstructor;
-
-interface CharDataTypeConstructor extends StringDataTypeConstructor {
-  new (length?: number, binary?: boolean): CharDataType;
-  new (options?: CharDataTypeOptions): CharDataType;
-  (length?: number, binary?: boolean): CharDataType;
-  (options?: CharDataTypeOptions): CharDataType;
-}
-
-export interface CharDataType extends StringDataType {
-  options: CharDataTypeOptions;
-}
-
-export interface CharDataTypeOptions extends StringDataTypeOptions {}
-
-export type TextLength = 'tiny' | 'medium' | 'long';
-
-/**
- * An (un)limited length text column. Available lengths: `tiny`, `medium`, `long`
- */
-export const TEXT: TextDataTypeConstructor;
-
-interface TextDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (length?: TextLength): TextDataType;
-  new (options?: TextDataTypeOptions): TextDataType;
-  (length?: TextLength): TextDataType;
-  (options?: TextDataTypeOptions): TextDataType;
-}
-
-export interface TextDataType extends AbstractDataType {
-  options: TextDataTypeOptions;
-  validate(value: unknown): boolean;
-}
-
-export interface TextDataTypeOptions {
-  length?: TextLength;
-}
-
-export const NUMBER: NumberDataTypeConstructor;
-
-interface NumberDataTypeConstructor extends AbstractDataTypeConstructor {
-  options: NumberDataTypeOptions;
-  UNSIGNED: this;
-  ZEROFILL: this;
-  new (options?: NumberDataTypeOptions): NumberDataType;
-  (options?: NumberDataTypeOptions): NumberDataType;
-  validate(value: unknown): boolean;
-}
-
-export interface NumberDataType extends AbstractDataType {
-  options: NumberDataTypeOptions;
-  UNSIGNED: this;
-  ZEROFILL: this;
-  validate(value: unknown): boolean;
-}
-
-export interface IntegerDataTypeOptions {
-  length?: number;
-  zerofill?: boolean;
-  unsigned?: boolean;
-}
-export interface NumberDataTypeOptions extends IntegerDataTypeOptions {
-  decimals?: number;
-  precision?: number;
-  scale?: number;
-}
-
-/**
- * A 8 bit integer.
- */
-export const TINYINT: TinyIntegerDataTypeConstructor;
-
-interface TinyIntegerDataTypeConstructor extends NumberDataTypeConstructor {
-  new (options?: IntegerDataTypeOptions): TinyIntegerDataType;
-  (options?: IntegerDataTypeOptions): TinyIntegerDataType;
-}
-
-export interface TinyIntegerDataType extends NumberDataType {
-  options: IntegerDataTypeOptions;
-}
-
-/**
- * A 16 bit integer.
- */
-export const SMALLINT: SmallIntegerDataTypeConstructor;
-
-interface SmallIntegerDataTypeConstructor extends NumberDataTypeConstructor {
-  new (options?: IntegerDataTypeOptions): SmallIntegerDataType;
-  (options?: IntegerDataTypeOptions): SmallIntegerDataType;
-}
-
-export interface SmallIntegerDataType extends NumberDataType {
-  options: IntegerDataTypeOptions;
-}
-
-/**
- * A 24 bit integer.
- */
-export const MEDIUMINT: MediumIntegerDataTypeConstructor;
-
-interface MediumIntegerDataTypeConstructor extends NumberDataTypeConstructor {
-  new (options?: IntegerDataTypeOptions): MediumIntegerDataType;
-  (options?: IntegerDataTypeOptions): MediumIntegerDataType;
-}
-
-export interface MediumIntegerDataType extends NumberDataType {
-  options: IntegerDataTypeOptions;
-}
-
-/**
- * A 32 bit integer.
- */
-export const INTEGER: IntegerDataTypeConstructor;
-
-interface IntegerDataTypeConstructor extends NumberDataTypeConstructor {
-  new (options?: NumberDataTypeOptions): IntegerDataType;
-  (options?: NumberDataTypeOptions): IntegerDataType;
-}
-
-export interface IntegerDataType extends NumberDataType {
-  options: NumberDataTypeOptions;
-}
-
-/**
- * A 64 bit integer.
- *
- * Available properties: `UNSIGNED`, `ZEROFILL`
- *
- */
-export const BIGINT: BigIntDataTypeConstructor;
-
-interface BigIntDataTypeConstructor extends NumberDataTypeConstructor {
-  new (options?: IntegerDataTypeOptions): BigIntDataType;
-  (options?: IntegerDataTypeOptions): BigIntDataType;
-}
-
-export interface BigIntDataType extends NumberDataType {
-  options: IntegerDataTypeOptions;
-}
-
-/**
- * Floating point number (4-byte precision). Accepts one or two arguments for precision
- */
-export const FLOAT: FloatDataTypeConstructor;
-
-interface FloatDataTypeConstructor extends NumberDataTypeConstructor {
-  new (length?: number, decimals?: number): FloatDataType;
-  new (options?: FloatDataTypeOptions): FloatDataType;
-  (length?: number, decimals?: number): FloatDataType;
-  (options?: FloatDataTypeOptions): FloatDataType;
-}
-
-export interface FloatDataType extends NumberDataType {
-  options: FloatDataTypeOptions;
-}
-
-export interface FloatDataTypeOptions {
-  length?: number;
-  decimals?: number;
-}
-
-/**
- * Floating point number (4-byte precision). Accepts one or two arguments for precision
- */
-export const REAL: RealDataTypeConstructor;
-
-interface RealDataTypeConstructor extends NumberDataTypeConstructor {
-  new (length?: number, decimals?: number): RealDataType;
-  new (options?: RealDataTypeOptions): RealDataType;
-  (length?: number, decimals?: number): RealDataType;
-  (options?: RealDataTypeOptions): RealDataType;
-}
-
-export interface RealDataType extends NumberDataType {
-  options: RealDataTypeOptions;
-}
-
-export interface RealDataTypeOptions {
-  length?: number;
-  decimals?: number;
-}
-
-/**
- * Floating point number (8-byte precision). Accepts one or two arguments for precision
- */
-export const DOUBLE: DoubleDataTypeConstructor;
-
-interface DoubleDataTypeConstructor extends NumberDataTypeConstructor {
-  new (length?: number, decimals?: number): DoubleDataType;
-  new (options?: DoubleDataTypeOptions): DoubleDataType;
-  (length?: number, decimals?: number): DoubleDataType;
-  (options?: DoubleDataTypeOptions): DoubleDataType;
-}
-
-export interface DoubleDataType extends NumberDataType {
-  options: DoubleDataTypeOptions;
-}
-
-export interface DoubleDataTypeOptions {
-  length?: number;
-  decimals?: number;
-}
-
-/**
- * Decimal number. Accepts one or two arguments for precision
- */
-export const DECIMAL: DecimalDataTypeConstructor;
-
-interface DecimalDataTypeConstructor extends NumberDataTypeConstructor {
-  PRECISION: this;
-  SCALE: this;
-  new (precision?: number, scale?: number): DecimalDataType;
-  new (options?: DecimalDataTypeOptions): DecimalDataType;
-  (precision?: number, scale?: number): DecimalDataType;
-  (options?: DecimalDataTypeOptions): DecimalDataType;
-}
-
-export interface DecimalDataType extends NumberDataType {
-  options: DecimalDataTypeOptions;
-}
-
-export interface DecimalDataTypeOptions {
-  precision?: number;
-  scale?: number;
-}
-
-/**
- * A boolean / tinyint column, depending on dialect
- */
-export const BOOLEAN: AbstractDataTypeConstructor;
-
-/**
- * A time column
- */
-export const TIME: AbstractDataTypeConstructor;
-
-/**
- * A datetime column
- */
-export const DATE: DateDataTypeConstructor;
-
-interface DateDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (length?: string | number): DateDataType;
-  new (options?: DateDataTypeOptions): DateDataType;
-  (length?: string | number): DateDataType;
-  (options?: DateDataTypeOptions): DateDataType;
-}
-
-export interface DateDataType extends AbstractDataType {
-  options: DateDataTypeOptions;
-}
-
-export interface DateDataTypeOptions {
-  length?: string | number;
-}
-
-/**
- * A date only column
- */
-export const DATEONLY: DateOnlyDataTypeConstructor;
-
-interface DateOnlyDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (): DateOnlyDataType;
-  (): DateOnlyDataType;
-}
-
-export interface DateOnlyDataType extends AbstractDataType {
-}
-
-
-/**
- * A key / value column. Only available in postgres.
- */
-export const HSTORE: AbstractDataTypeConstructor;
-
-/**
- * A JSON string column. Only available in postgres.
- */
-export const JSON: AbstractDataTypeConstructor;
-/**
- * A pre-processed JSON data column. Only available in postgres.
- */
-export const JSONB: AbstractDataTypeConstructor;
-
-/**
- * A default value of the current timestamp
- */
-export const NOW: AbstractDataTypeConstructor;
-
-/**
- * Binary storage. Available lengths: `tiny`, `medium`, `long`
- */
-export const BLOB: BlobDataTypeConstructor;
-
-export type BlobSize = 'tiny' | 'medium' | 'long';
-
-interface BlobDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (length?: BlobSize): BlobDataType;
-  new (options?: BlobDataTypeOptions): BlobDataType;
-  (length?: BlobSize): BlobDataType;
-  (options?: BlobDataTypeOptions): BlobDataType;
-}
-
-export interface BlobDataType extends AbstractDataType {
-  options: BlobDataTypeOptions;
-  escape: boolean;
-}
-
-export interface BlobDataTypeOptions {
-  length?: BlobSize;
-  escape?: boolean;
-}
-
-/**
- * Range types are data types representing a range of values of some element type (called the range's subtype).
- * Only available in postgres.
- *
- * See [Postgres documentation](http://www.postgresql.org/docs/9.4/static/rangetypes.html) for more details
- */
-export const RANGE: RangeDataTypeConstructor;
-
-export type RangeableDataType =
-  | IntegerDataTypeConstructor
-  | IntegerDataType
-  | BigIntDataTypeConstructor
-  | BigIntDataType
-  | DecimalDataTypeConstructor
-  | DecimalDataType
-  | DateOnlyDataTypeConstructor
-  | DateOnlyDataType
-  | DateDataTypeConstructor
-  | DateDataType;
-
-interface RangeDataTypeConstructor extends AbstractDataTypeConstructor {
-  new <T extends RangeableDataType>(subtype?: T): RangeDataType<T>;
-  new <T extends RangeableDataType>(options: RangeDataTypeOptions<T>): RangeDataType<T>;
-  <T extends RangeableDataType>(subtype?: T): RangeDataType<T>;
-  <T extends RangeableDataType>(options: RangeDataTypeOptions<T>): RangeDataType<T>;
-}
-
-export interface RangeDataType<T extends RangeableDataType> extends AbstractDataType {
-  options: RangeDataTypeOptions<T>;
-}
-
-export interface RangeDataTypeOptions<T extends RangeableDataType> {
-  subtype?: T;
-}
-
-/**
- * A column storing a unique universal identifier. Use with `UUIDV1` or `UUIDV4` for default values.
- */
-export const UUID: AbstractDataTypeConstructor;
-
-/**
- * A default unique universal identifier generated following the UUID v1 standard
- */
-export const UUIDV1: AbstractDataTypeConstructor;
-
-/**
- * A default unique universal identifier generated following the UUID v4 standard
- */
-export const UUIDV4: AbstractDataTypeConstructor;
-
-/**
- * A virtual value that is not stored in the DB. This could for example be useful if you want to provide a default value in your model that is returned to the user but not stored in the DB.
- *
- * You could also use it to validate a value before permuting and storing it. Checking password length before hashing it for example:
- * ```js
- * class User extends Model {}
- * User.init({
- *   password_hash: DataTypes.STRING,
- *   password: {
- *    type: DataTypes.VIRTUAL,
- *    set (val) {
- *      this.setDataValue('password', val); // Remember to set the data value, otherwise it won't be validated
- *      this.setDataValue('password_hash', this.salt + val);
- *    },
- *    validate: {
- *      isLongEnough (val) {
- *        if (val.length < 7) {
- *          throw new Error("Please choose a longer password")
- *        }
- *      }
- *    }
- *   }
- * }, { sequelize });
- * ```
- *
- * VIRTUAL also takes a return type and dependency fields as arguments
- * If a virtual attribute is present in `attributes` it will automatically pull in the extra fields as well.
- * Return type is mostly useful for setups that rely on types like GraphQL.
- * ```js
- * {
- *   active: {
- *   type: new DataTypes.VIRTUAL(DataTypes.BOOLEAN, ['createdAt']),
- *   get() {
- *     return this.get('createdAt') > Date.now() - (7 * 24 * 60 * 60 * 1000)
- *   }
- *   }
- * }
- * ```
- *
- * In the above code the password is stored plainly in the password field so it can be validated, but is never stored in the DB.
- */
-export const VIRTUAL: VirtualDataTypeConstructor;
-
-interface VirtualDataTypeConstructor extends AbstractDataTypeConstructor {
-  new <T extends AbstractDataTypeConstructor | AbstractDataType>(ReturnType: T, fields?: string[]): VirtualDataType<
-    T
-  >;
-  <T extends AbstractDataTypeConstructor | AbstractDataType>(ReturnType: T, fields?: string[]): VirtualDataType<T>;
-}
-
-export interface VirtualDataType<T extends AbstractDataTypeConstructor | AbstractDataType> extends AbstractDataType {
-  returnType: T;
-  fields: string[];
-}
-
-/**
- * An enumeration. `DataTypes.ENUM('value', 'another value')`.
- */
-export const ENUM: EnumDataTypeConstructor;
-
-interface EnumDataTypeConstructor extends AbstractDataTypeConstructor {
-  new <T extends string>(...values: T[]): EnumDataType<T>;
-  new <T extends string>(options: EnumDataTypeOptions<T>): EnumDataType<T>;
-  <T extends string>(...values: T[]): EnumDataType<T>;
-  <T extends string>(options: EnumDataTypeOptions<T>): EnumDataType<T>;
-}
-
-export interface EnumDataType<T extends string> extends AbstractDataType {
-  values: T[];
-  options: EnumDataTypeOptions<T>;
-}
-
-export interface EnumDataTypeOptions<T extends string> {
-  values: T[];
-}
-
-/**
- * An array of `type`, e.g. `DataTypes.ARRAY(DataTypes.DECIMAL)`. Only available in postgres.
- */
-export const ARRAY: ArrayDataTypeConstructor;
-
-interface ArrayDataTypeConstructor extends AbstractDataTypeConstructor {
-  new <T extends AbstractDataTypeConstructor | AbstractDataType>(type: T): ArrayDataType<T>;
-  new <T extends AbstractDataTypeConstructor | AbstractDataType>(options: ArrayDataTypeOptions<T>): ArrayDataType<T>;
-  <T extends AbstractDataTypeConstructor | AbstractDataType>(type: T): ArrayDataType<T>;
-  <T extends AbstractDataTypeConstructor | AbstractDataType>(options: ArrayDataTypeOptions<T>): ArrayDataType<T>;
-  is<T extends AbstractDataTypeConstructor | AbstractDataType>(obj: unknown, type: T): obj is ArrayDataType<T>;
-}
-
-export interface ArrayDataType<T extends AbstractDataTypeConstructor | AbstractDataType> extends AbstractDataType {
-  options: ArrayDataTypeOptions<T>;
-}
-
-export interface ArrayDataTypeOptions<T extends AbstractDataTypeConstructor | AbstractDataType> {
-  type: T;
-}
-
-/**
- * A geometry datatype represents two dimensional spacial objects.
- */
-export const GEOMETRY: GeometryDataTypeConstructor;
-
-interface GeometryDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (type: string, srid?: number): GeometryDataType;
-  new (options: GeometryDataTypeOptions): GeometryDataType;
-  (type: string, srid?: number): GeometryDataType;
-  (options: GeometryDataTypeOptions): GeometryDataType;
-}
-
-export interface GeometryDataType extends AbstractDataType {
-  options: GeometryDataTypeOptions;
-  type: string;
-  srid?: number;
-  escape: boolean;
-}
-
-export interface GeometryDataTypeOptions {
-  type: string;
-  srid?: number;
-}
-
-/**
- * A geography datatype represents two dimensional spacial objects in an elliptic coord system.
- */
-export const GEOGRAPHY: GeographyDataTypeConstructor;
-
-interface GeographyDataTypeConstructor extends AbstractDataTypeConstructor {
-  new (type: string, srid?: number): GeographyDataType;
-  new (options: GeographyDataTypeOptions): GeographyDataType;
-  (type: string, srid?: number): GeographyDataType;
-  (options: GeographyDataTypeOptions): GeographyDataType;
-}
-
-export interface GeographyDataType extends AbstractDataType {
-  options: GeographyDataTypeOptions;
-  type: string;
-  srid?: number;
-  escape: boolean;
-}
-
-export interface GeographyDataTypeOptions {
-  type: string;
-  srid?: number;
-}
-
-export const CIDR: AbstractDataTypeConstructor;
-
-export const INET: AbstractDataTypeConstructor;
-
-export const MACADDR: AbstractDataTypeConstructor;
-
-/**
- * Case-insensitive text
- */
-export const CITEXT: AbstractDataTypeConstructor;
-
-/**
- * Full text search vector. Only available in postgres.
- */
-export const TSVECTOR: AbstractDataTypeConstructor;
-
-// umzug compatibility
-export type DataTypeAbstract = AbstractDataTypeConstructor;
Index: ckend/node_modules/sequelize/types/deferrable.d.ts
===================================================================
--- backend/node_modules/sequelize/types/deferrable.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,105 +1,0 @@
-/**
- * Can be used to
- * make foreign key constraints deferrable and to set the constaints within a
- * transaction. This is only supported in PostgreSQL.
- *
- * The foreign keys can be configured like this. It will create a foreign key
- * that will check the constraints immediately when the data was inserted.
- *
- * ```js
- * class MyModel extends Model {}
- * MyModel.init({
- *   foreign_id: {
- *     type: Sequelize.INTEGER,
- *     references: {
- *       model: OtherModel,
- *       key: 'id',
- *       deferrable: Sequelize.Deferrable.INITIALLY_IMMEDIATE
- *     }
- *   }
- * }, { sequelize });
- * ```
- *
- * The constraints can be configured in a transaction like this. It will
- * trigger a query once the transaction has been started and set the constraints
- * to be checked at the very end of the transaction.
- *
- * ```js
- * sequelize.transaction({
- *   deferrable: Sequelize.Deferrable.SET_DEFERRED
- * });
- * ```
- */
-
-/**
- *
- */
-export interface AbstractDeferrableStatic {
-  new (): Deferrable;
-  (): Deferrable;
-}
-export interface Deferrable {
-  toString(): string;
-  toSql(): string;
-}
-
-export interface InitiallyDeferredDeferrableStatic extends AbstractDeferrableStatic {
-  new (): InitiallyDeferredDeferrable;
-  (): InitiallyDeferredDeferrable;
-}
-export interface InitiallyDeferredDeferrable extends Deferrable {}
-export const INITIALLY_DEFERRED: InitiallyDeferredDeferrableStatic;
-
-export interface InitiallyImmediateDeferrableStatic extends AbstractDeferrableStatic {
-  new (): InitiallyImmediateDeferrable;
-  (): InitiallyImmediateDeferrable;
-}
-export interface InitiallyImmediateDeferrable extends Deferrable {}
-export const INITIALLY_IMMEDIATE: InitiallyImmediateDeferrableStatic;
-
-export interface NotDeferrableStatic extends AbstractDeferrableStatic {
-  new (): NotDeferrable;
-  (): NotDeferrable;
-}
-export interface NotDeferrable extends Deferrable {}
-/**
- * Will set the constraints to not deferred. This is the default in PostgreSQL and it make
- * it impossible to dynamically defer the constraints within a transaction.
- */
-export const NOT: NotDeferrableStatic;
-
-export interface SetDeferredDeferrableStatic extends AbstractDeferrableStatic {
-  /**
-   * @param constraints An array of constraint names. Will defer all constraints by default.
-   */
-  new (constraints: string[]): SetDeferredDeferrable;
-  /**
-   * @param constraints An array of constraint names. Will defer all constraints by default.
-   */
-  (constraints: string[]): SetDeferredDeferrable;
-}
-export interface SetDeferredDeferrable extends Deferrable {}
-/**
- * Will trigger an additional query at the beginning of a
- * transaction which sets the constraints to deferred.
- */
-export const SET_DEFERRED: SetDeferredDeferrableStatic;
-
-export interface SetImmediateDeferrableStatic extends AbstractDeferrableStatic {
-  /**
-   * @param constraints An array of constraint names. Will defer all constraints by default.
-   */
-  new (constraints: string[]): SetImmediateDeferrable;
-  /**
-   * @param constraints An array of constraint names. Will defer all constraints by default.
-   */
-  (constraints: string[]): SetImmediateDeferrable;
-}
-export interface SetImmediateDeferrable extends Deferrable {}
-/**
- * Will trigger an additional query at the beginning of a
- * transaction which sets the constraints to immediately.
- *
- * @param constraints An array of constraint names. Will defer all constraints by default.
- */
-export const SET_IMMEDIATE: SetImmediateDeferrableStatic;
Index: ckend/node_modules/sequelize/types/dialects/abstract/connection-manager.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/abstract/connection-manager.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-export interface GetConnectionOptions {
-  /**
-   * Set which replica to use. Available options are `read` and `write`
-   */
-  type: 'read' | 'write';
-  /**
-   * Force master or write replica to get connection from
-   */
-  useMaster?: boolean;
-}
-
-export type Connection = object;
-
-export interface ConnectionManager {
-  refreshTypeParser(dataTypes: object): void;
-  /**
-   * Drain the pool and close it permanently
-   */
-  close(): Promise<void>;
-  /**
-   * Initialize connection pool. By default pool autostart is set to false, so no connection will be
-   * be created unless `pool.acquire` is called.
-   */
-  initPools(): void;
-  /**
-   * Get connection from pool. It sets database version if it's not already set.
-   * Call pool.acquire to get a connection.
-   */
-  getConnection(opts: GetConnectionOptions): Promise<Connection>;
-  /**
-   * Release a pooled connection, so it can be utilized by other connection requests
-   */
-  releaseConnection(conn: Connection): void;
-
-  /**
-   * Destroys a pooled connection and removes it from the pool.
-   */
-  destroyConnection(conn: Connection): Promise<void>;
-}
Index: ckend/node_modules/sequelize/types/dialects/abstract/index.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/abstract/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,109 +1,0 @@
-import type { Dialect } from '../../sequelize.js';
-import type { AbstractQuery } from './query.js';
-
-export declare type DialectSupports = {
-  'DEFAULT': boolean;
-  'DEFAULT VALUES': boolean;
-  'VALUES ()': boolean;
-  'LIMIT ON UPDATE': boolean;
-  'ON DUPLICATE KEY': boolean;
-  'ORDER NULLS': boolean;
-  'UNION': boolean;
-  'UNION ALL': boolean;
-  'RIGHT JOIN': boolean;
-  EXCEPTION: boolean;
-  forShare?: 'LOCK IN SHARE MODE' | 'FOR SHARE' | undefined;
-  lock: boolean;
-  lockOf: boolean;
-  lockKey: boolean;
-  lockOuterJoinFailure: boolean;
-  skipLocked: boolean;
-  finalTable: boolean;
-  returnValues: false | {
-    output: boolean;
-    returning: boolean;
-  };
-  autoIncrement: {
-    identityInsert: boolean;
-    defaultValue: boolean;
-    update: boolean;
-  };
-  bulkDefault: boolean;
-  schemas: boolean;
-  transactions: boolean;
-  settingIsolationLevelDuringTransaction: boolean;
-  transactionOptions: {
-    type: boolean;
-  };
-  migrations: boolean;
-  upserts: boolean;
-  inserts: {
-    ignoreDuplicates: string;
-    updateOnDuplicate: boolean | string;
-    onConflictDoNothing: string;
-    onConflictWhere: boolean,
-    conflictFields: boolean;
-  };
-  constraints: {
-    restrict: boolean;
-    addConstraint: boolean;
-    dropConstraint: boolean;
-    unique: boolean;
-    default: boolean;
-    check: boolean;
-    foreignKey: boolean;
-    primaryKey: boolean;
-    onUpdate: boolean;
-  };
-  index: {
-    collate: boolean;
-    length: boolean;
-    parser: boolean;
-    concurrently: boolean;
-    type: boolean;
-    using: boolean | number;
-    functionBased: boolean;
-    operator: boolean;
-    where: boolean;
-  };
-  groupedLimit: boolean;
-  indexViaAlter: boolean;
-  JSON: boolean;
-  JSONB: boolean;
-  ARRAY: boolean;
-  RANGE: boolean;
-  NUMERIC: boolean;
-  GEOMETRY: boolean;
-  GEOGRAPHY: boolean;
-  REGEXP: boolean;
-  /**
-   * Case-insensitive regexp operator support ('~*' in postgres).
-   */
-  IREGEXP: boolean;
-  HSTORE: boolean;
-  TSVECTOR: boolean;
-  deferrableConstraints: boolean;
-  tmpTableTrigger: boolean;
-  indexHints: boolean;
-  searchPath: boolean;
-  escapeStringConstants: boolean;
-};
-
-export declare abstract class AbstractDialect {
-  /**
-   * List of features this dialect supports.
-   *
-   * Important: Dialect implementations inherit these values.
-   * When changing a default, ensure the implementations still properly declare which feature they support.
-   */
-  static readonly supports: DialectSupports;
-  readonly defaultVersion: string;
-  readonly Query: typeof AbstractQuery;
-  readonly name: Dialect;
-  readonly TICK_CHAR: string;
-  readonly TICK_CHAR_LEFT: string;
-  readonly TICK_CHAR_RIGHT: string;
-  readonly queryGenerator: unknown;
-  get supports(): DialectSupports;
-  canBackslashEscape(): boolean;
-}
Index: ckend/node_modules/sequelize/types/dialects/abstract/query-interface.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/abstract/query-interface.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,698 +1,0 @@
-import { DataType } from '../../data-types';
-import {
-  Logging,
-  Model,
-  ModelAttributeColumnOptions,
-  ModelAttributes,
-  Transactionable,
-  WhereOptions,
-  Filterable,
-  Poolable,
-  ModelCtor,
-  ModelStatic,
-  ModelType,
-  CreationAttributes,
-  Attributes
-} from '../../model';
-import QueryTypes = require('../../query-types');
-import { Sequelize, RetryOptions } from '../../sequelize';
-import { Transaction } from '../../transaction';
-import { SetRequired } from '../../utils/set-required';
-import { Fn, Literal } from '../../utils';
-import { Deferrable } from '../../deferrable';
-
-type BindOrReplacements = { [key: string]: unknown } | unknown[];
-type FieldMap = { [key: string]: string };
-
-/**
- * Interface for query options
- */
-export interface QueryOptions extends Logging, Transactionable, Poolable {
-  /**
-   * If true, sequelize will not try to format the results of the query, or build an instance of a model from
-   * the result
-   */
-  raw?: boolean;
-
-  /**
-   * The type of query you are executing. The query type affects how results are formatted before they are
-   * passed back. The type is a string, but `Sequelize.QueryTypes` is provided as convenience shortcuts.
-   */
-  type?: string;
-
-  /**
-   * If true, transforms objects with `.` separated property names into nested objects using
-   * [dottie.js](https://github.com/mickhansen/dottie.js). For example { 'user.username': 'john' } becomes
-   * { user: { username: 'john' }}. When `nest` is true, the query type is assumed to be `'SELECT'`,
-   * unless otherwise specified
-   *
-   * @default false
-   */
-  nest?: boolean;
-
-  /**
-   * Sets the query type to `SELECT` and return a single row
-   */
-  plain?: boolean;
-
-  /**
-   * Either an object of named parameter replacements in the format `:param` or an array of unnamed
-   * replacements to replace `?` in your SQL.
-   */
-  replacements?: BindOrReplacements;
-
-  /**
-   * Either an object of named parameter bindings in the format `$param` or an array of unnamed
-   * values to bind to `$1`, `$2`, etc in your SQL.
-   */
-  bind?: BindOrReplacements;
-
-  /**
-   * A sequelize instance used to build the return instance
-   */
-  instance?: Model;
-
-  /**
-   * Map returned fields to model's fields if `options.model` or `options.instance` is present.
-   * Mapping will occur before building the model instance.
-   */
-  mapToModel?: boolean;
-
-  retry?: RetryOptions;
-
-  /**
-   * Map returned fields to arbitrary names for SELECT query type if `options.fieldMaps` is present.
-   */
-  fieldMap?: FieldMap;
-}
-
-export interface QueryOptionsWithWhere extends QueryOptions, Filterable<any> {
-
-}
-
-export interface QueryOptionsWithModel<M extends Model> extends QueryOptions {
-  /**
-   * A sequelize model used to build the returned model instances (used to be called callee)
-   */
-  model: ModelStatic<M>;
-}
-
-export interface QueryOptionsWithType<T extends QueryTypes> extends QueryOptions {
-  /**
-   * The type of query you are executing. The query type affects how results are formatted before they are
-   * passed back. The type is a string, but `Sequelize.QueryTypes` is provided as convenience shortcuts.
-   */
-  type: T;
-}
-
-export interface QueryOptionsWithForce extends QueryOptions {
-  force?: boolean;
-}
-
-/**
-* Most of the methods accept options and use only the logger property of the options. That's why the most used
-* interface type for options in a method is separated here as another interface.
-*/
-export interface QueryInterfaceOptions extends Logging, Transactionable {}
-
-export interface CollateCharsetOptions {
-  collate?: string;
-  charset?: string;
-}
-
-export interface QueryInterfaceCreateTableOptions extends QueryInterfaceOptions, CollateCharsetOptions {
-  engine?: string;
-  /**
-   * Used for compound unique keys.
-   */
-  uniqueKeys?: {
-    [keyName: string]: {
-      fields: string[];
-      customIndex?: boolean;
-    };
-  };
-}
-
-export interface QueryInterfaceDropTableOptions extends QueryInterfaceOptions {
-  cascade?: boolean;
-  force?: boolean;
-}
-
-export interface QueryInterfaceDropAllTablesOptions extends QueryInterfaceOptions {
-  skip?: string[];
-}
-
-export interface TableNameWithSchema {
-  tableName: string;
-  schema?: string;
-  delimiter?: string;
-  as?: string;
-  name?: string;
-}
-export type TableName = string | TableNameWithSchema;
-
-export type IndexType = 'UNIQUE' | 'FULLTEXT' | 'SPATIAL';
-export type IndexMethod = 'BTREE' | 'HASH' | 'GIST' | 'SPGIST' | 'GIN' | 'BRIN' | string;
-
-export interface IndexesOptions {
-  /**
-   * The name of the index. Defaults to model name + _ + fields concatenated
-   */
-  name?: string;
-
-  /** For FULLTEXT columns set your parser */
-  parser?: string | null;
-
-  /**
-   * Index type. Only used by mysql. One of `UNIQUE`, `FULLTEXT` and `SPATIAL`
-   */
-  type?: IndexType;
-
-  /**
-   * Should the index by unique? Can also be triggered by setting type to `UNIQUE`
-   *
-   * @default false
-   */
-  unique?: boolean;
-
-  /**
-   * PostgreSQL will build the index without taking any write locks. Postgres only
-   *
-   * @default false
-   */
-  concurrently?: boolean;
-
-  /**
-   * An array of the fields to index. Each field can either be a string containing the name of the field,
-   * a sequelize object (e.g `sequelize.fn`), or an object with the following attributes: `name`
-   * (field name), `length` (create a prefix index of length chars), `order` (the direction the column
-   * should be sorted in), `collate` (the collation (sort order) for the column), `operator` (likes IndexesOptions['operator'])
-   */
-  fields?: (string | { name: string; length?: number; order?: 'ASC' | 'DESC'; collate?: string; operator?: string } | Fn | Literal)[];
-
-  /**
-   * The method to create the index by (`USING` statement in SQL). BTREE and HASH are supported by mysql and
-   * postgres, and postgres additionally supports GIST, SPGIST, BRIN and GIN.
-   */
-  using?: IndexMethod;
-
-  /**
-   * Index operator type. Postgres only
-   */
-  operator?: string;
-
-  /**
-   * Optional where parameter for index. Can be used to limit the index to certain rows.
-   */
-  where?: WhereOptions<any>;
-
-  /**
-   * Prefix to append to the index name.
-   */
-  prefix?: string;
-}
-
-export interface QueryInterfaceIndexOptions extends IndexesOptions, QueryInterfaceOptions {}
-
-export interface BaseConstraintOptions {
-  name?: string;
-  fields: string[];
-}
-
-export interface AddUniqueConstraintOptions extends BaseConstraintOptions {
-  type: 'unique';
-  deferrable?: Deferrable;
-}
-
-export interface AddDefaultConstraintOptions extends BaseConstraintOptions {
-  type: 'default';
-  defaultValue?: unknown;
-}
-
-export interface AddCheckConstraintOptions extends BaseConstraintOptions {
-  type: 'check';
-  where?: WhereOptions<any>;
-}
-
-export interface AddPrimaryKeyConstraintOptions extends BaseConstraintOptions {
-  type: 'primary key';
-  deferrable?: Deferrable;
-}
-
-export interface AddForeignKeyConstraintOptions extends BaseConstraintOptions {
-  type: 'foreign key';
-  references?: {
-    table: TableName;
-    field: string;
-  };
-  onDelete: string;
-  onUpdate: string;
-  deferrable?: Deferrable;
-}
-
-export type AddConstraintOptions =
-| AddUniqueConstraintOptions
-| AddDefaultConstraintOptions
-| AddCheckConstraintOptions
-| AddPrimaryKeyConstraintOptions
-| AddForeignKeyConstraintOptions;
-
-export interface CreateDatabaseOptions extends CollateCharsetOptions, QueryOptions {
-  encoding?: string;
-}
-
-export interface FunctionParam {
-  type: string;
-  name?: string;
-  direction?: string;
-}
-
-export interface ColumnDescription {
-  type: string;
-  allowNull: boolean;
-  defaultValue: string;
-  primaryKey: boolean;
-  autoIncrement: boolean;
-  comment: string | null;
-}
-
-export interface ColumnsDescription {
-  [key: string]: ColumnDescription;
-}
-
-/**
-* The interface that Sequelize uses to talk to all databases.
-*
-* This interface is available through sequelize.queryInterface. It should not be commonly used, but it's
-* referenced anyway, so it can be used.
-*/
-export class QueryInterface {
-  /**
-   * Returns the dialect-specific sql generator.
-   *
-   * We don't have a definition for the QueryGenerator, because I doubt it is commonly in use separately.
-   */
-  public queryGenerator: unknown;
-
-  /**
-   * Returns the current sequelize instance.
-   */
-  public sequelize: Sequelize;
-
-  constructor(sequelize: Sequelize);
-
-  /**
-   * Queries the schema (table list).
-   *
-   * @param schema The schema to query. Applies only to Postgres.
-   */
-  public createSchema(schema?: string, options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Drops the specified schema (table).
-   *
-   * @param schema The schema to query. Applies only to Postgres.
-   */
-  public dropSchema(schema?: string, options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Drops all tables.
-   */
-  public dropAllSchemas(options?: QueryInterfaceDropAllTablesOptions): Promise<void>;
-
-  /**
-   * Queries all table names in the database.
-   *
-   * @param options
-   */
-  public showAllSchemas(options?: QueryOptions): Promise<object>;
-
-  /**
-   * Return database version
-   */
-  public databaseVersion(options?: QueryInterfaceOptions): Promise<string>;
-
-  /**
-   * Creates a table with specified attributes.
-   *
-   * @param tableName     Name of table to create
-   * @param attributes    Hash of attributes, key is attribute name, value is data type
-   * @param options       Table options.
-   */
-  public createTable<M extends Model>(
-    tableName: TableName,
-    attributes: ModelAttributes<M, CreationAttributes<M>>,
-    options?: QueryInterfaceCreateTableOptions
-  ): Promise<void>;
-
-  /**
-   * Drops the specified table.
-   *
-   * @param tableName Table name.
-   * @param options   Query options, particularly "force".
-   */
-  public dropTable(tableName: TableName, options?: QueryInterfaceDropTableOptions): Promise<void>;
-
-  /**
-   * Drops all tables.
-   *
-   * @param options
-   */
-  public dropAllTables(options?: QueryInterfaceDropAllTablesOptions): Promise<void>;
-
-  /**
-   * Drops all defined enums
-   *
-   * @param options
-   */
-  public dropAllEnums(options?: QueryOptions): Promise<void>;
-
-  /**
-   * Renames a table
-   */
-  public renameTable(before: TableName, after: TableName, options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Returns all tables
-   */
-  public showAllTables(options?: QueryOptions): Promise<string[]>;
-
-  /**
-   * Returns a promise that resolves to true if the table exists in the database, false otherwise.
-   *
-   * @param tableName The name of the table
-   * @param options Options passed to {@link Sequelize#query}
-   */
-  public tableExists(tableName: TableName, options?: QueryOptions): Promise<boolean>;
-
-  /**
-   * Describe a table
-   */
-  public describeTable(
-    tableName: TableName,
-    options?: string | { schema?: string; schemaDelimiter?: string } & Logging
-  ): Promise<ColumnsDescription>;
-
-  /**
-   * Adds a new column to a table
-   */
-  public addColumn(
-    table: TableName,
-    key: string,
-    attribute: ModelAttributeColumnOptions | DataType,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Removes a column from a table
-   */
-  public removeColumn(
-    table: TableName,
-    attribute: string,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Changes a column
-   */
-  public changeColumn(
-    tableName: TableName,
-    attributeName: string,
-    dataTypeOrOptions?: DataType | ModelAttributeColumnOptions,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Renames a column
-   */
-  public renameColumn(
-    tableName: TableName,
-    attrNameBefore: string,
-    attrNameAfter: string,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Adds a new index to a table
-   */
-  public addIndex(
-    tableName: TableName,
-    attributes: string[],
-    options?: QueryInterfaceIndexOptions,
-    rawTablename?: string
-  ): Promise<void>;
-  public addIndex(
-    tableName: TableName,
-    options: SetRequired<QueryInterfaceIndexOptions, 'fields'>,
-    rawTablename?: string
-  ): Promise<void>;
-
-  /**
-   * Removes an index of a table
-   */
-  public removeIndex(tableName: TableName, indexName: string, options?: QueryInterfaceIndexOptions): Promise<void>;
-  public removeIndex(tableName: TableName, attributes: string[], options?: QueryInterfaceIndexOptions): Promise<void>;
-
-  /**
-   * Adds constraints to a table
-   */
-  public addConstraint(
-    tableName: TableName,
-    options?: AddConstraintOptions & QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Removes constraints from a table
-   */
-  public removeConstraint(tableName: TableName, constraintName: string, options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Shows the index of a table
-   */
-  public showIndex(tableName: string | object, options?: QueryOptions): Promise<object>;
-
-  /**
-   * Put a name to an index
-   */
-  public nameIndexes(indexes: string[], rawTablename: string): Promise<void>;
-
-  /**
-   * Returns all foreign key constraints of requested tables
-   */
-  public getForeignKeysForTables(tableNames: string[], options?: QueryInterfaceOptions): Promise<object>;
-
-  /**
-   * Get foreign key references details for the table
-   */
-  public getForeignKeyReferencesForTable(tableName: TableName, options?: QueryInterfaceOptions): Promise<object>;
-
-  /**
-   * Inserts a new record
-   */
-  public insert(instance: Model | null, tableName: string, values: object, options?: QueryOptions): Promise<object>;
-
-  /**
-   * Inserts or Updates a record in the database
-   */
-  public upsert<M extends Model>(
-    tableName: TableName,
-    insertValues: object,
-    updateValues: object,
-    where: object,
-    options?: QueryOptionsWithModel<M>
-  ): Promise<object>;
-
-  /**
-   * Inserts multiple records at once
-   */
-  public bulkInsert(
-    tableName: TableName,
-    records: object[],
-    options?: QueryOptions,
-    attributes?: Record<string, ModelAttributeColumnOptions>
-  ): Promise<object | number>;
-
-  /**
-   * Updates a row
-   */
-  public update<M extends Model>(
-    instance: M,
-    tableName: TableName,
-    values: object,
-    identifier: WhereOptions<Attributes<M>>,
-    options?: QueryOptions
-  ): Promise<object>;
-
-  /**
-   * Updates multiple rows at once
-   */
-  public bulkUpdate(
-    tableName: TableName,
-    values: object,
-    identifier: WhereOptions<any>,
-    options?: QueryOptions,
-    attributes?: string[] | string
-  ): Promise<object>;
-
-  /**
-   * Deletes a row
-   */
-  public delete(
-    instance: Model | null,
-    tableName: TableName,
-    identifier: WhereOptions<any>,
-    options?: QueryOptions
-  ): Promise<object>;
-
-  /**
-   * Deletes multiple rows at once
-   */
-  public bulkDelete(
-    tableName: TableName,
-    identifier: WhereOptions<any>,
-    options?: QueryOptions,
-    model?: ModelType
-  ): Promise<object>;
-
-  /**
-   * Returns selected rows
-   */
-  public select(model: ModelType | null, tableName: TableName, options?: QueryOptionsWithWhere): Promise<object[]>;
-
-  /**
-   * Increments a row value
-   */
-  public increment<M extends Model>(
-    instance: Model,
-    tableName: TableName,
-    values: object,
-    identifier: WhereOptions<Attributes<M>>,
-    options?: QueryOptions
-  ): Promise<object>;
-
-  /**
-   * Selects raw without parsing the string into an object
-   */
-  public rawSelect(
-    tableName: TableName,
-    options: QueryOptionsWithWhere,
-    attributeSelector: string | string[],
-    model?: ModelType
-  ): Promise<string[]>;
-
-  /**
-   * Postgres only. Creates a trigger on specified table to call the specified function with supplied
-   * parameters.
-   */
-  public createTrigger(
-    tableName: TableName,
-    triggerName: string,
-    timingType: string,
-    fireOnArray: {
-      [key: string]: unknown;
-    }[],
-    functionName: string,
-    functionParams: FunctionParam[],
-    optionsArray: string[],
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Postgres only. Drops the specified trigger.
-   */
-  public dropTrigger(tableName: TableName, triggerName: string, options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Postgres only. Renames a trigger
-   */
-  public renameTrigger(
-    tableName: TableName,
-    oldTriggerName: string,
-    newTriggerName: string,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Postgres only. Create a function
-   */
-  public createFunction(
-    functionName: string,
-    params: FunctionParam[],
-    returnType: string,
-    language: string,
-    body: string,
-    optionsArray?: string[],
-    options?: QueryOptionsWithForce
-  ): Promise<void>;
-
-  /**
-   * Postgres only. Drops a function
-   */
-  public dropFunction(functionName: string, params: FunctionParam[], options?: QueryInterfaceOptions): Promise<void>;
-
-  /**
-   * Postgres only. Rename a function
-   */
-  public renameFunction(
-    oldFunctionName: string,
-    params: FunctionParam[],
-    newFunctionName: string,
-    options?: QueryInterfaceOptions
-  ): Promise<void>;
-
-  /**
-   * Escape a table name
-   */
-  public quoteTable(identifier: TableName): string;
-
-  /**
-   * Escape an identifier (e.g. a table or attribute name). If force is true, the identifier will be quoted
-   * even if the `quoteIdentifiers` option is false.
-   */
-  public quoteIdentifier(identifier: string, force?: boolean): string;
-
-  /**
-   * Split an identifier into .-separated tokens and quote each part.
-   */
-  public quoteIdentifiers(identifiers: string): string;
-
-  /**
-   * Set option for autocommit of a transaction
-   */
-  public setAutocommit(transaction: Transaction, value: boolean, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Set the isolation level of a transaction
-   */
-  public setIsolationLevel(transaction: Transaction, value: string, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Begin a new transaction
-   */
-  public startTransaction(transaction: Transaction, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Defer constraints
-   */
-  public deferConstraints(transaction: Transaction, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Commit an already started transaction
-   */
-  public commitTransaction(transaction: Transaction, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Rollback ( revert ) a transaction that has'nt been commited
-   */
-  public rollbackTransaction(transaction: Transaction, options?: QueryOptions): Promise<void>;
-
-  /**
-   * Creates a database
-   */
-  public createDatabase(name: string, options?: CreateDatabaseOptions): Promise<void>;
-
-  /**
-   * Creates a database
-   */
-  public dropDatabase(name: string, options?: QueryOptions): Promise<void>;
-}
Index: ckend/node_modules/sequelize/types/dialects/abstract/query.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/abstract/query.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,340 +1,0 @@
-import { Connection } from './connection-manager';
-import { Model, ModelType, IncludeOptions } from '../../model';
-import { Sequelize } from '../../sequelize';
-import QueryTypes = require('../../query-types');
-
-type BindOrReplacements = { [key: string]: unknown } | unknown[];
-type FieldMap = { [key: string]: string };
-
-
-export interface AbstractQueryGroupJoinDataOptions {
-  checkExisting: boolean;
-}
-
-export interface AbstractQueryOptions {
-  instance?: Model;
-  model?: ModelType;
-  type?: QueryTypes;
-
-  fieldMap?: boolean;
-  plain: boolean;
-  raw: boolean;
-  nest: boolean;
-  hasJoin: boolean;
-
-  /**
-   * A function that gets executed while running the query to log the sql.
-   */
-  logging?: boolean | ((sql: string, timing?: number) => void);
-
-  include: boolean;
-  includeNames: unknown[];
-  includeMap: any;
-
-  originalAttributes: unknown[];
-  attributes: unknown[];
-}
-
-export interface AbstractQueryFormatBindOptions {
-  /**
-   * skip unescaping $$
-   */
-  skipUnescape: boolean;
-
-  /**
-   * do not replace (but do unescape $$)
-   */
-  skipValueReplace: boolean;
-}
-
-type replacementFuncType = ((match: string, key: string, values: unknown[], timeZone?: string, dialect?: string, options?: AbstractQueryFormatBindOptions) => undefined | string);
-
-/**
-* An abstract class that Sequelize uses to add query support for a dialect.
-*
-* This interface is only exposed when running before/afterQuery lifecycle events.
-*/
-export class AbstractQuery {
-  /**
-   * Returns a unique identifier assigned to a query internally by Sequelize.
-   */
-  public uuid: unknown;
-
-  /**
-   * A Sequelize connection instance.
-   *
-   * @type {Connection}
-   * @memberof AbstractQuery
-   */
-  public connection: Connection;
-
-  /**
-   * If provided, returns the model instance.
-   *
-   * @type {Model}
-   * @memberof AbstractQuery
-   */
-  public instance: Model;
-
-  /**
-   * Model type definition.
-   *
-   * @type {ModelType}
-   * @memberof AbstractQuery
-   */
-  public model: ModelType;
-
-  /**
-   * Returns the current sequelize instance.
-   */
-  public sequelize: Sequelize;
-
-  /**
-   *
-   * @type {AbstractQueryOptions}
-   * @memberof AbstractQuery
-   */
-  public options: AbstractQueryOptions;
-
-  constructor(connection: Connection, sequelize: Sequelize, options?: AbstractQueryOptions);
-
-  /**
-   * rewrite query with parameters
-   *
-   * Examples:
-   *
-   *   query.formatBindParameters('select $1 as foo', ['fooval']);
-   *
-   *   query.formatBindParameters('select $foo as foo', { foo: 'fooval' });
-   *
-   * Options
-   *   skipUnescape: bool, skip unescaping $$
-   *   skipValueReplace: bool, do not replace (but do unescape $$). Check correct syntax and if all values are available
-   *
-   * @param {string} sql
-   * @param {object|Array} values
-   * @param {string} dialect
-   * @param {Function} [replacementFunc]
-   * @param {object} [options]
-   * @private
-   */
-  static formatBindParameters(sql: string, values: object | Array<object>, dialect: string, replacementFunc: replacementFuncType, options: AbstractQueryFormatBindOptions): undefined | [string, unknown[]];
-
-  /**
-   * Execute the passed sql query.
-   *
-   * Examples:
-   *
-   *     query.run('SELECT 1')
-   *
-   * @private
-   */
-  private run(): Error
-
-  /**
-   * Check the logging option of the instance and print deprecation warnings.
-   *
-   * @private
-   */
-  private checkLoggingOption(): void;
-
-  /**
-   * Get the attributes of an insert query, which contains the just inserted id.
-   *
-   * @returns {string} The field name.
-   * @private
-   */
-  private getInsertIdField(): string;
-
-  /**
-   * Returns the unique constraint error message for the associated field.
-   *
-   * @param field {string} the field name associated with the unique constraint.
-   *
-   * @returns {string} The unique constraint error message.
-   * @private
-   */
-  private getUniqueConstraintErrorMessage(field: string): string;
-
-  /**
-   * Checks if the query type is RAW
-   *
-   * @returns {boolean}
-   */
-  public isRawQuery(): boolean;
-
-  /**
-   * Checks if the query type is VERSION
-   *
-   * @returns {boolean}
-   */
-  public isVersionQuery(): boolean;
-
-  /**
-   * Checks if the query type is UPSERT
-   *
-   * @returns {boolean}
-   */
-  public isUpsertQuery(): boolean;
-
-  /**
-   * Checks if the query type is INSERT
-   *
-   * @returns {boolean}
-   */
-  public isInsertQuery(results?: unknown[], metaData?: unknown): boolean;
-
-  /**
-   * Sets auto increment field values (if applicable).
-   *
-   * @param results {Array}
-   * @param metaData {object}
-   * @returns {boolean}
-   */
-  public handleInsertQuery(results?: unknown[], metaData?: unknown): void;
-
-  /**
-   * Checks if the query type is SHOWTABLES
-   *
-   * @returns {boolean}
-   */
-  public isShowTablesQuery(): boolean;
-
-  /**
-   * Flattens and plucks values from results.
-   *
-   * @params {Array}
-   * @returns {Array}
-   */
-  public handleShowTablesQuery(results: unknown[]): unknown[];
-
-  /**
-   * Checks if the query type is SHOWINDEXES
-   *
-   * @returns {boolean}
-   */
-  public isShowIndexesQuery(): boolean;
-
-  /**
-   * Checks if the query type is SHOWCONSTRAINTS
-   *
-   * @returns {boolean}
-   */
-  public isShowConstraintsQuery(): boolean;
-
-  /**
-   * Checks if the query type is DESCRIBE
-   *
-   * @returns {boolean}
-   */
-  public isDescribeQuery(): boolean;
-
-  /**
-   * Checks if the query type is SELECT
-   *
-   * @returns {boolean}
-   */
-  public isSelectQuery(): boolean;
-
-  /**
-   * Checks if the query type is BULKUPDATE
-   *
-   * @returns {boolean}
-   */
-  public isBulkUpdateQuery(): boolean;
-
-  /**
-   * Checks if the query type is BULKDELETE
-   *
-   * @returns {boolean}
-   */
-  public isBulkDeleteQuery(): boolean;
-
-  /**
-   * Checks if the query type is FOREIGNKEYS
-   *
-   * @returns {boolean}
-   */
-  public isForeignKeysQuery(): boolean;
-
-  /**
-   * Checks if the query type is UPDATE
-   *
-   * @returns {boolean}
-   */
-  public isUpdateQuery(): boolean;
-
-  /**
-   * Maps raw fields to attribute names (if applicable).
-   *
-   * @params {Model[]} results from a select query.
-   * @returns {Model} the first model instance within the select.
-   */
-  public handleSelectQuery(results: Model[]): Model;
-
-  /**
-   * Checks if the query starts with 'show' or 'describe'
-   *
-   * @returns {boolean}
-   */
-  public isShowOrDescribeQuery(): boolean;
-
-  /**
-   * Checks if the query starts with 'call'
-   *
-   * @returns {boolean}
-   */
-  public isCallQuery(): boolean;
-
-  /**
-   * @param {string} sql
-   * @param {Function} debugContext
-   * @param {Array|object} parameters
-   * @protected
-   * @returns {Function} A function to call after the query was completed.
-   */
-  protected _logQuery(sql: string, debugContext: ((msg: string) => any), parameters: unknown[]): () => void;
-
-  /**
-   * The function takes the result of the query execution and groups
-   * the associated data by the callee.
-   *
-   * Example:
-   *   groupJoinData([
-   *     {
-   *       some: 'data',
-   *       id: 1,
-   *       association: { foo: 'bar', id: 1 }
-   *     }, {
-   *       some: 'data',
-   *       id: 1,
-   *       association: { foo: 'bar', id: 2 }
-   *     }, {
-   *       some: 'data',
-   *       id: 1,
-   *       association: { foo: 'bar', id: 3 }
-   *     }
-   *   ])
-   *
-   * Result:
-   *   Something like this:
-   *
-   *   [
-   *     {
-   *       some: 'data',
-   *       id: 1,
-   *       association: [
-   *         { foo: 'bar', id: 1 },
-   *         { foo: 'bar', id: 2 },
-   *         { foo: 'bar', id: 3 }
-   *       ]
-   *     }
-   *   ]
-   *
-   * @param {Array} rows
-   * @param {object} includeOptions
-   * @param {object} options
-   * @private
-   */
-  static _groupJoinData(rows: unknown[], includeOptions: IncludeOptions, options: AbstractQueryGroupJoinDataOptions): unknown[];
-}
Index: ckend/node_modules/sequelize/types/dialects/mssql/async-queue.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/mssql/async-queue.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import BaseError from '../../errors/base-error';
-/**
- * Thrown when a connection to a database is closed while an operation is in progress
- */
-export declare class AsyncQueueError extends BaseError {
-    constructor(message: string);
-}
-declare class AsyncQueue {
-    previous: Promise<unknown>;
-    closed: boolean;
-    rejectCurrent: (reason?: any) => void;
-    constructor();
-    close(): void;
-    enqueue(asyncFunction: (...args: any[]) => Promise<unknown>): Promise<unknown>;
-}
-export default AsyncQueue;
Index: ckend/node_modules/sequelize/types/dialects/sqlite/sqlite-utils.d.ts
===================================================================
--- backend/node_modules/sequelize/types/dialects/sqlite/sqlite-utils.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import type { Sequelize } from '../../sequelize.js';
-import type { QueryOptions } from '../abstract/query-interface.js';
-export declare function withSqliteForeignKeysOff<T>(sequelize: Sequelize, options: QueryOptions, cb: () => Promise<T>): Promise<T>;
Index: ckend/node_modules/sequelize/types/errors/aggregate-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/aggregate-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-import BaseError from './base-error';
-/**
- * A wrapper for multiple Errors
- *
- * @param errors The aggregated errors that occurred
- */
-declare class AggregateError extends BaseError {
-    /** the aggregated errors that occurred */
-    readonly errors: Array<AggregateError | Error>;
-    constructor(errors: Array<AggregateError | Error>);
-    toString(): string;
-}
-export default AggregateError;
Index: ckend/node_modules/sequelize/types/errors/association-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/association-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Thrown when an association is improperly constructed (see message for details)
- */
-declare class AssociationError extends BaseError {
-    constructor(message: string);
-}
-export default AssociationError;
Index: ckend/node_modules/sequelize/types/errors/base-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/base-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-export interface ErrorOptions {
-    stack?: string;
-}
-export interface CommonErrorProperties {
-    /** The database specific error which triggered this one */
-    readonly parent: Error;
-    /** The database specific error which triggered this one */
-    readonly original: Error;
-    /** The SQL that triggered the error */
-    readonly sql: string;
-}
-/**
- * The Base Error all Sequelize Errors inherit from.
- *
- * Sequelize provides a host of custom error classes, to allow you to do easier debugging. All of these errors are exposed on the sequelize object and the sequelize constructor.
- * All sequelize errors inherit from the base JS error object.
- *
- * This means that errors can be accessed using `Sequelize.ValidationError`
- */
-declare abstract class BaseError extends Error {
-    constructor(message?: string);
-}
-export default BaseError;
Index: ckend/node_modules/sequelize/types/errors/bulk-record-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/bulk-record-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import type { Model } from '..';
-import BaseError from './base-error';
-/**
- * Thrown when bulk operation fails, it represent per record level error.
- * Used with AggregateError
- *
- * @param error Error for a given record/instance
- * @param record DAO instance that error belongs to
- */
-declare class BulkRecordError extends BaseError {
-    errors: Error;
-    record: Model;
-    constructor(error: Error, record: Model);
-}
-export default BulkRecordError;
Index: ckend/node_modules/sequelize/types/errors/connection-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import BaseError from './base-error';
-/**
- * A base class for all connection related errors.
- */
-declare class ConnectionError extends BaseError {
-    /** The connection specific error which triggered this one */
-    parent: Error;
-    original: Error;
-    constructor(parent: Error);
-}
-export default ConnectionError;
Index: ckend/node_modules/sequelize/types/errors/connection/access-denied-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/access-denied-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database is refused due to insufficient privileges
- */
-declare class AccessDeniedError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default AccessDeniedError;
Index: ckend/node_modules/sequelize/types/errors/connection/connection-acquire-timeout-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/connection-acquire-timeout-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when connection is not acquired due to timeout
- */
-declare class ConnectionAcquireTimeoutError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default ConnectionAcquireTimeoutError;
Index: ckend/node_modules/sequelize/types/errors/connection/connection-refused-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/connection-refused-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database is refused
- */
-declare class ConnectionRefusedError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default ConnectionRefusedError;
Index: ckend/node_modules/sequelize/types/errors/connection/connection-timed-out-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/connection-timed-out-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database times out
- */
-declare class ConnectionTimedOutError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default ConnectionTimedOutError;
Index: ckend/node_modules/sequelize/types/errors/connection/host-not-found-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/host-not-found-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database has a hostname that was not found
- */
-declare class HostNotFoundError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default HostNotFoundError;
Index: ckend/node_modules/sequelize/types/errors/connection/host-not-reachable-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/host-not-reachable-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database has a hostname that was not reachable
- */
-declare class HostNotReachableError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default HostNotReachableError;
Index: ckend/node_modules/sequelize/types/errors/connection/invalid-connection-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/connection/invalid-connection-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import ConnectionError from '../connection-error';
-/**
- * Thrown when a connection to a database has invalid values for any of the connection parameters
- */
-declare class InvalidConnectionError extends ConnectionError {
-    constructor(parent: Error);
-}
-export default InvalidConnectionError;
Index: ckend/node_modules/sequelize/types/errors/database-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/database-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import BaseError, { CommonErrorProperties, ErrorOptions } from './base-error';
-export interface DatabaseErrorParent extends Error, Pick<CommonErrorProperties, 'sql'> {
-    /** The parameters for the sql that triggered the error */
-    readonly parameters?: object;
-}
-export interface DatabaseErrorSubclassOptions extends ErrorOptions {
-    parent?: DatabaseErrorParent;
-    message?: string;
-}
-/**
- * A base class for all database related errors.
- */
-declare class DatabaseError extends BaseError implements DatabaseErrorParent, CommonErrorProperties {
-    parent: Error;
-    original: Error;
-    sql: string;
-    parameters: object;
-    /**
-     * @param parent The database specific error which triggered this one
-     * @param options
-     */
-    constructor(parent: DatabaseErrorParent, options?: ErrorOptions);
-}
-export default DatabaseError;
Index: ckend/node_modules/sequelize/types/errors/database/exclusion-constraint-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/database/exclusion-constraint-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';
-interface ExclusionConstraintErrorOptions {
-    constraint?: string;
-    fields?: Record<string, string | number>;
-    table?: string;
-}
-/**
- * Thrown when an exclusion constraint is violated in the database
- */
-declare class ExclusionConstraintError extends DatabaseError implements ExclusionConstraintErrorOptions {
-    constraint: string | undefined;
-    fields: Record<string, string | number> | undefined;
-    table: string | undefined;
-    constructor(options: DatabaseErrorSubclassOptions & ExclusionConstraintErrorOptions);
-}
-export default ExclusionConstraintError;
Index: ckend/node_modules/sequelize/types/errors/database/foreign-key-constraint-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/database/foreign-key-constraint-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';
-export declare enum RelationshipType {
-    parent = "parent",
-    child = "child"
-}
-interface ForeignKeyConstraintErrorOptions {
-    table?: string;
-    fields?: {
-        [field: string]: string;
-    };
-    value?: unknown;
-    index?: string;
-    reltype?: RelationshipType;
-}
-/**
- * Thrown when a foreign key constraint is violated in the database
- */
-declare class ForeignKeyConstraintError extends DatabaseError {
-    table: string | undefined;
-    fields: {
-        [field: string]: string;
-    } | undefined;
-    value: unknown;
-    index: string | undefined;
-    reltype: RelationshipType | undefined;
-    constructor(options: ForeignKeyConstraintErrorOptions & DatabaseErrorSubclassOptions);
-}
-export default ForeignKeyConstraintError;
Index: ckend/node_modules/sequelize/types/errors/database/timeout-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/database/timeout-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import { ErrorOptions } from '../base-error';
-import DatabaseError, { DatabaseErrorParent } from '../database-error';
-/**
- * Thrown when a database query times out because of a deadlock
- */
-declare class TimeoutError extends DatabaseError {
-    constructor(parent: DatabaseErrorParent, options?: ErrorOptions);
-}
-export default TimeoutError;
Index: ckend/node_modules/sequelize/types/errors/database/unknown-constraint-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/database/unknown-constraint-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import DatabaseError, { DatabaseErrorSubclassOptions } from '../database-error';
-interface UnknownConstraintErrorOptions {
-    constraint?: string;
-    fields?: Record<string, string | number>;
-    table?: string;
-}
-/**
- * Thrown when constraint name is not found in the database
- */
-declare class UnknownConstraintError extends DatabaseError implements UnknownConstraintErrorOptions {
-    constraint: string | undefined;
-    fields: Record<string, string | number> | undefined;
-    table: string | undefined;
-    constructor(options: UnknownConstraintErrorOptions & DatabaseErrorSubclassOptions);
-}
-export default UnknownConstraintError;
Index: ckend/node_modules/sequelize/types/errors/eager-loading-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/eager-loading-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Thrown when an include statement is improperly constructed (see message for details)
- */
-declare class EagerLoadingError extends BaseError {
-    constructor(message: string);
-}
-export default EagerLoadingError;
Index: ckend/node_modules/sequelize/types/errors/empty-result-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/empty-result-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Thrown when a record was not found, Usually used with rejectOnEmpty mode (see message for details)
- */
-declare class EmptyResultError extends BaseError {
-    constructor(message: string);
-}
-export default EmptyResultError;
Index: ckend/node_modules/sequelize/types/errors/index.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-export { default as BaseError } from './base-error';
-export { default as DatabaseError } from './database-error';
-export { default as AggregateError } from './aggregate-error';
-export { default as AssociationError } from './association-error';
-export { default as BulkRecordError } from './bulk-record-error';
-export { default as ConnectionError } from './connection-error';
-export { default as EagerLoadingError } from './eager-loading-error';
-export { default as EmptyResultError } from './empty-result-error';
-export { default as InstanceError } from './instance-error';
-export { default as OptimisticLockError } from './optimistic-lock-error';
-export { default as QueryError } from './query-error';
-export { default as SequelizeScopeError } from './sequelize-scope-error';
-export { default as ValidationError, ValidationErrorItem, ValidationErrorItemOrigin, ValidationErrorItemType } from './validation-error';
-export { default as AccessDeniedError } from './connection/access-denied-error';
-export { default as ConnectionAcquireTimeoutError } from './connection/connection-acquire-timeout-error';
-export { default as ConnectionRefusedError } from './connection/connection-refused-error';
-export { default as ConnectionTimedOutError } from './connection/connection-timed-out-error';
-export { default as HostNotFoundError } from './connection/host-not-found-error';
-export { default as HostNotReachableError } from './connection/host-not-reachable-error';
-export { default as InvalidConnectionError } from './connection/invalid-connection-error';
-export { default as ExclusionConstraintError } from './database/exclusion-constraint-error';
-export { default as ForeignKeyConstraintError } from './database/foreign-key-constraint-error';
-export { default as TimeoutError } from './database/timeout-error';
-export { default as UnknownConstraintError } from './database/unknown-constraint-error';
-export { default as UniqueConstraintError } from './validation/unique-constraint-error';
-export { AsyncQueueError } from '../dialects/mssql/async-queue';
Index: ckend/node_modules/sequelize/types/errors/instance-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/instance-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Thrown when a some problem occurred with Instance methods (see message for details)
- */
-declare class InstanceError extends BaseError {
-    constructor(message: string);
-}
-export default InstanceError;
Index: ckend/node_modules/sequelize/types/errors/optimistic-lock-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/optimistic-lock-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import BaseError from './base-error';
-interface OptimisticLockErrorOptions {
-    message?: string;
-    /** The name of the model on which the update was attempted */
-    modelName?: string;
-    /** The values of the attempted update */
-    values?: Record<string, unknown>;
-    where?: Record<string, unknown>;
-}
-/**
- * Thrown when attempting to update a stale model instance
- */
-declare class OptimisticLockError extends BaseError {
-    modelName: string | undefined;
-    values: Record<string, unknown> | undefined;
-    where: Record<string, unknown> | undefined;
-    constructor(options: OptimisticLockErrorOptions);
-}
-export default OptimisticLockError;
Index: ckend/node_modules/sequelize/types/errors/query-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/query-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Thrown when a query is passed invalid options (see message for details)
- */
-declare class QueryError extends BaseError {
-    constructor(message: string);
-}
-export default QueryError;
Index: ckend/node_modules/sequelize/types/errors/sequelize-scope-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/sequelize-scope-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import BaseError from './base-error';
-/**
- * Scope Error. Thrown when the sequelize cannot query the specified scope.
- */
-declare class SequelizeScopeError extends BaseError {
-    constructor(message: string);
-}
-export default SequelizeScopeError;
Index: ckend/node_modules/sequelize/types/errors/validation-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/validation-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,126 +1,0 @@
-import type { Model } from '..';
-import type { ErrorOptions } from './base-error';
-import BaseError from './base-error';
-/**
- * An enum that is used internally by the `ValidationErrorItem` class
- * that maps current `type` strings (as given to ValidationErrorItem.constructor()) to
- * our new `origin` values.
- */
-export declare enum ValidationErrorItemType {
-    'notnull violation' = "CORE",
-    'string violation' = "CORE",
-    'unique violation' = "DB",
-    'validation error' = "FUNCTION"
-}
-/**
- * An enum that defines valid ValidationErrorItem `origin` values
- */
-export declare enum ValidationErrorItemOrigin {
-    /**
-     * specifies errors that originate from the sequelize "core"
-     */
-    CORE = "CORE",
-    /**
-     * specifies validation errors that originate from the storage engine
-     */
-    DB = "DB",
-    /**
-     * specifies validation errors that originate from validator functions (both built-in and custom) defined for a given attribute
-     */
-    FUNCTION = "FUNCTION"
-}
-/**
- * Validation Error Item
- * Instances of this class are included in the `ValidationError.errors` property.
- */
-export declare class ValidationErrorItem {
-    /**
-     * @deprecated Will be removed in v7
-     */
-    static TypeStringMap: typeof ValidationErrorItemType;
-    /**
-     * @deprecated Will be removed in v7
-     */
-    static Origins: typeof ValidationErrorItemOrigin;
-    /**
-     * An error message
-     */
-    readonly message: string;
-    /**
-     * The type/origin of the validation error
-     */
-    readonly type: keyof typeof ValidationErrorItemType | null;
-    /**
-     * The field that triggered the validation error
-     */
-    readonly path: string | null;
-    /**
-     * The value that generated the error
-     */
-    readonly value: string | null;
-    readonly origin: keyof typeof ValidationErrorItemOrigin | null;
-    /**
-     * The DAO instance that caused the validation error
-     */
-    readonly instance: Model | null;
-    /**
-     * A validation "key", used for identification
-     */
-    readonly validatorKey: string | null;
-    /**
-     * Property name of the BUILT-IN validator function that caused the validation error (e.g. "in" or "len"), if applicable
-     */
-    readonly validatorName: string | null;
-    /**
-     * Parameters used with the BUILT-IN validator function, if applicable
-     */
-    readonly validatorArgs: unknown[];
-    /**
-     * Creates a new ValidationError item. Instances of this class are included in the `ValidationError.errors` property.
-     *
-     * @param message An error message
-     * @param type The type/origin of the validation error
-     * @param path The field that triggered the validation error
-     * @param value The value that generated the error
-     * @param instance the DAO instance that caused the validation error
-     * @param validatorKey a validation "key", used for identification
-     * @param fnName property name of the BUILT-IN validator function that caused the validation error (e.g. "in" or "len"), if applicable
-     * @param fnArgs parameters used with the BUILT-IN validator function, if applicable
-     */
-    constructor(message: string, type: keyof typeof ValidationErrorItemType | keyof typeof ValidationErrorItemOrigin, path: string, value: string, instance: Model, validatorKey: string, fnName: string, fnArgs: unknown[]);
-    private isValidationErrorItemOrigin;
-    private normalizeString;
-    /**
-     * return a lowercase, trimmed string "key" that identifies the validator.
-     *
-     * Note: the string will be empty if the instance has neither a valid `validatorKey` property nor a valid `validatorName` property
-     *
-     * @param useTypeAsNS controls whether the returned value is "namespace",
-     *                    this parameter is ignored if the validator's `type` is not one of ValidationErrorItem.Origins
-     * @param NSSeparator a separator string for concatenating the namespace, must be not be empty,
-     *                    defaults to "." (fullstop). only used and validated if useTypeAsNS is TRUE.
-     * @throws {Error}    thrown if NSSeparator is found to be invalid.
-     */
-    getValidatorKey(useTypeAsNS: boolean, NSSeparator: string): string;
-}
-/**
- * Validation Error. Thrown when the sequelize validation has failed. The error contains an `errors` property,
- * which is an array with 1 or more ValidationErrorItems, one for each validation that failed.
- *
- * @param message Error message
- * @param errors Array of ValidationErrorItem objects describing the validation errors
- */
-declare class ValidationError extends BaseError {
-    /** Array of ValidationErrorItem objects describing the validation errors */
-    readonly errors: ValidationErrorItem[];
-    constructor(message: string, errors: ValidationErrorItem[], options?: ErrorOptions);
-    /**
-     * Gets all validation error items for the path / field specified.
-     *
-     * @param {string} path The path to be checked for error items
-     *
-     * @returns {Array<ValidationErrorItem>} Validation error items for the specified path
-     */
-    get(path: string): ValidationErrorItem[];
-}
-export default ValidationError;
Index: ckend/node_modules/sequelize/types/errors/validation/unique-constraint-error.d.ts
===================================================================
--- backend/node_modules/sequelize/types/errors/validation/unique-constraint-error.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-import { CommonErrorProperties, ErrorOptions } from '../base-error';
-import ValidationError, { ValidationErrorItem } from '../validation-error';
-interface UniqueConstraintErrorParent extends Error, Pick<CommonErrorProperties, 'sql'> {
-}
-export interface UniqueConstraintErrorOptions extends ErrorOptions {
-    parent?: UniqueConstraintErrorParent;
-    original?: UniqueConstraintErrorParent;
-    errors?: ValidationErrorItem[];
-    fields?: Record<string, unknown>;
-    message?: string;
-}
-/**
- * Thrown when a unique constraint is violated in the database
- */
-declare class UniqueConstraintError extends ValidationError implements CommonErrorProperties {
-    readonly parent: UniqueConstraintErrorParent;
-    readonly original: UniqueConstraintErrorParent;
-    readonly fields: Record<string, unknown>;
-    readonly sql: string;
-    constructor(options: UniqueConstraintErrorOptions);
-}
-export default UniqueConstraintError;
Index: ckend/node_modules/sequelize/types/generic/falsy.d.ts
===================================================================
--- backend/node_modules/sequelize/types/generic/falsy.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export type Falsy = false | 0 | -0 | 0n | '' | null | undefined | void;
Index: ckend/node_modules/sequelize/types/generic/sql-fragment.d.ts
===================================================================
--- backend/node_modules/sequelize/types/generic/sql-fragment.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-import { Falsy } from './falsy';
-export type SQLFragment = string | Falsy | SQLFragment[];
-export type TruthySQLFragment = string | SQLFragment[];
Index: ckend/node_modules/sequelize/types/hooks.d.ts
===================================================================
--- backend/node_modules/sequelize/types/hooks.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,192 +1,0 @@
-import { ValidationOptions } from './instance-validator';
-import Model, {
-  BulkCreateOptions,
-  CountOptions,
-  CreateOptions,
-  DestroyOptions, FindOptions,
-  InstanceDestroyOptions,
-  InstanceRestoreOptions,
-  InstanceUpdateOptions,
-  ModelAttributes,
-  ModelOptions, RestoreOptions, UpdateOptions, UpsertOptions,
-  Attributes, CreationAttributes, ModelType
-} from './model';
-import { AbstractQuery } from './dialects/abstract/query';
-import { QueryOptions } from './dialects/abstract/query-interface';
-import { Config, Options, Sequelize, SyncOptions } from './sequelize';
-import { DeepWriteable } from './utils';
-import { Connection, GetConnectionOptions } from './dialects/abstract/connection-manager';
-
-export type HookReturn = Promise<void> | void;
-
-/**
- * Options for Model.init. We mostly duplicate the Hooks here, since there is no way to combine the two
- * interfaces.
- */
-export interface ModelHooks<M extends Model = Model, TAttributes = any> {
-  beforeValidate(instance: M, options: ValidationOptions): HookReturn;
-  afterValidate(instance: M, options: ValidationOptions): HookReturn;
-  beforeCreate(attributes: M, options: CreateOptions<TAttributes>): HookReturn;
-  afterCreate(attributes: M, options: CreateOptions<TAttributes>): HookReturn;
-  beforeDestroy(instance: M, options: InstanceDestroyOptions): HookReturn;
-  afterDestroy(instance: M, options: InstanceDestroyOptions): HookReturn;
-  beforeRestore(instance: M, options: InstanceRestoreOptions): HookReturn;
-  afterRestore(instance: M, options: InstanceRestoreOptions): HookReturn;
-  beforeUpdate(instance: M, options: InstanceUpdateOptions<TAttributes>): HookReturn;
-  afterUpdate(instance: M, options: InstanceUpdateOptions<TAttributes>): HookReturn;
-  beforeUpsert(attributes: M, options: UpsertOptions<TAttributes>): HookReturn;
-  afterUpsert(attributes: [ M, boolean | null ], options: UpsertOptions<TAttributes>): HookReturn;
-  beforeSave(
-    instance: M,
-    options: InstanceUpdateOptions<TAttributes> | CreateOptions<TAttributes>
-  ): HookReturn;
-  afterSave(
-    instance: M,
-    options: InstanceUpdateOptions<TAttributes> | CreateOptions<TAttributes>
-  ): HookReturn;
-  beforeBulkCreate(instances: M[], options: BulkCreateOptions<TAttributes>): HookReturn;
-  afterBulkCreate(instances: readonly M[], options: BulkCreateOptions<TAttributes>): HookReturn;
-  beforeBulkDestroy(options: DestroyOptions<TAttributes>): HookReturn;
-  afterBulkDestroy(options: DestroyOptions<TAttributes>): HookReturn;
-  beforeBulkRestore(options: RestoreOptions<TAttributes>): HookReturn;
-  afterBulkRestore(options: RestoreOptions<TAttributes>): HookReturn;
-  beforeBulkUpdate(options: UpdateOptions<TAttributes>): HookReturn;
-  afterBulkUpdate(options: UpdateOptions<TAttributes>): HookReturn;
-  beforeFind(options: FindOptions<TAttributes>): HookReturn;
-  beforeCount(options: CountOptions<TAttributes>): HookReturn;
-  beforeFindAfterExpandIncludeAll(options: FindOptions<TAttributes>): HookReturn;
-  beforeFindAfterOptions(options: FindOptions<TAttributes>): HookReturn;
-  afterFind(instancesOrInstance: readonly M[] | M | null, options: FindOptions<TAttributes>): HookReturn;
-  beforeSync(options: SyncOptions): HookReturn;
-  afterSync(options: SyncOptions): HookReturn;
-  beforeBulkSync(options: SyncOptions): HookReturn;
-  afterBulkSync(options: SyncOptions): HookReturn;
-  beforeQuery(options: QueryOptions, query: AbstractQuery): HookReturn;
-  afterQuery(options: QueryOptions, query: AbstractQuery): HookReturn;
-}
-
-
-export interface SequelizeHooks<
-  M extends Model<TAttributes, TCreationAttributes> = Model,
-  TAttributes extends {} = any,
-  TCreationAttributes extends {} = TAttributes
-> extends ModelHooks<M, TAttributes> {
-  beforeDefine(attributes: ModelAttributes<M, TCreationAttributes>, options: ModelOptions<M>): void;
-  afterDefine(model: ModelType): void;
-  beforeInit(config: Config, options: Options): void;
-  afterInit(sequelize: Sequelize): void;
-  beforeConnect(config: DeepWriteable<Config>): HookReturn;
-  afterConnect(connection: unknown, config: Config): HookReturn;
-  beforePoolAcquire(config: GetConnectionOptions): HookReturn;
-  afterPoolAcquire(connection: Connection, config: GetConnectionOptions): HookReturn;
-  beforeDisconnect(connection: unknown): HookReturn;
-  afterDisconnect(connection: unknown): HookReturn;
-}
-
-/**
- * Virtual class for deduplication
- */
-export class Hooks<
-  M extends Model<TModelAttributes, TCreationAttributes> = Model,
-  TModelAttributes extends {} = any,
-  TCreationAttributes extends {} = TModelAttributes
-> {
-  /**
-   * A dummy variable that doesn't exist on the real object. This exists so
-   * Typescript can infer the type of the attributes in static functions. Don't
-   * try to access this!
-   */
-  _model: M;
-  /**
-   * A similar dummy variable that doesn't exist on the real object. Do not
-   * try to access this in real code.
-   *
-   * @deprecated This property will become a Symbol in v7 to prevent collisions.
-   * Use Attributes<Model> instead of this property to be forward-compatible.
-   */
-  _attributes: TModelAttributes; // TODO [>6]: make this a non-exported symbol (same as the one in model.d.ts)
-  /**
-   * A similar dummy variable that doesn't exist on the real object. Do not
-   * try to access this in real code.
-   *
-   * @deprecated This property will become a Symbol in v7 to prevent collisions.
-   * Use CreationAttributes<Model> instead of this property to be forward-compatible.
-   */
-  _creationAttributes: TCreationAttributes; // TODO [>6]: make this a non-exported symbol (same as the one in model.d.ts)
-
-  /**
-   * Add a hook to the model
-   *
-   * @param name Provide a name for the hook function. It can be used to remove the hook later or to order
-   *   hooks based on some sort of priority system in the future.
-   */
-  public static addHook<
-    H extends Hooks,
-    K extends keyof SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>
-    >(
-    this: HooksStatic<H>,
-    hookType: K,
-    name: string,
-    fn: SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>[K]
-  ): HooksCtor<H>;
-  public static addHook<
-    H extends Hooks,
-    K extends keyof SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>
-  >(
-    this: HooksStatic<H>,
-    hookType: K,
-    fn: SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>[K]
-  ): HooksCtor<H>;
-
-  /**
-   * Remove hook from the model
-   */
-  public static removeHook<H extends Hooks>(
-    this: HooksStatic<H>,
-    hookType: keyof SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>,
-    name: string,
-  ): HooksCtor<H>;
-
-  /**
-   * Check whether the mode has any hooks of this type
-   */
-  public static hasHook<H extends Hooks>(
-    this: HooksStatic<H>,
-    hookType: keyof SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>,
-  ): boolean;
-  public static hasHooks<H extends Hooks>(
-    this: HooksStatic<H>,
-    hookType: keyof SequelizeHooks<H['_model'], Attributes<H>, CreationAttributes<H>>,
-  ): boolean;
-
-  /**
-   * Add a hook to the model
-   *
-   * @param name Provide a name for the hook function. It can be used to remove the hook later or to order
-   *   hooks based on some sort of priority system in the future.
-   */
-  public addHook<K extends keyof SequelizeHooks<M, TModelAttributes, TCreationAttributes>>(
-    hookType: K,
-    name: string,
-    fn: SequelizeHooks<Model, TModelAttributes, TCreationAttributes>[K]
-  ): this;
-  public addHook<K extends keyof SequelizeHooks<M, TModelAttributes, TCreationAttributes>>(
-    hookType: K, fn: SequelizeHooks<M, TModelAttributes, TCreationAttributes>[K]): this;
-  /**
-   * Remove hook from the model
-   */
-  public removeHook<K extends keyof SequelizeHooks<M, TModelAttributes, TCreationAttributes>>(
-    hookType: K,
-    name: string
-  ): this;
-
-  /**
-   * Check whether the mode has any hooks of this type
-   */
-  public hasHook<K extends keyof SequelizeHooks<M, TModelAttributes, TCreationAttributes>>(hookType: K): boolean;
-  public hasHooks<K extends keyof SequelizeHooks<M, TModelAttributes, TCreationAttributes>>(hookType: K): boolean;
-}
-
-export type HooksCtor<H extends Hooks> = typeof Hooks & { new(): H };
-
-export type HooksStatic<H extends Hooks> = { new(): H };
Index: ckend/node_modules/sequelize/types/index-hints.d.ts
===================================================================
--- backend/node_modules/sequelize/types/index-hints.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-/**
- * Available index hints to be used for querying data in mysql for index hints.
- */
-declare enum IndexHints {
-  USE = 'USE',
-  FORCE = 'FORCE',
-  IGNORE = 'IGNORE'
-}
-
-export = IndexHints;
Index: ckend/node_modules/sequelize/types/index.d.ts
===================================================================
--- backend/node_modules/sequelize/types/index.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import DataTypes = require('./data-types');
-import Deferrable = require('./deferrable');
-import Op from './operators';
-import QueryTypes = require('./query-types');
-import TableHints = require('./table-hints');
-import IndexHints = require('./index-hints');
-import Utils = require('./utils');
-
-export * from './associations/index';
-export * from './data-types';
-export * from './errors/index';
-export { BaseError as Error } from './errors/index';
-export * from './model';
-export * from './dialects/abstract/query-interface';
-export * from './sequelize';
-export * from './transaction';
-export { useInflection } from './utils';
-export { Validator } from './utils/validator-extras';
-export { Utils, QueryTypes, Op, TableHints, IndexHints, DataTypes, Deferrable };
-
-/**
- * Type helper for making certain fields of an object optional. This is helpful
- * for creating the `CreationAttributes` from your `Attributes` for a Model.
- */
-export type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
Index: ckend/node_modules/sequelize/types/instance-validator.d.ts
===================================================================
--- backend/node_modules/sequelize/types/instance-validator.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import { Hookable } from "./model";
-
-export interface ValidationOptions extends Hookable {
-  /**
-   * An array of strings. All properties that are in this array will not be validated
-   */
-  skip?: string[];
-  /**
-   * An array of strings. Only the properties that are in this array will be validated
-   */
-  fields?: string[];
-}
Index: ckend/node_modules/sequelize/types/model-manager.d.ts
===================================================================
--- backend/node_modules/sequelize/types/model-manager.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import { Model, ModelType } from './model';
-import { Sequelize } from './sequelize';
-
-export class ModelManager {
-  public sequelize: Sequelize;
-  public models: typeof Model[];
-  public all: typeof Model[];
-
-  constructor(sequelize: Sequelize);
-  public addModel<T extends ModelType>(model: T): T;
-  public removeModel(model: ModelType): void;
-  public getModel(against: unknown, options?: { attribute?: string }): typeof Model;
-  public findModel(callback: (model: typeof Model) => boolean): typeof Model | undefined
-
-  /**
-   * Returns an array that lists every model, sorted in order
-   * of foreign key references: The first model is a model that is depended upon,
-   * the last model is a model that is not depended upon.
-   *
-   * If there is a cyclic dependency, this returns null.
-   */
-  public getModelsTopoSortedByForeignKey(): ModelType[] | null;
-}
-
-export default ModelManager;
Index: ckend/node_modules/sequelize/types/model.d.ts
===================================================================
--- backend/node_modules/sequelize/types/model.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3506 +1,0 @@
-import IndexHints = require('./index-hints');
-import { Association, BelongsTo, BelongsToMany, BelongsToManyOptions, BelongsToOptions, HasMany, HasManyOptions, HasOne, HasOneOptions } from './associations/index';
-import { DataType } from './data-types';
-import { Deferrable } from './deferrable';
-import { HookReturn, Hooks, ModelHooks } from './hooks';
-import { ValidationOptions } from './instance-validator';
-import { IndexesOptions, QueryOptions, TableName } from './dialects/abstract/query-interface';
-import { Sequelize, SyncOptions } from './sequelize';
-import { Col, Fn, Literal, Where, MakeNullishOptional, AnyFunction, Cast, Json } from './utils';
-import { LOCK, Transaction, Op, Optional } from './index';
-import { SetRequired } from './utils/set-required';
-
-// Backport of https://github.com/sequelize/sequelize/blob/a68b439fb3ea748d3f3d37356d9fe610f86184f6/src/utils/index.ts#L85
-export type AllowReadonlyArray<T> = T | readonly T[];
-
-export interface Logging {
-  /**
-   * A function that gets executed while running the query to log the sql.
-   */
-  logging?: boolean | ((sql: string, timing?: number) => void);
-
-  /**
-   * Pass query execution time in milliseconds as second argument to logging function (options.logging).
-   */
-  benchmark?: boolean;
-}
-
-export interface Poolable {
-  /**
-   * Force the query to use the write pool, regardless of the query type.
-   *
-   * @default false
-   */
-  useMaster?: boolean;
-}
-
-export interface Transactionable {
-  /**
-   * Transaction to run query under
-   */
-  transaction?: Transaction | null;
-}
-
-export interface SearchPathable {
-  /**
-   * An optional parameter to specify the schema search_path (Postgres only)
-   */
-  searchPath?: string;
-}
-
-export interface Filterable<TAttributes = any> {
-  /**
-   * Attribute has to be matched for rows to be selected for the given action.
-   */
-  where?: WhereOptions<TAttributes>;
-}
-
-export interface Projectable {
-  /**
-   * A list of the attributes that you want to select. To rename an attribute, you can pass an array, with
-   * two elements - the first is the name of the attribute in the DB (or some kind of expression such as
-   * `Sequelize.literal`, `Sequelize.fn` and so on), and the second is the name you want the attribute to
-   * have in the returned instance
-   */
-  attributes?: FindAttributeOptions;
-}
-
-export interface Paranoid {
-  /**
-   * If true, only non-deleted records will be returned. If false, both deleted and non-deleted records will
-   * be returned. Only applies if `options.paranoid` is true for the model.
-   */
-  paranoid?: boolean;
-}
-
-export type GroupOption = string | Fn | Col | (string | Fn | Col)[];
-
-/**
- * Options to pass to Model on drop
- */
-export interface DropOptions extends Logging {
-  /**
-   * Also drop all objects depending on this table, such as views. Only works in postgres
-   */
-  cascade?: boolean;
-}
-
-/**
- * Schema Options provided for applying a schema to a model
- */
-export interface SchemaOptions extends Logging {
-  /**
-   * The character(s) that separates the schema name from the table name
-   */
-  schemaDelimiter?: string;
-}
-
-/**
- * Scope Options for Model.scope
- */
-export interface ScopeOptions {
-  /**
-   * The scope(s) to apply. Scopes can either be passed as consecutive arguments, or as an array of arguments.
-   * To apply simple scopes and scope functions with no arguments, pass them as strings. For scope function,
-   * pass an object, with a `method` property. The value can either be a string, if the method does not take
-   * any arguments, or an array, where the first element is the name of the method, and consecutive elements
-   * are arguments to that method. Pass null to remove all scopes, including the default.
-   */
-  method: string | readonly [string, ...unknown[]];
-}
-
-type InvalidInSqlArray = ColumnReference | Fn | Cast | null | Literal;
-
-/**
- * This type allows using `Op.or`, `Op.and`, and `Op.not` recursively around another type.
- * It also supports using a plain Array as an alias for `Op.and`. (unlike {@link AllowNotOrAndRecursive}).
- *
- * Example of plain-array treated as `Op.and`:
- * User.findAll({ where: [{ id: 1 }, { id: 2 }] });
- *
- * Meant to be used by {@link WhereOptions}.
- */
-type AllowNotOrAndWithImplicitAndArrayRecursive<T> = AllowArray<
-  // this is the equivalent of Op.and
-  | T
-  | { [Op.or]: AllowArray<AllowNotOrAndWithImplicitAndArrayRecursive<T>> }
-  | { [Op.and]: AllowArray<AllowNotOrAndWithImplicitAndArrayRecursive<T>> }
-  | { [Op.not]: AllowNotOrAndWithImplicitAndArrayRecursive<T> }
->;
-
-/**
- * This type allows using `Op.or`, `Op.and`, and `Op.not` recursively around another type.
- * Unlike {@link AllowNotOrAndWithImplicitAndArrayRecursive}, it does not allow the 'implicit AND Array'.
- *
- * Example of plain-array NOT treated as Op.and:
- * User.findAll({ where: { id: [1, 2] } });
- *
- * Meant to be used by {@link WhereAttributeHashValue}.
- */
-type AllowNotOrAndRecursive<T> =
-  | T
-  | { [Op.or]: AllowArray<AllowNotOrAndRecursive<T>> }
-  | { [Op.and]: AllowArray<AllowNotOrAndRecursive<T>> }
-  | { [Op.not]: AllowNotOrAndRecursive<T> };
-
-type AllowArray<T> = T | T[];
-type AllowAnyAll<T> =
-  | T
-  // Op.all: [x, z] results in ALL (ARRAY[x, z])
-  // Some things cannot go in ARRAY. Op.values must be used to support them.
-  | { [Op.all]: Exclude<T, InvalidInSqlArray>[] | Literal | { [Op.values]: Array<T | DynamicValues<T>> } }
-  | { [Op.any]: Exclude<T, InvalidInSqlArray>[] | Literal | { [Op.values]: Array<T | DynamicValues<T>> } };
-
-/**
- * The type accepted by every `where` option
- */
-export type WhereOptions<TAttributes = any> = AllowNotOrAndWithImplicitAndArrayRecursive<
-  | WhereAttributeHash<TAttributes>
-  | Literal
-  | Fn
-  | Where
-  | Json
->;
-
-/**
- * @deprecated unused
- */
-export interface AnyOperator {
-  [Op.any]: readonly (string | number | Date | Literal)[] | Literal;
-}
-
-/** @deprecated unused */
-export interface AllOperator {
-  [Op.all]: readonly (string | number | Date | Literal)[] | Literal;
-}
-
-// number is always allowed because -Infinity & +Infinity are valid
-export type Rangable<T> = readonly [
-  lower: T | RangePart<T | number> | number | null,
-  higher: T | RangePart<T | number> | number | null
-] | EmptyRange;
-
-/**
- * This type represents the output of the {@link RANGE} data type.
- */
-// number is always allowed because -Infinity & +Infinity are valid
-export type Range<T> = readonly [lower: RangePart<T | number>, higher: RangePart<T | number>] | EmptyRange;
-
-type EmptyRange = [];
-
-type RangePart<T> = { value: T, inclusive: boolean };
-
-/**
- * Internal type - prone to changes. Do not export.
- * @private
- */
-export type ColumnReference = Col | { [Op.col]: string };
-
-/**
- * Internal type - prone to changes. Do not export.
- * @private
- */
-type WhereSerializableValue = boolean | string | number | Buffer | Date;
-
-/**
- * Internal type - prone to changes. Do not export.
- * @private
- */
-type OperatorValues<AcceptableValues> =
-  | StaticValues<AcceptableValues>
-  | DynamicValues<AcceptableValues>;
-
-/**
- * Represents acceptable Dynamic values.
- *
- * Dynamic values, as opposed to {@link StaticValues}. i.e. column references, functions, etc...
- */
-type DynamicValues<AcceptableValues> =
-  | Literal
-  | ColumnReference
-  | Fn
-  | Cast
-  // where() can only be used on boolean attributes
-  | (AcceptableValues extends boolean ? Where : never)
-
-/**
- * Represents acceptable Static values.
- *
- * Static values, as opposed to {@link DynamicValues}. i.e. booleans, strings, etc...
- */
-type StaticValues<Type> =
-  Type extends Range<infer RangeType> ? [lower: RangeType | RangePart<RangeType>, higher: RangeType | RangePart<RangeType>]
-  : Type extends any[] ? { readonly [Key in keyof Type]: StaticValues<Type[Key]>}
-  : Type extends null ? Type | WhereSerializableValue | null
-  : Type | WhereSerializableValue;
-
-/**
- * Operators that can be used in {@link WhereOptions}
- *
- * @typeParam AttributeType - The JS type of the attribute the operator is operating on.
- *
- * See https://sequelize.org/master/en/v3/docs/querying/#operators
- */
-// TODO: default to something more strict than `any` which lists serializable values
-export interface WhereOperators<AttributeType = any> {
-   /**
-    * @example: `[Op.eq]: 6,` becomes `= 6`
-    * @example: `[Op.eq]: [6, 7]` becomes `= ARRAY[6, 7]`
-    * @example: `[Op.eq]: null` becomes `IS NULL`
-    * @example: `[Op.eq]: true` becomes `= true`
-    * @example: `[Op.eq]: literal('raw sql')` becomes `= raw sql`
-    * @example: `[Op.eq]: col('column')` becomes `= "column"`
-    * @example: `[Op.eq]: fn('NOW')` becomes `= NOW()`
-    */
-  [Op.eq]?: AllowAnyAll<OperatorValues<AttributeType>>;
-
-  /**
-   * @example: `[Op.ne]: 20,` becomes `!= 20`
-   * @example: `[Op.ne]: [20, 21]` becomes `!= ARRAY[20, 21]`
-   * @example: `[Op.ne]: null` becomes `IS NOT NULL`
-   * @example: `[Op.ne]: true` becomes `!= true`
-   * @example: `[Op.ne]: literal('raw sql')` becomes `!= raw sql`
-   * @example: `[Op.ne]: col('column')` becomes `!= "column"`
-   * @example: `[Op.ne]: fn('NOW')` becomes `!= NOW()`
-   */
-  [Op.ne]?: WhereOperators<AttributeType>[typeof Op.eq]; // accepts the same types as Op.eq
-
-  /**
-   * @example: `[Op.is]: null` becomes `IS NULL`
-   * @example: `[Op.is]: true` becomes `IS TRUE`
-   * @example: `[Op.is]: literal('value')` becomes `IS value`
-   */
-  [Op.is]?: Extract<AttributeType, null | boolean> | Literal;
-
-  /**
-   * @example: `[Op.not]: true` becomes `IS NOT TRUE`
-   * @example: `{ col: { [Op.not]: { [Op.gt]: 5 } } }` becomes `NOT (col > 5)`
-   */
-  [Op.not]?: WhereOperators<AttributeType>[typeof Op.eq]; // accepts the same types as Op.eq ('Op.not' is not strictly the opposite of 'Op.is' due to legacy reasons)
-
-  /** @example: `[Op.gte]: 6` becomes `>= 6` */
-  [Op.gte]?: AllowAnyAll<OperatorValues<NonNullable<AttributeType>>>;
-
-  /** @example: `[Op.lte]: 10` becomes `<= 10` */
-  [Op.lte]?: WhereOperators<AttributeType>[typeof Op.gte]; // accepts the same types as Op.gte
-
-  /** @example: `[Op.lt]: 10` becomes `< 10` */
-  [Op.lt]?: WhereOperators<AttributeType>[typeof Op.gte]; // accepts the same types as Op.gte
-
-  /** @example: `[Op.gt]: 6` becomes `> 6` */
-  [Op.gt]?: WhereOperators<AttributeType>[typeof Op.gte]; // accepts the same types as Op.gte
-
-  /**
-   * @example: `[Op.between]: [6, 10],` becomes `BETWEEN 6 AND 10`
-   */
-  [Op.between]?:
-    | [
-      lowerInclusive: OperatorValues<NonNullable<AttributeType>>,
-      higherInclusive: OperatorValues<NonNullable<AttributeType>>,
-    ]
-    | Literal;
-
-  /** @example: `[Op.notBetween]: [11, 15],` becomes `NOT BETWEEN 11 AND 15` */
-  [Op.notBetween]?: WhereOperators<AttributeType>[typeof Op.between];
-
-  /** @example: `[Op.in]: [1, 2],` becomes `IN (1, 2)` */
-  [Op.in]?: ReadonlyArray<OperatorValues<NonNullable<AttributeType>>> | Literal;
-
-  /** @example: `[Op.notIn]: [1, 2],` becomes `NOT IN (1, 2)` */
-  [Op.notIn]?: WhereOperators<AttributeType>[typeof Op.in];
-
-  /**
-   * @example: `[Op.like]: '%hat',` becomes `LIKE '%hat'`
-   * @example: `[Op.like]: { [Op.any]: ['cat', 'hat'] }` becomes `LIKE ANY ARRAY['cat', 'hat']`
-   */
-  [Op.like]?: AllowAnyAll<OperatorValues<Extract<AttributeType, string>>>;
-
-  /**
-   * @example: `[Op.notLike]: '%hat'` becomes `NOT LIKE '%hat'`
-   * @example: `[Op.notLike]: { [Op.any]: ['cat', 'hat']}` becomes `NOT LIKE ANY ARRAY['cat', 'hat']`
-   */
-  [Op.notLike]?: WhereOperators<AttributeType>[typeof Op.like];
-
-  /**
-   * case insensitive PG only
-   *
-   * @example: `[Op.iLike]: '%hat'` becomes `ILIKE '%hat'`
-   * @example: `[Op.iLike]: { [Op.any]: ['cat', 'hat']}` becomes `ILIKE ANY ARRAY['cat', 'hat']`
-   */
-  [Op.iLike]?: WhereOperators<AttributeType>[typeof Op.like];
-
-  /**
-   * PG only
-   *
-   * @example: `[Op.notILike]: '%hat'` becomes `NOT ILIKE '%hat'`
-   * @example: `[Op.notLike]: ['cat', 'hat']` becomes `LIKE ANY ARRAY['cat', 'hat']`
-   */
-  [Op.notILike]?: WhereOperators<AttributeType>[typeof Op.like];
-
-  /**
-   * PG array & range 'overlaps' operator
-   *
-   * @example: `[Op.overlap]: [1, 2]` becomes `&& [1, 2]`
-   */
-  // https://www.postgresql.org/docs/14/functions-range.html range && range
-  // https://www.postgresql.org/docs/14/functions-array.html array && array
-  [Op.overlap]?: AllowAnyAll<
-    | (
-      // RANGE && RANGE
-      AttributeType extends Range<infer RangeType> ? Rangable<RangeType>
-      // ARRAY && ARRAY
-      : AttributeType extends any[] ? StaticValues<NonNullable<AttributeType>>
-      : never
-    )
-    | DynamicValues<AttributeType>
-  >;
-
-  /**
-   * PG array & range 'contains' operator
-   *
-   * @example: `[Op.contains]: [1, 2]` becomes `@> [1, 2]`
-   */
-  // https://www.postgresql.org/docs/14/functions-json.html jsonb @> jsonb
-  // https://www.postgresql.org/docs/14/functions-range.html range @> range ; range @> element
-  // https://www.postgresql.org/docs/14/functions-array.html array @> array
-  [Op.contains]?:
-    // RANGE @> ELEMENT
-    | AttributeType extends Range<infer RangeType> ? OperatorValues<OperatorValues<NonNullable<RangeType>>> : never
-    // ARRAY @> ARRAY ; RANGE @> RANGE
-    | WhereOperators<AttributeType>[typeof Op.overlap];
-
-  /**
-   * PG array & range 'contained by' operator
-   *
-   * @example: `[Op.contained]: [1, 2]` becomes `<@ [1, 2]`
-   */
-  [Op.contained]?:
-    AttributeType extends any[]
-      // ARRAY <@ ARRAY ; RANGE <@ RANGE
-      ? WhereOperators<AttributeType>[typeof Op.overlap]
-      // ELEMENT <@ RANGE
-      : AllowAnyAll<OperatorValues<Rangable<AttributeType>>>;
-
-  /**
-   * Strings starts with value.
-   */
-  [Op.startsWith]?: OperatorValues<Extract<AttributeType, string>>;
-
-  /**
-   * String ends with value.
-   */
-  [Op.endsWith]?: WhereOperators<AttributeType>[typeof Op.startsWith];
-  /**
-   * String contains value.
-   */
-  [Op.substring]?: WhereOperators<AttributeType>[typeof Op.startsWith];
-
-  /**
-   * MySQL/PG only
-   *
-   * Matches regular expression, case sensitive
-   *
-   * @example: `[Op.regexp]: '^[h|a|t]'` becomes `REGEXP/~ '^[h|a|t]'`
-   */
-  [Op.regexp]?: AllowAnyAll<OperatorValues<Extract<AttributeType, string>>>;
-
-  /**
-   * MySQL/PG only
-   *
-   * Does not match regular expression, case sensitive
-   *
-   * @example: `[Op.notRegexp]: '^[h|a|t]'` becomes `NOT REGEXP/!~ '^[h|a|t]'`
-   */
-  [Op.notRegexp]?: WhereOperators<AttributeType>[typeof Op.regexp];
-
-  /**
-   * PG only
-   *
-   * Matches regular expression, case insensitive
-   *
-   * @example: `[Op.iRegexp]: '^[h|a|t]'` becomes `~* '^[h|a|t]'`
-   */
-  [Op.iRegexp]?: WhereOperators<AttributeType>[typeof Op.regexp];
-
-  /**
-   * PG only
-   *
-   * Does not match regular expression, case insensitive
-   *
-   * @example: `[Op.notIRegexp]: '^[h|a|t]'` becomes `!~* '^[h|a|t]'`
-   */
-  [Op.notIRegexp]?: WhereOperators<AttributeType>[typeof Op.regexp];
-
-  /** @example: `[Op.match]: Sequelize.fn('to_tsquery', 'fat & rat')` becomes `@@ to_tsquery('fat & rat')` */
-  [Op.match]?: AllowAnyAll<DynamicValues<AttributeType>>;
-
-  /**
-   * PG only
-   *
-   * Whether the range is strictly left of the other range.
-   *
-   * @example:
-   * ```typescript
-   * { rangeAttribute: { [Op.strictLeft]: [1, 2] } }
-   * // results in
-   * // "rangeAttribute" << [1, 2)
-   * ```
-   *
-   * https://www.postgresql.org/docs/14/functions-range.html
-   */
-  [Op.strictLeft]?:
-    | AttributeType extends Range<infer RangeType> ? Rangable<RangeType> : never
-    | DynamicValues<AttributeType>;
-
-  /**
-   * PG only
-   *
-   * Whether the range is strictly right of the other range.
-   *
-   * @example:
-   * ```typescript
-   * { rangeAttribute: { [Op.strictRight]: [1, 2] } }
-   * // results in
-   * // "rangeAttribute" >> [1, 2)
-   * ```
-   *
-   * https://www.postgresql.org/docs/14/functions-range.html
-   */
-  [Op.strictRight]?: WhereOperators<AttributeType>[typeof Op.strictLeft];
-
-  /**
-   * PG only
-   *
-   * Whether the range extends to the left of the other range.
-   *
-   * @example:
-   * ```typescript
-   * { rangeAttribute: { [Op.noExtendLeft]: [1, 2] } }
-   * // results in
-   * // "rangeAttribute" &> [1, 2)
-   * ```
-   *
-   * https://www.postgresql.org/docs/14/functions-range.html
-   */
-  [Op.noExtendLeft]?: WhereOperators<AttributeType>[typeof Op.strictLeft];
-
-  /**
-   * PG only
-   *
-   * Whether the range extends to the right of the other range.
-   *
-   * @example:
-   * ```typescript
-   * { rangeAttribute: { [Op.noExtendRight]: [1, 2] } }
-   * // results in
-   * // "rangeAttribute" &< [1, 2)
-   * ```
-   *
-   * https://www.postgresql.org/docs/14/functions-range.html
-   */
-  [Op.noExtendRight]?: WhereOperators<AttributeType>[typeof Op.strictLeft];
-
-  /**
-   * PG only
-   *
-   * Whether the two ranges are adjacent.
-   *
-   * @example:
-   * ```typescript
-   * { rangeAttribute: { [Op.adjacent]: [1, 2] } }
-   * // results in
-   * // "rangeAttribute" -|- [1, 2)
-   * ```
-   *
-   * https://www.postgresql.org/docs/14/functions-range.html
-   */
-  [Op.adjacent]?: WhereOperators<AttributeType>[typeof Op.strictLeft];
-}
-
-/**
- * Example: `[Op.or]: [{a: 5}, {a: 6}]` becomes `(a = 5 OR a = 6)`
- *
- * @deprecated do not use me!
- */
-// TODO [>6]: Remove me
-export interface OrOperator<TAttributes = any> {
-  [Op.or]: WhereOptions<TAttributes> | readonly WhereOptions<TAttributes>[] | WhereValue<TAttributes> | readonly WhereValue<TAttributes>[];
-}
-
-/**
- * Example: `[Op.and]: {a: 5}` becomes `AND (a = 5)`
- *
- * @deprecated do not use me!
- */
-// TODO [>6]: Remove me
-export interface AndOperator<TAttributes = any> {
-  [Op.and]: WhereOptions<TAttributes> | readonly WhereOptions<TAttributes>[] | WhereValue<TAttributes> | readonly WhereValue<TAttributes>[];
-}
-
-/**
- * Where Geometry Options
- */
-export interface WhereGeometryOptions {
-  type: string;
-  coordinates: readonly (number[] | number)[];
-}
-
-/**
- * Used for the right hand side of WhereAttributeHash.
- * WhereAttributeHash is in there for JSON columns.
- *
- * @deprecated do not use me
- */
-// TODO [>6]: remove this
-export type WhereValue<TAttributes = any> =
-  | string
-  | number
-  | bigint
-  | boolean
-  | Date
-  | Buffer
-  | null
-  | WhereAttributeHash<any> // for JSON columns
-  | Col // reference another column
-  | Fn
-  | WhereGeometryOptions
-
-/**
- * A hash of attributes to describe your search.
- *
- * Possible key values:
- *
- * - An attribute name: `{ id: 1 }`
- * - A nested attribute: `{ '$projects.id$': 1 }`
- * - A JSON key: `{ 'object.key': 1 }`
- * - A cast: `{ 'id::integer': 1 }`
- *
- * - A combination of the above: `{ '$join.attribute$.json.path::integer': 1 }`
- */
-export type WhereAttributeHash<TAttributes = any> = {
-  // support 'attribute' & '$attribute$'
-  [AttributeName in keyof TAttributes as AttributeName extends string ? AttributeName | `$${AttributeName}$` : never]?: WhereAttributeHashValue<TAttributes[AttributeName]>;
-} & {
-  [AttributeName in keyof TAttributes as AttributeName extends string ?
-    // support 'json.path', '$json$.path'
-    | `${AttributeName}.${string}` | `$${AttributeName}$.${string}`
-    // support 'attribute::cast', '$attribute$::cast', 'json.path::cast' & '$json$.path::cast'
-    | `${AttributeName | `$${AttributeName}$` | `${AttributeName}.${string}` | `$${AttributeName}$.${string}`}::${string}`
-  : never]?: WhereAttributeHashValue<any>;
-} & {
-  // support '$nested.attribute$', '$nested.attribute$::cast', '$nested.attribute$.json.path', & '$nested.attribute$.json.path::cast'
-  // TODO [2022-05-26]: Remove this ts-ignore once we drop support for TS < 4.4
-  // TypeScript < 4.4 does not support using a Template Literal Type as a key.
-  //  note: this *must* be a ts-ignore, as it works in ts >= 4.4
-  // @ts-ignore
-  [attribute: `$${string}.${string}$` | `$${string}.${string}$::${string}` | `$${string}.${string}$.${string}` | `$${string}.${string}$.${string}::${string}`]: WhereAttributeHashValue<any>;
-}
-
-/**
- * Types that can be compared to an attribute in a WHERE context.
- */
-export type WhereAttributeHashValue<AttributeType> =
-  | AllowNotOrAndRecursive<
-    // if the right-hand side is an array, it will be equal to Op.in
-    // otherwise it will be equal to Op.eq
-    // Exception: array attribtues always use Op.eq, never Op.in.
-    | AttributeType extends any[]
-      ? WhereOperators<AttributeType>[typeof Op.eq] | WhereOperators<AttributeType>
-      : (
-        | WhereOperators<AttributeType>[typeof Op.in]
-        | WhereOperators<AttributeType>[typeof Op.eq]
-        | WhereOperators<AttributeType>
-      )
-    >
-  // TODO: this needs a simplified version just for JSON columns
-  | WhereAttributeHash<any> // for JSON columns
-
-/**
- * Through options for Include Options
- */
-export interface IncludeThroughOptions extends Filterable<any>, Projectable {
-  /**
-   * The alias of the relation, in case the model you want to eagerly load is aliassed. For `hasOne` /
-   * `belongsTo`, this should be the singular name, and for `hasMany`, it should be the plural
-   */
-  as?: string;
-
-  /**
-   * If true, only non-deleted records will be returned from the join table.
-   * If false, both deleted and non-deleted records will be returned.
-   * Only applies if through model is paranoid.
-   */
-  paranoid?: boolean;
-}
-
-/**
- * Options for eager-loading associated models, also allowing for all associations to be loaded at once
- */
-export type Includeable = ModelType | Association | IncludeOptions | { all: true, nested?: true } | string;
-
-/**
- * Complex include options
- */
-export interface IncludeOptions extends Filterable<any>, Projectable, Paranoid {
-  /**
-   * Mark the include as duplicating, will prevent a subquery from being used.
-   */
-  duplicating?: boolean;
-  /**
-   * The model you want to eagerly load
-   */
-  model?: ModelType;
-
-  /**
-   * The alias of the relation, in case the model you want to eagerly load is aliassed. For `hasOne` /
-   * `belongsTo`, this should be the singular name, and for `hasMany`, it should be the plural
-   */
-  as?: string;
-
-  /**
-   * The association you want to eagerly load. (This can be used instead of providing a model/as pair)
-   */
-  association?: Association | string;
-
-  /**
-   * Custom `on` clause, overrides default.
-   */
-  on?: WhereOptions<any>;
-
-  /**
-   * Note that this converts the eager load to an inner join,
-   * unless you explicitly set `required: false`
-   */
-  where?: WhereOptions<any>;
-
-  /**
-   * If true, converts to an inner join, which means that the parent model will only be loaded if it has any
-   * matching children. True if `include.where` is set, false otherwise.
-   */
-  required?: boolean;
-
-  /**
-   * If true, converts to a right join if dialect support it. Ignored if `include.required` is true.
-   */
-  right?: boolean;
-
-  /**
-   * Limit include. Only available when setting `separate` to true.
-   */
-  limit?: number;
-
-  /**
-   * Run include in separate queries.
-   */
-  separate?: boolean;
-
-  /**
-   * Through Options
-   */
-  through?: IncludeThroughOptions;
-
-  /**
-   * Load further nested related models
-   */
-  include?: Includeable[];
-
-  /**
-   * Order include. Only available when setting `separate` to true.
-   */
-  order?: Order;
-
-  /**
-   * Use sub queries. This should only be used if you know for sure the query does not result in a cartesian product.
-   */
-  subQuery?: boolean;
-}
-
-type OrderItemAssociation = Association | ModelStatic<Model> | { model: ModelStatic<Model>; as: string } | string
-type OrderItemColumn = string | Col | Fn | Literal
-export type OrderItem =
-  | string
-  | Fn
-  | Col
-  | Literal
-  | [OrderItemColumn, string]
-  | [OrderItemAssociation, OrderItemColumn]
-  | [OrderItemAssociation, OrderItemColumn, string]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemColumn]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemColumn, string]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemColumn]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemColumn, string]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemColumn]
-  | [OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemAssociation, OrderItemColumn, string]
-export type Order = Fn | Col | Literal | OrderItem[];
-
-/**
- * Please note if this is used the aliased property will not be available on the model instance
- * as a property but only via `instance.get('alias')`.
- */
-export type ProjectionAlias = readonly [string | Literal | Fn | Col, string];
-
-export type FindAttributeOptions =
-  | (string | ProjectionAlias)[]
-  | {
-    exclude: string[];
-    include?: (string | ProjectionAlias)[];
-  }
-  | {
-    exclude?: string[];
-    include: (string | ProjectionAlias)[];
-  };
-
-export interface IndexHint {
-  type: IndexHints;
-  values: string[];
-}
-
-export interface IndexHintable {
-  /**
-   * MySQL only.
-   */
-  indexHints?: IndexHint[];
-}
-
-/**
- * Options that are passed to any model creating a SELECT query
- *
- * A hash of options to describe the scope of the search
- */
-export interface FindOptions<TAttributes = any>
-  extends QueryOptions, Filterable<TAttributes>, Projectable, Paranoid, IndexHintable
-{
-  /**
-   * A list of associations to eagerly load using a left join (a single association is also supported). Supported is either
-   * `{ include: Model1 }`, `{ include: [ Model1, Model2, ...]}`, `{ include: [{ model: Model1, as: 'Alias' }]}` or
-   * `{ include: [{ all: true }]}`.
-   * If your association are set up with an `as` (eg. `X.hasMany(Y, { as: 'Z' }`, you need to specify Z in
-   * the as attribute when eager loading Y).
-   */
-  include?: Includeable | Includeable[];
-
-  /**
-   * Specifies an ordering. If a string is provided, it will be escaped. Using an array, you can provide
-   * several columns / functions to order by. Each element can be further wrapped in a two-element array. The
-   * first element is the column / function to order by, the second is the direction. For example:
-   * `order: [['name', 'DESC']]`. In this way the column will be escaped, but the direction will not.
-   */
-  order?: Order;
-
-  /**
-   * GROUP BY in sql
-   */
-  group?: GroupOption;
-
-  /**
-   * Limits how many items will be retrieved by the operation.
-   *
-   * If `limit` and `include` are used together, Sequelize will turn the `subQuery` option on by default.
-   * This is done to ensure that `limit` only impacts the Model on the same level as the `limit` option.
-   *
-   * You can disable this behavior by explicitly setting `subQuery: false`, however `limit` will then
-   * affect the total count of returned values, including eager-loaded associations, instead of just one table.
-   *
-   * @example
-   * // in the following query, `limit` only affects the "User" model.
-   * // This will return 2 users, each including all of their projects.
-   * User.findAll({
-   *   limit: 2,
-   *   include: [User.associations.projects],
-   * });
-   *
-   * @example
-   * // in the following query, `limit` affects the total number of returned values, eager-loaded associations included.
-   * // This may return 2 users, each with one project,
-   * //  or 1 user with 2 projects.
-   * User.findAll({
-   *   limit: 2,
-   *   include: [User.associations.projects],
-   *   subQuery: false,
-   * });
-   */
-  limit?: number;
-
-  // TODO: document this - this is an undocumented property but it exists and there are tests for it.
-  groupedLimit?: unknown;
-
-  /**
-   * Skip the results;
-   */
-  offset?: number;
-
-  /**
-   * Lock the selected rows. Possible options are transaction.LOCK.UPDATE and transaction.LOCK.SHARE.
-   * Postgres also supports transaction.LOCK.KEY_SHARE, transaction.LOCK.NO_KEY_UPDATE and specific model
-   * locks with joins. See [transaction.LOCK for an example](transaction#lock)
-   */
-  lock?:
-  | LOCK
-  | { level: LOCK; of: ModelStatic<Model> }
-  | boolean;
-  /**
-   * Skip locked rows. Only supported in Postgres.
-   */
-  skipLocked?: boolean;
-
-  /**
-   * Return raw result. See sequelize.query for more information.
-   */
-  raw?: boolean;
-
-  /**
-   * Select group rows after groups and aggregates are computed.
-   */
-  having?: WhereOptions<any>;
-
-  /**
-   * Use sub queries (internal).
-   *
-   * If unspecified, this will `true` by default if `limit` is specified, and `false` otherwise.
-   * See {@link FindOptions#limit} for more information.
-   */
-  subQuery?: boolean;
-}
-
-export interface NonNullFindOptions<TAttributes = any> extends FindOptions<TAttributes> {
-  /**
-   * Throw if nothing was found.
-   */
-  rejectOnEmpty: boolean | Error;
-}
-
-/**
- * Options for Model.count method
- */
-export interface CountOptions<TAttributes = any>
-  extends Logging, Transactionable, Filterable<TAttributes>, Projectable, Paranoid, Poolable
-{
-  /**
-   * Include options. See `find` for details
-   */
-  include?: Includeable | Includeable[];
-
-  /**
-   * Apply COUNT(DISTINCT(col))
-   */
-  distinct?: boolean;
-
-  /**
-   * GROUP BY in sql
-   * Used in conjunction with `attributes`.
-   *
-   * @see Projectable
-   */
-  group?: GroupOption;
-
-  /**
-   * The column to aggregate on.
-   */
-  col?: string;
-}
-
-/**
- * Options for Model.count when GROUP BY is used
- */
-export type CountWithOptions<TAttributes = any> = SetRequired<CountOptions<TAttributes>, 'group'>
-
-export interface FindAndCountOptions<TAttributes = any> extends CountOptions<TAttributes>, FindOptions<TAttributes> { }
-
-export interface GroupedCountResultItem {
-  [key: string]: unknown // projected attributes
-  count: number // the count for each group
-}
-
-/**
- * Options for Model.build method
- */
-export interface BuildOptions {
-  /**
-   * If set to true, values will ignore field and virtual setters.
-   */
-  raw?: boolean;
-
-  /**
-   * Is this record new
-   */
-  isNewRecord?: boolean;
-
-  /**
-   * An array of include options. A single option is also supported - Used to build prefetched/included model instances. See `set`
-   *
-   * TODO: See set
-   */
-  include?: Includeable | Includeable[];
-}
-
-export interface Silent {
-  /**
-   * If true, the updatedAt timestamp will not be updated.
-   *
-   * @default false
-   */
-  silent?: boolean;
-}
-
-/**
- * Options for Model.create method
- */
-export interface CreateOptions<TAttributes = any> extends BuildOptions, Logging, Silent, Transactionable, Hookable {
-  /**
-   * If set, only columns matching those in fields will be saved
-   */
-  fields?: (keyof TAttributes)[];
-
-  /**
-   * dialect specific ON CONFLICT DO NOTHING / INSERT IGNORE
-   */
-  ignoreDuplicates?: boolean;
-
-  /**
-   * Return the affected rows (only for postgres)
-   */
-  returning?: boolean | (keyof TAttributes)[];
-
-  /**
-   * If false, validations won't be run.
-   *
-   * @default true
-   */
-  validate?: boolean;
-
-}
-
-export interface Hookable {
-
-  /**
-   * If `false` the applicable hooks will not be called.
-   * The default value depends on the context.
-   */
-  hooks?: boolean
-
-}
-
-/**
- * Options for Model.findOrCreate method
- */
-export interface FindOrCreateOptions<TAttributes = any, TCreationAttributes = TAttributes>
-  extends FindOptions<TAttributes>, CreateOptions<TAttributes>
-{
-  /**
-   * Default values to use if building a new instance
-   */
-  defaults?: TCreationAttributes;
-}
-
-/**
- * Options for Model.findOrBuild method
- */
-export interface FindOrBuildOptions<TAttributes = any, TCreationAttributes = TAttributes>
-  extends FindOptions<TAttributes>, BuildOptions
-{
-  /**
-   * Default values to use if building a new instance
-   */
-  defaults?: TCreationAttributes;
-}
-
-/**
- * Options for Model.upsert method
- */
-export interface UpsertOptions<TAttributes = any> extends Logging, Transactionable, SearchPathable, Hookable {
-  /**
-   * The fields to insert / update. Defaults to all fields
-   */
-  fields?: (keyof TAttributes)[];
-
-  /**
-   * Return the affected rows (only for postgres)
-   */
-  returning?: boolean | (keyof TAttributes)[];
-
-  /**
-   * Run validations before the row is inserted
-   */
-  validate?: boolean;
-  /**
-   * An optional parameter that specifies a where clause for the `ON CONFLICT` part of the query
-   * (in particular: for applying to partial unique indexes).
-   * Only supported in Postgres >= 9.5 and SQLite >= 3.24.0
-   */
-  conflictWhere?: WhereOptions<TAttributes>;
-  /**
-   * Optional override for the conflict fields in the ON CONFLICT part of the query.
-   * Only supported in Postgres >= 9.5 and SQLite >= 3.24.0
-   */
-   conflictFields?: (keyof TAttributes)[];
-}
-
-/**
- * Options for Model.bulkCreate method
- */
-export interface BulkCreateOptions<TAttributes = any> extends Logging, Transactionable, Hookable, SearchPathable {
-  /**
-   * Fields to insert (defaults to all fields)
-   */
-  fields?: (keyof TAttributes)[];
-
-  /**
-   * Should each row be subject to validation before it is inserted. The whole insert will fail if one row
-   * fails validation
-   */
-  validate?: boolean;
-
-  /**
-   * Run before / after create hooks for each individual Instance? BulkCreate hooks will still be run if
-   * options.hooks is true.
-   */
-  individualHooks?: boolean;
-
-  /**
-   * Ignore duplicate values for primary keys?
-   *
-   * @default false
-   */
-  ignoreDuplicates?: boolean;
-
-  /**
-   * Fields to update if row key already exists (on duplicate key update)? (only supported by MySQL,
-   * MariaDB, SQLite >= 3.24.0 & Postgres >= 9.5).
-   */
-  updateOnDuplicate?: (keyof TAttributes)[];
-
-  /**
-   * Include options. See `find` for details
-   */
-  include?: Includeable | Includeable[];
-
-  /**
-   * Return all columns or only the specified columns for the affected rows (only for postgres)
-   */
-  returning?: boolean | (keyof TAttributes)[];
-  /**
-   * An optional parameter to specify a where clause for partial unique indexes
-   * (note: `ON CONFLICT WHERE` not `ON CONFLICT DO UPDATE WHERE`).
-   * Only supported in Postgres >= 9.5 and sqlite >= 9.5
-   */
-    conflictWhere?: WhereOptions<TAttributes>;
-  /**
-   * Optional override for the conflict fields in the ON CONFLICT part of the query.
-   * Only supported in Postgres >= 9.5 and SQLite >= 3.24.0
-   */
-  conflictAttributes?: Array<keyof TAttributes>;
-}
-
-/**
- * The options passed to Model.destroy in addition to truncate
- */
-export interface TruncateOptions<TAttributes = any> extends Logging, Transactionable, Filterable<TAttributes>, Hookable {
-  /**
-   * Only used in conjuction with TRUNCATE. Truncates  all tables that have foreign-key references to the
-   * named table, or to any tables added to the group due to CASCADE.
-   *
-   * @default false;
-   */
-  cascade?: boolean;
-
-  /**
-   * If set to true, destroy will SELECT all records matching the where parameter and will execute before /
-   * after destroy hooks on each row
-   */
-  individualHooks?: boolean;
-
-  /**
-   * How many rows to delete
-   */
-  limit?: number;
-
-  /**
-   * Delete instead of setting deletedAt to current timestamp (only applicable if `paranoid` is enabled)
-   */
-  force?: boolean;
-
-  /**
-   * Only used in conjunction with `truncate`.
-   * Automatically restart sequences owned by columns of the truncated table
-   */
-  restartIdentity?: boolean;
-}
-
-/**
- * Options used for Model.destroy
- */
-export interface DestroyOptions<TAttributes = any> extends TruncateOptions<TAttributes> {
-  /**
-   * If set to true, dialects that support it will use TRUNCATE instead of DELETE FROM. If a table is
-   * truncated the where and limit options are ignored
-   */
-  truncate?: boolean;
-}
-
-/**
- * Options for Model.restore
- */
-export interface RestoreOptions<TAttributes = any> extends Logging, Transactionable, Filterable<TAttributes>, Hookable {
-
-  /**
-   * If set to true, restore will find all records within the where parameter and will execute before / after
-   * bulkRestore hooks on each row
-   */
-  individualHooks?: boolean;
-
-  /**
-   * How many rows to undelete
-   */
-  limit?: number;
-}
-
-/**
- * Options used for Model.update
- */
-export interface UpdateOptions<TAttributes = any> extends Logging, Transactionable, Paranoid, Hookable {
-  /**
-   * Options to describe the scope of the search.
-   */
-  where: WhereOptions<TAttributes>;
-
-  /**
-   * Fields to update (defaults to all fields)
-   */
-  fields?: (keyof TAttributes)[];
-
-  /**
-   * Should each row be subject to validation before it is inserted. The whole insert will fail if one row
-   * fails validation.
-   *
-   * @default true
-   */
-  validate?: boolean;
-
-  /**
-   * Whether or not to update the side effects of any virtual setters.
-   *
-   * @default true
-   */
-  sideEffects?: boolean;
-
-  /**
-   * Run before / after update hooks?. If true, this will execute a SELECT followed by individual UPDATEs.
-   * A select is needed, because the row data needs to be passed to the hooks
-   *
-   * @default false
-   */
-  individualHooks?: boolean;
-
-  /**
-   * Return the affected rows (only for postgres)
-   */
-  returning?: boolean | (keyof TAttributes)[];
-
-  /**
-   * How many rows to update (only for mysql and mariadb)
-   */
-  limit?: number;
-
-  /**
-   * If true, the updatedAt timestamp will not be updated.
-   */
-  silent?: boolean;
-}
-
-/**
- * Options used for Model.aggregate
- */
-export interface AggregateOptions<T extends DataType | unknown, TAttributes = any>
-  extends QueryOptions, Filterable<TAttributes>, Paranoid
-{
-  /**
-   * The type of the result. If `field` is a field in this Model, the default will be the type of that field,
-   * otherwise defaults to float.
-   */
-  dataType?: string | T;
-
-  /**
-   * Applies DISTINCT to the field being aggregated over
-   */
-  distinct?: boolean;
-}
-
-// instance
-
-/**
- * Options used for Instance.increment method
- */
-export interface IncrementDecrementOptions<TAttributes = any>
-  extends Logging, Transactionable, Silent, SearchPathable, Filterable<TAttributes> { }
-
-/**
- * Options used for Instance.increment method
- */
-export interface IncrementDecrementOptionsWithBy<TAttributes = any> extends IncrementDecrementOptions<TAttributes> {
-  /**
-   * The number to increment by
-   *
-   * @default 1
-   */
-  by?: number;
-}
-
-/**
- * Options used for Instance.restore method
- */
-export interface InstanceRestoreOptions extends Logging, Transactionable { }
-
-/**
- * Options used for Instance.destroy method
- */
-export interface InstanceDestroyOptions extends Logging, Transactionable, Hookable {
-  /**
-   * If set to true, paranoid models will actually be deleted
-   */
-  force?: boolean;
-}
-
-/**
- * Options used for Instance.update method
- */
-export interface InstanceUpdateOptions<TAttributes = any> extends
-  SaveOptions<TAttributes>, SetOptions, Filterable<TAttributes> { }
-
-/**
- * Options used for Instance.set method
- */
-export interface SetOptions {
-  /**
-   * If set to true, field and virtual setters will be ignored
-   */
-  raw?: boolean;
-
-  /**
-   * Clear all previously set data values
-   */
-  reset?: boolean;
-}
-
-/**
- * Options used for Instance.save method
- */
-export interface SaveOptions<TAttributes = any> extends Logging, Transactionable, Silent, Hookable {
-  /**
-   * An optional array of strings, representing database columns. If fields is provided, only those columns
-   * will be validated and saved.
-   */
-  fields?: (keyof TAttributes)[];
-
-  /**
-   * If false, validations won't be run.
-   *
-   * @default true
-   */
-  validate?: boolean;
-
-  /**
-   * A flag that defines if null values should be passed as values or not.
-   *
-   * @default false
-   */
-  omitNull?: boolean;
-
-  /**
-   * Return the affected rows (only for postgres)
-   */
-  returning?: boolean | Array<keyof TAttributes>;
-}
-
-/**
- * Model validations, allow you to specify format/content/inheritance validations for each attribute of the
- * model.
- *
- * Validations are automatically run on create, update and save. You can also call validate() to manually
- * validate an instance.
- *
- * The validations are implemented by validator.js.
- */
-export interface ModelValidateOptions {
-  /**
-   * - `{ is: ['^[a-z]+$','i'] }` will only allow letters
-   * - `{ is: /^[a-z]+$/i }` also only allows letters
-   */
-  is?: string | readonly (string | RegExp)[] | RegExp | { msg: string; args: string | readonly (string | RegExp)[] | RegExp };
-
-  /**
-   * - `{ not: ['[a-z]','i'] }` will not allow letters
-   */
-  not?: string | readonly (string | RegExp)[] | RegExp | { msg: string; args: string | readonly (string | RegExp)[] | RegExp };
-
-  /**
-   * checks for email format (foo@bar.com)
-   */
-  isEmail?: boolean | { msg: string };
-
-  /**
-   * checks for url format (http://foo.com)
-   */
-  isUrl?: boolean | { msg: string };
-
-  /**
-   * checks for IPv4 (129.89.23.1) or IPv6 format
-   */
-  isIP?: boolean | { msg: string };
-
-  /**
-   * checks for IPv4 (129.89.23.1)
-   */
-  isIPv4?: boolean | { msg: string };
-
-  /**
-   * checks for IPv6 format
-   */
-  isIPv6?: boolean | { msg: string };
-
-  /**
-   * will only allow letters
-   */
-  isAlpha?: boolean | { msg: string };
-
-  /**
-   * will only allow alphanumeric characters, so "_abc" will fail
-   */
-  isAlphanumeric?: boolean | { msg: string };
-
-  /**
-   * will only allow numbers
-   */
-  isNumeric?: boolean | { msg: string };
-
-  /**
-   * checks for valid integers
-   */
-  isInt?: boolean | { msg: string };
-
-  /**
-   * checks for valid floating point numbers
-   */
-  isFloat?: boolean | { msg: string };
-
-  /**
-   * checks for any numbers
-   */
-  isDecimal?: boolean | { msg: string };
-
-  /**
-   * checks for lowercase
-   */
-  isLowercase?: boolean | { msg: string };
-
-  /**
-   * checks for uppercase
-   */
-  isUppercase?: boolean | { msg: string };
-
-  /**
-   * won't allow null
-   */
-  notNull?: boolean | { msg: string };
-
-  /**
-   * only allows null
-   */
-  isNull?: boolean | { msg: string };
-
-  /**
-   * don't allow empty strings
-   */
-  notEmpty?: boolean | { msg: string };
-
-  /**
-   * only allow a specific value
-   */
-  equals?: string | { msg: string };
-
-  /**
-   * force specific substrings
-   */
-  contains?: string | { msg: string };
-
-  /**
-   * check the value is not one of these
-   */
-  notIn?: ReadonlyArray<readonly any[]> | { msg: string; args: ReadonlyArray<readonly any[]> };
-
-  /**
-   * check the value is one of these
-   */
-  isIn?: ReadonlyArray<readonly any[]> | { msg: string; args: ReadonlyArray<readonly any[]> };
-
-  /**
-   * don't allow specific substrings
-   */
-  notContains?: readonly string[] | string | { msg: string; args: readonly string[] | string };
-
-  /**
-   * only allow values with length between 2 and 10
-   */
-  len?: readonly [number, number] | { msg: string; args: readonly [number, number] };
-
-  /**
-   * only allow uuids
-   */
-  isUUID?: number | { msg: string; args: number };
-
-  /**
-   * only allow date strings
-   */
-  isDate?: boolean | { msg: string; args: boolean };
-
-  /**
-   * only allow date strings after a specific date
-   */
-  isAfter?: string | { msg: string; args: string };
-
-  /**
-   * only allow date strings before a specific date
-   */
-  isBefore?: string | { msg: string; args: string };
-
-  /**
-   * only allow values
-   */
-  max?: number | { msg: string; args: readonly [number] };
-
-  /**
-   * only allow values >= 23
-   */
-  min?: number | { msg: string; args: readonly [number] };
-
-  /**
-   * only allow arrays
-   */
-  isArray?: boolean | { msg: string; args: boolean };
-
-  /**
-   * check for valid credit card numbers
-   */
-  isCreditCard?: boolean | { msg: string; args: boolean };
-
-  // TODO: Enforce 'rest' indexes to have type `(value: unknown) => boolean`
-  // Blocked by: https://github.com/microsoft/TypeScript/issues/7765
-  /**
-   * Custom validations are also possible
-   */
-  [name: string]: unknown;
-}
-
-/**
- * Interface for indexes property in InitOptions
- */
-export type ModelIndexesOptions = IndexesOptions
-
-/**
- * Interface for name property in InitOptions
- */
-export interface ModelNameOptions {
-  /**
-   * Singular model name
-   */
-  singular?: string;
-
-  /**
-   * Plural model name
-   */
-  plural?: string;
-}
-
-/**
- * Interface for getterMethods in InitOptions
- */
-export interface ModelGetterOptions<M extends Model = Model> {
-  [name: string]: (this: M) => unknown;
-}
-
-/**
- * Interface for setterMethods in InitOptions
- */
-export interface ModelSetterOptions<M extends Model = Model> {
-  [name: string]: (this: M, val: any) => void;
-}
-
-/**
- * Interface for Define Scope Options
- */
-export interface ModelScopeOptions<TAttributes = any> {
-  /**
-   * Name of the scope and it's query
-   */
-  [scopeName: string]: FindOptions<TAttributes> | ((...args: readonly any[]) => FindOptions<TAttributes>);
-}
-
-/**
- * General column options
- */
-export interface ColumnOptions {
-  /**
-   * If false, the column will have a NOT NULL constraint, and a not null validation will be run before an
-   * instance is saved.
-   *
-   * @default true
-   */
-  allowNull?: boolean;
-
-  /**
-   *  If set, sequelize will map the attribute name to a different name in the database
-   */
-  field?: string;
-
-  /**
-   * A literal default value, a JavaScript function, or an SQL function (see `sequelize.fn`)
-   */
-  defaultValue?: unknown;
-}
-
-/**
- * References options for the column's attributes
- */
-export interface ModelAttributeColumnReferencesOptions {
-  /**
-   * If this column references another table, provide it here as a Model, or a string
-   */
-  model?: TableName | ModelType;
-
-  /**
-   * The column of the foreign table that this column references
-   */
-  key?: string;
-
-  /**
-   * When to check for the foreign key constraing
-   *
-   * PostgreSQL only
-   */
-  deferrable?: Deferrable;
-}
-
-/**
- * Column options for the model schema attributes
- */
-export interface ModelAttributeColumnOptions<M extends Model = Model> extends ColumnOptions {
-  /**
-   * A string or a data type
-   */
-  type: DataType;
-
-  /**
-   * If true, the column will get a unique constraint. If a string is provided, the column will be part of a
-   * composite unique index. If multiple columns have the same string, they will be part of the same unique
-   * index
-   */
-  unique?: boolean | string | { name: string; msg: string };
-
-  /**
-   * Primary key flag
-   */
-  primaryKey?: boolean;
-
-  /**
-   * Is this field an auto increment field
-   */
-  autoIncrement?: boolean;
-
-  /**
-   * If this field is a Postgres auto increment field, use Postgres `GENERATED BY DEFAULT AS IDENTITY` instead of `SERIAL`. Postgres 10+ only.
-   */
-  autoIncrementIdentity?: boolean;
-
-  /**
-   * Comment for the database
-   */
-  comment?: string;
-
-  /**
-   * An object with reference configurations or the column name as string
-   */
-  references?: string | ModelAttributeColumnReferencesOptions;
-
-  /**
-   * What should happen when the referenced key is updated. One of CASCADE, RESTRICT, SET DEFAULT, SET NULL or
-   * NO ACTION
-   */
-  onUpdate?: string;
-
-  /**
-   * What should happen when the referenced key is deleted. One of CASCADE, RESTRICT, SET DEFAULT, SET NULL or
-   * NO ACTION
-   */
-  onDelete?: string;
-
-
-  /**
-   * An object of validations to execute for this column every time the model is saved. Can be either the
-   * name of a validation provided by validator.js, a validation function provided by extending validator.js
-   * (see the
-   * `DAOValidator` property for more details), or a custom validation function. Custom validation functions
-   * are called with the value of the field, and can possibly take a second callback argument, to signal that
-   * they are asynchronous. If the validator is sync, it should throw in the case of a failed validation, it
-   * it is async, the callback should be called with the error text.
-   */
-  validate?: ModelValidateOptions;
-
-  /**
-   * Usage in object notation
-   *
-   * ```js
-   * class MyModel extends Model {}
-   * MyModel.init({
-   *   states: {
-   *     type:   Sequelize.ENUM,
-   *     values: ['active', 'pending', 'deleted']
-   *   }
-   * }, { sequelize })
-   * ```
-   */
-  values?: readonly string[];
-
-  /**
-   * Provide a custom getter for this column. Use `this.getDataValue(String)` to manipulate the underlying
-   * values.
-   */
-  get?(this: M): unknown;
-
-  /**
-   * Provide a custom setter for this column. Use `this.setDataValue(String, Value)` to manipulate the
-   * underlying values.
-   */
-  set?(this: M, val: unknown): void;
-}
-
-/**
- * Interface for Attributes provided for all columns in a model
- */
-export type ModelAttributes<M extends Model = Model, TAttributes = any> = {
-  /**
-   * The description of a database column
-   */
-  [name in keyof TAttributes]: DataType | ModelAttributeColumnOptions<M>;
-}
-
-/**
- * Possible types for primary keys
- */
-export type Identifier = number | bigint | string | Buffer;
-
-/**
- * Options for model definition
- */
-export interface ModelOptions<M extends Model = Model> {
-  /**
-   * Define the default search scope to use for this model. Scopes have the same form as the options passed to
-   * find / findAll.
-   */
-  defaultScope?: FindOptions<Attributes<M>>;
-
-  /**
-   * More scopes, defined in the same way as defaultScope above. See `Model.scope` for more information about
-   * how scopes are defined, and what you can do with them
-   */
-  scopes?: ModelScopeOptions<Attributes<M>>;
-
-  /**
-   * Don't persits null values. This means that all columns with null values will not be saved.
-   */
-  omitNull?: boolean;
-
-  /**
-   * Adds createdAt and updatedAt timestamps to the model. Default true.
-   */
-  timestamps?: boolean;
-
-  /**
-   * Calling destroy will not delete the model, but instead set a deletedAt timestamp if this is true. Needs
-   * timestamps=true to work. Default false.
-   */
-  paranoid?: boolean;
-
-  /**
-   * Converts all camelCased columns to underscored if true. Default false.
-   */
-  underscored?: boolean;
-
-  /**
-   * Indicates if the model's table has a trigger associated with it. Default false.
-   */
-  hasTrigger?: boolean;
-
-  /**
-   * If freezeTableName is true, sequelize will not try to alter the DAO name to get the table name.
-   * Otherwise, the dao name will be pluralized. Default false.
-   */
-  freezeTableName?: boolean;
-
-  /**
-   * An object with two attributes, `singular` and `plural`, which are used when this model is associated to
-   * others.
-   */
-  name?: ModelNameOptions;
-
-  /**
-   * Set name of the model. By default its same as Class name.
-   */
-  modelName?: string;
-
-  /**
-   * Indexes for the provided database table
-   */
-  indexes?: readonly ModelIndexesOptions[];
-
-  /**
-   * Override the name of the createdAt column if a string is provided, or disable it if false. Timestamps
-   * must be true. Not affected by underscored setting.
-   */
-  createdAt?: string | boolean;
-
-  /**
-   * Override the name of the deletedAt column if a string is provided, or disable it if false. Timestamps
-   * must be true. Not affected by underscored setting.
-   */
-  deletedAt?: string | boolean;
-
-  /**
-   * Override the name of the updatedAt column if a string is provided, or disable it if false. Timestamps
-   * must be true. Not affected by underscored setting.
-   */
-  updatedAt?: string | boolean;
-
-  /**
-   * @default pluralized model name, unless freezeTableName is true, in which case it uses model name
-   * verbatim
-   */
-  tableName?: string;
-
-  schema?: string;
-
-  /**
-   * You can also change the database engine, e.g. to MyISAM. InnoDB is the default.
-   */
-  engine?: string;
-
-  charset?: string;
-
-  /**
-   * Finaly you can specify a comment for the table in MySQL and PG
-   */
-  comment?: string;
-
-  collate?: string;
-
-  /**
-   * Set the initial AUTO_INCREMENT value for the table in MySQL.
-   */
-  initialAutoIncrement?: string;
-
-  /**
-   * An object of hook function that are called before and after certain lifecycle events.
-   * See Hooks for more information about hook
-   * functions and their signatures. Each property can either be a function, or an array of functions.
-   */
-  hooks?: Partial<ModelHooks<M, Attributes<M>>>;
-
-  /**
-   * An object of model wide validations. Validations have access to all model values via `this`. If the
-   * validator function takes an argument, it is asumed to be async, and is called with a callback that
-   * accepts an optional error.
-   */
-  validate?: ModelValidateOptions;
-
-  /**
-   * Allows defining additional setters that will be available on model instances.
-   */
-  setterMethods?: ModelSetterOptions<M>;
-
-  /**
-   * Allows defining additional getters that will be available on model instances.
-   */
-  getterMethods?: ModelGetterOptions<M>;
-
-  /**
-   * Enable optimistic locking.
-   * When enabled, sequelize will add a version count attribute to the model and throw an
-   * OptimisticLockingError error when stale instances are saved.
-   * - If string: Uses the named attribute.
-   * - If boolean: Uses `version`.
-   *
-   * @default false
-   */
-  version?: boolean | string;
-
-  /**
-   * Specify the scopes merging strategy (default 'overwrite'). Valid values are 'and' and 'overwrite'.
-   * When the 'and' strategy is set, scopes will be grouped using the Op.and operator.
-   * For instance merging scopes containing `{ where: { myField: 1 }}` and `{ where: { myField: 2 }}` will result in
-   * `{ where: { [Op.and]: [{ myField: 1 }, { myField: 2 }] } }`.
-   * When the 'overwrite' strategy is set, scopes containing the same attribute in a where clause will be overwritten by the lastly defined one.
-   * For instance merging scopes containing `{ where: { myField: 1 }}` and `{ where: { myField: 2 }}` will result in
-   * `{ where: { myField: 2 } }`.
-   *
-   * @default false
-   */
-  whereMergeStrategy?: 'and' | 'overwrite';
-}
-
-/**
- * Options passed to [[Model.init]]
- */
-export interface InitOptions<M extends Model = Model> extends ModelOptions<M> {
-  /**
-   * The sequelize connection. Required ATM.
-   */
-  sequelize: Sequelize;
-}
-
-/**
- * AddScope Options for Model.addScope
- */
-export interface AddScopeOptions {
-  /**
-   * If a scope of the same name already exists, should it be overwritten?
-   */
-  override: boolean;
-}
-
-export abstract class Model<TModelAttributes extends {} = any, TCreationAttributes extends {} = TModelAttributes>
-  extends Hooks<Model<TModelAttributes, TCreationAttributes>, TModelAttributes, TCreationAttributes>
-{
-  /**
-   * A dummy variable that doesn't exist on the real object. This exists so
-   * Typescript can infer the type of the attributes in static functions. Don't
-   * try to access this!
-   *
-   * Before using these, I'd tried typing out the functions without them, but
-   * Typescript fails to infer `TAttributes` in signatures like the below.
-   *
-   * ```ts
-   * public static findOne<M extends Model<TAttributes>, TAttributes>(
-   *   this: { new(): M },
-   *   options: NonNullFindOptions<TAttributes>
-   * ): Promise<M>;
-   * ```
-   *
-   * @deprecated This property will become a Symbol in v7 to prevent collisions.
-   * Use Attributes<Model> instead of this property to be forward-compatible.
-   */
-  _attributes: TModelAttributes; // TODO [>6]: make this a non-exported symbol (same as the one in hooks.d.ts)
-
-  /**
-   * Object that contains underlying model data
-   */
-  dataValues: TModelAttributes;
-
-  /**
-   * A similar dummy variable that doesn't exist on the real object. Do not
-   * try to access this in real code.
-   *
-   * @deprecated This property will become a Symbol in v7 to prevent collisions.
-   * Use CreationAttributes<Model> instead of this property to be forward-compatible.
-   */
-  _creationAttributes: TCreationAttributes; // TODO [>6]: make this a non-exported symbol (same as the one in hooks.d.ts)
-
-  /** The name of the database table */
-  public static readonly tableName: string;
-
-  /**
-   * The name of the primary key attribute
-   */
-  public static readonly primaryKeyAttribute: string;
-
-  /**
-   * The name of the primary key attributes
-   */
-  public static readonly primaryKeyAttributes: readonly string[];
-
-  /**
-   * An object hash from alias to association object
-   */
-  public static readonly associations: {
-    [key: string]: Association;
-  };
-
-  /**
-   * The options that the model was initialized with
-   */
-  public static readonly options: InitOptions;
-
-  // TODO [>7]: Remove `rawAttributes` in v8
-  /**
-   * The attributes of the model.
-   *
-   * @deprecated use {@link Model.getAttributes} for better typings.
-   */
-  public static readonly rawAttributes: { [attribute: string]: ModelAttributeColumnOptions };
-
-  /**
-   * Returns the attributes of the model
-   */
-  public static getAttributes<M extends Model>(this: ModelStatic<M>): {
-    readonly [Key in keyof Attributes<M>]: ModelAttributeColumnOptions
-  };
-
-  /**
-   * Reference to the sequelize instance the model was initialized with
-   */
-  public static readonly sequelize?: Sequelize;
-
-  /**
-   * Initialize a model, representing a table in the DB, with attributes and options.
-   *
-   * The table columns are define by the hash that is given as the second argument. Each attribute of the hash represents a column. A short table definition might look like this:
-   *
-   * ```js
-   * Project.init({
-   *   columnA: {
-   *     type: Sequelize.BOOLEAN,
-   *     validate: {
-   *       is: ['[a-z]','i'],        // will only allow letters
-   *       max: 23,                  // only allow values <= 23
-   *       isIn: {
-   *         args: [['en', 'zh']],
-   *         msg: "Must be English or Chinese"
-   *       }
-   *     },
-   *     field: 'column_a'
-   *     // Other attributes here
-   *   },
-   *   columnB: Sequelize.STRING,
-   *   columnC: 'MY VERY OWN COLUMN TYPE'
-   * }, {sequelize})
-   *
-   * sequelize.models.modelName // The model will now be available in models under the class name
-   * ```
-   *
-   * As shown above, column definitions can be either strings, a reference to one of the datatypes that are predefined on the Sequelize constructor, or an object that allows you to specify both the type of the column, and other attributes such as default values, foreign key constraints and custom setters and getters.
-   *
-   * For a list of possible data types, see https://sequelize.org/master/en/latest/docs/models-definition/#data-types
-   *
-   * For more about getters and setters, see https://sequelize.org/master/en/latest/docs/models-definition/#getters-setters
-   *
-   * For more about instance and class methods, see https://sequelize.org/master/en/latest/docs/models-definition/#expansion-of-models
-   *
-   * For more about validation, see https://sequelize.org/master/en/latest/docs/models-definition/#validations
-   *
-   * @param attributes
-   *  An object, where each attribute is a column of the table. Each column can be either a DataType, a
-   *  string or a type-description object, with the properties described below:
-   * @param options These options are merged with the default define options provided to the Sequelize constructor
-   * @returns Return the initialized model
-   */
-  public static init<MS extends ModelStatic<Model>, M extends InstanceType<MS>>(
-    this: MS,
-    attributes: ModelAttributes<
-      M,
-      // 'foreign keys' are optional in Model.init as they are added by association declaration methods
-      Optional<Attributes<M>, BrandedKeysOf<Attributes<M>, typeof ForeignKeyBrand>>
-    >,
-    options: InitOptions<M>
-  ): MS;
-
-  /**
-   * Remove attribute from model definition
-   *
-   * @param attribute
-   */
-  public static removeAttribute(attribute: string): void;
-
-  /**
-   * Sync this Model to the DB, that is create the table. Upon success, the callback will be called with the
-   * model instance (this)
-   */
-  public static sync<M extends Model>(options?: SyncOptions): Promise<M>;
-
-  /**
-   * Drop the table represented by this Model
-   *
-   * @param options
-   */
-  public static drop(options?: DropOptions): Promise<void>;
-
-  /**
-   * Apply a schema to this model. For postgres, this will actually place the schema in front of the table
-   * name
-   * - `"schema"."tableName"`, while the schema will be prepended to the table name for mysql and
-   * sqlite - `'schema.tablename'`.
-   *
-   * @param schema The name of the schema
-   * @param options
-   */
-  public static schema<M extends Model>(
-    this: ModelStatic<M>,
-    schema: string,
-    options?: SchemaOptions
-  ): ModelCtor<M>;
-
-  /**
-   * Get the tablename of the model, taking schema into account. The method will return The name as a string
-   * if the model has no schema, or an object with `tableName`, `schema` and `delimiter` properties.
-   *
-   * @param options The hash of options from any query. You can use one model to access tables with matching
-   *     schemas by overriding `getTableName` and using custom key/values to alter the name of the table.
-   *     (eg.
-   *     subscribers_1, subscribers_2)
-   */
-  public static getTableName(): string | {
-    tableName: string;
-    schema: string;
-    delimiter: string;
-  };
-
-  /**
-   * Apply a scope created in `define` to the model. First let's look at how to create scopes:
-   * ```js
-   * class MyModel extends Model {}
-   * MyModel.init(attributes, {
-   *   defaultScope: {
-   *     where: {
-   *       username: 'dan'
-   *     },
-   *     limit: 12
-   *   },
-   *   scopes: {
-   *     isALie: {
-   *       where: {
-   *         stuff: 'cake'
-   *       }
-   *     },
-   *     complexFunction(email, accessLevel) {
-   *       return {
-   *         where: {
-   *           email: {
-   *             [Op.like]: email
-   *           },
-   *           accesss_level {
-   *             [Op.gte]: accessLevel
-   *           }
-   *         }
-   *       }
-   *     }
-   *   },
-   *   sequelize,
-   * })
-   * ```
-   * Now, since you defined a default scope, every time you do Model.find, the default scope is appended to
-   * your query. Here's a couple of examples:
-   * ```js
-   * Model.findAll() // WHERE username = 'dan'
-   * Model.findAll({ where: { age: { gt: 12 } } }) // WHERE age > 12 AND username = 'dan'
-   * ```
-   *
-   * To invoke scope functions you can do:
-   * ```js
-   * Model.scope({ method: ['complexFunction' 'dan@sequelize.com', 42]}).findAll()
-   * // WHERE email like 'dan@sequelize.com%' AND access_level >= 42
-   * ```
-   *
-   * @returns Model A reference to the model, with the scope(s) applied. Calling scope again on the returned
-   *  model will clear the previous scope.
-   */
-  public static scope<M extends Model>(
-    this: ModelStatic<M>,
-    options?: string | ScopeOptions | readonly (string | ScopeOptions)[] | WhereAttributeHash<M>
-  ): ModelCtor<M>;
-
-  /**
-   * Add a new scope to the model
-   *
-   * This is especially useful for adding scopes with includes, when the model you want to
-   * include is not available at the time this model is defined. By default this will throw an
-   * error if a scope with that name already exists. Pass `override: true` in the options
-   * object to silence this error.
-   */
-  public static addScope<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    scope: FindOptions<Attributes<M>>,
-    options?: AddScopeOptions
-  ): void;
-  public static addScope<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    scope: (...args: readonly any[]) => FindOptions<Attributes<M>>,
-    options?: AddScopeOptions
-  ): void;
-
-  /**
-   * Search for multiple instances.
-   *
-   * __Simple search using AND and =__
-   * ```js
-   * Model.findAll({
-   *   where: {
-   *     attr1: 42,
-   *     attr2: 'cake'
-   *   }
-   * })
-   * ```
-   * ```sql
-   * WHERE attr1 = 42 AND attr2 = 'cake'
-   * ```
-   *
-   * __Using greater than, less than etc.__
-   * ```js
-   *
-   * Model.findAll({
-   *   where: {
-   *     attr1: {
-   *       gt: 50
-   *     },
-   *     attr2: {
-   *       lte: 45
-   *     },
-   *     attr3: {
-   *       in: [1,2,3]
-   *     },
-   *     attr4: {
-   *       ne: 5
-   *     }
-   *   }
-   * })
-   * ```
-   * ```sql
-   * WHERE attr1 > 50 AND attr2 <= 45 AND attr3 IN (1,2,3) AND attr4 != 5
-   * ```
-   * Possible options are: `[Op.ne], [Op.in], [Op.not], [Op.notIn], [Op.gte], [Op.gt], [Op.lte], [Op.lt], [Op.like], [Op.ilike]/[Op.iLike], [Op.notLike],
-   * [Op.notILike], '..'/[Op.between], '!..'/[Op.notBetween], '&&'/[Op.overlap], '@>'/[Op.contains], '<@'/[Op.contained]`
-   *
-   * __Queries using OR__
-   * ```js
-   * Model.findAll({
-   *   where: Sequelize.and(
-   *     { name: 'a project' },
-   *     Sequelize.or(
-   *       { id: [1,2,3] },
-   *       { id: { gt: 10 } }
-   *     )
-   *   )
-   * })
-   * ```
-   * ```sql
-   * WHERE name = 'a project' AND (id` IN (1,2,3) OR id > 10)
-   * ```
-   *
-   * The success listener is called with an array of instances if the query succeeds.
-   *
-   * @see {Sequelize#query}
-   */
-  public static findAll<M extends Model>(
-    this: ModelStatic<M>,
-    options?: FindOptions<Attributes<M>>): Promise<M[]>;
-
-  /**
-   * Search for a single instance by its primary key. This applies LIMIT 1, so the listener will
-   * always be called with a single instance.
-   */
-  public static findByPk<M extends Model>(
-    this: ModelStatic<M>,
-    identifier: Identifier,
-    options: Omit<NonNullFindOptions<Attributes<M>>, 'where'>
-  ): Promise<M>;
-  public static findByPk<M extends Model>(
-    this: ModelStatic<M>,
-    identifier?: Identifier,
-    options?: Omit<FindOptions<Attributes<M>>, 'where'>
-  ): Promise<M | null>;
-
-  /**
-   * Search for a single instance. Returns the first instance found, or null if none can be found.
-   */
-  public static findOne<M extends Model>(
-    this: ModelStatic<M>,
-    options: NonNullFindOptions<Attributes<M>>
-  ): Promise<M>;
-  public static findOne<M extends Model>(
-    this: ModelStatic<M>,
-    options?: FindOptions<Attributes<M>>
-  ): Promise<M | null>;
-
-  /**
-   * Run an aggregation method on the specified field
-   *
-   * @param field The field to aggregate over. Can be a field name or *
-   * @param aggregateFunction The function to use for aggregation, e.g. sum, max etc.
-   * @param options Query options. See sequelize.query for full options
-   * @returns Returns the aggregate result cast to `options.dataType`, unless `options.plain` is false, in
-   *     which case the complete data result is returned.
-   */
-  public static aggregate<T, M extends Model>(
-    this: ModelStatic<M>,
-    field: keyof Attributes<M> | '*',
-    aggregateFunction: string,
-    options?: AggregateOptions<T, Attributes<M>>
-  ): Promise<T>;
-
-  /**
-   * Count number of records if group by is used
-   *
-   * @returns Returns count for each group and the projected attributes.
-   */
-  public static count<M extends Model>(
-    this: ModelStatic<M>,
-    options: CountWithOptions<Attributes<M>>
-  ): Promise<GroupedCountResultItem[]>;
-
-  /**
-   * Count the number of records matching the provided where clause.
-   *
-   * If you provide an `include` option, the number of matching associations will be counted instead.
-   *
-   * @returns Returns count for each group and the projected attributes.
-   */
-  public static count<M extends Model>(
-    this: ModelStatic<M>,
-    options?: Omit<CountOptions<Attributes<M>>, 'group'>
-  ): Promise<number>;
-
-  /**
-   * Find all the rows matching your query, within a specified offset / limit, and get the total number of
-   * rows matching your query. This is very useful for paging
-   *
-   * ```js
-   * Model.findAndCountAll({
-   *   where: ...,
-   *   limit: 12,
-   *   offset: 12
-   * }).then(result => {
-   *   ...
-   * })
-   * ```
-   * In the above example, `result.rows` will contain rows 13 through 24, while `result.count` will return
-   * the
-   * total number of rows that matched your query.
-   *
-   * When you add includes, only those which are required (either because they have a where clause, or
-   * because
-   * `required` is explicitly set to true on the include) will be added to the count part.
-   *
-   * Suppose you want to find all users who have a profile attached:
-   * ```js
-   * User.findAndCountAll({
-   *   include: [
-   *      { model: Profile, required: true}
-   *   ],
-   *   limit: 3
-   * });
-   * ```
-   * Because the include for `Profile` has `required` set it will result in an inner join, and only the users
-   * who have a profile will be counted. If we remove `required` from the include, both users with and
-   * without
-   * profiles will be counted
-   *
-   * This function also support grouping, when `group` is provided, the count will be an array of objects
-   * containing the count for each group and the projected attributes.
-   * ```js
-   * User.findAndCountAll({
-   *   group: 'type'
-   * });
-   * ```
-   */
-  public static findAndCountAll<M extends Model>(
-    this: ModelStatic<M>,
-    options?: Omit<FindAndCountOptions<Attributes<M>>, 'group'>
-  ): Promise<{ rows: M[]; count: number }>;
-  public static findAndCountAll<M extends Model>(
-    this: ModelStatic<M>,
-    options: SetRequired<FindAndCountOptions<Attributes<M>>, 'group'>
-  ): Promise<{ rows: M[]; count: GroupedCountResultItem[] }>;
-
-  /**
-   * Find the maximum value of field
-   */
-  public static max<T extends DataType | unknown, M extends Model>(
-    this: ModelStatic<M>,
-    field: keyof Attributes<M>,
-    options?: AggregateOptions<T, Attributes<M>>
-  ): Promise<T>;
-
-  /**
-   * Find the minimum value of field
-   */
-  public static min<T extends DataType | unknown, M extends Model>(
-    this: ModelStatic<M>,
-    field: keyof Attributes<M>,
-    options?: AggregateOptions<T, Attributes<M>>
-  ): Promise<T>;
-
-  /**
-   * Find the sum of field
-   */
-  public static sum<T extends DataType | unknown, M extends Model>(
-    this: ModelStatic<M>,
-    field: keyof Attributes<M>,
-    options?: AggregateOptions<T, Attributes<M>>
-  ): Promise<number>;
-
-  /**
-   * Builds a new model instance. Values is an object of key value pairs, must be defined but can be empty.
-   */
-  public static build<M extends Model>(
-    this: ModelStatic<M>,
-    record?: CreationAttributes<M>,
-    options?: BuildOptions
-  ): M;
-
-  /**
-   * Undocumented bulkBuild
-   */
-  public static bulkBuild<M extends Model>(
-    this: ModelStatic<M>,
-    records: ReadonlyArray<CreationAttributes<M>>,
-    options?: BuildOptions
-  ): M[];
-
-  /**
-   * Builds a new model instance and calls save on it.
-   */
-  public static create<
-    M extends Model,
-    O extends CreateOptions<Attributes<M>> = CreateOptions<Attributes<M>>
-  >(
-    this: ModelStatic<M>,
-    values?: CreationAttributes<M>,
-    options?: O
-  ): Promise<O extends { returning: false } | { ignoreDuplicates: true } ? void : M>;
-
-  /**
-   * Find a row that matches the query, or build (but don't save) the row if none is found.
-   * The successful result of the promise will be (instance, initialized) - Make sure to use `.then(([...]))`
-   */
-  public static findOrBuild<M extends Model>(
-    this: ModelStatic<M>,
-    options: FindOrBuildOptions<
-      Attributes<M>,
-      CreationAttributes<M>
-    >
-  ): Promise<[M, boolean]>;
-
-  /**
-   * Find a row that matches the query, or build and save the row if none is found
-   * The successful result of the promise will be (instance, created) - Make sure to use `.then(([...]))`
-   *
-   * If no transaction is passed in the `options` object, a new transaction will be created internally, to
-   * prevent the race condition where a matching row is created by another connection after the find but
-   * before the insert call. However, it is not always possible to handle this case in SQLite, specifically
-   * if one transaction inserts and another tries to select before the first one has comitted. In this case,
-   * an instance of sequelize.TimeoutError will be thrown instead. If a transaction is created, a savepoint
-   * will be created instead, and any unique constraint violation will be handled internally.
-   */
-  public static findOrCreate<M extends Model>(
-    this: ModelStatic<M>,
-    options: FindOrCreateOptions<Attributes<M>, CreationAttributes<M>>
-  ): Promise<[M, boolean]>;
-
-  /**
-   * A more performant findOrCreate that will not work under a transaction (at least not in postgres)
-   * Will execute a find call, if empty then attempt to create, if unique constraint then attempt to find again
-   */
-  public static findCreateFind<M extends Model>(
-    this: ModelStatic<M>,
-    options: FindOrCreateOptions<Attributes<M>, CreationAttributes<M>>
-  ): Promise<[M, boolean]>;
-
-  /**
-   * Insert or update a single row. An update will be executed if a row which matches the supplied values on
-   * either the primary key or a unique key is found. Note that the unique index must be defined in your
-   * sequelize model and not just in the table. Otherwise you may experience a unique constraint violation,
-   * because sequelize fails to identify the row that should be updated.
-   *
-   * **Implementation details:**
-   *
-   * * MySQL - Implemented as a single query `INSERT values ON DUPLICATE KEY UPDATE values`
-   * * PostgreSQL - Implemented as a temporary function with exception handling: INSERT EXCEPTION WHEN
-   *   unique_constraint UPDATE
-   * * SQLite - Implemented as two queries `INSERT; UPDATE`. This means that the update is executed
-   * regardless
-   *   of whether the row already existed or not
-   *
-   * **Note** that SQLite returns null for created, no matter if the row was created or updated. This is
-   * because SQLite always runs INSERT OR IGNORE + UPDATE, in a single query, so there is no way to know
-   * whether the row was inserted or not.
-   */
-  public static upsert<M extends Model>(
-    this: ModelStatic<M>,
-    values: CreationAttributes<M>,
-    options?: UpsertOptions<Attributes<M>>
-  ): Promise<[M, boolean | null]>;
-
-  /**
-   * Create and insert multiple instances in bulk.
-   *
-   * The success handler is passed an array of instances, but please notice that these may not completely
-   * represent the state of the rows in the DB. This is because MySQL and SQLite do not make it easy to
-   * obtain
-   * back automatically generated IDs and other default values in a way that can be mapped to multiple
-   * records. To obtain Instances for the newly created values, you will need to query for them again.
-   *
-   * @param records List of objects (key/value pairs) to create instances from
-   */
-  public static bulkCreate<M extends Model>(
-    this: ModelStatic<M>,
-    records: ReadonlyArray<CreationAttributes<M>>,
-    options?: BulkCreateOptions<Attributes<M>>
-  ): Promise<M[]>;
-
-  /**
-   * Truncate all instances of the model. This is a convenient method for Model.destroy({ truncate: true }).
-   */
-  public static truncate<M extends Model>(
-    this: ModelStatic<M>,
-    options?: TruncateOptions<Attributes<M>>
-  ): Promise<void>;
-
-  /**
-   * Delete multiple instances, or set their deletedAt timestamp to the current time if `paranoid` is enabled.
-   *
-   * @returns Promise<number> The number of destroyed rows
-   */
-  public static destroy<M extends Model>(
-    this: ModelStatic<M>,
-    options?: DestroyOptions<Attributes<M>>
-  ): Promise<number>;
-
-  /**
-   * Restore multiple instances if `paranoid` is enabled.
-   */
-  public static restore<M extends Model>(
-    this: ModelStatic<M>,
-    options?: RestoreOptions<Attributes<M>>
-  ): Promise<void>;
-
-  /**
-   * Update multiple instances that match the where options. The promise returns an array with one or two
-   * elements. The first element is always the number of affected rows, while the second element is the actual
-   * affected rows (only supported in postgres and mssql with `options.returning` true.)
-   */
-  public static update<M extends Model>(
-    this: ModelStatic<M>,
-    values: {
-        [key in keyof Attributes<M>]?: Attributes<M>[key] | Fn | Col | Literal;
-    },
-    options: Omit<UpdateOptions<Attributes<M>>, 'returning'>
-      & { returning: Exclude<UpdateOptions<Attributes<M>>['returning'], undefined | false> }
-  ): Promise<[affectedCount: number, affectedRows: M[]]>;
-
-  /**
-   * Update multiple instances that match the where options. The promise returns an array with one or two
-   * elements. The first element is always the number of affected rows, while the second element is the actual
-   * affected rows (only supported in postgres and mssql with `options.returning` true.)
-   */
-   public static update<M extends Model>(
-    this: ModelStatic<M>,
-    values: {
-        [key in keyof Attributes<M>]?: Attributes<M>[key] | Fn | Col | Literal;
-    },
-    options: UpdateOptions<Attributes<M>>
-  ): Promise<[affectedCount: number]>;
-
-  /**
-   * Increments the value of one or more attributes.
-   *
-   * The increment is done using a `SET column = column + X WHERE foo = 'bar'` query.
-   *
-   * @example <caption>increment number by 1</caption>
-   * ```javascript
-   * Model.increment('number', { where: { foo: 'bar' });
-   * ```
-   *
-   * @example <caption>increment number and count by 2</caption>
-   * ```javascript
-   * Model.increment(['number', 'count'], { by: 2, where: { foo: 'bar' } });
-   * ```
-   *
-   * @example <caption>increment answer by 42, and decrement tries by 1</caption>
-   * ```javascript
-   * // `by` cannot be used, as each attribute specifies its own value
-   * Model.increment({ answer: 42, tries: -1}, { where: { foo: 'bar' } });
-   * ```
-   *
-   * @param fields If a string is provided, that column is incremented by the
-   *   value of `by` given in options. If an array is provided, the same is true for each column.
-   *   If an object is provided, each key is incremented by the corresponding value, `by` is ignored.
-   *
-   * @returns an array of affected rows or with affected count if `options.returning` is true, whenever supported by dialect
-   */
-  static increment<M extends Model>(
-    this: ModelStatic<M>,
-    fields: AllowReadonlyArray<keyof Attributes<M>>,
-    options: IncrementDecrementOptionsWithBy<Attributes<M>>
-  ): Promise<[affectedRows: M[], affectedCount?: number]>;
-  static increment<M extends Model>(
-    this: ModelStatic<M>,
-    fields: { [key in keyof Attributes<M>]?: number },
-    options: IncrementDecrementOptions<Attributes<M>>
-  ): Promise<[affectedRows: M[], affectedCount?: number]>;
-
-  /**
-   * Decrements the value of one or more attributes.
-   *
-   * Works like {@link Model.increment}
-   *
-   * @param fields If a string is provided, that column is incremented by the
-   *   value of `by` given in options. If an array is provided, the same is true for each column.
-   *   If an object is provided, each key is incremented by the corresponding value, `by` is ignored.
-   *
-   * @returns an array of affected rows or with affected count if `options.returning` is true, whenever supported by dialect
-   *
-   * @since 4.36.0
-   */
-  static decrement<M extends Model>(
-    this: ModelStatic<M>,
-    fields: AllowReadonlyArray<keyof Attributes<M>>,
-    options: IncrementDecrementOptionsWithBy<Attributes<M>>
-  ): Promise<[affectedRows: M[], affectedCount?: number]>;
-  static decrement<M extends Model>(
-    this: ModelStatic<M>,
-    fields: { [key in keyof Attributes<M>]?: number },
-    options: IncrementDecrementOptions<Attributes<M>>
-  ): Promise<[affectedRows: M[], affectedCount?: number]>;
-
-  /**
-   * Run a describe query on the table. The result will be return to the listener as a hash of attributes and
-   * their types.
-   */
-  public static describe(): Promise<object>;
-
-  /**
-   * Unscope the model
-   */
-  public static unscoped<M extends ModelType>(this: M): M;
-
-  /**
-   * A hook that is run before validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeValidate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: ValidationOptions) => HookReturn
-  ): void;
-  public static beforeValidate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: ValidationOptions) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterValidate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: ValidationOptions) => HookReturn
-  ): void;
-  public static afterValidate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: ValidationOptions) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public static beforeCreate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: CreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeCreate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: CreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public static afterCreate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: CreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterCreate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: CreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: InstanceDestroyOptions) => HookReturn
-  ): void;
-  public static beforeDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: InstanceDestroyOptions) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: InstanceDestroyOptions) => HookReturn
-  ): void;
-  public static afterDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: InstanceDestroyOptions) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before creating or updating a single instance, It proxies `beforeCreate` and `beforeUpdate`
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeSave<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>> | SaveOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeSave<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>> | SaveOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after creating or updating a single instance, It proxies `afterCreate` and `afterUpdate`
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterSave<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>> | SaveOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterSave<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instance: M, options: UpdateOptions<Attributes<M>> | SaveOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public static beforeBulkCreate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instances: M[], options: BulkCreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeBulkCreate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instances: M[], options: BulkCreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public static afterBulkCreate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instances: readonly M[], options: BulkCreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterBulkCreate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instances: readonly M[], options: BulkCreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeBulkDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: BulkCreateOptions<Attributes<M>>) => HookReturn): void;
-  public static beforeBulkDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: BulkCreateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterBulkDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: DestroyOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterBulkDestroy<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: DestroyOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeBulkUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeBulkUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterBulkUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterBulkUpdate<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: UpdateOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFind<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeFind<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before a count query
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeCount<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: CountOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeCount<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: CountOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before a find (select) query, after any { include: {all: ...} } options are expanded
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFindAfterExpandIncludeAll<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeFindAfterExpandIncludeAll<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before a find (select) query, after all option parsing is complete
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFindAfterOptions<M extends Model>(
-    this: ModelStatic<M>,
-    name: string, fn: (options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static beforeFindAfterOptions<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (options: FindOptions<Attributes<M>>) => void
-  ): HookReturn;
-
-  /**
-   * A hook that is run after a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with instance(s), options
-   */
-  public static afterFind<M extends Model>(
-    this: ModelStatic<M>,
-    name: string,
-    fn: (instancesOrInstance: readonly M[] | M | null, options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-  public static afterFind<M extends Model>(
-    this: ModelStatic<M>,
-    fn: (instancesOrInstance: readonly M[] | M | null, options: FindOptions<Attributes<M>>) => HookReturn
-  ): void;
-
-  /**
-   * A hook that is run before sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public static beforeBulkSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static beforeBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public static afterBulkSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static afterBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run before Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public static beforeSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static beforeSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public static afterSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static afterSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * Creates an association between this (the source) and the provided target. The foreign key is added
-   * on the target.
-   *
-   * Example: `User.hasOne(Profile)`. This will add userId to the profile table.
-   *
-   * @param target The model that will be associated with hasOne relationship
-   * @param options Options for the association
-   */
-  public static hasOne<M extends Model, T extends Model>(
-    this: ModelStatic<M>, target: ModelStatic<T>, options?: HasOneOptions
-  ): HasOne<M, T>;
-
-  /**
-   * Creates an association between this (the source) and the provided target. The foreign key is added on the
-   * source.
-   *
-   * Example: `Profile.belongsTo(User)`. This will add userId to the profile table.
-   *
-   * @param target The model that will be associated with hasOne relationship
-   * @param options Options for the association
-   */
-  public static belongsTo<M extends Model, T extends Model>(
-    this: ModelStatic<M>, target: ModelStatic<T>, options?: BelongsToOptions
-  ): BelongsTo<M, T>;
-
-  /**
-   * Create an association that is either 1:m or n:m.
-   *
-   * ```js
-   * // Create a 1:m association between user and project
-   * User.hasMany(Project)
-   * ```
-   * ```js
-   * // Create a n:m association between user and project
-   * User.hasMany(Project)
-   * Project.hasMany(User)
-   * ```
-   * By default, the name of the join table will be source+target, so in this case projectsusers. This can be
-   * overridden by providing either a string or a Model as `through` in the options. If you use a through
-   * model with custom attributes, these attributes can be set when adding / setting new associations in two
-   * ways. Consider users and projects from before with a join table that stores whether the project has been
-   * started yet:
-   * ```js
-   * class UserProjects extends Model {}
-   * UserProjects.init({
-   *   started: Sequelize.BOOLEAN
-   * }, { sequelize })
-   * User.hasMany(Project, { through: UserProjects })
-   * Project.hasMany(User, { through: UserProjects })
-   * ```
-   * ```js
-   * jan.addProject(homework, { started: false }) // The homework project is not started yet
-   * jan.setProjects([makedinner, doshopping], { started: true}) // Both shopping and dinner have been
-   * started
-   * ```
-   *
-   * If you want to set several target instances, but with different attributes you have to set the
-   * attributes on the instance, using a property with the name of the through model:
-   *
-   * ```js
-   * p1.userprojects {
-   *   started: true
-   * }
-   * user.setProjects([p1, p2], {started: false}) // The default value is false, but p1 overrides that.
-   * ```
-   *
-   * Similarily, when fetching through a join table with custom attributes, these attributes will be
-   * available as an object with the name of the through model.
-   * ```js
-   * user.getProjects().then(projects => {
-   *   const p1 = projects[0]
-   *   p1.userprojects.started // Is this project started yet?
-   * })
-   * ```
-   *
-   * @param target The model that will be associated with hasOne relationship
-   * @param options Options for the association
-   */
-  public static hasMany<M extends Model, T extends Model>(
-    this: ModelStatic<M>, target: ModelStatic<T>, options?: HasManyOptions
-  ): HasMany<M, T>;
-
-  /**
-   * Create an N:M association with a join table
-   *
-   * ```js
-   * User.belongsToMany(Project)
-   * Project.belongsToMany(User)
-   * ```
-   * By default, the name of the join table will be source+target, so in this case projectsusers. This can be
-   * overridden by providing either a string or a Model as `through` in the options.
-   *
-   * If you use a through model with custom attributes, these attributes can be set when adding / setting new
-   * associations in two ways. Consider users and projects from before with a join table that stores whether
-   * the project has been started yet:
-   * ```js
-   * class UserProjects extends Model {}
-   * UserProjects.init({
-   *   started: Sequelize.BOOLEAN
-   * }, { sequelize });
-   * User.belongsToMany(Project, { through: UserProjects })
-   * Project.belongsToMany(User, { through: UserProjects })
-   * ```
-   * ```js
-   * jan.addProject(homework, { started: false }) // The homework project is not started yet
-   * jan.setProjects([makedinner, doshopping], { started: true}) // Both shopping and dinner has been started
-   * ```
-   *
-   * If you want to set several target instances, but with different attributes you have to set the
-   * attributes on the instance, using a property with the name of the through model:
-   *
-   * ```js
-   * p1.userprojects {
-   *   started: true
-   * }
-   * user.setProjects([p1, p2], {started: false}) // The default value is false, but p1 overrides that.
-   * ```
-   *
-   * Similarily, when fetching through a join table with custom attributes, these attributes will be
-   * available as an object with the name of the through model.
-   * ```js
-   * user.getProjects().then(projects => {
-   *   const p1 = projects[0]
-   *   p1.userprojects.started // Is this project started yet?
-   * })
-   * ```
-   *
-   * @param target The model that will be associated with hasOne relationship
-   * @param options Options for the association
-   *
-   */
-  public static belongsToMany<M extends Model, T extends Model>(
-    this: ModelStatic<M>, target: ModelStatic<T>, options: BelongsToManyOptions
-  ): BelongsToMany<M, T>;
-
-  /**
-   * Returns true if this instance has not yet been persisted to the database
-   */
-  public isNewRecord: boolean;
-
-  /**
-   * A reference to the sequelize instance
-   */
-  public sequelize: Sequelize;
-
-  /**
-   * Builds a new model instance.
-   *
-   * @param values an object of key value pairs
-   */
-  constructor(values?: MakeNullishOptional<TCreationAttributes>, options?: BuildOptions);
-
-  /**
-   * Get an object representing the query for this instance, use with `options.where`
-   */
-  public where(): object;
-
-  /**
-   * Get the value of the underlying data value
-   */
-  public getDataValue<K extends keyof TModelAttributes>(key: K): TModelAttributes[K];
-
-  /**
-   * Update the underlying data value
-   */
-  public setDataValue<K extends keyof TModelAttributes>(key: K, value: TModelAttributes[K]): void;
-
-  /**
-   * If no key is given, returns all values of the instance, also invoking virtual getters.
-   *
-   * If key is given and a field or virtual getter is present for the key it will call that getter - else it
-   * will return the value for key.
-   *
-   * @param options.plain If set to true, included instances will be returned as plain objects
-   */
-  public get(options?: { plain?: boolean; clone?: boolean }): TModelAttributes;
-  public get<K extends keyof this>(key: K, options?: { plain?: boolean; clone?: boolean }): this[K];
-  public get(key: string, options?: { plain?: boolean; clone?: boolean }): unknown;
-
-  /**
-   * Set is used to update values on the instance (the sequelize representation of the instance that is,
-   * remember that nothing will be persisted before you actually call `save`). In its most basic form `set`
-   * will update a value stored in the underlying `dataValues` object. However, if a custom setter function
-   * is defined for the key, that function will be called instead. To bypass the setter, you can pass `raw:
-   * true` in the options object.
-   *
-   * If set is called with an object, it will loop over the object, and call set recursively for each key,
-   * value pair. If you set raw to true, the underlying dataValues will either be set directly to the object
-   * passed, or used to extend dataValues, if dataValues already contain values.
-   *
-   * When set is called, the previous value of the field is stored and sets a changed flag(see `changed`).
-   *
-   * Set can also be used to build instances for associations, if you have values for those.
-   * When using set with associations you need to make sure the property key matches the alias of the
-   * association while also making sure that the proper include options have been set (from .build() or
-   * .findOne())
-   *
-   * If called with a dot.seperated key on a JSON/JSONB attribute it will set the value nested and flag the
-   * entire object as changed.
-   *
-   * @param options.raw If set to true, field and virtual setters will be ignored
-   * @param options.reset Clear all previously set data values
-   */
-  public set<K extends keyof TModelAttributes>(key: K, value: TModelAttributes[K], options?: SetOptions): this;
-  public set(keys: Partial<TModelAttributes>, options?: SetOptions): this;
-  public setAttributes<K extends keyof TModelAttributes>(key: K, value: TModelAttributes[K], options?: SetOptions): this;
-  public setAttributes(keys: Partial<TModelAttributes>, options?: SetOptions): this;
-
-  /**
-   * If changed is called with a string it will return a boolean indicating whether the value of that key in
-   * `dataValues` is different from the value in `_previousDataValues`.
-   *
-   * If changed is called without an argument, it will return an array of keys that have changed.
-   *
-   * If changed is called with two arguments, it will set the property to `dirty`.
-   *
-   * If changed is called without an argument and no keys have changed, it will return `false`.
-   */
-  public changed<K extends keyof this>(key: K): boolean;
-  public changed<K extends keyof this>(key: K, dirty: boolean): void;
-  public changed(): false | string[];
-
-  /**
-   * Returns the previous value for key from `_previousDataValues`.
-   */
-  public previous(): Partial<TModelAttributes>;
-  public previous<K extends keyof TModelAttributes>(key: K): TModelAttributes[K] | undefined;
-
-  /**
-   * Validates this instance, and if the validation passes, persists it to the database.
-   *
-   * Returns a Promise that resolves to the saved instance (or rejects with a `Sequelize.ValidationError`, which will have a property for each of the fields for which the validation failed, with the error message for that field).
-   *
-   * This method is optimized to perform an UPDATE only into the fields that changed. If nothing has changed, no SQL query will be performed.
-   *
-   * This method is not aware of eager loaded associations. In other words, if some other model instance (child) was eager loaded with this instance (parent), and you change something in the child, calling `save()` will simply ignore the change that happened on the child.
-   */
-  public save(options?: SaveOptions<TModelAttributes>): Promise<this>;
-
-  /**
-   * Refresh the current instance in-place, i.e. update the object with current data from the DB and return
-   * the same object. This is different from doing a `find(Instance.id)`, because that would create and
-   * return a new instance. With this method, all references to the Instance are updated with the new data
-   * and no new objects are created.
-   */
-  public reload(options?: FindOptions<TModelAttributes>): Promise<this>;
-
-  /**
-   * Validate the attribute of this instance according to validation rules set in the model definition.
-   *
-   * Emits null if and only if validation successful; otherwise an Error instance containing
-   * { field name : [error msgs] } entries.
-   *
-   * @param options.skip An array of strings. All properties that are in this array will not be validated
-   */
-  public validate(options?: ValidationOptions): Promise<void>;
-
-  /**
-   * This is the same as calling `set` and then calling `save`.
-   */
-  public update<K extends keyof TModelAttributes>(key: K, value: TModelAttributes[K] | Col | Fn | Literal, options?: InstanceUpdateOptions<TModelAttributes>): Promise<this>;
-  public update(
-    keys: {
-        [key in keyof TModelAttributes]?: TModelAttributes[key] | Fn | Col | Literal;
-    },
-    options?: InstanceUpdateOptions<TModelAttributes>
-  ): Promise<this>;
-
-  /**
-   * Destroy the row corresponding to this instance. Depending on your setting for paranoid, the row will
-   * either be completely deleted, or have its deletedAt timestamp set to the current time.
-   */
-  public destroy(options?: InstanceDestroyOptions): Promise<void>;
-
-  /**
-   * Restore the row corresponding to this instance. Only available for paranoid models.
-   */
-  public restore(options?: InstanceRestoreOptions): Promise<void>;
-
-  /**
-   * Increment the value of one or more columns. This is done in the database, which means it does not use
-   * the values currently stored on the Instance. The increment is done using a
-   * ```sql
-   * SET column = column + X
-   * ```
-   * query. To get the correct value after an increment into the Instance you should do a reload.
-   *
-   * ```js
-   * instance.increment('number') // increment number by 1
-   * instance.increment(['number', 'count'], { by: 2 }) // increment number and count by 2
-   * instance.increment({ answer: 42, tries: 1}, { by: 2 }) // increment answer by 42, and tries by 1.
-   *                                                        // `by` is ignored, since each column has its own
-   *                                                        // value
-   * ```
-   *
-   * @param fields If a string is provided, that column is incremented by the value of `by` given in options.
-   *               If an array is provided, the same is true for each column.
-   *               If and object is provided, each column is incremented by the value given.
-   */
-  public increment<K extends keyof TModelAttributes>(
-    fields: K | readonly K[] | Partial<TModelAttributes>,
-    options?: IncrementDecrementOptionsWithBy<TModelAttributes>
-  ): Promise<this>;
-
-  /**
-   * Decrement the value of one or more columns. This is done in the database, which means it does not use
-   * the values currently stored on the Instance. The decrement is done using a
-   * ```sql
-   * SET column = column - X
-   * ```
-   * query. To get the correct value after an decrement into the Instance you should do a reload.
-   *
-   * ```js
-   * instance.decrement('number') // decrement number by 1
-   * instance.decrement(['number', 'count'], { by: 2 }) // decrement number and count by 2
-   * instance.decrement({ answer: 42, tries: 1}, { by: 2 }) // decrement answer by 42, and tries by 1.
-   *                                                        // `by` is ignored, since each column has its own
-   *                                                        // value
-   * ```
-   *
-   * @param fields If a string is provided, that column is decremented by the value of `by` given in options.
-   *               If an array is provided, the same is true for each column.
-   *               If and object is provided, each column is decremented by the value given
-   */
-  public decrement<K extends keyof TModelAttributes>(
-    fields: K | readonly K[] | Partial<TModelAttributes>,
-    options?: IncrementDecrementOptionsWithBy<TModelAttributes>
-  ): Promise<this>;
-
-  /**
-   * Check whether all values of this and `other` Instance are the same
-   */
-  public equals(other: this): boolean;
-
-  /**
-   * Check if this is equal to one of `others` by calling equals
-   */
-  public equalsOneOf(others: readonly this[]): boolean;
-
-  /**
-   * Convert the instance to a JSON representation. Proxies to calling `get` with no keys. This means get all
-   * values gotten from the DB, and apply all custom getters.
-   */
-  public toJSON<T extends TModelAttributes>(): T;
-  public toJSON(): object;
-
-  /**
-   * Helper method to determine if a instance is "soft deleted". This is
-   * particularly useful if the implementer renamed the deletedAt attribute to
-   * something different. This method requires paranoid to be enabled.
-   *
-   * Throws an error if paranoid is not enabled.
-   */
-  public isSoftDeleted(): boolean;
-}
-
-/** @deprecated use ModelStatic */
-export type ModelType<TModelAttributes extends {} = any, TCreationAttributes extends {} = TModelAttributes> = new () => Model<TModelAttributes, TCreationAttributes>;
-
-type NonConstructorKeys<T> = ({[P in keyof T]: T[P] extends new () => any ? never : P })[keyof T];
-type NonConstructor<T> = Pick<T, NonConstructorKeys<T>>;
-
-/** @deprecated use ModelStatic */
-export type ModelCtor<M extends Model> = ModelStatic<M>;
-
-export type ModelDefined<S extends {}, T extends {}> = ModelStatic<Model<S, T>>;
-
-// remove the existing constructor that tries to return `Model<{},{}>` which would be incompatible with models that have typing defined & replace with proper constructor.
-export type ModelStatic<M extends Model> = NonConstructor<typeof Model> & { new(): M };
-
-export default Model;
-
-/**
- * Type will be true is T is branded with Brand, false otherwise
- */
-// How this works:
-// - `A extends B` will be true if A has *at least* all the properties of B
-// - If we do `A extends Omit<A, Checked>` - the result will only be true if A did not have Checked to begin with
-// - So if we want to check if T is branded, we remove the brand, and check if they list of keys is still the same.
-// we exclude Null & Undefined so "field: Brand<value> | null" is still detected as branded
-// this is important because "Brand<value | null>" are transformed into "Brand<value> | null" to not break null & undefined
-type IsBranded<T, Brand extends symbol> = keyof NonNullable<T> extends keyof Omit<NonNullable<T>, Brand>
-  ? false
-  : true;
-
-type BrandedKeysOf<T, Brand extends symbol> = {
-  [P in keyof T]-?: IsBranded<T[P], Brand> extends true ? P : never
-}[keyof T];
-
-/**
- * Dummy Symbol used as branding by {@link NonAttribute}.
- *
- * Do not export, Do not use.
- */
-declare const NonAttributeBrand: unique symbol;
-
-/**
- * This is a Branded Type.
- * You can use it to tag fields from your class that are NOT attributes.
- * They will be ignored by {@link InferAttributes} and {@link InferCreationAttributes}
- */
-export type NonAttribute<T> =
-  // we don't brand null & undefined as they can't have properties.
-  // This means `NonAttribute<null>` will not work, but who makes an attribute that only accepts null?
-  // Note that `NonAttribute<string | null>` does work!
-  T extends null | undefined ? T
-  : (T & { [NonAttributeBrand]?: true });
-
-/**
- * Dummy Symbol used as branding by {@link ForeignKey}.
- *
- * Do not export, Do not use.
- */
-declare const ForeignKeyBrand: unique symbol;
-
-/**
- * This is a Branded Type.
- * You can use it to tag fields from your class that are foreign keys.
- * They will become optional in {@link Model.init} (as foreign keys are added by association methods, like {@link Model.hasMany}.
- */
-export type ForeignKey<T> =
-  // we don't brand null & undefined as they can't have properties.
-  // This means `ForeignKey<null>` will not work, but who makes an attribute that only accepts null?
-  // Note that `ForeignKey<string | null>` does work!
-  T extends null | undefined ? T
-  : (T & { [ForeignKeyBrand]?: true });
-
-/**
- * Option bag for {@link InferAttributes}.
- *
- * - omit: properties to not treat as Attributes.
- */
-type InferAttributesOptions<Excluded, > = { omit?: Excluded };
-
-/**
- * Utility type to extract Attributes of a given Model class.
- *
- * It returns all instance properties defined in the Model, except:
- * - those inherited from Model (intermediate inheritance works),
- * - the ones whose type is a function,
- * - the ones manually excluded using the second parameter.
- * - the ones branded using {@link NonAttribute}
- *
- * It cannot detect whether something is a getter or not, you should use the `Excluded`
- * parameter to exclude getter & setters from the attribute list.
- *
- * @example
- * // listed attributes will be 'id' & 'firstName'.
- * class User extends Model<InferAttributes<User>> {
- *   id: number;
- *   firstName: string;
- * }
- *
- * @example
- * // listed attributes will be 'id' & 'firstName'.
- * // we're excluding the `name` getter & `projects` attribute using the `omit` option.
- * class User extends Model<InferAttributes<User, { omit: 'name' | 'projects' }>> {
- *   id: number;
- *   firstName: string;
- *
- *   // this is a getter, not an attribute. It should not be listed in attributes.
- *   get name(): string { return this.firstName; }
- *   // this is an association, it should not be listed in attributes
- *   projects?: Project[];
- * }
- *
- * @example
- * // listed attributes will be 'id' & 'firstName'.
- * // we're excluding the `name` getter & `test` attribute using the `NonAttribute` branded type.
- * class User extends Model<InferAttributes<User>> {
- *   id: number;
- *   firstName: string;
- *
- *   // this is a getter, not an attribute. It should not be listed in attributes.
- *   get name(): NonAttribute<string> { return this.firstName; }
- *   // this is an association, it should not be listed in attributes
- *   projects?: NonAttribute<Project[]>;
- * }
- */
-export type InferAttributes<
-  M extends Model,
-  Options extends InferAttributesOptions<keyof M | never | ''> = { omit: never }
-  > = {
-  [Key in keyof M as InternalInferAttributeKeysFromFields<M, Key, Options>]: M[Key]
-};
-
-/**
- * Dummy Symbol used as branding by {@link CreationOptional}.
- *
- * Do not export, Do not use.
- */
-declare const CreationAttributeBrand: unique symbol;
-
-/**
- * This is a Branded Type.
- * You can use it to tag attributes that can be ommited during Model Creation.
- *
- * For use with {@link InferCreationAttributes}.
- */
-export type CreationOptional<T> =
-  // we don't brand null & undefined as they can't have properties.
-  // This means `CreationOptional<null>` will not work, but who makes an attribute that only accepts null?
-  // Note that `CreationOptional<string | null>` does work!
-  T extends null | undefined ? T
-  : (T & { [CreationAttributeBrand]?: true });
-
-/**
- * Utility type to extract Creation Attributes of a given Model class.
- *
- * Works like {@link InferAttributes}, but fields that are tagged using
- *  {@link CreationOptional} will be optional.
- *
- * @example
- * class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
- *   // this attribute is optional in Model#create
- *   declare id: CreationOptional<number>;
- *
- *   // this attribute is mandatory in Model#create
- *   declare name: string;
- * }
- */
-export type InferCreationAttributes<
-  M extends Model,
-  Options extends InferAttributesOptions<keyof M | never | ''> = { omit: never }
-  > = {
-  [Key in keyof M as InternalInferAttributeKeysFromFields<M, Key, Options>]: IsBranded<M[Key], typeof CreationAttributeBrand> extends true
-    ? (M[Key] | undefined)
-    : M[Key]
-};
-
-/**
- * @private
- *
- * Internal type used by {@link InferCreationAttributes} and {@link InferAttributes} to exclude
- * attributes that are:
- * - functions
- * - branded using {@link NonAttribute}
- * - inherited from {@link Model}
- * - Excluded manually using {@link InferAttributesOptions#omit}
- */
-type InternalInferAttributeKeysFromFields<M extends Model, Key extends keyof M, Options extends InferAttributesOptions<keyof M | never | ''>> =
-  // fields inherited from Model are all excluded
-  Key extends keyof Model ? never
-  // functions are always excluded
-  : M[Key] extends AnyFunction ? never
-  // fields branded with NonAttribute are excluded
-  : IsBranded<M[Key], typeof NonAttributeBrand> extends true ? never
-  // check 'omit' option is provided & exclude those listed in it
-  : Options['omit'] extends string ? (Key extends Options['omit'] ? never : Key)
-  : Key;
-
-// in v7, we should be able to drop InferCreationAttributes and InferAttributes,
-//  resolving this confusion.
-/**
- * Returns the creation attributes of a given Model.
- *
- * This returns the Creation Attributes of a Model, it does not build them.
- * If you need to build them, use {@link InferCreationAttributes}.
- *
- * @example
- * function buildModel<M extends Model>(modelClass: ModelStatic<M>, attributes: CreationAttributes<M>) {}
- */
-export type CreationAttributes<M extends Model | Hooks> = MakeNullishOptional<M['_creationAttributes']>;
-
-/**
- * Returns the creation attributes of a given Model.
- *
- * This returns the Attributes of a Model that have already been defined, it does not build them.
- * If you need to build them, use {@link InferAttributes}.
- *
- * @example
- * function getValue<M extends Model>(modelClass: ModelStatic<M>, attribute: keyof Attributes<M>) {}
- */
-export type Attributes<M extends Model | Hooks> = M['_attributes'];
Index: ckend/node_modules/sequelize/types/operators.d.ts
===================================================================
--- backend/node_modules/sequelize/types/operators.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,480 +1,0 @@
-interface OpTypes {
-    /**
-     * Operator -|- (PG range is adjacent to operator)
-     *
-     * ```js
-     * [Op.adjacent]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * -|- [1, 2)
-     * ```
-     */
-    readonly adjacent: unique symbol;
-    /**
-     * Operator ALL
-     *
-     * ```js
-     * [Op.gt]: {
-     *  [Op.all]: literal('SELECT 1')
-     * }
-     * ```
-     * In SQL
-     * ```sql
-     * > ALL (SELECT 1)
-     * ```
-     */
-    readonly all: unique symbol;
-    /**
-     * Operator AND
-     *
-     * ```js
-     * [Op.and]: {a: 5}
-     * ```
-     * In SQL
-     * ```sql
-     * AND (a = 5)
-     * ```
-     */
-    readonly and: unique symbol;
-    /**
-     * Operator ANY ARRAY (PG only)
-     *
-     * ```js
-     * [Op.any]: [2,3]
-     * ```
-     * In SQL
-     * ```sql
-     * ANY ARRAY[2, 3]::INTEGER
-     * ```
-     *
-     * Operator LIKE ANY ARRAY (also works for iLike and notLike)
-     *
-     * ```js
-     * [Op.like]: { [Op.any]: ['cat', 'hat']}
-     * ```
-     * In SQL
-     * ```sql
-     * LIKE ANY ARRAY['cat', 'hat']
-     * ```
-     */
-    readonly any: unique symbol;
-    /**
-     * Operator BETWEEN
-     *
-     * ```js
-     * [Op.between]: [6, 10]
-     * ```
-     * In SQL
-     * ```sql
-     * BETWEEN 6 AND 10
-     * ```
-     */
-    readonly between: unique symbol;
-    /**
-     * With dialect specific column identifiers (PG in this example)
-     *
-     * ```js
-     * [Op.col]: 'user.organization_id'
-     * ```
-     * In SQL
-     * ```sql
-     * = "user"."organization_id"
-     * ```
-     */
-    readonly col: unique symbol;
-    /**
-     * Operator <@ (PG array contained by operator)
-     *
-     * ```js
-     * [Op.contained]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * <@ [1, 2)
-     * ```
-     */
-    readonly contained: unique symbol;
-    /**
-     * Operator @> (PG array contains operator)
-     *
-     * ```js
-     * [Op.contains]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * @> [1, 2)
-     * ```
-     */
-    readonly contains: unique symbol;
-    /**
-     * Operator LIKE
-     *
-     * ```js
-     * [Op.endsWith]: 'hat'
-     * ```
-     * In SQL
-     * ```sql
-     * LIKE '%hat'
-     * ```
-     */
-    readonly endsWith: unique symbol;
-    /**
-     * Operator =
-     *
-     * ```js
-     * [Op.eq]: 3
-     * ```
-     * In SQL
-     * ```sql
-     * = 3
-     * ```
-     */
-    readonly eq: unique symbol;
-    /**
-     * Operator >
-     *
-     * ```js
-     * [Op.gt]: 6
-     * ```
-     * In SQL
-     * ```sql
-     * > 6
-     * ```
-     */
-    readonly gt: unique symbol;
-    /**
-     * Operator >=
-     *
-     * ```js
-     * [Op.gte]: 6
-     * ```
-     * In SQL
-     * ```sql
-     * >= 6
-     * ```
-     */
-    readonly gte: unique symbol;
-    /**
-     * Operator ILIKE (case insensitive) (PG only)
-     *
-     * ```js
-     * [Op.iLike]: '%hat'
-     * ```
-     * In SQL
-     * ```sql
-     * ILIKE '%hat'
-     * ```
-     */
-    readonly iLike: unique symbol;
-    /**
-     * Operator IN
-     *
-     * ```js
-     * [Op.in]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * IN [1, 2]
-     * ```
-     */
-    readonly in: unique symbol;
-    /**
-     * Operator ~* (PG only)
-     *
-     * ```js
-     * [Op.iRegexp]: '^[h|a|t]'
-     * ```
-     * In SQL
-     * ```sql
-     * ~* '^[h|a|t]'
-     * ```
-     */
-    readonly iRegexp: unique symbol;
-    /**
-     * Operator IS
-     *
-     * ```js
-     * [Op.is]: null
-     * ```
-     * In SQL
-     * ```sql
-     * IS null
-     * ```
-     */
-    readonly is: unique symbol;
-    /**
-     * Operator LIKE
-     *
-     * ```js
-     * [Op.like]: '%hat'
-     * ```
-     * In SQL
-     * ```sql
-     * LIKE '%hat'
-     * ```
-     */
-    readonly like: unique symbol;
-    /**
-     * Operator <
-     *
-     * ```js
-     * [Op.lt]: 10
-     * ```
-     * In SQL
-     * ```sql
-     * < 10
-     * ```
-     */
-    readonly lt: unique symbol;
-    /**
-     * Operator <=
-     *
-     * ```js
-     * [Op.lte]: 10
-     * ```
-     * In SQL
-     * ```sql
-     * <= 10
-     * ```
-     */
-    readonly lte: unique symbol;
-    /**
-     * Operator @@
-     *
-     * ```js
-     * [Op.match]: Sequelize.fn('to_tsquery', 'fat & rat')`
-     * ```
-     * In SQL
-     * ```sql
-     * @@ to_tsquery('fat & rat')
-     * ```
-     */
-    readonly match: unique symbol;
-    /**
-     * Operator !=
-     *
-     * ```js
-     * [Op.ne]: 20
-     * ```
-     * In SQL
-     * ```sql
-     * != 20
-     * ```
-     */
-    readonly ne: unique symbol;
-    /**
-     * Operator &> (PG range does not extend to the left of operator)
-     *
-     * ```js
-     * [Op.noExtendLeft]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * &> [1, 2)
-     * ```
-     */
-    readonly noExtendLeft: unique symbol;
-    /**
-     * Operator &< (PG range does not extend to the right of operator)
-     *
-     * ```js
-     * [Op.noExtendRight]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * &< [1, 2)
-     * ```
-     */
-    readonly noExtendRight: unique symbol;
-    /**
-     * Operator NOT
-     *
-     * ```js
-     * [Op.not]: true
-     * ```
-     * In SQL
-     * ```sql
-     * IS NOT TRUE
-     * ```
-     */
-    readonly not: unique symbol;
-    /**
-     * Operator NOT BETWEEN
-     *
-     * ```js
-     * [Op.notBetween]: [11, 15]
-     * ```
-     * In SQL
-     * ```sql
-     * NOT BETWEEN 11 AND 15
-     * ```
-     */
-    readonly notBetween: unique symbol;
-    /**
-     * Operator NOT ILIKE (case insensitive) (PG only)
-     *
-     * ```js
-     * [Op.notILike]: '%hat'
-     * ```
-     * In SQL
-     * ```sql
-     * NOT ILIKE '%hat'
-     * ```
-     */
-    readonly notILike: unique symbol;
-    /**
-     * Operator NOT IN
-     *
-     * ```js
-     * [Op.notIn]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * NOT IN [1, 2]
-     * ```
-     */
-    readonly notIn: unique symbol;
-    /**
-     * Operator !~* (PG only)
-     *
-     * ```js
-     * [Op.notIRegexp]: '^[h|a|t]'
-     * ```
-     * In SQL
-     * ```sql
-     * !~* '^[h|a|t]'
-     * ```
-     */
-    readonly notIRegexp: unique symbol;
-    /**
-     * Operator NOT LIKE
-     *
-     * ```js
-     * [Op.notLike]: '%hat'
-     * ```
-     * In SQL
-     * ```sql
-     * NOT LIKE '%hat'
-     * ```
-     */
-    readonly notLike: unique symbol;
-    /**
-     * Operator NOT REGEXP (MySQL/PG only)
-     *
-     * ```js
-     * [Op.notRegexp]: '^[h|a|t]'
-     * ```
-     * In SQL
-     * ```sql
-     * NOT REGEXP/!~ '^[h|a|t]'
-     * ```
-     */
-    readonly notRegexp: unique symbol;
-    /**
-     * Operator OR
-     *
-     * ```js
-     * [Op.or]: [{a: 5}, {a: 6}]
-     * ```
-     * In SQL
-     * ```sql
-     * (a = 5 OR a = 6)
-     * ```
-     */
-    readonly or: unique symbol;
-    /**
-     * Operator && (PG array overlap operator)
-     *
-     * ```js
-     * [Op.overlap]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * && [1, 2)
-     * ```
-     */
-    readonly overlap: unique symbol;
-    /**
-     * Internal placeholder
-     *
-     * ```js
-     * [Op.placeholder]: true
-     * ```
-     */
-    readonly placeholder: unique symbol;
-    /**
-     * Operator REGEXP (MySQL/PG only)
-     *
-     * ```js
-     * [Op.regexp]: '^[h|a|t]'
-     * ```
-     * In SQL
-     * ```sql
-     * REGEXP/~ '^[h|a|t]'
-     * ```
-     */
-    readonly regexp: unique symbol;
-    /**
-     * Operator LIKE
-     *
-     * ```js
-     * [Op.startsWith]: 'hat'
-     * ```
-     * In SQL
-     * ```sql
-     * LIKE 'hat%'
-     * ```
-     */
-    readonly startsWith: unique symbol;
-    /**
-     * Operator << (PG range strictly left of operator)
-     *
-     * ```js
-     * [Op.strictLeft]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * << [1, 2)
-     * ```
-     */
-    readonly strictLeft: unique symbol;
-    /**
-     * Operator >> (PG range strictly right of operator)
-     *
-     * ```js
-     * [Op.strictRight]: [1, 2]
-     * ```
-     * In SQL
-     * ```sql
-     * >> [1, 2)
-     * ```
-     */
-    readonly strictRight: unique symbol;
-    /**
-     * Operator LIKE
-     *
-     * ```js
-     * [Op.substring]: 'hat'
-     * ```
-     * In SQL
-     * ```sql
-     * LIKE '%hat%'
-     * ```
-     */
-    readonly substring: unique symbol;
-    /**
-     * Operator VALUES
-     *
-     * ```js
-     * [Op.values]: [4, 5, 6]
-     * ```
-     * In SQL
-     * ```sql
-     * VALUES (4), (5), (6)
-     * ```
-     */
-    readonly values: unique symbol;
-}
-export declare const Op: OpTypes;
-export default Op;
Index: ckend/node_modules/sequelize/types/query-types.d.ts
===================================================================
--- backend/node_modules/sequelize/types/query-types.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-declare enum QueryTypes {
-  SELECT = 'SELECT',
-  INSERT = 'INSERT',
-  UPDATE = 'UPDATE',
-  BULKUPDATE = 'BULKUPDATE',
-  BULKDELETE = 'BULKDELETE',
-  DELETE = 'DELETE',
-  UPSERT = 'UPSERT',
-  VERSION = 'VERSION',
-  SHOWTABLES = 'SHOWTABLES',
-  SHOWINDEXES = 'SHOWINDEXES',
-  DESCRIBE = 'DESCRIBE',
-  RAW = 'RAW',
-  FOREIGNKEYS = 'FOREIGNKEYS',
-}
-
-export = QueryTypes;
Index: ckend/node_modules/sequelize/types/query.d.ts
===================================================================
--- backend/node_modules/sequelize/types/query.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-// TODO [>=7]: This is a legacy file to avoid introducing a breaking change in v6. Remove me in v7.
-
-export * from './dialects/abstract/query';
Index: ckend/node_modules/sequelize/types/sequelize.d.ts
===================================================================
--- backend/node_modules/sequelize/types/sequelize.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1565 +1,0 @@
-import type { Options as RetryAsPromisedOptions } from 'retry-as-promised';
-import { HookReturn, Hooks, SequelizeHooks } from './hooks';
-import { ValidationOptions } from './instance-validator';
-import {
-  AndOperator,
-  BulkCreateOptions,
-  CreateOptions,
-  DestroyOptions,
-  DropOptions,
-  FindOptions,
-  InstanceDestroyOptions,
-  Logging,
-  Model,
-  ModelAttributeColumnOptions,
-  ModelAttributes,
-  ModelOptions,
-  OrOperator,
-  UpdateOptions,
-  WhereOperators,
-  ModelCtor,
-  Hookable,
-  ModelType,
-  CreationAttributes,
-  Attributes,
-  ColumnReference, WhereAttributeHashValue,
-} from './model';
-import { ModelManager } from './model-manager';
-import { QueryInterface, QueryOptions, QueryOptionsWithModel, QueryOptionsWithType, ColumnsDescription } from './dialects/abstract/query-interface';
-import QueryTypes = require('./query-types');
-import { Transaction, TransactionOptions } from './transaction';
-import { Op } from './index';
-import { Cast, Col, DeepWriteable, Fn, Json, Literal, Where } from './utils';
-import { Connection, ConnectionManager, GetConnectionOptions } from './dialects/abstract/connection-manager';
-
-export type RetryOptions = RetryAsPromisedOptions;
-
-/**
- * Additional options for table altering during sync
- */
-export interface SyncAlterOptions {
-  /**
-   * Prevents any drop statements while altering a table when set to `false`
-   */
-  drop?: boolean;
-}
-
-/**
- * Sync Options
- */
-export interface SyncOptions extends Logging, Hookable {
-  /**
-   * If force is true, each DAO will do DROP TABLE IF EXISTS ..., before it tries to create its own table
-   */
-  force?: boolean;
-
-  /**
-   * If alter is true, each DAO will do ALTER TABLE ... CHANGE ...
-   * Alters tables to fit models. Provide an object for additional configuration. Not recommended for production use. If not further configured deletes data in columns that were removed or had their type changed in the model.
-   */
-  alter?: boolean | SyncAlterOptions;
-
-  /**
-   * Match a regex against the database name before syncing, a safety check for cases where force: true is
-   * used in tests but not live code
-   */
-  match?: RegExp;
-
-  /**
-   * The schema that the tables should be created in. This can be overridden for each table in sequelize.define
-   */
-  schema?: string;
-
-  /**
-   * An optional parameter to specify the schema search_path (Postgres only)
-   */
-  searchPath?: string;
-
-}
-
-export interface DefaultSetOptions { }
-
-/**
- * Connection Pool options
- */
-export interface PoolOptions {
-  /**
-   * Maximum number of connections in pool. Default is 5
-   */
-  max?: number;
-
-  /**
-   * Minimum number of connections in pool. Default is 0
-   */
-  min?: number;
-
-  /**
-   * The maximum time, in milliseconds, that a connection can be idle before being released
-   */
-  idle?: number;
-
-  /**
-   * The maximum time, in milliseconds, that pool will try to get connection before throwing error
-   */
-  acquire?: number;
-
-  /**
-   * The time interval, in milliseconds, after which sequelize-pool will remove idle connections.
-   */
-  evict?: number;
-
-  /**
-   * The number of times to use a connection before closing and replacing it.  Default is Infinity
-   */
-  maxUses?: number;
-
-  /**
-   * A function that validates a connection. Called with client. The default function checks that client is an
-   * object, and that its state is not disconnected
-   */
-  validate?(client?: unknown): boolean;
-}
-
-export interface ConnectionOptions {
-  host?: string;
-  port?: string | number;
-  username?: string;
-  password?: string;
-  database?: string;
-}
-
-/**
- * Interface for replication Options in the sequelize constructor
- */
-export interface ReplicationOptions {
-  read: ConnectionOptions[];
-
-  write: ConnectionOptions;
-}
-
-/**
- * Used to map operators to their Symbol representations
- */
-export interface OperatorsAliases {
-  [K: string]: symbol;
-}
-
-/**
- * Final config options generated by sequelize.
- */
-export interface Config {
-  readonly database: string;
-  readonly dialectModule?: object;
-  readonly host?: string;
-  readonly port?: string;
-  readonly username: string;
-  readonly password: string | null;
-  readonly pool?: {
-    readonly acquire: number;
-    readonly idle: number;
-    readonly max: number;
-    readonly min: number;
-  };
-  readonly protocol: 'tcp';
-  readonly native: boolean;
-  readonly ssl: boolean;
-  readonly replication: ReplicationOptions | false;
-  readonly dialectModulePath: null | string;
-  readonly keepDefaultTimezone?: boolean;
-  readonly dialectOptions?: {
-    readonly charset?: string;
-    readonly timeout?: number;
-  };
-}
-
-export type Dialect = 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'db2' | 'snowflake' | 'oracle';
-
-/**
- * Options for the constructor of Sequelize main class
- */
-export interface Options extends Logging {
-  /**
-   * The dialect of the database you are connecting to. One of mysql, postgres, sqlite, mariadb and mssql.
-   *
-   * @default 'mysql'
-   */
-  dialect?: Dialect;
-
-  /**
-   * If specified, will use the provided module as the dialect.
-   *
-   * @example
-   * `dialectModule: require('@myorg/tedious'),`
-   */
-  dialectModule?: object;
-
-
-  /**
-   * If specified, load the dialect library from this path. For example, if you want to use pg.js instead of
-   * pg when connecting to a pg database, you should specify 'pg.js' here
-   */
-  dialectModulePath?: string;
-
-  /**
-   * An object of additional options, which are passed directly to the connection library
-   */
-  dialectOptions?: object;
-
-  /**
-   * Only used by sqlite.
-   *
-   * @default ':memory:'
-   */
-  storage?: string;
-
-  /**
-   * The name of the database
-   */
-  database?: string;
-
-  /**
-   * The username which is used to authenticate against the database.
-   */
-  username?: string;
-
-  /**
-   * The password which is used to authenticate against the database.
-   */
-  password?: string;
-
-  /**
-   * The host of the relational database.
-   *
-   * @default 'localhost'
-   */
-  host?: string;
-
-  /**
-   * The port of the relational database.
-   */
-  port?: number;
-
-  /**
-   * A flag that defines if is used SSL.
-   */
-  ssl?: boolean;
-
-  /**
-   * The protocol of the relational database.
-   *
-   * @default 'tcp'
-   */
-  protocol?: string;
-
-  /**
-   * Default options for model definitions. See Model.init.
-   */
-  define?: ModelOptions;
-
-  /**
-   * Default options for sequelize.query
-   */
-  query?: QueryOptions;
-
-  /**
-   * Default options for sequelize.set
-   */
-  set?: DefaultSetOptions;
-
-  /**
-   * Default options for sequelize.sync
-   */
-  sync?: SyncOptions;
-
-  /**
-   * The timezone used when converting a date from the database into a JavaScript date. The timezone is also
-   * used to SET TIMEZONE when connecting to the server, to ensure that the result of NOW, CURRENT_TIMESTAMP
-   * and other time related functions have in the right timezone. For best cross platform performance use the
-   * format
-   * +/-HH:MM. Will also accept string versions of timezones used by moment.js (e.g. 'America/Los_Angeles');
-   * this is useful to capture daylight savings time changes.
-   *
-   * @default '+00:00'
-   */
-  timezone?: string;
-
-  /**
-   * A flag that defines if null values should be passed to SQL queries or not.
-   *
-   * @default false
-   */
-  omitNull?: boolean;
-
-  /**
-   * A flag that defines if native library shall be used or not. Currently only has an effect for postgres
-   *
-   * @default false
-   */
-  native?: boolean;
-
-  /**
-   * Use read / write replication. To enable replication, pass an object, with two properties, read and write.
-   * Write should be an object (a single server for handling writes), and read an array of object (several
-   * servers to handle reads). Each read/write server can have the following properties: `host`, `port`,
-   * `username`, `password`, `database`
-   *
-   * @default false
-   */
-  replication?: ReplicationOptions | false;
-
-  /**
-   * Connection pool options
-   */
-  pool?: PoolOptions;
-
-  /**
-   * Set to `false` to make table names and attributes case-insensitive on Postgres and skip double quoting of
-   * them.
-   *
-   * @default true
-   */
-  quoteIdentifiers?: boolean;
-
-  /**
-   * Set the default transaction isolation level. See `Sequelize.Transaction.ISOLATION_LEVELS` for possible
-   * options.
-   *
-   * @default 'REPEATABLE_READ'
-   */
-  isolationLevel?: string;
-
-  /**
-   * Set the default transaction type. See Sequelize.Transaction.TYPES for possible options. Sqlite only.
-   *
-   * @default 'DEFERRED'
-   */
-  transactionType?: Transaction.TYPES;
-
-  /**
-   * Run built in type validators on insert and update, e.g. validate that arguments passed to integer
-   * fields are integer-like.
-   *
-   * @default false
-   */
-  typeValidation?: boolean;
-
-  /**
-   * Sets available operator aliases.
-   * See (https://sequelize.org/master/manual/querying.html#operators) for more information.
-   * WARNING: Setting this to boolean value was deprecated and is no-op.
-   *
-   * @default all aliases
-   */
-  operatorsAliases?: OperatorsAliases;
-
-
-  /**
-   * The PostgreSQL `standard_conforming_strings` session parameter. Set to `false` to not set the option.
-   * WARNING: Setting this to false may expose vulnerabilities and is not recommended!
-   *
-   * @default true
-   */
-  standardConformingStrings?: boolean;
-
-  /**
-   * The PostgreSQL `client_min_messages` session parameter.
-   * Set to `false` to not override the database's default.
-   *
-   * Deprecated in v7, please use the sequelize option "dialectOptions.clientMinMessages" instead
-   *
-   * @deprecated
-   * @default 'warning'
-   */
-  clientMinMessages?: string | boolean;
-
-  /**
-   * Sets global permanent hooks.
-   */
-  hooks?: Partial<SequelizeHooks<Model, any, any>>;
-
-  /**
-   * Set to `true` to automatically minify aliases generated by sequelize.
-   * Mostly useful to circumvent the POSTGRES alias limit of 64 characters.
-   *
-   * @default false
-   */
-  minifyAliases?: boolean;
-
-  /**
-   * Set to `true` to show bind parameters in log.
-   *
-   * @default false
-   */
-  logQueryParameters?: boolean;
-
-  retry?: RetryOptions;
-
-  /**
-   * If defined the connection will use the provided schema instead of the default ("public").
-   */
-  schema?: string;
-
-  /**
-   * Sequelize had to introduce a breaking change to fix vulnerability CVE-2023-22578.
-   * This option allows you to revert to the old behavior (unsafe-legacy), or to opt in to the new behavior (escape).
-   * The default behavior throws an error to warn you about the change (throw).
-   */
-  attributeBehavior?: 'escape' | 'throw' | 'unsafe-legacy';
-}
-
-export interface QueryOptionsTransactionRequired { }
-
-/**
- * This is the main class, the entry point to sequelize. To use it, you just need to
- * import sequelize:
- *
- * ```js
- * const Sequelize = require('sequelize');
- * ```
- *
- * In addition to sequelize, the connection library for the dialect you want to use
- * should also be installed in your project. You don't need to import it however, as
- * sequelize will take care of that.
- */
-export class Sequelize extends Hooks {
-
-  // -------------------- Utilities ------------------------------------------------------------------------
-
-  /**
-   * Creates a object representing a database function. This can be used in search queries, both in where and
-   * order parts, and as default values in column definitions. If you want to refer to columns in your
-   * function, you should use `sequelize.col`, so that the columns are properly interpreted as columns and
-   * not a strings.
-   *
-   * Convert a user's username to upper case
-   * ```js
-   * instance.update({
-   *   username: self.sequelize.fn('upper', self.sequelize.col('username'))
-   * })
-   * ```
-   *
-   * @param fn The function you want to call
-   * @param args All further arguments will be passed as arguments to the function
-   */
-  public static fn: typeof fn;
-  public fn: typeof fn;
-
-  /**
-   * Creates a object representing a column in the DB. This is often useful in conjunction with
-   * `sequelize.fn`, since raw string arguments to fn will be escaped.
-   *
-   * @param col The name of the column
-   */
-  public static col: typeof col;
-  public col: typeof col;
-
-  /**
-   * Creates a object representing a call to the cast function.
-   *
-   * @param val The value to cast
-   * @param type The type to cast it to
-   */
-  public static cast: typeof cast;
-  public cast: typeof cast;
-
-  /**
-   * Creates a object representing a literal, i.e. something that will not be escaped.
-   *
-   * @param val
-   */
-  public static literal: typeof literal;
-  public literal: typeof literal;
-
-  /**
-   * An AND query
-   *
-   * @param args Each argument will be joined by AND
-   */
-  public static and: typeof and;
-  public and: typeof and;
-
-  /**
-   * An OR query
-   *
-   * @param args Each argument will be joined by OR
-   */
-  public static or: typeof or;
-  public or: typeof or;
-
-  /**
-   * Creates an object representing nested where conditions for postgres's json data-type.
-   *
-   * @param conditionsOrPath A hash containing strings/numbers or other nested hash, a string using dot
-   *   notation or a string using postgres json syntax.
-   * @param value An optional value to compare against. Produces a string of the form "<json path> =
-   *   '<value>'".
-   */
-  public static json: typeof json;
-  public json: typeof json;
-
-  /**
-   * A way of specifying attr = condition.
-   *
-   * The attr can either be an object taken from `Model.rawAttributes` (for example `Model.rawAttributes.id`
-   * or
-   * `Model.rawAttributes.name`). The attribute should be defined in your model definition. The attribute can
-   * also be an object from one of the sequelize utility functions (`sequelize.fn`, `sequelize.col` etc.)
-   *
-   * For string attributes, use the regular `{ where: { attr: something }}` syntax. If you don't want your
-   * string to be escaped, use `sequelize.literal`.
-   *
-   * @param attr The attribute, which can be either an attribute object from `Model.rawAttributes` or a
-   *   sequelize object, for example an instance of `sequelize.fn`. For simple string attributes, use the
-   *   POJO syntax
-   * @param comparator Comparator
-   * @param logic The condition. Can be both a simply type, or a further condition (`.or`, `.and`, `.literal`
-   *   etc.)
-   */
-  public static where: typeof where;
-  public where: typeof where;
-
-  /**
-   * A hook that is run before validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeValidate(name: string, fn: (instance: Model, options: ValidationOptions) => void): void;
-  public static beforeValidate(fn: (instance: Model, options: ValidationOptions) => void): void;
-
-  /**
-   * A hook that is run after validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterValidate(name: string, fn: (instance: Model, options: ValidationOptions) => void): void;
-  public static afterValidate(fn: (instance: Model, options: ValidationOptions) => void): void;
-
-  /**
-   * A hook that is run before creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public static beforeCreate(name: string, fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-  public static beforeCreate(fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public static afterCreate(name: string, fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-  public static afterCreate(fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeDestroy(name: string, fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-  public static beforeDestroy(fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-
-  /**
-   * A hook that is run after destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterDestroy(name: string, fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-  public static afterDestroy(fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-
-  /**
-   * A hook that is run before updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeUpdate(name: string, fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-  public static beforeUpdate(fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterUpdate(name: string, fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-  public static afterUpdate(fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before creating or updating a single instance, It proxies `beforeCreate` and `beforeUpdate`
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static beforeSave(
-    name: string,
-    fn: (instance: Model, options: UpdateOptions<any> | CreateOptions<any>) => void
-  ): void;
-  public static beforeSave(fn: (instance: Model, options: UpdateOptions<any> | CreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after creating or updating a single instance, It proxies `afterCreate` and `afterUpdate`
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public static afterSave(
-    name: string,
-    fn: (instance: Model, options: UpdateOptions<any> | CreateOptions<any>) => void
-  ): void;
-  public static afterSave(
-    fn: (instance: Model, options: UpdateOptions<any> | CreateOptions<any>) => void
-  ): void;
-
-  /**
-   * A hook that is run before creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public static beforeBulkCreate(
-    name: string,
-    fn: (instances: Model[], options: BulkCreateOptions<any>) => void
-  ): void;
-  public static beforeBulkCreate(fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public static afterBulkCreate(
-    name: string, fn: (instances: Model[], options: BulkCreateOptions<any>) => void
-  ): void;
-  public static afterBulkCreate(fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeBulkDestroy(name: string, fn: (options: BulkCreateOptions<any>) => void): void;
-  public static beforeBulkDestroy(fn: (options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterBulkDestroy(name: string, fn: (options: DestroyOptions<any>) => void): void;
-  public static afterBulkDestroy(fn: (options: DestroyOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeBulkUpdate(name: string, fn: (options: UpdateOptions<any>) => void): void;
-  public static beforeBulkUpdate(fn: (options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterBulkUpdate(name: string, fn: (options: UpdateOptions<any>) => void): void;
-  public static afterBulkUpdate(fn: (options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFind(name: string, fn: (options: FindOptions<any>) => void): void;
-  public static beforeFind(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a connection is established
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeConnect(name: string, fn: (options: DeepWriteable<Config>) => void): void;
-  public static beforeConnect(fn: (options: DeepWriteable<Config>) => void): void;
-
-  /**
-   * A hook that is run after a connection is established
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterConnect(name: string, fn: (connection: unknown, options: Config) => void): void;
-  public static afterConnect(fn: (connection: unknown, options: Config) => void): void;
-
-  /**
-   * A hook that is run before a connection is released
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeDisconnect(name: string, fn: (connection: unknown) => void): void;
-  public static beforeDisconnect(fn: (connection: unknown) => void): void;
-
-  /**
-   * A hook that is run after a connection is released
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterDisconnect(name: string, fn: (connection: unknown) => void): void;
-  public static afterDisconnect(fn: (connection: unknown) => void): void;
-
-
-  /**
-   * A hook that is run before attempting to acquire a connection from the pool
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforePoolAcquire(name: string, fn: (options: GetConnectionOptions) => void): void;
-  public static beforePoolAcquire(fn: (options: GetConnectionOptions) => void): void;
-
-  /**
-   * A hook that is run after successfully acquiring a connection from the pool
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static afterPoolAcquire(name: string, fn: (connection: Connection, options: GetConnectionOptions) => void): void;
-  public static afterPoolAcquire(fn: (connection: Connection, options: GetConnectionOptions) => void): void;
-
-
-  /**
-   * A hook that is run before a find (select) query, after any { include: {all: ...} } options are expanded
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFindAfterExpandIncludeAll(name: string, fn: (options: FindOptions<any>) => void): void;
-  public static beforeFindAfterExpandIncludeAll(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a find (select) query, after all option parsing is complete
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public static beforeFindAfterOptions(name: string, fn: (options: FindOptions<any>) => void): void;
-  public static beforeFindAfterOptions(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with instance(s), options
-   */
-  public static afterFind(
-    name: string,
-    fn: (instancesOrInstance: Model[] | Model | null, options: FindOptions<any>) => void
-  ): void;
-  public static afterFind(
-    fn: (instancesOrInstance: Model[] | Model | null, options: FindOptions<any>) => void
-  ): void;
-
-  /**
-   * A hook that is run before a define call
-   *
-   * @param name
-   * @param fn   A callback function that is called with attributes, options
-   */
-  public static beforeDefine<M extends Model>(
-    name: string,
-    fn: (attributes: ModelAttributes<M, CreationAttributes<M>>, options: ModelOptions<M>) => void
-  ): void;
-  public static beforeDefine<M extends Model>(
-    fn: (attributes: ModelAttributes<M, CreationAttributes<M>>, options: ModelOptions<M>) => void
-  ): void;
-
-  /**
-   * A hook that is run after a define call
-   *
-   * @param name
-   * @param fn   A callback function that is called with factory
-   */
-  public static afterDefine(name: string, fn: (model: ModelType) => void): void;
-  public static afterDefine(fn: (model: ModelType) => void): void;
-
-  /**
-   * A hook that is run before Sequelize() call
-   *
-   * @param name
-   * @param fn   A callback function that is called with config, options
-   */
-  public static beforeInit(name: string, fn: (config: Config, options: Options) => void): void;
-  public static beforeInit(fn: (config: Config, options: Options) => void): void;
-
-  /**
-   * A hook that is run after Sequelize() call
-   *
-   * @param name
-   * @param fn   A callback function that is called with sequelize
-   */
-  public static afterInit(name: string, fn: (sequelize: Sequelize) => void): void;
-  public static afterInit(fn: (sequelize: Sequelize) => void): void;
-
-  /**
-   * A hook that is run before sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public static beforeBulkSync(dname: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static beforeBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public static afterBulkSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static afterBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run before Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public static beforeSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static beforeSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public static afterSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public static afterSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * Use CLS with Sequelize.
-   * CLS namespace provided is stored as `Sequelize._cls`
-   * and Promise is patched to use the namespace, using `cls-hooked` module.
-   *
-   * @param namespace
-   */
-  public static useCLS(namespace: object): typeof Sequelize;
-
-  /**
-   * A reference to Sequelize constructor from sequelize. Useful for accessing DataTypes, Errors etc.
-   */
-  public Sequelize: typeof Sequelize;
-
-  /**
-   * Final config that is used by sequelize.
-   */
-  public readonly config: Config;
-
-  public readonly modelManager: ModelManager;
-
-  public readonly connectionManager: ConnectionManager;
-
-  /**
-   * Dictionary of all models linked with this instance.
-   */
-  public readonly models: {
-    [key: string]: ModelCtor<Model>;
-  };
-
-  /**
-   * Instantiate sequelize with name of database, username and password
-   *
-   * #### Example usage
-   *
-   * ```javascript
-   * // without password and options
-   * const sequelize = new Sequelize('database', 'username')
-   *
-   * // without options
-   * const sequelize = new Sequelize('database', 'username', 'password')
-   *
-   * // without password / with blank password
-   * const sequelize = new Sequelize('database', 'username', null, {})
-   *
-   * // with password and options
-   * const sequelize = new Sequelize('my_database', 'john', 'doe', {})
-   *
-   * // with uri (see below)
-   * const sequelize = new Sequelize('mysql://localhost:3306/database', {})
-   * ```
-   *
-   * @param database The name of the database
-   * @param username The username which is used to authenticate against the
-   *   database.
-   * @param password The password which is used to authenticate against the
-   *   database.
-   * @param options An object with options.
-   */
-  constructor(database: string, username: string, password?: string, options?: Options);
-  constructor(database: string, username: string, options?: Options);
-  constructor(options?: Options);
-
-  /**
-   * Instantiate sequelize with an URI
-   *
-   * @param uri A full database URI
-   * @param options See above for possible options
-   */
-  constructor(uri: string, options?: Options);
-
-  /**
-   * A hook that is run before validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public beforeValidate(name: string, fn: (instance: Model, options: ValidationOptions) => void): void;
-  public beforeValidate(fn: (instance: Model, options: ValidationOptions) => void): void;
-
-  /**
-   * A hook that is run after validation
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public afterValidate(name: string, fn: (instance: Model, options: ValidationOptions) => void): void;
-  public afterValidate(fn: (instance: Model, options: ValidationOptions) => void): void;
-
-  /**
-   * A hook that is run before creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public beforeCreate(name: string, fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-  public beforeCreate(fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after creating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with attributes, options
-   */
-  public afterCreate(name: string, fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-  public afterCreate(fn: (attributes: Model, options: CreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public beforeDestroy(name: string, fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-  public beforeDestroy(fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-
-  /**
-   * A hook that is run after destroying a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public afterDestroy(name: string, fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-  public afterDestroy(fn: (instance: Model, options: InstanceDestroyOptions) => void): void;
-
-  /**
-   * A hook that is run before updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public beforeUpdate(name: string, fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-  public beforeUpdate(fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating a single instance
-   *
-   * @param name
-   * @param fn A callback function that is called with instance, options
-   */
-  public afterUpdate(name: string, fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-  public afterUpdate(fn: (instance: Model, options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public beforeBulkCreate(name: string, fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-  public beforeBulkCreate(fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after creating instances in bulk
-   *
-   * @param name
-   * @param fn A callback function that is called with instances, options
-   */
-  public afterBulkCreate(name: string, fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-  public afterBulkCreate(fn: (instances: Model[], options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public beforeBulkDestroy(name: string, fn: (options: BulkCreateOptions<any>) => void): void;
-  public beforeBulkDestroy(fn: (options: BulkCreateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after destroying instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public afterBulkDestroy(name: string, fn: (options: DestroyOptions<any>) => void): void;
-  public afterBulkDestroy(fn: (options: DestroyOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public beforeBulkUpdate(name: string, fn: (options: UpdateOptions<any>) => void): void;
-  public beforeBulkUpdate(fn: (options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after updating instances in bulk
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public afterBulkUpdate(name: string, fn: (options: UpdateOptions<any>) => void): void;
-  public afterBulkUpdate(fn: (options: UpdateOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public beforeFind(name: string, fn: (options: FindOptions<any>) => void): void;
-  public beforeFind(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a find (select) query, after any { include: {all: ...} } options are expanded
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public beforeFindAfterExpandIncludeAll(name: string, fn: (options: FindOptions<any>) => void): void;
-  public beforeFindAfterExpandIncludeAll(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a find (select) query, after all option parsing is complete
-   *
-   * @param name
-   * @param fn   A callback function that is called with options
-   */
-  public beforeFindAfterOptions(name: string, fn: (options: FindOptions<any>) => void): void;
-  public beforeFindAfterOptions(fn: (options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run after a find (select) query
-   *
-   * @param name
-   * @param fn   A callback function that is called with instance(s), options
-   */
-  public afterFind(
-    name: string,
-    fn: (instancesOrInstance: Model[] | Model | null, options: FindOptions<any>) => void
-  ): void;
-  public afterFind(fn: (instancesOrInstance: Model[] | Model | null, options: FindOptions<any>) => void): void;
-
-  /**
-   * A hook that is run before a define call
-   *
-   * @param name
-   * @param fn   A callback function that is called with attributes, options
-   */
-  public beforeDefine(name: string, fn: (attributes: ModelAttributes<Model, any>, options: ModelOptions) => void): void;
-  public beforeDefine(fn: (attributes: ModelAttributes<Model, any>, options: ModelOptions) => void): void;
-
-  /**
-   * A hook that is run after a define call
-   *
-   * @param name
-   * @param fn   A callback function that is called with factory
-   */
-  public afterDefine(name: string, fn: (model: ModelType) => void): void;
-  public afterDefine(fn: (model: ModelType) => void): void;
-
-  /**
-   * A hook that is run before Sequelize() call
-   *
-   * @param name
-   * @param fn   A callback function that is called with config, options
-   */
-  public beforeInit(name: string, fn: (config: Config, options: Options) => void): void;
-  public beforeInit(fn: (config: Config, options: Options) => void): void;
-
-  /**
-   * A hook that is run after Sequelize() call
-   *
-   * @param name
-   * @param fn   A callback function that is called with sequelize
-   */
-  public afterInit(name: string, fn: (sequelize: Sequelize) => void): void;
-  public afterInit(fn: (sequelize: Sequelize) => void): void;
-
-  /**
-   * A hook that is run before sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public beforeBulkSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public beforeBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after sequelize.sync call
-   *
-   * @param fn   A callback function that is called with options passed to sequelize.sync
-   */
-  public afterBulkSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public afterBulkSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run before Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public beforeSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public beforeSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * A hook that is run after Model.sync call
-   *
-   * @param fn   A callback function that is called with options passed to Model.sync
-   */
-  public afterSync(name: string, fn: (options: SyncOptions) => HookReturn): void;
-  public afterSync(fn: (options: SyncOptions) => HookReturn): void;
-
-  /**
-   * Returns the specified dialect.
-   */
-  public getDialect(): string;
-
-  /**
-   * Returns the database name.
-   */
-
-  public getDatabaseName(): string;
-
-  /**
-   * Returns an instance of QueryInterface.
-   */
-  public getQueryInterface(): QueryInterface;
-
-  /**
-   * Define a new model, representing a table in the DB.
-   *
-   * The table columns are defined by the hash that is given as the second argument. Each attribute of the
-   * hash
-   * represents a column. A short table definition might look like this:
-   *
-   * ```js
-   * class MyModel extends Model {}
-   * MyModel.init({
-   *   columnA: {
-   *     type: Sequelize.BOOLEAN,
-   *     validate: {
-   *       is: ["[a-z]",'i'],    // will only allow letters
-   *       max: 23,          // only allow values <= 23
-   *       isIn: {
-   *       args: [['en', 'zh']],
-   *       msg: "Must be English or Chinese"
-   *       }
-   *     },
-   *     field: 'column_a'
-   *     // Other attributes here
-   *   },
-   *   columnB: Sequelize.STRING,
-   *   columnC: 'MY VERY OWN COLUMN TYPE'
-   * }, { sequelize })
-   *
-   * sequelize.models.modelName // The model will now be available in models under the name given to define
-   * ```
-   *
-   * As shown above, column definitions can be either strings, a reference to one of the datatypes that are
-   * predefined on the Sequelize constructor, or an object that allows you to specify both the type of the
-   * column, and other attributes such as default values, foreign key constraints and custom setters and
-   * getters.
-   *
-   * For a list of possible data types, see
-   * https://sequelize.org/master/en/latest/docs/models-definition/#data-types
-   *
-   * For more about getters and setters, see
-   * https://sequelize.org/master/en/latest/docs/models-definition/#getters-setters
-   *
-   * For more about instance and class methods, see
-   * https://sequelize.org/master/en/latest/docs/models-definition/#expansion-of-models
-   *
-   * For more about validation, see
-   * https://sequelize.org/master/en/latest/docs/models-definition/#validations
-   *
-   * @param modelName  The name of the model. The model will be stored in `sequelize.models` under this name
-   * @param attributes An object, where each attribute is a column of the table. Each column can be either a
-   *           DataType, a string or a type-description object, with the properties described below:
-   * @param options  These options are merged with the default define options provided to the Sequelize
-   *           constructor
-   */
-  public define<M extends Model, TAttributes = Attributes<M>>(
-    modelName: string,
-    attributes: ModelAttributes<M, TAttributes>,
-    options?: ModelOptions<M>
-  ): ModelCtor<M>;
-
-  /**
-   * Fetch a Model which is already defined
-   *
-   * @param modelName The name of a model defined with Sequelize.define
-   */
-  public model(modelName: string): ModelCtor<Model>;
-
-  /**
-   * Checks whether a model with the given name is defined
-   *
-   * @param modelName The name of a model defined with Sequelize.define
-   */
-  public isDefined(modelName: string): boolean;
-
-  /**
-   * Execute a query on the DB, optionally bypassing all the Sequelize goodness.
-   *
-   * By default, the function will return two arguments: an array of results, and a metadata object,
-   * containing number of affected rows etc. Use `const [results, meta] = await ...` to access the results.
-   *
-   * If you are running a type of query where you don't need the metadata, for example a `SELECT` query, you
-   * can pass in a query type to make sequelize format the results:
-   *
-   * ```js
-   * const [results, metadata] = await sequelize.query('SELECT...'); // Raw query - use array destructuring
-   *
-   * const results = await sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT }); // SELECT query - no destructuring
-   * ```
-   *
-   * @param sql
-   * @param options Query options
-   */
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.UPDATE>): Promise<[undefined, number]>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.BULKUPDATE>): Promise<number>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.INSERT>): Promise<[number, number]>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.UPSERT>): Promise<number>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.DELETE>): Promise<void>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.BULKDELETE>): Promise<number>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.SHOWTABLES>): Promise<string[]>;
-  public query(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.DESCRIBE>): Promise<ColumnsDescription>;
-  public query<M extends Model>(
-    sql: string | { query: string; values: unknown[] },
-    options: QueryOptionsWithModel<M> & { plain: true }
-  ): Promise<M | null>;
-  public query<M extends Model>(
-    sql: string | { query: string; values: unknown[] },
-    options: QueryOptionsWithModel<M>
-  ): Promise<M[]>;
-  public query<T extends object>(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.SELECT> & { plain: true }): Promise<T | null>;
-  public query<T extends object>(sql: string | { query: string; values: unknown[] }, options: QueryOptionsWithType<QueryTypes.SELECT>): Promise<T[]>;
-  public query(sql: string | { query: string; values: unknown[] }, options: (QueryOptions | QueryOptionsWithType<QueryTypes.RAW>) & { plain: true }): Promise<{ [key: string]: unknown } | null>;
-  public query(sql: string | { query: string; values: unknown[] }, options?: QueryOptions | QueryOptionsWithType<QueryTypes.RAW>): Promise<[unknown[], unknown]>;
-
-  /**
-   * Get the fn for random based on the dialect
-   */
-  public random(): Fn;
-
-  /**
-   * Execute a query which would set an environment or user variable. The variables are set per connection,
-   * so this function needs a transaction.
-   *
-   * Only works for MySQL.
-   *
-   * @param variables object with multiple variables.
-   * @param options Query options.
-   */
-  public set(variables: object, options: QueryOptionsTransactionRequired): Promise<unknown>;
-
-  /**
-   * Escape value.
-   *
-   * @param value Value that needs to be escaped
-   */
-  public escape(value: string | number | Date): string;
-
-  /**
-   * Create a new database schema.
-   *
-   * Note,that this is a schema in the
-   * [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),
-   * not a database table. In mysql and sqlite, this command will do nothing.
-   *
-   * @param schema Name of the schema
-   * @param options Options supplied
-   */
-  public createSchema(schema: string, options: Logging): Promise<unknown>;
-
-  /**
-   * Show all defined schemas
-   *
-   * Note,that this is a schema in the
-   * [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),
-   * not a database table. In mysql and sqlite, this will show all tables.
-   *
-   * @param options Options supplied
-   */
-  public showAllSchemas(options: Logging): Promise<object[]>;
-
-  /**
-   * Drop a single schema
-   *
-   * Note,that this is a schema in the
-   * [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),
-   * not a database table. In mysql and sqlite, this drop a table matching the schema name
-   *
-   * @param schema Name of the schema
-   * @param options Options supplied
-   */
-  public dropSchema(schema: string, options: Logging): Promise<unknown[]>;
-
-  /**
-   * Drop all schemas
-   *
-   * Note,that this is a schema in the
-   * [postgres sense of the word](http://www.postgresql.org/docs/9.1/static/ddl-schemas.html),
-   * not a database table. In mysql and sqlite, this is the equivalent of drop all tables.
-   *
-   * @param options Options supplied
-   */
-  public dropAllSchemas(options: Logging): Promise<unknown[]>;
-
-  /**
-   * Sync all defined models to the DB.
-   *
-   * @param options Sync Options
-   */
-  public sync(options?: SyncOptions): Promise<this>;
-
-  /**
-   * Truncate all tables defined through the sequelize models. This is done
-   * by calling Model.truncate() on each model.
-   *
-   * @param [options] The options passed to Model.destroy in addition to truncate
-   */
-  public truncate(options?: DestroyOptions<any>): Promise<unknown[]>;
-
-  /**
-   * Drop all tables defined through this sequelize instance. This is done by calling Model.drop on each model
-   *
-   * @param options The options passed to each call to Model.drop
-   */
-  public drop(options?: DropOptions): Promise<unknown[]>;
-
-  /**
-   * Test the connection by trying to authenticate
-   *
-   * @param options Query Options for authentication
-   */
-  public authenticate(options?: QueryOptions): Promise<void>;
-  public validate(options?: QueryOptions): Promise<void>;
-
-  /**
-   * Start a transaction. When using transactions, you should pass the transaction in the options argument
-   * in order for the query to happen under that transaction
-   *
-   * ```js
-   *   try {
-   *     const transaction = await sequelize.transaction();
-   *     const user = await User.findOne(..., { transaction });
-   *     await user.update(..., { transaction });
-   *     await transaction.commit();
-   *   } catch(err) {
-   *     await transaction.rollback();
-   *   }
-   * })
-   * ```
-   *
-   * A syntax for automatically committing or rolling back based on the promise chain resolution is also
-   * supported:
-   *
-   * ```js
-   * try {
-   *   await sequelize.transaction(transaction => { // Note that we pass a callback rather than awaiting the call with no arguments
-   *     const user = await User.findOne(..., {transaction});
-   *     await user.update(..., {transaction});
-   *   });
-   *   // Committed
-   * } catch(err) {
-   *   // Rolled back
-   *   console.error(err);
-   * }
-   * ```
-   *
-   * If you have [CLS](https://github.com/Jeff-Lewis/cls-hooked) enabled, the transaction
-   * will automatically be passed to any query that runs witin the callback. To enable CLS, add it do your
-   * project, create a namespace and set it on the sequelize constructor:
-   *
-   * ```js
-   * const cls = require('cls-hooked');
-   * const namespace = cls.createNamespace('....');
-   * const Sequelize = require('sequelize');
-   * Sequelize.useCLS(namespace);
-   * ```
-   * Note, that CLS is enabled for all sequelize instances, and all instances will share the same namespace
-   *
-   * @param options Transaction Options
-   * @param autoCallback Callback for the transaction
-   */
-  public transaction<T>(options: TransactionOptions, autoCallback: (t: Transaction) => PromiseLike<T>): Promise<T>;
-  public transaction<T>(autoCallback: (t: Transaction) => PromiseLike<T>): Promise<T>;
-  public transaction(options?: TransactionOptions): Promise<Transaction>;
-
-  /**
-   * Close all connections used by this sequelize instance, and free all references so the instance can be
-   * garbage collected.
-   *
-   * Normally this is done on process exit, so you only need to call this method if you are creating multiple
-   * instances, and want to garbage collect some of them.
-   */
-  public close(): Promise<void>;
-
-  /**
-   * Returns the database version
-   */
-  public databaseVersion(): Promise<string>;
-}
-
-// Utilities
-
-/**
- * Creates a object representing a database function. This can be used in search queries, both in where and
- * order parts, and as default values in column definitions. If you want to refer to columns in your
- * function, you should use `sequelize.col`, so that the columns are properly interpreted as columns and
- * not a strings.
- *
- * Convert a user's username to upper case
- * ```js
- * instance.update({
- *   username: self.sequelize.fn('upper', self.sequelize.col('username'))
- * })
- * ```
- *
- * @param fn The function you want to call
- * @param args All further arguments will be passed as arguments to the function
- */
-export function fn(fn: string, ...args: unknown[]): Fn;
-
-/**
- * Creates a object representing a column in the DB. This is often useful in conjunction with
- * `sequelize.fn`, since raw string arguments to fn will be escaped.
- *
- * @param col The name of the column
- */
-export function col(col: string): Col;
-
-/**
- * Creates a object representing a call to the cast function.
- *
- * @param val The value to cast
- * @param type The type to cast it to
- */
-export function cast(val: unknown, type: string): Cast;
-
-/**
- * Creates a object representing a literal, i.e. something that will not be escaped.
- *
- * @param val
- */
-export function literal(val: string): Literal;
-
-/**
- * An AND query
- *
- * @param args Each argument will be joined by AND
- */
-export function and<T extends Array<any>>(...args: T): { [Op.and]: T };
-
-/**
- * An OR query
- *
- * @param args Each argument will be joined by OR
- */
-export function or<T extends Array<any>>(...args: T): { [Op.or]: T };
-
-/**
- * Creates an object representing nested where conditions for postgres's json data-type.
- *
- * @param conditionsOrPath A hash containing strings/numbers or other nested hash, a string using dot
- *   notation or a string using postgres json syntax.
- * @param value An optional value to compare against. Produces a string of the form "<json path> =
- *   '<value>'".
- */
-export function json(conditionsOrPath: string | object, value?: string | number | boolean): Json;
-
-export type WhereLeftOperand = Fn | ColumnReference | Literal | Cast | ModelAttributeColumnOptions;
-
-// TODO [>6]: Remove
-/**
- * @deprecated use {@link WhereLeftOperand} instead.
- */
-export type AttributeType = WhereLeftOperand;
-
-// TODO [>6]: Remove
-/**
- * @deprecated this is not used anymore, typing definitions for {@link where} have changed to more accurately reflect reality.
- */
-export type LogicType = Fn | Col | Literal | OrOperator<any> | AndOperator<any> | WhereOperators | string | symbol | null;
-
-/**
- * A way of specifying "attr = condition".
- * Can be used as a replacement for the POJO syntax (e.g. `where: { name: 'Lily' }`) when you need to compare a column that the POJO syntax cannot represent.
- *
- * @param leftOperand The left side of the comparison.
- *  - A value taken from YourModel.rawAttributes, to reference an attribute.
- *    The attribute must be defined in your model definition.
- *  - A Literal (using {@link Sequelize#literal})
- *  - A SQL Function (using {@link Sequelize#fn})
- *  - A Column name (using {@link Sequelize#col})
- *  Note that simple strings to reference an attribute are not supported. You can use the POJO syntax instead.
- * @param operator The comparison operator to use. If unspecified, defaults to {@link Op.eq}.
- * @param rightOperand The right side of the comparison. Its value depends on the used operator.
- *  See {@link WhereOperators} for information about what value is valid for each operator.
- *
- * @example
- * // Using an attribute as the left operand.
- * // Equal to: WHERE first_name = 'Lily'
- * where(User.rawAttributes.firstName, Op.eq, 'Lily');
- *
- * @example
- * // Using a column name as the left operand.
- * // Equal to: WHERE first_name = 'Lily'
- * where(col('first_name'), Op.eq, 'Lily');
- *
- * @example
- * // Using a SQL function on the left operand.
- * // Equal to: WHERE LOWER(first_name) = 'lily'
- * where(fn('LOWER', col('first_name')), Op.eq, 'lily');
- *
- * @example
- * // Using raw SQL as the left operand.
- * // Equal to: WHERE 'Lily' = 'Lily'
- * where(literal(`'Lily'`), Op.eq, 'Lily');
- */
-export function where<Op extends keyof WhereOperators>(leftOperand: WhereLeftOperand | Where, operator: Op, rightOperand: WhereOperators[Op]): Where;
-export function where<Op extends keyof WhereOperators>(leftOperand: any, operator: string, rightOperand: any): Where;
-export function where(leftOperand: WhereLeftOperand, rightOperand: WhereAttributeHashValue<any>): Where;
-
-export default Sequelize;
Index: ckend/node_modules/sequelize/types/sql-string.d.ts
===================================================================
--- backend/node_modules/sequelize/types/sql-string.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export type Escapable = undefined | null | boolean | number | string | Date;
-export function escapeId(val: string, forbidQualified?: boolean): string;
-export function escape(val: Escapable | Escapable[], timeZone?: string, dialect?: string, format?: boolean): string;
-export function format(sql: string, values: unknown[], timeZone?: string, dialect?: string): string;
-export function formatNamedParameters(sql: string, values: unknown[], timeZone?: string, dialect?: string): string;
Index: ckend/node_modules/sequelize/types/table-hints.d.ts
===================================================================
--- backend/node_modules/sequelize/types/table-hints.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-declare enum TableHints {
-  NOLOCK = 'NOLOCK',
-  READUNCOMMITTED = 'READUNCOMMITTED',
-  UPDLOCK = 'UPDLOCK',
-  REPEATABLEREAD = 'REPEATABLEREAD',
-  SERIALIZABLE = 'SERIALIZABLE',
-  READCOMMITTED = 'READCOMMITTED',
-  TABLOCK = 'TABLOCK',
-  TABLOCKX = 'TABLOCKX',
-  PAGLOCK = 'PAGLOCK',
-  ROWLOCK = 'ROWLOCK',
-  NOWAIT = 'NOWAIT',
-  READPAST = 'READPAST',
-  XLOCK = 'XLOCK',
-  SNAPSHOT = 'SNAPSHOT',
-  NOEXPAND = 'NOEXPAND',
-}
-
-export = TableHints;
Index: ckend/node_modules/sequelize/types/transaction.d.ts
===================================================================
--- backend/node_modules/sequelize/types/transaction.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,149 +1,0 @@
-import { Deferrable } from './deferrable';
-import { Logging } from './model';
-import { Sequelize } from './sequelize';
-
-/**
- * The transaction object is used to identify a running transaction. It is created by calling
- * `Sequelize.transaction()`.
- *
- * To run a query under a transaction, you should pass the transaction in the options object.
- */
-export class Transaction {
-  constructor(sequelize: Sequelize, options: TransactionOptions);
-
-  /**
-   * Commit the transaction
-   */
-  public commit(): Promise<void>;
-
-  /**
-   * Rollback (abort) the transaction
-   */
-  public rollback(): Promise<void>;
-
-  /**
-   * Adds hook that is run after a transaction is committed
-   */
-  public afterCommit(fn: (transaction: this) => void | Promise<void>): void;
-
-  /**
-   * Returns possible options for row locking
-   */
-  static get LOCK(): typeof LOCK;
-
-  /**
-   * Same as its static version, but can also be called on instances of
-   * transactions to get possible options for row locking directly from the
-   * instance.
-   */
-  get LOCK(): typeof LOCK;
-}
-
-// tslint:disable-next-line no-namespace
-export namespace Transaction {
-  /**
-   * Isolations levels can be set per-transaction by passing `options.isolationLevel` to `sequelize.transaction`.
-   * Default to `REPEATABLE_READ` but you can override the default isolation level by passing `options.isolationLevel` in `new Sequelize`.
-   *
-   * The possible isolations levels to use when starting a transaction:
-   *
-   * ```js
-   * {
-   *   READ_UNCOMMITTED: "READ UNCOMMITTED",
-   *   READ_COMMITTED: "READ COMMITTED",
-   *   REPEATABLE_READ: "REPEATABLE READ",
-   *   SERIALIZABLE: "SERIALIZABLE"
-   * }
-   * ```
-   *
-   * Pass in the desired level as the first argument:
-   *
-   * ```js
-   * try {
-   *   await sequelize.transaction({isolationLevel: Sequelize.Transaction.SERIALIZABLE}, transaction => {
-   *      // your transactions
-   *   });
-   *   // transaction has been committed. Do something after the commit if required.
-   * } catch(err) {
-   *   // do something with the err.
-   * }
-   * ```
-   */
-  enum ISOLATION_LEVELS {
-    READ_UNCOMMITTED = 'READ UNCOMMITTED',
-    READ_COMMITTED = 'READ COMMITTED',
-    REPEATABLE_READ = 'REPEATABLE READ',
-    SERIALIZABLE = 'SERIALIZABLE',
-  }
-
-  enum TYPES {
-    DEFERRED = 'DEFERRED',
-    IMMEDIATE = 'IMMEDIATE',
-    EXCLUSIVE = 'EXCLUSIVE',
-  }
-}
-
-/**
- * Possible options for row locking. Used in conjunction with `find` calls:
- *
- * ```js
- * t1 // is a transaction
- * t1.LOCK.UPDATE,
- * t1.LOCK.SHARE,
- * t1.LOCK.KEY_SHARE, // Postgres 9.3+ only
- * t1.LOCK.NO_KEY_UPDATE // Postgres 9.3+ only
- * ```
- *
- * Usage:
- * ```js
- * t1 // is a transaction
- * Model.findAll({
- *   where: ...,
- *   transaction: t1,
- *   lock: t1.LOCK...
- * });
- * ```
- *
- * Postgres also supports specific locks while eager loading by using OF:
- * ```js
- * UserModel.findAll({
- *   where: ...,
- *   include: [TaskModel, ...],
- *   transaction: t1,
- *   lock: {
- *   level: t1.LOCK...,
- *   of: UserModel
- *   }
- * });
- * ```
- * UserModel will be locked but TaskModel won't!
- */
-export enum LOCK {
-  UPDATE = 'UPDATE',
-  SHARE = 'SHARE',
-  /**
-   * Postgres 9.3+ only
-   */
-  KEY_SHARE = 'KEY SHARE',
-  /**
-   * Postgres 9.3+ only
-   */
-  NO_KEY_UPDATE = 'NO KEY UPDATE',
-}
-
-/**
- * Options provided when the transaction is created
- */
-export interface TransactionOptions extends Logging {
-  autocommit?: boolean;
-  isolationLevel?: Transaction.ISOLATION_LEVELS;
-  type?: Transaction.TYPES;
-  deferrable?: string | Deferrable;
-  readOnly?: boolean;
-  /**
-   * Parent transaction.
-   */
-  transaction?: Transaction | null;
-}
-
-export default Transaction;
Index: ckend/node_modules/sequelize/types/utils.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,173 +1,0 @@
-import { DataType } from './data-types';
-import { Model, ModelCtor, ModelType, WhereOptions, Attributes } from './model';
-import { Optional } from './index';
-
-export type Primitive = 'string' | 'number' | 'boolean';
-
-export type DeepWriteable<T> = { -readonly [P in keyof T]: DeepWriteable<T[P]> };
-
-export interface Inflector {
-  singularize(str: string): string;
-  pluralize(str: string): string;
-}
-
-export function useInflection(inflection: Inflector): void;
-
-export function camelizeIf(string: string, condition?: boolean): string;
-export function underscoredIf(string: string, condition?: boolean): string;
-export function isPrimitive(val: unknown): val is Primitive;
-
-/** Same concept as _.merge, but don't overwrite properties that have already been assigned */
-export function mergeDefaults<T>(a: T, b: Partial<T>): T;
-export function spliceStr(str: string, index: number, count: number, add: string): string;
-export function camelize(str: string): string;
-export function format(arr: string[], dialect: string): string;
-export function formatNamedParameters(sql: string, parameters: {
-  [key: string]: string | number | boolean;
-}, dialect: string): string;
-export function cloneDeep<T>(obj: T, fn?: (el: unknown) => unknown): T;
-
-export interface OptionsForMapping<TAttributes> {
-  attributes?: string[];
-  where?: WhereOptions<TAttributes>;
-}
-
-/** Expand and normalize finder options */
-export function mapFinderOptions<M extends Model, T extends OptionsForMapping<Attributes<M>>>(
-  options: T,
-  model: ModelCtor<M>
-): T;
-
-/* Used to map field names in attributes and where conditions */
-export function mapOptionFieldNames<M extends Model, T extends OptionsForMapping<Attributes<M>>>(
-  options: T, model: ModelCtor<M>
-): T;
-
-export function mapWhereFieldNames(attributes: object, model: ModelType): object;
-/** Used to map field names in values */
-export function mapValueFieldNames(dataValues: object, fields: string[], model: ModelType): object;
-
-export function isColString(value: string): boolean;
-export function canTreatArrayAsAnd(arr: unknown[]): boolean;
-export function combineTableNames(tableName1: string, tableName2: string): string;
-
-export function singularize(s: string): string;
-export function pluralize(s: string): string;
-
-export function toDefaultValue<T>(value: unknown): unknown;
-
-/**
- * Determine if the default value provided exists and can be described
- * in a db schema using the DEFAULT directive.
- *
- * @param value Any default value.
- */
-export function defaultValueSchemable(hash: DataType): boolean;
-export function stack(): NodeJS.CallSite[];
-export function now(dialect: string): Date;
-
-// Note: Use the `quoteIdentifier()` and `escape()` methods on the
-// `QueryInterface` instead for more portable code.
-export const TICK_CHAR: string;
-export function addTicks(s: string, tickChar?: string): string;
-export function removeTicks(s: string, tickChar?: string): string;
-
-/**
- * Wraps a constructor to not need the `new` keyword using a proxy.
- * Only used for data types.
- */
-export function classToInvokable<T extends new (...args: any[]) => any>(ctor: T): T & {
-  (...args: ConstructorParameters<T>): T;
-}
-
-export class SequelizeMethod {
-
-}
-
-/*
- * Utility functions for representing SQL functions, and columns that should be escaped.
- * Please do not use these functions directly, use Sequelize.fn and Sequelize.col instead.
- */
-export class Fn extends SequelizeMethod {
-  constructor(fn: string, args: unknown[]);
-  public clone(): this;
-}
-
-export class Col extends SequelizeMethod {
-  public col: string;
-  constructor(col: string);
-}
-
-export class Cast extends SequelizeMethod {
-  public val: unknown;
-  public type: string;
-  constructor(val: unknown, type?: string);
-}
-
-export class Literal extends SequelizeMethod {
-  public val: unknown;
-  constructor(val: unknown);
-}
-
-export class Json extends SequelizeMethod {
-  public conditions: object;
-  public path: string;
-  public value: string | number | boolean;
-  constructor(conditionsOrPath: string | object, value?: string | number | boolean);
-}
-
-export class Where extends SequelizeMethod {
-  public attribute: object;
-  public comparator: string;
-  public logic: string | object;
-  constructor(attr: object, comparator: string, logic: string | object);
-  constructor(attr: object, logic: string | object);
-}
-
-export type AnyFunction = (...args: any[]) => any;
-
-/**
- * Returns all shallow properties that accept `undefined` or `null`.
- * Does not include Optional properties, only `undefined` or `null`.
- *
- * @example
- * type UndefinedProps = NullishPropertiesOf<{
- *   id: number | undefined,
- *   createdAt: string | undefined,
- *   firstName: string | null, // nullable properties are included
- *   lastName?: string, // optional properties are not included.
- * }>;
- *
- * // is equal to
- *
- * type UndefinedProps = 'id' | 'createdAt' | 'firstName';
- */
-export type NullishPropertiesOf<T> = {
-  [P in keyof T]-?: undefined extends T[P] ? P
-    : null extends T[P] ? P
-    : never
-}[keyof T];
-
-/**
- * Makes all shallow properties of an object `optional` if they accept `undefined` or `null` as a value.
- *
- * @example
- * type MyOptionalType = MakeUndefinedOptional<{
- *   id: number | undefined,
- *   firstName: string,
- *   lastName: string | null,
- * }>;
- *
- * // is equal to
- *
- * type MyOptionalType = {
- *   // this property is optional.
- *   id?: number | undefined,
- *   firstName: string,
- *   // this property is optional.
- *   lastName?: string | null,
- * };
- */
-// 'T extends any' is done to support https://github.com/sequelize/sequelize/issues/14129
-// source: https://stackoverflow.com/questions/51691235/typescript-map-union-type-to-another-union-type
-export type MakeNullishOptional<T extends object> = T extends any ? Optional<T, NullishPropertiesOf<T>> : never;
Index: ckend/node_modules/sequelize/types/utils/class-to-invokable.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/class-to-invokable.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-/**
- * Utility type for a class which can be called in addion to being used as a constructor.
- */
-interface Invokeable<Args extends Array<any>, Instance> {
-    (...args: Args): Instance;
-    new (...args: Args): Instance;
-}
-/**
- * Wraps a constructor to not need the `new` keyword using a proxy.
- * Only used for data types.
- *
- * @param {ProxyConstructor} Class The class instance to wrap as invocable.
- * @returns {Proxy} Wrapped class instance.
- * @private
- */
-export declare function classToInvokable<Args extends Array<any>, Instance extends object>(Class: new (...args: Args) => Instance): Invokeable<Args, Instance>;
-export {};
Index: ckend/node_modules/sequelize/types/utils/deprecations.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/deprecations.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-export declare const noTrueLogging: () => void;
-export declare const noStringOperators: () => void;
-export declare const noBoolOperatorAliases: () => void;
-export declare const noDoubleNestedGroup: () => void;
-export declare const unsupportedEngine: () => void;
Index: ckend/node_modules/sequelize/types/utils/join-sql-fragments.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/join-sql-fragments.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-import { SQLFragment } from '../generic/sql-fragment';
-/**
- * Joins an array with a single space, auto trimming when needed.
- *
- * Certain elements do not get leading/trailing spaces.
- *
- * @param {SQLFragment[]} array The array to be joined. Falsy values are skipped. If an
- * element is another array, this function will be called recursively on that array.
- * Otherwise, if a non-string, non-falsy value is present, a TypeError will be thrown.
- *
- * @returns {string} The joined string.
- *
- * @private
- */
-export declare function joinSQLFragments(array: SQLFragment[]): string;
-export declare class JoinSQLFragmentsError extends TypeError {
-    args: SQLFragment[];
-    fragment: any;
-    constructor(args: SQLFragment[], fragment: any, message: string);
-}
Index: ckend/node_modules/sequelize/types/utils/logger.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/logger.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-/**
- * @file Sequelize module for debug and deprecation messages.
- * It require a `context` for which messages will be printed.
- *
- * @module logging
- * @access package
- */
-import nodeDebug from 'debug';
-/**
- * The configuration for sequelize's logging interface.
- *
- * @access package
- */
-export interface LoggerConfig {
-    /**
-     * The context which the logger should log in.
-     *
-     * @default 'sequelize'
-     */
-    context?: string;
-}
-export declare class Logger {
-    protected config: LoggerConfig;
-    constructor({ context, ...rest }?: Partial<LoggerConfig>);
-    /**
-     * Logs a warning in the logger's context.
-     *
-     * @param message The message of the warning.
-     */
-    warn(message: string): void;
-    /**
-     * Uses node's util.inspect to stringify a value.
-     *
-     * @param value The value which should be inspected.
-     * @returns The string of the inspected value.
-     */
-    inspect(value: unknown): string;
-    /**
-     * Gets a debugger for a context.
-     *
-     * @param name The name of the context.
-     * @returns A debugger interace which can be used to debug.
-     */
-    debugContext(name: string): nodeDebug.Debugger;
-}
-export declare const logger: Logger;
Index: ckend/node_modules/sequelize/types/utils/set-required.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/set-required.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/**
- * Full credits to sindresorhus/type-fest
- *
- * https://github.com/sindresorhus/type-fest/blob/v0.8.1/source/set-required.d.ts
- *
- * Thank you!
- */
-export type SetRequired<BaseType, Keys extends keyof BaseType = keyof BaseType> =
-	// Pick just the keys that are not required from the base type.
-	Pick<BaseType, Exclude<keyof BaseType, Keys>> &
-	// Pick the keys that should be required from the base type and make them required.
-	Required<Pick<BaseType, Keys>> extends
-	// If `InferredType` extends the previous, then for each key, use the inferred type key.
-	infer InferredType
-		? {[KeyType in keyof InferredType]: InferredType[KeyType]}
-		: never;
Index: ckend/node_modules/sequelize/types/utils/sql.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/sql.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import type { AbstractDialect } from '../dialects/abstract/index.js';
-type BindOrReplacements = {
-    [key: string]: unknown;
-} | unknown[];
-/**
- * Inlines replacements in places where they would be valid SQL values.
- *
- * @param sqlString The SQL that contains the replacements
- * @param dialect The dialect of the SQL
- * @param replacements if provided, this method will replace ':named' replacements & positional replacements (?)
- *
- * @returns The SQL with replacements rewritten in their dialect-specific syntax.
- */
-export declare function injectReplacements(sqlString: string, dialect: AbstractDialect, replacements: BindOrReplacements): string;
-export {};
Index: ckend/node_modules/sequelize/types/utils/validator-extras.d.ts
===================================================================
--- backend/node_modules/sequelize/types/utils/validator-extras.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-// tslint:disable-next-line:no-implicit-dependencies
-import * as val from 'validator';
-
-type OrigValidator = typeof val;
-
-export interface Extensions {
-  notEmpty(str: string): boolean;
-  len(str: string, min: number, max: number): boolean;
-  isUrl(str: string): boolean;
-  isIPv6(str: string): boolean;
-  isIPv4(str: string): boolean;
-  notIn(str: string, values: string[]): boolean;
-  regex(str: string, pattern: string, modifiers: string): boolean;
-  notRegex(str: string, pattern: string, modifiers: string): boolean;
-  min(str: string, val: number): boolean;
-  max(str: string, val: number): boolean;
-  not(str: string, pattern: string, modifiers: string): boolean;
-  contains(str: string, elem: string[]): boolean;
-  notContains(str: string, elem: string[]): boolean;
-  is(str: string, pattern: string, modifiers: string): boolean;
-}
-export const extensions: Extensions;
-
-export interface Validator extends OrigValidator, Extensions {
-  contains(str: string, elem: string[]): boolean;
-}
-export const validator: Validator;
Index: ckend/node_modules/split2/LICENSE
===================================================================
--- backend/node_modules/split2/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-Copyright (c) 2014-2018, Matteo Collina <hello@matteocollina.com>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Index: ckend/node_modules/split2/README.md
===================================================================
--- backend/node_modules/split2/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-# Split2(matcher, mapper, options)
-
-![ci](https://github.com/mcollina/split2/workflows/ci/badge.svg)
-
-Break up a stream and reassemble it so that each line is a chunk.
-`split2` is inspired by [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) module,
-and it is totally API compatible with it.
-However, it is based on Node.js core [`Transform`](https://nodejs.org/api/stream.html#stream_new_stream_transform_options).
-
-`matcher` may be a `String`, or a `RegExp`. Example, read every line in a file ...
-
-``` js
-  fs.createReadStream(file)
-    .pipe(split2())
-    .on('data', function (line) {
-      //each chunk now is a separate line!
-    })
-
-```
-
-`split` takes the same arguments as `string.split` except it defaults to '/\r?\n/', and the optional `limit` paremeter is ignored.
-[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split)
-
-`split` takes an optional options object on it's third argument, which
-is directly passed as a
-[Transform](https://nodejs.org/api/stream.html#stream_new_stream_transform_options)
-option.
-
-Additionally, the `.maxLength` and `.skipOverflow` options are implemented, which set limits on the internal
-buffer size and the stream's behavior when the limit is exceeded. There is no limit unless `maxLength` is set. When
-the internal buffer size exceeds `maxLength`, the stream emits an error by default. You may also set `skipOverflow` to
-true to suppress the error and instead skip past any lines that cause the internal buffer to exceed `maxLength`.
-
-Calling `.destroy` will make the stream emit `close`. Use this to perform cleanup logic
-
-``` js
-var splitFile = function(filename) {
-  var file = fs.createReadStream(filename)
-
-  return file
-    .pipe(split2())
-    .on('close', function() {
-      // destroy the file stream in case the split stream was destroyed
-      file.destroy()
-    })
-}
-
-var stream = splitFile('my-file.txt')
-
-stream.destroy() // will destroy the input file stream
-```
-
-# NDJ - Newline Delimited Json
-
-`split2` accepts a function which transforms each line.
-
-``` js
-fs.createReadStream(file)
-  .pipe(split2(JSON.parse))
-  .on('data', function (obj) {
-    //each chunk now is a js object
-  })
-  .on("error", function(error) {
-    //handling parsing errors
-  })
-```
-
-However, in [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) the mapper
-is wrapped in a try-catch, while here it is not: if your parsing logic can throw, wrap it yourself. Otherwise, you can also use the stream error handling when mapper function throw.
-
-# License
-
-Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Index: ckend/node_modules/split2/bench.js
===================================================================
--- backend/node_modules/split2/bench.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-'use strict'
-
-const split = require('./')
-const bench = require('fastbench')
-const binarySplit = require('binary-split')
-const fs = require('fs')
-
-function benchSplit (cb) {
-  fs.createReadStream('package.json')
-    .pipe(split())
-    .on('end', cb)
-    .resume()
-}
-
-function benchBinarySplit (cb) {
-  fs.createReadStream('package.json')
-    .pipe(binarySplit())
-    .on('end', cb)
-    .resume()
-}
-
-const run = bench([
-  benchSplit,
-  benchBinarySplit
-], 10000)
-
-run(run)
Index: ckend/node_modules/split2/index.js
===================================================================
--- backend/node_modules/split2/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,141 +1,0 @@
-/*
-Copyright (c) 2014-2021, Matteo Collina <hello@matteocollina.com>
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
-IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-*/
-
-'use strict'
-
-const { Transform } = require('stream')
-const { StringDecoder } = require('string_decoder')
-const kLast = Symbol('last')
-const kDecoder = Symbol('decoder')
-
-function transform (chunk, enc, cb) {
-  let list
-  if (this.overflow) { // Line buffer is full. Skip to start of next line.
-    const buf = this[kDecoder].write(chunk)
-    list = buf.split(this.matcher)
-
-    if (list.length === 1) return cb() // Line ending not found. Discard entire chunk.
-
-    // Line ending found. Discard trailing fragment of previous line and reset overflow state.
-    list.shift()
-    this.overflow = false
-  } else {
-    this[kLast] += this[kDecoder].write(chunk)
-    list = this[kLast].split(this.matcher)
-  }
-
-  this[kLast] = list.pop()
-
-  for (let i = 0; i < list.length; i++) {
-    try {
-      push(this, this.mapper(list[i]))
-    } catch (error) {
-      return cb(error)
-    }
-  }
-
-  this.overflow = this[kLast].length > this.maxLength
-  if (this.overflow && !this.skipOverflow) {
-    cb(new Error('maximum buffer reached'))
-    return
-  }
-
-  cb()
-}
-
-function flush (cb) {
-  // forward any gibberish left in there
-  this[kLast] += this[kDecoder].end()
-
-  if (this[kLast]) {
-    try {
-      push(this, this.mapper(this[kLast]))
-    } catch (error) {
-      return cb(error)
-    }
-  }
-
-  cb()
-}
-
-function push (self, val) {
-  if (val !== undefined) {
-    self.push(val)
-  }
-}
-
-function noop (incoming) {
-  return incoming
-}
-
-function split (matcher, mapper, options) {
-  // Set defaults for any arguments not supplied.
-  matcher = matcher || /\r?\n/
-  mapper = mapper || noop
-  options = options || {}
-
-  // Test arguments explicitly.
-  switch (arguments.length) {
-    case 1:
-      // If mapper is only argument.
-      if (typeof matcher === 'function') {
-        mapper = matcher
-        matcher = /\r?\n/
-      // If options is only argument.
-      } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) {
-        options = matcher
-        matcher = /\r?\n/
-      }
-      break
-
-    case 2:
-      // If mapper and options are arguments.
-      if (typeof matcher === 'function') {
-        options = mapper
-        mapper = matcher
-        matcher = /\r?\n/
-      // If matcher and options are arguments.
-      } else if (typeof mapper === 'object') {
-        options = mapper
-        mapper = noop
-      }
-  }
-
-  options = Object.assign({}, options)
-  options.autoDestroy = true
-  options.transform = transform
-  options.flush = flush
-  options.readableObjectMode = true
-
-  const stream = new Transform(options)
-
-  stream[kLast] = ''
-  stream[kDecoder] = new StringDecoder('utf8')
-  stream.matcher = matcher
-  stream.mapper = mapper
-  stream.maxLength = options.maxLength
-  stream.skipOverflow = options.skipOverflow || false
-  stream.overflow = false
-  stream._destroy = function (err, cb) {
-    // Weird Node v12 bug that we need to work around
-    this._writableState.errorEmitted = false
-    cb(err)
-  }
-
-  return stream
-}
-
-module.exports = split
Index: ckend/node_modules/split2/package.json
===================================================================
--- backend/node_modules/split2/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-{
-  "name": "split2",
-  "version": "4.2.0",
-  "description": "split a Text Stream into a Line Stream, using Stream 3",
-  "main": "index.js",
-  "scripts": {
-    "lint": "standard --verbose",
-    "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test.js",
-    "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js",
-    "test:report": "npm run lint && npm run unit:report",
-    "test": "npm run lint && npm run unit",
-    "legacy": "tape test.js"
-  },
-  "pre-commit": [
-    "test"
-  ],
-  "website": "https://github.com/mcollina/split2",
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/mcollina/split2.git"
-  },
-  "bugs": {
-    "url": "http://github.com/mcollina/split2/issues"
-  },
-  "engines": {
-    "node": ">= 10.x"
-  },
-  "author": "Matteo Collina <hello@matteocollina.com>",
-  "license": "ISC",
-  "devDependencies": {
-    "binary-split": "^1.0.3",
-    "callback-stream": "^1.1.0",
-    "fastbench": "^1.0.0",
-    "nyc": "^15.0.1",
-    "pre-commit": "^1.1.2",
-    "standard": "^17.0.0",
-    "tape": "^5.0.0"
-  }
-}
Index: ckend/node_modules/split2/test.js
===================================================================
--- backend/node_modules/split2/test.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,409 +1,0 @@
-'use strict'
-
-const test = require('tape')
-const split = require('./')
-const callback = require('callback-stream')
-const strcb = callback.bind(null, { decodeStrings: false })
-const objcb = callback.bind(null, { objectMode: true })
-
-test('split two lines on end', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello\nworld')
-})
-
-test('split two lines on two writes', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.write('hello')
-  input.write('\nworld')
-  input.end()
-})
-
-test('split four lines on three writes', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world', 'bye', 'world'])
-  }))
-
-  input.write('hello\nwor')
-  input.write('ld\nbye\nwo')
-  input.write('rld')
-  input.end()
-})
-
-test('accumulate multiple writes', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['helloworld'])
-  }))
-
-  input.write('hello')
-  input.write('world')
-  input.end()
-})
-
-test('split using a custom string matcher', function (t) {
-  t.plan(2)
-
-  const input = split('~')
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello~world')
-})
-
-test('split using a custom regexp matcher', function (t) {
-  t.plan(2)
-
-  const input = split(/~/)
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello~world')
-})
-
-test('support an option argument', function (t) {
-  t.plan(2)
-
-  const input = split({ highWaterMark: 2 })
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello\nworld')
-})
-
-test('support a mapper function', function (t) {
-  t.plan(2)
-
-  const a = { a: '42' }
-  const b = { b: '24' }
-
-  const input = split(JSON.parse)
-
-  input.pipe(objcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, [a, b])
-  }))
-
-  input.write(JSON.stringify(a))
-  input.write('\n')
-  input.end(JSON.stringify(b))
-})
-
-test('split lines windows-style', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello\r\nworld')
-})
-
-test('splits a buffer', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end(Buffer.from('hello\nworld'))
-})
-
-test('do not end on undefined', function (t) {
-  t.plan(2)
-
-  const input = split(function (line) { })
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, [])
-  }))
-
-  input.end(Buffer.from('hello\nworld'))
-})
-
-test('has destroy method', function (t) {
-  t.plan(1)
-
-  const input = split(function (line) { })
-
-  input.on('close', function () {
-    t.ok(true, 'close emitted')
-    t.end()
-  })
-
-  input.destroy()
-})
-
-test('support custom matcher and mapper', function (t) {
-  t.plan(4)
-
-  const a = { a: '42' }
-  const b = { b: '24' }
-  const input = split('~', JSON.parse)
-
-  t.equal(input.matcher, '~')
-  t.equal(typeof input.mapper, 'function')
-
-  input.pipe(objcb(function (err, list) {
-    t.notOk(err, 'no errors')
-    t.deepEqual(list, [a, b])
-  }))
-
-  input.write(JSON.stringify(a))
-  input.write('~')
-  input.end(JSON.stringify(b))
-})
-
-test('support custom matcher and options', function (t) {
-  t.plan(6)
-
-  const input = split('~', { highWaterMark: 1024 })
-
-  t.equal(input.matcher, '~')
-  t.equal(typeof input.mapper, 'function')
-  t.equal(input._readableState.highWaterMark, 1024)
-  t.equal(input._writableState.highWaterMark, 1024)
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello~world')
-})
-
-test('support mapper and options', function (t) {
-  t.plan(6)
-
-  const a = { a: '42' }
-  const b = { b: '24' }
-  const input = split(JSON.parse, { highWaterMark: 1024 })
-
-  t.ok(input.matcher instanceof RegExp, 'matcher is RegExp')
-  t.equal(typeof input.mapper, 'function')
-  t.equal(input._readableState.highWaterMark, 1024)
-  t.equal(input._writableState.highWaterMark, 1024)
-
-  input.pipe(objcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, [a, b])
-  }))
-
-  input.write(JSON.stringify(a))
-  input.write('\n')
-  input.end(JSON.stringify(b))
-})
-
-test('split utf8 chars', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['烫烫烫', '锟斤拷'])
-  }))
-
-  const buf = Buffer.from('烫烫烫\r\n锟斤拷', 'utf8')
-  for (let i = 0; i < buf.length; ++i) {
-    input.write(buf.slice(i, i + 1))
-  }
-  input.end()
-})
-
-test('split utf8 chars 2by2', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['烫烫烫', '烫烫烫'])
-  }))
-
-  const str = '烫烫烫\r\n烫烫烫'
-  const buf = Buffer.from(str, 'utf8')
-  for (let i = 0; i < buf.length; i += 2) {
-    input.write(buf.slice(i, i + 2))
-  }
-  input.end()
-})
-
-test('split lines when the \n comes at the end of a chunk', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.write('hello\n')
-  input.end('world')
-})
-
-test('truncated utf-8 char', function (t) {
-  t.plan(2)
-
-  const input = split()
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['烫' + Buffer.from('e7', 'hex').toString()])
-  }))
-
-  const str = '烫烫'
-  const buf = Buffer.from(str, 'utf8')
-
-  input.write(buf.slice(0, 3))
-  input.end(buf.slice(3, 4))
-})
-
-test('maximum buffer limit', function (t) {
-  t.plan(1)
-
-  const input = split({ maxLength: 2 })
-  input.on('error', function (err) {
-    t.ok(err)
-  })
-
-  input.resume()
-
-  input.write('hey')
-})
-
-test('readable highWaterMark', function (t) {
-  const input = split()
-  t.equal(input._readableState.highWaterMark, 16)
-  t.end()
-})
-
-test('maxLength < chunk size', function (t) {
-  t.plan(2)
-
-  const input = split({ maxLength: 2 })
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['a', 'b'])
-  }))
-
-  input.end('a\nb')
-})
-
-test('maximum buffer limit w/skip', function (t) {
-  t.plan(2)
-
-  const input = split({ maxLength: 2, skipOverflow: true })
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['a', 'b', 'c'])
-  }))
-
-  input.write('a\n123')
-  input.write('456')
-  input.write('789\nb\nc')
-  input.end()
-})
-
-test("don't modify the options object", function (t) {
-  t.plan(2)
-
-  const options = {}
-  const input = split(options)
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.same(options, {})
-  }))
-
-  input.end()
-})
-
-test('mapper throws flush', function (t) {
-  t.plan(1)
-  const error = new Error()
-  const input = split(function () {
-    throw error
-  })
-
-  input.on('error', (err, list) => {
-    t.same(err, error)
-  })
-  input.end('hello')
-})
-
-test('mapper throws on transform', function (t) {
-  t.plan(1)
-
-  const error = new Error()
-  const input = split(function (l) {
-    throw error
-  })
-
-  input.on('error', (err) => {
-    t.same(err, error)
-  })
-  input.write('a')
-  input.write('\n')
-  input.end('b')
-})
-
-test('supports Symbol.split', function (t) {
-  t.plan(2)
-
-  const input = split({
-    [Symbol.split] (str) {
-      return str.split('~')
-    }
-  })
-
-  input.pipe(strcb(function (err, list) {
-    t.error(err)
-    t.deepEqual(list, ['hello', 'world'])
-  }))
-
-  input.end('hello~world')
-})
Index: ckend/node_modules/toposort-class/.eslintrc
===================================================================
--- backend/node_modules/toposort-class/.eslintrc	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-{
-  "parser": "babel-eslint",
-  "env":    {
-    "node":    true,
-    "mocha":   true,
-    "browser": true
-  },
-  "rules":  {
-    "strict":                   0, //taken care of automatically by babel
-    "no-mixed-spaces-and-tabs": 2,
-    "eqeqeq":                   2,
-    "no-eq-null":               2,
-    "consistent-this":          2,
-    "guard-for-in":             2,
-    "no-caller":                2,
-    "no-underscore-dangle":     2,
-    "curly":                    2,
-    "no-multi-spaces":          2,
-    "key-spacing": 0,
-    "no-return-assign":         2,
-    "consistent-return":        2,
-    "no-shadow":                2,
-    "comma-dangle":             2,
-    "no-use-before-define":     2,
-    "no-empty":                 2,
-    "new-parens":               2,
-    "no-cond-assign":           2,
-    "no-fallthrough":           2,
-    "new-cap":                  2,
-    "no-loop-func":             2,
-    "no-unreachable":           2,
-    "no-process-exit":          2,
-    "quotes":                   [2, "double", "avoid-escape"]
-  }
-}
Index: ckend/node_modules/toposort-class/.gitattributes
===================================================================
--- backend/node_modules/toposort-class/.gitattributes	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-* eol=lf
Index: ckend/node_modules/toposort-class/.npmignore
===================================================================
--- backend/node_modules/toposort-class/.npmignore	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,44 +1,0 @@
-# Development stuff
-test/
-Gruntfile.js
-
-# Configuration files
-.jscsrc
-.jshintrc
-.travis.yml
-bower.json
-
-# Logs
-logs
-*.log
-
-# Runtime data
-pids
-*.pid
-*.seed
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directory
-# Deployed apps should consider commenting this line out:
-# see https://npmjs.org/doc/faq.html#Should-I-check-my-node_modules-folder-into-git
-node_modules
-
-# JetBrains exclusion
-.idea
-
-# Source files
-src
-
-# example files
-examples
Index: ckend/node_modules/toposort-class/LICENSE
===================================================================
--- backend/node_modules/toposort-class/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Gustavo Henke and Aaron Trent
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
Index: ckend/node_modules/toposort-class/README.md
===================================================================
--- backend/node_modules/toposort-class/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-# Toposort
-[![Build Status](http://img.shields.io/travis/gustavohenke/toposort.svg?branch=master&style=flat)](https://travis-ci.org/gustavohenke/toposort)
-[![Dependency Status](http://img.shields.io/gemnasium/gustavohenke/toposort.png?style=flat)](https://gemnasium.com/gustavohenke/toposort)
-
-__Sorting directed acyclic graphs, for Node.js, io.js and the browser__
-_This was originally done by Marcel Klehr. [Why not checkout his original repo?](https://github.com/marcelklehr/toposort)_
-
-## Installation
-There are a few ways for installing Toposort. Here are them:
-
-* Via NPM: `npm install toposort-class`
-* Via Bower: `bower install toposort`
-* Via Git: `git clone git://github.com/gustavohenke/toposort.git`
-* [Direct download](https://raw.githubusercontent.com/gustavohenke/toposort/master/build/toposort.js) ([Minified](https://raw.githubusercontent.com/gustavohenke/toposort/master/build/toposort.min.js)) for use in the browser
-
-## Example
-Let's say you have the following dependency graph:
-
-* Plugin depends on Backbone and jQuery UI Button;
-* Backbone depends on jQuery and Underscore;
-* jQuery UI Button depends on jQuery UI Core and jQuery UI Widget;
-* jQuery UI Widget and jQuery UI Core depend on jQuery;
-* jQuery and Underscore don't depend on anyone.
-
-Now, how would you sort this in a way that each asset will be correctly placed? You'll probably need the following sorting:
-
-* `jQuery`, `jQuery UI Core`, `jQuery UI Widget`, `jQuery UI Button`, `Underscore`, `Backbone`, `Plugin`
-
-You can achieve it with the following code, using `toposort-class`:
-```javascript
-var Toposort = require('toposort-class'),
-	t = new Toposort();
-
-t.add("jquery-ui-core", "jquery")
- .add("jquery-ui-widget", "jquery")
- .add("jquery-ui-button", ["jquery-ui-core", "jquery-ui-widget"])
- .add("plugin", ["backbone", "jquery-ui-button"])
- .add("backbone", ["underscore", "jquery"]);
-
-console.log(t.sort().reverse());
-
-/* Will output:
- * ['jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-button', 'underscore', 'backbone', 'plugin']
- *
- * And you're done.
- */
-```
-
-## Usage
-CommonJS (Node.js and io.js):
-```javascript
-var Toposort = require('toposort-class'),
-	t = new Toposort();
-```
-
-Browser with AMD:
-```javascript
-define("myModule", ["Toposort"], function(Toposort) {
-    var t = new Toposort();
-});
-```
-
-Browser without AMD:
-```javascript
-var t = new window.Toposort();
-```
-
-or whatever global object there is instead of `window`.
-
-## API
-
-#### `.add(item, deps)`
-* _{String}_ `item` - The name of the dependent item that is being added
-* _{Array|String}_ `deps` - A dependency or list of dependencies of `item`
-
-__Returns:__ _{Toposort}_ The Toposort instance, for chaining.
-
-#### `.sort()`
-__Returns:__ _{Array}_ The list of dependencies topologically sorted.
-
-This method will check for cyclic dependencies, like "A is dependent of A".
-
-#### `.clear()`
-__Returns:__ _{Toposort}_ The Toposort instance, for chaining.
-
-Clears all edges, effectively resetting the instance.
-
-#### `.Toposort`
-
-Reference to the Toposort constructor.
-
-## Legal
-MIT License
Index: ckend/node_modules/toposort-class/benchmark/0.3.1/toposort.js
===================================================================
--- backend/node_modules/toposort-class/benchmark/0.3.1/toposort.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,128 +1,0 @@
-!function() {
-    "use strict";
-
-    /**
-     * Topological sort class.
-     * Original by Marcel Klehr, contributed by Gustavo Henke.
-     *
-     * @class
-     * @since   0.1.0
-     * @see     https://github.com/marcelklehr/toposort
-     * @author  Marcel Klehr <mklehr@gmx.net>
-     *
-     * @see     https://github.com/gustavohenke/toposort
-     * @author  Gustavo Henke <gustavo@injoin.com.br>
-     */
-    function Toposort() {
-        var self = this;
-        var edges = [];
-
-        /**
-         * Adds dependency edges.
-         *
-         * @since   0.1.0
-         * @param   {String} item               An dependent name. Must be an string and not empty
-         * @param   {String[]|String} [deps]    An dependency or array of dependencies
-         * @returns {Toposort}                  The Toposort instance
-         */
-        self.add = function( item, deps ) {
-            if( typeof item !== "string" || !item ) {
-                throw new TypeError( "Dependent name must be given as a not empty string" );
-            }
-
-            deps = Array.isArray( deps ) ? deps.slice() : [deps];
-            if( deps.length ) {
-                deps.forEach( function( dep ) {
-                    if( typeof dep !== "string" || !dep ) {
-                        throw new TypeError(
-                            "Dependency name must be given as a not empty string"
-                        );
-                    }
-
-                    edges.push( [item, dep] );
-                } );
-            } else {
-                edges.push( [item] );
-            }
-
-            return self;
-        };
-
-        /**
-         * Runs the toposorting and return an ordered array of strings
-         *
-         * @since   0.1.0
-         * @returns {String[]}  The list of items topologically sorted.
-         */
-        self.sort = function() {
-            var nodes = [];
-            var sorted = [];
-
-            edges.forEach( function( edge ) {
-                edge.forEach( function( n ) {
-                    if( nodes.indexOf( n ) === -1 ) {
-                        nodes.push( n );
-                    }
-                } );
-            } );
-
-            function visit( node, predecessors, i ) {
-                var index, predsCopy;
-                predecessors = predecessors || [];
-
-                if( predecessors.indexOf( node ) > -1 ) {
-                    throw new Error(
-                        "Cyclic dependency found. '" + node + "' is dependent of itself.\n" +
-                        "Dependency Chain: " + predecessors.join( " -> " ) + " => " + node
-                    );
-                }
-
-                index = nodes.indexOf( node );
-                if( index === -1 ) {
-                    return i;
-                }
-
-                nodes.splice( index, 1 );
-                if( predecessors.length === 0 ) {
-                    i--;
-                }
-
-                predsCopy = predecessors.slice();
-                predsCopy.push( node );
-
-                edges.filter( function( e ) {
-                    return e[0] === node;
-                } ).forEach( function( e ) {
-                    i = visit( e[1], predsCopy, i );
-                } );
-
-                sorted.unshift( node );
-                return i;
-            }
-
-            for( var i = 0; i < nodes.length; i++ ) {
-                i = visit( nodes[i], null, i );
-            }
-
-            return sorted;
-        };
-
-    }
-
-    if( typeof module === "object" && module && typeof module.exports === "object" ) {
-        // Expose toposort to CommonJS loaders (aka Node)
-        module.exports = exports.Toposort = Toposort;
-    } else {
-        // Expose toposort to AMD loaders (aka Require.js)
-        if( typeof define === "function" && define.amd ) {
-            define( function() {
-                return Toposort;
-            } );
-        }
-
-        // Expose toposort as a browser global
-        if( typeof window === "object" ) {
-            window.Toposort = Toposort;
-        }
-    }
-}();
Index: ckend/node_modules/toposort-class/benchmark/README.md
===================================================================
--- backend/node_modules/toposort-class/benchmark/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-Benchmarks
-==========
-
-Since I'm obsessed with performance, here is a tiny benchmark comparing the performance of the 0.3.1 version and the current version written in ES6
-
-| Description                  | Library         | Op/s       |  %   |
-|------------------------------|-----------------|-----------:|-----:|
-| simple dependency chains     | 0.3.1 version   | 66,722.22  | 8%   |
-|                              | current version | 837,416.60 | 100% |
-| slightly more complex chains | 0.3.1 version   | 24,530.85  | 6%   |
-|                              | current version | 386,620.50 | 100% |
Index: ckend/node_modules/toposort-class/benchmark/general.js
===================================================================
--- backend/node_modules/toposort-class/benchmark/general.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-var Toposort = require( "../index.js" );
-var OldToposort = require( "./0.3.1/toposort.js" );
-
-suite( "simple dependency chains", function() {
-    set( "delay", 0 );
-    set( "mintime", 1750 );
-
-    bench( "0.3.1 version", function() {
-        var t = new OldToposort();
-
-        t.add( "3", "2" )
-            .add( "2", "1" )
-            .add( "6", "5" )
-            .add( "5", ["2", "4"] ).sort();
-    } );
-
-    bench( "current version", function() {
-        var t = new Toposort();
-
-        t.add( "3", "2" )
-            .add( "2", "1" )
-            .add( "6", "5" )
-            .add( "5", ["2", "4"] ).sort();
-    } );
-} );
-
-suite( "slightly more complex chains", function() {
-    set( "delay", 0 );
-    set( "mintime", 1750 );
-
-    bench( "0.3.1 version", function() {
-        var t = new OldToposort();
-
-        t.add( "3", "1" )
-            .add( "2", "3" )
-            .add( "4", ["2", "3"] )
-            .add( "5", ["3", "4"] )
-            .add( "6", ["3", "4", "5"] )
-            .add( "7", "1" )
-            .add( "8", ["1", "2", "3", "4", "5"] )
-            .add( "9", ["8", "6", "7"] ).sort();
-    } );
-
-    bench( "current version", function() {
-        var t = new Toposort();
-
-        t.add( "3", "1" )
-            .add( "2", "3" )
-            .add( "4", ["2", "3"] )
-            .add( "5", ["3", "4"] )
-            .add( "6", ["3", "4", "5"] )
-            .add( "7", "1" )
-            .add( "8", ["1", "2", "3", "4", "5"] )
-            .add( "9", ["8", "6", "7"] ).sort();
-    } );
-} );
Index: ckend/node_modules/toposort-class/benchmark/results.csv
===================================================================
--- backend/node_modules/toposort-class/benchmark/results.csv	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-2015-07-31 22:37:51,"simple dependency chains","0.3.1 version",2295.217390,153142
-2015-07-31 22:37:51,"simple dependency chains","current version",3299.024625,2762658
-2015-07-31 22:37:51,"slightly more complex chains","0.3.1 version",3313.337523,81279
-2015-07-31 22:37:51,"slightly more complex chains","current version",1797.512029,694955
Index: ckend/node_modules/toposort-class/build/toposort.js
===================================================================
--- backend/node_modules/toposort-class/build/toposort.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,281 +1,0 @@
-/****
- * The MIT License (MIT)
- *
- * Copyright (c) 2015 Gustavo Henke and Aaron Trent
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- *
- ****/
-(function( global, factory ) {
-    if( typeof define === "function" && define.amd ) {
-        define( "Toposort", ["exports", "module"], factory );
-    } else if( typeof exports !== "undefined" && typeof module !== "undefined" ) {
-        factory( exports, module );
-    } else {
-        var mod = {
-            exports: {}
-        };
-        factory( mod.exports, mod );
-        global.Toposort = mod.exports;
-    }
-})( this, function( exports, module ) {
-    "use strict";
-
-    function _classCallCheck( instance, Constructor ) {
-        if( !(instance instanceof Constructor) ) {
-            throw new TypeError( "Cannot call a class as a function" );
-        }
-    }
-
-    var Toposort = (function() {
-        function Toposort() {
-            _classCallCheck( this, Toposort );
-
-            this.edges = [];
-            this.Toposort = Toposort;
-        }
-
-        /**
-         * Adds dependency edges.
-         *
-         * @since   0.1.0
-         * @param   {String} item               An dependent name. Must be an string and not empty
-         * @param   {String[]|String} [deps]    An dependency or array of dependencies
-         * @returns {Toposort}                  The Toposort instance
-         */
-
-        Toposort.prototype.add = function add( item, deps ) {
-            if( typeof item !== "string" || !item ) {
-                throw new TypeError( "Dependent name must be given as a not empty string" );
-            }
-
-            deps = Array.isArray( deps ) ? deps : [deps];
-
-            if( deps.length > 0 ) {
-                for( var _iterator = deps, _isArray = Array.isArray( _iterator ), _i = 0, _iterator = _isArray ?
-                                                                                                      _iterator :
-                                                                                                      _iterator[Symbol.iterator](); ; ) {
-                    var _ref;
-
-                    if( _isArray ) {
-                        if( _i >= _iterator.length ) {
-                            break;
-                        }
-                        _ref = _iterator[_i++];
-                    } else {
-                        _i = _iterator.next();
-                        if( _i.done ) {
-                            break;
-                        }
-                        _ref = _i.value;
-                    }
-
-                    var dep = _ref;
-
-                    if( typeof dep !== "string" || !dep ) {
-                        throw new TypeError( "Dependency name must be given as a not empty string" );
-                    }
-
-                    this.edges.push( [item, dep] );
-                }
-            } else {
-                this.edges.push( [item] );
-            }
-
-            return this;
-        };
-
-        /**
-         * Runs the toposorting and return an ordered array of strings
-         *
-         * @since   0.1.0
-         * @returns {String[]}  The list of items topologically sorted.
-         */
-
-        Toposort.prototype.sort = function sort() {
-            var _this = this;
-
-            var nodes = [];
-
-            //accumulate unique nodes into a large list
-            for( var _iterator2 = this.edges, _isArray2 = Array.isArray( _iterator2 ), _i2 = 0, _iterator2 = _isArray2 ?
-                                                                                                             _iterator2 :
-                                                                                                             _iterator2[Symbol.iterator](); ; ) {
-                var _ref2;
-
-                if( _isArray2 ) {
-                    if( _i2 >= _iterator2.length ) {
-                        break;
-                    }
-                    _ref2 = _iterator2[_i2++];
-                } else {
-                    _i2 = _iterator2.next();
-                    if( _i2.done ) {
-                        break;
-                    }
-                    _ref2 = _i2.value;
-                }
-
-                var edge = _ref2;
-
-                for( var _iterator3 = edge, _isArray3 = Array.isArray( _iterator3 ), _i3 = 0, _iterator3 = _isArray3 ?
-                                                                                                           _iterator3 :
-                                                                                                           _iterator3[Symbol.iterator](); ; ) {
-                    var _ref3;
-
-                    if( _isArray3 ) {
-                        if( _i3 >= _iterator3.length ) {
-                            break;
-                        }
-                        _ref3 = _iterator3[_i3++];
-                    } else {
-                        _i3 = _iterator3.next();
-                        if( _i3.done ) {
-                            break;
-                        }
-                        _ref3 = _i3.value;
-                    }
-
-                    var node = _ref3;
-
-                    if( nodes.indexOf( node ) === -1 ) {
-                        nodes.push( node );
-                    }
-                }
-            }
-
-            //initialize the placement of nodes into the sorted array at the end
-            var place = nodes.length;
-
-            //initialize the sorted array with the same length as the unique nodes array
-            var sorted = new Array( nodes.length );
-
-            //define a visitor function that recursively traverses dependencies.
-            var visit = function visit( node, predecessors ) {
-                //check if a node is dependent of itself
-                if( predecessors.length !== 0 && predecessors.indexOf( node ) !== -1 ) {
-                    throw new Error( "Cyclic dependency found. " + node + " is dependent of itself.\nDependency chain: "
-                                     + predecessors.join( " -> " ) + " => " + node );
-                }
-
-                var index = nodes.indexOf( node );
-
-                //if the node still exists, traverse its dependencies
-                if( index !== -1 ) {
-                    var copy = false;
-
-                    //mark the node as false to exclude it from future iterations
-                    nodes[index] = false;
-
-                    //loop through all edges and follow dependencies of the current node
-                    for( var _iterator4 = _this.edges, _isArray4 = Array.isArray( _iterator4 ), _i4 = 0, _iterator4 = _isArray4 ?
-                                                                                                                      _iterator4 :
-                                                                                                                      _iterator4[Symbol.iterator](); ; ) {
-                        var _ref4;
-
-                        if( _isArray4 ) {
-                            if( _i4 >= _iterator4.length ) {
-                                break;
-                            }
-                            _ref4 = _iterator4[_i4++];
-                        } else {
-                            _i4 = _iterator4.next();
-                            if( _i4.done ) {
-                                break;
-                            }
-                            _ref4 = _i4.value;
-                        }
-
-                        var edge = _ref4;
-
-                        if( edge[0] === node ) {
-                            //lazily create a copy of predecessors with the current node concatenated onto it
-                            copy = copy || predecessors.concat( [node] );
-
-                            //recurse to node dependencies
-                            visit( edge[1], copy );
-                        }
-                    }
-
-                    //add the node to the next place in the sorted array
-                    sorted[--place] = node;
-                }
-            };
-
-            for( var i = 0; i < nodes.length; i++ ) {
-                var node = nodes[i];
-
-                //ignore nodes that have been excluded
-                if( node !== false ) {
-                    //mark the node as false to exclude it from future iterations
-                    nodes[i] = false;
-
-                    //loop through all edges and follow dependencies of the current node
-                    for( var _iterator5 = this.edges, _isArray5 = Array.isArray( _iterator5 ), _i5 = 0, _iterator5 = _isArray5 ?
-                                                                                                                     _iterator5 :
-                                                                                                                     _iterator5[Symbol.iterator](); ; ) {
-                        var _ref5;
-
-                        if( _isArray5 ) {
-                            if( _i5 >= _iterator5.length ) {
-                                break;
-                            }
-                            _ref5 = _iterator5[_i5++];
-                        } else {
-                            _i5 = _iterator5.next();
-                            if( _i5.done ) {
-                                break;
-                            }
-                            _ref5 = _i5.value;
-                        }
-
-                        var edge = _ref5;
-
-                        if( edge[0] === node ) {
-                            //recurse to node dependencies
-                            visit( edge[1], [node] );
-                        }
-                    }
-
-                    //add the node to the next place in the sorted array
-                    sorted[--place] = node;
-                }
-            }
-
-            return sorted;
-        };
-
-        /**
-         * Clears edges
-         *
-         * @since   0.4.0
-         * @returns {Toposort}                  The Toposort instance
-         */
-
-        Toposort.prototype.clear = function clear() {
-            this.edges = [];
-
-            return this;
-        };
-
-        return Toposort;
-    })();
-
-    module.exports = Toposort;
-} );
Index: ckend/node_modules/toposort-class/build/toposort.min.js
===================================================================
--- backend/node_modules/toposort-class/build/toposort.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(a,b){if("function"==typeof define&&define.amd)define("Toposort",["exports","module"],b);else if("undefined"!=typeof exports&&"undefined"!=typeof module)b(exports,module);else{var c={exports:{}};b(c.exports,c),a.Toposort=c.exports}}(this,function(a,b){"use strict";function c(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var d=function(){function a(){c(this,a),this.edges=[],this.Toposort=a}return a.prototype.add=function(a,b){if("string"!=typeof a||!a)throw new TypeError("Dependent name must be given as a not empty string");if(b=Array.isArray(b)?b:[b],b.length>0)for(var c=b,d=Array.isArray(c),e=0,c=d?c:c[Symbol.iterator]();;){var f;if(d){if(e>=c.length)break;f=c[e++]}else{if(e=c.next(),e.done)break;f=e.value}var g=f;if("string"!=typeof g||!g)throw new TypeError("Dependency name must be given as a not empty string");this.edges.push([a,g])}else this.edges.push([a]);return this},a.prototype.sort=function(){for(var a=this,b=[],c=this.edges,d=Array.isArray(c),e=0,c=d?c:c[Symbol.iterator]();;){var f;if(d){if(e>=c.length)break;f=c[e++]}else{if(e=c.next(),e.done)break;f=e.value}for(var g=f,h=g,i=Array.isArray(h),j=0,h=i?h:h[Symbol.iterator]();;){var k;if(i){if(j>=h.length)break;k=h[j++]}else{if(j=h.next(),j.done)break;k=j.value}var l=k;-1===b.indexOf(l)&&b.push(l)}}for(var m=b.length,n=new Array(b.length),o=function u(c,d){if(0!==d.length&&-1!==d.indexOf(c))throw new Error("Cyclic dependency found. "+c+" is dependent of itself.\nDependency chain: "+d.join(" -> ")+" => "+c);var e=b.indexOf(c);if(-1!==e){var f=!1;b[e]=!1;for(var g=a.edges,h=Array.isArray(g),i=0,g=h?g:g[Symbol.iterator]();;){var j;if(h){if(i>=g.length)break;j=g[i++]}else{if(i=g.next(),i.done)break;j=i.value}var k=j;k[0]===c&&(f=f||d.concat([c]),u(k[1],f))}n[--m]=c}},p=0;p<b.length;p++){var l=b[p];if(l!==!1){b[p]=!1;for(var q=this.edges,r=Array.isArray(q),s=0,q=r?q:q[Symbol.iterator]();;){var t;if(r){if(s>=q.length)break;t=q[s++]}else{if(s=q.next(),s.done)break;t=s.value}var g=t;g[0]===l&&o(g[1],[l])}n[--m]=l}}return n},a.prototype.clear=function(){return this.edges=[],this},a}();b.exports=d});
Index: ckend/node_modules/toposort-class/index.js
===================================================================
--- backend/node_modules/toposort-class/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-module.exports = require( './build/toposort.js' );
Index: ckend/node_modules/toposort-class/package.json
===================================================================
--- backend/node_modules/toposort-class/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,46 +1,0 @@
-{
-  "name":            "toposort-class",
-  "version":         "1.0.1",
-  "description":     "Topological sort of directed acyclic graphs (like dependecy lists)",
-  "main":            "./index.js",
-  "devDependencies": {
-    "babel-eslint":         "^4.0.5",
-    "eslint":               "^1.0.0",
-    "grunt":                "^0.4.5",
-    "grunt-babel":          "^5.0.1",
-    "grunt-banner":         "^0.4.0",
-    "grunt-contrib-clean":  "^0.6.0",
-    "grunt-contrib-uglify": "^0.9.1",
-    "matcha":               "^0.6.0",
-    "mocha":                "^2.2.5"
-  },
-  "scripts":         {
-    "test":           "mocha -b test",
-    "eslint":         "eslint src/toposort.js test/spec.js Gruntfile.js",
-    "benchmark":      "matcha benchmark/general.js",
-    "benchmark-save": "matcha -R csv benchmark/general.js > benchmark/results.csv"
-  },
-  "repository":      {
-    "type": "git",
-    "url":  "https://github.com/gustavohenke/toposort.git"
-  },
-  "keywords":        [
-    "topological",
-    "sort",
-    "sorting",
-    "graphs",
-    "graph",
-    "dependency",
-    "list",
-    "dependencies",
-    "acyclic",
-    "browser"
-  ],
-  "author":          [
-    "Marcel Klehr <mklehr@gmx.net>",
-    "Gustavo Henke <gustavo@injoin.com.br>",
-    "Aaron Trent <novacrazy@gmail.com>"
-  ],
-  "license":         "MIT",
-  "readmeFilename":  "README.md"
-}
Index: ckend/node_modules/uuid/CHANGELOG.md
===================================================================
--- backend/node_modules/uuid/CHANGELOG.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,229 +1,0 @@
-# Changelog
-
-All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-
-### [8.3.2](https://github.com/uuidjs/uuid/compare/v8.3.1...v8.3.2) (2020-12-08)
-
-### Bug Fixes
-
-- lazy load getRandomValues ([#537](https://github.com/uuidjs/uuid/issues/537)) ([16c8f6d](https://github.com/uuidjs/uuid/commit/16c8f6df2f6b09b4d6235602d6a591188320a82e)), closes [#536](https://github.com/uuidjs/uuid/issues/536)
-
-### [8.3.1](https://github.com/uuidjs/uuid/compare/v8.3.0...v8.3.1) (2020-10-04)
-
-### Bug Fixes
-
-- support expo>=39.0.0 ([#515](https://github.com/uuidjs/uuid/issues/515)) ([c65a0f3](https://github.com/uuidjs/uuid/commit/c65a0f3fa73b901959d638d1e3591dfacdbed867)), closes [#375](https://github.com/uuidjs/uuid/issues/375)
-
-## [8.3.0](https://github.com/uuidjs/uuid/compare/v8.2.0...v8.3.0) (2020-07-27)
-
-### Features
-
-- add parse/stringify/validate/version/NIL APIs ([#479](https://github.com/uuidjs/uuid/issues/479)) ([0e6c10b](https://github.com/uuidjs/uuid/commit/0e6c10ba1bf9517796ff23c052fc0468eedfd5f4)), closes [#475](https://github.com/uuidjs/uuid/issues/475) [#478](https://github.com/uuidjs/uuid/issues/478) [#480](https://github.com/uuidjs/uuid/issues/480) [#481](https://github.com/uuidjs/uuid/issues/481) [#180](https://github.com/uuidjs/uuid/issues/180)
-
-## [8.2.0](https://github.com/uuidjs/uuid/compare/v8.1.0...v8.2.0) (2020-06-23)
-
-### Features
-
-- improve performance of v1 string representation ([#453](https://github.com/uuidjs/uuid/issues/453)) ([0ee0b67](https://github.com/uuidjs/uuid/commit/0ee0b67c37846529c66089880414d29f3ae132d5))
-- remove deprecated v4 string parameter ([#454](https://github.com/uuidjs/uuid/issues/454)) ([88ce3ca](https://github.com/uuidjs/uuid/commit/88ce3ca0ba046f60856de62c7ce03f7ba98ba46c)), closes [#437](https://github.com/uuidjs/uuid/issues/437)
-- support jspm ([#473](https://github.com/uuidjs/uuid/issues/473)) ([e9f2587](https://github.com/uuidjs/uuid/commit/e9f2587a92575cac31bc1d4ae944e17c09756659))
-
-### Bug Fixes
-
-- prepare package exports for webpack 5 ([#468](https://github.com/uuidjs/uuid/issues/468)) ([8d6e6a5](https://github.com/uuidjs/uuid/commit/8d6e6a5f8965ca9575eb4d92e99a43435f4a58a8))
-
-## [8.1.0](https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0) (2020-05-20)
-
-### Features
-
-- improve v4 performance by reusing random number array ([#435](https://github.com/uuidjs/uuid/issues/435)) ([bf4af0d](https://github.com/uuidjs/uuid/commit/bf4af0d711b4d2ed03d1f74fd12ad0baa87dc79d))
-- optimize V8 performance of bytesToUuid ([#434](https://github.com/uuidjs/uuid/issues/434)) ([e156415](https://github.com/uuidjs/uuid/commit/e156415448ec1af2351fa0b6660cfb22581971f2))
-
-### Bug Fixes
-
-- export package.json required by react-native and bundlers ([#449](https://github.com/uuidjs/uuid/issues/449)) ([be1c8fe](https://github.com/uuidjs/uuid/commit/be1c8fe9a3206c358e0059b52fafd7213aa48a52)), closes [ai/nanoevents#44](https://github.com/ai/nanoevents/issues/44#issuecomment-602010343) [#444](https://github.com/uuidjs/uuid/issues/444)
-
-## [8.0.0](https://github.com/uuidjs/uuid/compare/v7.0.3...v8.0.0) (2020-04-29)
-
-### ⚠ BREAKING CHANGES
-
-- For native ECMAScript Module (ESM) usage in Node.js only named exports are exposed, there is no more default export.
-
-  ```diff
-  -import uuid from 'uuid';
-  -console.log(uuid.v4()); // -> 'cd6c3b08-0adc-4f4b-a6ef-36087a1c9869'
-  +import { v4 as uuidv4 } from 'uuid';
-  +uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
-  ```
-
-- Deep requiring specific algorithms of this library like `require('uuid/v4')`, which has been deprecated in `uuid@7`, is no longer supported.
-
-  Instead use the named exports that this module exports.
-
-  For ECMAScript Modules (ESM):
-
-  ```diff
-  -import uuidv4 from 'uuid/v4';
-  +import { v4 as uuidv4 } from 'uuid';
-  uuidv4();
-  ```
-
-  For CommonJS:
-
-  ```diff
-  -const uuidv4 = require('uuid/v4');
-  +const { v4: uuidv4 } = require('uuid');
-  uuidv4();
-  ```
-
-### Features
-
-- native Node.js ES Modules (wrapper approach) ([#423](https://github.com/uuidjs/uuid/issues/423)) ([2d9f590](https://github.com/uuidjs/uuid/commit/2d9f590ad9701d692625c07ed62f0a0f91227991)), closes [#245](https://github.com/uuidjs/uuid/issues/245) [#419](https://github.com/uuidjs/uuid/issues/419) [#342](https://github.com/uuidjs/uuid/issues/342)
-- remove deep requires ([#426](https://github.com/uuidjs/uuid/issues/426)) ([daf72b8](https://github.com/uuidjs/uuid/commit/daf72b84ceb20272a81bb5fbddb05dd95922cbba))
-
-### Bug Fixes
-
-- add CommonJS syntax example to README quickstart section ([#417](https://github.com/uuidjs/uuid/issues/417)) ([e0ec840](https://github.com/uuidjs/uuid/commit/e0ec8402c7ad44b7ef0453036c612f5db513fda0))
-
-### [7.0.3](https://github.com/uuidjs/uuid/compare/v7.0.2...v7.0.3) (2020-03-31)
-
-### Bug Fixes
-
-- make deep require deprecation warning work in browsers ([#409](https://github.com/uuidjs/uuid/issues/409)) ([4b71107](https://github.com/uuidjs/uuid/commit/4b71107d8c0d2ef56861ede6403fc9dc35a1e6bf)), closes [#408](https://github.com/uuidjs/uuid/issues/408)
-
-### [7.0.2](https://github.com/uuidjs/uuid/compare/v7.0.1...v7.0.2) (2020-03-04)
-
-### Bug Fixes
-
-- make access to msCrypto consistent ([#393](https://github.com/uuidjs/uuid/issues/393)) ([8bf2a20](https://github.com/uuidjs/uuid/commit/8bf2a20f3565df743da7215eebdbada9d2df118c))
-- simplify link in deprecation warning ([#391](https://github.com/uuidjs/uuid/issues/391)) ([bb2c8e4](https://github.com/uuidjs/uuid/commit/bb2c8e4e9f4c5f9c1eaaf3ea59710c633cd90cb7))
-- update links to match content in readme ([#386](https://github.com/uuidjs/uuid/issues/386)) ([44f2f86](https://github.com/uuidjs/uuid/commit/44f2f86e9d2bbf14ee5f0f00f72a3db1292666d4))
-
-### [7.0.1](https://github.com/uuidjs/uuid/compare/v7.0.0...v7.0.1) (2020-02-25)
-
-### Bug Fixes
-
-- clean up esm builds for node and browser ([#383](https://github.com/uuidjs/uuid/issues/383)) ([59e6a49](https://github.com/uuidjs/uuid/commit/59e6a49e7ce7b3e8fb0f3ee52b9daae72af467dc))
-- provide browser versions independent from module system ([#380](https://github.com/uuidjs/uuid/issues/380)) ([4344a22](https://github.com/uuidjs/uuid/commit/4344a22e7aed33be8627eeaaf05360f256a21753)), closes [#378](https://github.com/uuidjs/uuid/issues/378)
-
-## [7.0.0](https://github.com/uuidjs/uuid/compare/v3.4.0...v7.0.0) (2020-02-24)
-
-### ⚠ BREAKING CHANGES
-
-- The default export, which used to be the v4() method but which was already discouraged in v3.x of this library, has been removed.
-- Explicitly note that deep imports of the different uuid version functions are deprecated and no longer encouraged and that ECMAScript module named imports should be used instead. Emit a deprecation warning for people who deep-require the different algorithm variants.
-- Remove builtin support for insecure random number generators in the browser. Users who want that will have to supply their own random number generator function.
-- Remove support for generating v3 and v5 UUIDs in Node.js<4.x
-- Convert code base to ECMAScript Modules (ESM) and release CommonJS build for node and ESM build for browser bundlers.
-
-### Features
-
-- add UMD build to npm package ([#357](https://github.com/uuidjs/uuid/issues/357)) ([4e75adf](https://github.com/uuidjs/uuid/commit/4e75adf435196f28e3fbbe0185d654b5ded7ca2c)), closes [#345](https://github.com/uuidjs/uuid/issues/345)
-- add various es module and CommonJS examples ([b238510](https://github.com/uuidjs/uuid/commit/b238510bf352463521f74bab175a3af9b7a42555))
-- ensure that docs are up-to-date in CI ([ee5e77d](https://github.com/uuidjs/uuid/commit/ee5e77db547474f5a8f23d6c857a6d399209986b))
-- hybrid CommonJS & ECMAScript modules build ([a3f078f](https://github.com/uuidjs/uuid/commit/a3f078faa0baff69ab41aed08e041f8f9c8993d0))
-- remove insecure fallback random number generator ([3a5842b](https://github.com/uuidjs/uuid/commit/3a5842b141a6e5de0ae338f391661e6b84b167c9)), closes [#173](https://github.com/uuidjs/uuid/issues/173)
-- remove support for pre Node.js v4 Buffer API ([#356](https://github.com/uuidjs/uuid/issues/356)) ([b59b5c5](https://github.com/uuidjs/uuid/commit/b59b5c5ecad271c5453f1a156f011671f6d35627))
-- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([c37a518](https://github.com/uuidjs/uuid/commit/c37a518e367ac4b6d0aa62dba1bc6ce9e85020f7)), closes [#338](https://github.com/uuidjs/uuid/issues/338)
-
-### Bug Fixes
-
-- add deep-require proxies for local testing and adjust tests ([#365](https://github.com/uuidjs/uuid/issues/365)) ([7fedc79](https://github.com/uuidjs/uuid/commit/7fedc79ac8fda4bfd1c566c7f05ef4ac13b2db48))
-- add note about removal of default export ([#372](https://github.com/uuidjs/uuid/issues/372)) ([12749b7](https://github.com/uuidjs/uuid/commit/12749b700eb49db8a9759fd306d8be05dbfbd58c)), closes [#370](https://github.com/uuidjs/uuid/issues/370)
-- deprecated deep requiring of the different algorithm versions ([#361](https://github.com/uuidjs/uuid/issues/361)) ([c0bdf15](https://github.com/uuidjs/uuid/commit/c0bdf15e417639b1aeb0b247b2fb11f7a0a26b23))
-
-## [3.4.0](https://github.com/uuidjs/uuid/compare/v3.3.3...v3.4.0) (2020-01-16)
-
-### Features
-
-- rename repository to github:uuidjs/uuid ([#351](https://github.com/uuidjs/uuid/issues/351)) ([e2d7314](https://github.com/uuidjs/uuid/commit/e2d7314)), closes [#338](https://github.com/uuidjs/uuid/issues/338)
-
-## [3.3.3](https://github.com/uuidjs/uuid/compare/v3.3.2...v3.3.3) (2019-08-19)
-
-### Bug Fixes
-
-- no longer run ci tests on node v4
-- upgrade dependencies
-
-## [3.3.2](https://github.com/uuidjs/uuid/compare/v3.3.1...v3.3.2) (2018-06-28)
-
-### Bug Fixes
-
-- typo ([305d877](https://github.com/uuidjs/uuid/commit/305d877))
-
-## [3.3.1](https://github.com/uuidjs/uuid/compare/v3.3.0...v3.3.1) (2018-06-28)
-
-### Bug Fixes
-
-- fix [#284](https://github.com/uuidjs/uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/uuidjs/uuid/commit/f2a60f2))
-
-# [3.3.0](https://github.com/uuidjs/uuid/compare/v3.2.1...v3.3.0) (2018-06-22)
-
-### Bug Fixes
-
-- assignment to readonly property to allow running in strict mode ([#270](https://github.com/uuidjs/uuid/issues/270)) ([d062fdc](https://github.com/uuidjs/uuid/commit/d062fdc))
-- fix [#229](https://github.com/uuidjs/uuid/issues/229) ([c9684d4](https://github.com/uuidjs/uuid/commit/c9684d4))
-- Get correct version of IE11 crypto ([#274](https://github.com/uuidjs/uuid/issues/274)) ([153d331](https://github.com/uuidjs/uuid/commit/153d331))
-- mem issue when generating uuid ([#267](https://github.com/uuidjs/uuid/issues/267)) ([c47702c](https://github.com/uuidjs/uuid/commit/c47702c))
-
-### Features
-
-- enforce Conventional Commit style commit messages ([#282](https://github.com/uuidjs/uuid/issues/282)) ([cc9a182](https://github.com/uuidjs/uuid/commit/cc9a182))
-
-## [3.2.1](https://github.com/uuidjs/uuid/compare/v3.2.0...v3.2.1) (2018-01-16)
-
-### Bug Fixes
-
-- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b))
-
-# [3.2.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.2.0) (2018-01-16)
-
-### Bug Fixes
-
-- remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/uuidjs/uuid/commit/09fa824))
-- use msCrypto if available. Fixes [#241](https://github.com/uuidjs/uuid/issues/241) ([#247](https://github.com/uuidjs/uuid/issues/247)) ([1fef18b](https://github.com/uuidjs/uuid/commit/1fef18b))
-
-### Features
-
-- Add v3 Support ([#217](https://github.com/uuidjs/uuid/issues/217)) ([d94f726](https://github.com/uuidjs/uuid/commit/d94f726))
-
-# [3.1.0](https://github.com/uuidjs/uuid/compare/v3.1.0...v3.0.1) (2017-06-17)
-
-### Bug Fixes
-
-- (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183)
-- Fix typo (#178)
-- Simple typo fix (#165)
-
-### Features
-
-- v5 support in CLI (#197)
-- V5 support (#188)
-
-# 3.0.1 (2016-11-28)
-
-- split uuid versions into separate files
-
-# 3.0.0 (2016-11-17)
-
-- remove .parse and .unparse
-
-# 2.0.0
-
-- Removed uuid.BufferClass
-
-# 1.4.0
-
-- Improved module context detection
-- Removed public RNG functions
-
-# 1.3.2
-
-- Improve tests and handling of v1() options (Issue #24)
-- Expose RNG option to allow for perf testing with different generators
-
-# 1.3.0
-
-- Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
-- Support for node.js crypto API
-- De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code
Index: ckend/node_modules/uuid/CONTRIBUTING.md
===================================================================
--- backend/node_modules/uuid/CONTRIBUTING.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-# Contributing
-
-Please feel free to file GitHub Issues or propose Pull Requests. We're always happy to discuss improvements to this library!
-
-## Testing
-
-```shell
-npm test
-```
-
-## Releasing
-
-Releases are supposed to be done from master, version bumping is automated through [`standard-version`](https://github.com/conventional-changelog/standard-version):
-
-```shell
-npm run release -- --dry-run  # verify output manually
-npm run release               # follow the instructions from the output of this command
-```
Index: ckend/node_modules/uuid/LICENSE.md
===================================================================
--- backend/node_modules/uuid/LICENSE.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2010-2020 Robert Kieffer and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/uuid/README.md
===================================================================
--- backend/node_modules/uuid/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,505 +1,0 @@
-<!--
-  -- This file is auto-generated from README_js.md. Changes should be made there.
-  -->
-
-# uuid [![CI](https://github.com/uuidjs/uuid/workflows/CI/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ACI) [![Browser](https://github.com/uuidjs/uuid/workflows/Browser/badge.svg)](https://github.com/uuidjs/uuid/actions?query=workflow%3ABrowser)
-
-For the creation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDs
-
-- **Complete** - Support for RFC4122 version 1, 3, 4, and 5 UUIDs
-- **Cross-platform** - Support for ...
-  - CommonJS, [ECMAScript Modules](#ecmascript-modules) and [CDN builds](#cdn-builds)
-  - Node 8, 10, 12, 14
-  - Chrome, Safari, Firefox, Edge, IE 11 browsers
-  - Webpack and rollup.js module bundlers
-  - [React Native / Expo](#react-native--expo)
-- **Secure** - Cryptographically-strong random values
-- **Small** - Zero-dependency, small footprint, plays nice with "tree shaking" packagers
-- **CLI** - Includes the [`uuid` command line](#command-line) utility
-
-**Upgrading from `uuid@3.x`?** Your code is probably okay, but check out [Upgrading From `uuid@3.x`](#upgrading-from-uuid3x) for details.
-
-## Quickstart
-
-To create a random UUID...
-
-**1. Install**
-
-```shell
-npm install uuid
-```
-
-**2. Create a UUID** (ES6 module syntax)
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
-```
-
-... or using CommonJS syntax:
-
-```javascript
-const { v4: uuidv4 } = require('uuid');
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-For timestamp UUIDs, namespace UUIDs, and other options read on ...
-
-## API Summary
-
-|  |  |  |
-| --- | --- | --- |
-| [`uuid.NIL`](#uuidnil) | The nil UUID string (all zeros) | New in `uuid@8.3` |
-| [`uuid.parse()`](#uuidparsestr) | Convert UUID string to array of bytes | New in `uuid@8.3` |
-| [`uuid.stringify()`](#uuidstringifyarr-offset) | Convert array of bytes to UUID string | New in `uuid@8.3` |
-| [`uuid.v1()`](#uuidv1options-buffer-offset) | Create a version 1 (timestamp) UUID |  |
-| [`uuid.v3()`](#uuidv3name-namespace-buffer-offset) | Create a version 3 (namespace w/ MD5) UUID |  |
-| [`uuid.v4()`](#uuidv4options-buffer-offset) | Create a version 4 (random) UUID |  |
-| [`uuid.v5()`](#uuidv5name-namespace-buffer-offset) | Create a version 5 (namespace w/ SHA-1) UUID |  |
-| [`uuid.validate()`](#uuidvalidatestr) | Test a string to see if it is a valid UUID | New in `uuid@8.3` |
-| [`uuid.version()`](#uuidversionstr) | Detect RFC version of a UUID | New in `uuid@8.3` |
-
-## API
-
-### uuid.NIL
-
-The nil UUID string (all zeros).
-
-Example:
-
-```javascript
-import { NIL as NIL_UUID } from 'uuid';
-
-NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000'
-```
-
-### uuid.parse(str)
-
-Convert UUID string to array of bytes
-
-|           |                                          |
-| --------- | ---------------------------------------- |
-| `str`     | A valid UUID `String`                    |
-| _returns_ | `Uint8Array[16]`                         |
-| _throws_  | `TypeError` if `str` is not a valid UUID |
-
-Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left &Rarr; right order of hex-pairs in UUID strings. As shown in the example below.
-
-Example:
-
-```javascript
-import { parse as uuidParse } from 'uuid';
-
-// Parse a UUID
-const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b');
-
-// Convert to hex strings to show byte order (for documentation purposes)
-[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ 
-  // [
-  //   '6e', 'c0', 'bd', '7f',
-  //   '11', 'c0', '43', 'da',
-  //   '97', '5e', '2a', '8a',
-  //   'd9', 'eb', 'ae', '0b'
-  // ]
-```
-
-### uuid.stringify(arr[, offset])
-
-Convert array of bytes to UUID string
-
-|                |                                                                              |
-| -------------- | ---------------------------------------------------------------------------- |
-| `arr`          | `Array`-like collection of 16 values (starting from `offset`) between 0-255. |
-| [`offset` = 0] | `Number` Starting index in the Array                                         |
-| _returns_      | `String`                                                                     |
-| _throws_       | `TypeError` if a valid UUID string cannot be generated                       |
-
-Note: Ordering of values in the byte arrays used by `parse()` and `stringify()` follows the left &Rarr; right order of hex-pairs in UUID strings. As shown in the example below.
-
-Example:
-
-```javascript
-import { stringify as uuidStringify } from 'uuid';
-
-const uuidBytes = [
-  0x6e,
-  0xc0,
-  0xbd,
-  0x7f,
-  0x11,
-  0xc0,
-  0x43,
-  0xda,
-  0x97,
-  0x5e,
-  0x2a,
-  0x8a,
-  0xd9,
-  0xeb,
-  0xae,
-  0x0b,
-];
-
-uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
-```
-
-### uuid.v1([options[, buffer[, offset]]])
-
-Create an RFC version 1 (timestamp) UUID
-
-|  |  |
-| --- | --- |
-| [`options`] | `Object` with one or more of the following properties: |
-| [`options.node` ] | RFC "node" field as an `Array[6]` of byte values (per 4.1.6) |
-| [`options.clockseq`] | RFC "clock sequence" as a `Number` between 0 - 0x3fff |
-| [`options.msecs`] | RFC "timestamp" field (`Number` of milliseconds, unix epoch) |
-| [`options.nsecs`] | RFC "timestamp" field (`Number` of nanseconds to add to `msecs`, should be 0-10,000) |
-| [`options.random`] | `Array` of 16 random bytes (0-255) |
-| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-| _throws_ | `Error` if more than 10M UUIDs/sec are requested |
-
-Note: The default [node id](https://tools.ietf.org/html/rfc4122#section-4.1.6) (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process.
-
-Note: `options.random` and `options.rng` are only meaningful on the very first call to `v1()`, where they may be passed to initialize the internal `node` and `clockseq` fields.
-
-Example:
-
-```javascript
-import { v1 as uuidv1 } from 'uuid';
-
-uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d'
-```
-
-Example using `options`:
-
-```javascript
-import { v1 as uuidv1 } from 'uuid';
-
-const v1options = {
-  node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
-  clockseq: 0x1234,
-  msecs: new Date('2011-11-01').getTime(),
-  nsecs: 5678,
-};
-uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
-```
-
-### uuid.v3(name, namespace[, buffer[, offset]])
-
-Create an RFC version 3 (namespace w/ MD5) UUID
-
-API is identical to `v5()`, but uses "v3" instead.
-
-&#x26a0;&#xfe0f; Note: Per the RFC, "_If backward compatibility is not an issue, SHA-1 [Version 5] is preferred_."
-
-### uuid.v4([options[, buffer[, offset]]])
-
-Create an RFC version 4 (random) UUID
-
-|  |  |
-| --- | --- |
-| [`options`] | `Object` with one or more of the following properties: |
-| [`options.random`] | `Array` of 16 random bytes (0-255) |
-| [`options.rng`] | Alternative to `options.random`, a `Function` that returns an `Array` of 16 random bytes (0-255) |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-
-Example:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-Example using predefined `random` values:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-
-const v4options = {
-  random: [
-    0x10,
-    0x91,
-    0x56,
-    0xbe,
-    0xc4,
-    0xfb,
-    0xc1,
-    0xea,
-    0x71,
-    0xb4,
-    0xef,
-    0xe1,
-    0x67,
-    0x1c,
-    0x58,
-    0x36,
-  ],
-};
-uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
-```
-
-### uuid.v5(name, namespace[, buffer[, offset]])
-
-Create an RFC version 5 (namespace w/ SHA-1) UUID
-
-|  |  |
-| --- | --- |
-| `name` | `String \| Array` |
-| `namespace` | `String \| Array[16]` Namespace UUID |
-| [`buffer`] | `Array \| Buffer` If specified, uuid will be written here in byte-form, starting at `offset` |
-| [`offset` = 0] | `Number` Index to start writing UUID bytes in `buffer` |
-| _returns_ | UUID `String` if no `buffer` is specified, otherwise returns `buffer` |
-
-Note: The RFC `DNS` and `URL` namespaces are available as `v5.DNS` and `v5.URL`.
-
-Example with custom namespace:
-
-```javascript
-import { v5 as uuidv5 } from 'uuid';
-
-// Define a custom namespace.  Readers, create your own using something like
-// https://www.uuidgenerator.net/
-const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
-
-uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
-```
-
-Example with RFC `URL` namespace:
-
-```javascript
-import { v5 as uuidv5 } from 'uuid';
-
-uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
-```
-
-### uuid.validate(str)
-
-Test a string to see if it is a valid UUID
-
-|           |                                                     |
-| --------- | --------------------------------------------------- |
-| `str`     | `String` to validate                                |
-| _returns_ | `true` if string is a valid UUID, `false` otherwise |
-
-Example:
-
-```javascript
-import { validate as uuidValidate } from 'uuid';
-
-uuidValidate('not a UUID'); // ⇨ false
-uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true
-```
-
-Using `validate` and `version` together it is possible to do per-version validation, e.g. validate for only v4 UUIds.
-
-```javascript
-import { version as uuidVersion } from 'uuid';
-import { validate as uuidValidate } from 'uuid';
-
-function uuidValidateV4(uuid) {
-  return uuidValidate(uuid) && uuidVersion(uuid) === 4;
-}
-
-const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210';
-const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836';
-
-uuidValidateV4(v4Uuid); // ⇨ true
-uuidValidateV4(v1Uuid); // ⇨ false
-```
-
-### uuid.version(str)
-
-Detect RFC version of a UUID
-
-|           |                                          |
-| --------- | ---------------------------------------- |
-| `str`     | A valid UUID `String`                    |
-| _returns_ | `Number` The RFC version of the UUID     |
-| _throws_  | `TypeError` if `str` is not a valid UUID |
-
-Example:
-
-```javascript
-import { version as uuidVersion } from 'uuid';
-
-uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1
-uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4
-```
-
-## Command Line
-
-UUIDs can be generated from the command line using `uuid`.
-
-```shell
-$ uuid
-ddeb27fb-d9a0-4624-be4d-4615062daed4
-```
-
-The default is to generate version 4 UUIDS, however the other versions are supported. Type `uuid --help` for details:
-
-```shell
-$ uuid --help
-
-Usage:
-  uuid
-  uuid v1
-  uuid v3 <name> <namespace uuid>
-  uuid v4
-  uuid v5 <name> <namespace uuid>
-  uuid --help
-
-Note: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs
-defined by RFC4122
-```
-
-## ECMAScript Modules
-
-This library comes with [ECMAScript Modules](https://www.ecma-international.org/ecma-262/6.0/#sec-modules) (ESM) support for Node.js versions that support it ([example](./examples/node-esmodules/)) as well as bundlers like [rollup.js](https://rollupjs.org/guide/en/#tree-shaking) ([example](./examples/browser-rollup/)) and [webpack](https://webpack.js.org/guides/tree-shaking/) ([example](./examples/browser-webpack/)) (targeting both, Node.js and browser environments).
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-```
-
-To run the examples you must first create a dist build of this library in the module root:
-
-```shell
-npm run build
-```
-
-## CDN Builds
-
-### ECMAScript Modules
-
-To load this module directly into modern browsers that [support loading ECMAScript Modules](https://caniuse.com/#feat=es6-module) you can make use of [jspm](https://jspm.org/):
-
-```html
-<script type="module">
-  import { v4 as uuidv4 } from 'https://jspm.dev/uuid';
-  console.log(uuidv4()); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
-</script>
-```
-
-### UMD
-
-To load this module directly into older browsers you can use the [UMD (Universal Module Definition)](https://github.com/umdjs/umd) builds from any of the following CDNs:
-
-**Using [UNPKG](https://unpkg.com/uuid@latest/dist/umd/)**:
-
-```html
-<script src="https://unpkg.com/uuid@latest/dist/umd/uuidv4.min.js"></script>
-```
-
-**Using [jsDelivr](https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/)**:
-
-```html
-<script src="https://cdn.jsdelivr.net/npm/uuid@latest/dist/umd/uuidv4.min.js"></script>
-```
-
-**Using [cdnjs](https://cdnjs.com/libraries/uuid)**:
-
-```html
-<script src="https://cdnjs.cloudflare.com/ajax/libs/uuid/8.1.0/uuidv4.min.js"></script>
-```
-
-These CDNs all provide the same [`uuidv4()`](#uuidv4options-buffer-offset) method:
-
-```html
-<script>
-  uuidv4(); // ⇨ '55af1e37-0734-46d8-b070-a1e42e4fc392'
-</script>
-```
-
-Methods for the other algorithms ([`uuidv1()`](#uuidv1options-buffer-offset), [`uuidv3()`](#uuidv3name-namespace-buffer-offset) and [`uuidv5()`](#uuidv5name-namespace-buffer-offset)) are available from the files `uuidv1.min.js`, `uuidv3.min.js` and `uuidv5.min.js` respectively.
-
-## "getRandomValues() not supported"
-
-This error occurs in environments where the standard [`crypto.getRandomValues()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues) API is not supported. This issue can be resolved by adding an appropriate polyfill:
-
-### React Native / Expo
-
-1. Install [`react-native-get-random-values`](https://github.com/LinusU/react-native-get-random-values#readme)
-1. Import it _before_ `uuid`. Since `uuid` might also appear as a transitive dependency of some other imports it's safest to just import `react-native-get-random-values` as the very first thing in your entry point:
-
-```javascript
-import 'react-native-get-random-values';
-import { v4 as uuidv4 } from 'uuid';
-```
-
-Note: If you are using Expo, you must be using at least `react-native-get-random-values@1.5.0` and `expo@39.0.0`.
-
-### Web Workers / Service Workers (Edge <= 18)
-
-[In Edge <= 18, Web Crypto is not supported in Web Workers or Service Workers](https://caniuse.com/#feat=cryptography) and we are not aware of a polyfill (let us know if you find one, please).
-
-## Upgrading From `uuid@7.x`
-
-### Only Named Exports Supported When Using with Node.js ESM
-
-`uuid@7.x` did not come with native ECMAScript Module (ESM) support for Node.js. Importing it in Node.js ESM consequently imported the CommonJS source with a default export. This library now comes with true Node.js ESM support and only provides named exports.
-
-Instead of doing:
-
-```javascript
-import uuid from 'uuid';
-uuid.v4();
-```
-
-you will now have to use the named exports:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4();
-```
-
-### Deep Requires No Longer Supported
-
-Deep requires like `require('uuid/v4')` [which have been deprecated in `uuid@7.x`](#deep-requires-now-deprecated) are no longer supported.
-
-## Upgrading From `uuid@3.x`
-
-"_Wait... what happened to `uuid@4.x` - `uuid@6.x`?!?_"
-
-In order to avoid confusion with RFC [version 4](#uuidv4options-buffer-offset) and [version 5](#uuidv5name-namespace-buffer-offset) UUIDs, and a possible [version 6](http://gh.peabody.io/uuidv6/), releases 4 thru 6 of this module have been skipped.
-
-### Deep Requires Now Deprecated
-
-`uuid@3.x` encouraged the use of deep requires to minimize the bundle size of browser builds:
-
-```javascript
-const uuidv4 = require('uuid/v4'); // <== NOW DEPRECATED!
-uuidv4();
-```
-
-As of `uuid@7.x` this library now provides ECMAScript modules builds, which allow packagers like Webpack and Rollup to do "tree-shaking" to remove dead code. Instead, use the `import` syntax:
-
-```javascript
-import { v4 as uuidv4 } from 'uuid';
-uuidv4();
-```
-
-... or for CommonJS:
-
-```javascript
-const { v4: uuidv4 } = require('uuid');
-uuidv4();
-```
-
-### Default Export Removed
-
-`uuid@3.x` was exporting the Version 4 UUID method as a default export:
-
-```javascript
-const uuid = require('uuid'); // <== REMOVED!
-```
-
-This usage pattern was already discouraged in `uuid@3.x` and has been removed in `uuid@7.x`.
-
-----
-Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd)
Index: ckend/node_modules/uuid/dist/bin/uuid
===================================================================
--- backend/node_modules/uuid/dist/bin/uuid	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,2 +1,0 @@
-#!/usr/bin/env node
-require('../uuid-bin');
Index: ckend/node_modules/uuid/dist/esm-browser/index.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-export { default as v1 } from './v1.js';
-export { default as v3 } from './v3.js';
-export { default as v4 } from './v4.js';
-export { default as v5 } from './v5.js';
-export { default as NIL } from './nil.js';
-export { default as version } from './version.js';
-export { default as validate } from './validate.js';
-export { default as stringify } from './stringify.js';
-export { default as parse } from './parse.js';
Index: ckend/node_modules/uuid/dist/esm-browser/md5.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/md5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,215 +1,0 @@
-/*
- * Browser-compatible JavaScript MD5
- *
- * Modification of JavaScript MD5
- * https://github.com/blueimp/JavaScript-MD5
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- *
- * Based on
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-function md5(bytes) {
-  if (typeof bytes === 'string') {
-    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = new Uint8Array(msg.length);
-
-    for (var i = 0; i < msg.length; ++i) {
-      bytes[i] = msg.charCodeAt(i);
-    }
-  }
-
-  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));
-}
-/*
- * Convert an array of little-endian words to an array of bytes
- */
-
-
-function md5ToHexEncodedArray(input) {
-  var output = [];
-  var length32 = input.length * 32;
-  var hexTab = '0123456789abcdef';
-
-  for (var i = 0; i < length32; i += 8) {
-    var x = input[i >> 5] >>> i % 32 & 0xff;
-    var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
-    output.push(hex);
-  }
-
-  return output;
-}
-/**
- * Calculate output length with padding and bit length
- */
-
-
-function getOutputLength(inputLength8) {
-  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
-}
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-
-
-function wordsToMd5(x, len) {
-  /* append padding */
-  x[len >> 5] |= 0x80 << len % 32;
-  x[getOutputLength(len) - 1] = len;
-  var a = 1732584193;
-  var b = -271733879;
-  var c = -1732584194;
-  var d = 271733878;
-
-  for (var i = 0; i < x.length; i += 16) {
-    var olda = a;
-    var oldb = b;
-    var oldc = c;
-    var oldd = d;
-    a = md5ff(a, b, c, d, x[i], 7, -680876936);
-    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
-    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
-    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
-    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
-    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
-    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
-    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
-    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
-    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
-    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
-    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
-    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
-    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
-    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
-    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
-    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
-    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
-    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
-    b = md5gg(b, c, d, a, x[i], 20, -373897302);
-    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
-    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
-    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
-    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
-    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
-    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
-    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
-    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
-    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
-    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
-    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
-    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
-    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
-    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
-    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
-    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
-    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
-    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
-    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
-    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
-    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
-    d = md5hh(d, a, b, c, x[i], 11, -358537222);
-    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
-    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
-    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
-    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
-    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
-    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
-    a = md5ii(a, b, c, d, x[i], 6, -198630844);
-    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
-    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
-    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
-    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
-    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
-    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
-    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
-    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
-    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
-    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
-    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
-    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
-    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
-    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
-    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
-    a = safeAdd(a, olda);
-    b = safeAdd(b, oldb);
-    c = safeAdd(c, oldc);
-    d = safeAdd(d, oldd);
-  }
-
-  return [a, b, c, d];
-}
-/*
- * Convert an array bytes to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-
-
-function bytesToWords(input) {
-  if (input.length === 0) {
-    return [];
-  }
-
-  var length8 = input.length * 8;
-  var output = new Uint32Array(getOutputLength(length8));
-
-  for (var i = 0; i < length8; i += 8) {
-    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
-  }
-
-  return output;
-}
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-
-
-function safeAdd(x, y) {
-  var lsw = (x & 0xffff) + (y & 0xffff);
-  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return msw << 16 | lsw & 0xffff;
-}
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-
-
-function bitRotateLeft(num, cnt) {
-  return num << cnt | num >>> 32 - cnt;
-}
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-
-
-function md5cmn(q, a, b, x, s, t) {
-  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
-}
-
-function md5ff(a, b, c, d, x, s, t) {
-  return md5cmn(b & c | ~b & d, a, b, x, s, t);
-}
-
-function md5gg(a, b, c, d, x, s, t) {
-  return md5cmn(b & d | c & ~d, a, b, x, s, t);
-}
-
-function md5hh(a, b, c, d, x, s, t) {
-  return md5cmn(b ^ c ^ d, a, b, x, s, t);
-}
-
-function md5ii(a, b, c, d, x, s, t) {
-  return md5cmn(c ^ (b | ~d), a, b, x, s, t);
-}
-
-export default md5;
Index: ckend/node_modules/uuid/dist/esm-browser/nil.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/nil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export default '00000000-0000-0000-0000-000000000000';
Index: ckend/node_modules/uuid/dist/esm-browser/parse.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/parse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-import validate from './validate.js';
-
-function parse(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  var v;
-  var arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-export default parse;
Index: ckend/node_modules/uuid/dist/esm-browser/regex.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/regex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
Index: ckend/node_modules/uuid/dist/esm-browser/rng.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/rng.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-// Unique ID creation requires a high quality random # generator. In the browser we therefore
-// require the crypto API and do not support built-in fallback to lower quality random number
-// generators (like Math.random()).
-var getRandomValues;
-var rnds8 = new Uint8Array(16);
-export default function rng() {
-  // lazy load so that environments that need to polyfill have a chance to do so
-  if (!getRandomValues) {
-    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
-    // find the complete implementation of crypto (msCrypto) on IE11.
-    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
-
-    if (!getRandomValues) {
-      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
-    }
-  }
-
-  return getRandomValues(rnds8);
-}
Index: ckend/node_modules/uuid/dist/esm-browser/sha1.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/sha1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,96 +1,0 @@
-// Adapted from Chris Veness' SHA1 code at
-// http://www.movable-type.co.uk/scripts/sha1.html
-function f(s, x, y, z) {
-  switch (s) {
-    case 0:
-      return x & y ^ ~x & z;
-
-    case 1:
-      return x ^ y ^ z;
-
-    case 2:
-      return x & y ^ x & z ^ y & z;
-
-    case 3:
-      return x ^ y ^ z;
-  }
-}
-
-function ROTL(x, n) {
-  return x << n | x >>> 32 - n;
-}
-
-function sha1(bytes) {
-  var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
-  var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
-
-  if (typeof bytes === 'string') {
-    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = [];
-
-    for (var i = 0; i < msg.length; ++i) {
-      bytes.push(msg.charCodeAt(i));
-    }
-  } else if (!Array.isArray(bytes)) {
-    // Convert Array-like to Array
-    bytes = Array.prototype.slice.call(bytes);
-  }
-
-  bytes.push(0x80);
-  var l = bytes.length / 4 + 2;
-  var N = Math.ceil(l / 16);
-  var M = new Array(N);
-
-  for (var _i = 0; _i < N; ++_i) {
-    var arr = new Uint32Array(16);
-
-    for (var j = 0; j < 16; ++j) {
-      arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];
-    }
-
-    M[_i] = arr;
-  }
-
-  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
-  M[N - 1][14] = Math.floor(M[N - 1][14]);
-  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
-
-  for (var _i2 = 0; _i2 < N; ++_i2) {
-    var W = new Uint32Array(80);
-
-    for (var t = 0; t < 16; ++t) {
-      W[t] = M[_i2][t];
-    }
-
-    for (var _t = 16; _t < 80; ++_t) {
-      W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);
-    }
-
-    var a = H[0];
-    var b = H[1];
-    var c = H[2];
-    var d = H[3];
-    var e = H[4];
-
-    for (var _t2 = 0; _t2 < 80; ++_t2) {
-      var s = Math.floor(_t2 / 20);
-      var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;
-      e = d;
-      d = c;
-      c = ROTL(b, 30) >>> 0;
-      b = a;
-      a = T;
-    }
-
-    H[0] = H[0] + a >>> 0;
-    H[1] = H[1] + b >>> 0;
-    H[2] = H[2] + c >>> 0;
-    H[3] = H[3] + d >>> 0;
-    H[4] = H[4] + e >>> 0;
-  }
-
-  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
-}
-
-export default sha1;
Index: ckend/node_modules/uuid/dist/esm-browser/stringify.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/stringify.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-import validate from './validate.js';
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-
-var byteToHex = [];
-
-for (var i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr) {
-  var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!validate(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-export default stringify;
Index: ckend/node_modules/uuid/dist/esm-browser/v1.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/v1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-
-var _nodeId;
-
-var _clockseq; // Previous uuid creation time
-
-
-var _lastMSecs = 0;
-var _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  var i = buf && offset || 0;
-  var b = buf || new Array(16);
-  options = options || {};
-  var node = options.node || _nodeId;
-  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    var seedBytes = options.random || (options.rng || rng)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (var n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || stringify(b);
-}
-
-export default v1;
Index: ckend/node_modules/uuid/dist/esm-browser/v3.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/v3.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import v35 from './v35.js';
-import md5 from './md5.js';
-var v3 = v35('v3', 0x30, md5);
-export default v3;
Index: ckend/node_modules/uuid/dist/esm-browser/v35.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/v35.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-import stringify from './stringify.js';
-import parse from './parse.js';
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  var bytes = [];
-
-  for (var i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-export var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-export var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-export default function (name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = parse(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    var bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (var i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return stringify(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
Index: ckend/node_modules/uuid/dist/esm-browser/v4.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/v4.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js';
-
-function v4(options, buf, offset) {
-  options = options || {};
-  var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (var i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return stringify(rnds);
-}
-
-export default v4;
Index: ckend/node_modules/uuid/dist/esm-browser/v5.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/v5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import v35 from './v35.js';
-import sha1 from './sha1.js';
-var v5 = v35('v5', 0x50, sha1);
-export default v5;
Index: ckend/node_modules/uuid/dist/esm-browser/validate.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/validate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import REGEX from './regex.js';
-
-function validate(uuid) {
-  return typeof uuid === 'string' && REGEX.test(uuid);
-}
-
-export default validate;
Index: ckend/node_modules/uuid/dist/esm-browser/version.js
===================================================================
--- backend/node_modules/uuid/dist/esm-browser/version.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import validate from './validate.js';
-
-function version(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-export default version;
Index: ckend/node_modules/uuid/dist/esm-node/index.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-export { default as v1 } from './v1.js';
-export { default as v3 } from './v3.js';
-export { default as v4 } from './v4.js';
-export { default as v5 } from './v5.js';
-export { default as NIL } from './nil.js';
-export { default as version } from './version.js';
-export { default as validate } from './validate.js';
-export { default as stringify } from './stringify.js';
-export { default as parse } from './parse.js';
Index: ckend/node_modules/uuid/dist/esm-node/md5.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/md5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-import crypto from 'crypto';
-
-function md5(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return crypto.createHash('md5').update(bytes).digest();
-}
-
-export default md5;
Index: ckend/node_modules/uuid/dist/esm-node/nil.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/nil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export default '00000000-0000-0000-0000-000000000000';
Index: ckend/node_modules/uuid/dist/esm-node/parse.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/parse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-import validate from './validate.js';
-
-function parse(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  let v;
-  const arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-export default parse;
Index: ckend/node_modules/uuid/dist/esm-node/regex.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/regex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
Index: ckend/node_modules/uuid/dist/esm-node/rng.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/rng.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-import crypto from 'crypto';
-const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
-
-let poolPtr = rnds8Pool.length;
-export default function rng() {
-  if (poolPtr > rnds8Pool.length - 16) {
-    crypto.randomFillSync(rnds8Pool);
-    poolPtr = 0;
-  }
-
-  return rnds8Pool.slice(poolPtr, poolPtr += 16);
-}
Index: ckend/node_modules/uuid/dist/esm-node/sha1.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/sha1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-import crypto from 'crypto';
-
-function sha1(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return crypto.createHash('sha1').update(bytes).digest();
-}
-
-export default sha1;
Index: ckend/node_modules/uuid/dist/esm-node/stringify.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/stringify.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-import validate from './validate.js';
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-
-const byteToHex = [];
-
-for (let i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr, offset = 0) {
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!validate(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-export default stringify;
Index: ckend/node_modules/uuid/dist/esm-node/v1.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/v1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,95 +1,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-
-let _nodeId;
-
-let _clockseq; // Previous uuid creation time
-
-
-let _lastMSecs = 0;
-let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  let i = buf && offset || 0;
-  const b = buf || new Array(16);
-  options = options || {};
-  let node = options.node || _nodeId;
-  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    const seedBytes = options.random || (options.rng || rng)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (let n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || stringify(b);
-}
-
-export default v1;
Index: ckend/node_modules/uuid/dist/esm-node/v3.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/v3.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import v35 from './v35.js';
-import md5 from './md5.js';
-const v3 = v35('v3', 0x30, md5);
-export default v3;
Index: ckend/node_modules/uuid/dist/esm-node/v35.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/v35.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-import stringify from './stringify.js';
-import parse from './parse.js';
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  const bytes = [];
-
-  for (let i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-export const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-export const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-export default function (name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = parse(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    let bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (let i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return stringify(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
Index: ckend/node_modules/uuid/dist/esm-node/v4.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/v4.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-import rng from './rng.js';
-import stringify from './stringify.js';
-
-function v4(options, buf, offset) {
-  options = options || {};
-  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (let i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return stringify(rnds);
-}
-
-export default v4;
Index: ckend/node_modules/uuid/dist/esm-node/v5.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/v5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import v35 from './v35.js';
-import sha1 from './sha1.js';
-const v5 = v35('v5', 0x50, sha1);
-export default v5;
Index: ckend/node_modules/uuid/dist/esm-node/validate.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/validate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import REGEX from './regex.js';
-
-function validate(uuid) {
-  return typeof uuid === 'string' && REGEX.test(uuid);
-}
-
-export default validate;
Index: ckend/node_modules/uuid/dist/esm-node/version.js
===================================================================
--- backend/node_modules/uuid/dist/esm-node/version.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import validate from './validate.js';
-
-function version(uuid) {
-  if (!validate(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-export default version;
Index: ckend/node_modules/uuid/dist/index.js
===================================================================
--- backend/node_modules/uuid/dist/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-Object.defineProperty(exports, "v1", {
-  enumerable: true,
-  get: function () {
-    return _v.default;
-  }
-});
-Object.defineProperty(exports, "v3", {
-  enumerable: true,
-  get: function () {
-    return _v2.default;
-  }
-});
-Object.defineProperty(exports, "v4", {
-  enumerable: true,
-  get: function () {
-    return _v3.default;
-  }
-});
-Object.defineProperty(exports, "v5", {
-  enumerable: true,
-  get: function () {
-    return _v4.default;
-  }
-});
-Object.defineProperty(exports, "NIL", {
-  enumerable: true,
-  get: function () {
-    return _nil.default;
-  }
-});
-Object.defineProperty(exports, "version", {
-  enumerable: true,
-  get: function () {
-    return _version.default;
-  }
-});
-Object.defineProperty(exports, "validate", {
-  enumerable: true,
-  get: function () {
-    return _validate.default;
-  }
-});
-Object.defineProperty(exports, "stringify", {
-  enumerable: true,
-  get: function () {
-    return _stringify.default;
-  }
-});
-Object.defineProperty(exports, "parse", {
-  enumerable: true,
-  get: function () {
-    return _parse.default;
-  }
-});
-
-var _v = _interopRequireDefault(require("./v1.js"));
-
-var _v2 = _interopRequireDefault(require("./v3.js"));
-
-var _v3 = _interopRequireDefault(require("./v4.js"));
-
-var _v4 = _interopRequireDefault(require("./v5.js"));
-
-var _nil = _interopRequireDefault(require("./nil.js"));
-
-var _version = _interopRequireDefault(require("./version.js"));
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-var _parse = _interopRequireDefault(require("./parse.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
Index: ckend/node_modules/uuid/dist/md5-browser.js
===================================================================
--- backend/node_modules/uuid/dist/md5-browser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,223 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-/*
- * Browser-compatible JavaScript MD5
- *
- * Modification of JavaScript MD5
- * https://github.com/blueimp/JavaScript-MD5
- *
- * Copyright 2011, Sebastian Tschan
- * https://blueimp.net
- *
- * Licensed under the MIT license:
- * https://opensource.org/licenses/MIT
- *
- * Based on
- * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
- * Digest Algorithm, as defined in RFC 1321.
- * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for more info.
- */
-function md5(bytes) {
-  if (typeof bytes === 'string') {
-    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = new Uint8Array(msg.length);
-
-    for (let i = 0; i < msg.length; ++i) {
-      bytes[i] = msg.charCodeAt(i);
-    }
-  }
-
-  return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));
-}
-/*
- * Convert an array of little-endian words to an array of bytes
- */
-
-
-function md5ToHexEncodedArray(input) {
-  const output = [];
-  const length32 = input.length * 32;
-  const hexTab = '0123456789abcdef';
-
-  for (let i = 0; i < length32; i += 8) {
-    const x = input[i >> 5] >>> i % 32 & 0xff;
-    const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);
-    output.push(hex);
-  }
-
-  return output;
-}
-/**
- * Calculate output length with padding and bit length
- */
-
-
-function getOutputLength(inputLength8) {
-  return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;
-}
-/*
- * Calculate the MD5 of an array of little-endian words, and a bit length.
- */
-
-
-function wordsToMd5(x, len) {
-  /* append padding */
-  x[len >> 5] |= 0x80 << len % 32;
-  x[getOutputLength(len) - 1] = len;
-  let a = 1732584193;
-  let b = -271733879;
-  let c = -1732584194;
-  let d = 271733878;
-
-  for (let i = 0; i < x.length; i += 16) {
-    const olda = a;
-    const oldb = b;
-    const oldc = c;
-    const oldd = d;
-    a = md5ff(a, b, c, d, x[i], 7, -680876936);
-    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
-    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
-    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
-    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
-    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
-    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
-    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
-    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
-    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
-    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
-    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
-    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
-    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
-    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
-    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
-    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
-    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
-    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
-    b = md5gg(b, c, d, a, x[i], 20, -373897302);
-    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
-    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
-    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
-    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
-    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
-    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
-    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
-    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
-    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
-    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
-    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
-    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
-    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
-    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
-    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
-    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
-    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
-    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
-    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
-    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
-    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
-    d = md5hh(d, a, b, c, x[i], 11, -358537222);
-    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
-    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
-    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
-    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
-    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
-    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
-    a = md5ii(a, b, c, d, x[i], 6, -198630844);
-    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
-    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
-    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
-    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
-    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
-    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
-    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
-    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
-    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
-    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
-    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
-    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
-    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
-    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
-    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
-    a = safeAdd(a, olda);
-    b = safeAdd(b, oldb);
-    c = safeAdd(c, oldc);
-    d = safeAdd(d, oldd);
-  }
-
-  return [a, b, c, d];
-}
-/*
- * Convert an array bytes to an array of little-endian words
- * Characters >255 have their high-byte silently ignored.
- */
-
-
-function bytesToWords(input) {
-  if (input.length === 0) {
-    return [];
-  }
-
-  const length8 = input.length * 8;
-  const output = new Uint32Array(getOutputLength(length8));
-
-  for (let i = 0; i < length8; i += 8) {
-    output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;
-  }
-
-  return output;
-}
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-
-
-function safeAdd(x, y) {
-  const lsw = (x & 0xffff) + (y & 0xffff);
-  const msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return msw << 16 | lsw & 0xffff;
-}
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-
-
-function bitRotateLeft(num, cnt) {
-  return num << cnt | num >>> 32 - cnt;
-}
-/*
- * These functions implement the four basic operations the algorithm uses.
- */
-
-
-function md5cmn(q, a, b, x, s, t) {
-  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
-}
-
-function md5ff(a, b, c, d, x, s, t) {
-  return md5cmn(b & c | ~b & d, a, b, x, s, t);
-}
-
-function md5gg(a, b, c, d, x, s, t) {
-  return md5cmn(b & d | c & ~d, a, b, x, s, t);
-}
-
-function md5hh(a, b, c, d, x, s, t) {
-  return md5cmn(b ^ c ^ d, a, b, x, s, t);
-}
-
-function md5ii(a, b, c, d, x, s, t) {
-  return md5cmn(c ^ (b | ~d), a, b, x, s, t);
-}
-
-var _default = md5;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/md5.js
===================================================================
--- backend/node_modules/uuid/dist/md5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function md5(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return _crypto.default.createHash('md5').update(bytes).digest();
-}
-
-var _default = md5;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/nil.js
===================================================================
--- backend/node_modules/uuid/dist/nil.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _default = '00000000-0000-0000-0000-000000000000';
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/parse.js
===================================================================
--- backend/node_modules/uuid/dist/parse.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function parse(uuid) {
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  let v;
-  const arr = new Uint8Array(16); // Parse ########-....-....-....-............
-
-  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
-  arr[1] = v >>> 16 & 0xff;
-  arr[2] = v >>> 8 & 0xff;
-  arr[3] = v & 0xff; // Parse ........-####-....-....-............
-
-  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
-  arr[5] = v & 0xff; // Parse ........-....-####-....-............
-
-  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
-  arr[7] = v & 0xff; // Parse ........-....-....-####-............
-
-  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
-  arr[9] = v & 0xff; // Parse ........-....-....-....-############
-  // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
-
-  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
-  arr[11] = v / 0x100000000 & 0xff;
-  arr[12] = v >>> 24 & 0xff;
-  arr[13] = v >>> 16 & 0xff;
-  arr[14] = v >>> 8 & 0xff;
-  arr[15] = v & 0xff;
-  return arr;
-}
-
-var _default = parse;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/regex.js
===================================================================
--- backend/node_modules/uuid/dist/regex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/rng-browser.js
===================================================================
--- backend/node_modules/uuid/dist/rng-browser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,26 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rng;
-// Unique ID creation requires a high quality random # generator. In the browser we therefore
-// require the crypto API and do not support built-in fallback to lower quality random number
-// generators (like Math.random()).
-let getRandomValues;
-const rnds8 = new Uint8Array(16);
-
-function rng() {
-  // lazy load so that environments that need to polyfill have a chance to do so
-  if (!getRandomValues) {
-    // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. Also,
-    // find the complete implementation of crypto (msCrypto) on IE11.
-    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);
-
-    if (!getRandomValues) {
-      throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
-    }
-  }
-
-  return getRandomValues(rnds8);
-}
Index: ckend/node_modules/uuid/dist/rng.js
===================================================================
--- backend/node_modules/uuid/dist/rng.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rng;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
-
-let poolPtr = rnds8Pool.length;
-
-function rng() {
-  if (poolPtr > rnds8Pool.length - 16) {
-    _crypto.default.randomFillSync(rnds8Pool);
-
-    poolPtr = 0;
-  }
-
-  return rnds8Pool.slice(poolPtr, poolPtr += 16);
-}
Index: ckend/node_modules/uuid/dist/sha1-browser.js
===================================================================
--- backend/node_modules/uuid/dist/sha1-browser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,104 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-// Adapted from Chris Veness' SHA1 code at
-// http://www.movable-type.co.uk/scripts/sha1.html
-function f(s, x, y, z) {
-  switch (s) {
-    case 0:
-      return x & y ^ ~x & z;
-
-    case 1:
-      return x ^ y ^ z;
-
-    case 2:
-      return x & y ^ x & z ^ y & z;
-
-    case 3:
-      return x ^ y ^ z;
-  }
-}
-
-function ROTL(x, n) {
-  return x << n | x >>> 32 - n;
-}
-
-function sha1(bytes) {
-  const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
-  const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
-
-  if (typeof bytes === 'string') {
-    const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
-
-    bytes = [];
-
-    for (let i = 0; i < msg.length; ++i) {
-      bytes.push(msg.charCodeAt(i));
-    }
-  } else if (!Array.isArray(bytes)) {
-    // Convert Array-like to Array
-    bytes = Array.prototype.slice.call(bytes);
-  }
-
-  bytes.push(0x80);
-  const l = bytes.length / 4 + 2;
-  const N = Math.ceil(l / 16);
-  const M = new Array(N);
-
-  for (let i = 0; i < N; ++i) {
-    const arr = new Uint32Array(16);
-
-    for (let j = 0; j < 16; ++j) {
-      arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];
-    }
-
-    M[i] = arr;
-  }
-
-  M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);
-  M[N - 1][14] = Math.floor(M[N - 1][14]);
-  M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;
-
-  for (let i = 0; i < N; ++i) {
-    const W = new Uint32Array(80);
-
-    for (let t = 0; t < 16; ++t) {
-      W[t] = M[i][t];
-    }
-
-    for (let t = 16; t < 80; ++t) {
-      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
-    }
-
-    let a = H[0];
-    let b = H[1];
-    let c = H[2];
-    let d = H[3];
-    let e = H[4];
-
-    for (let t = 0; t < 80; ++t) {
-      const s = Math.floor(t / 20);
-      const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
-      e = d;
-      d = c;
-      c = ROTL(b, 30) >>> 0;
-      b = a;
-      a = T;
-    }
-
-    H[0] = H[0] + a >>> 0;
-    H[1] = H[1] + b >>> 0;
-    H[2] = H[2] + c >>> 0;
-    H[3] = H[3] + d >>> 0;
-    H[4] = H[4] + e >>> 0;
-  }
-
-  return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];
-}
-
-var _default = sha1;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/sha1.js
===================================================================
--- backend/node_modules/uuid/dist/sha1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _crypto = _interopRequireDefault(require("crypto"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function sha1(bytes) {
-  if (Array.isArray(bytes)) {
-    bytes = Buffer.from(bytes);
-  } else if (typeof bytes === 'string') {
-    bytes = Buffer.from(bytes, 'utf8');
-  }
-
-  return _crypto.default.createHash('sha1').update(bytes).digest();
-}
-
-var _default = sha1;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/stringify.js
===================================================================
--- backend/node_modules/uuid/dist/stringify.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,39 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-/**
- * Convert array of 16 byte values to UUID string format of the form:
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- */
-const byteToHex = [];
-
-for (let i = 0; i < 256; ++i) {
-  byteToHex.push((i + 0x100).toString(16).substr(1));
-}
-
-function stringify(arr, offset = 0) {
-  // Note: Be careful editing this code!  It's been tuned for performance
-  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
-  const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
-  // of the following:
-  // - One or more input array values don't map to a hex octet (leading to
-  // "undefined" in the uuid)
-  // - Invalid input values for the RFC `version` or `variant` fields
-
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Stringified UUID is invalid');
-  }
-
-  return uuid;
-}
-
-var _default = stringify;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/umd/uuid.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuid.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((r="undefined"!=typeof globalThis?globalThis:r||self).uuid={})}(this,(function(r){"use strict";var e,n=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(n)}var o=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function a(r){return"string"==typeof r&&o.test(r)}for(var i,u,f=[],s=0;s<256;++s)f.push((s+256).toString(16).substr(1));function c(r){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(f[r[e+0]]+f[r[e+1]]+f[r[e+2]]+f[r[e+3]]+"-"+f[r[e+4]]+f[r[e+5]]+"-"+f[r[e+6]]+f[r[e+7]]+"-"+f[r[e+8]]+f[r[e+9]]+"-"+f[r[e+10]]+f[r[e+11]]+f[r[e+12]]+f[r[e+13]]+f[r[e+14]]+f[r[e+15]]).toLowerCase();if(!a(n))throw TypeError("Stringified UUID is invalid");return n}var l=0,d=0;function v(r){if(!a(r))throw TypeError("Invalid UUID");var e,n=new Uint8Array(16);return n[0]=(e=parseInt(r.slice(0,8),16))>>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(r.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(r.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(r.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n}function p(r,e,n){function t(r,t,o,a){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],n=0;n<r.length;++n)e.push(r.charCodeAt(n));return e}(r)),"string"==typeof t&&(t=v(t)),16!==t.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var i=new Uint8Array(16+r.length);if(i.set(t),i.set(r,t.length),(i=n(i))[6]=15&i[6]|e,i[8]=63&i[8]|128,o){a=a||0;for(var u=0;u<16;++u)o[a+u]=i[u];return o}return c(i)}try{t.name=r}catch(r){}return t.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",t.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",t}function h(r){return 14+(r+64>>>9<<4)+1}function y(r,e){var n=(65535&r)+(65535&e);return(r>>16)+(e>>16)+(n>>16)<<16|65535&n}function g(r,e,n,t,o,a){return y((i=y(y(e,r),y(t,a)))<<(u=o)|i>>>32-u,n);var i,u}function m(r,e,n,t,o,a,i){return g(e&n|~e&t,r,e,o,a,i)}function w(r,e,n,t,o,a,i){return g(e&t|n&~t,r,e,o,a,i)}function b(r,e,n,t,o,a,i){return g(e^n^t,r,e,o,a,i)}function A(r,e,n,t,o,a,i){return g(n^(e|~t),r,e,o,a,i)}var U=p("v3",48,(function(r){if("string"==typeof r){var e=unescape(encodeURIComponent(r));r=new Uint8Array(e.length);for(var n=0;n<e.length;++n)r[n]=e.charCodeAt(n)}return function(r){for(var e=[],n=32*r.length,t="0123456789abcdef",o=0;o<n;o+=8){var a=r[o>>5]>>>o%32&255,i=parseInt(t.charAt(a>>>4&15)+t.charAt(15&a),16);e.push(i)}return e}(function(r,e){r[e>>5]|=128<<e%32,r[h(e)-1]=e;for(var n=1732584193,t=-271733879,o=-1732584194,a=271733878,i=0;i<r.length;i+=16){var u=n,f=t,s=o,c=a;n=m(n,t,o,a,r[i],7,-680876936),a=m(a,n,t,o,r[i+1],12,-389564586),o=m(o,a,n,t,r[i+2],17,606105819),t=m(t,o,a,n,r[i+3],22,-1044525330),n=m(n,t,o,a,r[i+4],7,-176418897),a=m(a,n,t,o,r[i+5],12,1200080426),o=m(o,a,n,t,r[i+6],17,-1473231341),t=m(t,o,a,n,r[i+7],22,-45705983),n=m(n,t,o,a,r[i+8],7,1770035416),a=m(a,n,t,o,r[i+9],12,-1958414417),o=m(o,a,n,t,r[i+10],17,-42063),t=m(t,o,a,n,r[i+11],22,-1990404162),n=m(n,t,o,a,r[i+12],7,1804603682),a=m(a,n,t,o,r[i+13],12,-40341101),o=m(o,a,n,t,r[i+14],17,-1502002290),n=w(n,t=m(t,o,a,n,r[i+15],22,1236535329),o,a,r[i+1],5,-165796510),a=w(a,n,t,o,r[i+6],9,-1069501632),o=w(o,a,n,t,r[i+11],14,643717713),t=w(t,o,a,n,r[i],20,-373897302),n=w(n,t,o,a,r[i+5],5,-701558691),a=w(a,n,t,o,r[i+10],9,38016083),o=w(o,a,n,t,r[i+15],14,-660478335),t=w(t,o,a,n,r[i+4],20,-405537848),n=w(n,t,o,a,r[i+9],5,568446438),a=w(a,n,t,o,r[i+14],9,-1019803690),o=w(o,a,n,t,r[i+3],14,-187363961),t=w(t,o,a,n,r[i+8],20,1163531501),n=w(n,t,o,a,r[i+13],5,-1444681467),a=w(a,n,t,o,r[i+2],9,-51403784),o=w(o,a,n,t,r[i+7],14,1735328473),n=b(n,t=w(t,o,a,n,r[i+12],20,-1926607734),o,a,r[i+5],4,-378558),a=b(a,n,t,o,r[i+8],11,-2022574463),o=b(o,a,n,t,r[i+11],16,1839030562),t=b(t,o,a,n,r[i+14],23,-35309556),n=b(n,t,o,a,r[i+1],4,-1530992060),a=b(a,n,t,o,r[i+4],11,1272893353),o=b(o,a,n,t,r[i+7],16,-155497632),t=b(t,o,a,n,r[i+10],23,-1094730640),n=b(n,t,o,a,r[i+13],4,681279174),a=b(a,n,t,o,r[i],11,-358537222),o=b(o,a,n,t,r[i+3],16,-722521979),t=b(t,o,a,n,r[i+6],23,76029189),n=b(n,t,o,a,r[i+9],4,-640364487),a=b(a,n,t,o,r[i+12],11,-421815835),o=b(o,a,n,t,r[i+15],16,530742520),n=A(n,t=b(t,o,a,n,r[i+2],23,-995338651),o,a,r[i],6,-198630844),a=A(a,n,t,o,r[i+7],10,1126891415),o=A(o,a,n,t,r[i+14],15,-1416354905),t=A(t,o,a,n,r[i+5],21,-57434055),n=A(n,t,o,a,r[i+12],6,1700485571),a=A(a,n,t,o,r[i+3],10,-1894986606),o=A(o,a,n,t,r[i+10],15,-1051523),t=A(t,o,a,n,r[i+1],21,-2054922799),n=A(n,t,o,a,r[i+8],6,1873313359),a=A(a,n,t,o,r[i+15],10,-30611744),o=A(o,a,n,t,r[i+6],15,-1560198380),t=A(t,o,a,n,r[i+13],21,1309151649),n=A(n,t,o,a,r[i+4],6,-145523070),a=A(a,n,t,o,r[i+11],10,-1120210379),o=A(o,a,n,t,r[i+2],15,718787259),t=A(t,o,a,n,r[i+9],21,-343485551),n=y(n,u),t=y(t,f),o=y(o,s),a=y(a,c)}return[n,t,o,a]}(function(r){if(0===r.length)return[];for(var e=8*r.length,n=new Uint32Array(h(e)),t=0;t<e;t+=8)n[t>>5]|=(255&r[t/8])<<t%32;return n}(r),8*r.length))}));function I(r,e,n,t){switch(r){case 0:return e&n^~e&t;case 1:return e^n^t;case 2:return e&n^e&t^n&t;case 3:return e^n^t}}function C(r,e){return r<<e|r>>>32-e}var R=p("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var t=unescape(encodeURIComponent(r));r=[];for(var o=0;o<t.length;++o)r.push(t.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);for(var a=r.length/4+2,i=Math.ceil(a/16),u=new Array(i),f=0;f<i;++f){for(var s=new Uint32Array(16),c=0;c<16;++c)s[c]=r[64*f+4*c]<<24|r[64*f+4*c+1]<<16|r[64*f+4*c+2]<<8|r[64*f+4*c+3];u[f]=s}u[i-1][14]=8*(r.length-1)/Math.pow(2,32),u[i-1][14]=Math.floor(u[i-1][14]),u[i-1][15]=8*(r.length-1)&4294967295;for(var l=0;l<i;++l){for(var d=new Uint32Array(80),v=0;v<16;++v)d[v]=u[l][v];for(var p=16;p<80;++p)d[p]=C(d[p-3]^d[p-8]^d[p-14]^d[p-16],1);for(var h=n[0],y=n[1],g=n[2],m=n[3],w=n[4],b=0;b<80;++b){var A=Math.floor(b/20),U=C(h,5)+I(A,y,g,m)+w+e[A]+d[b]>>>0;w=m,m=g,g=C(y,30)>>>0,y=h,h=U}n[0]=n[0]+h>>>0,n[1]=n[1]+y>>>0,n[2]=n[2]+g>>>0,n[3]=n[3]+m>>>0,n[4]=n[4]+w>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]}));r.NIL="00000000-0000-0000-0000-000000000000",r.parse=v,r.stringify=c,r.v1=function(r,e,n){var o=e&&n||0,a=e||new Array(16),f=(r=r||{}).node||i,s=void 0!==r.clockseq?r.clockseq:u;if(null==f||null==s){var v=r.random||(r.rng||t)();null==f&&(f=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==s&&(s=u=16383&(v[6]<<8|v[7]))}var p=void 0!==r.msecs?r.msecs:Date.now(),h=void 0!==r.nsecs?r.nsecs:d+1,y=p-l+(h-d)/1e4;if(y<0&&void 0===r.clockseq&&(s=s+1&16383),(y<0||p>l)&&void 0===r.nsecs&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");l=p,d=h,u=s;var g=(1e4*(268435455&(p+=122192928e5))+h)%4294967296;a[o++]=g>>>24&255,a[o++]=g>>>16&255,a[o++]=g>>>8&255,a[o++]=255&g;var m=p/4294967296*1e4&268435455;a[o++]=m>>>8&255,a[o++]=255&m,a[o++]=m>>>24&15|16,a[o++]=m>>>16&255,a[o++]=s>>>8|128,a[o++]=255&s;for(var w=0;w<6;++w)a[o+w]=f[w];return e||c(a)},r.v3=U,r.v4=function(r,e,n){var o=(r=r||{}).random||(r.rng||t)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,e){n=n||0;for(var a=0;a<16;++a)e[n+a]=o[a];return e}return c(o)},r.v5=R,r.validate=a,r.version=function(r){if(!a(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)},Object.defineProperty(r,"__esModule",{value:!0})}));
Index: ckend/node_modules/uuid/dist/umd/uuidNIL.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidNIL.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidNIL=n()}(this,(function(){"use strict";return"00000000-0000-0000-0000-000000000000"}));
Index: ckend/node_modules/uuid/dist/umd/uuidParse.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidParse.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidParse=n()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(n){if(!function(n){return"string"==typeof n&&e.test(n)}(n))throw TypeError("Invalid UUID");var t,i=new Uint8Array(16);return i[0]=(t=parseInt(n.slice(0,8),16))>>>24,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i[4]=(t=parseInt(n.slice(9,13),16))>>>8,i[5]=255&t,i[6]=(t=parseInt(n.slice(14,18),16))>>>8,i[7]=255&t,i[8]=(t=parseInt(n.slice(19,23),16))>>>8,i[9]=255&t,i[10]=(t=parseInt(n.slice(24,36),16))/1099511627776&255,i[11]=t/4294967296&255,i[12]=t>>>24&255,i[13]=t>>>16&255,i[14]=t>>>8&255,i[15]=255&t,i}}));
Index: ckend/node_modules/uuid/dist/umd/uuidStringify.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidStringify.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidStringify=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function t(t){return"string"==typeof t&&e.test(t)}for(var i=[],n=0;n<256;++n)i.push((n+256).toString(16).substr(1));return function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,f=(i[e[n+0]]+i[e[n+1]]+i[e[n+2]]+i[e[n+3]]+"-"+i[e[n+4]]+i[e[n+5]]+"-"+i[e[n+6]]+i[e[n+7]]+"-"+i[e[n+8]]+i[e[n+9]]+"-"+i[e[n+10]]+i[e[n+11]]+i[e[n+12]]+i[e[n+13]]+i[e[n+14]]+i[e[n+15]]).toLowerCase();if(!t(f))throw TypeError("Stringified UUID is invalid");return f}}));
Index: ckend/node_modules/uuid/dist/umd/uuidValidate.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidValidate.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidValidate=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){return"string"==typeof t&&e.test(t)}}));
Index: ckend/node_modules/uuid/dist/umd/uuidVersion.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidVersion.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidVersion=t()}(this,(function(){"use strict";var e=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;return function(t){if(!function(t){return"string"==typeof t&&e.test(t)}(t))throw TypeError("Invalid UUID");return parseInt(t.substr(14,1),16)}}));
Index: ckend/node_modules/uuid/dist/umd/uuidv1.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidv1.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).uuidv1=o()}(this,(function(){"use strict";var e,o=new Uint8Array(16);function t(){if(!e&&!(e="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return e(o)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(e){return"string"==typeof e&&n.test(e)}for(var i,u,s=[],a=0;a<256;++a)s.push((a+256).toString(16).substr(1));var d=0,f=0;return function(e,o,n){var a=o&&n||0,c=o||new Array(16),l=(e=e||{}).node||i,p=void 0!==e.clockseq?e.clockseq:u;if(null==l||null==p){var v=e.random||(e.rng||t)();null==l&&(l=i=[1|v[0],v[1],v[2],v[3],v[4],v[5]]),null==p&&(p=u=16383&(v[6]<<8|v[7]))}var y=void 0!==e.msecs?e.msecs:Date.now(),m=void 0!==e.nsecs?e.nsecs:f+1,g=y-d+(m-f)/1e4;if(g<0&&void 0===e.clockseq&&(p=p+1&16383),(g<0||y>d)&&void 0===e.nsecs&&(m=0),m>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=y,f=m,u=p;var h=(1e4*(268435455&(y+=122192928e5))+m)%4294967296;c[a++]=h>>>24&255,c[a++]=h>>>16&255,c[a++]=h>>>8&255,c[a++]=255&h;var w=y/4294967296*1e4&268435455;c[a++]=w>>>8&255,c[a++]=255&w,c[a++]=w>>>24&15|16,c[a++]=w>>>16&255,c[a++]=p>>>8|128,c[a++]=255&p;for(var b=0;b<6;++b)c[a+b]=l[b];return o||function(e){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=(s[e[o+0]]+s[e[o+1]]+s[e[o+2]]+s[e[o+3]]+"-"+s[e[o+4]]+s[e[o+5]]+"-"+s[e[o+6]]+s[e[o+7]]+"-"+s[e[o+8]]+s[e[o+9]]+"-"+s[e[o+10]]+s[e[o+11]]+s[e[o+12]]+s[e[o+13]]+s[e[o+14]]+s[e[o+15]]).toLowerCase();if(!r(t))throw TypeError("Stringified UUID is invalid");return t}(c)}}));
Index: ckend/node_modules/uuid/dist/umd/uuidv3.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidv3.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(n,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(n="undefined"!=typeof globalThis?globalThis:n||self).uuidv3=r()}(this,(function(){"use strict";var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(r){return"string"==typeof r&&n.test(r)}for(var e=[],t=0;t<256;++t)e.push((t+256).toString(16).substr(1));function i(n){return 14+(n+64>>>9<<4)+1}function o(n,r){var e=(65535&n)+(65535&r);return(n>>16)+(r>>16)+(e>>16)<<16|65535&e}function a(n,r,e,t,i,a){return o((f=o(o(r,n),o(t,a)))<<(u=i)|f>>>32-u,e);var f,u}function f(n,r,e,t,i,o,f){return a(r&e|~r&t,n,r,i,o,f)}function u(n,r,e,t,i,o,f){return a(r&t|e&~t,n,r,i,o,f)}function c(n,r,e,t,i,o,f){return a(r^e^t,n,r,i,o,f)}function s(n,r,e,t,i,o,f){return a(e^(r|~t),n,r,i,o,f)}return function(n,t,i){function o(n,o,a,f){if("string"==typeof n&&(n=function(n){n=unescape(encodeURIComponent(n));for(var r=[],e=0;e<n.length;++e)r.push(n.charCodeAt(e));return r}(n)),"string"==typeof o&&(o=function(n){if(!r(n))throw TypeError("Invalid UUID");var e,t=new Uint8Array(16);return t[0]=(e=parseInt(n.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=255&e,t[4]=(e=parseInt(n.slice(9,13),16))>>>8,t[5]=255&e,t[6]=(e=parseInt(n.slice(14,18),16))>>>8,t[7]=255&e,t[8]=(e=parseInt(n.slice(19,23),16))>>>8,t[9]=255&e,t[10]=(e=parseInt(n.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=255&e,t}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var u=new Uint8Array(16+n.length);if(u.set(o),u.set(n,o.length),(u=i(u))[6]=15&u[6]|t,u[8]=63&u[8]|128,a){f=f||0;for(var c=0;c<16;++c)a[f+c]=u[c];return a}return function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=(e[n[t+0]]+e[n[t+1]]+e[n[t+2]]+e[n[t+3]]+"-"+e[n[t+4]]+e[n[t+5]]+"-"+e[n[t+6]]+e[n[t+7]]+"-"+e[n[t+8]]+e[n[t+9]]+"-"+e[n[t+10]]+e[n[t+11]]+e[n[t+12]]+e[n[t+13]]+e[n[t+14]]+e[n[t+15]]).toLowerCase();if(!r(i))throw TypeError("Stringified UUID is invalid");return i}(u)}try{o.name=n}catch(n){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v3",48,(function(n){if("string"==typeof n){var r=unescape(encodeURIComponent(n));n=new Uint8Array(r.length);for(var e=0;e<r.length;++e)n[e]=r.charCodeAt(e)}return function(n){for(var r=[],e=32*n.length,t="0123456789abcdef",i=0;i<e;i+=8){var o=n[i>>5]>>>i%32&255,a=parseInt(t.charAt(o>>>4&15)+t.charAt(15&o),16);r.push(a)}return r}(function(n,r){n[r>>5]|=128<<r%32,n[i(r)-1]=r;for(var e=1732584193,t=-271733879,a=-1732584194,l=271733878,d=0;d<n.length;d+=16){var p=e,h=t,v=a,g=l;e=f(e,t,a,l,n[d],7,-680876936),l=f(l,e,t,a,n[d+1],12,-389564586),a=f(a,l,e,t,n[d+2],17,606105819),t=f(t,a,l,e,n[d+3],22,-1044525330),e=f(e,t,a,l,n[d+4],7,-176418897),l=f(l,e,t,a,n[d+5],12,1200080426),a=f(a,l,e,t,n[d+6],17,-1473231341),t=f(t,a,l,e,n[d+7],22,-45705983),e=f(e,t,a,l,n[d+8],7,1770035416),l=f(l,e,t,a,n[d+9],12,-1958414417),a=f(a,l,e,t,n[d+10],17,-42063),t=f(t,a,l,e,n[d+11],22,-1990404162),e=f(e,t,a,l,n[d+12],7,1804603682),l=f(l,e,t,a,n[d+13],12,-40341101),a=f(a,l,e,t,n[d+14],17,-1502002290),e=u(e,t=f(t,a,l,e,n[d+15],22,1236535329),a,l,n[d+1],5,-165796510),l=u(l,e,t,a,n[d+6],9,-1069501632),a=u(a,l,e,t,n[d+11],14,643717713),t=u(t,a,l,e,n[d],20,-373897302),e=u(e,t,a,l,n[d+5],5,-701558691),l=u(l,e,t,a,n[d+10],9,38016083),a=u(a,l,e,t,n[d+15],14,-660478335),t=u(t,a,l,e,n[d+4],20,-405537848),e=u(e,t,a,l,n[d+9],5,568446438),l=u(l,e,t,a,n[d+14],9,-1019803690),a=u(a,l,e,t,n[d+3],14,-187363961),t=u(t,a,l,e,n[d+8],20,1163531501),e=u(e,t,a,l,n[d+13],5,-1444681467),l=u(l,e,t,a,n[d+2],9,-51403784),a=u(a,l,e,t,n[d+7],14,1735328473),e=c(e,t=u(t,a,l,e,n[d+12],20,-1926607734),a,l,n[d+5],4,-378558),l=c(l,e,t,a,n[d+8],11,-2022574463),a=c(a,l,e,t,n[d+11],16,1839030562),t=c(t,a,l,e,n[d+14],23,-35309556),e=c(e,t,a,l,n[d+1],4,-1530992060),l=c(l,e,t,a,n[d+4],11,1272893353),a=c(a,l,e,t,n[d+7],16,-155497632),t=c(t,a,l,e,n[d+10],23,-1094730640),e=c(e,t,a,l,n[d+13],4,681279174),l=c(l,e,t,a,n[d],11,-358537222),a=c(a,l,e,t,n[d+3],16,-722521979),t=c(t,a,l,e,n[d+6],23,76029189),e=c(e,t,a,l,n[d+9],4,-640364487),l=c(l,e,t,a,n[d+12],11,-421815835),a=c(a,l,e,t,n[d+15],16,530742520),e=s(e,t=c(t,a,l,e,n[d+2],23,-995338651),a,l,n[d],6,-198630844),l=s(l,e,t,a,n[d+7],10,1126891415),a=s(a,l,e,t,n[d+14],15,-1416354905),t=s(t,a,l,e,n[d+5],21,-57434055),e=s(e,t,a,l,n[d+12],6,1700485571),l=s(l,e,t,a,n[d+3],10,-1894986606),a=s(a,l,e,t,n[d+10],15,-1051523),t=s(t,a,l,e,n[d+1],21,-2054922799),e=s(e,t,a,l,n[d+8],6,1873313359),l=s(l,e,t,a,n[d+15],10,-30611744),a=s(a,l,e,t,n[d+6],15,-1560198380),t=s(t,a,l,e,n[d+13],21,1309151649),e=s(e,t,a,l,n[d+4],6,-145523070),l=s(l,e,t,a,n[d+11],10,-1120210379),a=s(a,l,e,t,n[d+2],15,718787259),t=s(t,a,l,e,n[d+9],21,-343485551),e=o(e,p),t=o(t,h),a=o(a,v),l=o(l,g)}return[e,t,a,l]}(function(n){if(0===n.length)return[];for(var r=8*n.length,e=new Uint32Array(i(r)),t=0;t<r;t+=8)e[t>>5]|=(255&n[t/8])<<t%32;return e}(n),8*n.length))}))}));
Index: ckend/node_modules/uuid/dist/umd/uuidv4.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidv4.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).uuidv4=e()}(this,(function(){"use strict";var t,e=new Uint8Array(16);function o(){if(!t&&!(t="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return t(e)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(t){return"string"==typeof t&&n.test(t)}for(var i=[],u=0;u<256;++u)i.push((u+256).toString(16).substr(1));return function(t,e,n){var u=(t=t||{}).random||(t.rng||o)();if(u[6]=15&u[6]|64,u[8]=63&u[8]|128,e){n=n||0;for(var f=0;f<16;++f)e[n+f]=u[f];return e}return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=(i[t[e+0]]+i[t[e+1]]+i[t[e+2]]+i[t[e+3]]+"-"+i[t[e+4]]+i[t[e+5]]+"-"+i[t[e+6]]+i[t[e+7]]+"-"+i[t[e+8]]+i[t[e+9]]+"-"+i[t[e+10]]+i[t[e+11]]+i[t[e+12]]+i[t[e+13]]+i[t[e+14]]+i[t[e+15]]).toLowerCase();if(!r(o))throw TypeError("Stringified UUID is invalid");return o}(u)}}));
Index: ckend/node_modules/uuid/dist/umd/uuidv5.min.js
===================================================================
--- backend/node_modules/uuid/dist/umd/uuidv5.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).uuidv5=e()}(this,(function(){"use strict";var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function e(e){return"string"==typeof e&&r.test(e)}for(var t=[],n=0;n<256;++n)t.push((n+256).toString(16).substr(1));function a(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function o(r,e){return r<<e|r>>>32-e}return function(r,n,a){function o(r,o,i,f){if("string"==typeof r&&(r=function(r){r=unescape(encodeURIComponent(r));for(var e=[],t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}(r)),"string"==typeof o&&(o=function(r){if(!e(r))throw TypeError("Invalid UUID");var t,n=new Uint8Array(16);return n[0]=(t=parseInt(r.slice(0,8),16))>>>24,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n[4]=(t=parseInt(r.slice(9,13),16))>>>8,n[5]=255&t,n[6]=(t=parseInt(r.slice(14,18),16))>>>8,n[7]=255&t,n[8]=(t=parseInt(r.slice(19,23),16))>>>8,n[9]=255&t,n[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,n[11]=t/4294967296&255,n[12]=t>>>24&255,n[13]=t>>>16&255,n[14]=t>>>8&255,n[15]=255&t,n}(o)),16!==o.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var s=new Uint8Array(16+r.length);if(s.set(o),s.set(r,o.length),(s=a(s))[6]=15&s[6]|n,s[8]=63&s[8]|128,i){f=f||0;for(var u=0;u<16;++u)i[f+u]=s[u];return i}return function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=(t[r[n+0]]+t[r[n+1]]+t[r[n+2]]+t[r[n+3]]+"-"+t[r[n+4]]+t[r[n+5]]+"-"+t[r[n+6]]+t[r[n+7]]+"-"+t[r[n+8]]+t[r[n+9]]+"-"+t[r[n+10]]+t[r[n+11]]+t[r[n+12]]+t[r[n+13]]+t[r[n+14]]+t[r[n+15]]).toLowerCase();if(!e(a))throw TypeError("Stringified UUID is invalid");return a}(s)}try{o.name=r}catch(r){}return o.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",o.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",o}("v5",80,(function(r){var e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof r){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i<n.length;++i)r.push(n.charCodeAt(i))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);for(var f=r.length/4+2,s=Math.ceil(f/16),u=new Array(s),c=0;c<s;++c){for(var l=new Uint32Array(16),p=0;p<16;++p)l[p]=r[64*c+4*p]<<24|r[64*c+4*p+1]<<16|r[64*c+4*p+2]<<8|r[64*c+4*p+3];u[c]=l}u[s-1][14]=8*(r.length-1)/Math.pow(2,32),u[s-1][14]=Math.floor(u[s-1][14]),u[s-1][15]=8*(r.length-1)&4294967295;for(var d=0;d<s;++d){for(var h=new Uint32Array(80),v=0;v<16;++v)h[v]=u[d][v];for(var y=16;y<80;++y)h[y]=o(h[y-3]^h[y-8]^h[y-14]^h[y-16],1);for(var g=t[0],b=t[1],w=t[2],U=t[3],A=t[4],I=0;I<80;++I){var m=Math.floor(I/20),C=o(g,5)+a(m,b,w,U)+A+e[m]+h[I]>>>0;A=U,U=w,w=o(b,30)>>>0,b=g,g=C}t[0]=t[0]+g>>>0,t[1]=t[1]+b>>>0,t[2]=t[2]+w>>>0,t[3]=t[3]+U>>>0,t[4]=t[4]+A>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,255&t[0],t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,255&t[1],t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,255&t[2],t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,255&t[3],t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,255&t[4]]}))}));
Index: ckend/node_modules/uuid/dist/uuid-bin.js
===================================================================
--- backend/node_modules/uuid/dist/uuid-bin.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,85 +1,0 @@
-"use strict";
-
-var _assert = _interopRequireDefault(require("assert"));
-
-var _v = _interopRequireDefault(require("./v1.js"));
-
-var _v2 = _interopRequireDefault(require("./v3.js"));
-
-var _v3 = _interopRequireDefault(require("./v4.js"));
-
-var _v4 = _interopRequireDefault(require("./v5.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function usage() {
-  console.log('Usage:');
-  console.log('  uuid');
-  console.log('  uuid v1');
-  console.log('  uuid v3 <name> <namespace uuid>');
-  console.log('  uuid v4');
-  console.log('  uuid v5 <name> <namespace uuid>');
-  console.log('  uuid --help');
-  console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122');
-}
-
-const args = process.argv.slice(2);
-
-if (args.indexOf('--help') >= 0) {
-  usage();
-  process.exit(0);
-}
-
-const version = args.shift() || 'v4';
-
-switch (version) {
-  case 'v1':
-    console.log((0, _v.default)());
-    break;
-
-  case 'v3':
-    {
-      const name = args.shift();
-      let namespace = args.shift();
-      (0, _assert.default)(name != null, 'v3 name not specified');
-      (0, _assert.default)(namespace != null, 'v3 namespace not specified');
-
-      if (namespace === 'URL') {
-        namespace = _v2.default.URL;
-      }
-
-      if (namespace === 'DNS') {
-        namespace = _v2.default.DNS;
-      }
-
-      console.log((0, _v2.default)(name, namespace));
-      break;
-    }
-
-  case 'v4':
-    console.log((0, _v3.default)());
-    break;
-
-  case 'v5':
-    {
-      const name = args.shift();
-      let namespace = args.shift();
-      (0, _assert.default)(name != null, 'v5 name not specified');
-      (0, _assert.default)(namespace != null, 'v5 namespace not specified');
-
-      if (namespace === 'URL') {
-        namespace = _v4.default.URL;
-      }
-
-      if (namespace === 'DNS') {
-        namespace = _v4.default.DNS;
-      }
-
-      console.log((0, _v4.default)(name, namespace));
-      break;
-    }
-
-  default:
-    usage();
-    process.exit(1);
-}
Index: ckend/node_modules/uuid/dist/v1.js
===================================================================
--- backend/node_modules/uuid/dist/v1.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,107 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _rng = _interopRequireDefault(require("./rng.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-// **`v1()` - Generate time-based UUID**
-//
-// Inspired by https://github.com/LiosK/UUID.js
-// and http://docs.python.org/library/uuid.html
-let _nodeId;
-
-let _clockseq; // Previous uuid creation time
-
-
-let _lastMSecs = 0;
-let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
-
-function v1(options, buf, offset) {
-  let i = buf && offset || 0;
-  const b = buf || new Array(16);
-  options = options || {};
-  let node = options.node || _nodeId;
-  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
-  // specified.  We do this lazily to minimize issues related to insufficient
-  // system entropy.  See #189
-
-  if (node == null || clockseq == null) {
-    const seedBytes = options.random || (options.rng || _rng.default)();
-
-    if (node == null) {
-      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
-      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
-    }
-
-    if (clockseq == null) {
-      // Per 4.2.2, randomize (14 bit) clockseq
-      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
-    }
-  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
-  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
-  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
-  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
-
-
-  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
-  // cycle to simulate higher resolution clock
-
-  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
-
-  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
-
-  if (dt < 0 && options.clockseq === undefined) {
-    clockseq = clockseq + 1 & 0x3fff;
-  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
-  // time interval
-
-
-  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
-    nsecs = 0;
-  } // Per 4.2.1.2 Throw error if too many uuids are requested
-
-
-  if (nsecs >= 10000) {
-    throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
-  }
-
-  _lastMSecs = msecs;
-  _lastNSecs = nsecs;
-  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
-
-  msecs += 12219292800000; // `time_low`
-
-  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
-  b[i++] = tl >>> 24 & 0xff;
-  b[i++] = tl >>> 16 & 0xff;
-  b[i++] = tl >>> 8 & 0xff;
-  b[i++] = tl & 0xff; // `time_mid`
-
-  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
-  b[i++] = tmh >>> 8 & 0xff;
-  b[i++] = tmh & 0xff; // `time_high_and_version`
-
-  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
-
-  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
-
-  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
-
-  b[i++] = clockseq & 0xff; // `node`
-
-  for (let n = 0; n < 6; ++n) {
-    b[i + n] = node[n];
-  }
-
-  return buf || (0, _stringify.default)(b);
-}
-
-var _default = v1;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/v3.js
===================================================================
--- backend/node_modules/uuid/dist/v3.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _v = _interopRequireDefault(require("./v35.js"));
-
-var _md = _interopRequireDefault(require("./md5.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const v3 = (0, _v.default)('v3', 0x30, _md.default);
-var _default = v3;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/v35.js
===================================================================
--- backend/node_modules/uuid/dist/v35.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = _default;
-exports.URL = exports.DNS = void 0;
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-var _parse = _interopRequireDefault(require("./parse.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function stringToBytes(str) {
-  str = unescape(encodeURIComponent(str)); // UTF8 escape
-
-  const bytes = [];
-
-  for (let i = 0; i < str.length; ++i) {
-    bytes.push(str.charCodeAt(i));
-  }
-
-  return bytes;
-}
-
-const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
-exports.DNS = DNS;
-const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
-exports.URL = URL;
-
-function _default(name, version, hashfunc) {
-  function generateUUID(value, namespace, buf, offset) {
-    if (typeof value === 'string') {
-      value = stringToBytes(value);
-    }
-
-    if (typeof namespace === 'string') {
-      namespace = (0, _parse.default)(namespace);
-    }
-
-    if (namespace.length !== 16) {
-      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
-    } // Compute hash of namespace and value, Per 4.3
-    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
-    // hashfunc([...namespace, ... value])`
-
-
-    let bytes = new Uint8Array(16 + value.length);
-    bytes.set(namespace);
-    bytes.set(value, namespace.length);
-    bytes = hashfunc(bytes);
-    bytes[6] = bytes[6] & 0x0f | version;
-    bytes[8] = bytes[8] & 0x3f | 0x80;
-
-    if (buf) {
-      offset = offset || 0;
-
-      for (let i = 0; i < 16; ++i) {
-        buf[offset + i] = bytes[i];
-      }
-
-      return buf;
-    }
-
-    return (0, _stringify.default)(bytes);
-  } // Function#name is not settable on some platforms (#270)
-
-
-  try {
-    generateUUID.name = name; // eslint-disable-next-line no-empty
-  } catch (err) {} // For CommonJS default export support
-
-
-  generateUUID.DNS = DNS;
-  generateUUID.URL = URL;
-  return generateUUID;
-}
Index: ckend/node_modules/uuid/dist/v4.js
===================================================================
--- backend/node_modules/uuid/dist/v4.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,37 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _rng = _interopRequireDefault(require("./rng.js"));
-
-var _stringify = _interopRequireDefault(require("./stringify.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function v4(options, buf, offset) {
-  options = options || {};
-
-  const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
-
-
-  rnds[6] = rnds[6] & 0x0f | 0x40;
-  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
-
-  if (buf) {
-    offset = offset || 0;
-
-    for (let i = 0; i < 16; ++i) {
-      buf[offset + i] = rnds[i];
-    }
-
-    return buf;
-  }
-
-  return (0, _stringify.default)(rnds);
-}
-
-var _default = v4;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/v5.js
===================================================================
--- backend/node_modules/uuid/dist/v5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _v = _interopRequireDefault(require("./v35.js"));
-
-var _sha = _interopRequireDefault(require("./sha1.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-const v5 = (0, _v.default)('v5', 0x50, _sha.default);
-var _default = v5;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/validate.js
===================================================================
--- backend/node_modules/uuid/dist/validate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _regex = _interopRequireDefault(require("./regex.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function validate(uuid) {
-  return typeof uuid === 'string' && _regex.default.test(uuid);
-}
-
-var _default = validate;
-exports.default = _default;
Index: ckend/node_modules/uuid/dist/version.js
===================================================================
--- backend/node_modules/uuid/dist/version.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-
-var _validate = _interopRequireDefault(require("./validate.js"));
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-function version(uuid) {
-  if (!(0, _validate.default)(uuid)) {
-    throw TypeError('Invalid UUID');
-  }
-
-  return parseInt(uuid.substr(14, 1), 16);
-}
-
-var _default = version;
-exports.default = _default;
Index: ckend/node_modules/uuid/package.json
===================================================================
--- backend/node_modules/uuid/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,135 +1,0 @@
-{
-  "name": "uuid",
-  "version": "8.3.2",
-  "description": "RFC4122 (v1, v4, and v5) UUIDs",
-  "commitlint": {
-    "extends": [
-      "@commitlint/config-conventional"
-    ]
-  },
-  "keywords": [
-    "uuid",
-    "guid",
-    "rfc4122"
-  ],
-  "license": "MIT",
-  "bin": {
-    "uuid": "./dist/bin/uuid"
-  },
-  "sideEffects": false,
-  "main": "./dist/index.js",
-  "exports": {
-    ".": {
-      "node": {
-        "module": "./dist/esm-node/index.js",
-        "require": "./dist/index.js",
-        "import": "./wrapper.mjs"
-      },
-      "default": "./dist/esm-browser/index.js"
-    },
-    "./package.json": "./package.json"
-  },
-  "module": "./dist/esm-node/index.js",
-  "browser": {
-    "./dist/md5.js": "./dist/md5-browser.js",
-    "./dist/rng.js": "./dist/rng-browser.js",
-    "./dist/sha1.js": "./dist/sha1-browser.js",
-    "./dist/esm-node/index.js": "./dist/esm-browser/index.js"
-  },
-  "files": [
-    "CHANGELOG.md",
-    "CONTRIBUTING.md",
-    "LICENSE.md",
-    "README.md",
-    "dist",
-    "wrapper.mjs"
-  ],
-  "devDependencies": {
-    "@babel/cli": "7.11.6",
-    "@babel/core": "7.11.6",
-    "@babel/preset-env": "7.11.5",
-    "@commitlint/cli": "11.0.0",
-    "@commitlint/config-conventional": "11.0.0",
-    "@rollup/plugin-node-resolve": "9.0.0",
-    "babel-eslint": "10.1.0",
-    "bundlewatch": "0.3.1",
-    "eslint": "7.10.0",
-    "eslint-config-prettier": "6.12.0",
-    "eslint-config-standard": "14.1.1",
-    "eslint-plugin-import": "2.22.1",
-    "eslint-plugin-node": "11.1.0",
-    "eslint-plugin-prettier": "3.1.4",
-    "eslint-plugin-promise": "4.2.1",
-    "eslint-plugin-standard": "4.0.1",
-    "husky": "4.3.0",
-    "jest": "25.5.4",
-    "lint-staged": "10.4.0",
-    "npm-run-all": "4.1.5",
-    "optional-dev-dependency": "2.0.1",
-    "prettier": "2.1.2",
-    "random-seed": "0.3.0",
-    "rollup": "2.28.2",
-    "rollup-plugin-terser": "7.0.2",
-    "runmd": "1.3.2",
-    "standard-version": "9.0.0"
-  },
-  "optionalDevDependencies": {
-    "@wdio/browserstack-service": "6.4.0",
-    "@wdio/cli": "6.4.0",
-    "@wdio/jasmine-framework": "6.4.0",
-    "@wdio/local-runner": "6.4.0",
-    "@wdio/spec-reporter": "6.4.0",
-    "@wdio/static-server-service": "6.4.0",
-    "@wdio/sync": "6.4.0"
-  },
-  "scripts": {
-    "examples:browser:webpack:build": "cd examples/browser-webpack && npm install && npm run build",
-    "examples:browser:rollup:build": "cd examples/browser-rollup && npm install && npm run build",
-    "examples:node:commonjs:test": "cd examples/node-commonjs && npm install && npm test",
-    "examples:node:esmodules:test": "cd examples/node-esmodules && npm install && npm test",
-    "lint": "npm run eslint:check && npm run prettier:check",
-    "eslint:check": "eslint src/ test/ examples/ *.js",
-    "eslint:fix": "eslint --fix src/ test/ examples/ *.js",
-    "pretest": "[ -n $CI ] || npm run build",
-    "test": "BABEL_ENV=commonjs node --throw-deprecation node_modules/.bin/jest test/unit/",
-    "pretest:browser": "optional-dev-dependency && npm run build && npm-run-all --parallel examples:browser:**",
-    "test:browser": "wdio run ./wdio.conf.js",
-    "pretest:node": "npm run build",
-    "test:node": "npm-run-all --parallel examples:node:**",
-    "test:pack": "./scripts/testpack.sh",
-    "pretest:benchmark": "npm run build",
-    "test:benchmark": "cd examples/benchmark && npm install && npm test",
-    "prettier:check": "prettier --ignore-path .prettierignore --check '**/*.{js,jsx,json,md}'",
-    "prettier:fix": "prettier --ignore-path .prettierignore --write '**/*.{js,jsx,json,md}'",
-    "bundlewatch": "npm run pretest:browser && bundlewatch --config bundlewatch.config.json",
-    "md": "runmd --watch --output=README.md README_js.md",
-    "docs": "( node --version | grep -q 'v12' ) && ( npm run build && runmd --output=README.md README_js.md )",
-    "docs:diff": "npm run docs && git diff --quiet README.md",
-    "build": "./scripts/build.sh",
-    "prepack": "npm run build",
-    "release": "standard-version --no-verify"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://github.com/uuidjs/uuid.git"
-  },
-  "husky": {
-    "hooks": {
-      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
-      "pre-commit": "lint-staged"
-    }
-  },
-  "lint-staged": {
-    "*.{js,jsx,json,md}": [
-      "prettier --write"
-    ],
-    "*.{js,jsx}": [
-      "eslint --fix"
-    ]
-  },
-  "standard-version": {
-    "scripts": {
-      "postchangelog": "prettier --write CHANGELOG.md"
-    }
-  }
-}
Index: ckend/node_modules/uuid/wrapper.mjs
===================================================================
--- backend/node_modules/uuid/wrapper.mjs	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import uuid from './dist/index.js';
-export const v1 = uuid.v1;
-export const v3 = uuid.v3;
-export const v4 = uuid.v4;
-export const v5 = uuid.v5;
-export const NIL = uuid.NIL;
-export const version = uuid.version;
-export const validate = uuid.validate;
-export const stringify = uuid.stringify;
-export const parse = uuid.parse;
Index: ckend/node_modules/validator/LICENSE
===================================================================
--- backend/node_modules/validator/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-Copyright (c) 2018 Chris O'Hara <cohara87@gmail.com>
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/validator/README.md
===================================================================
--- backend/node_modules/validator/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,269 +1,0 @@
-# validator.js
-[![NPM version][npm-image]][npm-url]
-[![CI][ci-image]][ci-url]
-[![Coverage][codecov-image]][codecov-url]
-[![Downloads][downloads-image]][npm-url]
-[![Backers on Open Collective](https://opencollective.com/validatorjs/backers/badge.svg)](#backers)
-[![Sponsors on Open Collective](https://opencollective.com/validatorjs/sponsors/badge.svg)](#sponsors)
-[![License](https://img.shields.io/badge/License-MIT-red.svg)](https://github.com/alguerocode/validator.js/blob/master/LICENSE)
-[![Gitter][gitter-image]][gitter-url]
-
-A library of string validators and sanitizers.
-
-## Strings only
-
-**This library validates and sanitizes strings only.**
-
-If you're not sure if your input is a string, coerce it using `input + ''`.
-Passing anything other than a string will result in an error.
-
-## Installation and Usage
-
-### Server-side usage
-
-Install the `validator` package as:
-
-```sh
-npm i validator
-yarn add validator
-pnpm i validator
-```
-
-#### No ES6
-
-```javascript
-var validator = require('validator');
-
-validator.isEmail('foo@bar.com'); //=> true
-```
-
-#### ES6
-
-```javascript
-import validator from 'validator';
-```
-
-Or, import only a subset of the library:
-
-```javascript
-import isEmail from 'validator/lib/isEmail';
-```
-
-#### Tree-shakeable ES imports
-
-```javascript
-import isEmail from 'validator/es/lib/isEmail';
-```
-
-### Client-side usage
-
-The library can be loaded either as a standalone script, or through an [AMD][amd]-compatible loader
-
-```html
-<script type="text/javascript" src="validator.min.js"></script>
-<script type="text/javascript">
-  validator.isEmail('foo@bar.com'); //=> true
-</script>
-```
-
-The library can also be installed through [bower][bower]
-
-```bash
-$ bower install validator-js
-```
-
-CDN
-
-```html
-<script src="https://unpkg.com/validator@latest/validator.min.js"></script>
-```
-
-## Validators
-
-Here is a list of the validators currently available.
-
-Validator                               | Description
---------------------------------------- | --------------------------------------
-**contains(str, seed [, options])**    | check if the string contains the seed.<br/><br/>`options` is an object that defaults to `{ ignoreCase: false, minOccurrences: 1 }`.<br />Options: <br/> `ignoreCase`: Ignore case when doing comparison, default false.<br/>`minOccurrences`: Minimum number of occurrences for the seed in the string. Defaults to 1.
-**equals(str, comparison)**             | check if the string matches the comparison.
-**isAbaRouting(str)**               | check if the string is an ABA routing number for US bank account / cheque.
-**isAfter(str [, options])**            | check if the string is a date that is after the specified date.<br/><br/>`options` is an object that defaults to `{ comparisonDate: Date().toString() }`.<br/>**Options:**<br/>`comparisonDate`: Date to compare to. Defaults to `Date().toString()` (now).
-**isAlpha(str [, locale, options])**    | check if the string contains only letters (a-zA-Z).<br/><br/>`locale` is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'bn', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'eo', 'es-ES', 'fa-IR', 'fi-FI', 'fr-CA', 'fr-FR', 'he', 'hi-IN', 'hu-HU', 'it-IT', 'kk-KZ', 'ko-KR', 'ja-JP', 'ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'si-LK', 'sl-SI', 'sk-SK', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA']` and defaults to `en-US`. Locale list is `validator.isAlphaLocales`. `options` is an optional object that can be supplied with the following key(s): `ignore` which can either be a String or RegExp of characters to be ignored e.g. " -" will ignore spaces and -'s.
-**isAlphanumeric(str [, locale, options])**      | check if the string contains only letters and numbers (a-zA-Z0-9).<br/><br/>`locale` is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bn', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'eo', 'es-ES', 'fa-IR', 'fi-FI', 'fr-CA', 'fr-FR', 'he', 'hi-IN', 'hu-HU', 'it-IT', 'kk-KZ', 'ko-KR', 'ja-JP','ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'si-LK', 'sl-SI', 'sk-SK', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA']`) and defaults to `en-US`. Locale list is `validator.isAlphanumericLocales`. `options` is an optional object that can be supplied with the following key(s): `ignore` which can either be a String or RegExp of characters to be ignored e.g. " -" will ignore spaces and -'s.
-**isAscii(str)**                        | check if the string contains ASCII chars only.
-**isBase32(str [, options])**           | check if the string is base32 encoded. `options` is optional and defaults to `{ crockford: false }`.<br/> When `crockford` is true it tests the given base32 encoded string using [Crockford's base32 alternative][Crockford Base32].
-**isBase58(str)**                       | check if the string is base58 encoded.
-**isBase64(str [, options])**          | check if the string is base64 encoded. `options` is optional and defaults to `{ urlSafe: false, padding: true }`<br/> when `urlSafe` is true default value for `padding` is false and it tests the given base64 encoded string is [url safe][Base64 URL Safe].
-**isBefore(str [, options])**              | check if the string is a date that is before the specified date.<br/><br/>`options` is an object that defaults to `{ comparisonDate: Date().toString() }`.<br/><br/>**Options:**<br/>`comparisonDate`: Date to compare to. Defaults to `Date().toString()` (now).
-**isBIC(str)**                          | check if the string is a BIC (Bank Identification Code) or SWIFT code.
-**isBoolean(str [, options])**          | check if the string is a boolean.<br/>`options` is an object which defaults to `{ loose: false }`. If `loose` is set to false, the validator will strictly match ['true', 'false', '0', '1']. If `loose` is set to true, the validator will also match 'yes', 'no', and will match a valid boolean string of any case. (e.g.: ['true', 'True', 'TRUE']).
-**isBtcAddress(str)**            | check if the string is a valid BTC address.
-**isByteLength(str [, options])**          | check if the string's length (in UTF-8 bytes) falls in a range.<br/><br/>`options` is an object which defaults to `{ min: 0, max: undefined }`.
-**isCreditCard(str [, options])**                   | check if the string is a credit card number.<br/><br/> `options` is an optional object that can be supplied with the following key(s): `provider` is an optional key whose value should be a string, and defines the company issuing the credit card. Valid values include `['amex', 'dinersclub', 'discover', 'jcb', 'mastercard', 'unionpay', 'visa']` or blank will check for any provider.
-**isCurrency(str [, options])**            | check if the string is a valid currency amount.<br/><br/>`options` is an object which defaults to `{ symbol: '$', require_symbol: false, allow_space_after_symbol: false, symbol_after_digits: false, allow_negatives: true, parens_for_negatives: false, negative_sign_before_digits: false, negative_sign_after_digits: false, allow_negative_sign_placeholder: false, thousands_separator: ',', decimal_separator: '.', allow_decimal: true, require_decimal: false, digits_after_decimal: [2], allow_space_after_digits: false }`.<br/>**Note:** The array `digits_after_decimal` is filled with the exact number of digits allowed not a range, for example a range 1 to 3 will be given as [1, 2, 3].
-**isDataURI(str)**                      | check if the string is a [data uri format][Data URI Format].
-**isDate(str [, options])**          | check if the string is a valid date. e.g. [`2002-07-15`, new Date()].<br/><br/> `options` is an object which can contain the keys `format`, `strictMode` and/or `delimiters`.<br/><br/>`format` is a string and defaults to `YYYY/MM/DD`.<br/><br/>`strictMode` is a boolean and defaults to `false`. If `strictMode` is set to true, the validator will reject strings different from `format`.<br/><br/> `delimiters` is an array of allowed date delimiters and defaults to `['/', '-']`.
-**isDecimal(str [, options])**             | check if the string represents a decimal number, such as 0.1, .3, 1.1, 1.00003, 4.0, etc.<br/><br/>`options` is an object which defaults to `{force_decimal: false, decimal_digits: '1,', locale: 'en-US'}`.<br/><br/>`locale` determines the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'eo', 'es-ES', 'fa', 'fa-AF', 'fa-IR', 'fr-FR', 'fr-CA', 'hu-HU', 'id-ID', 'it-IT', 'ku-IQ', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pl-Pl', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN']`.<br/>**Note:** `decimal_digits` is given as a range like '1,3', a specific value like '3' or min like '1,'.
-**isDivisibleBy(str, number)**          | check if the string is a number that is divisible by another.
-**isEAN(str)**                          | check if the string is an [EAN (European Article Number)][European Article Number].
-**isEmail(str [, options])**            | check if the string is an email.<br/><br/>`options` is an object which defaults to `{ allow_display_name: false, require_display_name: false, allow_utf8_local_part: true, require_tld: true, allow_ip_domain: false, allow_underscores: false, domain_specific_validation: false, blacklisted_chars: '', host_blacklist: [] }`. If `allow_display_name` is set to true, the validator will also match `Display Name <email-address>`. If `require_display_name` is set to true, the validator will reject strings without the format `Display Name <email-address>`. If `allow_utf8_local_part` is set to false, the validator will not allow any non-English UTF8 character in email address' local part. If `require_tld` is set to false, email addresses without a TLD in their domain will also be matched. If `ignore_max_length` is set to true, the validator will not check for the standard max length of an email. If `allow_ip_domain` is set to true, the validator will allow IP addresses in the host part. If `domain_specific_validation` is true, some additional validation will be enabled, e.g. disallowing certain syntactically valid email addresses that are rejected by Gmail. If `blacklisted_chars` receives a string, then the validator will reject emails that include any of the characters in the string, in the name part. If `host_blacklist` is set to an array of strings or regexp, and the part of the email after the `@` symbol matches one of the strings defined in it, the validation fails. If `host_whitelist` is set to an array of strings or regexp, and the part of the email after the `@` symbol matches none of the strings defined in it, the validation fails.
-**isEmpty(str [, options])**            | check if the string has a length of zero.<br/><br/>`options` is an object which defaults to `{ ignore_whitespace: false }`.
-**isEthereumAddress(str)**              | check if the string is an [Ethereum][Ethereum] address. Does not validate address checksums.
-**isFloat(str [, options])**            | check if the string is a float.<br/><br/>`options` is an object which can contain the keys `min`, `max`, `gt`, and/or `lt` to validate the float is within boundaries (e.g. `{ min: 7.22, max: 9.55 }`) it also has `locale` as an option.<br/><br/>`min` and `max` are equivalent to 'greater or equal' and 'less or equal', respectively while `gt` and `lt` are their strict counterparts.<br/><br/>`locale` determines the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`. Locale list is `validator.isFloatLocales`.
-**isFQDN(str [, options])**             | check if the string is a fully qualified domain name (e.g. domain.com).<br/><br/>`options` is an object which defaults to `{ require_tld: true, allow_underscores: false, allow_trailing_dot: false, allow_numeric_tld: false, allow_wildcard: false, ignore_max_length: false }`.<br/><br/>`require_tld` - If set to false the validator will not check if the domain includes a TLD.<br/>`allow_underscores` - if set to true, the validator will allow underscores in the domain.<br/>`allow_trailing_dot` - if set to true, the validator will allow the domain to end with a `.` character.<br/>`allow_numeric_tld` - if set to true, the validator will allow the TLD of the domain to be made up solely of numbers.<br />`allow_wildcard` - if set to true, the validator will allow domains starting with `*.` (e.g. `*.example.com` or `*.shop.example.com`).<br/>`ignore_max_length` - if set to true, the validator will not check for the standard max length of a domain.<br/>
-**isFreightContainerID(str)**                      | alias for `isISO6346`, check if the string is a valid [ISO 6346](https://en.wikipedia.org/wiki/ISO_6346) shipping container identification.
-**isFullWidth(str)**                    | check if the string contains any full-width chars.
-**isHalfWidth(str)**                    | check if the string contains any half-width chars.
-**isHash(str, algorithm)**              | check if the string is a hash of type algorithm.<br/><br/>Algorithm is one of `['crc32', 'crc32b', 'md4', 'md5', 'ripemd128', 'ripemd160', 'sha1', 'sha256', 'sha384', 'sha512', 'tiger128', 'tiger160', 'tiger192']`.
-**isHexadecimal(str)**                  | check if the string is a hexadecimal number.
-**isHexColor(str)**                     | check if the string is a hexadecimal color.
-**isHSL(str)**                          | check if the string is an HSL (hue, saturation, lightness, optional alpha) color based on [CSS Colors Level 4 specification][CSS Colors Level 4 Specification].<br/><br/>Comma-separated format supported. Space-separated format supported with the exception of a few edge cases (ex: `hsl(200grad+.1%62%/1)`).
-**isIBAN(str, [, options])**                  | check if the string is an IBAN (International Bank Account Number).<br/><br/>`options` is an object which accepts two attributes: `whitelist`: where you can restrict IBAN codes you want to receive data from and `blacklist`: where you can remove some of the countries from the current list. For both you can use an array with the following values `['AD','AE','AL','AT','AZ','BA','BE','BG','BH','BR','BY','CH','CR','CY','CZ','DE','DK','DO','EE','EG','ES','FI','FO','FR','GB','GE','GI','GL','GR','GT','HR','HU','IE','IL','IQ','IR','IS','IT','JO','KW','KZ','LB','LC','LI','LT','LU','LV','MC','MD','ME','MK','MR','MT','MU','MZ','NL','NO','PK','PL','PS','PT','QA','RO','RS','SA','SC','SE','SI','SK','SM','SV','TL','TN','TR','UA','VA','VG','XK']`.
-**isIdentityCard(str [, locale])**      | check if the string is a valid identity card code.<br/><br/>`locale` is one of `['LK', 'PL', 'ES', 'FI', 'IN', 'IT', 'IR', 'MZ', 'NO', 'TH', 'zh-TW', 'he-IL', 'ar-LY', 'ar-TN', 'zh-CN', 'zh-HK', 'PK']` OR `'any'`. If 'any' is used, function will check if any of the locales match.<br/><br/>Defaults to 'any'.
-**isIMEI(str [, options]))**                         | check if the string is a valid [IMEI number][IMEI]. IMEI should be of format `###############` or `##-######-######-#`.<br/><br/>`options` is an object which can contain the keys `allow_hyphens`. Defaults to first format. If `allow_hyphens` is set to true, the validator will validate the second format.
-**isIn(str, values)**                   | check if the string is in an array of allowed values.
-**isInt(str [, options])**              | check if the string is an integer.<br/><br/>`options` is an object which can contain the keys `min` and/or `max` to check the integer is within boundaries (e.g. `{ min: 10, max: 99 }`). `options` can also contain the key `allow_leading_zeroes`, which when set to false will disallow integer values with leading zeroes (e.g. `{ allow_leading_zeroes: false }`). Finally, `options` can contain the keys `gt` and/or `lt` which will enforce integers being greater than or less than, respectively, the value provided (e.g. `{gt: 1, lt: 4}` for a number between 1 and 4).
-**isIP(str [, options])**               | check if the string is an IP address (version 4 or 6).<br/><br/>`options` is an object that defaults to `{ version: '' }`.<br/><br/>**Options:**<br/>`version`: defines which IP version to compare to. Accepted values: `4`, `6`, `'4'`, `'6'`.
-**isIPRange(str [, version])**          | check if the string is an IP Range (version 4 or 6).
-**isISBN(str [, options])**             | check if the string is an [ISBN][ISBN].<br/><br/>`options` is an object that has no default.<br/>**Options:**<br/>`version`: ISBN version to compare to. Accepted values are '10' and '13'. If none provided, both will be tested.
-**isISIN(str)**                         | check if the string is an [ISIN][ISIN] (stock/security identifier).
-**isISO6346(str)**                      | check if the string is a valid [ISO 6346](https://en.wikipedia.org/wiki/ISO_6346) shipping container identification.
-**isISO6391(str)**                      | check if the string is a valid [ISO 639-1][ISO 639-1] language code.
-**isISO8601(str [, options])**          | check if the string is a valid [ISO 8601][ISO 8601] date. <br/>`options` is an object which defaults to `{ strict: false, strictSeparator: false }`. If `strict` is true, date strings with invalid dates like `2009-02-29` will be invalid. If `strictSeparator` is true, date strings with date and time separated by anything other than a T will be invalid.
-**isISO15924(str)**               | check if the string is a valid [ISO 15924][ISO 15924] officially assigned script code.
-**isISO31661Alpha2(str)**               | check if the string is a valid [ISO 3166-1 alpha-2][ISO 3166-1 alpha-2] officially assigned country code.
-**isISO31661Alpha3(str)**               | check if the string is a valid [ISO 3166-1 alpha-3][ISO 3166-1 alpha-3] officially assigned country code.
-**isISO31661Numeric(str)**              | check if the string is a valid [ISO 3166-1 numeric][ISO 3166-1 numeric] officially assigned country code.
-**isISO4217(str)**                      | check if the string is a valid [ISO 4217][ISO 4217] officially assigned currency code.
-**isISRC(str)**                         | check if the string is an [ISRC][ISRC].
-**isISSN(str [, options])**             | check if the string is an [ISSN][ISSN].<br/><br/>`options` is an object which defaults to `{ case_sensitive: false, require_hyphen: false }`. If `case_sensitive` is true, ISSNs with a lowercase `'x'` as the check digit are rejected.
-**isJSON(str [, options])**             | check if the string is valid JSON (note: uses JSON.parse).<br/><br/>`options` is an object which defaults to `{ allow_primitives: false }`. If `allow_primitives` is true, the primitives 'true', 'false' and 'null' are accepted as valid JSON values.
-**isJWT(str)**                         | check if the string is valid JWT token.
-**isLatLong(str [, options])**                      | check if the string is a valid latitude-longitude coordinate in the format `lat,long` or `lat, long`.<br/><br/>`options` is an object that defaults to `{ checkDMS: false }`. Pass `checkDMS` as `true` to validate DMS(degrees, minutes, and seconds) latitude-longitude format.
-**isLength(str [, options])**              | check if the string's length falls in a range and equal to any of the integers of the `discreteLengths` array if provided.<br/><br/>`options` is an object which defaults to `{ min: 0, max: undefined, discreteLengths: undefined }`. Note: this function takes into account surrogate pairs.
-**isLicensePlate(str, locale)**     | check if the string matches the format of a country's license plate.<br/><br/>`locale` is one of `['cs-CZ', 'de-DE', 'de-LI', 'en-IN', 'en-SG', 'en-PK', 'es-AR', 'hu-HU', 'pt-BR', 'pt-PT', 'sq-AL', 'sv-SE']` or `'any'`.
-**isLocale(str)**                       | check if the string is a locale.
-**isLowercase(str)**                    | check if the string is lowercase.
-**isLuhnNumber(str)**                    | check if the string passes the [Luhn algorithm check](https://en.wikipedia.org/wiki/Luhn_algorithm).
-**isMACAddress(str [, options])**                   | check if the string is a MAC address.<br/><br/>`options` is an object which defaults to `{ no_separators: false }`. If `no_separators` is true, the validator will allow MAC addresses without separators. Also, it allows the use of hyphens, spaces or dots e.g. '01 02 03 04 05 ab', '01-02-03-04-05-ab' or '0102.0304.05ab'. The options also allow a `eui` property to specify if it needs to be validated against EUI-48 or EUI-64. The accepted values of `eui` are: 48, 64.
-**isMagnetURI(str)**                      | check if the string is a [Magnet URI format][Magnet URI Format].
-**isMailtoURI(str, [, options])**                      | check if the string is a [Mailto URI format][Mailto URI Format].<br/><br/>`options` is an object of validating emails inside the URI (check `isEmail`s options for details).
-**isMD5(str)**                          | check if the string is a MD5 hash.<br/><br/>Please note that you can also use the `isHash(str, 'md5')` function. Keep in mind that MD5 has some collision weaknesses compared to other algorithms (e.g., SHA).
-**isMimeType(str)**                     | check if the string matches to a valid [MIME type][MIME Type] format.
-**isMobilePhone(str [, locale [, options]])**          | check if the string is a mobile phone number,<br/><br/>`locale` is either an array of locales (e.g. `['sk-SK', 'sr-RS']`) OR one of `['am-Am', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-EH', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-PS', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'az-AZ', 'az-LB', 'az-LY', 'be-BY', 'bg-BG', 'bn-BD', 'bs-BA', 'ca-AD', 'cs-CZ', 'da-DK', 'de-AT', 'de-CH', 'de-DE', 'de-LU', 'dv-MV', 'dz-BT', 'el-CY', 'el-GR', 'en-AG', 'en-AI', 'en-AU', 'en-BM', 'en-BS', 'en-BW', 'en-CA', 'en-GB', 'en-GG', 'en-GH', 'en-GY', 'en-HK', 'en-IE', 'en-IN', 'en-JM', 'en-KE', 'en-KI', 'en-KN', 'en-LS', 'en-MO', 'en-MT', 'en-MU', 'en-MW', 'en-NG', 'en-NZ', 'en-PG', 'en-PH', 'en-PK', 'en-RW', 'en-SG', 'en-SL', 'en-SS', 'en-TZ', 'en-UG', 'en-US', 'en-ZA', 'en-ZM', 'en-ZW', 'es-AR', 'es-BO', 'es-CL', 'es-CO', 'es-CR', 'es-CU', 'es-DO', 'es-EC', 'es-ES', 'es-GT','es-HN', 'es-MX', 'es-NI', 'es-PA', 'es-PE', 'es-PY', 'es-SV', 'es-UY', 'es-VE', 'et-EE', 'fa-AF', 'fa-IR', 'fi-FI', 'fj-FJ', 'fo-FO', 'fr-BE', 'fr-BF', 'fr-BJ', 'fr-CD', 'fr-CF', 'fr-FR', 'fr-GF', 'fr-GP', 'fr-MQ', 'fr-PF', 'fr-RE', 'fr-WF', 'ga-IE', 'he-IL', 'hu-HU', 'id-ID', 'ir-IR', 'it-IT', 'it-SM', 'ja-JP', 'ka-GE', 'kk-KZ', 'kl-GL', 'ko-KR', 'ky-KG', 'lt-LT', 'mg-MG', 'mn-MN', 'mk-MK', 'ms-MY', 'my-MM', 'mz-MZ', 'nb-NO', 'ne-NP', 'nl-AW', 'nl-BE', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-AO', 'pt-BR', 'pt-PT', 'ro-Md', 'ro-RO', 'ru-RU', 'si-LK', 'sk-SK', 'sl-SI', 'so-SO', 'sq-AL', 'sr-RS', 'sv-SE', 'tg-TJ', 'th-TH', 'tk-TM', 'tr-TR', 'uk-UA', 'uz-UZ', 'vi-VN', 'zh-CN', 'zh-HK', 'zh-MO', 'zh-TW']` OR defaults to `'any'`. If 'any' or a falsey value is used, function will check if any of the locales match).<br/><br/>`options` is an optional object that can be supplied with the following keys: `strictMode`, if this is set to `true`, the mobile phone number must be supplied with the country code and therefore must start with `+`. Locale list is `validator.isMobilePhoneLocales`.
-**isMongoId(str)**                      | check if the string is a valid hex-encoded representation of a [MongoDB ObjectId][mongoid].
-**isMultibyte(str)**                    | check if the string contains one or more multibyte chars.
-**isNumeric(str [, options])**                      | check if the string contains only numbers.<br/><br/>`options` is an object which defaults to `{ no_symbols: false }` it also has `locale` as an option. If `no_symbols` is true, the validator will reject numeric strings that feature a symbol (e.g. `+`, `-`, or `.`).<br/><br/>`locale` determines the decimal separator and is one of `['ar', 'ar-AE', 'ar-BH', 'ar-DZ', 'ar-EG', 'ar-IQ', 'ar-JO', 'ar-KW', 'ar-LB', 'ar-LY', 'ar-MA', 'ar-QA', 'ar-QM', 'ar-SA', 'ar-SD', 'ar-SY', 'ar-TN', 'ar-YE', 'bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'en-AU', 'en-GB', 'en-HK', 'en-IN', 'en-NZ', 'en-US', 'en-ZA', 'en-ZM', 'eo', 'es-ES', 'fr-FR', 'fr-CA', 'hu-HU', 'it-IT', 'nb-NO', 'nl-NL', 'nn-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS', 'sr-RS@latin', 'sv-SE', 'tr-TR', 'uk-UA']`.
-**isOctal(str)**                        | check if the string is a valid octal number.
-**isPassportNumber(str, countryCode)**    | check if the string is a valid passport number.<br/><br/>`countryCode` is one of `['AM', 'AR', 'AT', 'AU', 'AZ', 'BE', 'BG', 'BY', 'BR', 'CA', 'CH', 'CN', 'CY', 'CZ', 'DE', 'DK', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IN', 'IR', 'ID', 'IS', 'IT', 'JM', 'JP', 'KR', 'KZ', 'LI', 'LT', 'LU', 'LV', 'LY', 'MT', 'MX', 'MY', 'MZ', 'NL', 'NZ', 'PH', 'PK', 'PL', 'PT', 'RO', 'RU', 'SE', 'SL', 'SK', 'TH', 'TR', 'UA', 'US', 'ZA']`.  Locale list is `validator.passportNumberLocales`.
-**isPort(str)**                         | check if the string is a valid port number.
-**isPostalCode(str, locale)**           | check if the string is a postal code.<br/><br/>`locale` is one of `['AD', 'AT', 'AU', 'AZ', 'BA', 'BD', 'BE', 'BG', 'BR', 'BY', 'CA', 'CH', 'CN', 'CO', 'CZ', 'DE', 'DK', 'DO', 'DZ', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IN', 'IR', 'IS', 'IT', 'JP', 'KE', 'KR', 'LI', 'LK', 'LT', 'LU', 'LV', 'MG', 'MT', 'MX', 'MY', 'NL', 'NO', 'NP', 'NZ', 'PK', 'PL', 'PR', 'PT', 'RO', 'RU', 'SA', 'SE', 'SG', 'SI', 'SK', 'TH', 'TN', 'TW', 'UA', 'US', 'ZA', 'ZM']` OR `'any'`. If 'any' is used, function will check if any of the locales match. Locale list is `validator.isPostalCodeLocales`.
-**isRFC3339(str)**                      | check if the string is a valid [RFC 3339][RFC 3339] date.
-**isRgbColor(str [,options])**                     | check if the string is a rgb or rgba color.<br/></br>`options` is an object with the following properties<br/><br/>`includePercentValues` defaults to `true`. If you don't want to allow to set `rgb` or `rgba` values with percents, like `rgb(5%,5%,5%)`, or `rgba(90%,90%,90%,.3)`, then set it to false.<br/><br/>`allowSpaces` defaults to `true`, which prohibits whitespace. If set to false, whitespace between color values is allowed, such as `rgb(255, 255, 255)` or even `rgba(255,       128,        0,      0.7)`.
-**isSemVer(str)**                       | check if the string is a Semantic Versioning Specification (SemVer).
-**isSurrogatePair(str)**                | check if the string contains any surrogate pairs chars.
-**isUppercase(str)**                    | check if the string is uppercase.
-**isSlug(str)**                         | check if the string is of type slug.
-**isStrongPassword(str [, options])**   | check if the string can be considered a strong password or not. Allows for custom requirements or scoring rules. If `returnScore` is true, then the function returns an integer score for the password rather than a boolean.<br/>Default options: <br/>`{ minLength: 8, minLowercase: 1, minUppercase: 1, minNumbers: 1, minSymbols: 1, returnScore: false, pointsPerUnique: 1, pointsPerRepeat: 0.5, pointsForContainingLower: 10, pointsForContainingUpper: 10, pointsForContainingNumber: 10, pointsForContainingSymbol: 10 }`
-**isTime(str [, options])**             | check if the string is a valid time e.g. [`23:01:59`, new Date().toLocaleTimeString()].<br/><br/> `options` is an object which can contain the keys `hourFormat` or `mode`.<br/><br/>`hourFormat` is a key and defaults to `'hour24'`.<br/><br/>`mode` is a key and defaults to `'default'`. <br/><br/>`hourFormat` can contain the values `'hour12'` or `'hour24'`, `'hour24'` will validate hours in 24 format and `'hour12'` will validate hours in 12 format. <br/><br/>`mode` can contain the values `'default', 'withSeconds', withOptionalSeconds`, `'default'` will validate `HH:MM` format, `'withSeconds'` will validate the `HH:MM:SS` format, `'withOptionalSeconds'` will validate `'HH:MM'` and `'HH:MM:SS'` formats.
-**isTaxID(str, locale)**                | check if the string is a valid Tax Identification Number. Default locale is `en-US`.<br/><br/>More info about exact TIN support can be found in `src/lib/isTaxID.js`.<br/><br/>Supported locales: `[ 'bg-BG', 'cs-CZ', 'de-AT', 'de-DE', 'dk-DK', 'el-CY', 'el-GR', 'en-CA', 'en-GB', 'en-IE', 'en-US', 'es-AR', 'es-ES', 'et-EE', 'fi-FI', 'fr-BE', 'fr-CA', 'fr-FR', 'fr-LU', 'hr-HR', 'hu-HU', 'it-IT', 'lb-LU', 'lt-LT', 'lv-LV', 'mt-MT', 'nl-BE', 'nl-NL', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'sk-SK', 'sl-SI', 'sv-SE', 'uk-UA']`.
-**isURL(str [, options])**              | check if the string is a URL.<br/><br/>`options` is an object which defaults to `{ protocols: ['http','https','ftp'], require_tld: true, require_protocol: false, require_host: true, require_port: false, require_valid_protocol: true, allow_underscores: false, host_whitelist: false, host_blacklist: false, allow_trailing_dot: false, allow_protocol_relative_urls: false, allow_fragments: true, allow_query_components: true, disallow_auth: false, validate_length: true }`.<br/><br/>`protocols` - valid protocols can be modified with this option.<br/>`require_tld` - If set to false isURL will not check if the URL's host includes a top-level domain.<br/>`require_protocol` - if set to true isURL will return false if protocol is not present in the URL.<br/>`require_host` - if set to false isURL will not check if host is present in the URL.<br/>`require_port` - if set to true isURL will check if port is present in the URL.<br/>`require_valid_protocol` - isURL will check if the URL's protocol is present in the protocols option.<br/>`allow_underscores` - if set to true, the validator will allow underscores in the URL.<br/>`host_whitelist` - if set to an array of strings or regexp, and the domain matches none of the strings defined in it, the validation fails.<br/>`host_blacklist` - if set to an array of strings or regexp, and the domain matches any of the strings defined in it, the validation fails.<br/>`allow_trailing_dot` - if set to true, the validator will allow the domain to end with a `.` character.<br/>`allow_protocol_relative_urls` - if set to true protocol relative URLs will be allowed.<br/>`allow_fragments` - if set to false isURL will return false if fragments are present.<br/>`allow_query_components` - if set to false isURL will return false if query components are present.<br/>`disallow_auth` - if set to true, the validator will fail if the URL contains an authentication component, e.g. `http://username:password@example.com`.<br/>`validate_length` - if set to false isURL will skip string length validation. `max_allowed_length` will be ignored if this is set as `false`.<br/>`max_allowed_length` - if set, isURL will not allow URLs longer than the specified value (default is 2084 that IE maximum URL length).<br/>
-**isULID(str)**                         | check if the string is a [ULID](https://github.com/ulid/spec).
-**isUUID(str [, version])**             | check if the string is an RFC9562 UUID.<br/>`version` is one of `'1'`-`'8'`, `'nil'`, `'max'`, `'all'` or `'loose'`. The `'loose'` option checks if the string is a UUID-like string with hexadecimal values, ignoring RFC9565.
-**isVariableWidth(str)**                | check if the string contains a mixture of full and half-width chars.
-**isVAT(str, countryCode)**             | check if the string is a [valid VAT number][VAT Number] if validation is available for the given country code matching [ISO 3166-1 alpha-2][ISO 3166-1 alpha-2]. <br/><br/>`countryCode` is one of `['AL', 'AR', 'AT', 'AU', 'BE', 'BG', 'BO', 'BR', 'BY', 'CA', 'CH', 'CL', 'CO', 'CR', 'CY', 'CZ', 'DE', 'DK', 'DO', 'EC', 'EE', 'EL', 'ES', 'FI', 'FR', 'GB', 'GT', 'HN', 'HR', 'HU', 'ID', 'IE', 'IL', 'IN', 'IS', 'IT', 'KZ', 'LT', 'LU', 'LV', 'MK', 'MT', 'MX', 'NG', 'NI', 'NL', 'NO', 'NZ', 'PA', 'PE', 'PH', 'PL', 'PT', 'PY', 'RO', 'RS', 'RU', 'SA', 'SE', 'SI', 'SK', 'SM', 'SV', 'TR', 'UA', 'UY', 'UZ', 'VE']`.
-**isWhitelisted(str, chars)**           | check if the string consists only of characters that appear in the whitelist `chars`.
-**matches(str, pattern [, modifiers])** | check if the string matches the pattern.<br/><br/>Either `matches('foo', /foo/i)` or `matches('foo', 'foo', 'i')`.
-
-## Sanitizers
-
-Here is a list of the sanitizers currently available.
-
-Sanitizer                              | Description
--------------------------------------- | -------------------------------
-**blacklist(input, chars)**            | remove characters that appear in the blacklist. The characters are used in a RegExp and so you will need to escape some chars, e.g. `blacklist(input, '\\[\\]')`.
-**escape(input)**                      | replace `<`, `>`, `&`, `'`, `"`, `` ` ``, `\` and `/` with HTML entities.
-**ltrim(input [, chars])**             | trim characters from the left-side of the input.
-**normalizeEmail(email [, options])**  | canonicalize an email address. (This doesn't validate that the input is an email, if you want to validate the email use isEmail beforehand).<br/><br/>`options` is an object with the following keys and default values:<br/><ul><li>*all_lowercase: true* - Transforms the local part (before the @ symbol) of all email addresses to lowercase. Please note that this may violate RFC 5321, which gives providers the possibility to treat the local part of email addresses in a case sensitive way (although in practice most - yet not all - providers don't). The domain part of the email address is always lowercased, as it is case insensitive per RFC 1035.</li><li>*gmail_lowercase: true* - Gmail addresses are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, Gmail addresses are lowercased regardless of the value of this setting.</li><li>*gmail_remove_dots: true*: Removes dots from the local part of the email address, as Gmail ignores them (e.g. "john.doe" and "johndoe" are considered equal).</li><li>*gmail_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@gmail.com" becomes "foo@gmail.com").</li><li>*gmail_convert_googlemaildotcom: true*: Converts addresses with domain @googlemail.com to @gmail.com, as they're equivalent.</li><li>*outlookdotcom_lowercase: true* - Outlook.com addresses (including Windows Live and Hotmail) are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, Outlook.com addresses are lowercased regardless of the value of this setting.</li><li>*outlookdotcom_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@outlook.com" becomes "foo@outlook.com").</li><li>*yahoo_lowercase: true* - Yahoo Mail addresses are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, Yahoo Mail addresses are lowercased regardless of the value of this setting.</li><li>*yahoo_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "-" sign (e.g. "foo-bar@yahoo.com" becomes "foo@yahoo.com").</li><li>*icloud_lowercase: true* - iCloud addresses (including MobileMe) are known to be case-insensitive, so this switch allows lowercasing them even when *all_lowercase* is set to false. Please note that when *all_lowercase* is true, iCloud addresses are lowercased regardless of the value of this setting.</li><li>*icloud_remove_subaddress: true*: Normalizes addresses by removing "sub-addresses", which is the part following a "+" sign (e.g. "foo+bar@icloud.com" becomes "foo@icloud.com").</li></ul>
-**rtrim(input [, chars])**             | trim characters from the right-side of the input.
-**stripLow(input [, keep_new_lines])** | remove characters with a numerical value < 32 and 127, mostly control characters. If `keep_new_lines` is `true`, newline characters are preserved (`\n` and `\r`, hex `0xA` and `0xD`). Unicode-safe in JavaScript.
-**toBoolean(input [, strict])**        | convert the input string to a boolean. Everything except for `'0'`, `'false'` and `''` returns `true`. In strict mode only `'1'` and `'true'` return `true`.
-**toDate(input)**                      | convert the input string to a date, or `null` if the input is not a date.
-**toFloat(input)**                     | convert the input string to a float, or `NaN` if the input is not a float.
-**toInt(input [, radix])**             | convert the input string to an integer, or `NaN` if the input is not an integer.
-**trim(input [, chars])**              | trim characters (whitespace by default) from both sides of the input.
-**unescape(input)**                    | replace HTML encoded entities with `<`, `>`, `&`, `'`, `"`, `` ` ``, `\` and `/`.
-**whitelist(input, chars)**            | remove characters that do not appear in the whitelist. The characters are used in a RegExp and so you will need to escape some chars, e.g. `whitelist(input, '\\[\\]')`.
-
-### XSS Sanitization
-
-XSS sanitization was removed from the library in [2d5d6999](https://github.com/validatorjs/validator.js/commit/2d5d6999541add350fb396ef02dc42ca3215049e).
-
-For an alternative, have a look at Yahoo's [xss-filters library](https://github.com/yahoo/xss-filters) or at [DOMPurify](https://github.com/cure53/DOMPurify).
-
-## Maintainers
-
-- [chriso](https://github.com/chriso) - **Chris O'Hara** (author)
-- [profnandaa](https://github.com/profnandaa) - **Anthony Nandaa**
-- [rubiin](https://github.com/rubiin) - **Rubin Bhandari**
-- [wikirik](https://github.com/wikirik) - **Rik Smale**
-- [ezkemboi](https://github.com/ezkemboi) - **Ezrqn Kemboi**
-- [tux-tn](https://github.com/tux-tn) - **Sarhan Aissi**
-
-## Reading
-
-Remember, validating can be troublesome sometimes. See [A list of articles about programming assumptions commonly made that aren't true](https://github.com/jameslk/awesome-falsehoods).
-
-## Contributing
-
-We welcome contributions from the community! If you're interested in contributing to this project, please read our [Contribution Guide](CONTRIBUTING.md) to get started.
-
-## License
-
-This project is licensed under the [MIT](LICENSE). See the [LICENSE](LICENSE) file for details.
-
-[downloads-image]: http://img.shields.io/npm/dm/validator.svg
-
-[npm-url]: https://npmjs.org/package/validator
-[npm-image]: http://img.shields.io/npm/v/validator.svg
-
-[codecov-url]: https://codecov.io/gh/validatorjs/validator.js
-[codecov-image]: https://codecov.io/gh/validatorjs/validator.js/branch/master/graph/badge.svg
-
-[ci-url]: https://github.com/validatorjs/validator.js/actions?query=workflow%3ACI
-[ci-image]: https://github.com/validatorjs/validator.js/workflows/CI/badge.svg?branch=master
-
-[gitter-url]: https://gitter.im/validatorjs/community
-[gitter-image]: https://badges.gitter.im/validatorjs/community.svg
-
-[huntr-url]: https://huntr.dev/bounties/disclose/?target=https://github.com/validatorjs/validator.js
-[huntr-image]: https://cdn.huntr.dev/huntr_security_badge_mono.svg
-
-[amd]: http://requirejs.org/docs/whyamd.html
-[bower]: http://bower.io/
-
-[Crockford Base32]: http://www.crockford.com/base32.html
-[Base64 URL Safe]: https://base64.guru/standards/base64url
-[Data URI Format]: https://developer.mozilla.org/en-US/docs/Web/HTTP/data_URIs
-[European Article Number]: https://en.wikipedia.org/wiki/International_Article_Number
-[Ethereum]: https://ethereum.org/
-[CSS Colors Level 4 Specification]: https://developer.mozilla.org/en-US/docs/Web/CSS/color_value
-[IMEI]: https://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity
-[ISBN]: https://en.wikipedia.org/wiki/ISBN
-[ISIN]: https://en.wikipedia.org/wiki/International_Securities_Identification_Number
-[ISO 639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
-[ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
-[ISO 15924]: https://en.wikipedia.org/wiki/ISO_15924
-[ISO 3166-1 alpha-2]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-[ISO 3166-1 alpha-3]: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
-[ISO 3166-1 numeric]: https://en.wikipedia.org/wiki/ISO_3166-1_numeric
-[ISO 4217]: https://en.wikipedia.org/wiki/ISO_4217
-[ISRC]: https://en.wikipedia.org/wiki/International_Standard_Recording_Code
-[ISSN]: https://en.wikipedia.org/wiki/International_Standard_Serial_Number
-[Luhn Check]: https://en.wikipedia.org/wiki/Luhn_algorithm
-[Magnet URI Format]: https://en.wikipedia.org/wiki/Magnet_URI_scheme
-[Mailto URI Format]: https://en.wikipedia.org/wiki/Mailto
-[MIME Type]: https://en.wikipedia.org/wiki/Media_type
-[mongoid]: http://docs.mongodb.org/manual/reference/object-id/
-[RFC 3339]: https://tools.ietf.org/html/rfc3339
-[VAT Number]: https://en.wikipedia.org/wiki/VAT_identification_number
Index: ckend/node_modules/validator/es/index.js
===================================================================
--- backend/node_modules/validator/es/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,218 +1,0 @@
-import toDate from './lib/toDate';
-import toFloat from './lib/toFloat';
-import toInt from './lib/toInt';
-import toBoolean from './lib/toBoolean';
-import equals from './lib/equals';
-import contains from './lib/contains';
-import matches from './lib/matches';
-import isEmail from './lib/isEmail';
-import isURL from './lib/isURL';
-import isMACAddress from './lib/isMACAddress';
-import isIP from './lib/isIP';
-import isIPRange from './lib/isIPRange';
-import isFQDN from './lib/isFQDN';
-import isDate from './lib/isDate';
-import isTime from './lib/isTime';
-import isBoolean from './lib/isBoolean';
-import isLocale from './lib/isLocale';
-import isAbaRouting from './lib/isAbaRouting';
-import isAlpha, { locales as isAlphaLocales } from './lib/isAlpha';
-import isAlphanumeric, { locales as isAlphanumericLocales } from './lib/isAlphanumeric';
-import isNumeric from './lib/isNumeric';
-import isPassportNumber, { locales as passportNumberLocales } from './lib/isPassportNumber';
-import isPort from './lib/isPort';
-import isLowercase from './lib/isLowercase';
-import isUppercase from './lib/isUppercase';
-import isIMEI from './lib/isIMEI';
-import isAscii from './lib/isAscii';
-import isFullWidth from './lib/isFullWidth';
-import isHalfWidth from './lib/isHalfWidth';
-import isVariableWidth from './lib/isVariableWidth';
-import isMultibyte from './lib/isMultibyte';
-import isSemVer from './lib/isSemVer';
-import isSurrogatePair from './lib/isSurrogatePair';
-import isInt from './lib/isInt';
-import isFloat, { locales as isFloatLocales } from './lib/isFloat';
-import isDecimal from './lib/isDecimal';
-import isHexadecimal from './lib/isHexadecimal';
-import isOctal from './lib/isOctal';
-import isDivisibleBy from './lib/isDivisibleBy';
-import isHexColor from './lib/isHexColor';
-import isRgbColor from './lib/isRgbColor';
-import isHSL from './lib/isHSL';
-import isISRC from './lib/isISRC';
-import isIBAN, { locales as ibanLocales } from './lib/isIBAN';
-import isBIC from './lib/isBIC';
-import isMD5 from './lib/isMD5';
-import isHash from './lib/isHash';
-import isJWT from './lib/isJWT';
-import isJSON from './lib/isJSON';
-import isEmpty from './lib/isEmpty';
-import isLength from './lib/isLength';
-import isByteLength from './lib/isByteLength';
-import isULID from './lib/isULID';
-import isUUID from './lib/isUUID';
-import isMongoId from './lib/isMongoId';
-import isAfter from './lib/isAfter';
-import isBefore from './lib/isBefore';
-import isIn from './lib/isIn';
-import isLuhnNumber from './lib/isLuhnNumber';
-import isCreditCard from './lib/isCreditCard';
-import isIdentityCard from './lib/isIdentityCard';
-import isEAN from './lib/isEAN';
-import isISIN from './lib/isISIN';
-import isISBN from './lib/isISBN';
-import isISSN from './lib/isISSN';
-import isTaxID from './lib/isTaxID';
-import isMobilePhone, { locales as isMobilePhoneLocales } from './lib/isMobilePhone';
-import isEthereumAddress from './lib/isEthereumAddress';
-import isCurrency from './lib/isCurrency';
-import isBtcAddress from './lib/isBtcAddress';
-import { isISO6346, isFreightContainerID } from './lib/isISO6346';
-import isISO6391 from './lib/isISO6391';
-import isISO8601 from './lib/isISO8601';
-import isRFC3339 from './lib/isRFC3339';
-import isISO15924 from './lib/isISO15924';
-import isISO31661Alpha2 from './lib/isISO31661Alpha2';
-import isISO31661Alpha3 from './lib/isISO31661Alpha3';
-import isISO31661Numeric from './lib/isISO31661Numeric';
-import isISO4217 from './lib/isISO4217';
-import isBase32 from './lib/isBase32';
-import isBase58 from './lib/isBase58';
-import isBase64 from './lib/isBase64';
-import isDataURI from './lib/isDataURI';
-import isMagnetURI from './lib/isMagnetURI';
-import isMailtoURI from './lib/isMailtoURI';
-import isMimeType from './lib/isMimeType';
-import isLatLong from './lib/isLatLong';
-import isPostalCode, { locales as isPostalCodeLocales } from './lib/isPostalCode';
-import ltrim from './lib/ltrim';
-import rtrim from './lib/rtrim';
-import trim from './lib/trim';
-import escape from './lib/escape';
-import unescape from './lib/unescape';
-import stripLow from './lib/stripLow';
-import whitelist from './lib/whitelist';
-import blacklist from './lib/blacklist';
-import isWhitelisted from './lib/isWhitelisted';
-import normalizeEmail from './lib/normalizeEmail';
-import isSlug from './lib/isSlug';
-import isLicensePlate from './lib/isLicensePlate';
-import isStrongPassword from './lib/isStrongPassword';
-import isVAT from './lib/isVAT';
-var version = '13.15.15';
-var validator = {
-  version: version,
-  toDate: toDate,
-  toFloat: toFloat,
-  toInt: toInt,
-  toBoolean: toBoolean,
-  equals: equals,
-  contains: contains,
-  matches: matches,
-  isEmail: isEmail,
-  isURL: isURL,
-  isMACAddress: isMACAddress,
-  isIP: isIP,
-  isIPRange: isIPRange,
-  isFQDN: isFQDN,
-  isBoolean: isBoolean,
-  isIBAN: isIBAN,
-  isBIC: isBIC,
-  isAbaRouting: isAbaRouting,
-  isAlpha: isAlpha,
-  isAlphaLocales: isAlphaLocales,
-  isAlphanumeric: isAlphanumeric,
-  isAlphanumericLocales: isAlphanumericLocales,
-  isNumeric: isNumeric,
-  isPassportNumber: isPassportNumber,
-  passportNumberLocales: passportNumberLocales,
-  isPort: isPort,
-  isLowercase: isLowercase,
-  isUppercase: isUppercase,
-  isAscii: isAscii,
-  isFullWidth: isFullWidth,
-  isHalfWidth: isHalfWidth,
-  isVariableWidth: isVariableWidth,
-  isMultibyte: isMultibyte,
-  isSemVer: isSemVer,
-  isSurrogatePair: isSurrogatePair,
-  isInt: isInt,
-  isIMEI: isIMEI,
-  isFloat: isFloat,
-  isFloatLocales: isFloatLocales,
-  isDecimal: isDecimal,
-  isHexadecimal: isHexadecimal,
-  isOctal: isOctal,
-  isDivisibleBy: isDivisibleBy,
-  isHexColor: isHexColor,
-  isRgbColor: isRgbColor,
-  isHSL: isHSL,
-  isISRC: isISRC,
-  isMD5: isMD5,
-  isHash: isHash,
-  isJWT: isJWT,
-  isJSON: isJSON,
-  isEmpty: isEmpty,
-  isLength: isLength,
-  isLocale: isLocale,
-  isByteLength: isByteLength,
-  isULID: isULID,
-  isUUID: isUUID,
-  isMongoId: isMongoId,
-  isAfter: isAfter,
-  isBefore: isBefore,
-  isIn: isIn,
-  isLuhnNumber: isLuhnNumber,
-  isCreditCard: isCreditCard,
-  isIdentityCard: isIdentityCard,
-  isEAN: isEAN,
-  isISIN: isISIN,
-  isISBN: isISBN,
-  isISSN: isISSN,
-  isMobilePhone: isMobilePhone,
-  isMobilePhoneLocales: isMobilePhoneLocales,
-  isPostalCode: isPostalCode,
-  isPostalCodeLocales: isPostalCodeLocales,
-  isEthereumAddress: isEthereumAddress,
-  isCurrency: isCurrency,
-  isBtcAddress: isBtcAddress,
-  isISO6346: isISO6346,
-  isFreightContainerID: isFreightContainerID,
-  isISO6391: isISO6391,
-  isISO8601: isISO8601,
-  isISO15924: isISO15924,
-  isRFC3339: isRFC3339,
-  isISO31661Alpha2: isISO31661Alpha2,
-  isISO31661Alpha3: isISO31661Alpha3,
-  isISO31661Numeric: isISO31661Numeric,
-  isISO4217: isISO4217,
-  isBase32: isBase32,
-  isBase58: isBase58,
-  isBase64: isBase64,
-  isDataURI: isDataURI,
-  isMagnetURI: isMagnetURI,
-  isMailtoURI: isMailtoURI,
-  isMimeType: isMimeType,
-  isLatLong: isLatLong,
-  ltrim: ltrim,
-  rtrim: rtrim,
-  trim: trim,
-  escape: escape,
-  unescape: unescape,
-  stripLow: stripLow,
-  whitelist: whitelist,
-  blacklist: blacklist,
-  isWhitelisted: isWhitelisted,
-  normalizeEmail: normalizeEmail,
-  toString: toString,
-  isSlug: isSlug,
-  isStrongPassword: isStrongPassword,
-  isTaxID: isTaxID,
-  isDate: isDate,
-  isTime: isTime,
-  isLicensePlate: isLicensePlate,
-  isVAT: isVAT,
-  ibanLocales: ibanLocales
-};
-export default validator;
Index: ckend/node_modules/validator/es/lib/alpha.js
===================================================================
--- backend/node_modules/validator/es/lib/alpha.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,137 +1,0 @@
-export var alpha = {
-  'en-US': /^[A-Z]+$/i,
-  'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[А-Я]+$/i,
-  'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[A-ZÆØÅ]+$/i,
-  'de-DE': /^[A-ZÄÖÜß]+$/i,
-  'el-GR': /^[Α-ώ]+$/i,
-  'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,
-  'fi-FI': /^[A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'nb-NO': /^[A-ZÆØÅ]+$/i,
-  'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[A-ZÆØÅ]+$/i,
-  'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[А-ЯЁ]+$/i,
-  'kk-KZ': /^[А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๐\s]+$/i,
-  'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,
-  'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  'ko-KR': /^[ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[א-ת]+$/,
-  fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i,
-  'si-LK': /^[\u0D80-\u0DFF]+$/
-};
-export var alphanumeric = {
-  'en-US': /^[0-9A-Z]+$/i,
-  'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[0-9А-Я]+$/i,
-  'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[0-9A-ZÆØÅ]+$/i,
-  'de-DE': /^[0-9A-ZÄÖÜß]+$/i,
-  'el-GR': /^[0-9Α-ω]+$/i,
-  'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[0-9０-９ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'nb-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[0-9А-ЯЁ]+$/i,
-  'kk-KZ': /^[0-9А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๙\s]+$/i,
-  'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,
-  'ko-KR': /^[0-9ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[0-9א-ת]+$/,
-  fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[0-9ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i,
-  'si-LK': /^[0-9\u0D80-\u0DFF]+$/
-};
-export var decimal = {
-  'en-US': '.',
-  ar: '٫'
-};
-export var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];
-for (var locale, i = 0; i < englishLocales.length; i++) {
-  locale = "en-".concat(englishLocales[i]);
-  alpha[locale] = alpha['en-US'];
-  alphanumeric[locale] = alphanumeric['en-US'];
-  decimal[locale] = decimal['en-US'];
-}
-
-// Source: http://www.localeplanet.com/java/
-export var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];
-for (var _locale, _i = 0; _i < arabicLocales.length; _i++) {
-  _locale = "ar-".concat(arabicLocales[_i]);
-  alpha[_locale] = alpha.ar;
-  alphanumeric[_locale] = alphanumeric.ar;
-  decimal[_locale] = decimal.ar;
-}
-export var farsiLocales = ['IR', 'AF'];
-for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {
-  _locale2 = "fa-".concat(farsiLocales[_i2]);
-  alphanumeric[_locale2] = alphanumeric.fa;
-  decimal[_locale2] = decimal.ar;
-}
-export var bengaliLocales = ['BD', 'IN'];
-for (var _locale3, _i3 = 0; _i3 < bengaliLocales.length; _i3++) {
-  _locale3 = "bn-".concat(bengaliLocales[_i3]);
-  alpha[_locale3] = alpha.bn;
-  alphanumeric[_locale3] = alphanumeric.bn;
-  decimal[_locale3] = decimal['en-US'];
-}
-
-// Source: https://en.wikipedia.org/wiki/Decimal_mark
-export var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];
-export var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'kk-KZ', 'si-LK', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];
-for (var _i4 = 0; _i4 < dotDecimal.length; _i4++) {
-  decimal[dotDecimal[_i4]] = decimal['en-US'];
-}
-for (var _i5 = 0; _i5 < commaDecimal.length; _i5++) {
-  decimal[commaDecimal[_i5]] = ',';
-}
-alpha['fr-CA'] = alpha['fr-FR'];
-alphanumeric['fr-CA'] = alphanumeric['fr-FR'];
-alpha['pt-BR'] = alpha['pt-PT'];
-alphanumeric['pt-BR'] = alphanumeric['pt-PT'];
-decimal['pt-BR'] = decimal['pt-PT'];
-
-// see #862
-alpha['pl-Pl'] = alpha['pl-PL'];
-alphanumeric['pl-Pl'] = alphanumeric['pl-PL'];
-decimal['pl-Pl'] = decimal['pl-PL'];
-
-// see #1455
-alpha['fa-AF'] = alpha.fa;
Index: ckend/node_modules/validator/es/lib/blacklist.js
===================================================================
--- backend/node_modules/validator/es/lib/blacklist.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function blacklist(str, chars) {
-  assertString(str);
-  return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), '');
-}
Index: ckend/node_modules/validator/es/lib/contains.js
===================================================================
--- backend/node_modules/validator/es/lib/contains.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import assertString from './util/assertString';
-import toString from './util/toString';
-import merge from './util/merge';
-var defaultContainsOptions = {
-  ignoreCase: false,
-  minOccurrences: 1
-};
-export default function contains(str, elem, options) {
-  assertString(str);
-  options = merge(options, defaultContainsOptions);
-  if (options.ignoreCase) {
-    return str.toLowerCase().split(toString(elem).toLowerCase()).length > options.minOccurrences;
-  }
-  return str.split(toString(elem)).length > options.minOccurrences;
-}
Index: ckend/node_modules/validator/es/lib/equals.js
===================================================================
--- backend/node_modules/validator/es/lib/equals.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function equals(str, comparison) {
-  assertString(str);
-  return str === comparison;
-}
Index: ckend/node_modules/validator/es/lib/escape.js
===================================================================
--- backend/node_modules/validator/es/lib/escape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function escape(str) {
-  assertString(str);
-  return str.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\//g, '&#x2F;').replace(/\\/g, '&#x5C;').replace(/`/g, '&#96;');
-}
Index: ckend/node_modules/validator/es/lib/isAbaRouting.js
===================================================================
--- backend/node_modules/validator/es/lib/isAbaRouting.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import assertString from './util/assertString';
-
-// http://www.brainjar.com/js/validation/
-// https://www.aba.com/news-research/research-analysis/routing-number-policy-procedures
-// series reserved for future use are excluded
-var isRoutingReg = /^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;
-export default function isAbaRouting(str) {
-  assertString(str);
-  if (!isRoutingReg.test(str)) return false;
-  var checkSumVal = 0;
-  for (var i = 0; i < str.length; i++) {
-    if (i % 3 === 0) checkSumVal += str[i] * 3;else if (i % 3 === 1) checkSumVal += str[i] * 7;else checkSumVal += str[i] * 1;
-  }
-  return checkSumVal % 10 === 0;
-}
Index: ckend/node_modules/validator/es/lib/isAfter.js
===================================================================
--- backend/node_modules/validator/es/lib/isAfter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import toDate from './toDate';
-export default function isAfter(date, options) {
-  // For backwards compatibility:
-  // isAfter(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = toDate(comparisonDate);
-  var original = toDate(date);
-  return !!(original && comparison && original > comparison);
-}
Index: ckend/node_modules/validator/es/lib/isAlpha.js
===================================================================
--- backend/node_modules/validator/es/lib/isAlpha.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-import assertString from './util/assertString';
-import { alpha } from './alpha';
-export default function isAlpha(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  assertString(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in alpha) {
-    return alpha[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-export var locales = Object.keys(alpha);
Index: ckend/node_modules/validator/es/lib/isAlphanumeric.js
===================================================================
--- backend/node_modules/validator/es/lib/isAlphanumeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-import assertString from './util/assertString';
-import { alphanumeric } from './alpha';
-export default function isAlphanumeric(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  assertString(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in alphanumeric) {
-    return alphanumeric[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-export var locales = Object.keys(alphanumeric);
Index: ckend/node_modules/validator/es/lib/isAscii.js
===================================================================
--- backend/node_modules/validator/es/lib/isAscii.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import assertString from './util/assertString';
-
-/* eslint-disable no-control-regex */
-var ascii = /^[\x00-\x7F]+$/;
-/* eslint-enable no-control-regex */
-
-export default function isAscii(str) {
-  assertString(str);
-  return ascii.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isBIC.js
===================================================================
--- backend/node_modules/validator/es/lib/isBIC.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-import assertString from './util/assertString';
-import { CountryCodes } from './isISO31661Alpha2';
-
-// https://en.wikipedia.org/wiki/ISO_9362
-var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;
-export default function isBIC(str) {
-  assertString(str);
-
-  // toUpperCase() should be removed when a new major version goes out that changes
-  // the regex to [A-Z] (per the spec).
-  var countryCode = str.slice(4, 6).toUpperCase();
-  if (!CountryCodes.has(countryCode) && countryCode !== 'XK') {
-    return false;
-  }
-  return isBICReg.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isBase32.js
===================================================================
--- backend/node_modules/validator/es/lib/isBase32.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import assertString from './util/assertString';
-import merge from './util/merge';
-var base32 = /^[A-Z2-7]+=*$/;
-var crockfordBase32 = /^[A-HJKMNP-TV-Z0-9]+$/;
-var defaultBase32Options = {
-  crockford: false
-};
-export default function isBase32(str, options) {
-  assertString(str);
-  options = merge(options, defaultBase32Options);
-  if (options.crockford) {
-    return crockfordBase32.test(str);
-  }
-  var len = str.length;
-  if (len % 8 === 0 && base32.test(str)) {
-    return true;
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isBase58.js
===================================================================
--- backend/node_modules/validator/es/lib/isBase58.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-import assertString from './util/assertString';
-
-// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz
-var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/;
-export default function isBase58(str) {
-  assertString(str);
-  if (base58Reg.test(str)) {
-    return true;
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isBase64.js
===================================================================
--- backend/node_modules/validator/es/lib/isBase64.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-import assertString from './util/assertString';
-import merge from './util/merge';
-var base64WithPadding = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/;
-var base64WithoutPadding = /^[A-Za-z0-9+/]+$/;
-var base64UrlWithPadding = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}==|[A-Za-z0-9_-]{3}=|[A-Za-z0-9_-]{4})$/;
-var base64UrlWithoutPadding = /^[A-Za-z0-9_-]+$/;
-export default function isBase64(str, options) {
-  var _options;
-  assertString(str);
-  options = merge(options, {
-    urlSafe: false,
-    padding: !((_options = options) !== null && _options !== void 0 && _options.urlSafe)
-  });
-  if (str === '') return true;
-  var regex;
-  if (options.urlSafe) {
-    regex = options.padding ? base64UrlWithPadding : base64UrlWithoutPadding;
-  } else {
-    regex = options.padding ? base64WithPadding : base64WithoutPadding;
-  }
-  return (!options.padding || str.length % 4 === 0) && regex.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isBefore.js
===================================================================
--- backend/node_modules/validator/es/lib/isBefore.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import toDate from './toDate';
-export default function isBefore(date, options) {
-  // For backwards compatibility:
-  // isBefore(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = toDate(comparisonDate);
-  var original = toDate(date);
-  return !!(original && comparison && original < comparison);
-}
Index: ckend/node_modules/validator/es/lib/isBoolean.js
===================================================================
--- backend/node_modules/validator/es/lib/isBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import assertString from './util/assertString';
-import includes from './util/includesArray';
-var defaultOptions = {
-  loose: false
-};
-var strictBooleans = ['true', 'false', '1', '0'];
-var looseBooleans = [].concat(strictBooleans, ['yes', 'no']);
-export default function isBoolean(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
-  assertString(str);
-  if (options.loose) {
-    return includes(looseBooleans, str.toLowerCase());
-  }
-  return includes(strictBooleans, str);
-}
Index: ckend/node_modules/validator/es/lib/isBtcAddress.js
===================================================================
--- backend/node_modules/validator/es/lib/isBtcAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import assertString from './util/assertString';
-var bech32 = /^(bc1|tb1|bc1p|tb1p)[ac-hj-np-z02-9]{39,58}$/;
-var base58 = /^(1|2|3|m)[A-HJ-NP-Za-km-z1-9]{25,39}$/;
-export default function isBtcAddress(str) {
-  assertString(str);
-  return bech32.test(str) || base58.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isByteLength.js
===================================================================
--- backend/node_modules/validator/es/lib/isByteLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import assertString from './util/assertString';
-
-/* eslint-disable prefer-rest-params */
-export default function isByteLength(str, options) {
-  assertString(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isByteLength(str, min [, max])
-    min = arguments[1];
-    max = arguments[2];
-  }
-  var len = encodeURI(str).split(/%..|./).length - 1;
-  return len >= min && (typeof max === 'undefined' || len <= max);
-}
Index: ckend/node_modules/validator/es/lib/isCreditCard.js
===================================================================
--- backend/node_modules/validator/es/lib/isCreditCard.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,43 +1,0 @@
-import assertString from './util/assertString';
-import isLuhnValid from './isLuhnNumber';
-var cards = {
-  amex: /^3[47][0-9]{13}$/,
-  dinersclub: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
-  discover: /^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,
-  jcb: /^(?:2131|1800|35\d{3})\d{11}$/,
-  mastercard: /^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,
-  // /^[25][1-7][0-9]{14}$/;
-  unionpay: /^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,
-  visa: /^(?:4[0-9]{12})(?:[0-9]{3,6})?$/
-};
-var allCards = function () {
-  var tmpCardsArray = [];
-  for (var cardProvider in cards) {
-    // istanbul ignore else
-    if (cards.hasOwnProperty(cardProvider)) {
-      tmpCardsArray.push(cards[cardProvider]);
-    }
-  }
-  return tmpCardsArray;
-}();
-export default function isCreditCard(card) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(card);
-  var provider = options.provider;
-  var sanitized = card.replace(/[- ]+/g, '');
-  if (provider && provider.toLowerCase() in cards) {
-    // specific provider in the list
-    if (!cards[provider.toLowerCase()].test(sanitized)) {
-      return false;
-    }
-  } else if (provider && !(provider.toLowerCase() in cards)) {
-    /* specific provider not in the list */
-    throw new Error("".concat(provider, " is not a valid credit card provider."));
-  } else if (!allCards.some(function (cardProvider) {
-    return cardProvider.test(sanitized);
-  })) {
-    // no specific provider
-    return false;
-  }
-  return isLuhnValid(card);
-}
Index: ckend/node_modules/validator/es/lib/isCurrency.js
===================================================================
--- backend/node_modules/validator/es/lib/isCurrency.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,74 +1,0 @@
-import merge from './util/merge';
-import assertString from './util/assertString';
-function currencyRegex(options) {
-  var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}");
-  options.digits_after_decimal.forEach(function (digit, index) {
-    if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}");
-  });
-  var symbol = "(".concat(options.symbol.replace(/\W/, function (m) {
-      return "\\".concat(m);
-    }), ")").concat(options.require_symbol ? '' : '?'),
-    negative = '-?',
-    whole_dollar_amount_without_sep = '[1-9]\\d*',
-    whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"),
-    valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],
-    whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"),
-    decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?');
-  var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');
-
-  // default is negative sign before symbol, but there are two other options (besides parens)
-  if (options.allow_negatives && !options.parens_for_negatives) {
-    if (options.negative_sign_after_digits) {
-      pattern += negative;
-    } else if (options.negative_sign_before_digits) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // South African Rand, for example, uses R 123 (space) and R-123 (no space)
-  if (options.allow_negative_sign_placeholder) {
-    pattern = "( (?!\\-))?".concat(pattern);
-  } else if (options.allow_space_after_symbol) {
-    pattern = " ?".concat(pattern);
-  } else if (options.allow_space_after_digits) {
-    pattern += '( (?!$))?';
-  }
-  if (options.symbol_after_digits) {
-    pattern += symbol;
-  } else {
-    pattern = symbol + pattern;
-  }
-  if (options.allow_negatives) {
-    if (options.parens_for_negatives) {
-      pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")");
-    } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // ensure there's a dollar and/or decimal amount, and that
-  // it doesn't start with a space or a negative sign followed by a space
-  return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$"));
-}
-var default_currency_options = {
-  symbol: '$',
-  require_symbol: false,
-  allow_space_after_symbol: false,
-  symbol_after_digits: false,
-  allow_negatives: true,
-  parens_for_negatives: false,
-  negative_sign_before_digits: false,
-  negative_sign_after_digits: false,
-  allow_negative_sign_placeholder: false,
-  thousands_separator: ',',
-  decimal_separator: '.',
-  allow_decimal: true,
-  require_decimal: false,
-  digits_after_decimal: [2],
-  allow_space_after_digits: false
-};
-export default function isCurrency(str, options) {
-  assertString(str);
-  options = merge(options, default_currency_options);
-  return currencyRegex(options).test(str);
-}
Index: ckend/node_modules/validator/es/lib/isDataURI.js
===================================================================
--- backend/node_modules/validator/es/lib/isDataURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-import assertString from './util/assertString';
-var validMediaType = /^[a-z]+\/[a-z0-9\-\+\._]+$/i;
-var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i;
-var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i;
-export default function isDataURI(str) {
-  assertString(str);
-  var data = str.split(',');
-  if (data.length < 2) {
-    return false;
-  }
-  var attributes = data.shift().trim().split(';');
-  var schemeAndMediaType = attributes.shift();
-  if (schemeAndMediaType.slice(0, 5) !== 'data:') {
-    return false;
-  }
-  var mediaType = schemeAndMediaType.slice(5);
-  if (mediaType !== '' && !validMediaType.test(mediaType)) {
-    return false;
-  }
-  for (var i = 0; i < attributes.length; i++) {
-    if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {
-      return false;
-    }
-  }
-  for (var _i = 0; _i < data.length; _i++) {
-    if (!validData.test(data[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
Index: ckend/node_modules/validator/es/lib/isDate.js
===================================================================
--- backend/node_modules/validator/es/lib/isDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,93 +1,0 @@
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-import merge from './util/merge';
-var default_date_options = {
-  format: 'YYYY/MM/DD',
-  delimiters: ['/', '-'],
-  strictMode: false
-};
-function isValidFormat(format) {
-  return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format);
-}
-function zip(date, format) {
-  var zippedArr = [],
-    len = Math.max(date.length, format.length);
-  for (var i = 0; i < len; i++) {
-    zippedArr.push([date[i], format[i]]);
-  }
-  return zippedArr;
-}
-export default function isDate(input, options) {
-  if (typeof options === 'string') {
-    // Allow backward compatibility for old format isDate(input [, format])
-    options = merge({
-      format: options
-    }, default_date_options);
-  } else {
-    options = merge(options, default_date_options);
-  }
-  if (typeof input === 'string' && isValidFormat(options.format)) {
-    if (options.strictMode && input.length !== options.format.length) return false;
-    var formatDelimiter = options.delimiters.find(function (delimiter) {
-      return options.format.indexOf(delimiter) !== -1;
-    });
-    var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {
-      return input.indexOf(delimiter) !== -1;
-    });
-    var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));
-    var dateObj = {};
-    var _iterator = _createForOfIteratorHelper(dateAndFormat),
-      _step;
-    try {
-      for (_iterator.s(); !(_step = _iterator.n()).done;) {
-        var _step$value = _slicedToArray(_step.value, 2),
-          dateWord = _step$value[0],
-          formatWord = _step$value[1];
-        if (!dateWord || !formatWord || dateWord.length !== formatWord.length) {
-          return false;
-        }
-        dateObj[formatWord.charAt(0)] = dateWord;
-      }
-    } catch (err) {
-      _iterator.e(err);
-    } finally {
-      _iterator.f();
-    }
-    var fullYear = dateObj.y;
-
-    // Check if the year starts with a hyphen
-    if (fullYear.startsWith('-')) {
-      return false; // Hyphen before year is not allowed
-    }
-    if (dateObj.y.length === 2) {
-      var parsedYear = parseInt(dateObj.y, 10);
-      if (isNaN(parsedYear)) {
-        return false;
-      }
-      var currentYearLastTwoDigits = new Date().getFullYear() % 100;
-      if (parsedYear < currentYearLastTwoDigits) {
-        fullYear = "20".concat(dateObj.y);
-      } else {
-        fullYear = "19".concat(dateObj.y);
-      }
-    }
-    var month = dateObj.m;
-    if (dateObj.m.length === 1) {
-      month = "0".concat(dateObj.m);
-    }
-    var day = dateObj.d;
-    if (dateObj.d.length === 1) {
-      day = "0".concat(dateObj.d);
-    }
-    return new Date("".concat(fullYear, "-").concat(month, "-").concat(day, "T00:00:00.000Z")).getUTCDate() === +dateObj.d;
-  }
-  if (!options.strictMode) {
-    return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isDecimal.js
===================================================================
--- backend/node_modules/validator/es/lib/isDecimal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-import merge from './util/merge';
-import assertString from './util/assertString';
-import includes from './util/includesArray';
-import { decimal } from './alpha';
-function decimalRegExp(options) {
-  var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$"));
-  return regExp;
-}
-var default_decimal_options = {
-  force_decimal: false,
-  decimal_digits: '1,',
-  locale: 'en-US'
-};
-var blacklist = ['', '-', '+'];
-export default function isDecimal(str, options) {
-  assertString(str);
-  options = merge(options, default_decimal_options);
-  if (options.locale in decimal) {
-    return !includes(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);
-  }
-  throw new Error("Invalid locale '".concat(options.locale, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isDivisibleBy.js
===================================================================
--- backend/node_modules/validator/es/lib/isDivisibleBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-import toFloat from './toFloat';
-export default function isDivisibleBy(str, num) {
-  assertString(str);
-  return toFloat(str) % parseInt(num, 10) === 0;
-}
Index: ckend/node_modules/validator/es/lib/isEAN.js
===================================================================
--- backend/node_modules/validator/es/lib/isEAN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,70 +1,0 @@
-/**
- * The most commonly used EAN standard is
- * the thirteen-digit EAN-13, while the
- * less commonly used 8-digit EAN-8 barcode was
- * introduced for use on small packages.
- * Also EAN/UCC-14 is used for Grouping of individual
- * trade items above unit level(Intermediate, Carton or Pallet).
- * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/
- * EAN consists of:
- * GS1 prefix, manufacturer code, product code and check digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number
- * Reference: https://www.gtin.info/
- */
-
-import assertString from './util/assertString';
-
-/**
- * Define EAN Lengths; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14
- * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),
- * with exact numeric matching of 8 or 13 or 14 digits [0-9]
- */
-var LENGTH_EAN_8 = 8;
-var LENGTH_EAN_14 = 14;
-var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/;
-
-/**
- * Get position weight given:
- * EAN length and digit index/position
- *
- * @param {number} length
- * @param {number} index
- * @return {number}
- */
-function getPositionWeightThroughLengthAndIndex(length, index) {
-  if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {
-    return index % 2 === 0 ? 3 : 1;
-  }
-  return index % 2 === 0 ? 1 : 3;
-}
-
-/**
- * Calculate EAN Check Digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit
- *
- * @param {string} ean
- * @return {number}
- */
-function calculateCheckDigit(ean) {
-  var checksum = ean.slice(0, -1).split('').map(function (_char, index) {
-    return Number(_char) * getPositionWeightThroughLengthAndIndex(ean.length, index);
-  }).reduce(function (acc, partialSum) {
-    return acc + partialSum;
-  }, 0);
-  var remainder = 10 - checksum % 10;
-  return remainder < 10 ? remainder : 0;
-}
-
-/**
- * Check if string is valid EAN:
- * Matches EAN-8/EAN-13/EAN-14 regex
- * Has valid check digit.
- *
- * @param {string} str
- * @return {boolean}
- */
-export default function isEAN(str) {
-  assertString(str);
-  var actualCheckDigit = Number(str.slice(-1));
-  return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);
-}
Index: ckend/node_modules/validator/es/lib/isEmail.js
===================================================================
--- backend/node_modules/validator/es/lib/isEmail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,165 +1,0 @@
-import assertString from './util/assertString';
-import checkHost from './util/checkHost';
-import isByteLength from './isByteLength';
-import isFQDN from './isFQDN';
-import isIP from './isIP';
-import merge from './util/merge';
-var default_email_options = {
-  allow_display_name: false,
-  allow_underscores: false,
-  require_display_name: false,
-  allow_utf8_local_part: true,
-  require_tld: true,
-  blacklisted_chars: '',
-  ignore_max_length: false,
-  host_blacklist: [],
-  host_whitelist: []
-};
-
-/* eslint-disable max-len */
-/* eslint-disable no-control-regex */
-var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
-var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
-var gmailUserPart = /^[a-z\d]+$/;
-var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
-var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
-var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
-var defaultMaxEmailLength = 254;
-/* eslint-enable max-len */
-/* eslint-enable no-control-regex */
-
-/**
- * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2
- * @param {String} display_name
- */
-function validateDisplayName(display_name) {
-  var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1');
-  // display name with only spaces is not valid
-  if (!display_name_without_quotes.trim()) {
-    return false;
-  }
-
-  // check whether display name contains illegal character
-  var contains_illegal = /[\.";<>]/.test(display_name_without_quotes);
-  if (contains_illegal) {
-    // if contains illegal characters,
-    // must to be enclosed in double-quotes, otherwise it's not a valid display name
-    if (display_name_without_quotes === display_name) {
-      return false;
-    }
-
-    // the quotes in display name must start with character symbol \
-    var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length;
-    if (!all_start_with_back_slash) {
-      return false;
-    }
-  }
-  return true;
-}
-export default function isEmail(str, options) {
-  assertString(str);
-  options = merge(options, default_email_options);
-  if (options.require_display_name || options.allow_display_name) {
-    var display_email = str.match(splitNameAddress);
-    if (display_email) {
-      var display_name = display_email[1];
-
-      // Remove display name and angle brackets to get email address
-      // Can be done in the regex but will introduce a ReDOS (See  #1597 for more info)
-      str = str.replace(display_name, '').replace(/(^<|>$)/g, '');
-
-      // sometimes need to trim the last space to get the display name
-      // because there may be a space between display name and email address
-      // eg. myname <address@gmail.com>
-      // the display name is `myname` instead of `myname `, so need to trim the last space
-      if (display_name.endsWith(' ')) {
-        display_name = display_name.slice(0, -1);
-      }
-      if (!validateDisplayName(display_name)) {
-        return false;
-      }
-    } else if (options.require_display_name) {
-      return false;
-    }
-  }
-  if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {
-    return false;
-  }
-  var parts = str.split('@');
-  var domain = parts.pop();
-  var lower_domain = domain.toLowerCase();
-  if (options.host_blacklist.length > 0 && checkHost(lower_domain, options.host_blacklist)) {
-    return false;
-  }
-  if (options.host_whitelist.length > 0 && !checkHost(lower_domain, options.host_whitelist)) {
-    return false;
-  }
-  var user = parts.join('@');
-  if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
-    /*
-    Previously we removed dots for gmail addresses before validating.
-    This was removed because it allows `multiple..dots@gmail.com`
-    to be reported as valid, but it is not.
-    Gmail only normalizes single dots, removing them from here is pointless,
-    should be done in normalizeEmail
-    */
-    user = user.toLowerCase();
-
-    // Removing sub-address from username before gmail validation
-    var username = user.split('+')[0];
-
-    // Dots are not included in gmail length restriction
-    if (!isByteLength(username.replace(/\./g, ''), {
-      min: 6,
-      max: 30
-    })) {
-      return false;
-    }
-    var _user_parts = username.split('.');
-    for (var i = 0; i < _user_parts.length; i++) {
-      if (!gmailUserPart.test(_user_parts[i])) {
-        return false;
-      }
-    }
-  }
-  if (options.ignore_max_length === false && (!isByteLength(user, {
-    max: 64
-  }) || !isByteLength(domain, {
-    max: 254
-  }))) {
-    return false;
-  }
-  if (!isFQDN(domain, {
-    require_tld: options.require_tld,
-    ignore_max_length: options.ignore_max_length,
-    allow_underscores: options.allow_underscores
-  })) {
-    if (!options.allow_ip_domain) {
-      return false;
-    }
-    if (!isIP(domain)) {
-      if (!domain.startsWith('[') || !domain.endsWith(']')) {
-        return false;
-      }
-      var noBracketdomain = domain.slice(1, -1);
-      if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) {
-        return false;
-      }
-    }
-  }
-  if (options.blacklisted_chars) {
-    if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
-  }
-  if (user[0] === '"' && user[user.length - 1] === '"') {
-    user = user.slice(1, user.length - 1);
-    return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);
-  }
-  var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
-  var user_parts = user.split('.');
-  for (var _i = 0; _i < user_parts.length; _i++) {
-    if (!pattern.test(user_parts[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
Index: ckend/node_modules/validator/es/lib/isEmpty.js
===================================================================
--- backend/node_modules/validator/es/lib/isEmpty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import assertString from './util/assertString';
-import merge from './util/merge';
-var default_is_empty_options = {
-  ignore_whitespace: false
-};
-export default function isEmpty(str, options) {
-  assertString(str);
-  options = merge(options, default_is_empty_options);
-  return (options.ignore_whitespace ? str.trim().length : str.length) === 0;
-}
Index: ckend/node_modules/validator/es/lib/isEthereumAddress.js
===================================================================
--- backend/node_modules/validator/es/lib/isEthereumAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var eth = /^(0x)[0-9a-f]{40}$/i;
-export default function isEthereumAddress(str) {
-  assertString(str);
-  return eth.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isFQDN.js
===================================================================
--- backend/node_modules/validator/es/lib/isFQDN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-import assertString from './util/assertString';
-import merge from './util/merge';
-var default_fqdn_options = {
-  require_tld: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_numeric_tld: false,
-  allow_wildcard: false,
-  ignore_max_length: false
-};
-export default function isFQDN(str, options) {
-  assertString(str);
-  options = merge(options, default_fqdn_options);
-
-  /* Remove the optional trailing dot before checking validity */
-  if (options.allow_trailing_dot && str[str.length - 1] === '.') {
-    str = str.substring(0, str.length - 1);
-  }
-
-  /* Remove the optional wildcard before checking validity */
-  if (options.allow_wildcard === true && str.indexOf('*.') === 0) {
-    str = str.substring(2);
-  }
-  var parts = str.split('.');
-  var tld = parts[parts.length - 1];
-  if (options.require_tld) {
-    // disallow fqdns without tld
-    if (parts.length < 2) {
-      return false;
-    }
-    if (!options.allow_numeric_tld && !/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {
-      return false;
-    }
-
-    // disallow spaces
-    if (/\s/.test(tld)) {
-      return false;
-    }
-  }
-
-  // reject numeric TLDs
-  if (!options.allow_numeric_tld && /^\d+$/.test(tld)) {
-    return false;
-  }
-  return parts.every(function (part) {
-    if (part.length > 63 && !options.ignore_max_length) {
-      return false;
-    }
-    if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) {
-      return false;
-    }
-
-    // disallow full-width chars
-    if (/[\uff01-\uff5e]/.test(part)) {
-      return false;
-    }
-
-    // disallow parts starting or ending with hyphen
-    if (/^-|-$/.test(part)) {
-      return false;
-    }
-    if (!options.allow_underscores && /_/.test(part)) {
-      return false;
-    }
-    return true;
-  });
-}
Index: ckend/node_modules/validator/es/lib/isFloat.js
===================================================================
--- backend/node_modules/validator/es/lib/isFloat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-import assertString from './util/assertString';
-import isNullOrUndefined from './util/nullUndefinedCheck';
-import { decimal } from './alpha';
-export default function isFloat(str, options) {
-  assertString(str);
-  options = options || {};
-  var _float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$"));
-  if (str === '' || str === '.' || str === ',' || str === '-' || str === '+') {
-    return false;
-  }
-  var value = parseFloat(str.replace(',', '.'));
-  return _float.test(str) && (!options.hasOwnProperty('min') || isNullOrUndefined(options.min) || value >= options.min) && (!options.hasOwnProperty('max') || isNullOrUndefined(options.max) || value <= options.max) && (!options.hasOwnProperty('lt') || isNullOrUndefined(options.lt) || value < options.lt) && (!options.hasOwnProperty('gt') || isNullOrUndefined(options.gt) || value > options.gt);
-}
-export var locales = Object.keys(decimal);
Index: ckend/node_modules/validator/es/lib/isFullWidth.js
===================================================================
--- backend/node_modules/validator/es/lib/isFullWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-export var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-export default function isFullWidth(str) {
-  assertString(str);
-  return fullWidth.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isHSL.js
===================================================================
--- backend/node_modules/validator/es/lib/isHSL.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-import assertString from './util/assertString';
-var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i;
-var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;
-export default function isHSL(str) {
-  assertString(str);
-
-  // Strip duplicate spaces before calling the validation regex (See  #1598 for more info)
-  var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1');
-  if (strippedStr.indexOf(',') !== -1) {
-    return hslComma.test(strippedStr);
-  }
-  return hslSpace.test(strippedStr);
-}
Index: ckend/node_modules/validator/es/lib/isHalfWidth.js
===================================================================
--- backend/node_modules/validator/es/lib/isHalfWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-export var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-export default function isHalfWidth(str) {
-  assertString(str);
-  return halfWidth.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isHash.js
===================================================================
--- backend/node_modules/validator/es/lib/isHash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import assertString from './util/assertString';
-var lengths = {
-  md5: 32,
-  md4: 32,
-  sha1: 40,
-  sha256: 64,
-  sha384: 96,
-  sha512: 128,
-  ripemd128: 32,
-  ripemd160: 40,
-  tiger128: 32,
-  tiger160: 40,
-  tiger192: 48,
-  crc32: 8,
-  crc32b: 8
-};
-export default function isHash(str, algorithm) {
-  assertString(str);
-  var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$"));
-  return hash.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isHexColor.js
===================================================================
--- backend/node_modules/validator/es/lib/isHexColor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;
-export default function isHexColor(str) {
-  assertString(str);
-  return hexcolor.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isHexadecimal.js
===================================================================
--- backend/node_modules/validator/es/lib/isHexadecimal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;
-export default function isHexadecimal(str) {
-  assertString(str);
-  return hexadecimal.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isIBAN.js
===================================================================
--- backend/node_modules/validator/es/lib/isIBAN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,174 +1,0 @@
-import assertString from './util/assertString';
-import includes from './util/includesArray';
-
-/**
- * List of country codes with
- * corresponding IBAN regular expression
- * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
- */
-var ibanRegexThroughCountryCode = {
-  AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,
-  AE: /^(AE[0-9]{2})\d{3}\d{16}$/,
-  AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  AT: /^(AT[0-9]{2})\d{16}$/,
-  AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  BA: /^(BA[0-9]{2})\d{16}$/,
-  BE: /^(BE[0-9]{2})\d{12}$/,
-  BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,
-  BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,
-  BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,
-  BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  CR: /^(CR[0-9]{2})\d{18}$/,
-  CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  CZ: /^(CZ[0-9]{2})\d{20}$/,
-  DE: /^(DE[0-9]{2})\d{18}$/,
-  DK: /^(DK[0-9]{2})\d{14}$/,
-  DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/,
-  DZ: /^(DZ\d{24})$/,
-  EE: /^(EE[0-9]{2})\d{16}$/,
-  EG: /^(EG[0-9]{2})\d{25}$/,
-  ES: /^(ES[0-9]{2})\d{20}$/,
-  FI: /^(FI[0-9]{2})\d{14}$/,
-  FO: /^(FO[0-9]{2})\d{14}$/,
-  FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/,
-  GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,
-  GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,
-  GL: /^(GL[0-9]{2})\d{14}$/,
-  GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,
-  GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,
-  HR: /^(HR[0-9]{2})\d{17}$/,
-  HU: /^(HU[0-9]{2})\d{24}$/,
-  IE: /^(IE[0-9]{2})[A-Z]{4}\d{14}$/,
-  IL: /^(IL[0-9]{2})\d{19}$/,
-  IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,
-  IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/,
-  IS: /^(IS[0-9]{2})\d{22}$/,
-  IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/,
-  KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,
-  KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,
-  LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,
-  LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  LT: /^(LT[0-9]{2})\d{16}$/,
-  LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,
-  MA: /^(MA[0-9]{26})$/,
-  MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,
-  ME: /^(ME[0-9]{2})\d{18}$/,
-  MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,
-  MR: /^(MR[0-9]{2})\d{23}$/,
-  MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,
-  MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,
-  MZ: /^(MZ[0-9]{2})\d{21}$/,
-  NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/,
-  NO: /^(NO[0-9]{2})\d{11}$/,
-  PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,
-  PL: /^(PL[0-9]{2})\d{24}$/,
-  PS: /^(PS[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  PT: /^(PT[0-9]{2})\d{21}$/,
-  QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,
-  RS: /^(RS[0-9]{2})\d{18}$/,
-  SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,
-  SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,
-  SE: /^(SE[0-9]{2})\d{20}$/,
-  SI: /^(SI[0-9]{2})\d{15}$/,
-  SK: /^(SK[0-9]{2})\d{20}$/,
-  SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  TL: /^(TL[0-9]{2})\d{19}$/,
-  TN: /^(TN[0-9]{2})\d{20}$/,
-  TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,
-  UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,
-  VA: /^(VA[0-9]{2})\d{18}$/,
-  VG: /^(VG[0-9]{2})[A-Z]{4}\d{16}$/,
-  XK: /^(XK[0-9]{2})\d{16}$/
-};
-
-/**
- * Check if the country codes passed are valid using the
- * ibanRegexThroughCountryCode as a reference
- *
- * @param {array} countryCodeArray
- * @return {boolean}
- */
-
-function hasOnlyValidCountryCodes(countryCodeArray) {
-  var countryCodeArrayFilteredWithObjectIbanCode = countryCodeArray.filter(function (countryCode) {
-    return !(countryCode in ibanRegexThroughCountryCode);
-  });
-  if (countryCodeArrayFilteredWithObjectIbanCode.length > 0) {
-    return false;
-  }
-  return true;
-}
-
-/**
- * Check whether string has correct universal IBAN format
- * The IBAN consists of up to 34 alphanumeric characters, as follows:
- * Country Code using ISO 3166-1 alpha-2, two letters
- * check digits, two digits and
- * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.
- * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]
- *
- * @param {string} str - string under validation
- * @param {object} options - object to pass the countries to be either whitelisted or blacklisted
- * @return {boolean}
- */
-function hasValidIbanFormat(str, options) {
-  // Strip white spaces and hyphens
-  var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase();
-  var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();
-  var isoCountryCodeInIbanRegexCodeObject = isoCountryCode in ibanRegexThroughCountryCode;
-  if (options.whitelist) {
-    if (!hasOnlyValidCountryCodes(options.whitelist)) {
-      return false;
-    }
-    var isoCountryCodeInWhiteList = includes(options.whitelist, isoCountryCode);
-    if (!isoCountryCodeInWhiteList) {
-      return false;
-    }
-  }
-  if (options.blacklist) {
-    var isoCountryCodeInBlackList = includes(options.blacklist, isoCountryCode);
-    if (isoCountryCodeInBlackList) {
-      return false;
-    }
-  }
-  return isoCountryCodeInIbanRegexCodeObject && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);
-}
-
-/**
-   * Check whether string has valid IBAN Checksum
-   * by performing basic mod-97 operation and
-   * the remainder should equal 1
-   * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string
-   * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35
-   * -- Interpret the string as a decimal integer and
-   * -- compute the remainder on division by 97 (mod 97)
-   * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
-   *
-   * @param {string} str
-   * @return {boolean}
-   */
-function hasValidIbanChecksum(str) {
-  var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic
-  var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);
-  var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (_char) {
-    return _char.charCodeAt(0) - 55;
-  });
-  var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) {
-    return Number(acc + value) % 97;
-  }, '');
-  return remainder === 1;
-}
-export default function isIBAN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  return hasValidIbanFormat(str, options) && hasValidIbanChecksum(str);
-}
-export var locales = Object.keys(ibanRegexThroughCountryCode);
Index: ckend/node_modules/validator/es/lib/isIMEI.js
===================================================================
--- backend/node_modules/validator/es/lib/isIMEI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-import assertString from './util/assertString';
-var imeiRegexWithoutHyphens = /^[0-9]{15}$/;
-var imeiRegexWithHyphens = /^\d{2}-\d{6}-\d{6}-\d{1}$/;
-export default function isIMEI(str, options) {
-  assertString(str);
-  options = options || {};
-
-  // default regex for checking imei is the one without hyphens
-
-  var imeiRegex = imeiRegexWithoutHyphens;
-  if (options.allow_hyphens) {
-    imeiRegex = imeiRegexWithHyphens;
-  }
-  if (!imeiRegex.test(str)) {
-    return false;
-  }
-  str = str.replace(/-/g, '');
-  var sum = 0,
-    mul = 2,
-    l = 14;
-  for (var i = 0; i < l; i++) {
-    var digit = str.substring(l - i - 1, l - i);
-    var tp = parseInt(digit, 10) * mul;
-    if (tp >= 10) {
-      sum += tp % 10 + 1;
-    } else {
-      sum += tp;
-    }
-    if (mul === 1) {
-      mul += 1;
-    } else {
-      mul -= 1;
-    }
-  }
-  var chk = (10 - sum % 10) % 10;
-  if (chk !== parseInt(str.substring(14, 15), 10)) {
-    return false;
-  }
-  return true;
-}
Index: ckend/node_modules/validator/es/lib/isIP.js
===================================================================
--- backend/node_modules/validator/es/lib/isIP.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import assertString from './util/assertString';
-/**
-11.3.  Examples
-
-   The following addresses
-
-             fe80::1234 (on the 1st link of the node)
-             ff02::5678 (on the 5th link of the node)
-             ff08::9abc (on the 10th organization of the node)
-
-   would be represented as follows:
-
-             fe80::1234%1
-             ff02::5678%5
-             ff08::9abc%10
-
-   (Here we assume a natural translation from a zone index to the
-   <zone_id> part, where the Nth zone of any scope is translated into
-   "N".)
-
-   If we use interface names as <zone_id>, those addresses could also be
-   represented as follows:
-
-            fe80::1234%ne0
-            ff02::5678%pvc1.3
-            ff08::9abc%interface10
-
-   where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
-   to the 5th link, and "interface10" belongs to the 10th organization.
- * * */
-var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
-var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
-var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
-var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z.]{1,})?$');
-export default function isIP(ipAddress) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(ipAddress);
-
-  // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])
-  // eslint-disable-next-line prefer-rest-params
-  var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';
-  if (!version) {
-    return isIP(ipAddress, {
-      version: 4
-    }) || isIP(ipAddress, {
-      version: 6
-    });
-  }
-  if (version.toString() === '4') {
-    return IPv4AddressRegExp.test(ipAddress);
-  }
-  if (version.toString() === '6') {
-    return IPv6AddressRegExp.test(ipAddress);
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isIPRange.js
===================================================================
--- backend/node_modules/validator/es/lib/isIPRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,41 +1,0 @@
-import assertString from './util/assertString';
-import isIP from './isIP';
-var subnetMaybe = /^\d{1,3}$/;
-var v4Subnet = 32;
-var v6Subnet = 128;
-export default function isIPRange(str) {
-  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-  assertString(str);
-  var parts = str.split('/');
-
-  // parts[0] -> ip, parts[1] -> subnet
-  if (parts.length !== 2) {
-    return false;
-  }
-  if (!subnetMaybe.test(parts[1])) {
-    return false;
-  }
-
-  // Disallow preceding 0 i.e. 01, 02, ...
-  if (parts[1].length > 1 && parts[1].startsWith('0')) {
-    return false;
-  }
-  var isValidIP = isIP(parts[0], version);
-  if (!isValidIP) {
-    return false;
-  }
-
-  // Define valid subnet according to IP's version
-  var expectedSubnet = null;
-  switch (String(version)) {
-    case '4':
-      expectedSubnet = v4Subnet;
-      break;
-    case '6':
-      expectedSubnet = v6Subnet;
-      break;
-    default:
-      expectedSubnet = isIP(parts[0], '6') ? v6Subnet : v4Subnet;
-  }
-  return parts[1] <= expectedSubnet && parts[1] >= 0;
-}
Index: ckend/node_modules/validator/es/lib/isISBN.js
===================================================================
--- backend/node_modules/validator/es/lib/isISBN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-import assertString from './util/assertString';
-var possibleIsbn10 = /^(?:[0-9]{9}X|[0-9]{10})$/;
-var possibleIsbn13 = /^(?:[0-9]{13})$/;
-var factor = [1, 3];
-export default function isISBN(isbn, options) {
-  assertString(isbn);
-
-  // For backwards compatibility:
-  // isISBN(str [, version]), i.e. `options` could be used as argument for the legacy `version`
-  var version = String((options === null || options === void 0 ? void 0 : options.version) || options);
-  if (!(options !== null && options !== void 0 && options.version || options)) {
-    return isISBN(isbn, {
-      version: 10
-    }) || isISBN(isbn, {
-      version: 13
-    });
-  }
-  var sanitizedIsbn = isbn.replace(/[\s-]+/g, '');
-  var checksum = 0;
-  if (version === '10') {
-    if (!possibleIsbn10.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var i = 0; i < version - 1; i++) {
-      checksum += (i + 1) * sanitizedIsbn.charAt(i);
-    }
-    if (sanitizedIsbn.charAt(9) === 'X') {
-      checksum += 10 * 10;
-    } else {
-      checksum += 10 * sanitizedIsbn.charAt(9);
-    }
-    if (checksum % 11 === 0) {
-      return true;
-    }
-  } else if (version === '13') {
-    if (!possibleIsbn13.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var _i = 0; _i < 12; _i++) {
-      checksum += factor[_i % 2] * sanitizedIsbn.charAt(_i);
-    }
-    if (sanitizedIsbn.charAt(12) - (10 - checksum % 10) % 10 === 0) {
-      return true;
-    }
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isISIN.js
===================================================================
--- backend/node_modules/validator/es/lib/isISIN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-import assertString from './util/assertString';
-var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;
-
-// this link details how the check digit is calculated:
-// https://www.isin.org/isin-format/. it is a little bit
-// odd in that it works with digits, not numbers. in order
-// to make only one pass through the ISIN characters, the
-// each alpha character is handled as 2 characters within
-// the loop.
-
-export default function isISIN(str) {
-  assertString(str);
-  if (!isin.test(str)) {
-    return false;
-  }
-  var _double = true;
-  var sum = 0;
-  // convert values
-  for (var i = str.length - 2; i >= 0; i--) {
-    if (str[i] >= 'A' && str[i] <= 'Z') {
-      var value = str[i].charCodeAt(0) - 55;
-      var lo = value % 10;
-      var hi = Math.trunc(value / 10);
-      // letters have two digits, so handle the low order
-      // and high order digits separately.
-      for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {
-        var digit = _arr[_i];
-        if (_double) {
-          if (digit >= 5) {
-            sum += 1 + (digit - 5) * 2;
-          } else {
-            sum += digit * 2;
-          }
-        } else {
-          sum += digit;
-        }
-        _double = !_double;
-      }
-    } else {
-      var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);
-      if (_double) {
-        if (_digit >= 5) {
-          sum += 1 + (_digit - 5) * 2;
-        } else {
-          sum += _digit * 2;
-        }
-      } else {
-        sum += _digit;
-      }
-      _double = !_double;
-    }
-  }
-  var check = Math.trunc((sum + 9) / 10) * 10 - sum;
-  return +str[str.length - 1] === check;
-}
Index: ckend/node_modules/validator/es/lib/isISO15924.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO15924.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import assertString from './util/assertString';
-
-// from https://www.unicode.org/iso15924/iso15924-codes.html
-var validISO15924Codes = new Set(['Adlm', 'Afak', 'Aghb', 'Ahom', 'Arab', 'Aran', 'Armi', 'Armn', 'Avst', 'Bali', 'Bamu', 'Bass', 'Batk', 'Beng', 'Bhks', 'Blis', 'Bopo', 'Brah', 'Brai', 'Bugi', 'Buhd', 'Cakm', 'Cans', 'Cari', 'Cham', 'Cher', 'Chis', 'Chrs', 'Cirt', 'Copt', 'Cpmn', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Diak', 'Dogr', 'Dsrt', 'Dupl', 'Egyd', 'Egyh', 'Egyp', 'Elba', 'Elym', 'Ethi', 'Gara', 'Geok', 'Geor', 'Glag', 'Gong', 'Gonm', 'Goth', 'Gran', 'Grek', 'Gujr', 'Gukh', 'Guru', 'Hanb', 'Hang', 'Hani', 'Hano', 'Hans', 'Hant', 'Hatr', 'Hebr', 'Hira', 'Hluw', 'Hmng', 'Hmnp', 'Hrkt', 'Hung', 'Inds', 'Ital', 'Jamo', 'Java', 'Jpan', 'Jurc', 'Kali', 'Kana', 'Kawi', 'Khar', 'Khmr', 'Khoj', 'Kitl', 'Kits', 'Knda', 'Kore', 'Kpel', 'Krai', 'Kthi', 'Lana', 'Laoo', 'Latf', 'Latg', 'Latn', 'Leke', 'Lepc', 'Limb', 'Lina', 'Linb', 'Lisu', 'Loma', 'Lyci', 'Lydi', 'Mahj', 'Maka', 'Mand', 'Mani', 'Marc', 'Maya', 'Medf', 'Mend', 'Merc', 'Mero', 'Mlym', 'Modi', 'Mong', 'Moon', 'Mroo', 'Mtei', 'Mult', 'Mymr', 'Nagm', 'Nand', 'Narb', 'Nbat', 'Newa', 'Nkdb', 'Nkgb', 'Nkoo', 'Nshu', 'Ogam', 'Olck', 'Onao', 'Orkh', 'Orya', 'Osge', 'Osma', 'Ougr', 'Palm', 'Pauc', 'Pcun', 'Pelm', 'Perm', 'Phag', 'Phli', 'Phlp', 'Phlv', 'Phnx', 'Plrd', 'Piqd', 'Prti', 'Psin', 'Qaaa', 'Qaab', 'Qaac', 'Qaad', 'Qaae', 'Qaaf', 'Qaag', 'Qaah', 'Qaai', 'Qaaj', 'Qaak', 'Qaal', 'Qaam', 'Qaan', 'Qaao', 'Qaap', 'Qaaq', 'Qaar', 'Qaas', 'Qaat', 'Qaau', 'Qaav', 'Qaaw', 'Qaax', 'Qaay', 'Qaaz', 'Qaba', 'Qabb', 'Qabc', 'Qabd', 'Qabe', 'Qabf', 'Qabg', 'Qabh', 'Qabi', 'Qabj', 'Qabk', 'Qabl', 'Qabm', 'Qabn', 'Qabo', 'Qabp', 'Qabq', 'Qabr', 'Qabs', 'Qabt', 'Qabu', 'Qabv', 'Qabw', 'Qabx', 'Ranj', 'Rjng', 'Rohg', 'Roro', 'Runr', 'Samr', 'Sara', 'Sarb', 'Saur', 'Sgnw', 'Shaw', 'Shrd', 'Shui', 'Sidd', 'Sidt', 'Sind', 'Sinh', 'Sogd', 'Sogo', 'Sora', 'Soyo', 'Sund', 'Sunu', 'Sylo', 'Syrc', 'Syre', 'Syrj', 'Syrn', 'Tagb', 'Takr', 'Tale', 'Talu', 'Taml', 'Tang', 'Tavt', 'Tayo', 'Telu', 'Teng', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Tnsa', 'Todr', 'Tols', 'Toto', 'Tutg', 'Ugar', 'Vaii', 'Visp', 'Vith', 'Wara', 'Wcho', 'Wole', 'Xpeo', 'Xsux', 'Yezi', 'Yiii', 'Zanb', 'Zinh', 'Zmth', 'Zsye', 'Zsym', 'Zxxx', 'Zyyy', 'Zzzz']);
-export default function isISO15924(str) {
-  assertString(str);
-  return validISO15924Codes.has(str);
-}
-export var ScriptCodes = validISO15924Codes;
Index: ckend/node_modules/validator/es/lib/isISO31661Alpha2.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO31661Alpha2.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import assertString from './util/assertString';
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);
-export default function isISO31661Alpha2(str) {
-  assertString(str);
-  return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());
-}
-export var CountryCodes = validISO31661Alpha2CountriesCodes;
Index: ckend/node_modules/validator/es/lib/isISO31661Alpha3.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO31661Alpha3.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
-var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);
-export default function isISO31661Alpha3(str) {
-  assertString(str);
-  return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());
-}
Index: ckend/node_modules/validator/es/lib/isISO31661Numeric.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO31661Numeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_numeric
-var validISO31661NumericCountriesCodes = new Set(['004', '008', '010', '012', '016', '020', '024', '028', '031', '032', '036', '040', '044', '048', '050', '051', '052', '056', '060', '064', '068', '070', '072', '074', '076', '084', '086', '090', '092', '096', '100', '104', '108', '112', '116', '120', '124', '132', '136', '140', '144', '148', '152', '156', '158', '162', '166', '170', '174', '175', '178', '180', '184', '188', '191', '192', '196', '203', '204', '208', '212', '214', '218', '222', '226', '231', '232', '233', '234', '238', '239', '242', '246', '248', '250', '254', '258', '260', '262', '266', '268', '270', '275', '276', '288', '292', '296', '300', '304', '308', '312', '316', '320', '324', '328', '332', '334', '336', '340', '344', '348', '352', '356', '360', '364', '368', '372', '376', '380', '384', '388', '392', '398', '400', '404', '408', '410', '414', '417', '418', '422', '426', '428', '430', '434', '438', '440', '442', '446', '450', '454', '458', '462', '466', '470', '474', '478', '480', '484', '492', '496', '498', '499', '500', '504', '508', '512', '516', '520', '524', '528', '531', '533', '534', '535', '540', '548', '554', '558', '562', '566', '570', '574', '578', '580', '581', '583', '584', '585', '586', '591', '598', '600', '604', '608', '612', '616', '620', '624', '626', '630', '634', '638', '642', '643', '646', '652', '654', '659', '660', '662', '663', '666', '670', '674', '678', '682', '686', '688', '690', '694', '702', '703', '704', '705', '706', '710', '716', '724', '728', '729', '732', '740', '744', '748', '752', '756', '760', '762', '764', '768', '772', '776', '780', '784', '788', '792', '795', '796', '798', '800', '804', '807', '818', '826', '831', '832', '833', '834', '840', '850', '854', '858', '860', '862', '876', '882', '887', '894']);
-export default function isISO31661Numeric(str) {
-  assertString(str);
-  return validISO31661NumericCountriesCodes.has(str);
-}
Index: ckend/node_modules/validator/es/lib/isISO4217.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO4217.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import assertString from './util/assertString';
-
-// from https://en.wikipedia.org/wiki/ISO_4217
-var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VED', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']);
-export default function isISO4217(str) {
-  assertString(str);
-  return validISO4217CurrencyCodes.has(str.toUpperCase());
-}
-export var CurrencyCodes = validISO4217CurrencyCodes;
Index: ckend/node_modules/validator/es/lib/isISO6346.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO6346.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-import assertString from './util/assertString';
-
-// https://en.wikipedia.org/wiki/ISO_6346
-// according to ISO6346 standard, checksum digit is mandatory for freight container but recommended
-// for other container types (J and Z)
-var isISO6346Str = /^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/;
-var isDigit = /^[0-9]$/;
-export function isISO6346(str) {
-  assertString(str);
-  str = str.toUpperCase();
-  if (!isISO6346Str.test(str)) return false;
-  if (str.length === 11) {
-    var sum = 0;
-    for (var i = 0; i < str.length - 1; i++) {
-      if (!isDigit.test(str[i])) {
-        var convertedCode = void 0;
-        var letterCode = str.charCodeAt(i) - 55;
-        if (letterCode < 11) convertedCode = letterCode;else if (letterCode >= 11 && letterCode <= 20) convertedCode = 12 + letterCode % 11;else if (letterCode >= 21 && letterCode <= 30) convertedCode = 23 + letterCode % 21;else convertedCode = 34 + letterCode % 31;
-        sum += convertedCode * Math.pow(2, i);
-      } else sum += str[i] * Math.pow(2, i);
-    }
-    var checkSumDigit = sum % 11;
-    if (checkSumDigit === 10) checkSumDigit = 0;
-    return Number(str[str.length - 1]) === checkSumDigit;
-  }
-  return true;
-}
-export var isFreightContainerID = isISO6346;
Index: ckend/node_modules/validator/es/lib/isISO6391.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO6391.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var isISO6391Set = new Set(['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu']);
-export default function isISO6391(str) {
-  assertString(str);
-  return isISO6391Set.has(str);
-}
Index: ckend/node_modules/validator/es/lib/isISO8601.js
===================================================================
--- backend/node_modules/validator/es/lib/isISO8601.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-import assertString from './util/assertString';
-
-/* eslint-disable max-len */
-// from http://goo.gl/0ejHHW
-var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-// same as above, except with a strict 'T' separator between date and time
-var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-/* eslint-enable max-len */
-var isValidDate = function isValidDate(str) {
-  // str must have passed the ISO8601 check
-  // this check is meant to catch invalid dates
-  // like 2009-02-31
-  // first check for ordinal dates
-  var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);
-  if (ordinalMatch) {
-    var oYear = Number(ordinalMatch[1]);
-    var oDay = Number(ordinalMatch[2]);
-    // if is leap year
-    if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;
-    return oDay <= 365;
-  }
-  var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number);
-  var year = match[1];
-  var month = match[2];
-  var day = match[3];
-  var monthString = month ? "0".concat(month).slice(-2) : month;
-  var dayString = day ? "0".concat(day).slice(-2) : day;
-
-  // create a date object and compare
-  var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01'));
-  if (month && day) {
-    return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;
-  }
-  return true;
-};
-export default function isISO8601(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);
-  if (check && options.strict) return isValidDate(str);
-  return check;
-}
Index: ckend/node_modules/validator/es/lib/isISRC.js
===================================================================
--- backend/node_modules/validator/es/lib/isISRC.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-
-// see http://isrc.ifpi.org/en/isrc-standard/code-syntax
-var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;
-export default function isISRC(str) {
-  assertString(str);
-  return isrc.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isISSN.js
===================================================================
--- backend/node_modules/validator/es/lib/isISSN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import assertString from './util/assertString';
-var issn = '^\\d{4}-?\\d{3}[\\dX]$';
-export default function isISSN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  var testIssn = issn;
-  testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;
-  testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');
-  if (!testIssn.test(str)) {
-    return false;
-  }
-  var digits = str.replace('-', '').toUpperCase();
-  var checksum = 0;
-  for (var i = 0; i < digits.length; i++) {
-    var digit = digits[i];
-    checksum += (digit === 'X' ? 10 : +digit) * (8 - i);
-  }
-  return checksum % 11 === 0;
-}
Index: ckend/node_modules/validator/es/lib/isIdentityCard.js
===================================================================
--- backend/node_modules/validator/es/lib/isIdentityCard.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,417 +1,0 @@
-import assertString from './util/assertString';
-import includes from './util/includesArray';
-import isInt from './isInt';
-var validators = {
-  PL: function PL(str) {
-    assertString(str);
-    var weightOfDigits = {
-      1: 1,
-      2: 3,
-      3: 7,
-      4: 9,
-      5: 1,
-      6: 3,
-      7: 7,
-      8: 9,
-      9: 1,
-      10: 3,
-      11: 0
-    };
-    if (str != null && str.length === 11 && isInt(str, {
-      allow_leading_zeroes: true
-    })) {
-      var digits = str.split('').slice(0, -1);
-      var sum = digits.reduce(function (acc, digit, index) {
-        return acc + Number(digit) * weightOfDigits[index + 1];
-      }, 0);
-      var modulo = sum % 10;
-      var lastDigit = Number(str.charAt(str.length - 1));
-      if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {
-        return true;
-      }
-    }
-    return false;
-  },
-  ES: function ES(str) {
-    assertString(str);
-    var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
-    var charsValue = {
-      X: 0,
-      Y: 1,
-      Z: 2
-    };
-    var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-
-    // sanitize user input
-    var sanitized = str.trim().toUpperCase();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-
-    // validate the control digit
-    var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (_char) {
-      return charsValue[_char];
-    });
-    return sanitized.endsWith(controlDigits[number % 23]);
-  },
-  FI: function FI(str) {
-    // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated
-    assertString(str);
-    if (str.length !== 11) {
-      return false;
-    }
-    if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {
-      return false;
-    }
-    var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';
-    var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);
-    var remainder = idAsNumber % 31;
-    var checkDigit = checkDigits[remainder];
-    return checkDigit === str.slice(10, 11);
-  },
-  IN: function IN(str) {
-    var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/;
-
-    // multiplication table
-    var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-
-    // permutation table
-    var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var c = 0;
-    var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse();
-    invertedArray.forEach(function (val, i) {
-      c = d[c][p[i % 8][val]];
-    });
-    return c === 0;
-  },
-  IR: function IR(str) {
-    if (!str.match(/^\d{10}$/)) return false;
-    str = "0000".concat(str).slice(str.length - 6);
-    if (parseInt(str.slice(3, 9), 10) === 0) return false;
-    var lastNumber = parseInt(str.slice(9, 10), 10);
-    var sum = 0;
-    for (var i = 0; i < 9; i++) {
-      sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);
-    }
-    sum %= 11;
-    return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;
-  },
-  IT: function IT(str) {
-    if (str.length !== 9) return false;
-    if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana
-    return str.search(/C[A-Z]\d{5}[A-Z]{2}/i) > -1;
-  },
-  NO: function NO(str) {
-    var sanitized = str.trim();
-    if (isNaN(Number(sanitized))) return false;
-    if (sanitized.length !== 11) return false;
-    if (sanitized === '00000000000') return false;
-
-    // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer
-    var f = sanitized.split('').map(Number);
-    var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;
-    var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;
-    if (k1 !== f[9] || k2 !== f[10]) return false;
-    return true;
-  },
-  TH: function TH(str) {
-    if (!str.match(/^[1-8]\d{12}$/)) return false;
-
-    // validate check digit
-    var sum = 0;
-    for (var i = 0; i < 12; i++) {
-      sum += parseInt(str[i], 10) * (13 - i);
-    }
-    return str[12] === ((11 - sum % 11) % 10).toString();
-  },
-  LK: function LK(str) {
-    var old_nic = /^[1-9]\d{8}[vx]$/i;
-    var new_nic = /^[1-9]\d{11}$/i;
-    if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;
-    return false;
-  },
-  'he-IL': function heIL(str) {
-    var DNI = /^\d{9}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var id = sanitized;
-    var sum = 0,
-      incNum;
-    for (var i = 0; i < id.length; i++) {
-      incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2
-      sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total
-    }
-    return sum % 10 === 0;
-  },
-  'ar-LY': function arLY(str) {
-    // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2
-    var NIN = /^(1|2)\d{11}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!NIN.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'ar-TN': function arTN(str) {
-    var DNI = /^\d{8}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'zh-CN': function zhCN(str) {
-    var provincesAndCities = ['11',
-    // 北京
-    '12',
-    // 天津
-    '13',
-    // 河北
-    '14',
-    // 山西
-    '15',
-    // 内蒙古
-    '21',
-    // 辽宁
-    '22',
-    // 吉林
-    '23',
-    // 黑龙江
-    '31',
-    // 上海
-    '32',
-    // 江苏
-    '33',
-    // 浙江
-    '34',
-    // 安徽
-    '35',
-    // 福建
-    '36',
-    // 江西
-    '37',
-    // 山东
-    '41',
-    // 河南
-    '42',
-    // 湖北
-    '43',
-    // 湖南
-    '44',
-    // 广东
-    '45',
-    // 广西
-    '46',
-    // 海南
-    '50',
-    // 重庆
-    '51',
-    // 四川
-    '52',
-    // 贵州
-    '53',
-    // 云南
-    '54',
-    // 西藏
-    '61',
-    // 陕西
-    '62',
-    // 甘肃
-    '63',
-    // 青海
-    '64',
-    // 宁夏
-    '65',
-    // 新疆
-    '71',
-    // 台湾
-    '81',
-    // 香港
-    '82',
-    // 澳门
-    '91' // 国外
-    ];
-    var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];
-    var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
-    var checkAddressCode = function checkAddressCode(addressCode) {
-      return includes(provincesAndCities, addressCode);
-    };
-    var checkBirthDayCode = function checkBirthDayCode(birDayCode) {
-      var yyyy = parseInt(birDayCode.substring(0, 4), 10);
-      var mm = parseInt(birDayCode.substring(4, 6), 10);
-      var dd = parseInt(birDayCode.substring(6), 10);
-      var xdata = new Date(yyyy, mm - 1, dd);
-      if (xdata > new Date()) {
-        return false;
-        // eslint-disable-next-line max-len
-      } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {
-        return true;
-      }
-      return false;
-    };
-    var getParityBit = function getParityBit(idCardNo) {
-      var id17 = idCardNo.substring(0, 17);
-      var power = 0;
-      for (var i = 0; i < 17; i++) {
-        power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);
-      }
-      var mod = power % 11;
-      return parityBit[mod];
-    };
-    var checkParityBit = function checkParityBit(idCardNo) {
-      return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();
-    };
-    var check15IdCardNo = function check15IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = "19".concat(idCardNo.substring(6, 12));
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return true;
-    };
-    var check18IdCardNo = function check18IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = idCardNo.substring(6, 14);
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return checkParityBit(idCardNo);
-    };
-    var checkIdCardNo = function checkIdCardNo(idCardNo) {
-      var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
-      if (!check) return false;
-      if (idCardNo.length === 15) {
-        return check15IdCardNo(idCardNo);
-      }
-      return check18IdCardNo(idCardNo);
-    };
-    return checkIdCardNo(str);
-  },
-  'zh-HK': function zhHK(str) {
-    // sanitize user input
-    str = str.trim();
-
-    // HKID number starts with 1 or 2 letters, followed by 6 digits,
-    // then a checksum contained in square / round brackets or nothing
-    var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/;
-    var regexIsDigit = /^[0-9]$/;
-
-    // convert the user input to all uppercase and apply regex
-    str = str.toUpperCase();
-    if (!regexHKID.test(str)) return false;
-    str = str.replace(/\[|\]|\(|\)/g, '');
-    if (str.length === 8) str = "3".concat(str);
-    var checkSumVal = 0;
-    for (var i = 0; i <= 7; i++) {
-      var convertedChar = void 0;
-      if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];
-      checkSumVal += convertedChar * (9 - i);
-    }
-    checkSumVal %= 11;
-    var checkSumConverted;
-    if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);
-    if (checkSumConverted === str[str.length - 1]) return true;
-    return false;
-  },
-  'zh-TW': function zhTW(str) {
-    var ALPHABET_CODES = {
-      A: 10,
-      B: 11,
-      C: 12,
-      D: 13,
-      E: 14,
-      F: 15,
-      G: 16,
-      H: 17,
-      I: 34,
-      J: 18,
-      K: 19,
-      L: 20,
-      M: 21,
-      N: 22,
-      O: 35,
-      P: 23,
-      Q: 24,
-      R: 25,
-      S: 26,
-      T: 27,
-      U: 28,
-      V: 29,
-      W: 32,
-      X: 30,
-      Y: 31,
-      Z: 33
-    };
-    var sanitized = str.trim().toUpperCase();
-    if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;
-    return Array.from(sanitized).reduce(function (sum, number, index) {
-      if (index === 0) {
-        var code = ALPHABET_CODES[number];
-        return code % 10 * 9 + Math.floor(code / 10);
-      }
-      if (index === 9) {
-        return (10 - sum % 10 - Number(number)) % 10 === 0;
-      }
-      return sum + Number(number) * (9 - index);
-    }, 0);
-  },
-  PK: function PK(str) {
-    // Pakistani National Identity Number CNIC is 13 digits
-    var CNIC = /^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    return CNIC.test(sanitized);
-  }
-};
-export default function isIdentityCard(str, locale) {
-  assertString(str);
-  if (locale in validators) {
-    return validators[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (validators.hasOwnProperty(key)) {
-        var validator = validators[key];
-        if (validator(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isIn.js
===================================================================
--- backend/node_modules/validator/es/lib/isIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import assertString from './util/assertString';
-import toString from './util/toString';
-export default function isIn(str, options) {
-  assertString(str);
-  var i;
-  if (Object.prototype.toString.call(options) === '[object Array]') {
-    var array = [];
-    for (i in options) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if ({}.hasOwnProperty.call(options, i)) {
-        array[i] = toString(options[i]);
-      }
-    }
-    return array.indexOf(str) >= 0;
-  } else if (_typeof(options) === 'object') {
-    return options.hasOwnProperty(str);
-  } else if (options && typeof options.indexOf === 'function') {
-    return options.indexOf(str) >= 0;
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isInt.js
===================================================================
--- backend/node_modules/validator/es/lib/isInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-import assertString from './util/assertString';
-import isNullOrUndefined from './util/nullUndefinedCheck';
-var _int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;
-var intLeadingZeroes = /^[-+]?[0-9]+$/;
-export default function isInt(str, options) {
-  assertString(str);
-  options = options || {};
-
-  // Get the regex to use for testing, based on whether
-  // leading zeroes are allowed or not.
-  var regex = options.allow_leading_zeroes === false ? _int : intLeadingZeroes;
-
-  // Check min/max/lt/gt
-  var minCheckPassed = !options.hasOwnProperty('min') || isNullOrUndefined(options.min) || str >= options.min;
-  var maxCheckPassed = !options.hasOwnProperty('max') || isNullOrUndefined(options.max) || str <= options.max;
-  var ltCheckPassed = !options.hasOwnProperty('lt') || isNullOrUndefined(options.lt) || str < options.lt;
-  var gtCheckPassed = !options.hasOwnProperty('gt') || isNullOrUndefined(options.gt) || str > options.gt;
-  return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;
-}
Index: ckend/node_modules/validator/es/lib/isJSON.js
===================================================================
--- backend/node_modules/validator/es/lib/isJSON.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import assertString from './util/assertString';
-import includes from './util/includesArray';
-import merge from './util/merge';
-var default_json_options = {
-  allow_primitives: false
-};
-export default function isJSON(str, options) {
-  assertString(str);
-  try {
-    options = merge(options, default_json_options);
-    var primitives = [];
-    if (options.allow_primitives) {
-      primitives = [null, false, true];
-    }
-    var obj = JSON.parse(str);
-    return includes(primitives, obj) || !!obj && _typeof(obj) === 'object';
-  } catch (e) {/* ignore */}
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/isJWT.js
===================================================================
--- backend/node_modules/validator/es/lib/isJWT.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import assertString from './util/assertString';
-import isBase64 from './isBase64';
-export default function isJWT(str) {
-  assertString(str);
-  var dotSplit = str.split('.');
-  var len = dotSplit.length;
-  if (len !== 3) {
-    return false;
-  }
-  return dotSplit.reduce(function (acc, currElem) {
-    return acc && isBase64(currElem, {
-      urlSafe: true
-    });
-  }, true);
-}
Index: ckend/node_modules/validator/es/lib/isLatLong.js
===================================================================
--- backend/node_modules/validator/es/lib/isLatLong.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import assertString from './util/assertString';
-import merge from './util/merge';
-import includes from './util/includesString';
-var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/;
-var _long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;
-var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i;
-var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i;
-var defaultLatLongOptions = {
-  checkDMS: false
-};
-export default function isLatLong(str, options) {
-  assertString(str);
-  options = merge(options, defaultLatLongOptions);
-  if (!includes(str, ',')) return false;
-  var pair = str.split(',');
-  if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;
-  if (options.checkDMS) {
-    return latDMS.test(pair[0]) && longDMS.test(pair[1]);
-  }
-  return lat.test(pair[0]) && _long.test(pair[1]);
-}
Index: ckend/node_modules/validator/es/lib/isLength.js
===================================================================
--- backend/node_modules/validator/es/lib/isLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-import assertString from './util/assertString';
-
-/* eslint-disable prefer-rest-params */
-export default function isLength(str, options) {
-  assertString(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isLength(str, min [, max])
-    min = arguments[1] || 0;
-    max = arguments[2];
-  }
-  var presentationSequences = str.match(/(\uFE0F|\uFE0E)/g) || [];
-  var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
-  var len = str.length - presentationSequences.length - surrogatePairs.length;
-  var isInsideRange = len >= min && (typeof max === 'undefined' || len <= max);
-  if (isInsideRange && Array.isArray(options === null || options === void 0 ? void 0 : options.discreteLengths)) {
-    return options.discreteLengths.some(function (discreteLen) {
-      return discreteLen === len;
-    });
-  }
-  return isInsideRange;
-}
Index: ckend/node_modules/validator/es/lib/isLicensePlate.js
===================================================================
--- backend/node_modules/validator/es/lib/isLicensePlate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,58 +1,0 @@
-import assertString from './util/assertString';
-var validators = {
-  'cs-CZ': function csCZ(str) {
-    return /^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str);
-  },
-  'de-DE': function deDE(str) {
-    return /^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str);
-  },
-  'de-LI': function deLI(str) {
-    return /^FL[- ]?\d{1,5}[UZ]?$/.test(str);
-  },
-  'en-IN': function enIN(str) {
-    return /^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(str);
-  },
-  'en-SG': function enSG(str) {
-    return /^[A-Z]{3}[ -]?[\d]{4}[ -]?[A-Z]{1}$/.test(str);
-  },
-  'es-AR': function esAR(str) {
-    return /^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(str);
-  },
-  'fi-FI': function fiFI(str) {
-    return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str);
-  },
-  'hu-HU': function huHU(str) {
-    return /^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\d{3})|(M\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \d{2}-\d{2})|(CD \d{3}-\d{3})|(C-(C|X) \d{4})|(X-(A|B|C) \d{4})|(([EPVZ]-\d{5}))|(S A[A-Z]{2} \d{2})|(SP \d{2}-\d{2}))$/.test(str);
-  },
-  'pt-BR': function ptBR(str) {
-    return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str);
-  },
-  'pt-PT': function ptPT(str) {
-    return /^(([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[A-Z]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2})|([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2}))$/.test(str);
-  },
-  'sq-AL': function sqAL(str) {
-    return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str);
-  },
-  'sv-SE': function svSE(str) {
-    return /^[A-HJ-PR-UW-Z]{3} ?[\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(str.trim());
-  },
-  'en-PK': function enPK(str) {
-    return /(^[A-Z]{2}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\s|-){0,1})[0-9]{4}((\s|-)[0-9]{2}){0,1}$)/.test(str.trim());
-  }
-};
-export default function isLicensePlate(str, locale) {
-  assertString(str);
-  if (locale in validators) {
-    return validators[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators) {
-      /* eslint guard-for-in: 0 */
-      var validator = validators[key];
-      if (validator(str)) {
-        return true;
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isLocale.js
===================================================================
--- backend/node_modules/validator/es/lib/isLocale.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,107 +1,0 @@
-import assertString from './util/assertString';
-
-/*
-  = 3ALPHA              ; selected ISO 639 codes
-    *2("-" 3ALPHA)      ; permanently reserved
- */
-var extlang = '([A-Za-z]{3}(-[A-Za-z]{3}){0,2})';
-
-/*
-  = 2*3ALPHA            ; shortest ISO 639 code
-    ["-" extlang]       ; sometimes followed by
-                        ; extended language subtags
-  / 4ALPHA              ; or reserved for future use
-  / 5*8ALPHA            ; or registered language subtag
- */
-var language = "(([a-zA-Z]{2,3}(-".concat(extlang, ")?)|([a-zA-Z]{5,8}))");
-
-/*
-  = 4ALPHA              ; ISO 15924 code
- */
-var script = '([A-Za-z]{4})';
-
-/*
-  = 2ALPHA              ; ISO 3166-1 code
-  / 3DIGIT              ; UN M.49 code
- */
-var region = '([A-Za-z]{2}|\\d{3})';
-
-/*
-  = 5*8alphanum         ; registered variants
-  / (DIGIT 3alphanum)
- */
-var variant = '([A-Za-z0-9]{5,8}|(\\d[A-Z-a-z0-9]{3}))';
-
-/*
-  = DIGIT               ; 0 - 9
-  / %x41-57             ; A - W
-  / %x59-5A             ; Y - Z
-  / %x61-77             ; a - w
-  / %x79-7A             ; y - z
- */
-var singleton = '(\\d|[A-W]|[Y-Z]|[a-w]|[y-z])';
-
-/*
-  = singleton 1*("-" (2*8alphanum))
-                        ; Single alphanumerics
-                        ; "x" reserved for private use
- */
-var extension = "(".concat(singleton, "(-[A-Za-z0-9]{2,8})+)");
-
-/*
-  = "x" 1*("-" (1*8alphanum))
- */
-var privateuse = '(x(-[A-Za-z0-9]{1,8})+)';
-
-// irregular tags do not match the 'langtag' production and would not
-// otherwise be considered 'well-formed'. These tags are all valid, but
-// most are deprecated in favor of more modern subtags or subtag combination
-
-var irregular = '((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|' + '(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|' + '(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))';
-
-// regular tags match the 'langtag' production, but their subtags are not
-// extended language or variant subtags: their meaning is defined by
-// their registration and all of these are deprecated in favor of a more
-// modern subtag or sequence of subtags
-
-var regular = '((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|' + '(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))';
-
-/*
-  = irregular           ; non-redundant tags registered
-  / regular             ; during the RFC 3066 era
-
- */
-var grandfathered = "(".concat(irregular, "|").concat(regular, ")");
-
-/*
-  RFC 5646 defines delimitation of subtags via a hyphen:
-
-      "Subtag" refers to a specific section of a tag, delimited by a
-      hyphen, such as the subtags 'zh', 'Hant', and 'CN' in the tag "zh-
-      Hant-CN".  Examples of subtags in this document are enclosed in
-      single quotes ('Hant')
-
-  However, we need to add "_" to maintain the existing behaviour.
- */
-var delimiter = '(-|_)';
-
-/*
-  = language
-    ["-" script]
-    ["-" region]
-    *("-" variant)
-    *("-" extension)
-    ["-" privateuse]
- */
-var langtag = "".concat(language, "(").concat(delimiter).concat(script, ")?(").concat(delimiter).concat(region, ")?(").concat(delimiter).concat(variant, ")*(").concat(delimiter).concat(extension, ")*(").concat(delimiter).concat(privateuse, ")?");
-
-/*
-  Regex implementation based on BCP RFC 5646
-  Tags for Identifying Languages
-  https://www.rfc-editor.org/rfc/rfc5646.html
- */
-var languageTagRegex = new RegExp("(^".concat(privateuse, "$)|(^").concat(grandfathered, "$)|(^").concat(langtag, "$)"));
-export default function isLocale(str) {
-  assertString(str);
-  return languageTagRegex.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isLowercase.js
===================================================================
--- backend/node_modules/validator/es/lib/isLowercase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function isLowercase(str) {
-  assertString(str);
-  return str === str.toLowerCase();
-}
Index: ckend/node_modules/validator/es/lib/isLuhnNumber.js
===================================================================
--- backend/node_modules/validator/es/lib/isLuhnNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,25 +1,0 @@
-import assertString from './util/assertString';
-export default function isLuhnNumber(str) {
-  assertString(str);
-  var sanitized = str.replace(/[- ]+/g, '');
-  var sum = 0;
-  var digit;
-  var tmpNum;
-  var shouldDouble;
-  for (var i = sanitized.length - 1; i >= 0; i--) {
-    digit = sanitized.substring(i, i + 1);
-    tmpNum = parseInt(digit, 10);
-    if (shouldDouble) {
-      tmpNum *= 2;
-      if (tmpNum >= 10) {
-        sum += tmpNum % 10 + 1;
-      } else {
-        sum += tmpNum;
-      }
-    } else {
-      sum += tmpNum;
-    }
-    shouldDouble = !shouldDouble;
-  }
-  return !!(sum % 10 === 0 ? sanitized : false);
-}
Index: ckend/node_modules/validator/es/lib/isMACAddress.js
===================================================================
--- backend/node_modules/validator/es/lib/isMACAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,36 +1,0 @@
-import assertString from './util/assertString';
-var macAddress48 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/;
-var macAddress48NoSeparators = /^([0-9a-fA-F]){12}$/;
-var macAddress48WithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/;
-var macAddress64 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){6}([0-9a-fA-F]{2})$/;
-var macAddress64NoSeparators = /^([0-9a-fA-F]){16}$/;
-var macAddress64WithDots = /^([0-9a-fA-F]{4}\.){3}([0-9a-fA-F]{4})$/;
-export default function isMACAddress(str, options) {
-  assertString(str);
-  if (options !== null && options !== void 0 && options.eui) {
-    options.eui = String(options.eui);
-  }
-  /**
-   * @deprecated `no_colons` TODO: remove it in the next major
-  */
-  if (options !== null && options !== void 0 && options.no_colons || options !== null && options !== void 0 && options.no_separators) {
-    if (options.eui === '48') {
-      return macAddress48NoSeparators.test(str);
-    }
-    if (options.eui === '64') {
-      return macAddress64NoSeparators.test(str);
-    }
-    return macAddress48NoSeparators.test(str) || macAddress64NoSeparators.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '48') {
-    return macAddress48.test(str) || macAddress48WithDots.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '64') {
-    return macAddress64.test(str) || macAddress64WithDots.test(str);
-  }
-  return isMACAddress(str, {
-    eui: '48'
-  }) || isMACAddress(str, {
-    eui: '64'
-  });
-}
Index: ckend/node_modules/validator/es/lib/isMD5.js
===================================================================
--- backend/node_modules/validator/es/lib/isMD5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var md5 = /^[a-f0-9]{32}$/;
-export default function isMD5(str) {
-  assertString(str);
-  return md5.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isMagnetURI.js
===================================================================
--- backend/node_modules/validator/es/lib/isMagnetURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-import assertString from './util/assertString';
-var magnetURIComponent = /(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;
-export default function isMagnetURI(url) {
-  assertString(url);
-  if (url.indexOf('magnet:?') !== 0) {
-    return false;
-  }
-  return magnetURIComponent.test(url);
-}
Index: ckend/node_modules/validator/es/lib/isMailtoURI.js
===================================================================
--- backend/node_modules/validator/es/lib/isMailtoURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,75 +1,0 @@
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-import trim from './trim';
-import isEmail from './isEmail';
-import assertString from './util/assertString';
-function parseMailtoQueryString(queryString) {
-  var allowedParams = new Set(['subject', 'body', 'cc', 'bcc']),
-    query = {
-      cc: '',
-      bcc: ''
-    };
-  var isParseFailed = false;
-  var queryParams = queryString.split('&');
-  if (queryParams.length > 4) {
-    return false;
-  }
-  var _iterator = _createForOfIteratorHelper(queryParams),
-    _step;
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var q = _step.value;
-      var _q$split = q.split('='),
-        _q$split2 = _slicedToArray(_q$split, 2),
-        key = _q$split2[0],
-        value = _q$split2[1];
-
-      // checked for invalid and duplicated query params
-      if (key && !allowedParams.has(key)) {
-        isParseFailed = true;
-        break;
-      }
-      if (value && (key === 'cc' || key === 'bcc')) {
-        query[key] = value;
-      }
-      if (key) {
-        allowedParams["delete"](key);
-      }
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-  return isParseFailed ? false : query;
-}
-export default function isMailtoURI(url, options) {
-  assertString(url);
-  if (url.indexOf('mailto:') !== 0) {
-    return false;
-  }
-  var _url$replace$split = url.replace('mailto:', '').split('?'),
-    _url$replace$split2 = _slicedToArray(_url$replace$split, 2),
-    to = _url$replace$split2[0],
-    _url$replace$split2$ = _url$replace$split2[1],
-    queryString = _url$replace$split2$ === void 0 ? '' : _url$replace$split2$;
-  if (!to && !queryString) {
-    return true;
-  }
-  var query = parseMailtoQueryString(queryString);
-  if (!query) {
-    return false;
-  }
-  return "".concat(to, ",").concat(query.cc, ",").concat(query.bcc).split(',').every(function (email) {
-    email = trim(email, ' ');
-    if (email) {
-      return isEmail(email, options);
-    }
-    return true;
-  });
-}
Index: ckend/node_modules/validator/es/lib/isMimeType.js
===================================================================
--- backend/node_modules/validator/es/lib/isMimeType.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-import assertString from './util/assertString';
-
-/*
-  Checks if the provided string matches to a correct Media type format (MIME type)
-
-  This function only checks is the string format follows the
-  established rules by the according RFC specifications.
-  This function supports 'charset' in textual media types
-  (https://tools.ietf.org/html/rfc6657).
-
-  This function does not check against all the media types listed
-  by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)
-  because of lightness purposes : it would require to include
-  all these MIME types in this library, which would weigh it
-  significantly. This kind of effort maybe is not worth for the use that
-  this function has in this entire library.
-
-  More information in the RFC specifications :
-  - https://tools.ietf.org/html/rfc2045
-  - https://tools.ietf.org/html/rfc2046
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.1
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.5
-*/
-
-// Match simple MIME types
-// NB :
-//   Subtype length must not exceed 100 characters.
-//   This rule does not comply to the RFC specs (what is the max length ?).
-var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+_]{1,100}$/i; // eslint-disable-line max-len
-
-// Handle "charset" in "text/*"
-var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len
-
-// Handle "boundary" in "multipart/*"
-var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len
-
-export default function isMimeType(str) {
-  assertString(str);
-  return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isMobilePhone.js
===================================================================
--- backend/node_modules/validator/es/lib/isMobilePhone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,210 +1,0 @@
-import assertString from './util/assertString';
-
-/* eslint-disable max-len */
-var phones = {
-  'am-AM': /^(\+?374|0)(33|4[134]|55|77|88|9[13-689])\d{6}$/,
-  'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/,
-  'ar-BH': /^(\+?973)?(3|6)\d{7}$/,
-  'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/,
-  'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/,
-  'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/,
-  'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/,
-  'ar-JO': /^(\+?962|0)?7[789]\d{7}$/,
-  'ar-KW': /^(\+?965)([569]\d{7}|41\d{6})$/,
-  'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,
-  'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/,
-  'ar-OM': /^((\+|00)968)?([79][1-9])\d{6}$/,
-  'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/,
-  'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/,
-  'ar-SD': /^((\+?249)|0)?(9[012369]|1[012])\d{7}$/,
-  'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/,
-  'ar-TN': /^(\+?216)?[2459]\d{7}$/,
-  'az-AZ': /^(\+994|0)(10|5[015]|7[07]|99)\d{7}$/,
-  'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,
-  'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/,
-  'bg-BG': /^(\+?359|0)?8[789]\d{7}$/,
-  'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/,
-  'ca-AD': /^(\+376)?[346]\d{5}$/,
-  'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'de-DE': /^((\+49|0)1)(5[0-25-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,
-  'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/,
-  'de-CH': /^(\+41|0)([1-9])\d{1,9}$/,
-  'de-LU': /^(\+352)?((6\d1)\d{6})$/,
-  'dv-MV': /^(\+?960)?(7[2-9]|9[1-9])\d{5}$/,
-  'el-GR': /^(\+?30|0)?6(8[5-9]|9(?![26])[0-9])\d{7}$/,
-  'el-CY': /^(\+?357?)?(9(9|7|6|5|4)\d{6})$/,
-  'en-AI': /^(\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\d{4}$/,
-  'en-AU': /^(\+?61|0)4\d{8}$/,
-  'en-AG': /^(?:\+1|1)268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}$/,
-  'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}$))/,
-  'en-BS': /^(\+?1[-\s]?|0)?\(?242\)?[-\s]?\d{3}[-\s]?\d{4}$/,
-  'en-GB': /^(\+?44|0)7[1-9]\d{8}$/,
-  'en-GG': /^(\+?44|0)1481\d{6}$/,
-  'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|53|28|55|59)\d{7}$/,
-  'en-GY': /^(\+592|0)6\d{6}$/,
-  'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,
-  'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,
-  'en-IE': /^(\+?353|0)8[356789]\d{7}$/,
-  'en-IN': /^(\+?91|0)?[6789]\d{9}$/,
-  'en-JM': /^(\+?876)?\d{7}$/,
-  'en-KE': /^(\+?254|0)(7|1)\d{8}$/,
-  'fr-CF': /^(\+?236| ?)(70|75|77|72|21|22)\d{6}$/,
-  'en-SS': /^(\+?211|0)(9[1257])\d{7}$/,
-  'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,
-  'en-KN': /^(?:\+1|1)869(?:46\d|48[89]|55[6-8]|66\d|76[02-7])\d{4}$/,
-  'en-LS': /^(\+?266)(22|28|57|58|59|27|52)\d{6}$/,
-  'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,
-  'en-MU': /^(\+?230|0)?\d{8}$/,
-  'en-MW': /^(\+?265|0)(((77|88|31|99|98|21)\d{7})|(((111)|1)\d{6})|(32000\d{4}))$/,
-  'en-NA': /^(\+?264|0)(6|8)\d{7}$/,
-  'en-NG': /^(\+?234|0)?[789]\d{9}$/,
-  'en-NZ': /^(\+?64|0)[28]\d{7,9}$/,
-  'en-PG': /^(\+?675|0)?(7\d|8[18])\d{6}$/,
-  'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/,
-  'en-PH': /^(09|\+639)\d{9}$/,
-  'en-RW': /^(\+?250|0)?[7]\d{8}$/,
-  'en-SG': /^(\+65)?[3689]\d{7}$/,
-  'en-SL': /^(\+?232|0)\d{8}$/,
-  'en-TZ': /^(\+?255|0)?[67]\d{8}$/,
-  'en-UG': /^(\+?256|0)?[7]\d{8}$/,
-  'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,
-  'en-ZA': /^(\+?27|0)\d{9}$/,
-  'en-ZM': /^(\+?26)?0[79][567]\d{7}$/,
-  'en-ZW': /^(\+263)[0-9]{9}$/,
-  'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/,
-  'es-AR': /^\+?549(11|[2368]\d)\d{8}$/,
-  'es-BO': /^(\+?591)?(6|7)\d{7}$/,
-  'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,
-  'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/,
-  'es-CR': /^(\+506)?[2-8]\d{7}$/,
-  'es-CU': /^(\+53|0053)?5\d{7}$/,
-  'es-DO': /^(\+?1)?8[024]9\d{7}$/,
-  'es-HN': /^(\+?504)?[9|8|3|2]\d{7}$/,
-  'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/,
-  'es-ES': /^(\+?34)?[6|7]\d{8}$/,
-  'es-GT': /^(\+?502)?[2|6|7]\d{7}$/,
-  'es-PE': /^(\+?51)?9\d{8}$/,
-  'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/,
-  'es-NI': /^(\+?505)\d{7,8}$/,
-  'es-PA': /^(\+?507)\d{7,8}$/,
-  'es-PY': /^(\+?595|0)9[9876]\d{7}$/,
-  'es-SV': /^(\+?503)?[67]\d{7}$/,
-  'es-UY': /^(\+598|0)9[1-9][\d]{6}$/,
-  'es-VE': /^(\+?58)?(2|4)\d{9}$/,
-  'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,
-  'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,
-  'fi-FI': /^(\+?358|0)\s?(4[0-6]|50)\s?(\d\s?){4,8}$/,
-  'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/,
-  'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'fr-BF': /^(\+226|0)[67]\d{7}$/,
-  'fr-BJ': /^(\+229)\d{8}$/,
-  'fr-CD': /^(\+?243|0)?(8|9)\d{8}$/,
-  'fr-CM': /^(\+?237)6[0-9]{8}$/,
-  'fr-FR': /^(\+?33|0)[67]\d{8}$/,
-  'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/,
-  'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/,
-  'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/,
-  'fr-PF': /^(\+?689)?8[789]\d{6}$/,
-  'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/,
-  'fr-WF': /^(\+681)?\d{6}$/,
-  'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,
-  'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/,
-  'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,
-  'ir-IR': /^(\+98|0)?9\d{9}$/,
-  'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/,
-  'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,
-  'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,
-  'ka-GE': /^(\+?995)?(79\d{7}|5\d{8})$/,
-  'kk-KZ': /^(\+?7|8)?7\d{9}$/,
-  'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,
-  'ky-KG': /^(\+996\s?)?(22[0-9]|50[0-9]|55[0-9]|70[0-9]|75[0-9]|77[0-9]|880|990|995|996|997|998)\s?\d{3}\s?\d{3}$/,
-  'lt-LT': /^(\+370|8)\d{8}$/,
-  'lv-LV': /^(\+?371)2\d{7}$/,
-  'mg-MG': /^((\+?261|0)(2|3)\d)?\d{7}$/,
-  'mn-MN': /^(\+|00|011)?976(77|81|88|91|94|95|96|99)\d{6}$/,
-  'my-MM': /^(\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,
-  'ms-MY': /^(\+?60|0)1(([0145](-|\s)?\d{7,8})|([236-9](-|\s)?\d{7}))$/,
-  'mz-MZ': /^(\+?258)?8[234567]\d{7}$/,
-  'nb-NO': /^(\+?47)?[49]\d{7}$/,
-  'ne-NP': /^(\+?977)?9[78]\d{8}$/,
-  'nl-BE': /^(\+?32|0)4\d{8}$/,
-  'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,
-  'nl-AW': /^(\+)?297(56|59|64|73|74|99)\d{5}$/,
-  'nn-NO': /^(\+?47)?[49]\d{7}$/,
-  'pl-PL': /^(\+?48)? ?([5-8]\d|45) ?\d{3} ?\d{2} ?\d{2}$/,
-  'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[1-9]{1}\d{3}\-?\d{4}))$/,
-  'pt-PT': /^(\+?351)?9[1236]\d{7}$/,
-  'pt-AO': /^(\+?244)?9\d{8}$/,
-  'ro-MD': /^(\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\d{6}$/,
-  'ro-RO': /^(\+?40|0)\s?7\d{2}(\/|\s|\.|-)?\d{3}(\s|\.|-)?\d{3}$/,
-  'ru-RU': /^(\+?7|8)?9\d{9}$/,
-  'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,
-  'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,
-  'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'so-SO': /^(\+?252|0)((6[0-9])\d{7}|(7[1-9])\d{7})$/,
-  'sq-AL': /^(\+355|0)6[2-9]\d{7}$/,
-  'sr-RS': /^(\+3816|06)[- \d]{5,9}$/,
-  'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,
-  'tg-TJ': /^(\+?992)?[5][5]\d{7}$/,
-  'th-TH': /^(\+66|66|0)\d{9}$/,
-  'tr-TR': /^(\+?90|0)?5\d{9}$/,
-  'tk-TM': /^(\+993|993|8)\d{8}$/,
-  'uk-UA': /^(\+?38)?0(50|6[36-8]|7[357]|9[1-9])\d{7}$/,
-  'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,
-  'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,
-  'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,
-  'zh-TW': /^(\+?886\-?|0)?9\d{8}$/,
-  'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/,
-  'ar-YE': /^(((\+|00)9677|0?7)[0137]\d{7}|((\+|00)967|0)[1-7]\d{6})$/,
-  'ar-EH': /^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,
-  'fa-AF': /^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/,
-  'mk-MK': /^(\+?389|0)?((?:2[2-9]\d{6}|(?:3[1-4]|4[2-8])\d{6}|500\d{5}|5[2-9]\d{6}|7[0-9][2-9]\d{5}|8[1-9]\d{6}|800\d{5}|8009\d{4}))$/
-};
-/* eslint-enable max-len */
-
-// aliases
-phones['en-CA'] = phones['en-US'];
-phones['fr-CA'] = phones['en-CA'];
-phones['fr-BE'] = phones['nl-BE'];
-phones['zh-HK'] = phones['en-HK'];
-phones['zh-MO'] = phones['en-MO'];
-phones['ga-IE'] = phones['en-IE'];
-phones['fr-CH'] = phones['de-CH'];
-phones['it-CH'] = phones['fr-CH'];
-export default function isMobilePhone(str, locale, options) {
-  assertString(str);
-  if (options && options.strictMode && !str.startsWith('+')) {
-    return false;
-  }
-  if (Array.isArray(locale)) {
-    return locale.some(function (key) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-      return false;
-    });
-  } else if (locale in phones) {
-    return phones[locale].test(str);
-    // alias falsey locale as 'any'
-  } else if (!locale || locale === 'any') {
-    for (var key in phones) {
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-export var locales = Object.keys(phones);
Index: ckend/node_modules/validator/es/lib/isMongoId.js
===================================================================
--- backend/node_modules/validator/es/lib/isMongoId.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-import isHexadecimal from './isHexadecimal';
-export default function isMongoId(str) {
-  assertString(str);
-  return isHexadecimal(str) && str.length === 24;
-}
Index: ckend/node_modules/validator/es/lib/isMultibyte.js
===================================================================
--- backend/node_modules/validator/es/lib/isMultibyte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import assertString from './util/assertString';
-
-/* eslint-disable no-control-regex */
-var multibyte = /[^\x00-\x7F]/;
-/* eslint-enable no-control-regex */
-
-export default function isMultibyte(str) {
-  assertString(str);
-  return multibyte.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isNumeric.js
===================================================================
--- backend/node_modules/validator/es/lib/isNumeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import assertString from './util/assertString';
-import { decimal } from './alpha';
-var numericNoSymbols = /^[0-9]+$/;
-export default function isNumeric(str, options) {
-  assertString(str);
-  if (options && options.no_symbols) {
-    return numericNoSymbols.test(str);
-  }
-  return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? decimal[options.locale] : '.', "])?[0-9]+$")).test(str);
-}
Index: ckend/node_modules/validator/es/lib/isOctal.js
===================================================================
--- backend/node_modules/validator/es/lib/isOctal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var octal = /^(0o)?[0-7]+$/i;
-export default function isOctal(str) {
-  assertString(str);
-  return octal.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isPassportNumber.js
===================================================================
--- backend/node_modules/validator/es/lib/isPassportNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,145 +1,0 @@
-import assertString from './util/assertString';
-
-/**
- * Reference:
- * https://en.wikipedia.org/ -- Wikipedia
- * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number
- * https://countrycode.org/ -- Country Codes
- */
-var passportRegexByCountryCode = {
-  AM: /^[A-Z]{2}\d{7}$/,
-  // ARMENIA
-  AR: /^[A-Z]{3}\d{6}$/,
-  // ARGENTINA
-  AT: /^[A-Z]\d{7}$/,
-  // AUSTRIA
-  AU: /^[A-Z]\d{7}$/,
-  // AUSTRALIA
-  AZ: /^[A-Z]{1}\d{8}$/,
-  // AZERBAIJAN
-  BE: /^[A-Z]{2}\d{6}$/,
-  // BELGIUM
-  BG: /^\d{9}$/,
-  // BULGARIA
-  BR: /^[A-Z]{2}\d{6}$/,
-  // BRAZIL
-  BY: /^[A-Z]{2}\d{7}$/,
-  // BELARUS
-  CA: /^[A-Z]{2}\d{6}$|^[A-Z]\d{6}[A-Z]{2}$/,
-  // CANADA
-  CH: /^[A-Z]\d{7}$/,
-  // SWITZERLAND
-  CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,
-  // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits
-  CY: /^[A-Z](\d{6}|\d{8})$/,
-  // CYPRUS
-  CZ: /^\d{8}$/,
-  // CZECH REPUBLIC
-  DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,
-  // GERMANY
-  DK: /^\d{9}$/,
-  // DENMARK
-  DZ: /^\d{9}$/,
-  // ALGERIA
-  EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,
-  // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits
-  ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,
-  // SPAIN
-  FI: /^[A-Z]{2}\d{7}$/,
-  // FINLAND
-  FR: /^\d{2}[A-Z]{2}\d{5}$/,
-  // FRANCE
-  GB: /^\d{9}$/,
-  // UNITED KINGDOM
-  GR: /^[A-Z]{2}\d{7}$/,
-  // GREECE
-  HR: /^\d{9}$/,
-  // CROATIA
-  HU: /^[A-Z]{2}(\d{6}|\d{7})$/,
-  // HUNGARY
-  IE: /^[A-Z0-9]{2}\d{7}$/,
-  // IRELAND
-  IN: /^[A-Z]{1}-?\d{7}$/,
-  // INDIA
-  ID: /^[A-C]\d{7}$/,
-  // INDONESIA
-  IR: /^[A-Z]\d{8}$/,
-  // IRAN
-  IS: /^(A)\d{7}$/,
-  // ICELAND
-  IT: /^[A-Z0-9]{2}\d{7}$/,
-  // ITALY
-  JM: /^[Aa]\d{7}$/,
-  // JAMAICA
-  JP: /^[A-Z]{2}\d{7}$/,
-  // JAPAN
-  KR: /^[MS]\d{8}$/,
-  // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]
-  KZ: /^[a-zA-Z]\d{7}$/,
-  // KAZAKHSTAN
-  LI: /^[a-zA-Z]\d{5}$/,
-  // LIECHTENSTEIN
-  LT: /^[A-Z0-9]{8}$/,
-  // LITHUANIA
-  LU: /^[A-Z0-9]{8}$/,
-  // LUXEMBURG
-  LV: /^[A-Z0-9]{2}\d{7}$/,
-  // LATVIA
-  LY: /^[A-Z0-9]{8}$/,
-  // LIBYA
-  MT: /^\d{7}$/,
-  // MALTA
-  MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,
-  // MOZAMBIQUE
-  MY: /^[AHK]\d{8}$/,
-  // MALAYSIA
-  MX: /^\d{10,11}$/,
-  // MEXICO
-  NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/,
-  // NETHERLANDS
-  NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,
-  // NEW ZEALAND
-  PH: /^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,
-  // PHILIPPINES
-  PK: /^[A-Z]{2}\d{7}$/,
-  // PAKISTAN
-  PL: /^[A-Z]{2}\d{7}$/,
-  // POLAND
-  PT: /^[A-Z]\d{6}$/,
-  // PORTUGAL
-  RO: /^\d{8,9}$/,
-  // ROMANIA
-  RU: /^\d{9}$/,
-  // RUSSIAN FEDERATION
-  SE: /^\d{8}$/,
-  // SWEDEN
-  SL: /^(P)[A-Z]\d{7}$/,
-  // SLOVENIA
-  SK: /^[0-9A-Z]\d{7}$/,
-  // SLOVAKIA
-  TH: /^[A-Z]{1,2}\d{6,7}$/,
-  // THAILAND
-  TR: /^[A-Z]\d{8}$/,
-  // TURKEY
-  UA: /^[A-Z]{2}\d{6}$/,
-  // UKRAINE
-  US: /^\d{9}$|^[A-Z]\d{8}$/,
-  // UNITED STATES
-  ZA: /^[TAMD]\d{8}$/ // SOUTH AFRICA
-};
-export var locales = Object.keys(passportRegexByCountryCode);
-
-/**
- * Check if str is a valid passport number
- * relative to provided ISO Country Code.
- *
- * @param {string} str
- * @param {string} countryCode
- * @return {boolean}
- */
-export default function isPassportNumber(str, countryCode) {
-  assertString(str);
-  /** Remove All Whitespaces, Convert to UPPERCASE */
-  var normalizedStr = str.replace(/\s/g, '').toUpperCase();
-  return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);
-}
Index: ckend/node_modules/validator/es/lib/isPort.js
===================================================================
--- backend/node_modules/validator/es/lib/isPort.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import isInt from './isInt';
-export default function isPort(str) {
-  return isInt(str, {
-    allow_leading_zeroes: false,
-    min: 0,
-    max: 65535
-  });
-}
Index: ckend/node_modules/validator/es/lib/isPostalCode.js
===================================================================
--- backend/node_modules/validator/es/lib/isPostalCode.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,99 +1,0 @@
-import assertString from './util/assertString';
-
-// common patterns
-var threeDigit = /^\d{3}$/;
-var fourDigit = /^\d{4}$/;
-var fiveDigit = /^\d{5}$/;
-var sixDigit = /^\d{6}$/;
-var patterns = {
-  AD: /^AD\d{3}$/,
-  AT: fourDigit,
-  AU: fourDigit,
-  AZ: /^AZ\d{4}$/,
-  BA: /^([7-8]\d{4}$)/,
-  BD: /^([1-8][0-9]{3}|9[0-4][0-9]{2})$/,
-  BE: fourDigit,
-  BG: fourDigit,
-  BR: /^\d{5}-?\d{3}$/,
-  BY: /^2[1-4]\d{4}$/,
-  CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,
-  CH: fourDigit,
-  CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,
-  CO: /^(05|08|11|13|15|17|18|19|20|23|25|27|41|44|47|50|52|54|63|66|68|70|73|76|81|85|86|88|91|94|95|97|99)(\d{4})$/,
-  CZ: /^\d{3}\s?\d{2}$/,
-  DE: fiveDigit,
-  DK: fourDigit,
-  DO: fiveDigit,
-  DZ: fiveDigit,
-  EE: fiveDigit,
-  ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,
-  FI: fiveDigit,
-  FR: /^(?:(?:0[1-9]|[1-8]\d|9[0-5])\d{3}|97[1-46]\d{2})$/,
-  GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,
-  GR: /^\d{3}\s?\d{2}$/,
-  HR: /^([1-5]\d{4}$)/,
-  HT: /^HT\d{4}$/,
-  HU: fourDigit,
-  ID: fiveDigit,
-  IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,
-  IL: /^(\d{5}|\d{7})$/,
-  IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,
-  IR: /^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/,
-  IS: threeDigit,
-  IT: fiveDigit,
-  JP: /^\d{3}\-\d{4}$/,
-  KE: fiveDigit,
-  KR: /^(\d{5}|\d{6})$/,
-  LI: /^(948[5-9]|949[0-7])$/,
-  LT: /^LT\-\d{5}$/,
-  LU: fourDigit,
-  LV: /^LV\-\d{4}$/,
-  LK: fiveDigit,
-  MG: threeDigit,
-  MX: fiveDigit,
-  MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/,
-  MY: fiveDigit,
-  NL: /^[1-9]\d{3}\s?(?!sa|sd|ss)[a-z]{2}$/i,
-  NO: fourDigit,
-  NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,
-  NZ: fourDigit,
-  // https://www.pakpost.gov.pk/postcodes.php
-  PK: fiveDigit,
-  PL: /^\d{2}\-\d{3}$/,
-  PR: /^00[679]\d{2}([ -]\d{4})?$/,
-  PT: /^\d{4}\-\d{3}?$/,
-  RO: sixDigit,
-  RU: sixDigit,
-  SA: fiveDigit,
-  SE: /^[1-9]\d{2}\s?\d{2}$/,
-  SG: sixDigit,
-  SI: fourDigit,
-  SK: /^\d{3}\s?\d{2}$/,
-  TH: fiveDigit,
-  TN: fourDigit,
-  TW: /^\d{3}(\d{2,3})?$/,
-  UA: fiveDigit,
-  US: /^\d{5}(-\d{4})?$/,
-  ZA: fourDigit,
-  ZM: fiveDigit
-};
-export var locales = Object.keys(patterns);
-export default function isPostalCode(str, locale) {
-  assertString(str);
-  if (locale in patterns) {
-    return patterns[locale].test(str);
-  } else if (locale === 'any') {
-    for (var key in patterns) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (patterns.hasOwnProperty(key)) {
-        var pattern = patterns[key];
-        if (pattern.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isRFC3339.js
===================================================================
--- backend/node_modules/validator/es/lib/isRFC3339.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-import assertString from './util/assertString';
-
-/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */
-
-var dateFullYear = /[0-9]{4}/;
-var dateMonth = /(0[1-9]|1[0-2])/;
-var dateMDay = /([12]\d|0[1-9]|3[01])/;
-var timeHour = /([01][0-9]|2[0-3])/;
-var timeMinute = /[0-5][0-9]/;
-var timeSecond = /([0-5][0-9]|60)/;
-var timeSecFrac = /(\.[0-9]+)?/;
-var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source));
-var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")"));
-var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source));
-var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source));
-var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source));
-var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$"));
-export default function isRFC3339(str) {
-  assertString(str);
-  return rfc3339.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isRgbColor.js
===================================================================
--- backend/node_modules/validator/es/lib/isRgbColor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-/* eslint-disable prefer-rest-params */
-import assertString from './util/assertString';
-var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/;
-var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)$/;
-var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var startsWithRgb = /^rgba?/;
-export default function isRgbColor(str, options) {
-  assertString(str);
-  // default options to true for percent and false for spaces
-  var allowSpaces = false;
-  var includePercentValues = true;
-  if (_typeof(options) !== 'object') {
-    if (arguments.length >= 2) {
-      includePercentValues = arguments[1];
-    }
-  } else {
-    allowSpaces = options.allowSpaces !== undefined ? options.allowSpaces : allowSpaces;
-    includePercentValues = options.includePercentValues !== undefined ? options.includePercentValues : includePercentValues;
-  }
-  if (allowSpaces) {
-    // make sure it starts with continous rgba? without spaces before stripping
-    if (!startsWithRgb.test(str)) {
-      return false;
-    }
-    // strip all whitespace
-    str = str.replace(/\s/g, '');
-  }
-  if (!includePercentValues) {
-    return rgbColor.test(str) || rgbaColor.test(str);
-  }
-  return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isSemVer.js
===================================================================
--- backend/node_modules/validator/es/lib/isSemVer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-import assertString from './util/assertString';
-import multilineRegexp from './util/multilineRegex';
-
-/**
- * Regular Expression to match
- * semantic versioning (SemVer)
- * built from multi-line, multi-parts regexp
- * Reference: https://semver.org/
- */
-var semanticVersioningRegex = multilineRegexp(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i');
-export default function isSemVer(str) {
-  assertString(str);
-  return semanticVersioningRegex.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isSlug.js
===================================================================
--- backend/node_modules/validator/es/lib/isSlug.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/;
-export default function isSlug(str) {
-  assertString(str);
-  return charsetRegex.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isStrongPassword.js
===================================================================
--- backend/node_modules/validator/es/lib/isStrongPassword.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,90 +1,0 @@
-import merge from './util/merge';
-import assertString from './util/assertString';
-var upperCaseRegex = /^[A-Z]$/;
-var lowerCaseRegex = /^[a-z]$/;
-var numberRegex = /^[0-9]$/;
-var symbolRegex = /^[-#!$@£%^&*()_+|~=`{}\[\]:";'<>?,.\/\\ ]$/;
-var defaultOptions = {
-  minLength: 8,
-  minLowercase: 1,
-  minUppercase: 1,
-  minNumbers: 1,
-  minSymbols: 1,
-  returnScore: false,
-  pointsPerUnique: 1,
-  pointsPerRepeat: 0.5,
-  pointsForContainingLower: 10,
-  pointsForContainingUpper: 10,
-  pointsForContainingNumber: 10,
-  pointsForContainingSymbol: 10
-};
-
-/* Counts number of occurrences of each char in a string
- * could be moved to util/ ?
-*/
-function countChars(str) {
-  var result = {};
-  Array.from(str).forEach(function (_char) {
-    var curVal = result[_char];
-    if (curVal) {
-      result[_char] += 1;
-    } else {
-      result[_char] = 1;
-    }
-  });
-  return result;
-}
-
-/* Return information about a password */
-function analyzePassword(password) {
-  var charMap = countChars(password);
-  var analysis = {
-    length: password.length,
-    uniqueChars: Object.keys(charMap).length,
-    uppercaseCount: 0,
-    lowercaseCount: 0,
-    numberCount: 0,
-    symbolCount: 0
-  };
-  Object.keys(charMap).forEach(function (_char2) {
-    /* istanbul ignore else */
-    if (upperCaseRegex.test(_char2)) {
-      analysis.uppercaseCount += charMap[_char2];
-    } else if (lowerCaseRegex.test(_char2)) {
-      analysis.lowercaseCount += charMap[_char2];
-    } else if (numberRegex.test(_char2)) {
-      analysis.numberCount += charMap[_char2];
-    } else if (symbolRegex.test(_char2)) {
-      analysis.symbolCount += charMap[_char2];
-    }
-  });
-  return analysis;
-}
-function scorePassword(analysis, scoringOptions) {
-  var points = 0;
-  points += analysis.uniqueChars * scoringOptions.pointsPerUnique;
-  points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat;
-  if (analysis.lowercaseCount > 0) {
-    points += scoringOptions.pointsForContainingLower;
-  }
-  if (analysis.uppercaseCount > 0) {
-    points += scoringOptions.pointsForContainingUpper;
-  }
-  if (analysis.numberCount > 0) {
-    points += scoringOptions.pointsForContainingNumber;
-  }
-  if (analysis.symbolCount > 0) {
-    points += scoringOptions.pointsForContainingSymbol;
-  }
-  return points;
-}
-export default function isStrongPassword(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-  assertString(str);
-  var analysis = analyzePassword(str);
-  options = merge(options || {}, defaultOptions);
-  if (options.returnScore) {
-    return scorePassword(analysis, options);
-  }
-  return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols;
-}
Index: ckend/node_modules/validator/es/lib/isSurrogatePair.js
===================================================================
--- backend/node_modules/validator/es/lib/isSurrogatePair.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
-export default function isSurrogatePair(str) {
-  assertString(str);
-  return surrogatePair.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isTaxID.js
===================================================================
--- backend/node_modules/validator/es/lib/isTaxID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1388 +1,0 @@
-function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
-function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
-function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-import assertString from './util/assertString';
-import * as algorithms from './util/algorithms';
-import isDate from './isDate';
-
-/**
- * TIN Validation
- * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom.
- *
- * EU-UK:
- * National TIN validity is calculated using public algorithms as made available by DG TAXUD.
- *
- * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information.
- *
- * US:
- * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number,
- *  is used to identify a business entity.
- *
- * NOTES:
- *  - Prefix 47 is being reserved for future use
- *  - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.
- *
- * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes`
- * for more information.
- */
-
-// Locale functions
-
-/*
- * bg-BG validation function
- * (Edinen graždanski nomer (EGN/ЕГН), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last) digit
- */
-function bgBgCheck(tin) {
-  // Extract full year, normalize month and check birth date validity
-  var century_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 40) {
-    month -= 40;
-    century_year = "20".concat(century_year);
-  } else if (month > 20) {
-    month -= 20;
-    century_year = "18".concat(century_year);
-  } else {
-    century_year = "19".concat(century_year);
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Calculate checksum by multiplying digits with fixed values
-  var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];
-  var checksum = 0;
-  for (var i = 0; i < multip_lookup.length; i++) {
-    checksum += digits[i] * multip_lookup[i];
-  }
-  checksum = checksum % 11 === 10 ? 0 : checksum % 11;
-  return checksum === digits[9];
-}
-
-/**
- * Check if an input is a valid Canadian SIN (Social Insurance Number)
- *
- * The Social Insurance Number (SIN) is a 9 digit number that
- * you need to work in Canada or to have access to government programs and benefits.
- *
- * https://en.wikipedia.org/wiki/Social_Insurance_Number
- * https://www.canada.ca/en/employment-social-development/services/sin.html
- * https://www.codercrunch.com/challenge/819302488/sin-validator
- *
- * @param {string} input
- * @return {boolean}
- */
-function isCanadianSIN(input) {
-  var digitsArray = input.split('');
-  var even = digitsArray.filter(function (_, idx) {
-    return idx % 2;
-  }).map(function (i) {
-    return Number(i) * 2;
-  }).join('').split('');
-  var total = digitsArray.filter(function (_, idx) {
-    return !(idx % 2);
-  }).concat(even).map(function (i) {
-    return Number(i);
-  }).reduce(function (acc, cur) {
-    return acc + cur;
-  });
-  return total % 10 === 0;
-}
-
-/*
- * cs-CZ validation function
- * (Rodné číslo (RČ), persons only)
- * Checks if birth date (first six digits) is valid and divisibility by 11
- * Material not in DG TAXUD document sourced from:
- * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm`
- * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx`
- */
-function csCzCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract full year from TIN length
-  var full_year = parseInt(tin.slice(0, 2), 10);
-  if (tin.length === 10) {
-    if (full_year < 54) {
-      full_year = "20".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-  } else {
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-    if (full_year < 54) {
-      full_year = "19".concat(full_year);
-    } else {
-      return false; // No 18XX years seen in any of the resources
-    }
-  }
-  // Add missing zero if needed
-  if (full_year.length === 3) {
-    full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');
-  }
-
-  // Extract month from TIN and normalize
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 50) {
-    month -= 50;
-  }
-  if (month > 20) {
-    // Month-plus-twenty was only introduced in 2004
-    if (parseInt(full_year, 10) < 2004) {
-      return false;
-    }
-    month -= 20;
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Verify divisibility by 11
-  if (tin.length === 10) {
-    if (parseInt(tin, 10) % 11 !== 0) {
-      // Some numbers up to and including 1985 are still valid if
-      // check (last) digit equals 0 and modulo of first 9 digits equals 10
-      var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;
-      if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {
-        if (parseInt(tin.slice(9), 10) !== 0) {
-          return false;
-        }
-      } else {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * de-AT validation function
- * (Abgabenkontonummer, persons/entities)
- * Verify TIN validity by calling luhnCheck()
- */
-function deAtCheck(tin) {
-  return algorithms.luhnCheck(tin);
-}
-
-/*
- * de-DE validation function
- * (Steueridentifikationsnummer (Steuer-IdNr.), persons only)
- * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit
- * Partial implementation of spec (same result with both algorithms always)
- */
-function deDeCheck(tin) {
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Fill array with strings of number positions
-  var occurrences = [];
-  for (var i = 0; i < digits.length - 1; i++) {
-    occurrences.push('');
-    for (var j = 0; j < digits.length - 1; j++) {
-      if (digits[i] === digits[j]) {
-        occurrences[i] += j;
-      }
-    }
-  }
-
-  // Remove digits with one occurrence and test for only one duplicate/triplicate
-  occurrences = occurrences.filter(function (a) {
-    return a.length > 1;
-  });
-  if (occurrences.length !== 2 && occurrences.length !== 3) {
-    return false;
-  }
-
-  // In case of triplicate value only two digits are allowed next to each other
-  if (occurrences[0].length === 3) {
-    var trip_locations = occurrences[0].split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var recurrent = 0; // Amount of neighbor occurrences
-    for (var _i = 0; _i < trip_locations.length - 1; _i++) {
-      if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {
-        recurrent += 1;
-      }
-    }
-    if (recurrent === 2) {
-      return false;
-    }
-  }
-  return algorithms.iso7064Check(tin);
-}
-
-/*
- * dk-DK validation function
- * (CPR-nummer (personnummer), persons only)
- * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit,
- * and calculates check (last) digit
- */
-function dkDkCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract year, check if valid for given century digit and add century
-  var year = parseInt(tin.slice(4, 6), 10);
-  var century_digit = tin.slice(6, 7);
-  switch (century_digit) {
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-      year = "19".concat(year);
-      break;
-    case '4':
-    case '9':
-      if (year < 37) {
-        year = "20".concat(year);
-      } else {
-        year = "19".concat(year);
-      }
-      break;
-    default:
-      if (year < 37) {
-        year = "20".concat(year);
-      } else if (year > 58) {
-        year = "18".concat(year);
-      } else {
-        return false;
-      }
-      break;
-  }
-  // Add missing zero if needed
-  if (year.length === 3) {
-    year = [year.slice(0, 2), '0', year.slice(2)].join('');
-  }
-  // Check date validity
-  var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 4;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 9; i++) {
-    checksum += digits[i] * weight;
-    weight -= 1;
-    if (weight === 1) {
-      weight = 7;
-    }
-  }
-  checksum %= 11;
-  if (checksum === 1) {
-    return false;
-  }
-  return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;
-}
-
-/*
- * el-CY validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only)
- * Verify TIN validity by calculating ASCII value of check (last) character
- */
-function elCyCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.slice(0, 8).split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  // add digits in even places
-  for (var i = 1; i < digits.length; i += 2) {
-    checksum += digits[i];
-  }
-
-  // add digits in odd places
-  for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {
-    if (digits[_i2] < 2) {
-      checksum += 1 - digits[_i2];
-    } else {
-      checksum += 2 * (digits[_i2] - 2) + 5;
-      if (digits[_i2] > 4) {
-        checksum += 2;
-      }
-    }
-  }
-  return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);
-}
-
-/*
- * el-GR validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities)
- * Verify TIN validity by calculating check (last) digit
- * Algorithm not in DG TAXUD document- sourced from:
- * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85`
- */
-function elGrCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  for (var i = 0; i < 8; i++) {
-    checksum += digits[i] * Math.pow(2, 8 - i);
-  }
-  return checksum % 11 % 10 === digits[8];
-}
-
-/*
- * en-GB validation function (should go here if needed)
- * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR),
- * persons/entities respectively)
- */
-
-/*
- * en-IE validation function
- * (Personal Public Service Number (PPS No), persons only)
- * Verify TIN validity by calculating check (second to last) character
- */
-function enIeCheck(tin) {
-  var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8);
-  if (tin.length === 9 && tin[8] !== 'W') {
-    checksum += (tin[8].charCodeAt(0) - 64) * 9;
-  }
-  checksum %= 23;
-  if (checksum === 0) {
-    return tin[7].toUpperCase() === 'W';
-  }
-  return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);
-}
-
-// Valid US IRS campus prefixes
-var enUsCampusPrefix = {
-  andover: ['10', '12'],
-  atlanta: ['60', '67'],
-  austin: ['50', '53'],
-  brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],
-  cincinnati: ['30', '32', '35', '36', '37', '38', '61'],
-  fresno: ['15', '24'],
-  internet: ['20', '26', '27', '45', '46', '47'],
-  kansas: ['40', '44'],
-  memphis: ['94', '95'],
-  ogden: ['80', '90'],
-  philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],
-  sba: ['31']
-};
-
-// Return an array of all US IRS campus prefixes
-function enUsGetPrefixes() {
-  var prefixes = [];
-  for (var location in enUsCampusPrefix) {
-    // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-    // istanbul ignore else
-    if (enUsCampusPrefix.hasOwnProperty(location)) {
-      prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));
-    }
-  }
-  return prefixes;
-}
-
-/*
- * en-US validation function
- * Verify that the TIN starts with a valid IRS campus prefix
- */
-function enUsCheck(tin) {
-  return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;
-}
-
-/*
- * es-AR validation function
- * Clave Única de Identificación Tributaria (CUIT/CUIL)
- * Sourced from:
- * - https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id_nivel1=3036&id_nivel2=3040&p=Conceptos%20b%C3%A1sicos
- * - https://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Identificaci%C3%B3n_Tributaria
- */
-
-function esArCheck(tin) {
-  var accum = 0;
-  var digits = tin.split('');
-  var digit = parseInt(digits.pop(), 10);
-  for (var i = 0; i < digits.length; i++) {
-    accum += digits[9 - i] * (2 + i % 6);
-  }
-  var verif = 11 - accum % 11;
-  if (verif === 11) {
-    verif = 0;
-  } else if (verif === 10) {
-    verif = 9;
-  }
-  return digit === verif;
-}
-
-/*
- * es-ES validation function
- * (Documento Nacional de Identidad (DNI)
- * or Número de Identificación de Extranjero (NIE), persons only)
- * Verify TIN validity by calculating check (last) character
- */
-function esEsCheck(tin) {
-  // Split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Replace initial letter if needed
-  if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {
-    var lead_replace = 0;
-    switch (chars[0]) {
-      case 'Y':
-        lead_replace = 1;
-        break;
-      case 'Z':
-        lead_replace = 2;
-        break;
-      default:
-    }
-    chars.splice(0, 1, lead_replace);
-    // Fill with zeros if smaller than proper
-  } else {
-    while (chars.length < 9) {
-      chars.unshift(0);
-    }
-  }
-
-  // Calculate checksum and check according to lookup
-  var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-  chars = chars.join('');
-  var checksum = parseInt(chars.slice(0, 8), 10) % 23;
-  return chars[8] === lookup[checksum];
-}
-
-/*
- * et-EE validation function
- * (Isikukood (IK), persons only)
- * Checks if birth date (century digit and six following) is valid and calculates check (last) digit
- * Material not in DG TAXUD document sourced from:
- * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf`
- */
-function etEeCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(1, 3);
-  var century_digit = tin.slice(0, 1);
-  switch (century_digit) {
-    case '1':
-    case '2':
-      full_year = "18".concat(full_year);
-      break;
-    case '3':
-    case '4':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 1;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 10; i++) {
-    checksum += digits[i] * weight;
-    weight += 1;
-    if (weight === 10) {
-      weight = 1;
-    }
-  }
-  // Do again if modulo 11 of checksum is 10
-  if (checksum % 11 === 10) {
-    checksum = 0;
-    weight = 3;
-    for (var _i3 = 0; _i3 < 10; _i3++) {
-      checksum += digits[_i3] * weight;
-      weight += 1;
-      if (weight === 10) {
-        weight = 1;
-      }
-    }
-    if (checksum % 11 === 10) {
-      return digits[10] === 0;
-    }
-  }
-  return checksum % 11 === digits[10];
-}
-
-/*
- * fi-FI validation function
- * (Henkilötunnus (HETU), persons only)
- * Checks if birth date (first six digits plus century symbol) is valid
- * and calculates check (last) digit
- */
-function fiFiCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(4, 6);
-  var century_symbol = tin.slice(6, 7);
-  switch (century_symbol) {
-    case '+':
-      full_year = "18".concat(full_year);
-      break;
-    case '-':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character
-  var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;
-  if (checksum < 10) {
-    return checksum === parseInt(tin.slice(10), 10);
-  }
-  checksum -= 10;
-  var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];
-  return letters_lookup[checksum] === tin.slice(10);
-}
-
-/*
- * fr/nl-BE validation function
- * (Numéro national (N.N.), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last two) digits
- */
-function frBeCheck(tin) {
-  // Zero month/day value is acceptable
-  if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {
-    // Extract date from first six digits of TIN
-    var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6));
-    if (!isDate(date, 'YY/MM/DD')) {
-      return false;
-    }
-  }
-  var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;
-  var checkdigits = parseInt(tin.slice(9, 11), 10);
-  if (checksum !== checkdigits) {
-    checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97;
-    if (checksum !== checkdigits) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * fr-FR validation function
- * (Numéro fiscal de référence (numéro SPI), persons only)
- * Verify TIN validity by calculating check (last three) digits
- */
-function frFrCheck(tin) {
-  tin = tin.replace(/\s/g, '');
-  var checksum = parseInt(tin.slice(0, 10), 10) % 511;
-  var checkdigits = parseInt(tin.slice(10, 13), 10);
-  return checksum === checkdigits;
-}
-
-/*
- * fr/lb-LU validation function
- * (numéro d’identification personnelle, persons only)
- * Verify birth date validity and run Luhn and Verhoeff checks
- */
-function frLuCheck(tin) {
-  // Extract date and check validity
-  var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Run Luhn check
-  if (!algorithms.luhnCheck(tin.slice(0, 12))) {
-    return false;
-  }
-  // Remove Luhn check digit and run Verhoeff check
-  return algorithms.verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12]));
-}
-
-/*
- * hr-HR validation function
- * (Osobni identifikacijski broj (OIB), persons/entities)
- * Verify TIN validity by calling iso7064Check(digits)
- */
-function hrHrCheck(tin) {
-  return algorithms.iso7064Check(tin);
-}
-
-/*
- * hu-HU validation function
- * (Adóazonosító jel, persons only)
- * Verify TIN validity by calculating check (last) digit
- */
-function huHuCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 8;
-  for (var i = 1; i < 9; i++) {
-    checksum += digits[i] * (i + 1);
-  }
-  return checksum % 11 === digits[9];
-}
-
-/*
- * lt-LT validation function (should go here if needed)
- * (Asmens kodas, persons/entities respectively)
- * Current validation check is alias of etEeCheck- same format applies
- */
-
-/*
- * it-IT first/last name validity check
- * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity
- * Due to lack of clarity between resources ("Are only Italian consonants used?
- * What happens if a person has X in their name?" etc.) only two test conditions
- * have been implemented:
- * Vowels may only be followed by other vowels or an X character
- * and X characters after vowels may only be followed by other X characters.
- */
-function itItNameCheck(name) {
-  // true at the first occurrence of a vowel
-  var vowelflag = false;
-
-  // true at the first occurrence of an X AFTER vowel
-  // (to properly handle last names with X as consonant)
-  var xflag = false;
-  for (var i = 0; i < 3; i++) {
-    if (!vowelflag && /[AEIOU]/.test(name[i])) {
-      vowelflag = true;
-    } else if (!xflag && vowelflag && name[i] === 'X') {
-      xflag = true;
-    } else if (i > 0) {
-      if (vowelflag && !xflag) {
-        if (!/[AEIOU]/.test(name[i])) {
-          return false;
-        }
-      }
-      if (xflag) {
-        if (!/X/.test(name[i])) {
-          return false;
-        }
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * it-IT validation function
- * (Codice fiscale (TIN-IT), persons only)
- * Verify name, birth date and codice catastale validity
- * and calculate check character.
- * Material not in DG-TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/Italian_fiscal_code`
- */
-function itItCheck(tin) {
-  // Capitalize and split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Check first and last name validity calling itItNameCheck()
-  if (!itItNameCheck(chars.slice(0, 3))) {
-    return false;
-  }
-  if (!itItNameCheck(chars.slice(3, 6))) {
-    return false;
-  }
-
-  // Convert letters in number spaces back to numbers if any
-  var number_locations = [6, 7, 9, 10, 12, 13, 14];
-  var number_replace = {
-    L: '0',
-    M: '1',
-    N: '2',
-    P: '3',
-    Q: '4',
-    R: '5',
-    S: '6',
-    T: '7',
-    U: '8',
-    V: '9'
-  };
-  for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {
-    var i = _number_locations[_i4];
-    if (chars[i] in number_replace) {
-      chars.splice(i, 1, number_replace[chars[i]]);
-    }
-  }
-
-  // Extract month and day, and check date validity
-  var month_replace = {
-    A: '01',
-    B: '02',
-    C: '03',
-    D: '04',
-    E: '05',
-    H: '06',
-    L: '07',
-    M: '08',
-    P: '09',
-    R: '10',
-    S: '11',
-    T: '12'
-  };
-  var month = month_replace[chars[8]];
-  var day = parseInt(chars[9] + chars[10], 10);
-  if (day > 40) {
-    day -= 40;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day);
-  if (!isDate(date, 'YY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character by adding up even and odd characters as numbers
-  var checksum = 0;
-  for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {
-    var char_to_int = parseInt(chars[_i5], 10);
-    if (isNaN(char_to_int)) {
-      char_to_int = chars[_i5].charCodeAt(0) - 65;
-    }
-    checksum += char_to_int;
-  }
-  var odd_convert = {
-    // Maps of characters at odd places
-    A: 1,
-    B: 0,
-    C: 5,
-    D: 7,
-    E: 9,
-    F: 13,
-    G: 15,
-    H: 17,
-    I: 19,
-    J: 21,
-    K: 2,
-    L: 4,
-    M: 18,
-    N: 20,
-    O: 11,
-    P: 3,
-    Q: 6,
-    R: 8,
-    S: 12,
-    T: 14,
-    U: 16,
-    V: 10,
-    W: 22,
-    X: 25,
-    Y: 24,
-    Z: 23,
-    0: 1,
-    1: 0
-  };
-  for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {
-    var _char_to_int = 0;
-    if (chars[_i6] in odd_convert) {
-      _char_to_int = odd_convert[chars[_i6]];
-    } else {
-      var multiplier = parseInt(chars[_i6], 10);
-      _char_to_int = 2 * multiplier + 1;
-      if (multiplier > 4) {
-        _char_to_int += 2;
-      }
-    }
-    checksum += _char_to_int;
-  }
-  if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * lv-LV validation function
- * (Personas kods (PK), persons only)
- * Check validity of birth date and calculate check (last) digit
- * Support only for old format numbers (not starting with '32', issued before 2017/07/01)
- * Material not in DG TAXUD document sourced from:
- * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/`
- */
-function lvLvCheck(tin) {
-  tin = tin.replace(/\W/, '');
-  // Extract date from TIN
-  var day = tin.slice(0, 2);
-  if (day !== '32') {
-    // No date/checksum check if new format
-    var month = tin.slice(2, 4);
-    if (month !== '00') {
-      // No date check if unknown month
-      var full_year = tin.slice(4, 6);
-      switch (tin[6]) {
-        case '0':
-          full_year = "18".concat(full_year);
-          break;
-        case '1':
-          full_year = "19".concat(full_year);
-          break;
-        default:
-          full_year = "20".concat(full_year);
-          break;
-      }
-      // Check date validity
-      var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day);
-      if (!isDate(date, 'YYYY/MM/DD')) {
-        return false;
-      }
-    }
-
-    // Calculate check digit
-    var checksum = 1101;
-    var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-    for (var i = 0; i < tin.length - 1; i++) {
-      checksum -= parseInt(tin[i], 10) * multip_lookup[i];
-    }
-    return parseInt(tin[10], 10) === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * mt-MT validation function
- * (Identity Card Number or Unique Taxpayer Reference, persons/entities)
- * Verify Identity Card Number structure (no other tests found)
- */
-function mtMtCheck(tin) {
-  if (tin.length !== 9) {
-    // No tests for UTR
-    var chars = tin.toUpperCase().split('');
-    // Fill with zeros if smaller than proper
-    while (chars.length < 8) {
-      chars.unshift(0);
-    }
-    // Validate format according to last character
-    switch (tin[7]) {
-      case 'A':
-      case 'P':
-        if (parseInt(chars[6], 10) === 0) {
-          return false;
-        }
-        break;
-      default:
-        {
-          var first_part = parseInt(chars.join('').slice(0, 5), 10);
-          if (first_part > 32000) {
-            return false;
-          }
-          var second_part = parseInt(chars.join('').slice(5, 7), 10);
-          if (first_part === second_part) {
-            return false;
-          }
-        }
-    }
-  }
-  return true;
-}
-
-/*
- * nl-NL validation function
- * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN),
- * persons/entities respectively)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function nlNlCheck(tin) {
-  return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11 === parseInt(tin[8], 10);
-}
-
-/*
- * pl-PL validation function
- * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL)
- * or Numer identyfikacji podatkowej (NIP), persons/entities)
- * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit
- */
-function plPlCheck(tin) {
-  // NIP
-  if (tin.length === 10) {
-    // Calculate last digit by multiplying with lookup
-    var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];
-    var _checksum = 0;
-    for (var i = 0; i < lookup.length; i++) {
-      _checksum += parseInt(tin[i], 10) * lookup[i];
-    }
-    _checksum %= 11;
-    if (_checksum === 10) {
-      return false;
-    }
-    return _checksum === parseInt(tin[9], 10);
-  }
-
-  // PESEL
-  // Extract full year using month
-  var full_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 80) {
-    full_year = "18".concat(full_year);
-    month -= 80;
-  } else if (month > 60) {
-    full_year = "22".concat(full_year);
-    month -= 60;
-  } else if (month > 40) {
-    full_year = "21".concat(full_year);
-    month -= 40;
-  } else if (month > 20) {
-    full_year = "20".concat(full_year);
-    month -= 20;
-  } else {
-    full_year = "19".concat(full_year);
-  }
-  // Add leading zero to month if needed
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate last digit by multiplying with odd one-digit numbers except 5
-  var checksum = 0;
-  var multiplier = 1;
-  for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {
-    checksum += parseInt(tin[_i7], 10) * multiplier % 10;
-    multiplier += 2;
-    if (multiplier > 10) {
-      multiplier = 1;
-    } else if (multiplier === 5) {
-      multiplier += 2;
-    }
-  }
-  checksum = 10 - checksum % 10;
-  return checksum === parseInt(tin[10], 10);
-}
-
-/*
-* pt-BR validation function
-* (Cadastro de Pessoas Físicas (CPF, persons)
-* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities)
-* Both inputs will be validated
-*/
-
-function ptBrCheck(tin) {
-  if (tin.length === 11) {
-    var _sum;
-    var remainder;
-    _sum = 0;
-    if (
-    // Reject known invalid CPFs
-    tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;
-    for (var i = 1; i <= 9; i++) _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;
-    _sum = 0;
-    for (var _i8 = 1; _i8 <= 10; _i8++) _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;
-    return true;
-  }
-  if (
-  // Reject know invalid CNPJs
-  tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {
-    return false;
-  }
-  var length = tin.length - 2;
-  var identifiers = tin.substring(0, length);
-  var verificators = tin.substring(length);
-  var sum = 0;
-  var pos = length - 7;
-  for (var _i9 = length; _i9 >= 1; _i9--) {
-    sum += identifiers.charAt(length - _i9) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  var result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(0), 10)) {
-    return false;
-  }
-  length += 1;
-  identifiers = tin.substring(0, length);
-  sum = 0;
-  pos = length - 7;
-  for (var _i0 = length; _i0 >= 1; _i0--) {
-    sum += identifiers.charAt(length - _i0) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(1), 10)) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * pt-PT validation function
- * (Número de identificação fiscal (NIF), persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ptPtCheck(tin) {
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-}
-
-/*
- * ro-RO validation function
- * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF),
- * persons only)
- * Verify CNP validity by calculating check (last) digit (test not found for CIF)
- * Material not in DG TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/National_identification_number#Romania`
- */
-function roRoCheck(tin) {
-  if (tin.slice(0, 4) !== '9000') {
-    // No test found for this format
-    // Extract full year using century digit if possible
-    var full_year = tin.slice(1, 3);
-    switch (tin[0]) {
-      case '1':
-      case '2':
-        full_year = "19".concat(full_year);
-        break;
-      case '3':
-      case '4':
-        full_year = "18".concat(full_year);
-        break;
-      case '5':
-      case '6':
-        full_year = "20".concat(full_year);
-        break;
-      default:
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-    if (date.length === 8) {
-      if (!isDate(date, 'YY/MM/DD')) {
-        return false;
-      }
-    } else if (!isDate(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-
-    // Calculate check digit
-    var digits = tin.split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
-    var checksum = 0;
-    for (var i = 0; i < multipliers.length; i++) {
-      checksum += digits[i] * multipliers[i];
-    }
-    if (checksum % 11 === 10) {
-      return digits[12] === 1;
-    }
-    return digits[12] === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * sk-SK validation function
- * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only)
- * Checks validity of pre-1954 birth numbers (rodné číslo) only
- * Due to the introduction of the pseudo-random BIČ it is not possible to test
- * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand
- */
-function skSkCheck(tin) {
-  if (tin.length === 9) {
-    tin = tin.replace(/\W/, '');
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-
-    // Extract full year from TIN length
-    var full_year = parseInt(tin.slice(0, 2), 10);
-    if (full_year > 53) {
-      return false;
-    }
-    if (full_year < 10) {
-      full_year = "190".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-
-    // Extract month from TIN and normalize
-    var month = parseInt(tin.slice(2, 4), 10);
-    if (month > 50) {
-      month -= 50;
-    }
-    if (month < 10) {
-      month = "0".concat(month);
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-    if (!isDate(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * sl-SI validation function
- * (Davčna številka, persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function slSiCheck(tin) {
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8) % 11;
-  if (checksum === 10) {
-    return parseInt(tin[7], 10) === 0;
-  }
-  return checksum === parseInt(tin[7], 10);
-}
-
-/*
- * sv-SE validation function
- * (Personnummer or samordningsnummer, persons only)
- * Checks validity of birth date and calls luhnCheck() to validate check (last) digit
- */
-function svSeCheck(tin) {
-  // Make copy of TIN and normalize to two-digit year form
-  var tin_copy = tin.slice(0);
-  if (tin.length > 11) {
-    tin_copy = tin_copy.slice(2);
-  }
-
-  // Extract date of birth
-  var full_year = '';
-  var month = tin_copy.slice(2, 4);
-  var day = parseInt(tin_copy.slice(4, 6), 10);
-  if (tin.length > 11) {
-    full_year = tin.slice(0, 4);
-  } else {
-    full_year = tin.slice(0, 2);
-    if (tin.length === 11 && day < 60) {
-      // Extract full year from centenarian symbol
-      // Should work just fine until year 10000 or so
-      var current_year = new Date().getFullYear().toString();
-      var current_century = parseInt(current_year.slice(0, 2), 10);
-      current_year = parseInt(current_year, 10);
-      if (tin[6] === '-') {
-        if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) {
-          full_year = "".concat(current_century - 1).concat(full_year);
-        } else {
-          full_year = "".concat(current_century).concat(full_year);
-        }
-      } else {
-        full_year = "".concat(current_century - 1).concat(full_year);
-        if (current_year - parseInt(full_year, 10) < 100) {
-          return false;
-        }
-      }
-    }
-  }
-
-  // Normalize day and check date validity
-  if (day > 60) {
-    day -= 60;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(full_year, "/").concat(month, "/").concat(day);
-  if (date.length === 8) {
-    if (!isDate(date, 'YY/MM/DD')) {
-      return false;
-    }
-  } else if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-  return algorithms.luhnCheck(tin.replace(/\W/, ''));
-}
-
-/**
- * uk-UA validation function
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ukUaCheck(tin) {
-  // Calculate check digit
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var multipliers = [-1, 5, 7, 9, 4, 6, 10, 5, 7];
-  var checksum = 0;
-  for (var i = 0; i < multipliers.length; i++) {
-    checksum += digits[i] * multipliers[i];
-  }
-  return checksum % 11 === 10 ? digits[9] === 0 : digits[9] === checksum % 11;
-}
-
-// Locale lookup objects
-
-/*
- * Tax id regex formats for various locales
- *
- * Where not explicitly specified in DG-TAXUD document both
- * uppercase and lowercase letters are acceptable.
- */
-var taxIdFormat = {
-  'bg-BG': /^\d{10}$/,
-  'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/,
-  'de-AT': /^\d{9}$/,
-  'de-DE': /^[1-9]\d{10}$/,
-  'dk-DK': /^\d{6}-{0,1}\d{4}$/,
-  'el-CY': /^[09]\d{7}[A-Z]$/,
-  'el-GR': /^([0-4]|[7-9])\d{8}$/,
-  'en-CA': /^\d{9}$/,
-  'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,
-  'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i,
-  'en-US': /^\d{2}[- ]{0,1}\d{7}$/,
-  'es-AR': /(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,
-  'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,
-  'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,
-  'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,
-  'fr-BE': /^\d{11}$/,
-  'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,
-  // Conforms both to official spec and provided example
-  'fr-LU': /^\d{13}$/,
-  'hr-HR': /^\d{11}$/,
-  'hu-HU': /^8\d{9}$/,
-  'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,
-  'lv-LV': /^\d{6}-{0,1}\d{5}$/,
-  // Conforms both to DG TAXUD spec and original research
-  'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,
-  'nl-NL': /^\d{9}$/,
-  'pl-PL': /^\d{10,11}$/,
-  'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/,
-  'pt-PT': /^\d{9}$/,
-  'ro-RO': /^\d{13}$/,
-  'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/,
-  'sl-SI': /^[1-9]\d{7}$/,
-  'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/,
-  'uk-UA': /^\d{10}$/
-};
-// taxIdFormat locale aliases
-taxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];
-taxIdFormat['lt-LT'] = taxIdFormat['et-EE'];
-taxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];
-taxIdFormat['fr-CA'] = taxIdFormat['en-CA'];
-
-// Algorithmic tax id check functions for various locales
-var taxIdCheck = {
-  'bg-BG': bgBgCheck,
-  'cs-CZ': csCzCheck,
-  'de-AT': deAtCheck,
-  'de-DE': deDeCheck,
-  'dk-DK': dkDkCheck,
-  'el-CY': elCyCheck,
-  'el-GR': elGrCheck,
-  'en-CA': isCanadianSIN,
-  'en-IE': enIeCheck,
-  'en-US': enUsCheck,
-  'es-AR': esArCheck,
-  'es-ES': esEsCheck,
-  'et-EE': etEeCheck,
-  'fi-FI': fiFiCheck,
-  'fr-BE': frBeCheck,
-  'fr-FR': frFrCheck,
-  'fr-LU': frLuCheck,
-  'hr-HR': hrHrCheck,
-  'hu-HU': huHuCheck,
-  'it-IT': itItCheck,
-  'lv-LV': lvLvCheck,
-  'mt-MT': mtMtCheck,
-  'nl-NL': nlNlCheck,
-  'pl-PL': plPlCheck,
-  'pt-BR': ptBrCheck,
-  'pt-PT': ptPtCheck,
-  'ro-RO': roRoCheck,
-  'sk-SK': skSkCheck,
-  'sl-SI': slSiCheck,
-  'sv-SE': svSeCheck,
-  'uk-UA': ukUaCheck
-};
-// taxIdCheck locale aliases
-taxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];
-taxIdCheck['lt-LT'] = taxIdCheck['et-EE'];
-taxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];
-taxIdCheck['fr-CA'] = taxIdCheck['en-CA'];
-
-// Regexes for locales where characters should be omitted before checking format
-var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g;
-var sanitizeRegexes = {
-  'de-AT': allsymbols,
-  'de-DE': /[\/\\]/g,
-  'fr-BE': allsymbols
-};
-// sanitizeRegexes locale aliases
-sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];
-
-/*
- * Validator function
- * Return true if the passed string is a valid tax identification number
- * for the specified locale.
- * Throw an error exception if the locale is not supported.
- */
-export default function isTaxID(str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  assertString(str);
-  // Copy TIN to avoid replacement if sanitized
-  var strcopy = str.slice(0);
-  if (locale in taxIdFormat) {
-    if (locale in sanitizeRegexes) {
-      strcopy = strcopy.replace(sanitizeRegexes[locale], '');
-    }
-    if (!taxIdFormat[locale].test(strcopy)) {
-      return false;
-    }
-    if (locale in taxIdCheck) {
-      return taxIdCheck[locale](strcopy);
-    }
-    // Fallthrough; not all locales have algorithmic checks
-    return true;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isTime.js
===================================================================
--- backend/node_modules/validator/es/lib/isTime.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-import merge from './util/merge';
-var default_time_options = {
-  hourFormat: 'hour24',
-  mode: 'default'
-};
-var formats = {
-  hour24: {
-    "default": /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,
-    withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,
-    withOptionalSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/
-  },
-  hour12: {
-    "default": /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,
-    withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,
-    withOptionalSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/
-  }
-};
-export default function isTime(input, options) {
-  options = merge(options, default_time_options);
-  if (typeof input !== 'string') return false;
-  return formats[options.hourFormat][options.mode].test(input);
-}
Index: ckend/node_modules/validator/es/lib/isULID.js
===================================================================
--- backend/node_modules/validator/es/lib/isULID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function isULID(str) {
-  assertString(str);
-  return /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isURL.js
===================================================================
--- backend/node_modules/validator/es/lib/isURL.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,161 +1,0 @@
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-import assertString from './util/assertString';
-import checkHost from './util/checkHost';
-import includes from './util/includesString';
-import isFQDN from './isFQDN';
-import isIP from './isIP';
-import merge from './util/merge';
-
-/*
-options for isURL method
-
-protocols - valid protocols can be modified with this option.
-require_tld - If set to false isURL will not check if the URL's host includes a top-level domain.
-require_protocol - if set to true isURL will return false if protocol is not present in the URL.
-require_host - if set to false isURL will not check if host is present in the URL.
-require_port - if set to true isURL will check if port is present in the URL.
-require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
-allow_underscores - if set to true, the validator will allow underscores in the URL.
-host_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings
-                 defined in it, the validation fails.
-host_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings
-                 defined in it, the validation fails.
-allow_trailing_dot - if set to true, the validator will allow the domain to end with
-                     a `.` character.
-allow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.
-allow_fragments - if set to false isURL will return false if fragments are present.
-allow_query_components - if set to false isURL will return false if query components are present.
-disallow_auth - if set to true, the validator will fail if the URL contains an authentication
-                component, e.g. `http://username:password@example.com`
-validate_length - if set to false isURL will skip string length validation. `max_allowed_length`
-                  will be ignored if this is set as `false`.
-max_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is
-                     2084 that IE maximum URL length).
-
-*/
-
-var default_url_options = {
-  protocols: ['http', 'https', 'ftp'],
-  require_tld: true,
-  require_protocol: false,
-  require_host: true,
-  require_port: false,
-  require_valid_protocol: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_protocol_relative_urls: false,
-  allow_fragments: true,
-  allow_query_components: true,
-  validate_length: true,
-  max_allowed_length: 2084
-};
-var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/;
-export default function isURL(url, options) {
-  assertString(url);
-  if (!url || /[\s<>]/.test(url)) {
-    return false;
-  }
-  if (url.indexOf('mailto:') === 0) {
-    return false;
-  }
-  options = merge(options, default_url_options);
-  if (options.validate_length && url.length > options.max_allowed_length) {
-    return false;
-  }
-  if (!options.allow_fragments && includes(url, '#')) {
-    return false;
-  }
-  if (!options.allow_query_components && (includes(url, '?') || includes(url, '&'))) {
-    return false;
-  }
-  var protocol, auth, host, hostname, port, port_str, split, ipv6;
-  split = url.split('#');
-  url = split.shift();
-  split = url.split('?');
-  url = split.shift();
-  split = url.split('://');
-  if (split.length > 1) {
-    protocol = split.shift().toLowerCase();
-    if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {
-      return false;
-    }
-  } else if (options.require_protocol) {
-    return false;
-  } else if (url.slice(0, 2) === '//') {
-    if (!options.allow_protocol_relative_urls) {
-      return false;
-    }
-    split[0] = url.slice(2);
-  }
-  url = split.join('://');
-  if (url === '') {
-    return false;
-  }
-  split = url.split('/');
-  url = split.shift();
-  if (url === '' && !options.require_host) {
-    return true;
-  }
-  split = url.split('@');
-  if (split.length > 1) {
-    if (options.disallow_auth) {
-      return false;
-    }
-    if (split[0] === '') {
-      return false;
-    }
-    auth = split.shift();
-    if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {
-      return false;
-    }
-    var _auth$split = auth.split(':'),
-      _auth$split2 = _slicedToArray(_auth$split, 2),
-      user = _auth$split2[0],
-      password = _auth$split2[1];
-    if (user === '' && password === '') {
-      return false;
-    }
-  }
-  hostname = split.join('@');
-  port_str = null;
-  ipv6 = null;
-  var ipv6_match = hostname.match(wrapped_ipv6);
-  if (ipv6_match) {
-    host = '';
-    ipv6 = ipv6_match[1];
-    port_str = ipv6_match[2] || null;
-  } else {
-    split = hostname.split(':');
-    host = split.shift();
-    if (split.length) {
-      port_str = split.join(':');
-    }
-  }
-  if (port_str !== null && port_str.length > 0) {
-    port = parseInt(port_str, 10);
-    if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {
-      return false;
-    }
-  } else if (options.require_port) {
-    return false;
-  }
-  if (options.host_whitelist) {
-    return checkHost(host, options.host_whitelist);
-  }
-  if (host === '' && !options.require_host) {
-    return true;
-  }
-  if (!isIP(host) && !isFQDN(host, options) && (!ipv6 || !isIP(ipv6, 6))) {
-    return false;
-  }
-  host = host || ipv6;
-  if (options.host_blacklist && checkHost(host, options.host_blacklist)) {
-    return false;
-  }
-  return true;
-}
Index: ckend/node_modules/validator/es/lib/isUUID.js
===================================================================
--- backend/node_modules/validator/es/lib/isUUID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-import assertString from './util/assertString';
-var uuid = {
-  1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  6: /^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  8: /^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  nil: /^00000000-0000-0000-0000-000000000000$/i,
-  max: /^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,
-  loose: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
-  // From https://github.com/uuidjs/uuid/blob/main/src/regex.js
-  all: /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i
-};
-export default function isUUID(str, version) {
-  assertString(str);
-  if (version === undefined || version === null) {
-    version = 'all';
-  }
-  return version in uuid ? uuid[version].test(str) : false;
-}
Index: ckend/node_modules/validator/es/lib/isUppercase.js
===================================================================
--- backend/node_modules/validator/es/lib/isUppercase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function isUppercase(str) {
-  assertString(str);
-  return str === str.toUpperCase();
-}
Index: ckend/node_modules/validator/es/lib/isVAT.js
===================================================================
--- backend/node_modules/validator/es/lib/isVAT.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,264 +1,0 @@
-import assertString from './util/assertString';
-import * as algorithms from './util/algorithms';
-var AU = function AU(str) {
-  var match = str.match(/^(AU)?(\d{11})$/);
-  if (!match) {
-    return false;
-  }
-  // @see {@link https://abr.business.gov.au/Help/AbnFormat}
-  var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
-  str = str.replace(/^AU/, '');
-  var ABN = (parseInt(str.slice(0, 1), 10) - 1).toString() + str.slice(1);
-  var total = 0;
-  for (var i = 0; i < 11; i++) {
-    total += weights[i] * ABN.charAt(i);
-  }
-  return total !== 0 && total % 89 === 0;
-};
-var CH = function CH(str) {
-  // @see {@link https://www.ech.ch/de/ech/ech-0097/5.2.0}
-  var hasValidCheckNumber = function hasValidCheckNumber(digits) {
-    var lastDigit = digits.pop(); // used as check number
-    var weights = [5, 4, 3, 2, 7, 6, 5, 4];
-    var calculatedCheckNumber = (11 - digits.reduce(function (acc, el, idx) {
-      return acc + el * weights[idx];
-    }, 0) % 11) % 11;
-    return lastDigit === calculatedCheckNumber;
-  };
-
-  // @see {@link https://www.estv.admin.ch/estv/de/home/mehrwertsteuer/uid/mwst-uid-nummer.html}
-  return /^(CHE[- ]?)?(\d{9}|(\d{3}\.\d{3}\.\d{3})|(\d{3} \d{3} \d{3})) ?(TVA|MWST|IVA)?$/.test(str) && hasValidCheckNumber(str.match(/\d/g).map(function (el) {
-    return +el;
-  }));
-};
-var PT = function PT(str) {
-  var match = str.match(/^(PT)?(\d{9})$/);
-  if (!match) {
-    return false;
-  }
-  var tin = match[2];
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-};
-export var vatMatchers = {
-  /**
-   * European Union VAT identification numbers
-   */
-  AT: function AT(str) {
-    return /^(AT)?U\d{8}$/.test(str);
-  },
-  BE: function BE(str) {
-    return /^(BE)?\d{10}$/.test(str);
-  },
-  BG: function BG(str) {
-    return /^(BG)?\d{9,10}$/.test(str);
-  },
-  HR: function HR(str) {
-    return /^(HR)?\d{11}$/.test(str);
-  },
-  CY: function CY(str) {
-    return /^(CY)?\w{9}$/.test(str);
-  },
-  CZ: function CZ(str) {
-    return /^(CZ)?\d{8,10}$/.test(str);
-  },
-  DK: function DK(str) {
-    return /^(DK)?\d{8}$/.test(str);
-  },
-  EE: function EE(str) {
-    return /^(EE)?\d{9}$/.test(str);
-  },
-  FI: function FI(str) {
-    return /^(FI)?\d{8}$/.test(str);
-  },
-  FR: function FR(str) {
-    return /^(FR)?\w{2}\d{9}$/.test(str);
-  },
-  DE: function DE(str) {
-    return /^(DE)?\d{9}$/.test(str);
-  },
-  EL: function EL(str) {
-    return /^(EL)?\d{9}$/.test(str);
-  },
-  HU: function HU(str) {
-    return /^(HU)?\d{8}$/.test(str);
-  },
-  IE: function IE(str) {
-    return /^(IE)?\d{7}\w{1}(W)?$/.test(str);
-  },
-  IT: function IT(str) {
-    return /^(IT)?\d{11}$/.test(str);
-  },
-  LV: function LV(str) {
-    return /^(LV)?\d{11}$/.test(str);
-  },
-  LT: function LT(str) {
-    return /^(LT)?\d{9,12}$/.test(str);
-  },
-  LU: function LU(str) {
-    return /^(LU)?\d{8}$/.test(str);
-  },
-  MT: function MT(str) {
-    return /^(MT)?\d{8}$/.test(str);
-  },
-  NL: function NL(str) {
-    return /^(NL)?\d{9}B\d{2}$/.test(str);
-  },
-  PL: function PL(str) {
-    return /^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(str);
-  },
-  PT: PT,
-  RO: function RO(str) {
-    return /^(RO)?\d{2,10}$/.test(str);
-  },
-  SK: function SK(str) {
-    return /^(SK)?\d{10}$/.test(str);
-  },
-  SI: function SI(str) {
-    return /^(SI)?\d{8}$/.test(str);
-  },
-  ES: function ES(str) {
-    return /^(ES)?\w\d{7}[A-Z]$/.test(str);
-  },
-  SE: function SE(str) {
-    return /^(SE)?\d{12}$/.test(str);
-  },
-  /**
-   * VAT numbers of non-EU countries
-   */
-  AL: function AL(str) {
-    return /^(AL)?\w{9}[A-Z]$/.test(str);
-  },
-  MK: function MK(str) {
-    return /^(MK)?\d{13}$/.test(str);
-  },
-  AU: AU,
-  BY: function BY(str) {
-    return /^(УНП )?\d{9}$/.test(str);
-  },
-  CA: function CA(str) {
-    return /^(CA)?\d{9}$/.test(str);
-  },
-  IS: function IS(str) {
-    return /^(IS)?\d{5,6}$/.test(str);
-  },
-  IN: function IN(str) {
-    return /^(IN)?\d{15}$/.test(str);
-  },
-  ID: function ID(str) {
-    return /^(ID)?(\d{15}|(\d{2}.\d{3}.\d{3}.\d{1}-\d{3}.\d{3}))$/.test(str);
-  },
-  IL: function IL(str) {
-    return /^(IL)?\d{9}$/.test(str);
-  },
-  KZ: function KZ(str) {
-    return /^(KZ)?\d{12}$/.test(str);
-  },
-  NZ: function NZ(str) {
-    return /^(NZ)?\d{9}$/.test(str);
-  },
-  NG: function NG(str) {
-    return /^(NG)?(\d{12}|(\d{8}-\d{4}))$/.test(str);
-  },
-  NO: function NO(str) {
-    return /^(NO)?\d{9}MVA$/.test(str);
-  },
-  PH: function PH(str) {
-    return /^(PH)?(\d{12}|\d{3} \d{3} \d{3} \d{3})$/.test(str);
-  },
-  RU: function RU(str) {
-    return /^(RU)?(\d{10}|\d{12})$/.test(str);
-  },
-  SM: function SM(str) {
-    return /^(SM)?\d{5}$/.test(str);
-  },
-  SA: function SA(str) {
-    return /^(SA)?\d{15}$/.test(str);
-  },
-  RS: function RS(str) {
-    return /^(RS)?\d{9}$/.test(str);
-  },
-  CH: CH,
-  TR: function TR(str) {
-    return /^(TR)?\d{10}$/.test(str);
-  },
-  UA: function UA(str) {
-    return /^(UA)?\d{12}$/.test(str);
-  },
-  GB: function GB(str) {
-    return /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(str);
-  },
-  UZ: function UZ(str) {
-    return /^(UZ)?\d{9}$/.test(str);
-  },
-  /**
-   * VAT numbers of Latin American countries
-   */
-  AR: function AR(str) {
-    return /^(AR)?\d{11}$/.test(str);
-  },
-  BO: function BO(str) {
-    return /^(BO)?\d{7}$/.test(str);
-  },
-  BR: function BR(str) {
-    return /^(BR)?((\d{2}.\d{3}.\d{3}\/\d{4}-\d{2})|(\d{3}.\d{3}.\d{3}-\d{2}))$/.test(str);
-  },
-  CL: function CL(str) {
-    return /^(CL)?\d{8}-\d{1}$/.test(str);
-  },
-  CO: function CO(str) {
-    return /^(CO)?\d{10}$/.test(str);
-  },
-  CR: function CR(str) {
-    return /^(CR)?\d{9,12}$/.test(str);
-  },
-  EC: function EC(str) {
-    return /^(EC)?\d{13}$/.test(str);
-  },
-  SV: function SV(str) {
-    return /^(SV)?\d{4}-\d{6}-\d{3}-\d{1}$/.test(str);
-  },
-  GT: function GT(str) {
-    return /^(GT)?\d{7}-\d{1}$/.test(str);
-  },
-  HN: function HN(str) {
-    return /^(HN)?$/.test(str);
-  },
-  MX: function MX(str) {
-    return /^(MX)?\w{3,4}\d{6}\w{3}$/.test(str);
-  },
-  NI: function NI(str) {
-    return /^(NI)?\d{3}-\d{6}-\d{4}\w{1}$/.test(str);
-  },
-  PA: function PA(str) {
-    return /^(PA)?$/.test(str);
-  },
-  PY: function PY(str) {
-    return /^(PY)?\d{6,8}-\d{1}$/.test(str);
-  },
-  PE: function PE(str) {
-    return /^(PE)?\d{11}$/.test(str);
-  },
-  DO: function DO(str) {
-    return /^(DO)?(\d{11}|(\d{3}-\d{7}-\d{1})|[1,4,5]{1}\d{8}|([1,4,5]{1})-\d{2}-\d{5}-\d{1})$/.test(str);
-  },
-  UY: function UY(str) {
-    return /^(UY)?\d{12}$/.test(str);
-  },
-  VE: function VE(str) {
-    return /^(VE)?[J,G,V,E]{1}-(\d{9}|(\d{8}-\d{1}))$/.test(str);
-  }
-};
-export default function isVAT(str, countryCode) {
-  assertString(str);
-  assertString(countryCode);
-  if (countryCode in vatMatchers) {
-    return vatMatchers[countryCode](str);
-  }
-  throw new Error("Invalid country code: '".concat(countryCode, "'"));
-}
Index: ckend/node_modules/validator/es/lib/isVariableWidth.js
===================================================================
--- backend/node_modules/validator/es/lib/isVariableWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import assertString from './util/assertString';
-import { fullWidth } from './isFullWidth';
-import { halfWidth } from './isHalfWidth';
-export default function isVariableWidth(str) {
-  assertString(str);
-  return fullWidth.test(str) && halfWidth.test(str);
-}
Index: ckend/node_modules/validator/es/lib/isWhitelisted.js
===================================================================
--- backend/node_modules/validator/es/lib/isWhitelisted.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-import assertString from './util/assertString';
-export default function isWhitelisted(str, chars) {
-  assertString(str);
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (chars.indexOf(str[i]) === -1) {
-      return false;
-    }
-  }
-  return true;
-}
Index: ckend/node_modules/validator/es/lib/ltrim.js
===================================================================
--- backend/node_modules/validator/es/lib/ltrim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import assertString from './util/assertString';
-export default function ltrim(str, chars) {
-  assertString(str);
-  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-  var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g;
-  return str.replace(pattern, '');
-}
Index: ckend/node_modules/validator/es/lib/matches.js
===================================================================
--- backend/node_modules/validator/es/lib/matches.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-export default function matches(str, pattern, modifiers) {
-  assertString(str);
-  if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {
-    pattern = new RegExp(pattern, modifiers);
-  }
-  return !!str.match(pattern);
-}
Index: ckend/node_modules/validator/es/lib/normalizeEmail.js
===================================================================
--- backend/node_modules/validator/es/lib/normalizeEmail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,131 +1,0 @@
-import merge from './util/merge';
-var default_normalize_email_options = {
-  // The following options apply to all email addresses
-  // Lowercases the local part of the email address.
-  // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).
-  // The domain is always lowercased, as per RFC 1035
-  all_lowercase: true,
-  // The following conversions are specific to GMail
-  // Lowercases the local part of the GMail address (known to be case-insensitive)
-  gmail_lowercase: true,
-  // Removes dots from the local part of the email address, as that's ignored by GMail
-  gmail_remove_dots: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  gmail_remove_subaddress: true,
-  // Conversts the googlemail.com domain to gmail.com
-  gmail_convert_googlemaildotcom: true,
-  // The following conversions are specific to Outlook.com / Windows Live / Hotmail
-  // Lowercases the local part of the Outlook.com address (known to be case-insensitive)
-  outlookdotcom_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  outlookdotcom_remove_subaddress: true,
-  // The following conversions are specific to Yahoo
-  // Lowercases the local part of the Yahoo address (known to be case-insensitive)
-  yahoo_lowercase: true,
-  // Removes the subaddress (e.g. "-foo") from the email address
-  yahoo_remove_subaddress: true,
-  // The following conversions are specific to Yandex
-  // Lowercases the local part of the Yandex address (known to be case-insensitive)
-  yandex_lowercase: true,
-  // all yandex domains are equal, this explicitly sets the domain to 'yandex.ru'
-  yandex_convert_yandexru: true,
-  // The following conversions are specific to iCloud
-  // Lowercases the local part of the iCloud address (known to be case-insensitive)
-  icloud_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  icloud_remove_subaddress: true
-};
-
-// List of domains used by iCloud
-var icloud_domains = ['icloud.com', 'me.com'];
-
-// List of domains used by Outlook.com and its predecessors
-// This list is likely incomplete.
-// Partial reference:
-// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/
-var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];
-
-// List of domains used by Yahoo Mail
-// This list is likely incomplete
-var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];
-
-// List of domains used by yandex.ru
-var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];
-
-// replace single dots, but not multiple consecutive dots
-function dotsReplacer(match) {
-  if (match.length > 1) {
-    return match;
-  }
-  return '';
-}
-export default function normalizeEmail(email, options) {
-  options = merge(options, default_normalize_email_options);
-  var raw_parts = email.split('@');
-  var domain = raw_parts.pop();
-  var user = raw_parts.join('@');
-  var parts = [user, domain];
-
-  // The domain is always lowercased, as it's case-insensitive per RFC 1035
-  parts[1] = parts[1].toLowerCase();
-  if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {
-    // Address is GMail
-    if (options.gmail_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (options.gmail_remove_dots) {
-      // this does not replace consecutive dots like example..email@gmail.com
-      parts[0] = parts[0].replace(/\.+/g, dotsReplacer);
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.gmail_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];
-  } else if (icloud_domains.indexOf(parts[1]) >= 0) {
-    // Address is iCloud
-    if (options.icloud_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.icloud_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {
-    // Address is Outlook.com
-    if (options.outlookdotcom_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.outlookdotcom_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yahoo_domains.indexOf(parts[1]) >= 0) {
-    // Address is Yahoo
-    if (options.yahoo_remove_subaddress) {
-      var components = parts[0].split('-');
-      parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.yahoo_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yandex_domains.indexOf(parts[1]) >= 0) {
-    if (options.all_lowercase || options.yandex_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.yandex_convert_yandexru ? 'yandex.ru' : parts[1];
-  } else if (options.all_lowercase) {
-    // Any other address
-    parts[0] = parts[0].toLowerCase();
-  }
-  return parts.join('@');
-}
Index: ckend/node_modules/validator/es/lib/rtrim.js
===================================================================
--- backend/node_modules/validator/es/lib/rtrim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-import assertString from './util/assertString';
-export default function rtrim(str, chars) {
-  assertString(str);
-  if (chars) {
-    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-    var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g');
-    return str.replace(pattern, '');
-  }
-  // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript
-  var strIndex = str.length - 1;
-  while (/\s/.test(str.charAt(strIndex))) {
-    strIndex -= 1;
-  }
-  return str.slice(0, strIndex + 1);
-}
Index: ckend/node_modules/validator/es/lib/stripLow.js
===================================================================
--- backend/node_modules/validator/es/lib/stripLow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,7 +1,0 @@
-import assertString from './util/assertString';
-import blacklist from './blacklist';
-export default function stripLow(str, keep_new_lines) {
-  assertString(str);
-  var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F';
-  return blacklist(str, chars);
-}
Index: ckend/node_modules/validator/es/lib/toBoolean.js
===================================================================
--- backend/node_modules/validator/es/lib/toBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-export default function toBoolean(str, strict) {
-  assertString(str);
-  if (strict) {
-    return str === '1' || /^true$/i.test(str);
-  }
-  return str !== '0' && !/^false$/i.test(str) && str !== '';
-}
Index: ckend/node_modules/validator/es/lib/toDate.js
===================================================================
--- backend/node_modules/validator/es/lib/toDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-import assertString from './util/assertString';
-export default function toDate(date) {
-  assertString(date);
-  date = Date.parse(date);
-  return !isNaN(date) ? new Date(date) : null;
-}
Index: ckend/node_modules/validator/es/lib/toFloat.js
===================================================================
--- backend/node_modules/validator/es/lib/toFloat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import isFloat from './isFloat';
-export default function toFloat(str) {
-  if (!isFloat(str)) return NaN;
-  return parseFloat(str);
-}
Index: ckend/node_modules/validator/es/lib/toInt.js
===================================================================
--- backend/node_modules/validator/es/lib/toInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function toInt(str, radix) {
-  assertString(str);
-  return parseInt(str, radix || 10);
-}
Index: ckend/node_modules/validator/es/lib/trim.js
===================================================================
--- backend/node_modules/validator/es/lib/trim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import rtrim from './rtrim';
-import ltrim from './ltrim';
-export default function trim(str, chars) {
-  return rtrim(ltrim(str, chars), chars);
-}
Index: ckend/node_modules/validator/es/lib/unescape.js
===================================================================
--- backend/node_modules/validator/es/lib/unescape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-import assertString from './util/assertString';
-export default function unescape(str) {
-  assertString(str);
-  return str.replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#x2F;/g, '/').replace(/&#x5C;/g, '\\').replace(/&#96;/g, '`').replace(/&amp;/g, '&');
-  // &amp; replacement has to be the last one to prevent
-  // bugs with intermediate strings containing escape sequences
-  // See: https://github.com/validatorjs/validator.js/issues/1827
-}
Index: ckend/node_modules/validator/es/lib/util/algorithms.js
===================================================================
--- backend/node_modules/validator/es/lib/util/algorithms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,79 +1,0 @@
-/**
- * Algorithmic validation functions
- * May be used as is or implemented in the workflow of other validators.
- */
-
-/*
- * ISO 7064 validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to ISO 7064 (MOD 11, 10).
- */
-export function iso7064Check(str) {
-  var checkvalue = 10;
-  for (var i = 0; i < str.length - 1; i++) {
-    checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;
-  }
-  checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;
-  return checkvalue === parseInt(str[10], 10);
-}
-
-/*
- * Luhn (mod 10) validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to the Luhn algorithm.
- */
-export function luhnCheck(str) {
-  var checksum = 0;
-  var second = false;
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (second) {
-      var product = parseInt(str[i], 10) * 2;
-      if (product > 9) {
-        // sum digits of product and add to checksum
-        checksum += product.toString().split('').map(function (a) {
-          return parseInt(a, 10);
-        }).reduce(function (a, b) {
-          return a + b;
-        }, 0);
-      } else {
-        checksum += product;
-      }
-    } else {
-      checksum += parseInt(str[i], 10);
-    }
-    second = !second;
-  }
-  return checksum % 10 === 0;
-}
-
-/*
- * Reverse TIN multiplication and summation helper function
- * Called with an array of single-digit integers and a base multiplier
- * to calculate the sum of the digits multiplied in reverse.
- * Normally used in variations of MOD 11 algorithmic checks.
- */
-export function reverseMultiplyAndSum(digits, base) {
-  var total = 0;
-  for (var i = 0; i < digits.length; i++) {
-    total += digits[i] * (base - i);
-  }
-  return total;
-}
-
-/*
- * Verhoeff validation helper function
- * Called with a string of numbers
- * to validate according to the Verhoeff algorithm.
- */
-export function verhoeffCheck(str) {
-  var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-  var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-  // Copy (to prevent replacement) and reverse
-  var str_copy = str.split('').reverse().join('');
-  var checksum = 0;
-  for (var i = 0; i < str_copy.length; i++) {
-    checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];
-  }
-  return checksum === 0;
-}
Index: ckend/node_modules/validator/es/lib/util/assertString.js
===================================================================
--- backend/node_modules/validator/es/lib/util/assertString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-export default function assertString(input) {
-  if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
-  if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
-}
Index: ckend/node_modules/validator/es/lib/util/checkHost.js
===================================================================
--- backend/node_modules/validator/es/lib/util/checkHost.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-function isRegExp(obj) {
-  return Object.prototype.toString.call(obj) === '[object RegExp]';
-}
-export default function checkHost(host, matches) {
-  for (var i = 0; i < matches.length; i++) {
-    var match = matches[i];
-    if (host === match || isRegExp(match) && match.test(host)) {
-      return true;
-    }
-  }
-  return false;
-}
Index: ckend/node_modules/validator/es/lib/util/includesArray.js
===================================================================
--- backend/node_modules/validator/es/lib/util/includesArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,6 +1,0 @@
-var includes = function includes(arr, val) {
-  return arr.some(function (arrVal) {
-    return val === arrVal;
-  });
-};
-export default includes;
Index: ckend/node_modules/validator/es/lib/util/includesString.js
===================================================================
--- backend/node_modules/validator/es/lib/util/includesString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,4 +1,0 @@
-var includes = function includes(str, val) {
-  return str.indexOf(val) !== -1;
-};
-export default includes;
Index: ckend/node_modules/validator/es/lib/util/merge.js
===================================================================
--- backend/node_modules/validator/es/lib/util/merge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-export default function merge() {
-  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var defaults = arguments.length > 1 ? arguments[1] : undefined;
-  for (var key in defaults) {
-    if (typeof obj[key] === 'undefined') {
-      obj[key] = defaults[key];
-    }
-  }
-  return obj;
-}
Index: ckend/node_modules/validator/es/lib/util/multilineRegex.js
===================================================================
--- backend/node_modules/validator/es/lib/util/multilineRegex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-/**
- * Build RegExp object from an array
- * of multiple/multi-line regexp parts
- *
- * @param {string[]} parts
- * @param {string} flags
- * @return {object} - RegExp object
- */
-export default function multilineRegexp(parts, flags) {
-  var regexpAsStringLiteral = parts.join('');
-  return new RegExp(regexpAsStringLiteral, flags);
-}
Index: ckend/node_modules/validator/es/lib/util/nullUndefinedCheck.js
===================================================================
--- backend/node_modules/validator/es/lib/util/nullUndefinedCheck.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,3 +1,0 @@
-export default function isNullOrUndefined(value) {
-  return value === null || value === undefined;
-}
Index: ckend/node_modules/validator/es/lib/util/toString.js
===================================================================
--- backend/node_modules/validator/es/lib/util/toString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,13 +1,0 @@
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-export default function toString(input) {
-  if (_typeof(input) === 'object' && input !== null) {
-    if (typeof input.toString === 'function') {
-      input = input.toString();
-    } else {
-      input = '[object Object]';
-    }
-  } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {
-    input = '';
-  }
-  return String(input);
-}
Index: ckend/node_modules/validator/es/lib/util/typeOf.js
===================================================================
--- backend/node_modules/validator/es/lib/util/typeOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,10 +1,0 @@
-/**
- * Better way to handle type checking
- * null, {}, array and date are objects, which confuses
- */
-export default function typeOf(input) {
-  var rawObject = Object.prototype.toString.call(input).toLowerCase();
-  var typeOfRegex = /\[object (.*)]/g;
-  var type = typeOfRegex.exec(rawObject)[1];
-  return type;
-}
Index: ckend/node_modules/validator/es/lib/whitelist.js
===================================================================
--- backend/node_modules/validator/es/lib/whitelist.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5 +1,0 @@
-import assertString from './util/assertString';
-export default function whitelist(str, chars) {
-  assertString(str);
-  return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), '');
-}
Index: ckend/node_modules/validator/index.js
===================================================================
--- backend/node_modules/validator/index.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,229 +1,0 @@
-"use strict";
-
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _toDate = _interopRequireDefault(require("./lib/toDate"));
-var _toFloat = _interopRequireDefault(require("./lib/toFloat"));
-var _toInt = _interopRequireDefault(require("./lib/toInt"));
-var _toBoolean = _interopRequireDefault(require("./lib/toBoolean"));
-var _equals = _interopRequireDefault(require("./lib/equals"));
-var _contains = _interopRequireDefault(require("./lib/contains"));
-var _matches = _interopRequireDefault(require("./lib/matches"));
-var _isEmail = _interopRequireDefault(require("./lib/isEmail"));
-var _isURL = _interopRequireDefault(require("./lib/isURL"));
-var _isMACAddress = _interopRequireDefault(require("./lib/isMACAddress"));
-var _isIP = _interopRequireDefault(require("./lib/isIP"));
-var _isIPRange = _interopRequireDefault(require("./lib/isIPRange"));
-var _isFQDN = _interopRequireDefault(require("./lib/isFQDN"));
-var _isDate = _interopRequireDefault(require("./lib/isDate"));
-var _isTime = _interopRequireDefault(require("./lib/isTime"));
-var _isBoolean = _interopRequireDefault(require("./lib/isBoolean"));
-var _isLocale = _interopRequireDefault(require("./lib/isLocale"));
-var _isAbaRouting = _interopRequireDefault(require("./lib/isAbaRouting"));
-var _isAlpha = _interopRequireWildcard(require("./lib/isAlpha"));
-var _isAlphanumeric = _interopRequireWildcard(require("./lib/isAlphanumeric"));
-var _isNumeric = _interopRequireDefault(require("./lib/isNumeric"));
-var _isPassportNumber = _interopRequireWildcard(require("./lib/isPassportNumber"));
-var _isPort = _interopRequireDefault(require("./lib/isPort"));
-var _isLowercase = _interopRequireDefault(require("./lib/isLowercase"));
-var _isUppercase = _interopRequireDefault(require("./lib/isUppercase"));
-var _isIMEI = _interopRequireDefault(require("./lib/isIMEI"));
-var _isAscii = _interopRequireDefault(require("./lib/isAscii"));
-var _isFullWidth = _interopRequireDefault(require("./lib/isFullWidth"));
-var _isHalfWidth = _interopRequireDefault(require("./lib/isHalfWidth"));
-var _isVariableWidth = _interopRequireDefault(require("./lib/isVariableWidth"));
-var _isMultibyte = _interopRequireDefault(require("./lib/isMultibyte"));
-var _isSemVer = _interopRequireDefault(require("./lib/isSemVer"));
-var _isSurrogatePair = _interopRequireDefault(require("./lib/isSurrogatePair"));
-var _isInt = _interopRequireDefault(require("./lib/isInt"));
-var _isFloat = _interopRequireWildcard(require("./lib/isFloat"));
-var _isDecimal = _interopRequireDefault(require("./lib/isDecimal"));
-var _isHexadecimal = _interopRequireDefault(require("./lib/isHexadecimal"));
-var _isOctal = _interopRequireDefault(require("./lib/isOctal"));
-var _isDivisibleBy = _interopRequireDefault(require("./lib/isDivisibleBy"));
-var _isHexColor = _interopRequireDefault(require("./lib/isHexColor"));
-var _isRgbColor = _interopRequireDefault(require("./lib/isRgbColor"));
-var _isHSL = _interopRequireDefault(require("./lib/isHSL"));
-var _isISRC = _interopRequireDefault(require("./lib/isISRC"));
-var _isIBAN = _interopRequireWildcard(require("./lib/isIBAN"));
-var _isBIC = _interopRequireDefault(require("./lib/isBIC"));
-var _isMD = _interopRequireDefault(require("./lib/isMD5"));
-var _isHash = _interopRequireDefault(require("./lib/isHash"));
-var _isJWT = _interopRequireDefault(require("./lib/isJWT"));
-var _isJSON = _interopRequireDefault(require("./lib/isJSON"));
-var _isEmpty = _interopRequireDefault(require("./lib/isEmpty"));
-var _isLength = _interopRequireDefault(require("./lib/isLength"));
-var _isByteLength = _interopRequireDefault(require("./lib/isByteLength"));
-var _isULID = _interopRequireDefault(require("./lib/isULID"));
-var _isUUID = _interopRequireDefault(require("./lib/isUUID"));
-var _isMongoId = _interopRequireDefault(require("./lib/isMongoId"));
-var _isAfter = _interopRequireDefault(require("./lib/isAfter"));
-var _isBefore = _interopRequireDefault(require("./lib/isBefore"));
-var _isIn = _interopRequireDefault(require("./lib/isIn"));
-var _isLuhnNumber = _interopRequireDefault(require("./lib/isLuhnNumber"));
-var _isCreditCard = _interopRequireDefault(require("./lib/isCreditCard"));
-var _isIdentityCard = _interopRequireDefault(require("./lib/isIdentityCard"));
-var _isEAN = _interopRequireDefault(require("./lib/isEAN"));
-var _isISIN = _interopRequireDefault(require("./lib/isISIN"));
-var _isISBN = _interopRequireDefault(require("./lib/isISBN"));
-var _isISSN = _interopRequireDefault(require("./lib/isISSN"));
-var _isTaxID = _interopRequireDefault(require("./lib/isTaxID"));
-var _isMobilePhone = _interopRequireWildcard(require("./lib/isMobilePhone"));
-var _isEthereumAddress = _interopRequireDefault(require("./lib/isEthereumAddress"));
-var _isCurrency = _interopRequireDefault(require("./lib/isCurrency"));
-var _isBtcAddress = _interopRequireDefault(require("./lib/isBtcAddress"));
-var _isISO = require("./lib/isISO6346");
-var _isISO2 = _interopRequireDefault(require("./lib/isISO6391"));
-var _isISO3 = _interopRequireDefault(require("./lib/isISO8601"));
-var _isRFC = _interopRequireDefault(require("./lib/isRFC3339"));
-var _isISO4 = _interopRequireDefault(require("./lib/isISO15924"));
-var _isISO31661Alpha = _interopRequireDefault(require("./lib/isISO31661Alpha2"));
-var _isISO31661Alpha2 = _interopRequireDefault(require("./lib/isISO31661Alpha3"));
-var _isISO31661Numeric = _interopRequireDefault(require("./lib/isISO31661Numeric"));
-var _isISO5 = _interopRequireDefault(require("./lib/isISO4217"));
-var _isBase = _interopRequireDefault(require("./lib/isBase32"));
-var _isBase2 = _interopRequireDefault(require("./lib/isBase58"));
-var _isBase3 = _interopRequireDefault(require("./lib/isBase64"));
-var _isDataURI = _interopRequireDefault(require("./lib/isDataURI"));
-var _isMagnetURI = _interopRequireDefault(require("./lib/isMagnetURI"));
-var _isMailtoURI = _interopRequireDefault(require("./lib/isMailtoURI"));
-var _isMimeType = _interopRequireDefault(require("./lib/isMimeType"));
-var _isLatLong = _interopRequireDefault(require("./lib/isLatLong"));
-var _isPostalCode = _interopRequireWildcard(require("./lib/isPostalCode"));
-var _ltrim = _interopRequireDefault(require("./lib/ltrim"));
-var _rtrim = _interopRequireDefault(require("./lib/rtrim"));
-var _trim = _interopRequireDefault(require("./lib/trim"));
-var _escape = _interopRequireDefault(require("./lib/escape"));
-var _unescape = _interopRequireDefault(require("./lib/unescape"));
-var _stripLow = _interopRequireDefault(require("./lib/stripLow"));
-var _whitelist = _interopRequireDefault(require("./lib/whitelist"));
-var _blacklist = _interopRequireDefault(require("./lib/blacklist"));
-var _isWhitelisted = _interopRequireDefault(require("./lib/isWhitelisted"));
-var _normalizeEmail = _interopRequireDefault(require("./lib/normalizeEmail"));
-var _isSlug = _interopRequireDefault(require("./lib/isSlug"));
-var _isLicensePlate = _interopRequireDefault(require("./lib/isLicensePlate"));
-var _isStrongPassword = _interopRequireDefault(require("./lib/isStrongPassword"));
-var _isVAT = _interopRequireDefault(require("./lib/isVAT"));
-function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var version = '13.15.15';
-var validator = {
-  version: version,
-  toDate: _toDate.default,
-  toFloat: _toFloat.default,
-  toInt: _toInt.default,
-  toBoolean: _toBoolean.default,
-  equals: _equals.default,
-  contains: _contains.default,
-  matches: _matches.default,
-  isEmail: _isEmail.default,
-  isURL: _isURL.default,
-  isMACAddress: _isMACAddress.default,
-  isIP: _isIP.default,
-  isIPRange: _isIPRange.default,
-  isFQDN: _isFQDN.default,
-  isBoolean: _isBoolean.default,
-  isIBAN: _isIBAN.default,
-  isBIC: _isBIC.default,
-  isAbaRouting: _isAbaRouting.default,
-  isAlpha: _isAlpha.default,
-  isAlphaLocales: _isAlpha.locales,
-  isAlphanumeric: _isAlphanumeric.default,
-  isAlphanumericLocales: _isAlphanumeric.locales,
-  isNumeric: _isNumeric.default,
-  isPassportNumber: _isPassportNumber.default,
-  passportNumberLocales: _isPassportNumber.locales,
-  isPort: _isPort.default,
-  isLowercase: _isLowercase.default,
-  isUppercase: _isUppercase.default,
-  isAscii: _isAscii.default,
-  isFullWidth: _isFullWidth.default,
-  isHalfWidth: _isHalfWidth.default,
-  isVariableWidth: _isVariableWidth.default,
-  isMultibyte: _isMultibyte.default,
-  isSemVer: _isSemVer.default,
-  isSurrogatePair: _isSurrogatePair.default,
-  isInt: _isInt.default,
-  isIMEI: _isIMEI.default,
-  isFloat: _isFloat.default,
-  isFloatLocales: _isFloat.locales,
-  isDecimal: _isDecimal.default,
-  isHexadecimal: _isHexadecimal.default,
-  isOctal: _isOctal.default,
-  isDivisibleBy: _isDivisibleBy.default,
-  isHexColor: _isHexColor.default,
-  isRgbColor: _isRgbColor.default,
-  isHSL: _isHSL.default,
-  isISRC: _isISRC.default,
-  isMD5: _isMD.default,
-  isHash: _isHash.default,
-  isJWT: _isJWT.default,
-  isJSON: _isJSON.default,
-  isEmpty: _isEmpty.default,
-  isLength: _isLength.default,
-  isLocale: _isLocale.default,
-  isByteLength: _isByteLength.default,
-  isULID: _isULID.default,
-  isUUID: _isUUID.default,
-  isMongoId: _isMongoId.default,
-  isAfter: _isAfter.default,
-  isBefore: _isBefore.default,
-  isIn: _isIn.default,
-  isLuhnNumber: _isLuhnNumber.default,
-  isCreditCard: _isCreditCard.default,
-  isIdentityCard: _isIdentityCard.default,
-  isEAN: _isEAN.default,
-  isISIN: _isISIN.default,
-  isISBN: _isISBN.default,
-  isISSN: _isISSN.default,
-  isMobilePhone: _isMobilePhone.default,
-  isMobilePhoneLocales: _isMobilePhone.locales,
-  isPostalCode: _isPostalCode.default,
-  isPostalCodeLocales: _isPostalCode.locales,
-  isEthereumAddress: _isEthereumAddress.default,
-  isCurrency: _isCurrency.default,
-  isBtcAddress: _isBtcAddress.default,
-  isISO6346: _isISO.isISO6346,
-  isFreightContainerID: _isISO.isFreightContainerID,
-  isISO6391: _isISO2.default,
-  isISO8601: _isISO3.default,
-  isISO15924: _isISO4.default,
-  isRFC3339: _isRFC.default,
-  isISO31661Alpha2: _isISO31661Alpha.default,
-  isISO31661Alpha3: _isISO31661Alpha2.default,
-  isISO31661Numeric: _isISO31661Numeric.default,
-  isISO4217: _isISO5.default,
-  isBase32: _isBase.default,
-  isBase58: _isBase2.default,
-  isBase64: _isBase3.default,
-  isDataURI: _isDataURI.default,
-  isMagnetURI: _isMagnetURI.default,
-  isMailtoURI: _isMailtoURI.default,
-  isMimeType: _isMimeType.default,
-  isLatLong: _isLatLong.default,
-  ltrim: _ltrim.default,
-  rtrim: _rtrim.default,
-  trim: _trim.default,
-  escape: _escape.default,
-  unescape: _unescape.default,
-  stripLow: _stripLow.default,
-  whitelist: _whitelist.default,
-  blacklist: _blacklist.default,
-  isWhitelisted: _isWhitelisted.default,
-  normalizeEmail: _normalizeEmail.default,
-  toString: toString,
-  isSlug: _isSlug.default,
-  isStrongPassword: _isStrongPassword.default,
-  isTaxID: _isTaxID.default,
-  isDate: _isDate.default,
-  isTime: _isTime.default,
-  isLicensePlate: _isLicensePlate.default,
-  isVAT: _isVAT.default,
-  ibanLocales: _isIBAN.locales
-};
-var _default = exports.default = validator;
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/alpha.js
===================================================================
--- backend/node_modules/validator/lib/alpha.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,143 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.farsiLocales = exports.englishLocales = exports.dotDecimal = exports.decimal = exports.commaDecimal = exports.bengaliLocales = exports.arabicLocales = exports.alphanumeric = exports.alpha = void 0;
-var alpha = exports.alpha = {
-  'en-US': /^[A-Z]+$/i,
-  'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[А-Я]+$/i,
-  'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[A-ZÆØÅ]+$/i,
-  'de-DE': /^[A-ZÄÖÜß]+$/i,
-  'el-GR': /^[Α-ώ]+$/i,
-  'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,
-  'fi-FI': /^[A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'nb-NO': /^[A-ZÆØÅ]+$/i,
-  'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[A-ZÆØÅ]+$/i,
-  'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[А-ЯЁ]+$/i,
-  'kk-KZ': /^[А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๐\s]+$/i,
-  'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,
-  'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  'ko-KR': /^[ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[א-ת]+$/,
-  fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i,
-  'si-LK': /^[\u0D80-\u0DFF]+$/
-};
-var alphanumeric = exports.alphanumeric = {
-  'en-US': /^[0-9A-Z]+$/i,
-  'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[0-9А-Я]+$/i,
-  'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[0-9A-ZÆØÅ]+$/i,
-  'de-DE': /^[0-9A-ZÄÖÜß]+$/i,
-  'el-GR': /^[0-9Α-ω]+$/i,
-  'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[0-9０-９ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'nb-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[0-9А-ЯЁ]+$/i,
-  'kk-KZ': /^[0-9А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๙\s]+$/i,
-  'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,
-  'ko-KR': /^[0-9ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[0-9א-ת]+$/,
-  fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[0-9ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i,
-  'si-LK': /^[0-9\u0D80-\u0DFF]+$/
-};
-var decimal = exports.decimal = {
-  'en-US': '.',
-  ar: '٫'
-};
-var englishLocales = exports.englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];
-for (var locale, i = 0; i < englishLocales.length; i++) {
-  locale = "en-".concat(englishLocales[i]);
-  alpha[locale] = alpha['en-US'];
-  alphanumeric[locale] = alphanumeric['en-US'];
-  decimal[locale] = decimal['en-US'];
-}
-
-// Source: http://www.localeplanet.com/java/
-var arabicLocales = exports.arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];
-for (var _locale, _i = 0; _i < arabicLocales.length; _i++) {
-  _locale = "ar-".concat(arabicLocales[_i]);
-  alpha[_locale] = alpha.ar;
-  alphanumeric[_locale] = alphanumeric.ar;
-  decimal[_locale] = decimal.ar;
-}
-var farsiLocales = exports.farsiLocales = ['IR', 'AF'];
-for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {
-  _locale2 = "fa-".concat(farsiLocales[_i2]);
-  alphanumeric[_locale2] = alphanumeric.fa;
-  decimal[_locale2] = decimal.ar;
-}
-var bengaliLocales = exports.bengaliLocales = ['BD', 'IN'];
-for (var _locale3, _i3 = 0; _i3 < bengaliLocales.length; _i3++) {
-  _locale3 = "bn-".concat(bengaliLocales[_i3]);
-  alpha[_locale3] = alpha.bn;
-  alphanumeric[_locale3] = alphanumeric.bn;
-  decimal[_locale3] = decimal['en-US'];
-}
-
-// Source: https://en.wikipedia.org/wiki/Decimal_mark
-var dotDecimal = exports.dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];
-var commaDecimal = exports.commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'kk-KZ', 'si-LK', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];
-for (var _i4 = 0; _i4 < dotDecimal.length; _i4++) {
-  decimal[dotDecimal[_i4]] = decimal['en-US'];
-}
-for (var _i5 = 0; _i5 < commaDecimal.length; _i5++) {
-  decimal[commaDecimal[_i5]] = ',';
-}
-alpha['fr-CA'] = alpha['fr-FR'];
-alphanumeric['fr-CA'] = alphanumeric['fr-FR'];
-alpha['pt-BR'] = alpha['pt-PT'];
-alphanumeric['pt-BR'] = alphanumeric['pt-PT'];
-decimal['pt-BR'] = decimal['pt-PT'];
-
-// see #862
-alpha['pl-Pl'] = alpha['pl-PL'];
-alphanumeric['pl-Pl'] = alphanumeric['pl-PL'];
-decimal['pl-Pl'] = decimal['pl-PL'];
-
-// see #1455
-alpha['fa-AF'] = alpha.fa;
Index: ckend/node_modules/validator/lib/blacklist.js
===================================================================
--- backend/node_modules/validator/lib/blacklist.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = blacklist;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function blacklist(str, chars) {
-  (0, _assertString.default)(str);
-  return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), '');
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/contains.js
===================================================================
--- backend/node_modules/validator/lib/contains.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = contains;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _toString = _interopRequireDefault(require("./util/toString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var defaultContainsOptions = {
-  ignoreCase: false,
-  minOccurrences: 1
-};
-function contains(str, elem, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, defaultContainsOptions);
-  if (options.ignoreCase) {
-    return str.toLowerCase().split((0, _toString.default)(elem).toLowerCase()).length > options.minOccurrences;
-  }
-  return str.split((0, _toString.default)(elem)).length > options.minOccurrences;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/equals.js
===================================================================
--- backend/node_modules/validator/lib/equals.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = equals;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function equals(str, comparison) {
-  (0, _assertString.default)(str);
-  return str === comparison;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/escape.js
===================================================================
--- backend/node_modules/validator/lib/escape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = escape;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function escape(str) {
-  (0, _assertString.default)(str);
-  return str.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\//g, '&#x2F;').replace(/\\/g, '&#x5C;').replace(/`/g, '&#96;');
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isAbaRouting.js
===================================================================
--- backend/node_modules/validator/lib/isAbaRouting.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isAbaRouting;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// http://www.brainjar.com/js/validation/
-// https://www.aba.com/news-research/research-analysis/routing-number-policy-procedures
-// series reserved for future use are excluded
-var isRoutingReg = /^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;
-function isAbaRouting(str) {
-  (0, _assertString.default)(str);
-  if (!isRoutingReg.test(str)) return false;
-  var checkSumVal = 0;
-  for (var i = 0; i < str.length; i++) {
-    if (i % 3 === 0) checkSumVal += str[i] * 3;else if (i % 3 === 1) checkSumVal += str[i] * 7;else checkSumVal += str[i] * 1;
-  }
-  return checkSumVal % 10 === 0;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isAfter.js
===================================================================
--- backend/node_modules/validator/lib/isAfter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isAfter;
-var _toDate = _interopRequireDefault(require("./toDate"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-function isAfter(date, options) {
-  // For backwards compatibility:
-  // isAfter(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = (0, _toDate.default)(comparisonDate);
-  var original = (0, _toDate.default)(date);
-  return !!(original && comparison && original > comparison);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isAlpha.js
===================================================================
--- backend/node_modules/validator/lib/isAlpha.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isAlpha;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _alpha = require("./alpha");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isAlpha(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  (0, _assertString.default)(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in _alpha.alpha) {
-    return _alpha.alpha[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales = exports.locales = Object.keys(_alpha.alpha);
Index: ckend/node_modules/validator/lib/isAlphanumeric.js
===================================================================
--- backend/node_modules/validator/lib/isAlphanumeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isAlphanumeric;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _alpha = require("./alpha");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isAlphanumeric(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  (0, _assertString.default)(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in _alpha.alphanumeric) {
-    return _alpha.alphanumeric[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales = exports.locales = Object.keys(_alpha.alphanumeric);
Index: ckend/node_modules/validator/lib/isAscii.js
===================================================================
--- backend/node_modules/validator/lib/isAscii.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isAscii;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/* eslint-disable no-control-regex */
-var ascii = /^[\x00-\x7F]+$/;
-/* eslint-enable no-control-regex */
-
-function isAscii(str) {
-  (0, _assertString.default)(str);
-  return ascii.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBIC.js
===================================================================
--- backend/node_modules/validator/lib/isBIC.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBIC;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isISO31661Alpha = require("./isISO31661Alpha2");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// https://en.wikipedia.org/wiki/ISO_9362
-var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;
-function isBIC(str) {
-  (0, _assertString.default)(str);
-
-  // toUpperCase() should be removed when a new major version goes out that changes
-  // the regex to [A-Z] (per the spec).
-  var countryCode = str.slice(4, 6).toUpperCase();
-  if (!_isISO31661Alpha.CountryCodes.has(countryCode) && countryCode !== 'XK') {
-    return false;
-  }
-  return isBICReg.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBase32.js
===================================================================
--- backend/node_modules/validator/lib/isBase32.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBase32;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var base32 = /^[A-Z2-7]+=*$/;
-var crockfordBase32 = /^[A-HJKMNP-TV-Z0-9]+$/;
-var defaultBase32Options = {
-  crockford: false
-};
-function isBase32(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, defaultBase32Options);
-  if (options.crockford) {
-    return crockfordBase32.test(str);
-  }
-  var len = str.length;
-  if (len % 8 === 0 && base32.test(str)) {
-    return true;
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBase58.js
===================================================================
--- backend/node_modules/validator/lib/isBase58.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBase58;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz
-var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/;
-function isBase58(str) {
-  (0, _assertString.default)(str);
-  if (base58Reg.test(str)) {
-    return true;
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBase64.js
===================================================================
--- backend/node_modules/validator/lib/isBase64.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBase64;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var base64WithPadding = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/;
-var base64WithoutPadding = /^[A-Za-z0-9+/]+$/;
-var base64UrlWithPadding = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}==|[A-Za-z0-9_-]{3}=|[A-Za-z0-9_-]{4})$/;
-var base64UrlWithoutPadding = /^[A-Za-z0-9_-]+$/;
-function isBase64(str, options) {
-  var _options;
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, {
-    urlSafe: false,
-    padding: !((_options = options) !== null && _options !== void 0 && _options.urlSafe)
-  });
-  if (str === '') return true;
-  var regex;
-  if (options.urlSafe) {
-    regex = options.padding ? base64UrlWithPadding : base64UrlWithoutPadding;
-  } else {
-    regex = options.padding ? base64WithPadding : base64WithoutPadding;
-  }
-  return (!options.padding || str.length % 4 === 0) && regex.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBefore.js
===================================================================
--- backend/node_modules/validator/lib/isBefore.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBefore;
-var _toDate = _interopRequireDefault(require("./toDate"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-function isBefore(date, options) {
-  // For backwards compatibility:
-  // isBefore(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = (0, _toDate.default)(comparisonDate);
-  var original = (0, _toDate.default)(date);
-  return !!(original && comparison && original < comparison);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBoolean.js
===================================================================
--- backend/node_modules/validator/lib/isBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBoolean;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _includesArray = _interopRequireDefault(require("./util/includesArray"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var defaultOptions = {
-  loose: false
-};
-var strictBooleans = ['true', 'false', '1', '0'];
-var looseBooleans = [].concat(strictBooleans, ['yes', 'no']);
-function isBoolean(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
-  (0, _assertString.default)(str);
-  if (options.loose) {
-    return (0, _includesArray.default)(looseBooleans, str.toLowerCase());
-  }
-  return (0, _includesArray.default)(strictBooleans, str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isBtcAddress.js
===================================================================
--- backend/node_modules/validator/lib/isBtcAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isBtcAddress;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var bech32 = /^(bc1|tb1|bc1p|tb1p)[ac-hj-np-z02-9]{39,58}$/;
-var base58 = /^(1|2|3|m)[A-HJ-NP-Za-km-z1-9]{25,39}$/;
-function isBtcAddress(str) {
-  (0, _assertString.default)(str);
-  return bech32.test(str) || base58.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isByteLength.js
===================================================================
--- backend/node_modules/validator/lib/isByteLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,27 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isByteLength;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-/* eslint-disable prefer-rest-params */
-function isByteLength(str, options) {
-  (0, _assertString.default)(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isByteLength(str, min [, max])
-    min = arguments[1];
-    max = arguments[2];
-  }
-  var len = encodeURI(str).split(/%..|./).length - 1;
-  return len >= min && (typeof max === 'undefined' || len <= max);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isCreditCard.js
===================================================================
--- backend/node_modules/validator/lib/isCreditCard.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,52 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isCreditCard;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isLuhnNumber = _interopRequireDefault(require("./isLuhnNumber"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var cards = {
-  amex: /^3[47][0-9]{13}$/,
-  dinersclub: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
-  discover: /^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,
-  jcb: /^(?:2131|1800|35\d{3})\d{11}$/,
-  mastercard: /^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,
-  // /^[25][1-7][0-9]{14}$/;
-  unionpay: /^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,
-  visa: /^(?:4[0-9]{12})(?:[0-9]{3,6})?$/
-};
-var allCards = function () {
-  var tmpCardsArray = [];
-  for (var cardProvider in cards) {
-    // istanbul ignore else
-    if (cards.hasOwnProperty(cardProvider)) {
-      tmpCardsArray.push(cards[cardProvider]);
-    }
-  }
-  return tmpCardsArray;
-}();
-function isCreditCard(card) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  (0, _assertString.default)(card);
-  var provider = options.provider;
-  var sanitized = card.replace(/[- ]+/g, '');
-  if (provider && provider.toLowerCase() in cards) {
-    // specific provider in the list
-    if (!cards[provider.toLowerCase()].test(sanitized)) {
-      return false;
-    }
-  } else if (provider && !(provider.toLowerCase() in cards)) {
-    /* specific provider not in the list */
-    throw new Error("".concat(provider, " is not a valid credit card provider."));
-  } else if (!allCards.some(function (cardProvider) {
-    return cardProvider.test(sanitized);
-  })) {
-    // no specific provider
-    return false;
-  }
-  return (0, _isLuhnNumber.default)(card);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isCurrency.js
===================================================================
--- backend/node_modules/validator/lib/isCurrency.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,83 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isCurrency;
-var _merge = _interopRequireDefault(require("./util/merge"));
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function currencyRegex(options) {
-  var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}");
-  options.digits_after_decimal.forEach(function (digit, index) {
-    if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}");
-  });
-  var symbol = "(".concat(options.symbol.replace(/\W/, function (m) {
-      return "\\".concat(m);
-    }), ")").concat(options.require_symbol ? '' : '?'),
-    negative = '-?',
-    whole_dollar_amount_without_sep = '[1-9]\\d*',
-    whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"),
-    valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],
-    whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"),
-    decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?');
-  var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');
-
-  // default is negative sign before symbol, but there are two other options (besides parens)
-  if (options.allow_negatives && !options.parens_for_negatives) {
-    if (options.negative_sign_after_digits) {
-      pattern += negative;
-    } else if (options.negative_sign_before_digits) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // South African Rand, for example, uses R 123 (space) and R-123 (no space)
-  if (options.allow_negative_sign_placeholder) {
-    pattern = "( (?!\\-))?".concat(pattern);
-  } else if (options.allow_space_after_symbol) {
-    pattern = " ?".concat(pattern);
-  } else if (options.allow_space_after_digits) {
-    pattern += '( (?!$))?';
-  }
-  if (options.symbol_after_digits) {
-    pattern += symbol;
-  } else {
-    pattern = symbol + pattern;
-  }
-  if (options.allow_negatives) {
-    if (options.parens_for_negatives) {
-      pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")");
-    } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // ensure there's a dollar and/or decimal amount, and that
-  // it doesn't start with a space or a negative sign followed by a space
-  return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$"));
-}
-var default_currency_options = {
-  symbol: '$',
-  require_symbol: false,
-  allow_space_after_symbol: false,
-  symbol_after_digits: false,
-  allow_negatives: true,
-  parens_for_negatives: false,
-  negative_sign_before_digits: false,
-  negative_sign_after_digits: false,
-  allow_negative_sign_placeholder: false,
-  thousands_separator: ',',
-  decimal_separator: '.',
-  allow_decimal: true,
-  require_decimal: false,
-  digits_after_decimal: [2],
-  allow_space_after_digits: false
-};
-function isCurrency(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, default_currency_options);
-  return currencyRegex(options).test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isDataURI.js
===================================================================
--- backend/node_modules/validator/lib/isDataURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,40 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isDataURI;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var validMediaType = /^[a-z]+\/[a-z0-9\-\+\._]+$/i;
-var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i;
-var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i;
-function isDataURI(str) {
-  (0, _assertString.default)(str);
-  var data = str.split(',');
-  if (data.length < 2) {
-    return false;
-  }
-  var attributes = data.shift().trim().split(';');
-  var schemeAndMediaType = attributes.shift();
-  if (schemeAndMediaType.slice(0, 5) !== 'data:') {
-    return false;
-  }
-  var mediaType = schemeAndMediaType.slice(5);
-  if (mediaType !== '' && !validMediaType.test(mediaType)) {
-    return false;
-  }
-  for (var i = 0; i < attributes.length; i++) {
-    if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {
-      return false;
-    }
-  }
-  for (var _i = 0; _i < data.length; _i++) {
-    if (!validData.test(data[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isDate.js
===================================================================
--- backend/node_modules/validator/lib/isDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,102 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isDate;
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-var default_date_options = {
-  format: 'YYYY/MM/DD',
-  delimiters: ['/', '-'],
-  strictMode: false
-};
-function isValidFormat(format) {
-  return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format);
-}
-function zip(date, format) {
-  var zippedArr = [],
-    len = Math.max(date.length, format.length);
-  for (var i = 0; i < len; i++) {
-    zippedArr.push([date[i], format[i]]);
-  }
-  return zippedArr;
-}
-function isDate(input, options) {
-  if (typeof options === 'string') {
-    // Allow backward compatibility for old format isDate(input [, format])
-    options = (0, _merge.default)({
-      format: options
-    }, default_date_options);
-  } else {
-    options = (0, _merge.default)(options, default_date_options);
-  }
-  if (typeof input === 'string' && isValidFormat(options.format)) {
-    if (options.strictMode && input.length !== options.format.length) return false;
-    var formatDelimiter = options.delimiters.find(function (delimiter) {
-      return options.format.indexOf(delimiter) !== -1;
-    });
-    var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {
-      return input.indexOf(delimiter) !== -1;
-    });
-    var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));
-    var dateObj = {};
-    var _iterator = _createForOfIteratorHelper(dateAndFormat),
-      _step;
-    try {
-      for (_iterator.s(); !(_step = _iterator.n()).done;) {
-        var _step$value = _slicedToArray(_step.value, 2),
-          dateWord = _step$value[0],
-          formatWord = _step$value[1];
-        if (!dateWord || !formatWord || dateWord.length !== formatWord.length) {
-          return false;
-        }
-        dateObj[formatWord.charAt(0)] = dateWord;
-      }
-    } catch (err) {
-      _iterator.e(err);
-    } finally {
-      _iterator.f();
-    }
-    var fullYear = dateObj.y;
-
-    // Check if the year starts with a hyphen
-    if (fullYear.startsWith('-')) {
-      return false; // Hyphen before year is not allowed
-    }
-    if (dateObj.y.length === 2) {
-      var parsedYear = parseInt(dateObj.y, 10);
-      if (isNaN(parsedYear)) {
-        return false;
-      }
-      var currentYearLastTwoDigits = new Date().getFullYear() % 100;
-      if (parsedYear < currentYearLastTwoDigits) {
-        fullYear = "20".concat(dateObj.y);
-      } else {
-        fullYear = "19".concat(dateObj.y);
-      }
-    }
-    var month = dateObj.m;
-    if (dateObj.m.length === 1) {
-      month = "0".concat(dateObj.m);
-    }
-    var day = dateObj.d;
-    if (dateObj.d.length === 1) {
-      day = "0".concat(dateObj.d);
-    }
-    return new Date("".concat(fullYear, "-").concat(month, "-").concat(day, "T00:00:00.000Z")).getUTCDate() === +dateObj.d;
-  }
-  if (!options.strictMode) {
-    return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isDecimal.js
===================================================================
--- backend/node_modules/validator/lib/isDecimal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isDecimal;
-var _merge = _interopRequireDefault(require("./util/merge"));
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _includesArray = _interopRequireDefault(require("./util/includesArray"));
-var _alpha = require("./alpha");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function decimalRegExp(options) {
-  var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(_alpha.decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$"));
-  return regExp;
-}
-var default_decimal_options = {
-  force_decimal: false,
-  decimal_digits: '1,',
-  locale: 'en-US'
-};
-var blacklist = ['', '-', '+'];
-function isDecimal(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, default_decimal_options);
-  if (options.locale in _alpha.decimal) {
-    return !(0, _includesArray.default)(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);
-  }
-  throw new Error("Invalid locale '".concat(options.locale, "'"));
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isDivisibleBy.js
===================================================================
--- backend/node_modules/validator/lib/isDivisibleBy.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isDivisibleBy;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _toFloat = _interopRequireDefault(require("./toFloat"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isDivisibleBy(str, num) {
-  (0, _assertString.default)(str);
-  return (0, _toFloat.default)(str) % parseInt(num, 10) === 0;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isEAN.js
===================================================================
--- backend/node_modules/validator/lib/isEAN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,78 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isEAN;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/**
- * The most commonly used EAN standard is
- * the thirteen-digit EAN-13, while the
- * less commonly used 8-digit EAN-8 barcode was
- * introduced for use on small packages.
- * Also EAN/UCC-14 is used for Grouping of individual
- * trade items above unit level(Intermediate, Carton or Pallet).
- * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/
- * EAN consists of:
- * GS1 prefix, manufacturer code, product code and check digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number
- * Reference: https://www.gtin.info/
- */
-
-/**
- * Define EAN Lengths; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14
- * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),
- * with exact numeric matching of 8 or 13 or 14 digits [0-9]
- */
-var LENGTH_EAN_8 = 8;
-var LENGTH_EAN_14 = 14;
-var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/;
-
-/**
- * Get position weight given:
- * EAN length and digit index/position
- *
- * @param {number} length
- * @param {number} index
- * @return {number}
- */
-function getPositionWeightThroughLengthAndIndex(length, index) {
-  if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {
-    return index % 2 === 0 ? 3 : 1;
-  }
-  return index % 2 === 0 ? 1 : 3;
-}
-
-/**
- * Calculate EAN Check Digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit
- *
- * @param {string} ean
- * @return {number}
- */
-function calculateCheckDigit(ean) {
-  var checksum = ean.slice(0, -1).split('').map(function (char, index) {
-    return Number(char) * getPositionWeightThroughLengthAndIndex(ean.length, index);
-  }).reduce(function (acc, partialSum) {
-    return acc + partialSum;
-  }, 0);
-  var remainder = 10 - checksum % 10;
-  return remainder < 10 ? remainder : 0;
-}
-
-/**
- * Check if string is valid EAN:
- * Matches EAN-8/EAN-13/EAN-14 regex
- * Has valid check digit.
- *
- * @param {string} str
- * @return {boolean}
- */
-function isEAN(str) {
-  (0, _assertString.default)(str);
-  var actualCheckDigit = Number(str.slice(-1));
-  return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isEmail.js
===================================================================
--- backend/node_modules/validator/lib/isEmail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,174 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isEmail;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _checkHost = _interopRequireDefault(require("./util/checkHost"));
-var _isByteLength = _interopRequireDefault(require("./isByteLength"));
-var _isFQDN = _interopRequireDefault(require("./isFQDN"));
-var _isIP = _interopRequireDefault(require("./isIP"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var default_email_options = {
-  allow_display_name: false,
-  allow_underscores: false,
-  require_display_name: false,
-  allow_utf8_local_part: true,
-  require_tld: true,
-  blacklisted_chars: '',
-  ignore_max_length: false,
-  host_blacklist: [],
-  host_whitelist: []
-};
-
-/* eslint-disable max-len */
-/* eslint-disable no-control-regex */
-var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
-var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
-var gmailUserPart = /^[a-z\d]+$/;
-var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
-var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
-var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
-var defaultMaxEmailLength = 254;
-/* eslint-enable max-len */
-/* eslint-enable no-control-regex */
-
-/**
- * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2
- * @param {String} display_name
- */
-function validateDisplayName(display_name) {
-  var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1');
-  // display name with only spaces is not valid
-  if (!display_name_without_quotes.trim()) {
-    return false;
-  }
-
-  // check whether display name contains illegal character
-  var contains_illegal = /[\.";<>]/.test(display_name_without_quotes);
-  if (contains_illegal) {
-    // if contains illegal characters,
-    // must to be enclosed in double-quotes, otherwise it's not a valid display name
-    if (display_name_without_quotes === display_name) {
-      return false;
-    }
-
-    // the quotes in display name must start with character symbol \
-    var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length;
-    if (!all_start_with_back_slash) {
-      return false;
-    }
-  }
-  return true;
-}
-function isEmail(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, default_email_options);
-  if (options.require_display_name || options.allow_display_name) {
-    var display_email = str.match(splitNameAddress);
-    if (display_email) {
-      var display_name = display_email[1];
-
-      // Remove display name and angle brackets to get email address
-      // Can be done in the regex but will introduce a ReDOS (See  #1597 for more info)
-      str = str.replace(display_name, '').replace(/(^<|>$)/g, '');
-
-      // sometimes need to trim the last space to get the display name
-      // because there may be a space between display name and email address
-      // eg. myname <address@gmail.com>
-      // the display name is `myname` instead of `myname `, so need to trim the last space
-      if (display_name.endsWith(' ')) {
-        display_name = display_name.slice(0, -1);
-      }
-      if (!validateDisplayName(display_name)) {
-        return false;
-      }
-    } else if (options.require_display_name) {
-      return false;
-    }
-  }
-  if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {
-    return false;
-  }
-  var parts = str.split('@');
-  var domain = parts.pop();
-  var lower_domain = domain.toLowerCase();
-  if (options.host_blacklist.length > 0 && (0, _checkHost.default)(lower_domain, options.host_blacklist)) {
-    return false;
-  }
-  if (options.host_whitelist.length > 0 && !(0, _checkHost.default)(lower_domain, options.host_whitelist)) {
-    return false;
-  }
-  var user = parts.join('@');
-  if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
-    /*
-    Previously we removed dots for gmail addresses before validating.
-    This was removed because it allows `multiple..dots@gmail.com`
-    to be reported as valid, but it is not.
-    Gmail only normalizes single dots, removing them from here is pointless,
-    should be done in normalizeEmail
-    */
-    user = user.toLowerCase();
-
-    // Removing sub-address from username before gmail validation
-    var username = user.split('+')[0];
-
-    // Dots are not included in gmail length restriction
-    if (!(0, _isByteLength.default)(username.replace(/\./g, ''), {
-      min: 6,
-      max: 30
-    })) {
-      return false;
-    }
-    var _user_parts = username.split('.');
-    for (var i = 0; i < _user_parts.length; i++) {
-      if (!gmailUserPart.test(_user_parts[i])) {
-        return false;
-      }
-    }
-  }
-  if (options.ignore_max_length === false && (!(0, _isByteLength.default)(user, {
-    max: 64
-  }) || !(0, _isByteLength.default)(domain, {
-    max: 254
-  }))) {
-    return false;
-  }
-  if (!(0, _isFQDN.default)(domain, {
-    require_tld: options.require_tld,
-    ignore_max_length: options.ignore_max_length,
-    allow_underscores: options.allow_underscores
-  })) {
-    if (!options.allow_ip_domain) {
-      return false;
-    }
-    if (!(0, _isIP.default)(domain)) {
-      if (!domain.startsWith('[') || !domain.endsWith(']')) {
-        return false;
-      }
-      var noBracketdomain = domain.slice(1, -1);
-      if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {
-        return false;
-      }
-    }
-  }
-  if (options.blacklisted_chars) {
-    if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
-  }
-  if (user[0] === '"' && user[user.length - 1] === '"') {
-    user = user.slice(1, user.length - 1);
-    return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);
-  }
-  var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
-  var user_parts = user.split('.');
-  for (var _i = 0; _i < user_parts.length; _i++) {
-    if (!pattern.test(user_parts[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isEmpty.js
===================================================================
--- backend/node_modules/validator/lib/isEmpty.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isEmpty;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var default_is_empty_options = {
-  ignore_whitespace: false
-};
-function isEmpty(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, default_is_empty_options);
-  return (options.ignore_whitespace ? str.trim().length : str.length) === 0;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isEthereumAddress.js
===================================================================
--- backend/node_modules/validator/lib/isEthereumAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isEthereumAddress;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var eth = /^(0x)[0-9a-f]{40}$/i;
-function isEthereumAddress(str) {
-  (0, _assertString.default)(str);
-  return eth.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isFQDN.js
===================================================================
--- backend/node_modules/validator/lib/isFQDN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isFQDN;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var default_fqdn_options = {
-  require_tld: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_numeric_tld: false,
-  allow_wildcard: false,
-  ignore_max_length: false
-};
-function isFQDN(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, default_fqdn_options);
-
-  /* Remove the optional trailing dot before checking validity */
-  if (options.allow_trailing_dot && str[str.length - 1] === '.') {
-    str = str.substring(0, str.length - 1);
-  }
-
-  /* Remove the optional wildcard before checking validity */
-  if (options.allow_wildcard === true && str.indexOf('*.') === 0) {
-    str = str.substring(2);
-  }
-  var parts = str.split('.');
-  var tld = parts[parts.length - 1];
-  if (options.require_tld) {
-    // disallow fqdns without tld
-    if (parts.length < 2) {
-      return false;
-    }
-    if (!options.allow_numeric_tld && !/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {
-      return false;
-    }
-
-    // disallow spaces
-    if (/\s/.test(tld)) {
-      return false;
-    }
-  }
-
-  // reject numeric TLDs
-  if (!options.allow_numeric_tld && /^\d+$/.test(tld)) {
-    return false;
-  }
-  return parts.every(function (part) {
-    if (part.length > 63 && !options.ignore_max_length) {
-      return false;
-    }
-    if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) {
-      return false;
-    }
-
-    // disallow full-width chars
-    if (/[\uff01-\uff5e]/.test(part)) {
-      return false;
-    }
-
-    // disallow parts starting or ending with hyphen
-    if (/^-|-$/.test(part)) {
-      return false;
-    }
-    if (!options.allow_underscores && /_/.test(part)) {
-      return false;
-    }
-    return true;
-  });
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isFloat.js
===================================================================
--- backend/node_modules/validator/lib/isFloat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isFloat;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _nullUndefinedCheck = _interopRequireDefault(require("./util/nullUndefinedCheck"));
-var _alpha = require("./alpha");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isFloat(str, options) {
-  (0, _assertString.default)(str);
-  options = options || {};
-  var float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? _alpha.decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$"));
-  if (str === '' || str === '.' || str === ',' || str === '-' || str === '+') {
-    return false;
-  }
-  var value = parseFloat(str.replace(',', '.'));
-  return float.test(str) && (!options.hasOwnProperty('min') || (0, _nullUndefinedCheck.default)(options.min) || value >= options.min) && (!options.hasOwnProperty('max') || (0, _nullUndefinedCheck.default)(options.max) || value <= options.max) && (!options.hasOwnProperty('lt') || (0, _nullUndefinedCheck.default)(options.lt) || value < options.lt) && (!options.hasOwnProperty('gt') || (0, _nullUndefinedCheck.default)(options.gt) || value > options.gt);
-}
-var locales = exports.locales = Object.keys(_alpha.decimal);
Index: ckend/node_modules/validator/lib/isFullWidth.js
===================================================================
--- backend/node_modules/validator/lib/isFullWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isFullWidth;
-exports.fullWidth = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var fullWidth = exports.fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-function isFullWidth(str) {
-  (0, _assertString.default)(str);
-  return fullWidth.test(str);
-}
Index: ckend/node_modules/validator/lib/isHSL.js
===================================================================
--- backend/node_modules/validator/lib/isHSL.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isHSL;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i;
-var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;
-function isHSL(str) {
-  (0, _assertString.default)(str);
-
-  // Strip duplicate spaces before calling the validation regex (See  #1598 for more info)
-  var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1');
-  if (strippedStr.indexOf(',') !== -1) {
-    return hslComma.test(strippedStr);
-  }
-  return hslSpace.test(strippedStr);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isHalfWidth.js
===================================================================
--- backend/node_modules/validator/lib/isHalfWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isHalfWidth;
-exports.halfWidth = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var halfWidth = exports.halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-function isHalfWidth(str) {
-  (0, _assertString.default)(str);
-  return halfWidth.test(str);
-}
Index: ckend/node_modules/validator/lib/isHash.js
===================================================================
--- backend/node_modules/validator/lib/isHash.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isHash;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var lengths = {
-  md5: 32,
-  md4: 32,
-  sha1: 40,
-  sha256: 64,
-  sha384: 96,
-  sha512: 128,
-  ripemd128: 32,
-  ripemd160: 40,
-  tiger128: 32,
-  tiger160: 40,
-  tiger192: 48,
-  crc32: 8,
-  crc32b: 8
-};
-function isHash(str, algorithm) {
-  (0, _assertString.default)(str);
-  var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$"));
-  return hash.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isHexColor.js
===================================================================
--- backend/node_modules/validator/lib/isHexColor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isHexColor;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;
-function isHexColor(str) {
-  (0, _assertString.default)(str);
-  return hexcolor.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isHexadecimal.js
===================================================================
--- backend/node_modules/validator/lib/isHexadecimal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isHexadecimal;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;
-function isHexadecimal(str) {
-  (0, _assertString.default)(str);
-  return hexadecimal.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isIBAN.js
===================================================================
--- backend/node_modules/validator/lib/isIBAN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,181 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIBAN;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _includesArray = _interopRequireDefault(require("./util/includesArray"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/**
- * List of country codes with
- * corresponding IBAN regular expression
- * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
- */
-var ibanRegexThroughCountryCode = {
-  AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,
-  AE: /^(AE[0-9]{2})\d{3}\d{16}$/,
-  AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  AT: /^(AT[0-9]{2})\d{16}$/,
-  AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  BA: /^(BA[0-9]{2})\d{16}$/,
-  BE: /^(BE[0-9]{2})\d{12}$/,
-  BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,
-  BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,
-  BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,
-  BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  CR: /^(CR[0-9]{2})\d{18}$/,
-  CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  CZ: /^(CZ[0-9]{2})\d{20}$/,
-  DE: /^(DE[0-9]{2})\d{18}$/,
-  DK: /^(DK[0-9]{2})\d{14}$/,
-  DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/,
-  DZ: /^(DZ\d{24})$/,
-  EE: /^(EE[0-9]{2})\d{16}$/,
-  EG: /^(EG[0-9]{2})\d{25}$/,
-  ES: /^(ES[0-9]{2})\d{20}$/,
-  FI: /^(FI[0-9]{2})\d{14}$/,
-  FO: /^(FO[0-9]{2})\d{14}$/,
-  FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/,
-  GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,
-  GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,
-  GL: /^(GL[0-9]{2})\d{14}$/,
-  GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,
-  GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,
-  HR: /^(HR[0-9]{2})\d{17}$/,
-  HU: /^(HU[0-9]{2})\d{24}$/,
-  IE: /^(IE[0-9]{2})[A-Z]{4}\d{14}$/,
-  IL: /^(IL[0-9]{2})\d{19}$/,
-  IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,
-  IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/,
-  IS: /^(IS[0-9]{2})\d{22}$/,
-  IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/,
-  KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,
-  KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,
-  LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,
-  LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  LT: /^(LT[0-9]{2})\d{16}$/,
-  LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,
-  MA: /^(MA[0-9]{26})$/,
-  MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,
-  ME: /^(ME[0-9]{2})\d{18}$/,
-  MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,
-  MR: /^(MR[0-9]{2})\d{23}$/,
-  MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,
-  MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,
-  MZ: /^(MZ[0-9]{2})\d{21}$/,
-  NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/,
-  NO: /^(NO[0-9]{2})\d{11}$/,
-  PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,
-  PL: /^(PL[0-9]{2})\d{24}$/,
-  PS: /^(PS[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  PT: /^(PT[0-9]{2})\d{21}$/,
-  QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,
-  RS: /^(RS[0-9]{2})\d{18}$/,
-  SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,
-  SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,
-  SE: /^(SE[0-9]{2})\d{20}$/,
-  SI: /^(SI[0-9]{2})\d{15}$/,
-  SK: /^(SK[0-9]{2})\d{20}$/,
-  SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  TL: /^(TL[0-9]{2})\d{19}$/,
-  TN: /^(TN[0-9]{2})\d{20}$/,
-  TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,
-  UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,
-  VA: /^(VA[0-9]{2})\d{18}$/,
-  VG: /^(VG[0-9]{2})[A-Z]{4}\d{16}$/,
-  XK: /^(XK[0-9]{2})\d{16}$/
-};
-
-/**
- * Check if the country codes passed are valid using the
- * ibanRegexThroughCountryCode as a reference
- *
- * @param {array} countryCodeArray
- * @return {boolean}
- */
-
-function hasOnlyValidCountryCodes(countryCodeArray) {
-  var countryCodeArrayFilteredWithObjectIbanCode = countryCodeArray.filter(function (countryCode) {
-    return !(countryCode in ibanRegexThroughCountryCode);
-  });
-  if (countryCodeArrayFilteredWithObjectIbanCode.length > 0) {
-    return false;
-  }
-  return true;
-}
-
-/**
- * Check whether string has correct universal IBAN format
- * The IBAN consists of up to 34 alphanumeric characters, as follows:
- * Country Code using ISO 3166-1 alpha-2, two letters
- * check digits, two digits and
- * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.
- * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]
- *
- * @param {string} str - string under validation
- * @param {object} options - object to pass the countries to be either whitelisted or blacklisted
- * @return {boolean}
- */
-function hasValidIbanFormat(str, options) {
-  // Strip white spaces and hyphens
-  var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase();
-  var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();
-  var isoCountryCodeInIbanRegexCodeObject = isoCountryCode in ibanRegexThroughCountryCode;
-  if (options.whitelist) {
-    if (!hasOnlyValidCountryCodes(options.whitelist)) {
-      return false;
-    }
-    var isoCountryCodeInWhiteList = (0, _includesArray.default)(options.whitelist, isoCountryCode);
-    if (!isoCountryCodeInWhiteList) {
-      return false;
-    }
-  }
-  if (options.blacklist) {
-    var isoCountryCodeInBlackList = (0, _includesArray.default)(options.blacklist, isoCountryCode);
-    if (isoCountryCodeInBlackList) {
-      return false;
-    }
-  }
-  return isoCountryCodeInIbanRegexCodeObject && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);
-}
-
-/**
-   * Check whether string has valid IBAN Checksum
-   * by performing basic mod-97 operation and
-   * the remainder should equal 1
-   * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string
-   * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35
-   * -- Interpret the string as a decimal integer and
-   * -- compute the remainder on division by 97 (mod 97)
-   * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
-   *
-   * @param {string} str
-   * @return {boolean}
-   */
-function hasValidIbanChecksum(str) {
-  var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic
-  var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);
-  var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (char) {
-    return char.charCodeAt(0) - 55;
-  });
-  var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) {
-    return Number(acc + value) % 97;
-  }, '');
-  return remainder === 1;
-}
-function isIBAN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  (0, _assertString.default)(str);
-  return hasValidIbanFormat(str, options) && hasValidIbanChecksum(str);
-}
-var locales = exports.locales = Object.keys(ibanRegexThroughCountryCode);
Index: ckend/node_modules/validator/lib/isIMEI.js
===================================================================
--- backend/node_modules/validator/lib/isIMEI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,49 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIMEI;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var imeiRegexWithoutHyphens = /^[0-9]{15}$/;
-var imeiRegexWithHyphens = /^\d{2}-\d{6}-\d{6}-\d{1}$/;
-function isIMEI(str, options) {
-  (0, _assertString.default)(str);
-  options = options || {};
-
-  // default regex for checking imei is the one without hyphens
-
-  var imeiRegex = imeiRegexWithoutHyphens;
-  if (options.allow_hyphens) {
-    imeiRegex = imeiRegexWithHyphens;
-  }
-  if (!imeiRegex.test(str)) {
-    return false;
-  }
-  str = str.replace(/-/g, '');
-  var sum = 0,
-    mul = 2,
-    l = 14;
-  for (var i = 0; i < l; i++) {
-    var digit = str.substring(l - i - 1, l - i);
-    var tp = parseInt(digit, 10) * mul;
-    if (tp >= 10) {
-      sum += tp % 10 + 1;
-    } else {
-      sum += tp;
-    }
-    if (mul === 1) {
-      mul += 1;
-    } else {
-      mul -= 1;
-    }
-  }
-  var chk = (10 - sum % 10) % 10;
-  if (chk !== parseInt(str.substring(14, 15), 10)) {
-    return false;
-  }
-  return true;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isIP.js
===================================================================
--- backend/node_modules/validator/lib/isIP.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIP;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-/**
-11.3.  Examples
-
-   The following addresses
-
-             fe80::1234 (on the 1st link of the node)
-             ff02::5678 (on the 5th link of the node)
-             ff08::9abc (on the 10th organization of the node)
-
-   would be represented as follows:
-
-             fe80::1234%1
-             ff02::5678%5
-             ff08::9abc%10
-
-   (Here we assume a natural translation from a zone index to the
-   <zone_id> part, where the Nth zone of any scope is translated into
-   "N".)
-
-   If we use interface names as <zone_id>, those addresses could also be
-   represented as follows:
-
-            fe80::1234%ne0
-            ff02::5678%pvc1.3
-            ff08::9abc%interface10
-
-   where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
-   to the 5th link, and "interface10" belongs to the 10th organization.
- * * */
-var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
-var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
-var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
-var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z.]{1,})?$');
-function isIP(ipAddress) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  (0, _assertString.default)(ipAddress);
-
-  // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])
-  // eslint-disable-next-line prefer-rest-params
-  var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';
-  if (!version) {
-    return isIP(ipAddress, {
-      version: 4
-    }) || isIP(ipAddress, {
-      version: 6
-    });
-  }
-  if (version.toString() === '4') {
-    return IPv4AddressRegExp.test(ipAddress);
-  }
-  if (version.toString() === '6') {
-    return IPv6AddressRegExp.test(ipAddress);
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isIPRange.js
===================================================================
--- backend/node_modules/validator/lib/isIPRange.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIPRange;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isIP = _interopRequireDefault(require("./isIP"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var subnetMaybe = /^\d{1,3}$/;
-var v4Subnet = 32;
-var v6Subnet = 128;
-function isIPRange(str) {
-  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-  (0, _assertString.default)(str);
-  var parts = str.split('/');
-
-  // parts[0] -> ip, parts[1] -> subnet
-  if (parts.length !== 2) {
-    return false;
-  }
-  if (!subnetMaybe.test(parts[1])) {
-    return false;
-  }
-
-  // Disallow preceding 0 i.e. 01, 02, ...
-  if (parts[1].length > 1 && parts[1].startsWith('0')) {
-    return false;
-  }
-  var isValidIP = (0, _isIP.default)(parts[0], version);
-  if (!isValidIP) {
-    return false;
-  }
-
-  // Define valid subnet according to IP's version
-  var expectedSubnet = null;
-  switch (String(version)) {
-    case '4':
-      expectedSubnet = v4Subnet;
-      break;
-    case '6':
-      expectedSubnet = v6Subnet;
-      break;
-    default:
-      expectedSubnet = (0, _isIP.default)(parts[0], '6') ? v6Subnet : v4Subnet;
-  }
-  return parts[1] <= expectedSubnet && parts[1] >= 0;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISBN.js
===================================================================
--- backend/node_modules/validator/lib/isISBN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,56 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISBN;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var possibleIsbn10 = /^(?:[0-9]{9}X|[0-9]{10})$/;
-var possibleIsbn13 = /^(?:[0-9]{13})$/;
-var factor = [1, 3];
-function isISBN(isbn, options) {
-  (0, _assertString.default)(isbn);
-
-  // For backwards compatibility:
-  // isISBN(str [, version]), i.e. `options` could be used as argument for the legacy `version`
-  var version = String((options === null || options === void 0 ? void 0 : options.version) || options);
-  if (!(options !== null && options !== void 0 && options.version || options)) {
-    return isISBN(isbn, {
-      version: 10
-    }) || isISBN(isbn, {
-      version: 13
-    });
-  }
-  var sanitizedIsbn = isbn.replace(/[\s-]+/g, '');
-  var checksum = 0;
-  if (version === '10') {
-    if (!possibleIsbn10.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var i = 0; i < version - 1; i++) {
-      checksum += (i + 1) * sanitizedIsbn.charAt(i);
-    }
-    if (sanitizedIsbn.charAt(9) === 'X') {
-      checksum += 10 * 10;
-    } else {
-      checksum += 10 * sanitizedIsbn.charAt(9);
-    }
-    if (checksum % 11 === 0) {
-      return true;
-    }
-  } else if (version === '13') {
-    if (!possibleIsbn13.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var _i = 0; _i < 12; _i++) {
-      checksum += factor[_i % 2] * sanitizedIsbn.charAt(_i);
-    }
-    if (sanitizedIsbn.charAt(12) - (10 - checksum % 10) % 10 === 0) {
-      return true;
-    }
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISIN.js
===================================================================
--- backend/node_modules/validator/lib/isISIN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,64 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISIN;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;
-
-// this link details how the check digit is calculated:
-// https://www.isin.org/isin-format/. it is a little bit
-// odd in that it works with digits, not numbers. in order
-// to make only one pass through the ISIN characters, the
-// each alpha character is handled as 2 characters within
-// the loop.
-
-function isISIN(str) {
-  (0, _assertString.default)(str);
-  if (!isin.test(str)) {
-    return false;
-  }
-  var double = true;
-  var sum = 0;
-  // convert values
-  for (var i = str.length - 2; i >= 0; i--) {
-    if (str[i] >= 'A' && str[i] <= 'Z') {
-      var value = str[i].charCodeAt(0) - 55;
-      var lo = value % 10;
-      var hi = Math.trunc(value / 10);
-      // letters have two digits, so handle the low order
-      // and high order digits separately.
-      for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {
-        var digit = _arr[_i];
-        if (double) {
-          if (digit >= 5) {
-            sum += 1 + (digit - 5) * 2;
-          } else {
-            sum += digit * 2;
-          }
-        } else {
-          sum += digit;
-        }
-        double = !double;
-      }
-    } else {
-      var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);
-      if (double) {
-        if (_digit >= 5) {
-          sum += 1 + (_digit - 5) * 2;
-        } else {
-          sum += _digit * 2;
-        }
-      } else {
-        sum += _digit;
-      }
-      double = !double;
-    }
-  }
-  var check = Math.trunc((sum + 9) / 10) * 10 - sum;
-  return +str[str.length - 1] === check;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISO15924.js
===================================================================
--- backend/node_modules/validator/lib/isISO15924.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.ScriptCodes = void 0;
-exports.default = isISO15924;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// from https://www.unicode.org/iso15924/iso15924-codes.html
-var validISO15924Codes = new Set(['Adlm', 'Afak', 'Aghb', 'Ahom', 'Arab', 'Aran', 'Armi', 'Armn', 'Avst', 'Bali', 'Bamu', 'Bass', 'Batk', 'Beng', 'Bhks', 'Blis', 'Bopo', 'Brah', 'Brai', 'Bugi', 'Buhd', 'Cakm', 'Cans', 'Cari', 'Cham', 'Cher', 'Chis', 'Chrs', 'Cirt', 'Copt', 'Cpmn', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Diak', 'Dogr', 'Dsrt', 'Dupl', 'Egyd', 'Egyh', 'Egyp', 'Elba', 'Elym', 'Ethi', 'Gara', 'Geok', 'Geor', 'Glag', 'Gong', 'Gonm', 'Goth', 'Gran', 'Grek', 'Gujr', 'Gukh', 'Guru', 'Hanb', 'Hang', 'Hani', 'Hano', 'Hans', 'Hant', 'Hatr', 'Hebr', 'Hira', 'Hluw', 'Hmng', 'Hmnp', 'Hrkt', 'Hung', 'Inds', 'Ital', 'Jamo', 'Java', 'Jpan', 'Jurc', 'Kali', 'Kana', 'Kawi', 'Khar', 'Khmr', 'Khoj', 'Kitl', 'Kits', 'Knda', 'Kore', 'Kpel', 'Krai', 'Kthi', 'Lana', 'Laoo', 'Latf', 'Latg', 'Latn', 'Leke', 'Lepc', 'Limb', 'Lina', 'Linb', 'Lisu', 'Loma', 'Lyci', 'Lydi', 'Mahj', 'Maka', 'Mand', 'Mani', 'Marc', 'Maya', 'Medf', 'Mend', 'Merc', 'Mero', 'Mlym', 'Modi', 'Mong', 'Moon', 'Mroo', 'Mtei', 'Mult', 'Mymr', 'Nagm', 'Nand', 'Narb', 'Nbat', 'Newa', 'Nkdb', 'Nkgb', 'Nkoo', 'Nshu', 'Ogam', 'Olck', 'Onao', 'Orkh', 'Orya', 'Osge', 'Osma', 'Ougr', 'Palm', 'Pauc', 'Pcun', 'Pelm', 'Perm', 'Phag', 'Phli', 'Phlp', 'Phlv', 'Phnx', 'Plrd', 'Piqd', 'Prti', 'Psin', 'Qaaa', 'Qaab', 'Qaac', 'Qaad', 'Qaae', 'Qaaf', 'Qaag', 'Qaah', 'Qaai', 'Qaaj', 'Qaak', 'Qaal', 'Qaam', 'Qaan', 'Qaao', 'Qaap', 'Qaaq', 'Qaar', 'Qaas', 'Qaat', 'Qaau', 'Qaav', 'Qaaw', 'Qaax', 'Qaay', 'Qaaz', 'Qaba', 'Qabb', 'Qabc', 'Qabd', 'Qabe', 'Qabf', 'Qabg', 'Qabh', 'Qabi', 'Qabj', 'Qabk', 'Qabl', 'Qabm', 'Qabn', 'Qabo', 'Qabp', 'Qabq', 'Qabr', 'Qabs', 'Qabt', 'Qabu', 'Qabv', 'Qabw', 'Qabx', 'Ranj', 'Rjng', 'Rohg', 'Roro', 'Runr', 'Samr', 'Sara', 'Sarb', 'Saur', 'Sgnw', 'Shaw', 'Shrd', 'Shui', 'Sidd', 'Sidt', 'Sind', 'Sinh', 'Sogd', 'Sogo', 'Sora', 'Soyo', 'Sund', 'Sunu', 'Sylo', 'Syrc', 'Syre', 'Syrj', 'Syrn', 'Tagb', 'Takr', 'Tale', 'Talu', 'Taml', 'Tang', 'Tavt', 'Tayo', 'Telu', 'Teng', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Tnsa', 'Todr', 'Tols', 'Toto', 'Tutg', 'Ugar', 'Vaii', 'Visp', 'Vith', 'Wara', 'Wcho', 'Wole', 'Xpeo', 'Xsux', 'Yezi', 'Yiii', 'Zanb', 'Zinh', 'Zmth', 'Zsye', 'Zsym', 'Zxxx', 'Zyyy', 'Zzzz']);
-function isISO15924(str) {
-  (0, _assertString.default)(str);
-  return validISO15924Codes.has(str);
-}
-var ScriptCodes = exports.ScriptCodes = validISO15924Codes;
Index: ckend/node_modules/validator/lib/isISO31661Alpha2.js
===================================================================
--- backend/node_modules/validator/lib/isISO31661Alpha2.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CountryCodes = void 0;
-exports.default = isISO31661Alpha2;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);
-function isISO31661Alpha2(str) {
-  (0, _assertString.default)(str);
-  return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());
-}
-var CountryCodes = exports.CountryCodes = validISO31661Alpha2CountriesCodes;
Index: ckend/node_modules/validator/lib/isISO31661Alpha3.js
===================================================================
--- backend/node_modules/validator/lib/isISO31661Alpha3.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISO31661Alpha3;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
-var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);
-function isISO31661Alpha3(str) {
-  (0, _assertString.default)(str);
-  return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISO31661Numeric.js
===================================================================
--- backend/node_modules/validator/lib/isISO31661Numeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISO31661Numeric;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// from https://en.wikipedia.org/wiki/ISO_3166-1_numeric
-var validISO31661NumericCountriesCodes = new Set(['004', '008', '010', '012', '016', '020', '024', '028', '031', '032', '036', '040', '044', '048', '050', '051', '052', '056', '060', '064', '068', '070', '072', '074', '076', '084', '086', '090', '092', '096', '100', '104', '108', '112', '116', '120', '124', '132', '136', '140', '144', '148', '152', '156', '158', '162', '166', '170', '174', '175', '178', '180', '184', '188', '191', '192', '196', '203', '204', '208', '212', '214', '218', '222', '226', '231', '232', '233', '234', '238', '239', '242', '246', '248', '250', '254', '258', '260', '262', '266', '268', '270', '275', '276', '288', '292', '296', '300', '304', '308', '312', '316', '320', '324', '328', '332', '334', '336', '340', '344', '348', '352', '356', '360', '364', '368', '372', '376', '380', '384', '388', '392', '398', '400', '404', '408', '410', '414', '417', '418', '422', '426', '428', '430', '434', '438', '440', '442', '446', '450', '454', '458', '462', '466', '470', '474', '478', '480', '484', '492', '496', '498', '499', '500', '504', '508', '512', '516', '520', '524', '528', '531', '533', '534', '535', '540', '548', '554', '558', '562', '566', '570', '574', '578', '580', '581', '583', '584', '585', '586', '591', '598', '600', '604', '608', '612', '616', '620', '624', '626', '630', '634', '638', '642', '643', '646', '652', '654', '659', '660', '662', '663', '666', '670', '674', '678', '682', '686', '688', '690', '694', '702', '703', '704', '705', '706', '710', '716', '724', '728', '729', '732', '740', '744', '748', '752', '756', '760', '762', '764', '768', '772', '776', '780', '784', '788', '792', '795', '796', '798', '800', '804', '807', '818', '826', '831', '832', '833', '834', '840', '850', '854', '858', '860', '862', '876', '882', '887', '894']);
-function isISO31661Numeric(str) {
-  (0, _assertString.default)(str);
-  return validISO31661NumericCountriesCodes.has(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISO4217.js
===================================================================
--- backend/node_modules/validator/lib/isISO4217.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.CurrencyCodes = void 0;
-exports.default = isISO4217;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// from https://en.wikipedia.org/wiki/ISO_4217
-var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VED', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']);
-function isISO4217(str) {
-  (0, _assertString.default)(str);
-  return validISO4217CurrencyCodes.has(str.toUpperCase());
-}
-var CurrencyCodes = exports.CurrencyCodes = validISO4217CurrencyCodes;
Index: ckend/node_modules/validator/lib/isISO6346.js
===================================================================
--- backend/node_modules/validator/lib/isISO6346.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.isFreightContainerID = void 0;
-exports.isISO6346 = isISO6346;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// https://en.wikipedia.org/wiki/ISO_6346
-// according to ISO6346 standard, checksum digit is mandatory for freight container but recommended
-// for other container types (J and Z)
-var isISO6346Str = /^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/;
-var isDigit = /^[0-9]$/;
-function isISO6346(str) {
-  (0, _assertString.default)(str);
-  str = str.toUpperCase();
-  if (!isISO6346Str.test(str)) return false;
-  if (str.length === 11) {
-    var sum = 0;
-    for (var i = 0; i < str.length - 1; i++) {
-      if (!isDigit.test(str[i])) {
-        var convertedCode = void 0;
-        var letterCode = str.charCodeAt(i) - 55;
-        if (letterCode < 11) convertedCode = letterCode;else if (letterCode >= 11 && letterCode <= 20) convertedCode = 12 + letterCode % 11;else if (letterCode >= 21 && letterCode <= 30) convertedCode = 23 + letterCode % 21;else convertedCode = 34 + letterCode % 31;
-        sum += convertedCode * Math.pow(2, i);
-      } else sum += str[i] * Math.pow(2, i);
-    }
-    var checkSumDigit = sum % 11;
-    if (checkSumDigit === 10) checkSumDigit = 0;
-    return Number(str[str.length - 1]) === checkSumDigit;
-  }
-  return true;
-}
-var isFreightContainerID = exports.isFreightContainerID = isISO6346;
Index: ckend/node_modules/validator/lib/isISO6391.js
===================================================================
--- backend/node_modules/validator/lib/isISO6391.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISO6391;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var isISO6391Set = new Set(['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu']);
-function isISO6391(str) {
-  (0, _assertString.default)(str);
-  return isISO6391Set.has(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISO8601.js
===================================================================
--- backend/node_modules/validator/lib/isISO8601.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISO8601;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/* eslint-disable max-len */
-// from http://goo.gl/0ejHHW
-var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-// same as above, except with a strict 'T' separator between date and time
-var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-/* eslint-enable max-len */
-var isValidDate = function isValidDate(str) {
-  // str must have passed the ISO8601 check
-  // this check is meant to catch invalid dates
-  // like 2009-02-31
-  // first check for ordinal dates
-  var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);
-  if (ordinalMatch) {
-    var oYear = Number(ordinalMatch[1]);
-    var oDay = Number(ordinalMatch[2]);
-    // if is leap year
-    if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;
-    return oDay <= 365;
-  }
-  var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number);
-  var year = match[1];
-  var month = match[2];
-  var day = match[3];
-  var monthString = month ? "0".concat(month).slice(-2) : month;
-  var dayString = day ? "0".concat(day).slice(-2) : day;
-
-  // create a date object and compare
-  var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01'));
-  if (month && day) {
-    return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;
-  }
-  return true;
-};
-function isISO8601(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  (0, _assertString.default)(str);
-  var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);
-  if (check && options.strict) return isValidDate(str);
-  return check;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISRC.js
===================================================================
--- backend/node_modules/validator/lib/isISRC.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISRC;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// see http://isrc.ifpi.org/en/isrc-standard/code-syntax
-var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;
-function isISRC(str) {
-  (0, _assertString.default)(str);
-  return isrc.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isISSN.js
===================================================================
--- backend/node_modules/validator/lib/isISSN.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isISSN;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var issn = '^\\d{4}-?\\d{3}[\\dX]$';
-function isISSN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  (0, _assertString.default)(str);
-  var testIssn = issn;
-  testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;
-  testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');
-  if (!testIssn.test(str)) {
-    return false;
-  }
-  var digits = str.replace('-', '').toUpperCase();
-  var checksum = 0;
-  for (var i = 0; i < digits.length; i++) {
-    var digit = digits[i];
-    checksum += (digit === 'X' ? 10 : +digit) * (8 - i);
-  }
-  return checksum % 11 === 0;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isIdentityCard.js
===================================================================
--- backend/node_modules/validator/lib/isIdentityCard.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,426 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIdentityCard;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _includesArray = _interopRequireDefault(require("./util/includesArray"));
-var _isInt = _interopRequireDefault(require("./isInt"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var validators = {
-  PL: function PL(str) {
-    (0, _assertString.default)(str);
-    var weightOfDigits = {
-      1: 1,
-      2: 3,
-      3: 7,
-      4: 9,
-      5: 1,
-      6: 3,
-      7: 7,
-      8: 9,
-      9: 1,
-      10: 3,
-      11: 0
-    };
-    if (str != null && str.length === 11 && (0, _isInt.default)(str, {
-      allow_leading_zeroes: true
-    })) {
-      var digits = str.split('').slice(0, -1);
-      var sum = digits.reduce(function (acc, digit, index) {
-        return acc + Number(digit) * weightOfDigits[index + 1];
-      }, 0);
-      var modulo = sum % 10;
-      var lastDigit = Number(str.charAt(str.length - 1));
-      if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {
-        return true;
-      }
-    }
-    return false;
-  },
-  ES: function ES(str) {
-    (0, _assertString.default)(str);
-    var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
-    var charsValue = {
-      X: 0,
-      Y: 1,
-      Z: 2
-    };
-    var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-
-    // sanitize user input
-    var sanitized = str.trim().toUpperCase();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-
-    // validate the control digit
-    var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {
-      return charsValue[char];
-    });
-    return sanitized.endsWith(controlDigits[number % 23]);
-  },
-  FI: function FI(str) {
-    // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated
-    (0, _assertString.default)(str);
-    if (str.length !== 11) {
-      return false;
-    }
-    if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {
-      return false;
-    }
-    var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';
-    var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);
-    var remainder = idAsNumber % 31;
-    var checkDigit = checkDigits[remainder];
-    return checkDigit === str.slice(10, 11);
-  },
-  IN: function IN(str) {
-    var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/;
-
-    // multiplication table
-    var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-
-    // permutation table
-    var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var c = 0;
-    var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse();
-    invertedArray.forEach(function (val, i) {
-      c = d[c][p[i % 8][val]];
-    });
-    return c === 0;
-  },
-  IR: function IR(str) {
-    if (!str.match(/^\d{10}$/)) return false;
-    str = "0000".concat(str).slice(str.length - 6);
-    if (parseInt(str.slice(3, 9), 10) === 0) return false;
-    var lastNumber = parseInt(str.slice(9, 10), 10);
-    var sum = 0;
-    for (var i = 0; i < 9; i++) {
-      sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);
-    }
-    sum %= 11;
-    return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;
-  },
-  IT: function IT(str) {
-    if (str.length !== 9) return false;
-    if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana
-    return str.search(/C[A-Z]\d{5}[A-Z]{2}/i) > -1;
-  },
-  NO: function NO(str) {
-    var sanitized = str.trim();
-    if (isNaN(Number(sanitized))) return false;
-    if (sanitized.length !== 11) return false;
-    if (sanitized === '00000000000') return false;
-
-    // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer
-    var f = sanitized.split('').map(Number);
-    var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;
-    var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;
-    if (k1 !== f[9] || k2 !== f[10]) return false;
-    return true;
-  },
-  TH: function TH(str) {
-    if (!str.match(/^[1-8]\d{12}$/)) return false;
-
-    // validate check digit
-    var sum = 0;
-    for (var i = 0; i < 12; i++) {
-      sum += parseInt(str[i], 10) * (13 - i);
-    }
-    return str[12] === ((11 - sum % 11) % 10).toString();
-  },
-  LK: function LK(str) {
-    var old_nic = /^[1-9]\d{8}[vx]$/i;
-    var new_nic = /^[1-9]\d{11}$/i;
-    if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;
-    return false;
-  },
-  'he-IL': function heIL(str) {
-    var DNI = /^\d{9}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var id = sanitized;
-    var sum = 0,
-      incNum;
-    for (var i = 0; i < id.length; i++) {
-      incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2
-      sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total
-    }
-    return sum % 10 === 0;
-  },
-  'ar-LY': function arLY(str) {
-    // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2
-    var NIN = /^(1|2)\d{11}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!NIN.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'ar-TN': function arTN(str) {
-    var DNI = /^\d{8}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'zh-CN': function zhCN(str) {
-    var provincesAndCities = ['11',
-    // 北京
-    '12',
-    // 天津
-    '13',
-    // 河北
-    '14',
-    // 山西
-    '15',
-    // 内蒙古
-    '21',
-    // 辽宁
-    '22',
-    // 吉林
-    '23',
-    // 黑龙江
-    '31',
-    // 上海
-    '32',
-    // 江苏
-    '33',
-    // 浙江
-    '34',
-    // 安徽
-    '35',
-    // 福建
-    '36',
-    // 江西
-    '37',
-    // 山东
-    '41',
-    // 河南
-    '42',
-    // 湖北
-    '43',
-    // 湖南
-    '44',
-    // 广东
-    '45',
-    // 广西
-    '46',
-    // 海南
-    '50',
-    // 重庆
-    '51',
-    // 四川
-    '52',
-    // 贵州
-    '53',
-    // 云南
-    '54',
-    // 西藏
-    '61',
-    // 陕西
-    '62',
-    // 甘肃
-    '63',
-    // 青海
-    '64',
-    // 宁夏
-    '65',
-    // 新疆
-    '71',
-    // 台湾
-    '81',
-    // 香港
-    '82',
-    // 澳门
-    '91' // 国外
-    ];
-    var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];
-    var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
-    var checkAddressCode = function checkAddressCode(addressCode) {
-      return (0, _includesArray.default)(provincesAndCities, addressCode);
-    };
-    var checkBirthDayCode = function checkBirthDayCode(birDayCode) {
-      var yyyy = parseInt(birDayCode.substring(0, 4), 10);
-      var mm = parseInt(birDayCode.substring(4, 6), 10);
-      var dd = parseInt(birDayCode.substring(6), 10);
-      var xdata = new Date(yyyy, mm - 1, dd);
-      if (xdata > new Date()) {
-        return false;
-        // eslint-disable-next-line max-len
-      } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {
-        return true;
-      }
-      return false;
-    };
-    var getParityBit = function getParityBit(idCardNo) {
-      var id17 = idCardNo.substring(0, 17);
-      var power = 0;
-      for (var i = 0; i < 17; i++) {
-        power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);
-      }
-      var mod = power % 11;
-      return parityBit[mod];
-    };
-    var checkParityBit = function checkParityBit(idCardNo) {
-      return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();
-    };
-    var check15IdCardNo = function check15IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = "19".concat(idCardNo.substring(6, 12));
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return true;
-    };
-    var check18IdCardNo = function check18IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = idCardNo.substring(6, 14);
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return checkParityBit(idCardNo);
-    };
-    var checkIdCardNo = function checkIdCardNo(idCardNo) {
-      var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
-      if (!check) return false;
-      if (idCardNo.length === 15) {
-        return check15IdCardNo(idCardNo);
-      }
-      return check18IdCardNo(idCardNo);
-    };
-    return checkIdCardNo(str);
-  },
-  'zh-HK': function zhHK(str) {
-    // sanitize user input
-    str = str.trim();
-
-    // HKID number starts with 1 or 2 letters, followed by 6 digits,
-    // then a checksum contained in square / round brackets or nothing
-    var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/;
-    var regexIsDigit = /^[0-9]$/;
-
-    // convert the user input to all uppercase and apply regex
-    str = str.toUpperCase();
-    if (!regexHKID.test(str)) return false;
-    str = str.replace(/\[|\]|\(|\)/g, '');
-    if (str.length === 8) str = "3".concat(str);
-    var checkSumVal = 0;
-    for (var i = 0; i <= 7; i++) {
-      var convertedChar = void 0;
-      if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];
-      checkSumVal += convertedChar * (9 - i);
-    }
-    checkSumVal %= 11;
-    var checkSumConverted;
-    if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);
-    if (checkSumConverted === str[str.length - 1]) return true;
-    return false;
-  },
-  'zh-TW': function zhTW(str) {
-    var ALPHABET_CODES = {
-      A: 10,
-      B: 11,
-      C: 12,
-      D: 13,
-      E: 14,
-      F: 15,
-      G: 16,
-      H: 17,
-      I: 34,
-      J: 18,
-      K: 19,
-      L: 20,
-      M: 21,
-      N: 22,
-      O: 35,
-      P: 23,
-      Q: 24,
-      R: 25,
-      S: 26,
-      T: 27,
-      U: 28,
-      V: 29,
-      W: 32,
-      X: 30,
-      Y: 31,
-      Z: 33
-    };
-    var sanitized = str.trim().toUpperCase();
-    if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;
-    return Array.from(sanitized).reduce(function (sum, number, index) {
-      if (index === 0) {
-        var code = ALPHABET_CODES[number];
-        return code % 10 * 9 + Math.floor(code / 10);
-      }
-      if (index === 9) {
-        return (10 - sum % 10 - Number(number)) % 10 === 0;
-      }
-      return sum + Number(number) * (9 - index);
-    }, 0);
-  },
-  PK: function PK(str) {
-    // Pakistani National Identity Number CNIC is 13 digits
-    var CNIC = /^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    return CNIC.test(sanitized);
-  }
-};
-function isIdentityCard(str, locale) {
-  (0, _assertString.default)(str);
-  if (locale in validators) {
-    return validators[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (validators.hasOwnProperty(key)) {
-        var validator = validators[key];
-        if (validator(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isIn.js
===================================================================
--- backend/node_modules/validator/lib/isIn.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isIn;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _toString = _interopRequireDefault(require("./util/toString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-function isIn(str, options) {
-  (0, _assertString.default)(str);
-  var i;
-  if (Object.prototype.toString.call(options) === '[object Array]') {
-    var array = [];
-    for (i in options) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if ({}.hasOwnProperty.call(options, i)) {
-        array[i] = (0, _toString.default)(options[i]);
-      }
-    }
-    return array.indexOf(str) >= 0;
-  } else if (_typeof(options) === 'object') {
-    return options.hasOwnProperty(str);
-  } else if (options && typeof options.indexOf === 'function') {
-    return options.indexOf(str) >= 0;
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isInt.js
===================================================================
--- backend/node_modules/validator/lib/isInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,28 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isInt;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _nullUndefinedCheck = _interopRequireDefault(require("./util/nullUndefinedCheck"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;
-var intLeadingZeroes = /^[-+]?[0-9]+$/;
-function isInt(str, options) {
-  (0, _assertString.default)(str);
-  options = options || {};
-
-  // Get the regex to use for testing, based on whether
-  // leading zeroes are allowed or not.
-  var regex = options.allow_leading_zeroes === false ? int : intLeadingZeroes;
-
-  // Check min/max/lt/gt
-  var minCheckPassed = !options.hasOwnProperty('min') || (0, _nullUndefinedCheck.default)(options.min) || str >= options.min;
-  var maxCheckPassed = !options.hasOwnProperty('max') || (0, _nullUndefinedCheck.default)(options.max) || str <= options.max;
-  var ltCheckPassed = !options.hasOwnProperty('lt') || (0, _nullUndefinedCheck.default)(options.lt) || str < options.lt;
-  var gtCheckPassed = !options.hasOwnProperty('gt') || (0, _nullUndefinedCheck.default)(options.gt) || str > options.gt;
-  return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isJSON.js
===================================================================
--- backend/node_modules/validator/lib/isJSON.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isJSON;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _includesArray = _interopRequireDefault(require("./util/includesArray"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-var default_json_options = {
-  allow_primitives: false
-};
-function isJSON(str, options) {
-  (0, _assertString.default)(str);
-  try {
-    options = (0, _merge.default)(options, default_json_options);
-    var primitives = [];
-    if (options.allow_primitives) {
-      primitives = [null, false, true];
-    }
-    var obj = JSON.parse(str);
-    return (0, _includesArray.default)(primitives, obj) || !!obj && _typeof(obj) === 'object';
-  } catch (e) {/* ignore */}
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isJWT.js
===================================================================
--- backend/node_modules/validator/lib/isJWT.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isJWT;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isBase = _interopRequireDefault(require("./isBase64"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isJWT(str) {
-  (0, _assertString.default)(str);
-  var dotSplit = str.split('.');
-  var len = dotSplit.length;
-  if (len !== 3) {
-    return false;
-  }
-  return dotSplit.reduce(function (acc, currElem) {
-    return acc && (0, _isBase.default)(currElem, {
-      urlSafe: true
-    });
-  }, true);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLatLong.js
===================================================================
--- backend/node_modules/validator/lib/isLatLong.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLatLong;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-var _includesString = _interopRequireDefault(require("./util/includesString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/;
-var long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;
-var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i;
-var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i;
-var defaultLatLongOptions = {
-  checkDMS: false
-};
-function isLatLong(str, options) {
-  (0, _assertString.default)(str);
-  options = (0, _merge.default)(options, defaultLatLongOptions);
-  if (!(0, _includesString.default)(str, ',')) return false;
-  var pair = str.split(',');
-  if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;
-  if (options.checkDMS) {
-    return latDMS.test(pair[0]) && longDMS.test(pair[1]);
-  }
-  return lat.test(pair[0]) && long.test(pair[1]);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLength.js
===================================================================
--- backend/node_modules/validator/lib/isLength.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLength;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-/* eslint-disable prefer-rest-params */
-function isLength(str, options) {
-  (0, _assertString.default)(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isLength(str, min [, max])
-    min = arguments[1] || 0;
-    max = arguments[2];
-  }
-  var presentationSequences = str.match(/(\uFE0F|\uFE0E)/g) || [];
-  var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
-  var len = str.length - presentationSequences.length - surrogatePairs.length;
-  var isInsideRange = len >= min && (typeof max === 'undefined' || len <= max);
-  if (isInsideRange && Array.isArray(options === null || options === void 0 ? void 0 : options.discreteLengths)) {
-    return options.discreteLengths.some(function (discreteLen) {
-      return discreteLen === len;
-    });
-  }
-  return isInsideRange;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLicensePlate.js
===================================================================
--- backend/node_modules/validator/lib/isLicensePlate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,67 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLicensePlate;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var validators = {
-  'cs-CZ': function csCZ(str) {
-    return /^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str);
-  },
-  'de-DE': function deDE(str) {
-    return /^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str);
-  },
-  'de-LI': function deLI(str) {
-    return /^FL[- ]?\d{1,5}[UZ]?$/.test(str);
-  },
-  'en-IN': function enIN(str) {
-    return /^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(str);
-  },
-  'en-SG': function enSG(str) {
-    return /^[A-Z]{3}[ -]?[\d]{4}[ -]?[A-Z]{1}$/.test(str);
-  },
-  'es-AR': function esAR(str) {
-    return /^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(str);
-  },
-  'fi-FI': function fiFI(str) {
-    return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str);
-  },
-  'hu-HU': function huHU(str) {
-    return /^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\d{3})|(M\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \d{2}-\d{2})|(CD \d{3}-\d{3})|(C-(C|X) \d{4})|(X-(A|B|C) \d{4})|(([EPVZ]-\d{5}))|(S A[A-Z]{2} \d{2})|(SP \d{2}-\d{2}))$/.test(str);
-  },
-  'pt-BR': function ptBR(str) {
-    return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str);
-  },
-  'pt-PT': function ptPT(str) {
-    return /^(([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[A-Z]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2})|([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2}))$/.test(str);
-  },
-  'sq-AL': function sqAL(str) {
-    return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str);
-  },
-  'sv-SE': function svSE(str) {
-    return /^[A-HJ-PR-UW-Z]{3} ?[\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(str.trim());
-  },
-  'en-PK': function enPK(str) {
-    return /(^[A-Z]{2}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\s|-){0,1})[0-9]{4}((\s|-)[0-9]{2}){0,1}$)/.test(str.trim());
-  }
-};
-function isLicensePlate(str, locale) {
-  (0, _assertString.default)(str);
-  if (locale in validators) {
-    return validators[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators) {
-      /* eslint guard-for-in: 0 */
-      var validator = validators[key];
-      if (validator(str)) {
-        return true;
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLocale.js
===================================================================
--- backend/node_modules/validator/lib/isLocale.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,115 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLocale;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/*
-  = 3ALPHA              ; selected ISO 639 codes
-    *2("-" 3ALPHA)      ; permanently reserved
- */
-var extlang = '([A-Za-z]{3}(-[A-Za-z]{3}){0,2})';
-
-/*
-  = 2*3ALPHA            ; shortest ISO 639 code
-    ["-" extlang]       ; sometimes followed by
-                        ; extended language subtags
-  / 4ALPHA              ; or reserved for future use
-  / 5*8ALPHA            ; or registered language subtag
- */
-var language = "(([a-zA-Z]{2,3}(-".concat(extlang, ")?)|([a-zA-Z]{5,8}))");
-
-/*
-  = 4ALPHA              ; ISO 15924 code
- */
-var script = '([A-Za-z]{4})';
-
-/*
-  = 2ALPHA              ; ISO 3166-1 code
-  / 3DIGIT              ; UN M.49 code
- */
-var region = '([A-Za-z]{2}|\\d{3})';
-
-/*
-  = 5*8alphanum         ; registered variants
-  / (DIGIT 3alphanum)
- */
-var variant = '([A-Za-z0-9]{5,8}|(\\d[A-Z-a-z0-9]{3}))';
-
-/*
-  = DIGIT               ; 0 - 9
-  / %x41-57             ; A - W
-  / %x59-5A             ; Y - Z
-  / %x61-77             ; a - w
-  / %x79-7A             ; y - z
- */
-var singleton = '(\\d|[A-W]|[Y-Z]|[a-w]|[y-z])';
-
-/*
-  = singleton 1*("-" (2*8alphanum))
-                        ; Single alphanumerics
-                        ; "x" reserved for private use
- */
-var extension = "(".concat(singleton, "(-[A-Za-z0-9]{2,8})+)");
-
-/*
-  = "x" 1*("-" (1*8alphanum))
- */
-var privateuse = '(x(-[A-Za-z0-9]{1,8})+)';
-
-// irregular tags do not match the 'langtag' production and would not
-// otherwise be considered 'well-formed'. These tags are all valid, but
-// most are deprecated in favor of more modern subtags or subtag combination
-
-var irregular = '((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|' + '(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|' + '(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))';
-
-// regular tags match the 'langtag' production, but their subtags are not
-// extended language or variant subtags: their meaning is defined by
-// their registration and all of these are deprecated in favor of a more
-// modern subtag or sequence of subtags
-
-var regular = '((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|' + '(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))';
-
-/*
-  = irregular           ; non-redundant tags registered
-  / regular             ; during the RFC 3066 era
-
- */
-var grandfathered = "(".concat(irregular, "|").concat(regular, ")");
-
-/*
-  RFC 5646 defines delimitation of subtags via a hyphen:
-
-      "Subtag" refers to a specific section of a tag, delimited by a
-      hyphen, such as the subtags 'zh', 'Hant', and 'CN' in the tag "zh-
-      Hant-CN".  Examples of subtags in this document are enclosed in
-      single quotes ('Hant')
-
-  However, we need to add "_" to maintain the existing behaviour.
- */
-var delimiter = '(-|_)';
-
-/*
-  = language
-    ["-" script]
-    ["-" region]
-    *("-" variant)
-    *("-" extension)
-    ["-" privateuse]
- */
-var langtag = "".concat(language, "(").concat(delimiter).concat(script, ")?(").concat(delimiter).concat(region, ")?(").concat(delimiter).concat(variant, ")*(").concat(delimiter).concat(extension, ")*(").concat(delimiter).concat(privateuse, ")?");
-
-/*
-  Regex implementation based on BCP RFC 5646
-  Tags for Identifying Languages
-  https://www.rfc-editor.org/rfc/rfc5646.html
- */
-var languageTagRegex = new RegExp("(^".concat(privateuse, "$)|(^").concat(grandfathered, "$)|(^").concat(langtag, "$)"));
-function isLocale(str) {
-  (0, _assertString.default)(str);
-  return languageTagRegex.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLowercase.js
===================================================================
--- backend/node_modules/validator/lib/isLowercase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLowercase;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isLowercase(str) {
-  (0, _assertString.default)(str);
-  return str === str.toLowerCase();
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isLuhnNumber.js
===================================================================
--- backend/node_modules/validator/lib/isLuhnNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,34 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isLuhnNumber;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isLuhnNumber(str) {
-  (0, _assertString.default)(str);
-  var sanitized = str.replace(/[- ]+/g, '');
-  var sum = 0;
-  var digit;
-  var tmpNum;
-  var shouldDouble;
-  for (var i = sanitized.length - 1; i >= 0; i--) {
-    digit = sanitized.substring(i, i + 1);
-    tmpNum = parseInt(digit, 10);
-    if (shouldDouble) {
-      tmpNum *= 2;
-      if (tmpNum >= 10) {
-        sum += tmpNum % 10 + 1;
-      } else {
-        sum += tmpNum;
-      }
-    } else {
-      sum += tmpNum;
-    }
-    shouldDouble = !shouldDouble;
-  }
-  return !!(sum % 10 === 0 ? sanitized : false);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMACAddress.js
===================================================================
--- backend/node_modules/validator/lib/isMACAddress.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,45 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMACAddress;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var macAddress48 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/;
-var macAddress48NoSeparators = /^([0-9a-fA-F]){12}$/;
-var macAddress48WithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/;
-var macAddress64 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){6}([0-9a-fA-F]{2})$/;
-var macAddress64NoSeparators = /^([0-9a-fA-F]){16}$/;
-var macAddress64WithDots = /^([0-9a-fA-F]{4}\.){3}([0-9a-fA-F]{4})$/;
-function isMACAddress(str, options) {
-  (0, _assertString.default)(str);
-  if (options !== null && options !== void 0 && options.eui) {
-    options.eui = String(options.eui);
-  }
-  /**
-   * @deprecated `no_colons` TODO: remove it in the next major
-  */
-  if (options !== null && options !== void 0 && options.no_colons || options !== null && options !== void 0 && options.no_separators) {
-    if (options.eui === '48') {
-      return macAddress48NoSeparators.test(str);
-    }
-    if (options.eui === '64') {
-      return macAddress64NoSeparators.test(str);
-    }
-    return macAddress48NoSeparators.test(str) || macAddress64NoSeparators.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '48') {
-    return macAddress48.test(str) || macAddress48WithDots.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '64') {
-    return macAddress64.test(str) || macAddress64WithDots.test(str);
-  }
-  return isMACAddress(str, {
-    eui: '48'
-  }) || isMACAddress(str, {
-    eui: '64'
-  });
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMD5.js
===================================================================
--- backend/node_modules/validator/lib/isMD5.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMD5;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var md5 = /^[a-f0-9]{32}$/;
-function isMD5(str) {
-  (0, _assertString.default)(str);
-  return md5.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMagnetURI.js
===================================================================
--- backend/node_modules/validator/lib/isMagnetURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMagnetURI;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var magnetURIComponent = /(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;
-function isMagnetURI(url) {
-  (0, _assertString.default)(url);
-  if (url.indexOf('magnet:?') !== 0) {
-    return false;
-  }
-  return magnetURIComponent.test(url);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMailtoURI.js
===================================================================
--- backend/node_modules/validator/lib/isMailtoURI.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,84 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMailtoURI;
-var _trim = _interopRequireDefault(require("./trim"));
-var _isEmail = _interopRequireDefault(require("./isEmail"));
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-function parseMailtoQueryString(queryString) {
-  var allowedParams = new Set(['subject', 'body', 'cc', 'bcc']),
-    query = {
-      cc: '',
-      bcc: ''
-    };
-  var isParseFailed = false;
-  var queryParams = queryString.split('&');
-  if (queryParams.length > 4) {
-    return false;
-  }
-  var _iterator = _createForOfIteratorHelper(queryParams),
-    _step;
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var q = _step.value;
-      var _q$split = q.split('='),
-        _q$split2 = _slicedToArray(_q$split, 2),
-        key = _q$split2[0],
-        value = _q$split2[1];
-
-      // checked for invalid and duplicated query params
-      if (key && !allowedParams.has(key)) {
-        isParseFailed = true;
-        break;
-      }
-      if (value && (key === 'cc' || key === 'bcc')) {
-        query[key] = value;
-      }
-      if (key) {
-        allowedParams.delete(key);
-      }
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-  return isParseFailed ? false : query;
-}
-function isMailtoURI(url, options) {
-  (0, _assertString.default)(url);
-  if (url.indexOf('mailto:') !== 0) {
-    return false;
-  }
-  var _url$replace$split = url.replace('mailto:', '').split('?'),
-    _url$replace$split2 = _slicedToArray(_url$replace$split, 2),
-    to = _url$replace$split2[0],
-    _url$replace$split2$ = _url$replace$split2[1],
-    queryString = _url$replace$split2$ === void 0 ? '' : _url$replace$split2$;
-  if (!to && !queryString) {
-    return true;
-  }
-  var query = parseMailtoQueryString(queryString);
-  if (!query) {
-    return false;
-  }
-  return "".concat(to, ",").concat(query.cc, ",").concat(query.bcc).split(',').every(function (email) {
-    email = (0, _trim.default)(email, ' ');
-    if (email) {
-      return (0, _isEmail.default)(email, options);
-    }
-    return true;
-  });
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMimeType.js
===================================================================
--- backend/node_modules/validator/lib/isMimeType.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,48 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMimeType;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/*
-  Checks if the provided string matches to a correct Media type format (MIME type)
-
-  This function only checks is the string format follows the
-  established rules by the according RFC specifications.
-  This function supports 'charset' in textual media types
-  (https://tools.ietf.org/html/rfc6657).
-
-  This function does not check against all the media types listed
-  by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)
-  because of lightness purposes : it would require to include
-  all these MIME types in this library, which would weigh it
-  significantly. This kind of effort maybe is not worth for the use that
-  this function has in this entire library.
-
-  More information in the RFC specifications :
-  - https://tools.ietf.org/html/rfc2045
-  - https://tools.ietf.org/html/rfc2046
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.1
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.5
-*/
-
-// Match simple MIME types
-// NB :
-//   Subtype length must not exceed 100 characters.
-//   This rule does not comply to the RFC specs (what is the max length ?).
-var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+_]{1,100}$/i; // eslint-disable-line max-len
-
-// Handle "charset" in "text/*"
-var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len
-
-// Handle "boundary" in "multipart/*"
-var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len
-
-function isMimeType(str) {
-  (0, _assertString.default)(str);
-  return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMobilePhone.js
===================================================================
--- backend/node_modules/validator/lib/isMobilePhone.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,217 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMobilePhone;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/* eslint-disable max-len */
-var phones = {
-  'am-AM': /^(\+?374|0)(33|4[134]|55|77|88|9[13-689])\d{6}$/,
-  'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/,
-  'ar-BH': /^(\+?973)?(3|6)\d{7}$/,
-  'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/,
-  'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/,
-  'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/,
-  'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/,
-  'ar-JO': /^(\+?962|0)?7[789]\d{7}$/,
-  'ar-KW': /^(\+?965)([569]\d{7}|41\d{6})$/,
-  'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,
-  'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/,
-  'ar-OM': /^((\+|00)968)?([79][1-9])\d{6}$/,
-  'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/,
-  'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/,
-  'ar-SD': /^((\+?249)|0)?(9[012369]|1[012])\d{7}$/,
-  'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/,
-  'ar-TN': /^(\+?216)?[2459]\d{7}$/,
-  'az-AZ': /^(\+994|0)(10|5[015]|7[07]|99)\d{7}$/,
-  'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,
-  'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/,
-  'bg-BG': /^(\+?359|0)?8[789]\d{7}$/,
-  'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/,
-  'ca-AD': /^(\+376)?[346]\d{5}$/,
-  'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'de-DE': /^((\+49|0)1)(5[0-25-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,
-  'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/,
-  'de-CH': /^(\+41|0)([1-9])\d{1,9}$/,
-  'de-LU': /^(\+352)?((6\d1)\d{6})$/,
-  'dv-MV': /^(\+?960)?(7[2-9]|9[1-9])\d{5}$/,
-  'el-GR': /^(\+?30|0)?6(8[5-9]|9(?![26])[0-9])\d{7}$/,
-  'el-CY': /^(\+?357?)?(9(9|7|6|5|4)\d{6})$/,
-  'en-AI': /^(\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\d{4}$/,
-  'en-AU': /^(\+?61|0)4\d{8}$/,
-  'en-AG': /^(?:\+1|1)268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}$/,
-  'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}$))/,
-  'en-BS': /^(\+?1[-\s]?|0)?\(?242\)?[-\s]?\d{3}[-\s]?\d{4}$/,
-  'en-GB': /^(\+?44|0)7[1-9]\d{8}$/,
-  'en-GG': /^(\+?44|0)1481\d{6}$/,
-  'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|53|28|55|59)\d{7}$/,
-  'en-GY': /^(\+592|0)6\d{6}$/,
-  'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,
-  'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,
-  'en-IE': /^(\+?353|0)8[356789]\d{7}$/,
-  'en-IN': /^(\+?91|0)?[6789]\d{9}$/,
-  'en-JM': /^(\+?876)?\d{7}$/,
-  'en-KE': /^(\+?254|0)(7|1)\d{8}$/,
-  'fr-CF': /^(\+?236| ?)(70|75|77|72|21|22)\d{6}$/,
-  'en-SS': /^(\+?211|0)(9[1257])\d{7}$/,
-  'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,
-  'en-KN': /^(?:\+1|1)869(?:46\d|48[89]|55[6-8]|66\d|76[02-7])\d{4}$/,
-  'en-LS': /^(\+?266)(22|28|57|58|59|27|52)\d{6}$/,
-  'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,
-  'en-MU': /^(\+?230|0)?\d{8}$/,
-  'en-MW': /^(\+?265|0)(((77|88|31|99|98|21)\d{7})|(((111)|1)\d{6})|(32000\d{4}))$/,
-  'en-NA': /^(\+?264|0)(6|8)\d{7}$/,
-  'en-NG': /^(\+?234|0)?[789]\d{9}$/,
-  'en-NZ': /^(\+?64|0)[28]\d{7,9}$/,
-  'en-PG': /^(\+?675|0)?(7\d|8[18])\d{6}$/,
-  'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/,
-  'en-PH': /^(09|\+639)\d{9}$/,
-  'en-RW': /^(\+?250|0)?[7]\d{8}$/,
-  'en-SG': /^(\+65)?[3689]\d{7}$/,
-  'en-SL': /^(\+?232|0)\d{8}$/,
-  'en-TZ': /^(\+?255|0)?[67]\d{8}$/,
-  'en-UG': /^(\+?256|0)?[7]\d{8}$/,
-  'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,
-  'en-ZA': /^(\+?27|0)\d{9}$/,
-  'en-ZM': /^(\+?26)?0[79][567]\d{7}$/,
-  'en-ZW': /^(\+263)[0-9]{9}$/,
-  'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/,
-  'es-AR': /^\+?549(11|[2368]\d)\d{8}$/,
-  'es-BO': /^(\+?591)?(6|7)\d{7}$/,
-  'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,
-  'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/,
-  'es-CR': /^(\+506)?[2-8]\d{7}$/,
-  'es-CU': /^(\+53|0053)?5\d{7}$/,
-  'es-DO': /^(\+?1)?8[024]9\d{7}$/,
-  'es-HN': /^(\+?504)?[9|8|3|2]\d{7}$/,
-  'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/,
-  'es-ES': /^(\+?34)?[6|7]\d{8}$/,
-  'es-GT': /^(\+?502)?[2|6|7]\d{7}$/,
-  'es-PE': /^(\+?51)?9\d{8}$/,
-  'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/,
-  'es-NI': /^(\+?505)\d{7,8}$/,
-  'es-PA': /^(\+?507)\d{7,8}$/,
-  'es-PY': /^(\+?595|0)9[9876]\d{7}$/,
-  'es-SV': /^(\+?503)?[67]\d{7}$/,
-  'es-UY': /^(\+598|0)9[1-9][\d]{6}$/,
-  'es-VE': /^(\+?58)?(2|4)\d{9}$/,
-  'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,
-  'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,
-  'fi-FI': /^(\+?358|0)\s?(4[0-6]|50)\s?(\d\s?){4,8}$/,
-  'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/,
-  'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'fr-BF': /^(\+226|0)[67]\d{7}$/,
-  'fr-BJ': /^(\+229)\d{8}$/,
-  'fr-CD': /^(\+?243|0)?(8|9)\d{8}$/,
-  'fr-CM': /^(\+?237)6[0-9]{8}$/,
-  'fr-FR': /^(\+?33|0)[67]\d{8}$/,
-  'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/,
-  'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/,
-  'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/,
-  'fr-PF': /^(\+?689)?8[789]\d{6}$/,
-  'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/,
-  'fr-WF': /^(\+681)?\d{6}$/,
-  'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,
-  'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/,
-  'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,
-  'ir-IR': /^(\+98|0)?9\d{9}$/,
-  'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/,
-  'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,
-  'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,
-  'ka-GE': /^(\+?995)?(79\d{7}|5\d{8})$/,
-  'kk-KZ': /^(\+?7|8)?7\d{9}$/,
-  'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,
-  'ky-KG': /^(\+996\s?)?(22[0-9]|50[0-9]|55[0-9]|70[0-9]|75[0-9]|77[0-9]|880|990|995|996|997|998)\s?\d{3}\s?\d{3}$/,
-  'lt-LT': /^(\+370|8)\d{8}$/,
-  'lv-LV': /^(\+?371)2\d{7}$/,
-  'mg-MG': /^((\+?261|0)(2|3)\d)?\d{7}$/,
-  'mn-MN': /^(\+|00|011)?976(77|81|88|91|94|95|96|99)\d{6}$/,
-  'my-MM': /^(\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,
-  'ms-MY': /^(\+?60|0)1(([0145](-|\s)?\d{7,8})|([236-9](-|\s)?\d{7}))$/,
-  'mz-MZ': /^(\+?258)?8[234567]\d{7}$/,
-  'nb-NO': /^(\+?47)?[49]\d{7}$/,
-  'ne-NP': /^(\+?977)?9[78]\d{8}$/,
-  'nl-BE': /^(\+?32|0)4\d{8}$/,
-  'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,
-  'nl-AW': /^(\+)?297(56|59|64|73|74|99)\d{5}$/,
-  'nn-NO': /^(\+?47)?[49]\d{7}$/,
-  'pl-PL': /^(\+?48)? ?([5-8]\d|45) ?\d{3} ?\d{2} ?\d{2}$/,
-  'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[1-9]{1}\d{3}\-?\d{4}))$/,
-  'pt-PT': /^(\+?351)?9[1236]\d{7}$/,
-  'pt-AO': /^(\+?244)?9\d{8}$/,
-  'ro-MD': /^(\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\d{6}$/,
-  'ro-RO': /^(\+?40|0)\s?7\d{2}(\/|\s|\.|-)?\d{3}(\s|\.|-)?\d{3}$/,
-  'ru-RU': /^(\+?7|8)?9\d{9}$/,
-  'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,
-  'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,
-  'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'so-SO': /^(\+?252|0)((6[0-9])\d{7}|(7[1-9])\d{7})$/,
-  'sq-AL': /^(\+355|0)6[2-9]\d{7}$/,
-  'sr-RS': /^(\+3816|06)[- \d]{5,9}$/,
-  'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,
-  'tg-TJ': /^(\+?992)?[5][5]\d{7}$/,
-  'th-TH': /^(\+66|66|0)\d{9}$/,
-  'tr-TR': /^(\+?90|0)?5\d{9}$/,
-  'tk-TM': /^(\+993|993|8)\d{8}$/,
-  'uk-UA': /^(\+?38)?0(50|6[36-8]|7[357]|9[1-9])\d{7}$/,
-  'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,
-  'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,
-  'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,
-  'zh-TW': /^(\+?886\-?|0)?9\d{8}$/,
-  'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/,
-  'ar-YE': /^(((\+|00)9677|0?7)[0137]\d{7}|((\+|00)967|0)[1-7]\d{6})$/,
-  'ar-EH': /^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,
-  'fa-AF': /^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/,
-  'mk-MK': /^(\+?389|0)?((?:2[2-9]\d{6}|(?:3[1-4]|4[2-8])\d{6}|500\d{5}|5[2-9]\d{6}|7[0-9][2-9]\d{5}|8[1-9]\d{6}|800\d{5}|8009\d{4}))$/
-};
-/* eslint-enable max-len */
-
-// aliases
-phones['en-CA'] = phones['en-US'];
-phones['fr-CA'] = phones['en-CA'];
-phones['fr-BE'] = phones['nl-BE'];
-phones['zh-HK'] = phones['en-HK'];
-phones['zh-MO'] = phones['en-MO'];
-phones['ga-IE'] = phones['en-IE'];
-phones['fr-CH'] = phones['de-CH'];
-phones['it-CH'] = phones['fr-CH'];
-function isMobilePhone(str, locale, options) {
-  (0, _assertString.default)(str);
-  if (options && options.strictMode && !str.startsWith('+')) {
-    return false;
-  }
-  if (Array.isArray(locale)) {
-    return locale.some(function (key) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-      return false;
-    });
-  } else if (locale in phones) {
-    return phones[locale].test(str);
-    // alias falsey locale as 'any'
-  } else if (!locale || locale === 'any') {
-    for (var key in phones) {
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales = exports.locales = Object.keys(phones);
Index: ckend/node_modules/validator/lib/isMongoId.js
===================================================================
--- backend/node_modules/validator/lib/isMongoId.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMongoId;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isHexadecimal = _interopRequireDefault(require("./isHexadecimal"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isMongoId(str) {
-  (0, _assertString.default)(str);
-  return (0, _isHexadecimal.default)(str) && str.length === 24;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isMultibyte.js
===================================================================
--- backend/node_modules/validator/lib/isMultibyte.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isMultibyte;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/* eslint-disable no-control-regex */
-var multibyte = /[^\x00-\x7F]/;
-/* eslint-enable no-control-regex */
-
-function isMultibyte(str) {
-  (0, _assertString.default)(str);
-  return multibyte.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isNumeric.js
===================================================================
--- backend/node_modules/validator/lib/isNumeric.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isNumeric;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _alpha = require("./alpha");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var numericNoSymbols = /^[0-9]+$/;
-function isNumeric(str, options) {
-  (0, _assertString.default)(str);
-  if (options && options.no_symbols) {
-    return numericNoSymbols.test(str);
-  }
-  return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? _alpha.decimal[options.locale] : '.', "])?[0-9]+$")).test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isOctal.js
===================================================================
--- backend/node_modules/validator/lib/isOctal.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isOctal;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var octal = /^(0o)?[0-7]+$/i;
-function isOctal(str) {
-  (0, _assertString.default)(str);
-  return octal.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isPassportNumber.js
===================================================================
--- backend/node_modules/validator/lib/isPassportNumber.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,152 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isPassportNumber;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/**
- * Reference:
- * https://en.wikipedia.org/ -- Wikipedia
- * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number
- * https://countrycode.org/ -- Country Codes
- */
-var passportRegexByCountryCode = {
-  AM: /^[A-Z]{2}\d{7}$/,
-  // ARMENIA
-  AR: /^[A-Z]{3}\d{6}$/,
-  // ARGENTINA
-  AT: /^[A-Z]\d{7}$/,
-  // AUSTRIA
-  AU: /^[A-Z]\d{7}$/,
-  // AUSTRALIA
-  AZ: /^[A-Z]{1}\d{8}$/,
-  // AZERBAIJAN
-  BE: /^[A-Z]{2}\d{6}$/,
-  // BELGIUM
-  BG: /^\d{9}$/,
-  // BULGARIA
-  BR: /^[A-Z]{2}\d{6}$/,
-  // BRAZIL
-  BY: /^[A-Z]{2}\d{7}$/,
-  // BELARUS
-  CA: /^[A-Z]{2}\d{6}$|^[A-Z]\d{6}[A-Z]{2}$/,
-  // CANADA
-  CH: /^[A-Z]\d{7}$/,
-  // SWITZERLAND
-  CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,
-  // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits
-  CY: /^[A-Z](\d{6}|\d{8})$/,
-  // CYPRUS
-  CZ: /^\d{8}$/,
-  // CZECH REPUBLIC
-  DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,
-  // GERMANY
-  DK: /^\d{9}$/,
-  // DENMARK
-  DZ: /^\d{9}$/,
-  // ALGERIA
-  EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,
-  // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits
-  ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,
-  // SPAIN
-  FI: /^[A-Z]{2}\d{7}$/,
-  // FINLAND
-  FR: /^\d{2}[A-Z]{2}\d{5}$/,
-  // FRANCE
-  GB: /^\d{9}$/,
-  // UNITED KINGDOM
-  GR: /^[A-Z]{2}\d{7}$/,
-  // GREECE
-  HR: /^\d{9}$/,
-  // CROATIA
-  HU: /^[A-Z]{2}(\d{6}|\d{7})$/,
-  // HUNGARY
-  IE: /^[A-Z0-9]{2}\d{7}$/,
-  // IRELAND
-  IN: /^[A-Z]{1}-?\d{7}$/,
-  // INDIA
-  ID: /^[A-C]\d{7}$/,
-  // INDONESIA
-  IR: /^[A-Z]\d{8}$/,
-  // IRAN
-  IS: /^(A)\d{7}$/,
-  // ICELAND
-  IT: /^[A-Z0-9]{2}\d{7}$/,
-  // ITALY
-  JM: /^[Aa]\d{7}$/,
-  // JAMAICA
-  JP: /^[A-Z]{2}\d{7}$/,
-  // JAPAN
-  KR: /^[MS]\d{8}$/,
-  // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]
-  KZ: /^[a-zA-Z]\d{7}$/,
-  // KAZAKHSTAN
-  LI: /^[a-zA-Z]\d{5}$/,
-  // LIECHTENSTEIN
-  LT: /^[A-Z0-9]{8}$/,
-  // LITHUANIA
-  LU: /^[A-Z0-9]{8}$/,
-  // LUXEMBURG
-  LV: /^[A-Z0-9]{2}\d{7}$/,
-  // LATVIA
-  LY: /^[A-Z0-9]{8}$/,
-  // LIBYA
-  MT: /^\d{7}$/,
-  // MALTA
-  MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,
-  // MOZAMBIQUE
-  MY: /^[AHK]\d{8}$/,
-  // MALAYSIA
-  MX: /^\d{10,11}$/,
-  // MEXICO
-  NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/,
-  // NETHERLANDS
-  NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,
-  // NEW ZEALAND
-  PH: /^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,
-  // PHILIPPINES
-  PK: /^[A-Z]{2}\d{7}$/,
-  // PAKISTAN
-  PL: /^[A-Z]{2}\d{7}$/,
-  // POLAND
-  PT: /^[A-Z]\d{6}$/,
-  // PORTUGAL
-  RO: /^\d{8,9}$/,
-  // ROMANIA
-  RU: /^\d{9}$/,
-  // RUSSIAN FEDERATION
-  SE: /^\d{8}$/,
-  // SWEDEN
-  SL: /^(P)[A-Z]\d{7}$/,
-  // SLOVENIA
-  SK: /^[0-9A-Z]\d{7}$/,
-  // SLOVAKIA
-  TH: /^[A-Z]{1,2}\d{6,7}$/,
-  // THAILAND
-  TR: /^[A-Z]\d{8}$/,
-  // TURKEY
-  UA: /^[A-Z]{2}\d{6}$/,
-  // UKRAINE
-  US: /^\d{9}$|^[A-Z]\d{8}$/,
-  // UNITED STATES
-  ZA: /^[TAMD]\d{8}$/ // SOUTH AFRICA
-};
-var locales = exports.locales = Object.keys(passportRegexByCountryCode);
-
-/**
- * Check if str is a valid passport number
- * relative to provided ISO Country Code.
- *
- * @param {string} str
- * @param {string} countryCode
- * @return {boolean}
- */
-function isPassportNumber(str, countryCode) {
-  (0, _assertString.default)(str);
-  /** Remove All Whitespaces, Convert to UPPERCASE */
-  var normalizedStr = str.replace(/\s/g, '').toUpperCase();
-  return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);
-}
Index: ckend/node_modules/validator/lib/isPort.js
===================================================================
--- backend/node_modules/validator/lib/isPort.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isPort;
-var _isInt = _interopRequireDefault(require("./isInt"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isPort(str) {
-  return (0, _isInt.default)(str, {
-    allow_leading_zeroes: false,
-    min: 0,
-    max: 65535
-  });
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isPostalCode.js
===================================================================
--- backend/node_modules/validator/lib/isPostalCode.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,106 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isPostalCode;
-exports.locales = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-// common patterns
-var threeDigit = /^\d{3}$/;
-var fourDigit = /^\d{4}$/;
-var fiveDigit = /^\d{5}$/;
-var sixDigit = /^\d{6}$/;
-var patterns = {
-  AD: /^AD\d{3}$/,
-  AT: fourDigit,
-  AU: fourDigit,
-  AZ: /^AZ\d{4}$/,
-  BA: /^([7-8]\d{4}$)/,
-  BD: /^([1-8][0-9]{3}|9[0-4][0-9]{2})$/,
-  BE: fourDigit,
-  BG: fourDigit,
-  BR: /^\d{5}-?\d{3}$/,
-  BY: /^2[1-4]\d{4}$/,
-  CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,
-  CH: fourDigit,
-  CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,
-  CO: /^(05|08|11|13|15|17|18|19|20|23|25|27|41|44|47|50|52|54|63|66|68|70|73|76|81|85|86|88|91|94|95|97|99)(\d{4})$/,
-  CZ: /^\d{3}\s?\d{2}$/,
-  DE: fiveDigit,
-  DK: fourDigit,
-  DO: fiveDigit,
-  DZ: fiveDigit,
-  EE: fiveDigit,
-  ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,
-  FI: fiveDigit,
-  FR: /^(?:(?:0[1-9]|[1-8]\d|9[0-5])\d{3}|97[1-46]\d{2})$/,
-  GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,
-  GR: /^\d{3}\s?\d{2}$/,
-  HR: /^([1-5]\d{4}$)/,
-  HT: /^HT\d{4}$/,
-  HU: fourDigit,
-  ID: fiveDigit,
-  IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,
-  IL: /^(\d{5}|\d{7})$/,
-  IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,
-  IR: /^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/,
-  IS: threeDigit,
-  IT: fiveDigit,
-  JP: /^\d{3}\-\d{4}$/,
-  KE: fiveDigit,
-  KR: /^(\d{5}|\d{6})$/,
-  LI: /^(948[5-9]|949[0-7])$/,
-  LT: /^LT\-\d{5}$/,
-  LU: fourDigit,
-  LV: /^LV\-\d{4}$/,
-  LK: fiveDigit,
-  MG: threeDigit,
-  MX: fiveDigit,
-  MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/,
-  MY: fiveDigit,
-  NL: /^[1-9]\d{3}\s?(?!sa|sd|ss)[a-z]{2}$/i,
-  NO: fourDigit,
-  NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,
-  NZ: fourDigit,
-  // https://www.pakpost.gov.pk/postcodes.php
-  PK: fiveDigit,
-  PL: /^\d{2}\-\d{3}$/,
-  PR: /^00[679]\d{2}([ -]\d{4})?$/,
-  PT: /^\d{4}\-\d{3}?$/,
-  RO: sixDigit,
-  RU: sixDigit,
-  SA: fiveDigit,
-  SE: /^[1-9]\d{2}\s?\d{2}$/,
-  SG: sixDigit,
-  SI: fourDigit,
-  SK: /^\d{3}\s?\d{2}$/,
-  TH: fiveDigit,
-  TN: fourDigit,
-  TW: /^\d{3}(\d{2,3})?$/,
-  UA: fiveDigit,
-  US: /^\d{5}(-\d{4})?$/,
-  ZA: fourDigit,
-  ZM: fiveDigit
-};
-var locales = exports.locales = Object.keys(patterns);
-function isPostalCode(str, locale) {
-  (0, _assertString.default)(str);
-  if (locale in patterns) {
-    return patterns[locale].test(str);
-  } else if (locale === 'any') {
-    for (var key in patterns) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (patterns.hasOwnProperty(key)) {
-        var pattern = patterns[key];
-        if (pattern.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
Index: ckend/node_modules/validator/lib/isRFC3339.js
===================================================================
--- backend/node_modules/validator/lib/isRFC3339.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isRFC3339;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */
-
-var dateFullYear = /[0-9]{4}/;
-var dateMonth = /(0[1-9]|1[0-2])/;
-var dateMDay = /([12]\d|0[1-9]|3[01])/;
-var timeHour = /([01][0-9]|2[0-3])/;
-var timeMinute = /[0-5][0-9]/;
-var timeSecond = /([0-5][0-9]|60)/;
-var timeSecFrac = /(\.[0-9]+)?/;
-var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source));
-var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")"));
-var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source));
-var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source));
-var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source));
-var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$"));
-function isRFC3339(str) {
-  (0, _assertString.default)(str);
-  return rfc3339.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isRgbColor.js
===================================================================
--- backend/node_modules/validator/lib/isRgbColor.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,42 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isRgbColor;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } /* eslint-disable prefer-rest-params */
-var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/;
-var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)$/;
-var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var startsWithRgb = /^rgba?/;
-function isRgbColor(str, options) {
-  (0, _assertString.default)(str);
-  // default options to true for percent and false for spaces
-  var allowSpaces = false;
-  var includePercentValues = true;
-  if (_typeof(options) !== 'object') {
-    if (arguments.length >= 2) {
-      includePercentValues = arguments[1];
-    }
-  } else {
-    allowSpaces = options.allowSpaces !== undefined ? options.allowSpaces : allowSpaces;
-    includePercentValues = options.includePercentValues !== undefined ? options.includePercentValues : includePercentValues;
-  }
-  if (allowSpaces) {
-    // make sure it starts with continous rgba? without spaces before stripping
-    if (!startsWithRgb.test(str)) {
-      return false;
-    }
-    // strip all whitespace
-    str = str.replace(/\s/g, '');
-  }
-  if (!includePercentValues) {
-    return rgbColor.test(str) || rgbaColor.test(str);
-  }
-  return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isSemVer.js
===================================================================
--- backend/node_modules/validator/lib/isSemVer.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,22 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isSemVer;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _multilineRegex = _interopRequireDefault(require("./util/multilineRegex"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-/**
- * Regular Expression to match
- * semantic versioning (SemVer)
- * built from multi-line, multi-parts regexp
- * Reference: https://semver.org/
- */
-var semanticVersioningRegex = (0, _multilineRegex.default)(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i');
-function isSemVer(str) {
-  (0, _assertString.default)(str);
-  return semanticVersioningRegex.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isSlug.js
===================================================================
--- backend/node_modules/validator/lib/isSlug.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isSlug;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/;
-function isSlug(str) {
-  (0, _assertString.default)(str);
-  return charsetRegex.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isStrongPassword.js
===================================================================
--- backend/node_modules/validator/lib/isStrongPassword.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,99 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isStrongPassword;
-var _merge = _interopRequireDefault(require("./util/merge"));
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var upperCaseRegex = /^[A-Z]$/;
-var lowerCaseRegex = /^[a-z]$/;
-var numberRegex = /^[0-9]$/;
-var symbolRegex = /^[-#!$@£%^&*()_+|~=`{}\[\]:";'<>?,.\/\\ ]$/;
-var defaultOptions = {
-  minLength: 8,
-  minLowercase: 1,
-  minUppercase: 1,
-  minNumbers: 1,
-  minSymbols: 1,
-  returnScore: false,
-  pointsPerUnique: 1,
-  pointsPerRepeat: 0.5,
-  pointsForContainingLower: 10,
-  pointsForContainingUpper: 10,
-  pointsForContainingNumber: 10,
-  pointsForContainingSymbol: 10
-};
-
-/* Counts number of occurrences of each char in a string
- * could be moved to util/ ?
-*/
-function countChars(str) {
-  var result = {};
-  Array.from(str).forEach(function (char) {
-    var curVal = result[char];
-    if (curVal) {
-      result[char] += 1;
-    } else {
-      result[char] = 1;
-    }
-  });
-  return result;
-}
-
-/* Return information about a password */
-function analyzePassword(password) {
-  var charMap = countChars(password);
-  var analysis = {
-    length: password.length,
-    uniqueChars: Object.keys(charMap).length,
-    uppercaseCount: 0,
-    lowercaseCount: 0,
-    numberCount: 0,
-    symbolCount: 0
-  };
-  Object.keys(charMap).forEach(function (char) {
-    /* istanbul ignore else */
-    if (upperCaseRegex.test(char)) {
-      analysis.uppercaseCount += charMap[char];
-    } else if (lowerCaseRegex.test(char)) {
-      analysis.lowercaseCount += charMap[char];
-    } else if (numberRegex.test(char)) {
-      analysis.numberCount += charMap[char];
-    } else if (symbolRegex.test(char)) {
-      analysis.symbolCount += charMap[char];
-    }
-  });
-  return analysis;
-}
-function scorePassword(analysis, scoringOptions) {
-  var points = 0;
-  points += analysis.uniqueChars * scoringOptions.pointsPerUnique;
-  points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat;
-  if (analysis.lowercaseCount > 0) {
-    points += scoringOptions.pointsForContainingLower;
-  }
-  if (analysis.uppercaseCount > 0) {
-    points += scoringOptions.pointsForContainingUpper;
-  }
-  if (analysis.numberCount > 0) {
-    points += scoringOptions.pointsForContainingNumber;
-  }
-  if (analysis.symbolCount > 0) {
-    points += scoringOptions.pointsForContainingSymbol;
-  }
-  return points;
-}
-function isStrongPassword(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-  (0, _assertString.default)(str);
-  var analysis = analyzePassword(str);
-  options = (0, _merge.default)(options || {}, defaultOptions);
-  if (options.returnScore) {
-    return scorePassword(analysis, options);
-  }
-  return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isSurrogatePair.js
===================================================================
--- backend/node_modules/validator/lib/isSurrogatePair.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isSurrogatePair;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
-function isSurrogatePair(str) {
-  (0, _assertString.default)(str);
-  return surrogatePair.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isTaxID.js
===================================================================
--- backend/node_modules/validator/lib/isTaxID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1398 +1,0 @@
-"use strict";
-
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isTaxID;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var algorithms = _interopRequireWildcard(require("./util/algorithms"));
-var _isDate = _interopRequireDefault(require("./isDate"));
-function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
-function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
-function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-/**
- * TIN Validation
- * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom.
- *
- * EU-UK:
- * National TIN validity is calculated using public algorithms as made available by DG TAXUD.
- *
- * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information.
- *
- * US:
- * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number,
- *  is used to identify a business entity.
- *
- * NOTES:
- *  - Prefix 47 is being reserved for future use
- *  - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.
- *
- * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes`
- * for more information.
- */
-
-// Locale functions
-
-/*
- * bg-BG validation function
- * (Edinen graždanski nomer (EGN/ЕГН), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last) digit
- */
-function bgBgCheck(tin) {
-  // Extract full year, normalize month and check birth date validity
-  var century_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 40) {
-    month -= 40;
-    century_year = "20".concat(century_year);
-  } else if (month > 20) {
-    month -= 20;
-    century_year = "18".concat(century_year);
-  } else {
-    century_year = "19".concat(century_year);
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Calculate checksum by multiplying digits with fixed values
-  var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];
-  var checksum = 0;
-  for (var i = 0; i < multip_lookup.length; i++) {
-    checksum += digits[i] * multip_lookup[i];
-  }
-  checksum = checksum % 11 === 10 ? 0 : checksum % 11;
-  return checksum === digits[9];
-}
-
-/**
- * Check if an input is a valid Canadian SIN (Social Insurance Number)
- *
- * The Social Insurance Number (SIN) is a 9 digit number that
- * you need to work in Canada or to have access to government programs and benefits.
- *
- * https://en.wikipedia.org/wiki/Social_Insurance_Number
- * https://www.canada.ca/en/employment-social-development/services/sin.html
- * https://www.codercrunch.com/challenge/819302488/sin-validator
- *
- * @param {string} input
- * @return {boolean}
- */
-function isCanadianSIN(input) {
-  var digitsArray = input.split('');
-  var even = digitsArray.filter(function (_, idx) {
-    return idx % 2;
-  }).map(function (i) {
-    return Number(i) * 2;
-  }).join('').split('');
-  var total = digitsArray.filter(function (_, idx) {
-    return !(idx % 2);
-  }).concat(even).map(function (i) {
-    return Number(i);
-  }).reduce(function (acc, cur) {
-    return acc + cur;
-  });
-  return total % 10 === 0;
-}
-
-/*
- * cs-CZ validation function
- * (Rodné číslo (RČ), persons only)
- * Checks if birth date (first six digits) is valid and divisibility by 11
- * Material not in DG TAXUD document sourced from:
- * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm`
- * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx`
- */
-function csCzCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract full year from TIN length
-  var full_year = parseInt(tin.slice(0, 2), 10);
-  if (tin.length === 10) {
-    if (full_year < 54) {
-      full_year = "20".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-  } else {
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-    if (full_year < 54) {
-      full_year = "19".concat(full_year);
-    } else {
-      return false; // No 18XX years seen in any of the resources
-    }
-  }
-  // Add missing zero if needed
-  if (full_year.length === 3) {
-    full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');
-  }
-
-  // Extract month from TIN and normalize
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 50) {
-    month -= 50;
-  }
-  if (month > 20) {
-    // Month-plus-twenty was only introduced in 2004
-    if (parseInt(full_year, 10) < 2004) {
-      return false;
-    }
-    month -= 20;
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Verify divisibility by 11
-  if (tin.length === 10) {
-    if (parseInt(tin, 10) % 11 !== 0) {
-      // Some numbers up to and including 1985 are still valid if
-      // check (last) digit equals 0 and modulo of first 9 digits equals 10
-      var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;
-      if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {
-        if (parseInt(tin.slice(9), 10) !== 0) {
-          return false;
-        }
-      } else {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * de-AT validation function
- * (Abgabenkontonummer, persons/entities)
- * Verify TIN validity by calling luhnCheck()
- */
-function deAtCheck(tin) {
-  return algorithms.luhnCheck(tin);
-}
-
-/*
- * de-DE validation function
- * (Steueridentifikationsnummer (Steuer-IdNr.), persons only)
- * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit
- * Partial implementation of spec (same result with both algorithms always)
- */
-function deDeCheck(tin) {
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Fill array with strings of number positions
-  var occurrences = [];
-  for (var i = 0; i < digits.length - 1; i++) {
-    occurrences.push('');
-    for (var j = 0; j < digits.length - 1; j++) {
-      if (digits[i] === digits[j]) {
-        occurrences[i] += j;
-      }
-    }
-  }
-
-  // Remove digits with one occurrence and test for only one duplicate/triplicate
-  occurrences = occurrences.filter(function (a) {
-    return a.length > 1;
-  });
-  if (occurrences.length !== 2 && occurrences.length !== 3) {
-    return false;
-  }
-
-  // In case of triplicate value only two digits are allowed next to each other
-  if (occurrences[0].length === 3) {
-    var trip_locations = occurrences[0].split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var recurrent = 0; // Amount of neighbor occurrences
-    for (var _i = 0; _i < trip_locations.length - 1; _i++) {
-      if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {
-        recurrent += 1;
-      }
-    }
-    if (recurrent === 2) {
-      return false;
-    }
-  }
-  return algorithms.iso7064Check(tin);
-}
-
-/*
- * dk-DK validation function
- * (CPR-nummer (personnummer), persons only)
- * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit,
- * and calculates check (last) digit
- */
-function dkDkCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract year, check if valid for given century digit and add century
-  var year = parseInt(tin.slice(4, 6), 10);
-  var century_digit = tin.slice(6, 7);
-  switch (century_digit) {
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-      year = "19".concat(year);
-      break;
-    case '4':
-    case '9':
-      if (year < 37) {
-        year = "20".concat(year);
-      } else {
-        year = "19".concat(year);
-      }
-      break;
-    default:
-      if (year < 37) {
-        year = "20".concat(year);
-      } else if (year > 58) {
-        year = "18".concat(year);
-      } else {
-        return false;
-      }
-      break;
-  }
-  // Add missing zero if needed
-  if (year.length === 3) {
-    year = [year.slice(0, 2), '0', year.slice(2)].join('');
-  }
-  // Check date validity
-  var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 4;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 9; i++) {
-    checksum += digits[i] * weight;
-    weight -= 1;
-    if (weight === 1) {
-      weight = 7;
-    }
-  }
-  checksum %= 11;
-  if (checksum === 1) {
-    return false;
-  }
-  return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;
-}
-
-/*
- * el-CY validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only)
- * Verify TIN validity by calculating ASCII value of check (last) character
- */
-function elCyCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.slice(0, 8).split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  // add digits in even places
-  for (var i = 1; i < digits.length; i += 2) {
-    checksum += digits[i];
-  }
-
-  // add digits in odd places
-  for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {
-    if (digits[_i2] < 2) {
-      checksum += 1 - digits[_i2];
-    } else {
-      checksum += 2 * (digits[_i2] - 2) + 5;
-      if (digits[_i2] > 4) {
-        checksum += 2;
-      }
-    }
-  }
-  return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);
-}
-
-/*
- * el-GR validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities)
- * Verify TIN validity by calculating check (last) digit
- * Algorithm not in DG TAXUD document- sourced from:
- * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85`
- */
-function elGrCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  for (var i = 0; i < 8; i++) {
-    checksum += digits[i] * Math.pow(2, 8 - i);
-  }
-  return checksum % 11 % 10 === digits[8];
-}
-
-/*
- * en-GB validation function (should go here if needed)
- * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR),
- * persons/entities respectively)
- */
-
-/*
- * en-IE validation function
- * (Personal Public Service Number (PPS No), persons only)
- * Verify TIN validity by calculating check (second to last) character
- */
-function enIeCheck(tin) {
-  var checksum = algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8);
-  if (tin.length === 9 && tin[8] !== 'W') {
-    checksum += (tin[8].charCodeAt(0) - 64) * 9;
-  }
-  checksum %= 23;
-  if (checksum === 0) {
-    return tin[7].toUpperCase() === 'W';
-  }
-  return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);
-}
-
-// Valid US IRS campus prefixes
-var enUsCampusPrefix = {
-  andover: ['10', '12'],
-  atlanta: ['60', '67'],
-  austin: ['50', '53'],
-  brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],
-  cincinnati: ['30', '32', '35', '36', '37', '38', '61'],
-  fresno: ['15', '24'],
-  internet: ['20', '26', '27', '45', '46', '47'],
-  kansas: ['40', '44'],
-  memphis: ['94', '95'],
-  ogden: ['80', '90'],
-  philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],
-  sba: ['31']
-};
-
-// Return an array of all US IRS campus prefixes
-function enUsGetPrefixes() {
-  var prefixes = [];
-  for (var location in enUsCampusPrefix) {
-    // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-    // istanbul ignore else
-    if (enUsCampusPrefix.hasOwnProperty(location)) {
-      prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));
-    }
-  }
-  return prefixes;
-}
-
-/*
- * en-US validation function
- * Verify that the TIN starts with a valid IRS campus prefix
- */
-function enUsCheck(tin) {
-  return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;
-}
-
-/*
- * es-AR validation function
- * Clave Única de Identificación Tributaria (CUIT/CUIL)
- * Sourced from:
- * - https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id_nivel1=3036&id_nivel2=3040&p=Conceptos%20b%C3%A1sicos
- * - https://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Identificaci%C3%B3n_Tributaria
- */
-
-function esArCheck(tin) {
-  var accum = 0;
-  var digits = tin.split('');
-  var digit = parseInt(digits.pop(), 10);
-  for (var i = 0; i < digits.length; i++) {
-    accum += digits[9 - i] * (2 + i % 6);
-  }
-  var verif = 11 - accum % 11;
-  if (verif === 11) {
-    verif = 0;
-  } else if (verif === 10) {
-    verif = 9;
-  }
-  return digit === verif;
-}
-
-/*
- * es-ES validation function
- * (Documento Nacional de Identidad (DNI)
- * or Número de Identificación de Extranjero (NIE), persons only)
- * Verify TIN validity by calculating check (last) character
- */
-function esEsCheck(tin) {
-  // Split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Replace initial letter if needed
-  if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {
-    var lead_replace = 0;
-    switch (chars[0]) {
-      case 'Y':
-        lead_replace = 1;
-        break;
-      case 'Z':
-        lead_replace = 2;
-        break;
-      default:
-    }
-    chars.splice(0, 1, lead_replace);
-    // Fill with zeros if smaller than proper
-  } else {
-    while (chars.length < 9) {
-      chars.unshift(0);
-    }
-  }
-
-  // Calculate checksum and check according to lookup
-  var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-  chars = chars.join('');
-  var checksum = parseInt(chars.slice(0, 8), 10) % 23;
-  return chars[8] === lookup[checksum];
-}
-
-/*
- * et-EE validation function
- * (Isikukood (IK), persons only)
- * Checks if birth date (century digit and six following) is valid and calculates check (last) digit
- * Material not in DG TAXUD document sourced from:
- * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf`
- */
-function etEeCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(1, 3);
-  var century_digit = tin.slice(0, 1);
-  switch (century_digit) {
-    case '1':
-    case '2':
-      full_year = "18".concat(full_year);
-      break;
-    case '3':
-    case '4':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 1;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 10; i++) {
-    checksum += digits[i] * weight;
-    weight += 1;
-    if (weight === 10) {
-      weight = 1;
-    }
-  }
-  // Do again if modulo 11 of checksum is 10
-  if (checksum % 11 === 10) {
-    checksum = 0;
-    weight = 3;
-    for (var _i3 = 0; _i3 < 10; _i3++) {
-      checksum += digits[_i3] * weight;
-      weight += 1;
-      if (weight === 10) {
-        weight = 1;
-      }
-    }
-    if (checksum % 11 === 10) {
-      return digits[10] === 0;
-    }
-  }
-  return checksum % 11 === digits[10];
-}
-
-/*
- * fi-FI validation function
- * (Henkilötunnus (HETU), persons only)
- * Checks if birth date (first six digits plus century symbol) is valid
- * and calculates check (last) digit
- */
-function fiFiCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(4, 6);
-  var century_symbol = tin.slice(6, 7);
-  switch (century_symbol) {
-    case '+':
-      full_year = "18".concat(full_year);
-      break;
-    case '-':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character
-  var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;
-  if (checksum < 10) {
-    return checksum === parseInt(tin.slice(10), 10);
-  }
-  checksum -= 10;
-  var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];
-  return letters_lookup[checksum] === tin.slice(10);
-}
-
-/*
- * fr/nl-BE validation function
- * (Numéro national (N.N.), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last two) digits
- */
-function frBeCheck(tin) {
-  // Zero month/day value is acceptable
-  if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {
-    // Extract date from first six digits of TIN
-    var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6));
-    if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
-      return false;
-    }
-  }
-  var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;
-  var checkdigits = parseInt(tin.slice(9, 11), 10);
-  if (checksum !== checkdigits) {
-    checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97;
-    if (checksum !== checkdigits) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * fr-FR validation function
- * (Numéro fiscal de référence (numéro SPI), persons only)
- * Verify TIN validity by calculating check (last three) digits
- */
-function frFrCheck(tin) {
-  tin = tin.replace(/\s/g, '');
-  var checksum = parseInt(tin.slice(0, 10), 10) % 511;
-  var checkdigits = parseInt(tin.slice(10, 13), 10);
-  return checksum === checkdigits;
-}
-
-/*
- * fr/lb-LU validation function
- * (numéro d’identification personnelle, persons only)
- * Verify birth date validity and run Luhn and Verhoeff checks
- */
-function frLuCheck(tin) {
-  // Extract date and check validity
-  var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Run Luhn check
-  if (!algorithms.luhnCheck(tin.slice(0, 12))) {
-    return false;
-  }
-  // Remove Luhn check digit and run Verhoeff check
-  return algorithms.verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12]));
-}
-
-/*
- * hr-HR validation function
- * (Osobni identifikacijski broj (OIB), persons/entities)
- * Verify TIN validity by calling iso7064Check(digits)
- */
-function hrHrCheck(tin) {
-  return algorithms.iso7064Check(tin);
-}
-
-/*
- * hu-HU validation function
- * (Adóazonosító jel, persons only)
- * Verify TIN validity by calculating check (last) digit
- */
-function huHuCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 8;
-  for (var i = 1; i < 9; i++) {
-    checksum += digits[i] * (i + 1);
-  }
-  return checksum % 11 === digits[9];
-}
-
-/*
- * lt-LT validation function (should go here if needed)
- * (Asmens kodas, persons/entities respectively)
- * Current validation check is alias of etEeCheck- same format applies
- */
-
-/*
- * it-IT first/last name validity check
- * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity
- * Due to lack of clarity between resources ("Are only Italian consonants used?
- * What happens if a person has X in their name?" etc.) only two test conditions
- * have been implemented:
- * Vowels may only be followed by other vowels or an X character
- * and X characters after vowels may only be followed by other X characters.
- */
-function itItNameCheck(name) {
-  // true at the first occurrence of a vowel
-  var vowelflag = false;
-
-  // true at the first occurrence of an X AFTER vowel
-  // (to properly handle last names with X as consonant)
-  var xflag = false;
-  for (var i = 0; i < 3; i++) {
-    if (!vowelflag && /[AEIOU]/.test(name[i])) {
-      vowelflag = true;
-    } else if (!xflag && vowelflag && name[i] === 'X') {
-      xflag = true;
-    } else if (i > 0) {
-      if (vowelflag && !xflag) {
-        if (!/[AEIOU]/.test(name[i])) {
-          return false;
-        }
-      }
-      if (xflag) {
-        if (!/X/.test(name[i])) {
-          return false;
-        }
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * it-IT validation function
- * (Codice fiscale (TIN-IT), persons only)
- * Verify name, birth date and codice catastale validity
- * and calculate check character.
- * Material not in DG-TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/Italian_fiscal_code`
- */
-function itItCheck(tin) {
-  // Capitalize and split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Check first and last name validity calling itItNameCheck()
-  if (!itItNameCheck(chars.slice(0, 3))) {
-    return false;
-  }
-  if (!itItNameCheck(chars.slice(3, 6))) {
-    return false;
-  }
-
-  // Convert letters in number spaces back to numbers if any
-  var number_locations = [6, 7, 9, 10, 12, 13, 14];
-  var number_replace = {
-    L: '0',
-    M: '1',
-    N: '2',
-    P: '3',
-    Q: '4',
-    R: '5',
-    S: '6',
-    T: '7',
-    U: '8',
-    V: '9'
-  };
-  for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {
-    var i = _number_locations[_i4];
-    if (chars[i] in number_replace) {
-      chars.splice(i, 1, number_replace[chars[i]]);
-    }
-  }
-
-  // Extract month and day, and check date validity
-  var month_replace = {
-    A: '01',
-    B: '02',
-    C: '03',
-    D: '04',
-    E: '05',
-    H: '06',
-    L: '07',
-    M: '08',
-    P: '09',
-    R: '10',
-    S: '11',
-    T: '12'
-  };
-  var month = month_replace[chars[8]];
-  var day = parseInt(chars[9] + chars[10], 10);
-  if (day > 40) {
-    day -= 40;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day);
-  if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character by adding up even and odd characters as numbers
-  var checksum = 0;
-  for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {
-    var char_to_int = parseInt(chars[_i5], 10);
-    if (isNaN(char_to_int)) {
-      char_to_int = chars[_i5].charCodeAt(0) - 65;
-    }
-    checksum += char_to_int;
-  }
-  var odd_convert = {
-    // Maps of characters at odd places
-    A: 1,
-    B: 0,
-    C: 5,
-    D: 7,
-    E: 9,
-    F: 13,
-    G: 15,
-    H: 17,
-    I: 19,
-    J: 21,
-    K: 2,
-    L: 4,
-    M: 18,
-    N: 20,
-    O: 11,
-    P: 3,
-    Q: 6,
-    R: 8,
-    S: 12,
-    T: 14,
-    U: 16,
-    V: 10,
-    W: 22,
-    X: 25,
-    Y: 24,
-    Z: 23,
-    0: 1,
-    1: 0
-  };
-  for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {
-    var _char_to_int = 0;
-    if (chars[_i6] in odd_convert) {
-      _char_to_int = odd_convert[chars[_i6]];
-    } else {
-      var multiplier = parseInt(chars[_i6], 10);
-      _char_to_int = 2 * multiplier + 1;
-      if (multiplier > 4) {
-        _char_to_int += 2;
-      }
-    }
-    checksum += _char_to_int;
-  }
-  if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * lv-LV validation function
- * (Personas kods (PK), persons only)
- * Check validity of birth date and calculate check (last) digit
- * Support only for old format numbers (not starting with '32', issued before 2017/07/01)
- * Material not in DG TAXUD document sourced from:
- * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/`
- */
-function lvLvCheck(tin) {
-  tin = tin.replace(/\W/, '');
-  // Extract date from TIN
-  var day = tin.slice(0, 2);
-  if (day !== '32') {
-    // No date/checksum check if new format
-    var month = tin.slice(2, 4);
-    if (month !== '00') {
-      // No date check if unknown month
-      var full_year = tin.slice(4, 6);
-      switch (tin[6]) {
-        case '0':
-          full_year = "18".concat(full_year);
-          break;
-        case '1':
-          full_year = "19".concat(full_year);
-          break;
-        default:
-          full_year = "20".concat(full_year);
-          break;
-      }
-      // Check date validity
-      var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day);
-      if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-        return false;
-      }
-    }
-
-    // Calculate check digit
-    var checksum = 1101;
-    var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-    for (var i = 0; i < tin.length - 1; i++) {
-      checksum -= parseInt(tin[i], 10) * multip_lookup[i];
-    }
-    return parseInt(tin[10], 10) === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * mt-MT validation function
- * (Identity Card Number or Unique Taxpayer Reference, persons/entities)
- * Verify Identity Card Number structure (no other tests found)
- */
-function mtMtCheck(tin) {
-  if (tin.length !== 9) {
-    // No tests for UTR
-    var chars = tin.toUpperCase().split('');
-    // Fill with zeros if smaller than proper
-    while (chars.length < 8) {
-      chars.unshift(0);
-    }
-    // Validate format according to last character
-    switch (tin[7]) {
-      case 'A':
-      case 'P':
-        if (parseInt(chars[6], 10) === 0) {
-          return false;
-        }
-        break;
-      default:
-        {
-          var first_part = parseInt(chars.join('').slice(0, 5), 10);
-          if (first_part > 32000) {
-            return false;
-          }
-          var second_part = parseInt(chars.join('').slice(5, 7), 10);
-          if (first_part === second_part) {
-            return false;
-          }
-        }
-    }
-  }
-  return true;
-}
-
-/*
- * nl-NL validation function
- * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN),
- * persons/entities respectively)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function nlNlCheck(tin) {
-  return algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11 === parseInt(tin[8], 10);
-}
-
-/*
- * pl-PL validation function
- * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL)
- * or Numer identyfikacji podatkowej (NIP), persons/entities)
- * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit
- */
-function plPlCheck(tin) {
-  // NIP
-  if (tin.length === 10) {
-    // Calculate last digit by multiplying with lookup
-    var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];
-    var _checksum = 0;
-    for (var i = 0; i < lookup.length; i++) {
-      _checksum += parseInt(tin[i], 10) * lookup[i];
-    }
-    _checksum %= 11;
-    if (_checksum === 10) {
-      return false;
-    }
-    return _checksum === parseInt(tin[9], 10);
-  }
-
-  // PESEL
-  // Extract full year using month
-  var full_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 80) {
-    full_year = "18".concat(full_year);
-    month -= 80;
-  } else if (month > 60) {
-    full_year = "22".concat(full_year);
-    month -= 60;
-  } else if (month > 40) {
-    full_year = "21".concat(full_year);
-    month -= 40;
-  } else if (month > 20) {
-    full_year = "20".concat(full_year);
-    month -= 20;
-  } else {
-    full_year = "19".concat(full_year);
-  }
-  // Add leading zero to month if needed
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate last digit by multiplying with odd one-digit numbers except 5
-  var checksum = 0;
-  var multiplier = 1;
-  for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {
-    checksum += parseInt(tin[_i7], 10) * multiplier % 10;
-    multiplier += 2;
-    if (multiplier > 10) {
-      multiplier = 1;
-    } else if (multiplier === 5) {
-      multiplier += 2;
-    }
-  }
-  checksum = 10 - checksum % 10;
-  return checksum === parseInt(tin[10], 10);
-}
-
-/*
-* pt-BR validation function
-* (Cadastro de Pessoas Físicas (CPF, persons)
-* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities)
-* Both inputs will be validated
-*/
-
-function ptBrCheck(tin) {
-  if (tin.length === 11) {
-    var _sum;
-    var remainder;
-    _sum = 0;
-    if (
-    // Reject known invalid CPFs
-    tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;
-    for (var i = 1; i <= 9; i++) _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;
-    _sum = 0;
-    for (var _i8 = 1; _i8 <= 10; _i8++) _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;
-    return true;
-  }
-  if (
-  // Reject know invalid CNPJs
-  tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {
-    return false;
-  }
-  var length = tin.length - 2;
-  var identifiers = tin.substring(0, length);
-  var verificators = tin.substring(length);
-  var sum = 0;
-  var pos = length - 7;
-  for (var _i9 = length; _i9 >= 1; _i9--) {
-    sum += identifiers.charAt(length - _i9) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  var result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(0), 10)) {
-    return false;
-  }
-  length += 1;
-  identifiers = tin.substring(0, length);
-  sum = 0;
-  pos = length - 7;
-  for (var _i0 = length; _i0 >= 1; _i0--) {
-    sum += identifiers.charAt(length - _i0) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(1), 10)) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * pt-PT validation function
- * (Número de identificação fiscal (NIF), persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ptPtCheck(tin) {
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-}
-
-/*
- * ro-RO validation function
- * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF),
- * persons only)
- * Verify CNP validity by calculating check (last) digit (test not found for CIF)
- * Material not in DG TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/National_identification_number#Romania`
- */
-function roRoCheck(tin) {
-  if (tin.slice(0, 4) !== '9000') {
-    // No test found for this format
-    // Extract full year using century digit if possible
-    var full_year = tin.slice(1, 3);
-    switch (tin[0]) {
-      case '1':
-      case '2':
-        full_year = "19".concat(full_year);
-        break;
-      case '3':
-      case '4':
-        full_year = "18".concat(full_year);
-        break;
-      case '5':
-      case '6':
-        full_year = "20".concat(full_year);
-        break;
-      default:
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-    if (date.length === 8) {
-      if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
-        return false;
-      }
-    } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-
-    // Calculate check digit
-    var digits = tin.split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
-    var checksum = 0;
-    for (var i = 0; i < multipliers.length; i++) {
-      checksum += digits[i] * multipliers[i];
-    }
-    if (checksum % 11 === 10) {
-      return digits[12] === 1;
-    }
-    return digits[12] === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * sk-SK validation function
- * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only)
- * Checks validity of pre-1954 birth numbers (rodné číslo) only
- * Due to the introduction of the pseudo-random BIČ it is not possible to test
- * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand
- */
-function skSkCheck(tin) {
-  if (tin.length === 9) {
-    tin = tin.replace(/\W/, '');
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-
-    // Extract full year from TIN length
-    var full_year = parseInt(tin.slice(0, 2), 10);
-    if (full_year > 53) {
-      return false;
-    }
-    if (full_year < 10) {
-      full_year = "190".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-
-    // Extract month from TIN and normalize
-    var month = parseInt(tin.slice(2, 4), 10);
-    if (month > 50) {
-      month -= 50;
-    }
-    if (month < 10) {
-      month = "0".concat(month);
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-    if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * sl-SI validation function
- * (Davčna številka, persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function slSiCheck(tin) {
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8) % 11;
-  if (checksum === 10) {
-    return parseInt(tin[7], 10) === 0;
-  }
-  return checksum === parseInt(tin[7], 10);
-}
-
-/*
- * sv-SE validation function
- * (Personnummer or samordningsnummer, persons only)
- * Checks validity of birth date and calls luhnCheck() to validate check (last) digit
- */
-function svSeCheck(tin) {
-  // Make copy of TIN and normalize to two-digit year form
-  var tin_copy = tin.slice(0);
-  if (tin.length > 11) {
-    tin_copy = tin_copy.slice(2);
-  }
-
-  // Extract date of birth
-  var full_year = '';
-  var month = tin_copy.slice(2, 4);
-  var day = parseInt(tin_copy.slice(4, 6), 10);
-  if (tin.length > 11) {
-    full_year = tin.slice(0, 4);
-  } else {
-    full_year = tin.slice(0, 2);
-    if (tin.length === 11 && day < 60) {
-      // Extract full year from centenarian symbol
-      // Should work just fine until year 10000 or so
-      var current_year = new Date().getFullYear().toString();
-      var current_century = parseInt(current_year.slice(0, 2), 10);
-      current_year = parseInt(current_year, 10);
-      if (tin[6] === '-') {
-        if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) {
-          full_year = "".concat(current_century - 1).concat(full_year);
-        } else {
-          full_year = "".concat(current_century).concat(full_year);
-        }
-      } else {
-        full_year = "".concat(current_century - 1).concat(full_year);
-        if (current_year - parseInt(full_year, 10) < 100) {
-          return false;
-        }
-      }
-    }
-  }
-
-  // Normalize day and check date validity
-  if (day > 60) {
-    day -= 60;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(full_year, "/").concat(month, "/").concat(day);
-  if (date.length === 8) {
-    if (!(0, _isDate.default)(date, 'YY/MM/DD')) {
-      return false;
-    }
-  } else if (!(0, _isDate.default)(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-  return algorithms.luhnCheck(tin.replace(/\W/, ''));
-}
-
-/**
- * uk-UA validation function
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ukUaCheck(tin) {
-  // Calculate check digit
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var multipliers = [-1, 5, 7, 9, 4, 6, 10, 5, 7];
-  var checksum = 0;
-  for (var i = 0; i < multipliers.length; i++) {
-    checksum += digits[i] * multipliers[i];
-  }
-  return checksum % 11 === 10 ? digits[9] === 0 : digits[9] === checksum % 11;
-}
-
-// Locale lookup objects
-
-/*
- * Tax id regex formats for various locales
- *
- * Where not explicitly specified in DG-TAXUD document both
- * uppercase and lowercase letters are acceptable.
- */
-var taxIdFormat = {
-  'bg-BG': /^\d{10}$/,
-  'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/,
-  'de-AT': /^\d{9}$/,
-  'de-DE': /^[1-9]\d{10}$/,
-  'dk-DK': /^\d{6}-{0,1}\d{4}$/,
-  'el-CY': /^[09]\d{7}[A-Z]$/,
-  'el-GR': /^([0-4]|[7-9])\d{8}$/,
-  'en-CA': /^\d{9}$/,
-  'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,
-  'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i,
-  'en-US': /^\d{2}[- ]{0,1}\d{7}$/,
-  'es-AR': /(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,
-  'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,
-  'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,
-  'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,
-  'fr-BE': /^\d{11}$/,
-  'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,
-  // Conforms both to official spec and provided example
-  'fr-LU': /^\d{13}$/,
-  'hr-HR': /^\d{11}$/,
-  'hu-HU': /^8\d{9}$/,
-  'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,
-  'lv-LV': /^\d{6}-{0,1}\d{5}$/,
-  // Conforms both to DG TAXUD spec and original research
-  'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,
-  'nl-NL': /^\d{9}$/,
-  'pl-PL': /^\d{10,11}$/,
-  'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/,
-  'pt-PT': /^\d{9}$/,
-  'ro-RO': /^\d{13}$/,
-  'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/,
-  'sl-SI': /^[1-9]\d{7}$/,
-  'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/,
-  'uk-UA': /^\d{10}$/
-};
-// taxIdFormat locale aliases
-taxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];
-taxIdFormat['lt-LT'] = taxIdFormat['et-EE'];
-taxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];
-taxIdFormat['fr-CA'] = taxIdFormat['en-CA'];
-
-// Algorithmic tax id check functions for various locales
-var taxIdCheck = {
-  'bg-BG': bgBgCheck,
-  'cs-CZ': csCzCheck,
-  'de-AT': deAtCheck,
-  'de-DE': deDeCheck,
-  'dk-DK': dkDkCheck,
-  'el-CY': elCyCheck,
-  'el-GR': elGrCheck,
-  'en-CA': isCanadianSIN,
-  'en-IE': enIeCheck,
-  'en-US': enUsCheck,
-  'es-AR': esArCheck,
-  'es-ES': esEsCheck,
-  'et-EE': etEeCheck,
-  'fi-FI': fiFiCheck,
-  'fr-BE': frBeCheck,
-  'fr-FR': frFrCheck,
-  'fr-LU': frLuCheck,
-  'hr-HR': hrHrCheck,
-  'hu-HU': huHuCheck,
-  'it-IT': itItCheck,
-  'lv-LV': lvLvCheck,
-  'mt-MT': mtMtCheck,
-  'nl-NL': nlNlCheck,
-  'pl-PL': plPlCheck,
-  'pt-BR': ptBrCheck,
-  'pt-PT': ptPtCheck,
-  'ro-RO': roRoCheck,
-  'sk-SK': skSkCheck,
-  'sl-SI': slSiCheck,
-  'sv-SE': svSeCheck,
-  'uk-UA': ukUaCheck
-};
-// taxIdCheck locale aliases
-taxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];
-taxIdCheck['lt-LT'] = taxIdCheck['et-EE'];
-taxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];
-taxIdCheck['fr-CA'] = taxIdCheck['en-CA'];
-
-// Regexes for locales where characters should be omitted before checking format
-var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g;
-var sanitizeRegexes = {
-  'de-AT': allsymbols,
-  'de-DE': /[\/\\]/g,
-  'fr-BE': allsymbols
-};
-// sanitizeRegexes locale aliases
-sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];
-
-/*
- * Validator function
- * Return true if the passed string is a valid tax identification number
- * for the specified locale.
- * Throw an error exception if the locale is not supported.
- */
-function isTaxID(str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  (0, _assertString.default)(str);
-  // Copy TIN to avoid replacement if sanitized
-  var strcopy = str.slice(0);
-  if (locale in taxIdFormat) {
-    if (locale in sanitizeRegexes) {
-      strcopy = strcopy.replace(sanitizeRegexes[locale], '');
-    }
-    if (!taxIdFormat[locale].test(strcopy)) {
-      return false;
-    }
-    if (locale in taxIdCheck) {
-      return taxIdCheck[locale](strcopy);
-    }
-    // Fallthrough; not all locales have algorithmic checks
-    return true;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isTime.js
===================================================================
--- backend/node_modules/validator/lib/isTime.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,31 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isTime;
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var default_time_options = {
-  hourFormat: 'hour24',
-  mode: 'default'
-};
-var formats = {
-  hour24: {
-    default: /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,
-    withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,
-    withOptionalSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/
-  },
-  hour12: {
-    default: /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,
-    withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,
-    withOptionalSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/
-  }
-};
-function isTime(input, options) {
-  options = (0, _merge.default)(options, default_time_options);
-  if (typeof input !== 'string') return false;
-  return formats[options.hourFormat][options.mode].test(input);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isULID.js
===================================================================
--- backend/node_modules/validator/lib/isULID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isULID;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isULID(str) {
-  (0, _assertString.default)(str);
-  return /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isURL.js
===================================================================
--- backend/node_modules/validator/lib/isURL.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,169 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isURL;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _checkHost = _interopRequireDefault(require("./util/checkHost"));
-var _includesString = _interopRequireDefault(require("./util/includesString"));
-var _isFQDN = _interopRequireDefault(require("./isFQDN"));
-var _isIP = _interopRequireDefault(require("./isIP"));
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
-function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
-function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
-function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
-function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
-/*
-options for isURL method
-
-protocols - valid protocols can be modified with this option.
-require_tld - If set to false isURL will not check if the URL's host includes a top-level domain.
-require_protocol - if set to true isURL will return false if protocol is not present in the URL.
-require_host - if set to false isURL will not check if host is present in the URL.
-require_port - if set to true isURL will check if port is present in the URL.
-require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
-allow_underscores - if set to true, the validator will allow underscores in the URL.
-host_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings
-                 defined in it, the validation fails.
-host_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings
-                 defined in it, the validation fails.
-allow_trailing_dot - if set to true, the validator will allow the domain to end with
-                     a `.` character.
-allow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.
-allow_fragments - if set to false isURL will return false if fragments are present.
-allow_query_components - if set to false isURL will return false if query components are present.
-disallow_auth - if set to true, the validator will fail if the URL contains an authentication
-                component, e.g. `http://username:password@example.com`
-validate_length - if set to false isURL will skip string length validation. `max_allowed_length`
-                  will be ignored if this is set as `false`.
-max_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is
-                     2084 that IE maximum URL length).
-
-*/
-
-var default_url_options = {
-  protocols: ['http', 'https', 'ftp'],
-  require_tld: true,
-  require_protocol: false,
-  require_host: true,
-  require_port: false,
-  require_valid_protocol: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_protocol_relative_urls: false,
-  allow_fragments: true,
-  allow_query_components: true,
-  validate_length: true,
-  max_allowed_length: 2084
-};
-var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/;
-function isURL(url, options) {
-  (0, _assertString.default)(url);
-  if (!url || /[\s<>]/.test(url)) {
-    return false;
-  }
-  if (url.indexOf('mailto:') === 0) {
-    return false;
-  }
-  options = (0, _merge.default)(options, default_url_options);
-  if (options.validate_length && url.length > options.max_allowed_length) {
-    return false;
-  }
-  if (!options.allow_fragments && (0, _includesString.default)(url, '#')) {
-    return false;
-  }
-  if (!options.allow_query_components && ((0, _includesString.default)(url, '?') || (0, _includesString.default)(url, '&'))) {
-    return false;
-  }
-  var protocol, auth, host, hostname, port, port_str, split, ipv6;
-  split = url.split('#');
-  url = split.shift();
-  split = url.split('?');
-  url = split.shift();
-  split = url.split('://');
-  if (split.length > 1) {
-    protocol = split.shift().toLowerCase();
-    if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {
-      return false;
-    }
-  } else if (options.require_protocol) {
-    return false;
-  } else if (url.slice(0, 2) === '//') {
-    if (!options.allow_protocol_relative_urls) {
-      return false;
-    }
-    split[0] = url.slice(2);
-  }
-  url = split.join('://');
-  if (url === '') {
-    return false;
-  }
-  split = url.split('/');
-  url = split.shift();
-  if (url === '' && !options.require_host) {
-    return true;
-  }
-  split = url.split('@');
-  if (split.length > 1) {
-    if (options.disallow_auth) {
-      return false;
-    }
-    if (split[0] === '') {
-      return false;
-    }
-    auth = split.shift();
-    if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {
-      return false;
-    }
-    var _auth$split = auth.split(':'),
-      _auth$split2 = _slicedToArray(_auth$split, 2),
-      user = _auth$split2[0],
-      password = _auth$split2[1];
-    if (user === '' && password === '') {
-      return false;
-    }
-  }
-  hostname = split.join('@');
-  port_str = null;
-  ipv6 = null;
-  var ipv6_match = hostname.match(wrapped_ipv6);
-  if (ipv6_match) {
-    host = '';
-    ipv6 = ipv6_match[1];
-    port_str = ipv6_match[2] || null;
-  } else {
-    split = hostname.split(':');
-    host = split.shift();
-    if (split.length) {
-      port_str = split.join(':');
-    }
-  }
-  if (port_str !== null && port_str.length > 0) {
-    port = parseInt(port_str, 10);
-    if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {
-      return false;
-    }
-  } else if (options.require_port) {
-    return false;
-  }
-  if (options.host_whitelist) {
-    return (0, _checkHost.default)(host, options.host_whitelist);
-  }
-  if (host === '' && !options.require_host) {
-    return true;
-  }
-  if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {
-    return false;
-  }
-  host = host || ipv6;
-  if (options.host_blacklist && (0, _checkHost.default)(host, options.host_blacklist)) {
-    return false;
-  }
-  return true;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isUUID.js
===================================================================
--- backend/node_modules/validator/lib/isUUID.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isUUID;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var uuid = {
-  1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  6: /^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  8: /^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  nil: /^00000000-0000-0000-0000-000000000000$/i,
-  max: /^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,
-  loose: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
-  // From https://github.com/uuidjs/uuid/blob/main/src/regex.js
-  all: /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i
-};
-function isUUID(str, version) {
-  (0, _assertString.default)(str);
-  if (version === undefined || version === null) {
-    version = 'all';
-  }
-  return version in uuid ? uuid[version].test(str) : false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isUppercase.js
===================================================================
--- backend/node_modules/validator/lib/isUppercase.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isUppercase;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isUppercase(str) {
-  (0, _assertString.default)(str);
-  return str === str.toUpperCase();
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isVAT.js
===================================================================
--- backend/node_modules/validator/lib/isVAT.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,274 +1,0 @@
-"use strict";
-
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isVAT;
-exports.vatMatchers = void 0;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var algorithms = _interopRequireWildcard(require("./util/algorithms"));
-function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var AU = function AU(str) {
-  var match = str.match(/^(AU)?(\d{11})$/);
-  if (!match) {
-    return false;
-  }
-  // @see {@link https://abr.business.gov.au/Help/AbnFormat}
-  var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
-  str = str.replace(/^AU/, '');
-  var ABN = (parseInt(str.slice(0, 1), 10) - 1).toString() + str.slice(1);
-  var total = 0;
-  for (var i = 0; i < 11; i++) {
-    total += weights[i] * ABN.charAt(i);
-  }
-  return total !== 0 && total % 89 === 0;
-};
-var CH = function CH(str) {
-  // @see {@link https://www.ech.ch/de/ech/ech-0097/5.2.0}
-  var hasValidCheckNumber = function hasValidCheckNumber(digits) {
-    var lastDigit = digits.pop(); // used as check number
-    var weights = [5, 4, 3, 2, 7, 6, 5, 4];
-    var calculatedCheckNumber = (11 - digits.reduce(function (acc, el, idx) {
-      return acc + el * weights[idx];
-    }, 0) % 11) % 11;
-    return lastDigit === calculatedCheckNumber;
-  };
-
-  // @see {@link https://www.estv.admin.ch/estv/de/home/mehrwertsteuer/uid/mwst-uid-nummer.html}
-  return /^(CHE[- ]?)?(\d{9}|(\d{3}\.\d{3}\.\d{3})|(\d{3} \d{3} \d{3})) ?(TVA|MWST|IVA)?$/.test(str) && hasValidCheckNumber(str.match(/\d/g).map(function (el) {
-    return +el;
-  }));
-};
-var PT = function PT(str) {
-  var match = str.match(/^(PT)?(\d{9})$/);
-  if (!match) {
-    return false;
-  }
-  var tin = match[2];
-  var checksum = 11 - algorithms.reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-};
-var vatMatchers = exports.vatMatchers = {
-  /**
-   * European Union VAT identification numbers
-   */
-  AT: function AT(str) {
-    return /^(AT)?U\d{8}$/.test(str);
-  },
-  BE: function BE(str) {
-    return /^(BE)?\d{10}$/.test(str);
-  },
-  BG: function BG(str) {
-    return /^(BG)?\d{9,10}$/.test(str);
-  },
-  HR: function HR(str) {
-    return /^(HR)?\d{11}$/.test(str);
-  },
-  CY: function CY(str) {
-    return /^(CY)?\w{9}$/.test(str);
-  },
-  CZ: function CZ(str) {
-    return /^(CZ)?\d{8,10}$/.test(str);
-  },
-  DK: function DK(str) {
-    return /^(DK)?\d{8}$/.test(str);
-  },
-  EE: function EE(str) {
-    return /^(EE)?\d{9}$/.test(str);
-  },
-  FI: function FI(str) {
-    return /^(FI)?\d{8}$/.test(str);
-  },
-  FR: function FR(str) {
-    return /^(FR)?\w{2}\d{9}$/.test(str);
-  },
-  DE: function DE(str) {
-    return /^(DE)?\d{9}$/.test(str);
-  },
-  EL: function EL(str) {
-    return /^(EL)?\d{9}$/.test(str);
-  },
-  HU: function HU(str) {
-    return /^(HU)?\d{8}$/.test(str);
-  },
-  IE: function IE(str) {
-    return /^(IE)?\d{7}\w{1}(W)?$/.test(str);
-  },
-  IT: function IT(str) {
-    return /^(IT)?\d{11}$/.test(str);
-  },
-  LV: function LV(str) {
-    return /^(LV)?\d{11}$/.test(str);
-  },
-  LT: function LT(str) {
-    return /^(LT)?\d{9,12}$/.test(str);
-  },
-  LU: function LU(str) {
-    return /^(LU)?\d{8}$/.test(str);
-  },
-  MT: function MT(str) {
-    return /^(MT)?\d{8}$/.test(str);
-  },
-  NL: function NL(str) {
-    return /^(NL)?\d{9}B\d{2}$/.test(str);
-  },
-  PL: function PL(str) {
-    return /^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(str);
-  },
-  PT: PT,
-  RO: function RO(str) {
-    return /^(RO)?\d{2,10}$/.test(str);
-  },
-  SK: function SK(str) {
-    return /^(SK)?\d{10}$/.test(str);
-  },
-  SI: function SI(str) {
-    return /^(SI)?\d{8}$/.test(str);
-  },
-  ES: function ES(str) {
-    return /^(ES)?\w\d{7}[A-Z]$/.test(str);
-  },
-  SE: function SE(str) {
-    return /^(SE)?\d{12}$/.test(str);
-  },
-  /**
-   * VAT numbers of non-EU countries
-   */
-  AL: function AL(str) {
-    return /^(AL)?\w{9}[A-Z]$/.test(str);
-  },
-  MK: function MK(str) {
-    return /^(MK)?\d{13}$/.test(str);
-  },
-  AU: AU,
-  BY: function BY(str) {
-    return /^(УНП )?\d{9}$/.test(str);
-  },
-  CA: function CA(str) {
-    return /^(CA)?\d{9}$/.test(str);
-  },
-  IS: function IS(str) {
-    return /^(IS)?\d{5,6}$/.test(str);
-  },
-  IN: function IN(str) {
-    return /^(IN)?\d{15}$/.test(str);
-  },
-  ID: function ID(str) {
-    return /^(ID)?(\d{15}|(\d{2}.\d{3}.\d{3}.\d{1}-\d{3}.\d{3}))$/.test(str);
-  },
-  IL: function IL(str) {
-    return /^(IL)?\d{9}$/.test(str);
-  },
-  KZ: function KZ(str) {
-    return /^(KZ)?\d{12}$/.test(str);
-  },
-  NZ: function NZ(str) {
-    return /^(NZ)?\d{9}$/.test(str);
-  },
-  NG: function NG(str) {
-    return /^(NG)?(\d{12}|(\d{8}-\d{4}))$/.test(str);
-  },
-  NO: function NO(str) {
-    return /^(NO)?\d{9}MVA$/.test(str);
-  },
-  PH: function PH(str) {
-    return /^(PH)?(\d{12}|\d{3} \d{3} \d{3} \d{3})$/.test(str);
-  },
-  RU: function RU(str) {
-    return /^(RU)?(\d{10}|\d{12})$/.test(str);
-  },
-  SM: function SM(str) {
-    return /^(SM)?\d{5}$/.test(str);
-  },
-  SA: function SA(str) {
-    return /^(SA)?\d{15}$/.test(str);
-  },
-  RS: function RS(str) {
-    return /^(RS)?\d{9}$/.test(str);
-  },
-  CH: CH,
-  TR: function TR(str) {
-    return /^(TR)?\d{10}$/.test(str);
-  },
-  UA: function UA(str) {
-    return /^(UA)?\d{12}$/.test(str);
-  },
-  GB: function GB(str) {
-    return /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(str);
-  },
-  UZ: function UZ(str) {
-    return /^(UZ)?\d{9}$/.test(str);
-  },
-  /**
-   * VAT numbers of Latin American countries
-   */
-  AR: function AR(str) {
-    return /^(AR)?\d{11}$/.test(str);
-  },
-  BO: function BO(str) {
-    return /^(BO)?\d{7}$/.test(str);
-  },
-  BR: function BR(str) {
-    return /^(BR)?((\d{2}.\d{3}.\d{3}\/\d{4}-\d{2})|(\d{3}.\d{3}.\d{3}-\d{2}))$/.test(str);
-  },
-  CL: function CL(str) {
-    return /^(CL)?\d{8}-\d{1}$/.test(str);
-  },
-  CO: function CO(str) {
-    return /^(CO)?\d{10}$/.test(str);
-  },
-  CR: function CR(str) {
-    return /^(CR)?\d{9,12}$/.test(str);
-  },
-  EC: function EC(str) {
-    return /^(EC)?\d{13}$/.test(str);
-  },
-  SV: function SV(str) {
-    return /^(SV)?\d{4}-\d{6}-\d{3}-\d{1}$/.test(str);
-  },
-  GT: function GT(str) {
-    return /^(GT)?\d{7}-\d{1}$/.test(str);
-  },
-  HN: function HN(str) {
-    return /^(HN)?$/.test(str);
-  },
-  MX: function MX(str) {
-    return /^(MX)?\w{3,4}\d{6}\w{3}$/.test(str);
-  },
-  NI: function NI(str) {
-    return /^(NI)?\d{3}-\d{6}-\d{4}\w{1}$/.test(str);
-  },
-  PA: function PA(str) {
-    return /^(PA)?$/.test(str);
-  },
-  PY: function PY(str) {
-    return /^(PY)?\d{6,8}-\d{1}$/.test(str);
-  },
-  PE: function PE(str) {
-    return /^(PE)?\d{11}$/.test(str);
-  },
-  DO: function DO(str) {
-    return /^(DO)?(\d{11}|(\d{3}-\d{7}-\d{1})|[1,4,5]{1}\d{8}|([1,4,5]{1})-\d{2}-\d{5}-\d{1})$/.test(str);
-  },
-  UY: function UY(str) {
-    return /^(UY)?\d{12}$/.test(str);
-  },
-  VE: function VE(str) {
-    return /^(VE)?[J,G,V,E]{1}-(\d{9}|(\d{8}-\d{1}))$/.test(str);
-  }
-};
-function isVAT(str, countryCode) {
-  (0, _assertString.default)(str);
-  (0, _assertString.default)(countryCode);
-  if (countryCode in vatMatchers) {
-    return vatMatchers[countryCode](str);
-  }
-  throw new Error("Invalid country code: '".concat(countryCode, "'"));
-}
Index: ckend/node_modules/validator/lib/isVariableWidth.js
===================================================================
--- backend/node_modules/validator/lib/isVariableWidth.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isVariableWidth;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _isFullWidth = require("./isFullWidth");
-var _isHalfWidth = require("./isHalfWidth");
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isVariableWidth(str) {
-  (0, _assertString.default)(str);
-  return _isFullWidth.fullWidth.test(str) && _isHalfWidth.halfWidth.test(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/isWhitelisted.js
===================================================================
--- backend/node_modules/validator/lib/isWhitelisted.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isWhitelisted;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function isWhitelisted(str, chars) {
-  (0, _assertString.default)(str);
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (chars.indexOf(str[i]) === -1) {
-      return false;
-    }
-  }
-  return true;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/ltrim.js
===================================================================
--- backend/node_modules/validator/lib/ltrim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = ltrim;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function ltrim(str, chars) {
-  (0, _assertString.default)(str);
-  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-  var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g;
-  return str.replace(pattern, '');
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/matches.js
===================================================================
--- backend/node_modules/validator/lib/matches.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = matches;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function matches(str, pattern, modifiers) {
-  (0, _assertString.default)(str);
-  if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {
-    pattern = new RegExp(pattern, modifiers);
-  }
-  return !!str.match(pattern);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/normalizeEmail.js
===================================================================
--- backend/node_modules/validator/lib/normalizeEmail.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,140 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = normalizeEmail;
-var _merge = _interopRequireDefault(require("./util/merge"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-var default_normalize_email_options = {
-  // The following options apply to all email addresses
-  // Lowercases the local part of the email address.
-  // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).
-  // The domain is always lowercased, as per RFC 1035
-  all_lowercase: true,
-  // The following conversions are specific to GMail
-  // Lowercases the local part of the GMail address (known to be case-insensitive)
-  gmail_lowercase: true,
-  // Removes dots from the local part of the email address, as that's ignored by GMail
-  gmail_remove_dots: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  gmail_remove_subaddress: true,
-  // Conversts the googlemail.com domain to gmail.com
-  gmail_convert_googlemaildotcom: true,
-  // The following conversions are specific to Outlook.com / Windows Live / Hotmail
-  // Lowercases the local part of the Outlook.com address (known to be case-insensitive)
-  outlookdotcom_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  outlookdotcom_remove_subaddress: true,
-  // The following conversions are specific to Yahoo
-  // Lowercases the local part of the Yahoo address (known to be case-insensitive)
-  yahoo_lowercase: true,
-  // Removes the subaddress (e.g. "-foo") from the email address
-  yahoo_remove_subaddress: true,
-  // The following conversions are specific to Yandex
-  // Lowercases the local part of the Yandex address (known to be case-insensitive)
-  yandex_lowercase: true,
-  // all yandex domains are equal, this explicitly sets the domain to 'yandex.ru'
-  yandex_convert_yandexru: true,
-  // The following conversions are specific to iCloud
-  // Lowercases the local part of the iCloud address (known to be case-insensitive)
-  icloud_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  icloud_remove_subaddress: true
-};
-
-// List of domains used by iCloud
-var icloud_domains = ['icloud.com', 'me.com'];
-
-// List of domains used by Outlook.com and its predecessors
-// This list is likely incomplete.
-// Partial reference:
-// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/
-var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];
-
-// List of domains used by Yahoo Mail
-// This list is likely incomplete
-var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];
-
-// List of domains used by yandex.ru
-var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];
-
-// replace single dots, but not multiple consecutive dots
-function dotsReplacer(match) {
-  if (match.length > 1) {
-    return match;
-  }
-  return '';
-}
-function normalizeEmail(email, options) {
-  options = (0, _merge.default)(options, default_normalize_email_options);
-  var raw_parts = email.split('@');
-  var domain = raw_parts.pop();
-  var user = raw_parts.join('@');
-  var parts = [user, domain];
-
-  // The domain is always lowercased, as it's case-insensitive per RFC 1035
-  parts[1] = parts[1].toLowerCase();
-  if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {
-    // Address is GMail
-    if (options.gmail_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (options.gmail_remove_dots) {
-      // this does not replace consecutive dots like example..email@gmail.com
-      parts[0] = parts[0].replace(/\.+/g, dotsReplacer);
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.gmail_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];
-  } else if (icloud_domains.indexOf(parts[1]) >= 0) {
-    // Address is iCloud
-    if (options.icloud_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.icloud_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {
-    // Address is Outlook.com
-    if (options.outlookdotcom_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.outlookdotcom_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yahoo_domains.indexOf(parts[1]) >= 0) {
-    // Address is Yahoo
-    if (options.yahoo_remove_subaddress) {
-      var components = parts[0].split('-');
-      parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.yahoo_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yandex_domains.indexOf(parts[1]) >= 0) {
-    if (options.all_lowercase || options.yandex_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.yandex_convert_yandexru ? 'yandex.ru' : parts[1];
-  } else if (options.all_lowercase) {
-    // Any other address
-    parts[0] = parts[0].toLowerCase();
-  }
-  return parts.join('@');
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/rtrim.js
===================================================================
--- backend/node_modules/validator/lib/rtrim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,24 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = rtrim;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function rtrim(str, chars) {
-  (0, _assertString.default)(str);
-  if (chars) {
-    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-    var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g');
-    return str.replace(pattern, '');
-  }
-  // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript
-  var strIndex = str.length - 1;
-  while (/\s/.test(str.charAt(strIndex))) {
-    strIndex -= 1;
-  }
-  return str.slice(0, strIndex + 1);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/stripLow.js
===================================================================
--- backend/node_modules/validator/lib/stripLow.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,16 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = stripLow;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-var _blacklist = _interopRequireDefault(require("./blacklist"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function stripLow(str, keep_new_lines) {
-  (0, _assertString.default)(str);
-  var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F';
-  return (0, _blacklist.default)(str, chars);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/toBoolean.js
===================================================================
--- backend/node_modules/validator/lib/toBoolean.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = toBoolean;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function toBoolean(str, strict) {
-  (0, _assertString.default)(str);
-  if (strict) {
-    return str === '1' || /^true$/i.test(str);
-  }
-  return str !== '0' && !/^false$/i.test(str) && str !== '';
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/toDate.js
===================================================================
--- backend/node_modules/validator/lib/toDate.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,15 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = toDate;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function toDate(date) {
-  (0, _assertString.default)(date);
-  date = Date.parse(date);
-  return !isNaN(date) ? new Date(date) : null;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/toFloat.js
===================================================================
--- backend/node_modules/validator/lib/toFloat.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = toFloat;
-var _isFloat = _interopRequireDefault(require("./isFloat"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function toFloat(str) {
-  if (!(0, _isFloat.default)(str)) return NaN;
-  return parseFloat(str);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/toInt.js
===================================================================
--- backend/node_modules/validator/lib/toInt.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = toInt;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function toInt(str, radix) {
-  (0, _assertString.default)(str);
-  return parseInt(str, radix || 10);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/trim.js
===================================================================
--- backend/node_modules/validator/lib/trim.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = trim;
-var _rtrim = _interopRequireDefault(require("./rtrim"));
-var _ltrim = _interopRequireDefault(require("./ltrim"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function trim(str, chars) {
-  return (0, _rtrim.default)((0, _ltrim.default)(str, chars), chars);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/unescape.js
===================================================================
--- backend/node_modules/validator/lib/unescape.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = unescape;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function unescape(str) {
-  (0, _assertString.default)(str);
-  return str.replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#x2F;/g, '/').replace(/&#x5C;/g, '\\').replace(/&#96;/g, '`').replace(/&amp;/g, '&');
-  // &amp; replacement has to be the last one to prevent
-  // bugs with intermediate strings containing escape sequences
-  // See: https://github.com/validatorjs/validator.js/issues/1827
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/algorithms.js
===================================================================
--- backend/node_modules/validator/lib/util/algorithms.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,88 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.iso7064Check = iso7064Check;
-exports.luhnCheck = luhnCheck;
-exports.reverseMultiplyAndSum = reverseMultiplyAndSum;
-exports.verhoeffCheck = verhoeffCheck;
-/**
- * Algorithmic validation functions
- * May be used as is or implemented in the workflow of other validators.
- */
-
-/*
- * ISO 7064 validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to ISO 7064 (MOD 11, 10).
- */
-function iso7064Check(str) {
-  var checkvalue = 10;
-  for (var i = 0; i < str.length - 1; i++) {
-    checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;
-  }
-  checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;
-  return checkvalue === parseInt(str[10], 10);
-}
-
-/*
- * Luhn (mod 10) validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to the Luhn algorithm.
- */
-function luhnCheck(str) {
-  var checksum = 0;
-  var second = false;
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (second) {
-      var product = parseInt(str[i], 10) * 2;
-      if (product > 9) {
-        // sum digits of product and add to checksum
-        checksum += product.toString().split('').map(function (a) {
-          return parseInt(a, 10);
-        }).reduce(function (a, b) {
-          return a + b;
-        }, 0);
-      } else {
-        checksum += product;
-      }
-    } else {
-      checksum += parseInt(str[i], 10);
-    }
-    second = !second;
-  }
-  return checksum % 10 === 0;
-}
-
-/*
- * Reverse TIN multiplication and summation helper function
- * Called with an array of single-digit integers and a base multiplier
- * to calculate the sum of the digits multiplied in reverse.
- * Normally used in variations of MOD 11 algorithmic checks.
- */
-function reverseMultiplyAndSum(digits, base) {
-  var total = 0;
-  for (var i = 0; i < digits.length; i++) {
-    total += digits[i] * (base - i);
-  }
-  return total;
-}
-
-/*
- * Verhoeff validation helper function
- * Called with a string of numbers
- * to validate according to the Verhoeff algorithm.
- */
-function verhoeffCheck(str) {
-  var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-  var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-  // Copy (to prevent replacement) and reverse
-  var str_copy = str.split('').reverse().join('');
-  var checksum = 0;
-  for (var i = 0; i < str_copy.length; i++) {
-    checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];
-  }
-  return checksum === 0;
-}
Index: ckend/node_modules/validator/lib/util/assertString.js
===================================================================
--- backend/node_modules/validator/lib/util/assertString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = assertString;
-function assertString(input) {
-  if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
-  if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/checkHost.js
===================================================================
--- backend/node_modules/validator/lib/util/checkHost.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = checkHost;
-function isRegExp(obj) {
-  return Object.prototype.toString.call(obj) === '[object RegExp]';
-}
-function checkHost(host, matches) {
-  for (var i = 0; i < matches.length; i++) {
-    var match = matches[i];
-    if (host === match || isRegExp(match) && match.test(host)) {
-      return true;
-    }
-  }
-  return false;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/includesArray.js
===================================================================
--- backend/node_modules/validator/lib/util/includesArray.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var includes = function includes(arr, val) {
-  return arr.some(function (arrVal) {
-    return val === arrVal;
-  });
-};
-var _default = exports.default = includes;
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/includesString.js
===================================================================
--- backend/node_modules/validator/lib/util/includesString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,12 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var includes = function includes(str, val) {
-  return str.indexOf(val) !== -1;
-};
-var _default = exports.default = includes;
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/merge.js
===================================================================
--- backend/node_modules/validator/lib/util/merge.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = merge;
-function merge() {
-  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var defaults = arguments.length > 1 ? arguments[1] : undefined;
-  for (var key in defaults) {
-    if (typeof obj[key] === 'undefined') {
-      obj[key] = defaults[key];
-    }
-  }
-  return obj;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/multilineRegex.js
===================================================================
--- backend/node_modules/validator/lib/util/multilineRegex.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = multilineRegexp;
-/**
- * Build RegExp object from an array
- * of multiple/multi-line regexp parts
- *
- * @param {string[]} parts
- * @param {string} flags
- * @return {object} - RegExp object
- */
-function multilineRegexp(parts, flags) {
-  var regexpAsStringLiteral = parts.join('');
-  return new RegExp(regexpAsStringLiteral, flags);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/nullUndefinedCheck.js
===================================================================
--- backend/node_modules/validator/lib/util/nullUndefinedCheck.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,11 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = isNullOrUndefined;
-function isNullOrUndefined(value) {
-  return value === null || value === undefined;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/toString.js
===================================================================
--- backend/node_modules/validator/lib/util/toString.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,21 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = toString;
-function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
-function toString(input) {
-  if (_typeof(input) === 'object' && input !== null) {
-    if (typeof input.toString === 'function') {
-      input = input.toString();
-    } else {
-      input = '[object Object]';
-    }
-  } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {
-    input = '';
-  }
-  return String(input);
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/util/typeOf.js
===================================================================
--- backend/node_modules/validator/lib/util/typeOf.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,18 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = typeOf;
-/**
- * Better way to handle type checking
- * null, {}, array and date are objects, which confuses
- */
-function typeOf(input) {
-  var rawObject = Object.prototype.toString.call(input).toLowerCase();
-  var typeOfRegex = /\[object (.*)]/g;
-  var type = typeOfRegex.exec(rawObject)[1];
-  return type;
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/lib/whitelist.js
===================================================================
--- backend/node_modules/validator/lib/whitelist.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,14 +1,0 @@
-"use strict";
-
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = whitelist;
-var _assertString = _interopRequireDefault(require("./util/assertString"));
-function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
-function whitelist(str, chars) {
-  (0, _assertString.default)(str);
-  return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), '');
-}
-module.exports = exports.default;
-module.exports.default = exports.default;
Index: ckend/node_modules/validator/package.json
===================================================================
--- backend/node_modules/validator/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,76 +1,0 @@
-{
-  "name": "validator",
-  "description": "String validation and sanitization",
-  "version": "13.15.15",
-  "sideEffects": false,
-  "homepage": "https://github.com/validatorjs/validator.js",
-  "files": [
-    "index.js",
-    "es",
-    "lib",
-    "README.md",
-    "LICENSE",
-    "validator.js",
-    "validator.min.js"
-  ],
-  "keywords": [
-    "validator",
-    "validation",
-    "validate",
-    "sanitization",
-    "sanitize",
-    "sanitisation",
-    "sanitise",
-    "assert"
-  ],
-  "author": "Chris O'Hara <cohara87@gmail.com>",
-  "contributors": [
-    "Anthony Nandaa (https://github.com/profnandaa)"
-  ],
-  "main": "index.js",
-  "bugs": {
-    "url": "https://github.com/validatorjs/validator.js/issues"
-  },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/validatorjs/validator.js.git"
-  },
-  "devDependencies": {
-    "@babel/cli": "^7.0.0",
-    "@babel/core": "^7.0.0",
-    "@babel/preset-env": "^7.0.0",
-    "@babel/register": "^7.0.0",
-    "babel-eslint": "^10.0.1",
-    "babel-plugin-add-module-exports": "^1.0.0",
-    "eslint": "^4.19.1",
-    "eslint-config-airbnb-base": "^12.1.0",
-    "eslint-plugin-import": "^2.11.0",
-    "mocha": "^6.2.3",
-    "npm-run-all": "^4.1.5",
-    "nyc": "^14.1.0",
-    "rimraf": "^3.0.0",
-    "rollup": "^0.47.0",
-    "rollup-plugin-babel": "^4.0.1",
-    "timezone-mock": "^1.3.6",
-    "uglify-js": "^3.0.19"
-  },
-  "scripts": {
-    "lint": "eslint src test",
-    "lint:fix": "eslint --fix src test",
-    "clean:node": "rimraf index.js lib",
-    "clean:es": "rimraf es",
-    "clean:browser": "rimraf validator*.js",
-    "clean": "run-p clean:*",
-    "minify": "uglifyjs validator.js -o validator.min.js  --compress --mangle --comments /Copyright/",
-    "build:browser": "node --require @babel/register build-browser && npm run minify",
-    "build:es": "babel src -d es --env-name=es",
-    "build:node": "babel src -d .",
-    "build": "run-p build:*",
-    "pretest": "npm run build && npm run lint",
-    "test": "nyc --reporter=cobertura --reporter=text-summary mocha --require @babel/register --reporter dot --recursive"
-  },
-  "engines": {
-    "node": ">= 0.10"
-  },
-  "license": "MIT"
-}
Index: ckend/node_modules/validator/validator.js
===================================================================
--- backend/node_modules/validator/validator.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5672 +1,0 @@
-/*!
- * Copyright (c) 2018 Chris O'Hara <cohara87@gmail.com>
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-(function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
-	typeof define === 'function' && define.amd ? define(factory) :
-	(global.validator = factory());
-}(this, (function () { 'use strict';
-
-function assertString(input) {
-  if (input === undefined || input === null) throw new TypeError("Expected a string but received a ".concat(input));
-  if (input.constructor.name !== 'String') throw new TypeError("Expected a string but received a ".concat(input.constructor.name));
-}
-
-function toDate(date) {
-  assertString(date);
-  date = Date.parse(date);
-  return !isNaN(date) ? new Date(date) : null;
-}
-
-function isNullOrUndefined(value) {
-  return value === null || value === undefined;
-}
-
-var alpha = {
-  'en-US': /^[A-Z]+$/i,
-  'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[А-Я]+$/i,
-  'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[A-ZÆØÅ]+$/i,
-  'de-DE': /^[A-ZÄÖÜß]+$/i,
-  'el-GR': /^[Α-ώ]+$/i,
-  'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,
-  'fi-FI': /^[A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'nb-NO': /^[A-ZÆØÅ]+$/i,
-  'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[A-ZÆØÅ]+$/i,
-  'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[А-ЯЁ]+$/i,
-  'kk-KZ': /^[А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๐\s]+$/i,
-  'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,
-  'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  'ko-KR': /^[ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[א-ת]+$/,
-  fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0961]+[\u0972-\u097F]*$/i,
-  'si-LK': /^[\u0D80-\u0DFF]+$/
-};
-var alphanumeric = {
-  'en-US': /^[0-9A-Z]+$/i,
-  'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,
-  'bg-BG': /^[0-9А-Я]+$/i,
-  'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
-  'da-DK': /^[0-9A-ZÆØÅ]+$/i,
-  'de-DE': /^[0-9A-ZÄÖÜß]+$/i,
-  'el-GR': /^[0-9Α-ω]+$/i,
-  'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,
-  'fi-FI': /^[0-9A-ZÅÄÖ]+$/i,
-  'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
-  'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,
-  'ja-JP': /^[0-9０-９ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,
-  'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
-  'nb-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,
-  'nn-NO': /^[0-9A-ZÆØÅ]+$/i,
-  'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
-  'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
-  'ru-RU': /^[0-9А-ЯЁ]+$/i,
-  'kk-KZ': /^[0-9А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,
-  'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,
-  'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
-  'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,
-  'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,
-  'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,
-  'th-TH': /^[ก-๙\s]+$/i,
-  'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,
-  'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,
-  'ko-KR': /^[0-9ㄱ-ㅎㅏ-ㅣ가-힣]*$/,
-  'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
-  'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
-  ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
-  he: /^[0-9א-ת]+$/,
-  fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,
-  bn: /^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,
-  eo: /^[0-9ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,
-  'hi-IN': /^[\u0900-\u0963]+[\u0966-\u097F]*$/i,
-  'si-LK': /^[0-9\u0D80-\u0DFF]+$/
-};
-var decimal = {
-  'en-US': '.',
-  ar: '٫'
-};
-var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];
-for (var locale, i = 0; i < englishLocales.length; i++) {
-  locale = "en-".concat(englishLocales[i]);
-  alpha[locale] = alpha['en-US'];
-  alphanumeric[locale] = alphanumeric['en-US'];
-  decimal[locale] = decimal['en-US'];
-}
-
-// Source: http://www.localeplanet.com/java/
-var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];
-for (var _locale, _i = 0; _i < arabicLocales.length; _i++) {
-  _locale = "ar-".concat(arabicLocales[_i]);
-  alpha[_locale] = alpha.ar;
-  alphanumeric[_locale] = alphanumeric.ar;
-  decimal[_locale] = decimal.ar;
-}
-var farsiLocales = ['IR', 'AF'];
-for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {
-  _locale2 = "fa-".concat(farsiLocales[_i2]);
-  alphanumeric[_locale2] = alphanumeric.fa;
-  decimal[_locale2] = decimal.ar;
-}
-var bengaliLocales = ['BD', 'IN'];
-for (var _locale3, _i3 = 0; _i3 < bengaliLocales.length; _i3++) {
-  _locale3 = "bn-".concat(bengaliLocales[_i3]);
-  alpha[_locale3] = alpha.bn;
-  alphanumeric[_locale3] = alphanumeric.bn;
-  decimal[_locale3] = decimal['en-US'];
-}
-
-// Source: https://en.wikipedia.org/wiki/Decimal_mark
-var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];
-var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'eo', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hi-IN', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'kk-KZ', 'si-LK', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];
-for (var _i4 = 0; _i4 < dotDecimal.length; _i4++) {
-  decimal[dotDecimal[_i4]] = decimal['en-US'];
-}
-for (var _i5 = 0; _i5 < commaDecimal.length; _i5++) {
-  decimal[commaDecimal[_i5]] = ',';
-}
-alpha['fr-CA'] = alpha['fr-FR'];
-alphanumeric['fr-CA'] = alphanumeric['fr-FR'];
-alpha['pt-BR'] = alpha['pt-PT'];
-alphanumeric['pt-BR'] = alphanumeric['pt-PT'];
-decimal['pt-BR'] = decimal['pt-PT'];
-
-// see #862
-alpha['pl-Pl'] = alpha['pl-PL'];
-alphanumeric['pl-Pl'] = alphanumeric['pl-PL'];
-decimal['pl-Pl'] = decimal['pl-PL'];
-
-// see #1455
-alpha['fa-AF'] = alpha.fa;
-
-function isFloat(str, options) {
-  assertString(str);
-  options = options || {};
-  var _float = new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(options.locale ? decimal[options.locale] : '.', "[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$"));
-  if (str === '' || str === '.' || str === ',' || str === '-' || str === '+') {
-    return false;
-  }
-  var value = parseFloat(str.replace(',', '.'));
-  return _float.test(str) && (!options.hasOwnProperty('min') || isNullOrUndefined(options.min) || value >= options.min) && (!options.hasOwnProperty('max') || isNullOrUndefined(options.max) || value <= options.max) && (!options.hasOwnProperty('lt') || isNullOrUndefined(options.lt) || value < options.lt) && (!options.hasOwnProperty('gt') || isNullOrUndefined(options.gt) || value > options.gt);
-}
-var locales = Object.keys(decimal);
-
-function toFloat(str) {
-  if (!isFloat(str)) return NaN;
-  return parseFloat(str);
-}
-
-function toInt(str, radix) {
-  assertString(str);
-  return parseInt(str, radix || 10);
-}
-
-function toBoolean(str, strict) {
-  assertString(str);
-  if (strict) {
-    return str === '1' || /^true$/i.test(str);
-  }
-  return str !== '0' && !/^false$/i.test(str) && str !== '';
-}
-
-function equals(str, comparison) {
-  assertString(str);
-  return str === comparison;
-}
-
-function _arrayLikeToArray(r, a) {
-  (null == a || a > r.length) && (a = r.length);
-  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
-  return n;
-}
-function _arrayWithHoles(r) {
-  if (Array.isArray(r)) return r;
-}
-function _arrayWithoutHoles(r) {
-  if (Array.isArray(r)) return _arrayLikeToArray(r);
-}
-function _createForOfIteratorHelper(r, e) {
-  var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
-  if (!t) {
-    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
-      t && (r = t);
-      var n = 0,
-        F = function () {};
-      return {
-        s: F,
-        n: function () {
-          return n >= r.length ? {
-            done: !0
-          } : {
-            done: !1,
-            value: r[n++]
-          };
-        },
-        e: function (r) {
-          throw r;
-        },
-        f: F
-      };
-    }
-    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
-  }
-  var o,
-    a = !0,
-    u = !1;
-  return {
-    s: function () {
-      t = t.call(r);
-    },
-    n: function () {
-      var r = t.next();
-      return a = r.done, r;
-    },
-    e: function (r) {
-      u = !0, o = r;
-    },
-    f: function () {
-      try {
-        a || null == t.return || t.return();
-      } finally {
-        if (u) throw o;
-      }
-    }
-  };
-}
-function _iterableToArray(r) {
-  if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
-}
-function _iterableToArrayLimit(r, l) {
-  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
-  if (null != t) {
-    var e,
-      n,
-      i,
-      u,
-      a = [],
-      f = !0,
-      o = !1;
-    try {
-      if (i = (t = t.call(r)).next, 0 === l) {
-        if (Object(t) !== t) return;
-        f = !1;
-      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
-    } catch (r) {
-      o = !0, n = r;
-    } finally {
-      try {
-        if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
-      } finally {
-        if (o) throw n;
-      }
-    }
-    return a;
-  }
-}
-function _nonIterableRest() {
-  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
-}
-function _nonIterableSpread() {
-  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
-}
-function _setFunctionName(e, t, n) {
-  "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : "");
-  try {
-    Object.defineProperty(e, "name", {
-      configurable: !0,
-      value: n ? n + " " + t : t
-    });
-  } catch (e) {}
-  return e;
-}
-function _slicedToArray(r, e) {
-  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
-}
-function _toConsumableArray(r) {
-  return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
-}
-function _toPrimitive(t, r) {
-  if ("object" != typeof t || !t) return t;
-  var e = t[Symbol.toPrimitive];
-  if (void 0 !== e) {
-    var i = e.call(t, r || "default");
-    if ("object" != typeof i) return i;
-    throw new TypeError("@@toPrimitive must return a primitive value.");
-  }
-  return ("string" === r ? String : Number)(t);
-}
-function _toPropertyKey(t) {
-  var i = _toPrimitive(t, "string");
-  return "symbol" == typeof i ? i : i + "";
-}
-function _typeof(o) {
-  "@babel/helpers - typeof";
-
-  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
-    return typeof o;
-  } : function (o) {
-    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
-  }, _typeof(o);
-}
-function _unsupportedIterableToArray(r, a) {
-  if (r) {
-    if ("string" == typeof r) return _arrayLikeToArray(r, a);
-    var t = {}.toString.call(r).slice(8, -1);
-    return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
-  }
-}
-function old_createMetadataMethodsForProperty(e, t, a, r) {
-  return {
-    getMetadata: function (o) {
-      old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
-      var i = e[o];
-      if (void 0 !== i) if (1 === t) {
-        var n = i.public;
-        if (void 0 !== n) return n[a];
-      } else if (2 === t) {
-        var l = i.private;
-        if (void 0 !== l) return l.get(a);
-      } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
-    },
-    setMetadata: function (o, i) {
-      old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
-      var n = e[o];
-      if (void 0 === n && (n = e[o] = {}), 1 === t) {
-        var l = n.public;
-        void 0 === l && (l = n.public = {}), l[a] = i;
-      } else if (2 === t) {
-        var s = n.priv;
-        void 0 === s && (s = n.private = new Map()), s.set(a, i);
-      } else n.constructor = i;
-    }
-  };
-}
-function old_createAddInitializerMethod(e, t) {
-  return function (a) {
-    old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
-  };
-}
-function old_memberDec(e, t, a, r, o, i, n, l, s) {
-  var c;
-  switch (i) {
-    case 1:
-      c = "accessor";
-      break;
-    case 2:
-      c = "method";
-      break;
-    case 3:
-      c = "getter";
-      break;
-    case 4:
-      c = "setter";
-      break;
-    default:
-      c = "field";
-  }
-  var d,
-    u,
-    f = {
-      kind: c,
-      name: l ? "#" + t : _toPropertyKey(t),
-      isStatic: n,
-      isPrivate: l
-    },
-    p = {
-      v: !1
-    };
-  if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
-    d = 2, u = Symbol(t);
-    var v = {};
-    0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
-      return a.value;
-    } : (1 !== i && 3 !== i || (v.get = function () {
-      return a.get.call(this);
-    }), 1 !== i && 4 !== i || (v.set = function (e) {
-      a.set.call(this, e);
-    })), f.access = v;
-  } else d = 1, u = t;
-  try {
-    return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
-  } finally {
-    p.v = !0;
-  }
-}
-function old_assertNotFinished(e, t) {
-  if (e.v) throw Error("attempted to call " + t + " after decoration was finished");
-}
-function old_assertMetadataKey(e) {
-  if ("symbol" != typeof e) throw new TypeError("Metadata keys must be symbols, received: " + e);
-}
-function old_assertCallable(e, t) {
-  if ("function" != typeof e) throw new TypeError(t + " must be a function");
-}
-function old_assertValidReturnValue(e, t) {
-  var a = typeof t;
-  if (1 === e) {
-    if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
-    void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
-  } else if ("function" !== a) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
-}
-function old_getInit(e) {
-  var t;
-  return null == (t = e.init) && (t = e.initializer) && void 0 !== console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
-}
-
-function toString$1(input) {
-  if (_typeof(input) === 'object' && input !== null) {
-    if (typeof input.toString === 'function') {
-      input = input.toString();
-    } else {
-      input = '[object Object]';
-    }
-  } else if (input === null || typeof input === 'undefined' || isNaN(input) && !input.length) {
-    input = '';
-  }
-  return String(input);
-}
-
-function merge() {
-  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
-  var defaults = arguments.length > 1 ? arguments[1] : undefined;
-  for (var key in defaults) {
-    if (typeof obj[key] === 'undefined') {
-      obj[key] = defaults[key];
-    }
-  }
-  return obj;
-}
-
-var defaultContainsOptions = {
-  ignoreCase: false,
-  minOccurrences: 1
-};
-function contains(str, elem, options) {
-  assertString(str);
-  options = merge(options, defaultContainsOptions);
-  if (options.ignoreCase) {
-    return str.toLowerCase().split(toString$1(elem).toLowerCase()).length > options.minOccurrences;
-  }
-  return str.split(toString$1(elem)).length > options.minOccurrences;
-}
-
-function matches(str, pattern, modifiers) {
-  assertString(str);
-  if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {
-    pattern = new RegExp(pattern, modifiers);
-  }
-  return !!str.match(pattern);
-}
-
-function isRegExp(obj) {
-  return Object.prototype.toString.call(obj) === '[object RegExp]';
-}
-function checkHost(host, matches) {
-  for (var i = 0; i < matches.length; i++) {
-    var match = matches[i];
-    if (host === match || isRegExp(match) && match.test(host)) {
-      return true;
-    }
-  }
-  return false;
-}
-
-/* eslint-disable prefer-rest-params */
-function isByteLength(str, options) {
-  assertString(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isByteLength(str, min [, max])
-    min = arguments[1];
-    max = arguments[2];
-  }
-  var len = encodeURI(str).split(/%..|./).length - 1;
-  return len >= min && (typeof max === 'undefined' || len <= max);
-}
-
-var default_fqdn_options = {
-  require_tld: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_numeric_tld: false,
-  allow_wildcard: false,
-  ignore_max_length: false
-};
-function isFQDN(str, options) {
-  assertString(str);
-  options = merge(options, default_fqdn_options);
-
-  /* Remove the optional trailing dot before checking validity */
-  if (options.allow_trailing_dot && str[str.length - 1] === '.') {
-    str = str.substring(0, str.length - 1);
-  }
-
-  /* Remove the optional wildcard before checking validity */
-  if (options.allow_wildcard === true && str.indexOf('*.') === 0) {
-    str = str.substring(2);
-  }
-  var parts = str.split('.');
-  var tld = parts[parts.length - 1];
-  if (options.require_tld) {
-    // disallow fqdns without tld
-    if (parts.length < 2) {
-      return false;
-    }
-    if (!options.allow_numeric_tld && !/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {
-      return false;
-    }
-
-    // disallow spaces
-    if (/\s/.test(tld)) {
-      return false;
-    }
-  }
-
-  // reject numeric TLDs
-  if (!options.allow_numeric_tld && /^\d+$/.test(tld)) {
-    return false;
-  }
-  return parts.every(function (part) {
-    if (part.length > 63 && !options.ignore_max_length) {
-      return false;
-    }
-    if (!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(part)) {
-      return false;
-    }
-
-    // disallow full-width chars
-    if (/[\uff01-\uff5e]/.test(part)) {
-      return false;
-    }
-
-    // disallow parts starting or ending with hyphen
-    if (/^-|-$/.test(part)) {
-      return false;
-    }
-    if (!options.allow_underscores && /_/.test(part)) {
-      return false;
-    }
-    return true;
-  });
-}
-
-/**
-11.3.  Examples
-
-   The following addresses
-
-             fe80::1234 (on the 1st link of the node)
-             ff02::5678 (on the 5th link of the node)
-             ff08::9abc (on the 10th organization of the node)
-
-   would be represented as follows:
-
-             fe80::1234%1
-             ff02::5678%5
-             ff08::9abc%10
-
-   (Here we assume a natural translation from a zone index to the
-   <zone_id> part, where the Nth zone of any scope is translated into
-   "N".)
-
-   If we use interface names as <zone_id>, those addresses could also be
-   represented as follows:
-
-            fe80::1234%ne0
-            ff02::5678%pvc1.3
-            ff08::9abc%interface10
-
-   where the interface "ne0" belongs to the 1st link, "pvc1.3" belongs
-   to the 5th link, and "interface10" belongs to the 10th organization.
- * * */
-var IPv4SegmentFormat = '(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-var IPv4AddressFormat = "(".concat(IPv4SegmentFormat, "[.]){3}").concat(IPv4SegmentFormat);
-var IPv4AddressRegExp = new RegExp("^".concat(IPv4AddressFormat, "$"));
-var IPv6SegmentFormat = '(?:[0-9a-fA-F]{1,4})';
-var IPv6AddressRegExp = new RegExp('^(' + "(?:".concat(IPv6SegmentFormat, ":){7}(?:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){6}(?:").concat(IPv4AddressFormat, "|:").concat(IPv6SegmentFormat, "|:)|") + "(?:".concat(IPv6SegmentFormat, ":){5}(?::").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,2}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){4}(?:(:").concat(IPv6SegmentFormat, "){0,1}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,3}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){3}(?:(:").concat(IPv6SegmentFormat, "){0,2}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,4}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){2}(?:(:").concat(IPv6SegmentFormat, "){0,3}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,5}|:)|") + "(?:".concat(IPv6SegmentFormat, ":){1}(?:(:").concat(IPv6SegmentFormat, "){0,4}:").concat(IPv4AddressFormat, "|(:").concat(IPv6SegmentFormat, "){1,6}|:)|") + "(?::((?::".concat(IPv6SegmentFormat, "){0,5}:").concat(IPv4AddressFormat, "|(?::").concat(IPv6SegmentFormat, "){1,7}|:))") + ')(%[0-9a-zA-Z.]{1,})?$');
-function isIP(ipAddress) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(ipAddress);
-
-  // accessing 'arguments' for backwards compatibility: isIP(ipAddress [, version])
-  // eslint-disable-next-line prefer-rest-params
-  var version = (_typeof(options) === 'object' ? options.version : arguments[1]) || '';
-  if (!version) {
-    return isIP(ipAddress, {
-      version: 4
-    }) || isIP(ipAddress, {
-      version: 6
-    });
-  }
-  if (version.toString() === '4') {
-    return IPv4AddressRegExp.test(ipAddress);
-  }
-  if (version.toString() === '6') {
-    return IPv6AddressRegExp.test(ipAddress);
-  }
-  return false;
-}
-
-var default_email_options = {
-  allow_display_name: false,
-  allow_underscores: false,
-  require_display_name: false,
-  allow_utf8_local_part: true,
-  require_tld: true,
-  blacklisted_chars: '',
-  ignore_max_length: false,
-  host_blacklist: [],
-  host_whitelist: []
-};
-
-/* eslint-disable max-len */
-/* eslint-disable no-control-regex */
-var splitNameAddress = /^([^\x00-\x1F\x7F-\x9F\cX]+)</i;
-var emailUserPart = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i;
-var gmailUserPart = /^[a-z\d]+$/;
-var quotedEmailUser = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i;
-var emailUserUtf8Part = /^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i;
-var quotedEmailUserUtf8 = /^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;
-var defaultMaxEmailLength = 254;
-/* eslint-enable max-len */
-/* eslint-enable no-control-regex */
-
-/**
- * Validate display name according to the RFC2822: https://tools.ietf.org/html/rfc2822#appendix-A.1.2
- * @param {String} display_name
- */
-function validateDisplayName(display_name) {
-  var display_name_without_quotes = display_name.replace(/^"(.+)"$/, '$1');
-  // display name with only spaces is not valid
-  if (!display_name_without_quotes.trim()) {
-    return false;
-  }
-
-  // check whether display name contains illegal character
-  var contains_illegal = /[\.";<>]/.test(display_name_without_quotes);
-  if (contains_illegal) {
-    // if contains illegal characters,
-    // must to be enclosed in double-quotes, otherwise it's not a valid display name
-    if (display_name_without_quotes === display_name) {
-      return false;
-    }
-
-    // the quotes in display name must start with character symbol \
-    var all_start_with_back_slash = display_name_without_quotes.split('"').length === display_name_without_quotes.split('\\"').length;
-    if (!all_start_with_back_slash) {
-      return false;
-    }
-  }
-  return true;
-}
-function isEmail(str, options) {
-  assertString(str);
-  options = merge(options, default_email_options);
-  if (options.require_display_name || options.allow_display_name) {
-    var display_email = str.match(splitNameAddress);
-    if (display_email) {
-      var display_name = display_email[1];
-
-      // Remove display name and angle brackets to get email address
-      // Can be done in the regex but will introduce a ReDOS (See  #1597 for more info)
-      str = str.replace(display_name, '').replace(/(^<|>$)/g, '');
-
-      // sometimes need to trim the last space to get the display name
-      // because there may be a space between display name and email address
-      // eg. myname <address@gmail.com>
-      // the display name is `myname` instead of `myname `, so need to trim the last space
-      if (display_name.endsWith(' ')) {
-        display_name = display_name.slice(0, -1);
-      }
-      if (!validateDisplayName(display_name)) {
-        return false;
-      }
-    } else if (options.require_display_name) {
-      return false;
-    }
-  }
-  if (!options.ignore_max_length && str.length > defaultMaxEmailLength) {
-    return false;
-  }
-  var parts = str.split('@');
-  var domain = parts.pop();
-  var lower_domain = domain.toLowerCase();
-  if (options.host_blacklist.length > 0 && checkHost(lower_domain, options.host_blacklist)) {
-    return false;
-  }
-  if (options.host_whitelist.length > 0 && !checkHost(lower_domain, options.host_whitelist)) {
-    return false;
-  }
-  var user = parts.join('@');
-  if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {
-    /*
-    Previously we removed dots for gmail addresses before validating.
-    This was removed because it allows `multiple..dots@gmail.com`
-    to be reported as valid, but it is not.
-    Gmail only normalizes single dots, removing them from here is pointless,
-    should be done in normalizeEmail
-    */
-    user = user.toLowerCase();
-
-    // Removing sub-address from username before gmail validation
-    var username = user.split('+')[0];
-
-    // Dots are not included in gmail length restriction
-    if (!isByteLength(username.replace(/\./g, ''), {
-      min: 6,
-      max: 30
-    })) {
-      return false;
-    }
-    var _user_parts = username.split('.');
-    for (var i = 0; i < _user_parts.length; i++) {
-      if (!gmailUserPart.test(_user_parts[i])) {
-        return false;
-      }
-    }
-  }
-  if (options.ignore_max_length === false && (!isByteLength(user, {
-    max: 64
-  }) || !isByteLength(domain, {
-    max: 254
-  }))) {
-    return false;
-  }
-  if (!isFQDN(domain, {
-    require_tld: options.require_tld,
-    ignore_max_length: options.ignore_max_length,
-    allow_underscores: options.allow_underscores
-  })) {
-    if (!options.allow_ip_domain) {
-      return false;
-    }
-    if (!isIP(domain)) {
-      if (!domain.startsWith('[') || !domain.endsWith(']')) {
-        return false;
-      }
-      var noBracketdomain = domain.slice(1, -1);
-      if (noBracketdomain.length === 0 || !isIP(noBracketdomain)) {
-        return false;
-      }
-    }
-  }
-  if (options.blacklisted_chars) {
-    if (user.search(new RegExp("[".concat(options.blacklisted_chars, "]+"), 'g')) !== -1) return false;
-  }
-  if (user[0] === '"' && user[user.length - 1] === '"') {
-    user = user.slice(1, user.length - 1);
-    return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);
-  }
-  var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;
-  var user_parts = user.split('.');
-  for (var _i = 0; _i < user_parts.length; _i++) {
-    if (!pattern.test(user_parts[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
-
-var includes = function includes(str, val) {
-  return str.indexOf(val) !== -1;
-};
-
-/*
-options for isURL method
-
-protocols - valid protocols can be modified with this option.
-require_tld - If set to false isURL will not check if the URL's host includes a top-level domain.
-require_protocol - if set to true isURL will return false if protocol is not present in the URL.
-require_host - if set to false isURL will not check if host is present in the URL.
-require_port - if set to true isURL will check if port is present in the URL.
-require_valid_protocol - isURL will check if the URL's protocol is present in the protocols option.
-allow_underscores - if set to true, the validator will allow underscores in the URL.
-host_whitelist - if set to an array of strings or regexp, and the domain matches none of the strings
-                 defined in it, the validation fails.
-host_blacklist - if set to an array of strings or regexp, and the domain matches any of the strings
-                 defined in it, the validation fails.
-allow_trailing_dot - if set to true, the validator will allow the domain to end with
-                     a `.` character.
-allow_protocol_relative_urls - if set to true protocol relative URLs will be allowed.
-allow_fragments - if set to false isURL will return false if fragments are present.
-allow_query_components - if set to false isURL will return false if query components are present.
-disallow_auth - if set to true, the validator will fail if the URL contains an authentication
-                component, e.g. `http://username:password@example.com`
-validate_length - if set to false isURL will skip string length validation. `max_allowed_length`
-                  will be ignored if this is set as `false`.
-max_allowed_length - if set, isURL will not allow URLs longer than the specified value (default is
-                     2084 that IE maximum URL length).
-
-*/
-
-var default_url_options = {
-  protocols: ['http', 'https', 'ftp'],
-  require_tld: true,
-  require_protocol: false,
-  require_host: true,
-  require_port: false,
-  require_valid_protocol: true,
-  allow_underscores: false,
-  allow_trailing_dot: false,
-  allow_protocol_relative_urls: false,
-  allow_fragments: true,
-  allow_query_components: true,
-  validate_length: true,
-  max_allowed_length: 2084
-};
-var wrapped_ipv6 = /^\[([^\]]+)\](?::([0-9]+))?$/;
-function isURL(url, options) {
-  assertString(url);
-  if (!url || /[\s<>]/.test(url)) {
-    return false;
-  }
-  if (url.indexOf('mailto:') === 0) {
-    return false;
-  }
-  options = merge(options, default_url_options);
-  if (options.validate_length && url.length > options.max_allowed_length) {
-    return false;
-  }
-  if (!options.allow_fragments && includes(url, '#')) {
-    return false;
-  }
-  if (!options.allow_query_components && (includes(url, '?') || includes(url, '&'))) {
-    return false;
-  }
-  var protocol, auth, host, hostname, port, port_str, split, ipv6;
-  split = url.split('#');
-  url = split.shift();
-  split = url.split('?');
-  url = split.shift();
-  split = url.split('://');
-  if (split.length > 1) {
-    protocol = split.shift().toLowerCase();
-    if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {
-      return false;
-    }
-  } else if (options.require_protocol) {
-    return false;
-  } else if (url.slice(0, 2) === '//') {
-    if (!options.allow_protocol_relative_urls) {
-      return false;
-    }
-    split[0] = url.slice(2);
-  }
-  url = split.join('://');
-  if (url === '') {
-    return false;
-  }
-  split = url.split('/');
-  url = split.shift();
-  if (url === '' && !options.require_host) {
-    return true;
-  }
-  split = url.split('@');
-  if (split.length > 1) {
-    if (options.disallow_auth) {
-      return false;
-    }
-    if (split[0] === '') {
-      return false;
-    }
-    auth = split.shift();
-    if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {
-      return false;
-    }
-    var _auth$split = auth.split(':'),
-      _auth$split2 = _slicedToArray(_auth$split, 2),
-      user = _auth$split2[0],
-      password = _auth$split2[1];
-    if (user === '' && password === '') {
-      return false;
-    }
-  }
-  hostname = split.join('@');
-  port_str = null;
-  ipv6 = null;
-  var ipv6_match = hostname.match(wrapped_ipv6);
-  if (ipv6_match) {
-    host = '';
-    ipv6 = ipv6_match[1];
-    port_str = ipv6_match[2] || null;
-  } else {
-    split = hostname.split(':');
-    host = split.shift();
-    if (split.length) {
-      port_str = split.join(':');
-    }
-  }
-  if (port_str !== null && port_str.length > 0) {
-    port = parseInt(port_str, 10);
-    if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {
-      return false;
-    }
-  } else if (options.require_port) {
-    return false;
-  }
-  if (options.host_whitelist) {
-    return checkHost(host, options.host_whitelist);
-  }
-  if (host === '' && !options.require_host) {
-    return true;
-  }
-  if (!isIP(host) && !isFQDN(host, options) && (!ipv6 || !isIP(ipv6, 6))) {
-    return false;
-  }
-  host = host || ipv6;
-  if (options.host_blacklist && checkHost(host, options.host_blacklist)) {
-    return false;
-  }
-  return true;
-}
-
-var macAddress48 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/;
-var macAddress48NoSeparators = /^([0-9a-fA-F]){12}$/;
-var macAddress48WithDots = /^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/;
-var macAddress64 = /^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){6}([0-9a-fA-F]{2})$/;
-var macAddress64NoSeparators = /^([0-9a-fA-F]){16}$/;
-var macAddress64WithDots = /^([0-9a-fA-F]{4}\.){3}([0-9a-fA-F]{4})$/;
-function isMACAddress(str, options) {
-  assertString(str);
-  if (options !== null && options !== void 0 && options.eui) {
-    options.eui = String(options.eui);
-  }
-  /**
-   * @deprecated `no_colons` TODO: remove it in the next major
-  */
-  if (options !== null && options !== void 0 && options.no_colons || options !== null && options !== void 0 && options.no_separators) {
-    if (options.eui === '48') {
-      return macAddress48NoSeparators.test(str);
-    }
-    if (options.eui === '64') {
-      return macAddress64NoSeparators.test(str);
-    }
-    return macAddress48NoSeparators.test(str) || macAddress64NoSeparators.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '48') {
-    return macAddress48.test(str) || macAddress48WithDots.test(str);
-  }
-  if ((options === null || options === void 0 ? void 0 : options.eui) === '64') {
-    return macAddress64.test(str) || macAddress64WithDots.test(str);
-  }
-  return isMACAddress(str, {
-    eui: '48'
-  }) || isMACAddress(str, {
-    eui: '64'
-  });
-}
-
-var subnetMaybe = /^\d{1,3}$/;
-var v4Subnet = 32;
-var v6Subnet = 128;
-function isIPRange(str) {
-  var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-  assertString(str);
-  var parts = str.split('/');
-
-  // parts[0] -> ip, parts[1] -> subnet
-  if (parts.length !== 2) {
-    return false;
-  }
-  if (!subnetMaybe.test(parts[1])) {
-    return false;
-  }
-
-  // Disallow preceding 0 i.e. 01, 02, ...
-  if (parts[1].length > 1 && parts[1].startsWith('0')) {
-    return false;
-  }
-  var isValidIP = isIP(parts[0], version);
-  if (!isValidIP) {
-    return false;
-  }
-
-  // Define valid subnet according to IP's version
-  var expectedSubnet = null;
-  switch (String(version)) {
-    case '4':
-      expectedSubnet = v4Subnet;
-      break;
-    case '6':
-      expectedSubnet = v6Subnet;
-      break;
-    default:
-      expectedSubnet = isIP(parts[0], '6') ? v6Subnet : v4Subnet;
-  }
-  return parts[1] <= expectedSubnet && parts[1] >= 0;
-}
-
-var default_date_options = {
-  format: 'YYYY/MM/DD',
-  delimiters: ['/', '-'],
-  strictMode: false
-};
-function isValidFormat(format) {
-  return /(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(format);
-}
-function zip(date, format) {
-  var zippedArr = [],
-    len = Math.max(date.length, format.length);
-  for (var i = 0; i < len; i++) {
-    zippedArr.push([date[i], format[i]]);
-  }
-  return zippedArr;
-}
-function isDate(input, options) {
-  if (typeof options === 'string') {
-    // Allow backward compatibility for old format isDate(input [, format])
-    options = merge({
-      format: options
-    }, default_date_options);
-  } else {
-    options = merge(options, default_date_options);
-  }
-  if (typeof input === 'string' && isValidFormat(options.format)) {
-    if (options.strictMode && input.length !== options.format.length) return false;
-    var formatDelimiter = options.delimiters.find(function (delimiter) {
-      return options.format.indexOf(delimiter) !== -1;
-    });
-    var dateDelimiter = options.strictMode ? formatDelimiter : options.delimiters.find(function (delimiter) {
-      return input.indexOf(delimiter) !== -1;
-    });
-    var dateAndFormat = zip(input.split(dateDelimiter), options.format.toLowerCase().split(formatDelimiter));
-    var dateObj = {};
-    var _iterator = _createForOfIteratorHelper(dateAndFormat),
-      _step;
-    try {
-      for (_iterator.s(); !(_step = _iterator.n()).done;) {
-        var _step$value = _slicedToArray(_step.value, 2),
-          dateWord = _step$value[0],
-          formatWord = _step$value[1];
-        if (!dateWord || !formatWord || dateWord.length !== formatWord.length) {
-          return false;
-        }
-        dateObj[formatWord.charAt(0)] = dateWord;
-      }
-    } catch (err) {
-      _iterator.e(err);
-    } finally {
-      _iterator.f();
-    }
-    var fullYear = dateObj.y;
-
-    // Check if the year starts with a hyphen
-    if (fullYear.startsWith('-')) {
-      return false; // Hyphen before year is not allowed
-    }
-    if (dateObj.y.length === 2) {
-      var parsedYear = parseInt(dateObj.y, 10);
-      if (isNaN(parsedYear)) {
-        return false;
-      }
-      var currentYearLastTwoDigits = new Date().getFullYear() % 100;
-      if (parsedYear < currentYearLastTwoDigits) {
-        fullYear = "20".concat(dateObj.y);
-      } else {
-        fullYear = "19".concat(dateObj.y);
-      }
-    }
-    var month = dateObj.m;
-    if (dateObj.m.length === 1) {
-      month = "0".concat(dateObj.m);
-    }
-    var day = dateObj.d;
-    if (dateObj.d.length === 1) {
-      day = "0".concat(dateObj.d);
-    }
-    return new Date("".concat(fullYear, "-").concat(month, "-").concat(day, "T00:00:00.000Z")).getUTCDate() === +dateObj.d;
-  }
-  if (!options.strictMode) {
-    return Object.prototype.toString.call(input) === '[object Date]' && isFinite(input);
-  }
-  return false;
-}
-
-var default_time_options = {
-  hourFormat: 'hour24',
-  mode: 'default'
-};
-var formats = {
-  hour24: {
-    "default": /^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,
-    withSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,
-    withOptionalSeconds: /^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/
-  },
-  hour12: {
-    "default": /^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,
-    withSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,
-    withOptionalSeconds: /^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/
-  }
-};
-function isTime(input, options) {
-  options = merge(options, default_time_options);
-  if (typeof input !== 'string') return false;
-  return formats[options.hourFormat][options.mode].test(input);
-}
-
-var includes$2 = function includes(arr, val) {
-  return arr.some(function (arrVal) {
-    return val === arrVal;
-  });
-};
-
-var defaultOptions = {
-  loose: false
-};
-var strictBooleans = ['true', 'false', '1', '0'];
-var looseBooleans = [].concat(strictBooleans, ['yes', 'no']);
-function isBoolean(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultOptions;
-  assertString(str);
-  if (options.loose) {
-    return includes$2(looseBooleans, str.toLowerCase());
-  }
-  return includes$2(strictBooleans, str);
-}
-
-/*
-  = 3ALPHA              ; selected ISO 639 codes
-    *2("-" 3ALPHA)      ; permanently reserved
- */
-var extlang = '([A-Za-z]{3}(-[A-Za-z]{3}){0,2})';
-
-/*
-  = 2*3ALPHA            ; shortest ISO 639 code
-    ["-" extlang]       ; sometimes followed by
-                        ; extended language subtags
-  / 4ALPHA              ; or reserved for future use
-  / 5*8ALPHA            ; or registered language subtag
- */
-var language = "(([a-zA-Z]{2,3}(-".concat(extlang, ")?)|([a-zA-Z]{5,8}))");
-
-/*
-  = 4ALPHA              ; ISO 15924 code
- */
-var script = '([A-Za-z]{4})';
-
-/*
-  = 2ALPHA              ; ISO 3166-1 code
-  / 3DIGIT              ; UN M.49 code
- */
-var region = '([A-Za-z]{2}|\\d{3})';
-
-/*
-  = 5*8alphanum         ; registered variants
-  / (DIGIT 3alphanum)
- */
-var variant = '([A-Za-z0-9]{5,8}|(\\d[A-Z-a-z0-9]{3}))';
-
-/*
-  = DIGIT               ; 0 - 9
-  / %x41-57             ; A - W
-  / %x59-5A             ; Y - Z
-  / %x61-77             ; a - w
-  / %x79-7A             ; y - z
- */
-var singleton = '(\\d|[A-W]|[Y-Z]|[a-w]|[y-z])';
-
-/*
-  = singleton 1*("-" (2*8alphanum))
-                        ; Single alphanumerics
-                        ; "x" reserved for private use
- */
-var extension = "(".concat(singleton, "(-[A-Za-z0-9]{2,8})+)");
-
-/*
-  = "x" 1*("-" (1*8alphanum))
- */
-var privateuse = '(x(-[A-Za-z0-9]{1,8})+)';
-
-// irregular tags do not match the 'langtag' production and would not
-// otherwise be considered 'well-formed'. These tags are all valid, but
-// most are deprecated in favor of more modern subtags or subtag combination
-
-var irregular = '((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|' + '(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|' + '(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))';
-
-// regular tags match the 'langtag' production, but their subtags are not
-// extended language or variant subtags: their meaning is defined by
-// their registration and all of these are deprecated in favor of a more
-// modern subtag or sequence of subtags
-
-var regular = '((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|' + '(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))';
-
-/*
-  = irregular           ; non-redundant tags registered
-  / regular             ; during the RFC 3066 era
-
- */
-var grandfathered = "(".concat(irregular, "|").concat(regular, ")");
-
-/*
-  RFC 5646 defines delimitation of subtags via a hyphen:
-
-      "Subtag" refers to a specific section of a tag, delimited by a
-      hyphen, such as the subtags 'zh', 'Hant', and 'CN' in the tag "zh-
-      Hant-CN".  Examples of subtags in this document are enclosed in
-      single quotes ('Hant')
-
-  However, we need to add "_" to maintain the existing behaviour.
- */
-var delimiter = '(-|_)';
-
-/*
-  = language
-    ["-" script]
-    ["-" region]
-    *("-" variant)
-    *("-" extension)
-    ["-" privateuse]
- */
-var langtag = "".concat(language, "(").concat(delimiter).concat(script, ")?(").concat(delimiter).concat(region, ")?(").concat(delimiter).concat(variant, ")*(").concat(delimiter).concat(extension, ")*(").concat(delimiter).concat(privateuse, ")?");
-
-/*
-  Regex implementation based on BCP RFC 5646
-  Tags for Identifying Languages
-  https://www.rfc-editor.org/rfc/rfc5646.html
- */
-var languageTagRegex = new RegExp("(^".concat(privateuse, "$)|(^").concat(grandfathered, "$)|(^").concat(langtag, "$)"));
-function isLocale(str) {
-  assertString(str);
-  return languageTagRegex.test(str);
-}
-
-// http://www.brainjar.com/js/validation/
-// https://www.aba.com/news-research/research-analysis/routing-number-policy-procedures
-// series reserved for future use are excluded
-var isRoutingReg = /^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;
-function isAbaRouting(str) {
-  assertString(str);
-  if (!isRoutingReg.test(str)) return false;
-  var checkSumVal = 0;
-  for (var i = 0; i < str.length; i++) {
-    if (i % 3 === 0) checkSumVal += str[i] * 3;else if (i % 3 === 1) checkSumVal += str[i] * 7;else checkSumVal += str[i] * 1;
-  }
-  return checkSumVal % 10 === 0;
-}
-
-function isAlpha(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  assertString(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in alpha) {
-    return alpha[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales$1 = Object.keys(alpha);
-
-function isAlphanumeric(_str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-  assertString(_str);
-  var str = _str;
-  var ignore = options.ignore;
-  if (ignore) {
-    if (ignore instanceof RegExp) {
-      str = str.replace(ignore, '');
-    } else if (typeof ignore === 'string') {
-      str = str.replace(new RegExp("[".concat(ignore.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g, '\\$&'), "]"), 'g'), ''); // escape regex for ignore
-    } else {
-      throw new Error('ignore should be instance of a String or RegExp');
-    }
-  }
-  if (locale in alphanumeric) {
-    return alphanumeric[locale].test(str);
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales$2 = Object.keys(alphanumeric);
-
-var numericNoSymbols = /^[0-9]+$/;
-function isNumeric(str, options) {
-  assertString(str);
-  if (options && options.no_symbols) {
-    return numericNoSymbols.test(str);
-  }
-  return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? decimal[options.locale] : '.', "])?[0-9]+$")).test(str);
-}
-
-/**
- * Reference:
- * https://en.wikipedia.org/ -- Wikipedia
- * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number
- * https://countrycode.org/ -- Country Codes
- */
-var passportRegexByCountryCode = {
-  AM: /^[A-Z]{2}\d{7}$/,
-  // ARMENIA
-  AR: /^[A-Z]{3}\d{6}$/,
-  // ARGENTINA
-  AT: /^[A-Z]\d{7}$/,
-  // AUSTRIA
-  AU: /^[A-Z]\d{7}$/,
-  // AUSTRALIA
-  AZ: /^[A-Z]{1}\d{8}$/,
-  // AZERBAIJAN
-  BE: /^[A-Z]{2}\d{6}$/,
-  // BELGIUM
-  BG: /^\d{9}$/,
-  // BULGARIA
-  BR: /^[A-Z]{2}\d{6}$/,
-  // BRAZIL
-  BY: /^[A-Z]{2}\d{7}$/,
-  // BELARUS
-  CA: /^[A-Z]{2}\d{6}$|^[A-Z]\d{6}[A-Z]{2}$/,
-  // CANADA
-  CH: /^[A-Z]\d{7}$/,
-  // SWITZERLAND
-  CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,
-  // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits
-  CY: /^[A-Z](\d{6}|\d{8})$/,
-  // CYPRUS
-  CZ: /^\d{8}$/,
-  // CZECH REPUBLIC
-  DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,
-  // GERMANY
-  DK: /^\d{9}$/,
-  // DENMARK
-  DZ: /^\d{9}$/,
-  // ALGERIA
-  EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,
-  // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits
-  ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,
-  // SPAIN
-  FI: /^[A-Z]{2}\d{7}$/,
-  // FINLAND
-  FR: /^\d{2}[A-Z]{2}\d{5}$/,
-  // FRANCE
-  GB: /^\d{9}$/,
-  // UNITED KINGDOM
-  GR: /^[A-Z]{2}\d{7}$/,
-  // GREECE
-  HR: /^\d{9}$/,
-  // CROATIA
-  HU: /^[A-Z]{2}(\d{6}|\d{7})$/,
-  // HUNGARY
-  IE: /^[A-Z0-9]{2}\d{7}$/,
-  // IRELAND
-  IN: /^[A-Z]{1}-?\d{7}$/,
-  // INDIA
-  ID: /^[A-C]\d{7}$/,
-  // INDONESIA
-  IR: /^[A-Z]\d{8}$/,
-  // IRAN
-  IS: /^(A)\d{7}$/,
-  // ICELAND
-  IT: /^[A-Z0-9]{2}\d{7}$/,
-  // ITALY
-  JM: /^[Aa]\d{7}$/,
-  // JAMAICA
-  JP: /^[A-Z]{2}\d{7}$/,
-  // JAPAN
-  KR: /^[MS]\d{8}$/,
-  // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]
-  KZ: /^[a-zA-Z]\d{7}$/,
-  // KAZAKHSTAN
-  LI: /^[a-zA-Z]\d{5}$/,
-  // LIECHTENSTEIN
-  LT: /^[A-Z0-9]{8}$/,
-  // LITHUANIA
-  LU: /^[A-Z0-9]{8}$/,
-  // LUXEMBURG
-  LV: /^[A-Z0-9]{2}\d{7}$/,
-  // LATVIA
-  LY: /^[A-Z0-9]{8}$/,
-  // LIBYA
-  MT: /^\d{7}$/,
-  // MALTA
-  MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,
-  // MOZAMBIQUE
-  MY: /^[AHK]\d{8}$/,
-  // MALAYSIA
-  MX: /^\d{10,11}$/,
-  // MEXICO
-  NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/,
-  // NETHERLANDS
-  NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,
-  // NEW ZEALAND
-  PH: /^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,
-  // PHILIPPINES
-  PK: /^[A-Z]{2}\d{7}$/,
-  // PAKISTAN
-  PL: /^[A-Z]{2}\d{7}$/,
-  // POLAND
-  PT: /^[A-Z]\d{6}$/,
-  // PORTUGAL
-  RO: /^\d{8,9}$/,
-  // ROMANIA
-  RU: /^\d{9}$/,
-  // RUSSIAN FEDERATION
-  SE: /^\d{8}$/,
-  // SWEDEN
-  SL: /^(P)[A-Z]\d{7}$/,
-  // SLOVENIA
-  SK: /^[0-9A-Z]\d{7}$/,
-  // SLOVAKIA
-  TH: /^[A-Z]{1,2}\d{6,7}$/,
-  // THAILAND
-  TR: /^[A-Z]\d{8}$/,
-  // TURKEY
-  UA: /^[A-Z]{2}\d{6}$/,
-  // UKRAINE
-  US: /^\d{9}$|^[A-Z]\d{8}$/,
-  // UNITED STATES
-  ZA: /^[TAMD]\d{8}$/ // SOUTH AFRICA
-};
-var locales$3 = Object.keys(passportRegexByCountryCode);
-
-/**
- * Check if str is a valid passport number
- * relative to provided ISO Country Code.
- *
- * @param {string} str
- * @param {string} countryCode
- * @return {boolean}
- */
-function isPassportNumber(str, countryCode) {
-  assertString(str);
-  /** Remove All Whitespaces, Convert to UPPERCASE */
-  var normalizedStr = str.replace(/\s/g, '').toUpperCase();
-  return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);
-}
-
-var _int = /^(?:[-+]?(?:0|[1-9][0-9]*))$/;
-var intLeadingZeroes = /^[-+]?[0-9]+$/;
-function isInt(str, options) {
-  assertString(str);
-  options = options || {};
-
-  // Get the regex to use for testing, based on whether
-  // leading zeroes are allowed or not.
-  var regex = options.allow_leading_zeroes === false ? _int : intLeadingZeroes;
-
-  // Check min/max/lt/gt
-  var minCheckPassed = !options.hasOwnProperty('min') || isNullOrUndefined(options.min) || str >= options.min;
-  var maxCheckPassed = !options.hasOwnProperty('max') || isNullOrUndefined(options.max) || str <= options.max;
-  var ltCheckPassed = !options.hasOwnProperty('lt') || isNullOrUndefined(options.lt) || str < options.lt;
-  var gtCheckPassed = !options.hasOwnProperty('gt') || isNullOrUndefined(options.gt) || str > options.gt;
-  return regex.test(str) && minCheckPassed && maxCheckPassed && ltCheckPassed && gtCheckPassed;
-}
-
-function isPort(str) {
-  return isInt(str, {
-    allow_leading_zeroes: false,
-    min: 0,
-    max: 65535
-  });
-}
-
-function isLowercase(str) {
-  assertString(str);
-  return str === str.toLowerCase();
-}
-
-function isUppercase(str) {
-  assertString(str);
-  return str === str.toUpperCase();
-}
-
-var imeiRegexWithoutHyphens = /^[0-9]{15}$/;
-var imeiRegexWithHyphens = /^\d{2}-\d{6}-\d{6}-\d{1}$/;
-function isIMEI(str, options) {
-  assertString(str);
-  options = options || {};
-
-  // default regex for checking imei is the one without hyphens
-
-  var imeiRegex = imeiRegexWithoutHyphens;
-  if (options.allow_hyphens) {
-    imeiRegex = imeiRegexWithHyphens;
-  }
-  if (!imeiRegex.test(str)) {
-    return false;
-  }
-  str = str.replace(/-/g, '');
-  var sum = 0,
-    mul = 2,
-    l = 14;
-  for (var i = 0; i < l; i++) {
-    var digit = str.substring(l - i - 1, l - i);
-    var tp = parseInt(digit, 10) * mul;
-    if (tp >= 10) {
-      sum += tp % 10 + 1;
-    } else {
-      sum += tp;
-    }
-    if (mul === 1) {
-      mul += 1;
-    } else {
-      mul -= 1;
-    }
-  }
-  var chk = (10 - sum % 10) % 10;
-  if (chk !== parseInt(str.substring(14, 15), 10)) {
-    return false;
-  }
-  return true;
-}
-
-/* eslint-disable no-control-regex */
-var ascii = /^[\x00-\x7F]+$/;
-/* eslint-enable no-control-regex */
-
-function isAscii(str) {
-  assertString(str);
-  return ascii.test(str);
-}
-
-var fullWidth = /[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-function isFullWidth(str) {
-  assertString(str);
-  return fullWidth.test(str);
-}
-
-var halfWidth = /[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;
-function isHalfWidth(str) {
-  assertString(str);
-  return halfWidth.test(str);
-}
-
-function isVariableWidth(str) {
-  assertString(str);
-  return fullWidth.test(str) && halfWidth.test(str);
-}
-
-/* eslint-disable no-control-regex */
-var multibyte = /[^\x00-\x7F]/;
-/* eslint-enable no-control-regex */
-
-function isMultibyte(str) {
-  assertString(str);
-  return multibyte.test(str);
-}
-
-/**
- * Build RegExp object from an array
- * of multiple/multi-line regexp parts
- *
- * @param {string[]} parts
- * @param {string} flags
- * @return {object} - RegExp object
- */
-function multilineRegexp(parts, flags) {
-  var regexpAsStringLiteral = parts.join('');
-  return new RegExp(regexpAsStringLiteral, flags);
-}
-
-/**
- * Regular Expression to match
- * semantic versioning (SemVer)
- * built from multi-line, multi-parts regexp
- * Reference: https://semver.org/
- */
-var semanticVersioningRegex = multilineRegexp(['^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)', '(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))', '?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$'], 'i');
-function isSemVer(str) {
-  assertString(str);
-  return semanticVersioningRegex.test(str);
-}
-
-var surrogatePair = /[\uD800-\uDBFF][\uDC00-\uDFFF]/;
-function isSurrogatePair(str) {
-  assertString(str);
-  return surrogatePair.test(str);
-}
-
-function decimalRegExp(options) {
-  var regExp = new RegExp("^[-+]?([0-9]+)?(\\".concat(decimal[options.locale], "[0-9]{").concat(options.decimal_digits, "})").concat(options.force_decimal ? '' : '?', "$"));
-  return regExp;
-}
-var default_decimal_options = {
-  force_decimal: false,
-  decimal_digits: '1,',
-  locale: 'en-US'
-};
-var blacklist = ['', '-', '+'];
-function isDecimal(str, options) {
-  assertString(str);
-  options = merge(options, default_decimal_options);
-  if (options.locale in decimal) {
-    return !includes$2(blacklist, str.replace(/ /g, '')) && decimalRegExp(options).test(str);
-  }
-  throw new Error("Invalid locale '".concat(options.locale, "'"));
-}
-
-var hexadecimal = /^(0x|0h)?[0-9A-F]+$/i;
-function isHexadecimal(str) {
-  assertString(str);
-  return hexadecimal.test(str);
-}
-
-var octal = /^(0o)?[0-7]+$/i;
-function isOctal(str) {
-  assertString(str);
-  return octal.test(str);
-}
-
-function isDivisibleBy(str, num) {
-  assertString(str);
-  return toFloat(str) % parseInt(num, 10) === 0;
-}
-
-var hexcolor = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;
-function isHexColor(str) {
-  assertString(str);
-  return hexcolor.test(str);
-}
-
-/* eslint-disable prefer-rest-params */
-var rgbColor = /^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/;
-var rgbaColor = /^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var rgbColorPercent = /^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)$/;
-var rgbaColorPercent = /^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/;
-var startsWithRgb = /^rgba?/;
-function isRgbColor(str, options) {
-  assertString(str);
-  // default options to true for percent and false for spaces
-  var allowSpaces = false;
-  var includePercentValues = true;
-  if (_typeof(options) !== 'object') {
-    if (arguments.length >= 2) {
-      includePercentValues = arguments[1];
-    }
-  } else {
-    allowSpaces = options.allowSpaces !== undefined ? options.allowSpaces : allowSpaces;
-    includePercentValues = options.includePercentValues !== undefined ? options.includePercentValues : includePercentValues;
-  }
-  if (allowSpaces) {
-    // make sure it starts with continous rgba? without spaces before stripping
-    if (!startsWithRgb.test(str)) {
-      return false;
-    }
-    // strip all whitespace
-    str = str.replace(/\s/g, '');
-  }
-  if (!includePercentValues) {
-    return rgbColor.test(str) || rgbaColor.test(str);
-  }
-  return rgbColor.test(str) || rgbaColor.test(str) || rgbColorPercent.test(str) || rgbaColorPercent.test(str);
-}
-
-var hslComma = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i;
-var hslSpace = /^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;
-function isHSL(str) {
-  assertString(str);
-
-  // Strip duplicate spaces before calling the validation regex (See  #1598 for more info)
-  var strippedStr = str.replace(/\s+/g, ' ').replace(/\s?(hsla?\(|\)|,)\s?/ig, '$1');
-  if (strippedStr.indexOf(',') !== -1) {
-    return hslComma.test(strippedStr);
-  }
-  return hslSpace.test(strippedStr);
-}
-
-// see http://isrc.ifpi.org/en/isrc-standard/code-syntax
-var isrc = /^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;
-function isISRC(str) {
-  assertString(str);
-  return isrc.test(str);
-}
-
-/**
- * List of country codes with
- * corresponding IBAN regular expression
- * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
- */
-var ibanRegexThroughCountryCode = {
-  AD: /^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,
-  AE: /^(AE[0-9]{2})\d{3}\d{16}$/,
-  AL: /^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  AT: /^(AT[0-9]{2})\d{16}$/,
-  AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  BA: /^(BA[0-9]{2})\d{16}$/,
-  BE: /^(BE[0-9]{2})\d{12}$/,
-  BG: /^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,
-  BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,
-  BR: /^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,
-  BY: /^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  CH: /^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  CR: /^(CR[0-9]{2})\d{18}$/,
-  CY: /^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,
-  CZ: /^(CZ[0-9]{2})\d{20}$/,
-  DE: /^(DE[0-9]{2})\d{18}$/,
-  DK: /^(DK[0-9]{2})\d{14}$/,
-  DO: /^(DO[0-9]{2})[A-Z]{4}\d{20}$/,
-  DZ: /^(DZ\d{24})$/,
-  EE: /^(EE[0-9]{2})\d{16}$/,
-  EG: /^(EG[0-9]{2})\d{25}$/,
-  ES: /^(ES[0-9]{2})\d{20}$/,
-  FI: /^(FI[0-9]{2})\d{14}$/,
-  FO: /^(FO[0-9]{2})\d{14}$/,
-  FR: /^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  GB: /^(GB[0-9]{2})[A-Z]{4}\d{14}$/,
-  GE: /^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,
-  GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,
-  GL: /^(GL[0-9]{2})\d{14}$/,
-  GR: /^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,
-  GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,
-  HR: /^(HR[0-9]{2})\d{17}$/,
-  HU: /^(HU[0-9]{2})\d{24}$/,
-  IE: /^(IE[0-9]{2})[A-Z]{4}\d{14}$/,
-  IL: /^(IL[0-9]{2})\d{19}$/,
-  IQ: /^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,
-  IR: /^(IR[0-9]{2})0\d{2}0\d{18}$/,
-  IS: /^(IS[0-9]{2})\d{22}$/,
-  IT: /^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  JO: /^(JO[0-9]{2})[A-Z]{4}\d{22}$/,
-  KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,
-  KZ: /^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LB: /^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,
-  LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,
-  LI: /^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,
-  LT: /^(LT[0-9]{2})\d{16}$/,
-  LU: /^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,
-  LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,
-  MA: /^(MA[0-9]{26})$/,
-  MC: /^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,
-  MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,
-  ME: /^(ME[0-9]{2})\d{18}$/,
-  MK: /^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,
-  MR: /^(MR[0-9]{2})\d{23}$/,
-  MT: /^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,
-  MU: /^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,
-  MZ: /^(MZ[0-9]{2})\d{21}$/,
-  NL: /^(NL[0-9]{2})[A-Z]{4}\d{10}$/,
-  NO: /^(NO[0-9]{2})\d{11}$/,
-  PK: /^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,
-  PL: /^(PL[0-9]{2})\d{24}$/,
-  PS: /^(PS[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  PT: /^(PT[0-9]{2})\d{21}$/,
-  QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,
-  RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,
-  RS: /^(RS[0-9]{2})\d{18}$/,
-  SA: /^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,
-  SC: /^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,
-  SE: /^(SE[0-9]{2})\d{20}$/,
-  SI: /^(SI[0-9]{2})\d{15}$/,
-  SK: /^(SK[0-9]{2})\d{20}$/,
-  SM: /^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,
-  SV: /^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,
-  TL: /^(TL[0-9]{2})\d{19}$/,
-  TN: /^(TN[0-9]{2})\d{20}$/,
-  TR: /^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,
-  UA: /^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,
-  VA: /^(VA[0-9]{2})\d{18}$/,
-  VG: /^(VG[0-9]{2})[A-Z]{4}\d{16}$/,
-  XK: /^(XK[0-9]{2})\d{16}$/
-};
-
-/**
- * Check if the country codes passed are valid using the
- * ibanRegexThroughCountryCode as a reference
- *
- * @param {array} countryCodeArray
- * @return {boolean}
- */
-
-function hasOnlyValidCountryCodes(countryCodeArray) {
-  var countryCodeArrayFilteredWithObjectIbanCode = countryCodeArray.filter(function (countryCode) {
-    return !(countryCode in ibanRegexThroughCountryCode);
-  });
-  if (countryCodeArrayFilteredWithObjectIbanCode.length > 0) {
-    return false;
-  }
-  return true;
-}
-
-/**
- * Check whether string has correct universal IBAN format
- * The IBAN consists of up to 34 alphanumeric characters, as follows:
- * Country Code using ISO 3166-1 alpha-2, two letters
- * check digits, two digits and
- * Basic Bank Account Number (BBAN), up to 30 alphanumeric characters.
- * NOTE: Permitted IBAN characters are: digits [0-9] and the 26 latin alphabetic [A-Z]
- *
- * @param {string} str - string under validation
- * @param {object} options - object to pass the countries to be either whitelisted or blacklisted
- * @return {boolean}
- */
-function hasValidIbanFormat(str, options) {
-  // Strip white spaces and hyphens
-  var strippedStr = str.replace(/[\s\-]+/gi, '').toUpperCase();
-  var isoCountryCode = strippedStr.slice(0, 2).toUpperCase();
-  var isoCountryCodeInIbanRegexCodeObject = isoCountryCode in ibanRegexThroughCountryCode;
-  if (options.whitelist) {
-    if (!hasOnlyValidCountryCodes(options.whitelist)) {
-      return false;
-    }
-    var isoCountryCodeInWhiteList = includes$2(options.whitelist, isoCountryCode);
-    if (!isoCountryCodeInWhiteList) {
-      return false;
-    }
-  }
-  if (options.blacklist) {
-    var isoCountryCodeInBlackList = includes$2(options.blacklist, isoCountryCode);
-    if (isoCountryCodeInBlackList) {
-      return false;
-    }
-  }
-  return isoCountryCodeInIbanRegexCodeObject && ibanRegexThroughCountryCode[isoCountryCode].test(strippedStr);
-}
-
-/**
-   * Check whether string has valid IBAN Checksum
-   * by performing basic mod-97 operation and
-   * the remainder should equal 1
-   * -- Start by rearranging the IBAN by moving the four initial characters to the end of the string
-   * -- Replace each letter in the string with two digits, A -> 10, B = 11, Z = 35
-   * -- Interpret the string as a decimal integer and
-   * -- compute the remainder on division by 97 (mod 97)
-   * Reference: https://en.wikipedia.org/wiki/International_Bank_Account_Number
-   *
-   * @param {string} str
-   * @return {boolean}
-   */
-function hasValidIbanChecksum(str) {
-  var strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic
-  var rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);
-  var alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, function (_char) {
-    return _char.charCodeAt(0) - 55;
-  });
-  var remainder = alphaCapsReplacedWithDigits.match(/\d{1,7}/g).reduce(function (acc, value) {
-    return Number(acc + value) % 97;
-  }, '');
-  return remainder === 1;
-}
-function isIBAN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  return hasValidIbanFormat(str, options) && hasValidIbanChecksum(str);
-}
-var locales$4 = Object.keys(ibanRegexThroughCountryCode);
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
-var validISO31661Alpha2CountriesCodes = new Set(['AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW']);
-function isISO31661Alpha2(str) {
-  assertString(str);
-  return validISO31661Alpha2CountriesCodes.has(str.toUpperCase());
-}
-var CountryCodes = validISO31661Alpha2CountriesCodes;
-
-// https://en.wikipedia.org/wiki/ISO_9362
-var isBICReg = /^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;
-function isBIC(str) {
-  assertString(str);
-
-  // toUpperCase() should be removed when a new major version goes out that changes
-  // the regex to [A-Z] (per the spec).
-  var countryCode = str.slice(4, 6).toUpperCase();
-  if (!CountryCodes.has(countryCode) && countryCode !== 'XK') {
-    return false;
-  }
-  return isBICReg.test(str);
-}
-
-var md5 = /^[a-f0-9]{32}$/;
-function isMD5(str) {
-  assertString(str);
-  return md5.test(str);
-}
-
-var lengths = {
-  md5: 32,
-  md4: 32,
-  sha1: 40,
-  sha256: 64,
-  sha384: 96,
-  sha512: 128,
-  ripemd128: 32,
-  ripemd160: 40,
-  tiger128: 32,
-  tiger160: 40,
-  tiger192: 48,
-  crc32: 8,
-  crc32b: 8
-};
-function isHash(str, algorithm) {
-  assertString(str);
-  var hash = new RegExp("^[a-fA-F0-9]{".concat(lengths[algorithm], "}$"));
-  return hash.test(str);
-}
-
-var base64WithPadding = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/;
-var base64WithoutPadding = /^[A-Za-z0-9+/]+$/;
-var base64UrlWithPadding = /^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}==|[A-Za-z0-9_-]{3}=|[A-Za-z0-9_-]{4})$/;
-var base64UrlWithoutPadding = /^[A-Za-z0-9_-]+$/;
-function isBase64(str, options) {
-  var _options;
-  assertString(str);
-  options = merge(options, {
-    urlSafe: false,
-    padding: !((_options = options) !== null && _options !== void 0 && _options.urlSafe)
-  });
-  if (str === '') return true;
-  var regex;
-  if (options.urlSafe) {
-    regex = options.padding ? base64UrlWithPadding : base64UrlWithoutPadding;
-  } else {
-    regex = options.padding ? base64WithPadding : base64WithoutPadding;
-  }
-  return (!options.padding || str.length % 4 === 0) && regex.test(str);
-}
-
-function isJWT(str) {
-  assertString(str);
-  var dotSplit = str.split('.');
-  var len = dotSplit.length;
-  if (len !== 3) {
-    return false;
-  }
-  return dotSplit.reduce(function (acc, currElem) {
-    return acc && isBase64(currElem, {
-      urlSafe: true
-    });
-  }, true);
-}
-
-var default_json_options = {
-  allow_primitives: false
-};
-function isJSON(str, options) {
-  assertString(str);
-  try {
-    options = merge(options, default_json_options);
-    var primitives = [];
-    if (options.allow_primitives) {
-      primitives = [null, false, true];
-    }
-    var obj = JSON.parse(str);
-    return includes$2(primitives, obj) || !!obj && _typeof(obj) === 'object';
-  } catch (e) {/* ignore */}
-  return false;
-}
-
-var default_is_empty_options = {
-  ignore_whitespace: false
-};
-function isEmpty(str, options) {
-  assertString(str);
-  options = merge(options, default_is_empty_options);
-  return (options.ignore_whitespace ? str.trim().length : str.length) === 0;
-}
-
-/* eslint-disable prefer-rest-params */
-function isLength(str, options) {
-  assertString(str);
-  var min;
-  var max;
-  if (_typeof(options) === 'object') {
-    min = options.min || 0;
-    max = options.max;
-  } else {
-    // backwards compatibility: isLength(str, min [, max])
-    min = arguments[1] || 0;
-    max = arguments[2];
-  }
-  var presentationSequences = str.match(/(\uFE0F|\uFE0E)/g) || [];
-  var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
-  var len = str.length - presentationSequences.length - surrogatePairs.length;
-  var isInsideRange = len >= min && (typeof max === 'undefined' || len <= max);
-  if (isInsideRange && Array.isArray(options === null || options === void 0 ? void 0 : options.discreteLengths)) {
-    return options.discreteLengths.some(function (discreteLen) {
-      return discreteLen === len;
-    });
-  }
-  return isInsideRange;
-}
-
-function isULID(str) {
-  assertString(str);
-  return /^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i.test(str);
-}
-
-var uuid = {
-  1: /^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  2: /^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  3: /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  4: /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  5: /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  6: /^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  7: /^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  8: /^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
-  nil: /^00000000-0000-0000-0000-000000000000$/i,
-  max: /^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,
-  loose: /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
-  // From https://github.com/uuidjs/uuid/blob/main/src/regex.js
-  all: /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i
-};
-function isUUID(str, version) {
-  assertString(str);
-  if (version === undefined || version === null) {
-    version = 'all';
-  }
-  return version in uuid ? uuid[version].test(str) : false;
-}
-
-function isMongoId(str) {
-  assertString(str);
-  return isHexadecimal(str) && str.length === 24;
-}
-
-function isAfter(date, options) {
-  // For backwards compatibility:
-  // isAfter(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = toDate(comparisonDate);
-  var original = toDate(date);
-  return !!(original && comparison && original > comparison);
-}
-
-function isBefore(date, options) {
-  // For backwards compatibility:
-  // isBefore(str [, date]), i.e. `options` could be used as argument for the legacy `date`
-  var comparisonDate = (_typeof(options) === 'object' ? options.comparisonDate : options) || Date().toString();
-  var comparison = toDate(comparisonDate);
-  var original = toDate(date);
-  return !!(original && comparison && original < comparison);
-}
-
-function isIn(str, options) {
-  assertString(str);
-  var i;
-  if (Object.prototype.toString.call(options) === '[object Array]') {
-    var array = [];
-    for (i in options) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if ({}.hasOwnProperty.call(options, i)) {
-        array[i] = toString$1(options[i]);
-      }
-    }
-    return array.indexOf(str) >= 0;
-  } else if (_typeof(options) === 'object') {
-    return options.hasOwnProperty(str);
-  } else if (options && typeof options.indexOf === 'function') {
-    return options.indexOf(str) >= 0;
-  }
-  return false;
-}
-
-function isLuhnNumber(str) {
-  assertString(str);
-  var sanitized = str.replace(/[- ]+/g, '');
-  var sum = 0;
-  var digit;
-  var tmpNum;
-  var shouldDouble;
-  for (var i = sanitized.length - 1; i >= 0; i--) {
-    digit = sanitized.substring(i, i + 1);
-    tmpNum = parseInt(digit, 10);
-    if (shouldDouble) {
-      tmpNum *= 2;
-      if (tmpNum >= 10) {
-        sum += tmpNum % 10 + 1;
-      } else {
-        sum += tmpNum;
-      }
-    } else {
-      sum += tmpNum;
-    }
-    shouldDouble = !shouldDouble;
-  }
-  return !!(sum % 10 === 0 ? sanitized : false);
-}
-
-var cards = {
-  amex: /^3[47][0-9]{13}$/,
-  dinersclub: /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,
-  discover: /^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,
-  jcb: /^(?:2131|1800|35\d{3})\d{11}$/,
-  mastercard: /^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,
-  // /^[25][1-7][0-9]{14}$/;
-  unionpay: /^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,
-  visa: /^(?:4[0-9]{12})(?:[0-9]{3,6})?$/
-};
-var allCards = function () {
-  var tmpCardsArray = [];
-  for (var cardProvider in cards) {
-    // istanbul ignore else
-    if (cards.hasOwnProperty(cardProvider)) {
-      tmpCardsArray.push(cards[cardProvider]);
-    }
-  }
-  return tmpCardsArray;
-}();
-function isCreditCard(card) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(card);
-  var provider = options.provider;
-  var sanitized = card.replace(/[- ]+/g, '');
-  if (provider && provider.toLowerCase() in cards) {
-    // specific provider in the list
-    if (!cards[provider.toLowerCase()].test(sanitized)) {
-      return false;
-    }
-  } else if (provider && !(provider.toLowerCase() in cards)) {
-    /* specific provider not in the list */
-    throw new Error("".concat(provider, " is not a valid credit card provider."));
-  } else if (!allCards.some(function (cardProvider) {
-    return cardProvider.test(sanitized);
-  })) {
-    // no specific provider
-    return false;
-  }
-  return isLuhnNumber(card);
-}
-
-var validators = {
-  PL: function PL(str) {
-    assertString(str);
-    var weightOfDigits = {
-      1: 1,
-      2: 3,
-      3: 7,
-      4: 9,
-      5: 1,
-      6: 3,
-      7: 7,
-      8: 9,
-      9: 1,
-      10: 3,
-      11: 0
-    };
-    if (str != null && str.length === 11 && isInt(str, {
-      allow_leading_zeroes: true
-    })) {
-      var digits = str.split('').slice(0, -1);
-      var sum = digits.reduce(function (acc, digit, index) {
-        return acc + Number(digit) * weightOfDigits[index + 1];
-      }, 0);
-      var modulo = sum % 10;
-      var lastDigit = Number(str.charAt(str.length - 1));
-      if (modulo === 0 && lastDigit === 0 || lastDigit === 10 - modulo) {
-        return true;
-      }
-    }
-    return false;
-  },
-  ES: function ES(str) {
-    assertString(str);
-    var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
-    var charsValue = {
-      X: 0,
-      Y: 1,
-      Z: 2
-    };
-    var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-
-    // sanitize user input
-    var sanitized = str.trim().toUpperCase();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-
-    // validate the control digit
-    var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (_char) {
-      return charsValue[_char];
-    });
-    return sanitized.endsWith(controlDigits[number % 23]);
-  },
-  FI: function FI(str) {
-    // https://dvv.fi/en/personal-identity-code#:~:text=control%20character%20for%20a-,personal,-identity%20code%20calculated
-    assertString(str);
-    if (str.length !== 11) {
-      return false;
-    }
-    if (!str.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)) {
-      return false;
-    }
-    var checkDigits = '0123456789ABCDEFHJKLMNPRSTUVWXY';
-    var idAsNumber = parseInt(str.slice(0, 6), 10) * 1000 + parseInt(str.slice(7, 10), 10);
-    var remainder = idAsNumber % 31;
-    var checkDigit = checkDigits[remainder];
-    return checkDigit === str.slice(10, 11);
-  },
-  IN: function IN(str) {
-    var DNI = /^[1-9]\d{3}\s?\d{4}\s?\d{4}$/;
-
-    // multiplication table
-    var d = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-
-    // permutation table
-    var p = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var c = 0;
-    var invertedArray = sanitized.replace(/\s/g, '').split('').map(Number).reverse();
-    invertedArray.forEach(function (val, i) {
-      c = d[c][p[i % 8][val]];
-    });
-    return c === 0;
-  },
-  IR: function IR(str) {
-    if (!str.match(/^\d{10}$/)) return false;
-    str = "0000".concat(str).slice(str.length - 6);
-    if (parseInt(str.slice(3, 9), 10) === 0) return false;
-    var lastNumber = parseInt(str.slice(9, 10), 10);
-    var sum = 0;
-    for (var i = 0; i < 9; i++) {
-      sum += parseInt(str.slice(i, i + 1), 10) * (10 - i);
-    }
-    sum %= 11;
-    return sum < 2 && lastNumber === sum || sum >= 2 && lastNumber === 11 - sum;
-  },
-  IT: function IT(str) {
-    if (str.length !== 9) return false;
-    if (str === 'CA00000AA') return false; // https://it.wikipedia.org/wiki/Carta_d%27identit%C3%A0_elettronica_italiana
-    return str.search(/C[A-Z]\d{5}[A-Z]{2}/i) > -1;
-  },
-  NO: function NO(str) {
-    var sanitized = str.trim();
-    if (isNaN(Number(sanitized))) return false;
-    if (sanitized.length !== 11) return false;
-    if (sanitized === '00000000000') return false;
-
-    // https://no.wikipedia.org/wiki/F%C3%B8dselsnummer
-    var f = sanitized.split('').map(Number);
-    var k1 = (11 - (3 * f[0] + 7 * f[1] + 6 * f[2] + 1 * f[3] + 8 * f[4] + 9 * f[5] + 4 * f[6] + 5 * f[7] + 2 * f[8]) % 11) % 11;
-    var k2 = (11 - (5 * f[0] + 4 * f[1] + 3 * f[2] + 2 * f[3] + 7 * f[4] + 6 * f[5] + 5 * f[6] + 4 * f[7] + 3 * f[8] + 2 * k1) % 11) % 11;
-    if (k1 !== f[9] || k2 !== f[10]) return false;
-    return true;
-  },
-  TH: function TH(str) {
-    if (!str.match(/^[1-8]\d{12}$/)) return false;
-
-    // validate check digit
-    var sum = 0;
-    for (var i = 0; i < 12; i++) {
-      sum += parseInt(str[i], 10) * (13 - i);
-    }
-    return str[12] === ((11 - sum % 11) % 10).toString();
-  },
-  LK: function LK(str) {
-    var old_nic = /^[1-9]\d{8}[vx]$/i;
-    var new_nic = /^[1-9]\d{11}$/i;
-    if (str.length === 10 && old_nic.test(str)) return true;else if (str.length === 12 && new_nic.test(str)) return true;
-    return false;
-  },
-  'he-IL': function heIL(str) {
-    var DNI = /^\d{9}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    var id = sanitized;
-    var sum = 0,
-      incNum;
-    for (var i = 0; i < id.length; i++) {
-      incNum = Number(id[i]) * (i % 2 + 1); // Multiply number by 1 or 2
-      sum += incNum > 9 ? incNum - 9 : incNum; // Sum the digits up and add to total
-    }
-    return sum % 10 === 0;
-  },
-  'ar-LY': function arLY(str) {
-    // Libya National Identity Number NIN is 12 digits, the first digit is either 1 or 2
-    var NIN = /^(1|2)\d{11}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!NIN.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'ar-TN': function arTN(str) {
-    var DNI = /^\d{8}$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    if (!DNI.test(sanitized)) {
-      return false;
-    }
-    return true;
-  },
-  'zh-CN': function zhCN(str) {
-    var provincesAndCities = ['11',
-    // 北京
-    '12',
-    // 天津
-    '13',
-    // 河北
-    '14',
-    // 山西
-    '15',
-    // 内蒙古
-    '21',
-    // 辽宁
-    '22',
-    // 吉林
-    '23',
-    // 黑龙江
-    '31',
-    // 上海
-    '32',
-    // 江苏
-    '33',
-    // 浙江
-    '34',
-    // 安徽
-    '35',
-    // 福建
-    '36',
-    // 江西
-    '37',
-    // 山东
-    '41',
-    // 河南
-    '42',
-    // 湖北
-    '43',
-    // 湖南
-    '44',
-    // 广东
-    '45',
-    // 广西
-    '46',
-    // 海南
-    '50',
-    // 重庆
-    '51',
-    // 四川
-    '52',
-    // 贵州
-    '53',
-    // 云南
-    '54',
-    // 西藏
-    '61',
-    // 陕西
-    '62',
-    // 甘肃
-    '63',
-    // 青海
-    '64',
-    // 宁夏
-    '65',
-    // 新疆
-    '71',
-    // 台湾
-    '81',
-    // 香港
-    '82',
-    // 澳门
-    '91' // 国外
-    ];
-    var powers = ['7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2'];
-    var parityBit = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
-    var checkAddressCode = function checkAddressCode(addressCode) {
-      return includes$2(provincesAndCities, addressCode);
-    };
-    var checkBirthDayCode = function checkBirthDayCode(birDayCode) {
-      var yyyy = parseInt(birDayCode.substring(0, 4), 10);
-      var mm = parseInt(birDayCode.substring(4, 6), 10);
-      var dd = parseInt(birDayCode.substring(6), 10);
-      var xdata = new Date(yyyy, mm - 1, dd);
-      if (xdata > new Date()) {
-        return false;
-        // eslint-disable-next-line max-len
-      } else if (xdata.getFullYear() === yyyy && xdata.getMonth() === mm - 1 && xdata.getDate() === dd) {
-        return true;
-      }
-      return false;
-    };
-    var getParityBit = function getParityBit(idCardNo) {
-      var id17 = idCardNo.substring(0, 17);
-      var power = 0;
-      for (var i = 0; i < 17; i++) {
-        power += parseInt(id17.charAt(i), 10) * parseInt(powers[i], 10);
-      }
-      var mod = power % 11;
-      return parityBit[mod];
-    };
-    var checkParityBit = function checkParityBit(idCardNo) {
-      return getParityBit(idCardNo) === idCardNo.charAt(17).toUpperCase();
-    };
-    var check15IdCardNo = function check15IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = "19".concat(idCardNo.substring(6, 12));
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return true;
-    };
-    var check18IdCardNo = function check18IdCardNo(idCardNo) {
-      var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
-      if (!check) return false;
-      var addressCode = idCardNo.substring(0, 2);
-      check = checkAddressCode(addressCode);
-      if (!check) return false;
-      var birDayCode = idCardNo.substring(6, 14);
-      check = checkBirthDayCode(birDayCode);
-      if (!check) return false;
-      return checkParityBit(idCardNo);
-    };
-    var checkIdCardNo = function checkIdCardNo(idCardNo) {
-      var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
-      if (!check) return false;
-      if (idCardNo.length === 15) {
-        return check15IdCardNo(idCardNo);
-      }
-      return check18IdCardNo(idCardNo);
-    };
-    return checkIdCardNo(str);
-  },
-  'zh-HK': function zhHK(str) {
-    // sanitize user input
-    str = str.trim();
-
-    // HKID number starts with 1 or 2 letters, followed by 6 digits,
-    // then a checksum contained in square / round brackets or nothing
-    var regexHKID = /^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/;
-    var regexIsDigit = /^[0-9]$/;
-
-    // convert the user input to all uppercase and apply regex
-    str = str.toUpperCase();
-    if (!regexHKID.test(str)) return false;
-    str = str.replace(/\[|\]|\(|\)/g, '');
-    if (str.length === 8) str = "3".concat(str);
-    var checkSumVal = 0;
-    for (var i = 0; i <= 7; i++) {
-      var convertedChar = void 0;
-      if (!regexIsDigit.test(str[i])) convertedChar = (str[i].charCodeAt(0) - 55) % 11;else convertedChar = str[i];
-      checkSumVal += convertedChar * (9 - i);
-    }
-    checkSumVal %= 11;
-    var checkSumConverted;
-    if (checkSumVal === 0) checkSumConverted = '0';else if (checkSumVal === 1) checkSumConverted = 'A';else checkSumConverted = String(11 - checkSumVal);
-    if (checkSumConverted === str[str.length - 1]) return true;
-    return false;
-  },
-  'zh-TW': function zhTW(str) {
-    var ALPHABET_CODES = {
-      A: 10,
-      B: 11,
-      C: 12,
-      D: 13,
-      E: 14,
-      F: 15,
-      G: 16,
-      H: 17,
-      I: 34,
-      J: 18,
-      K: 19,
-      L: 20,
-      M: 21,
-      N: 22,
-      O: 35,
-      P: 23,
-      Q: 24,
-      R: 25,
-      S: 26,
-      T: 27,
-      U: 28,
-      V: 29,
-      W: 32,
-      X: 30,
-      Y: 31,
-      Z: 33
-    };
-    var sanitized = str.trim().toUpperCase();
-    if (!/^[A-Z][0-9]{9}$/.test(sanitized)) return false;
-    return Array.from(sanitized).reduce(function (sum, number, index) {
-      if (index === 0) {
-        var code = ALPHABET_CODES[number];
-        return code % 10 * 9 + Math.floor(code / 10);
-      }
-      if (index === 9) {
-        return (10 - sum % 10 - Number(number)) % 10 === 0;
-      }
-      return sum + Number(number) * (9 - index);
-    }, 0);
-  },
-  PK: function PK(str) {
-    // Pakistani National Identity Number CNIC is 13 digits
-    var CNIC = /^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/;
-
-    // sanitize user input
-    var sanitized = str.trim();
-
-    // validate the data structure
-    return CNIC.test(sanitized);
-  }
-};
-function isIdentityCard(str, locale) {
-  assertString(str);
-  if (locale in validators) {
-    return validators[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (validators.hasOwnProperty(key)) {
-        var validator = validators[key];
-        if (validator(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-
-/**
- * The most commonly used EAN standard is
- * the thirteen-digit EAN-13, while the
- * less commonly used 8-digit EAN-8 barcode was
- * introduced for use on small packages.
- * Also EAN/UCC-14 is used for Grouping of individual
- * trade items above unit level(Intermediate, Carton or Pallet).
- * For more info about EAN-14 checkout: https://www.gtin.info/itf-14-barcodes/
- * EAN consists of:
- * GS1 prefix, manufacturer code, product code and check digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number
- * Reference: https://www.gtin.info/
- */
-
-/**
- * Define EAN Lengths; 8 for EAN-8; 13 for EAN-13; 14 for EAN-14
- * and Regular Expression for valid EANs (EAN-8, EAN-13, EAN-14),
- * with exact numeric matching of 8 or 13 or 14 digits [0-9]
- */
-var LENGTH_EAN_8 = 8;
-var LENGTH_EAN_14 = 14;
-var validEanRegex = /^(\d{8}|\d{13}|\d{14})$/;
-
-/**
- * Get position weight given:
- * EAN length and digit index/position
- *
- * @param {number} length
- * @param {number} index
- * @return {number}
- */
-function getPositionWeightThroughLengthAndIndex(length, index) {
-  if (length === LENGTH_EAN_8 || length === LENGTH_EAN_14) {
-    return index % 2 === 0 ? 3 : 1;
-  }
-  return index % 2 === 0 ? 1 : 3;
-}
-
-/**
- * Calculate EAN Check Digit
- * Reference: https://en.wikipedia.org/wiki/International_Article_Number#Calculation_of_checksum_digit
- *
- * @param {string} ean
- * @return {number}
- */
-function calculateCheckDigit(ean) {
-  var checksum = ean.slice(0, -1).split('').map(function (_char, index) {
-    return Number(_char) * getPositionWeightThroughLengthAndIndex(ean.length, index);
-  }).reduce(function (acc, partialSum) {
-    return acc + partialSum;
-  }, 0);
-  var remainder = 10 - checksum % 10;
-  return remainder < 10 ? remainder : 0;
-}
-
-/**
- * Check if string is valid EAN:
- * Matches EAN-8/EAN-13/EAN-14 regex
- * Has valid check digit.
- *
- * @param {string} str
- * @return {boolean}
- */
-function isEAN(str) {
-  assertString(str);
-  var actualCheckDigit = Number(str.slice(-1));
-  return validEanRegex.test(str) && actualCheckDigit === calculateCheckDigit(str);
-}
-
-var isin = /^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;
-
-// this link details how the check digit is calculated:
-// https://www.isin.org/isin-format/. it is a little bit
-// odd in that it works with digits, not numbers. in order
-// to make only one pass through the ISIN characters, the
-// each alpha character is handled as 2 characters within
-// the loop.
-
-function isISIN(str) {
-  assertString(str);
-  if (!isin.test(str)) {
-    return false;
-  }
-  var _double = true;
-  var sum = 0;
-  // convert values
-  for (var i = str.length - 2; i >= 0; i--) {
-    if (str[i] >= 'A' && str[i] <= 'Z') {
-      var value = str[i].charCodeAt(0) - 55;
-      var lo = value % 10;
-      var hi = Math.trunc(value / 10);
-      // letters have two digits, so handle the low order
-      // and high order digits separately.
-      for (var _i = 0, _arr = [lo, hi]; _i < _arr.length; _i++) {
-        var digit = _arr[_i];
-        if (_double) {
-          if (digit >= 5) {
-            sum += 1 + (digit - 5) * 2;
-          } else {
-            sum += digit * 2;
-          }
-        } else {
-          sum += digit;
-        }
-        _double = !_double;
-      }
-    } else {
-      var _digit = str[i].charCodeAt(0) - '0'.charCodeAt(0);
-      if (_double) {
-        if (_digit >= 5) {
-          sum += 1 + (_digit - 5) * 2;
-        } else {
-          sum += _digit * 2;
-        }
-      } else {
-        sum += _digit;
-      }
-      _double = !_double;
-    }
-  }
-  var check = Math.trunc((sum + 9) / 10) * 10 - sum;
-  return +str[str.length - 1] === check;
-}
-
-var possibleIsbn10 = /^(?:[0-9]{9}X|[0-9]{10})$/;
-var possibleIsbn13 = /^(?:[0-9]{13})$/;
-var factor = [1, 3];
-function isISBN(isbn, options) {
-  assertString(isbn);
-
-  // For backwards compatibility:
-  // isISBN(str [, version]), i.e. `options` could be used as argument for the legacy `version`
-  var version = String((options === null || options === void 0 ? void 0 : options.version) || options);
-  if (!(options !== null && options !== void 0 && options.version || options)) {
-    return isISBN(isbn, {
-      version: 10
-    }) || isISBN(isbn, {
-      version: 13
-    });
-  }
-  var sanitizedIsbn = isbn.replace(/[\s-]+/g, '');
-  var checksum = 0;
-  if (version === '10') {
-    if (!possibleIsbn10.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var i = 0; i < version - 1; i++) {
-      checksum += (i + 1) * sanitizedIsbn.charAt(i);
-    }
-    if (sanitizedIsbn.charAt(9) === 'X') {
-      checksum += 10 * 10;
-    } else {
-      checksum += 10 * sanitizedIsbn.charAt(9);
-    }
-    if (checksum % 11 === 0) {
-      return true;
-    }
-  } else if (version === '13') {
-    if (!possibleIsbn13.test(sanitizedIsbn)) {
-      return false;
-    }
-    for (var _i = 0; _i < 12; _i++) {
-      checksum += factor[_i % 2] * sanitizedIsbn.charAt(_i);
-    }
-    if (sanitizedIsbn.charAt(12) - (10 - checksum % 10) % 10 === 0) {
-      return true;
-    }
-  }
-  return false;
-}
-
-var issn = '^\\d{4}-?\\d{3}[\\dX]$';
-function isISSN(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  var testIssn = issn;
-  testIssn = options.require_hyphen ? testIssn.replace('?', '') : testIssn;
-  testIssn = options.case_sensitive ? new RegExp(testIssn) : new RegExp(testIssn, 'i');
-  if (!testIssn.test(str)) {
-    return false;
-  }
-  var digits = str.replace('-', '').toUpperCase();
-  var checksum = 0;
-  for (var i = 0; i < digits.length; i++) {
-    var digit = digits[i];
-    checksum += (digit === 'X' ? 10 : +digit) * (8 - i);
-  }
-  return checksum % 11 === 0;
-}
-
-/**
- * Algorithmic validation functions
- * May be used as is or implemented in the workflow of other validators.
- */
-
-/*
- * ISO 7064 validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to ISO 7064 (MOD 11, 10).
- */
-function iso7064Check(str) {
-  var checkvalue = 10;
-  for (var i = 0; i < str.length - 1; i++) {
-    checkvalue = (parseInt(str[i], 10) + checkvalue) % 10 === 0 ? 10 * 2 % 11 : (parseInt(str[i], 10) + checkvalue) % 10 * 2 % 11;
-  }
-  checkvalue = checkvalue === 1 ? 0 : 11 - checkvalue;
-  return checkvalue === parseInt(str[10], 10);
-}
-
-/*
- * Luhn (mod 10) validation function
- * Called with a string of numbers (incl. check digit)
- * to validate according to the Luhn algorithm.
- */
-function luhnCheck(str) {
-  var checksum = 0;
-  var second = false;
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (second) {
-      var product = parseInt(str[i], 10) * 2;
-      if (product > 9) {
-        // sum digits of product and add to checksum
-        checksum += product.toString().split('').map(function (a) {
-          return parseInt(a, 10);
-        }).reduce(function (a, b) {
-          return a + b;
-        }, 0);
-      } else {
-        checksum += product;
-      }
-    } else {
-      checksum += parseInt(str[i], 10);
-    }
-    second = !second;
-  }
-  return checksum % 10 === 0;
-}
-
-/*
- * Reverse TIN multiplication and summation helper function
- * Called with an array of single-digit integers and a base multiplier
- * to calculate the sum of the digits multiplied in reverse.
- * Normally used in variations of MOD 11 algorithmic checks.
- */
-function reverseMultiplyAndSum(digits, base) {
-  var total = 0;
-  for (var i = 0; i < digits.length; i++) {
-    total += digits[i] * (base - i);
-  }
-  return total;
-}
-
-/*
- * Verhoeff validation helper function
- * Called with a string of numbers
- * to validate according to the Verhoeff algorithm.
- */
-function verhoeffCheck(str) {
-  var d_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 0, 6, 7, 8, 9, 5], [2, 3, 4, 0, 1, 7, 8, 9, 5, 6], [3, 4, 0, 1, 2, 8, 9, 5, 6, 7], [4, 0, 1, 2, 3, 9, 5, 6, 7, 8], [5, 9, 8, 7, 6, 0, 4, 3, 2, 1], [6, 5, 9, 8, 7, 1, 0, 4, 3, 2], [7, 6, 5, 9, 8, 2, 1, 0, 4, 3], [8, 7, 6, 5, 9, 3, 2, 1, 0, 4], [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
-  var p_table = [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 5, 7, 6, 2, 8, 3, 0, 9, 4], [5, 8, 0, 3, 7, 9, 6, 1, 4, 2], [8, 9, 1, 6, 0, 4, 3, 5, 2, 7], [9, 4, 5, 3, 1, 2, 6, 8, 7, 0], [4, 2, 8, 6, 5, 7, 3, 9, 0, 1], [2, 7, 9, 3, 8, 0, 6, 4, 1, 5], [7, 0, 4, 6, 9, 1, 3, 2, 5, 8]];
-
-  // Copy (to prevent replacement) and reverse
-  var str_copy = str.split('').reverse().join('');
-  var checksum = 0;
-  for (var i = 0; i < str_copy.length; i++) {
-    checksum = d_table[checksum][p_table[i % 8][parseInt(str_copy[i], 10)]];
-  }
-  return checksum === 0;
-}
-
-/**
- * TIN Validation
- * Validates Tax Identification Numbers (TINs) from the US, EU member states and the United Kingdom.
- *
- * EU-UK:
- * National TIN validity is calculated using public algorithms as made available by DG TAXUD.
- *
- * See `https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx` for more information.
- *
- * US:
- * An Employer Identification Number (EIN), also known as a Federal Tax Identification Number,
- *  is used to identify a business entity.
- *
- * NOTES:
- *  - Prefix 47 is being reserved for future use
- *  - Prefixes 26, 27, 45, 46 and 47 were previously assigned by the Philadelphia campus.
- *
- * See `http://www.irs.gov/Businesses/Small-Businesses-&-Self-Employed/How-EINs-are-Assigned-and-Valid-EIN-Prefixes`
- * for more information.
- */
-
-// Locale functions
-
-/*
- * bg-BG validation function
- * (Edinen graždanski nomer (EGN/ЕГН), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last) digit
- */
-function bgBgCheck(tin) {
-  // Extract full year, normalize month and check birth date validity
-  var century_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 40) {
-    month -= 40;
-    century_year = "20".concat(century_year);
-  } else if (month > 20) {
-    month -= 20;
-    century_year = "18".concat(century_year);
-  } else {
-    century_year = "19".concat(century_year);
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  var date = "".concat(century_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Calculate checksum by multiplying digits with fixed values
-  var multip_lookup = [2, 4, 8, 5, 10, 9, 7, 3, 6];
-  var checksum = 0;
-  for (var i = 0; i < multip_lookup.length; i++) {
-    checksum += digits[i] * multip_lookup[i];
-  }
-  checksum = checksum % 11 === 10 ? 0 : checksum % 11;
-  return checksum === digits[9];
-}
-
-/**
- * Check if an input is a valid Canadian SIN (Social Insurance Number)
- *
- * The Social Insurance Number (SIN) is a 9 digit number that
- * you need to work in Canada or to have access to government programs and benefits.
- *
- * https://en.wikipedia.org/wiki/Social_Insurance_Number
- * https://www.canada.ca/en/employment-social-development/services/sin.html
- * https://www.codercrunch.com/challenge/819302488/sin-validator
- *
- * @param {string} input
- * @return {boolean}
- */
-function isCanadianSIN(input) {
-  var digitsArray = input.split('');
-  var even = digitsArray.filter(function (_, idx) {
-    return idx % 2;
-  }).map(function (i) {
-    return Number(i) * 2;
-  }).join('').split('');
-  var total = digitsArray.filter(function (_, idx) {
-    return !(idx % 2);
-  }).concat(even).map(function (i) {
-    return Number(i);
-  }).reduce(function (acc, cur) {
-    return acc + cur;
-  });
-  return total % 10 === 0;
-}
-
-/*
- * cs-CZ validation function
- * (Rodné číslo (RČ), persons only)
- * Checks if birth date (first six digits) is valid and divisibility by 11
- * Material not in DG TAXUD document sourced from:
- * -`https://lorenc.info/3MA381/overeni-spravnosti-rodneho-cisla.htm`
- * -`https://www.mvcr.cz/clanek/rady-a-sluzby-dokumenty-rodne-cislo.aspx`
- */
-function csCzCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract full year from TIN length
-  var full_year = parseInt(tin.slice(0, 2), 10);
-  if (tin.length === 10) {
-    if (full_year < 54) {
-      full_year = "20".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-  } else {
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-    if (full_year < 54) {
-      full_year = "19".concat(full_year);
-    } else {
-      return false; // No 18XX years seen in any of the resources
-    }
-  }
-  // Add missing zero if needed
-  if (full_year.length === 3) {
-    full_year = [full_year.slice(0, 2), '0', full_year.slice(2)].join('');
-  }
-
-  // Extract month from TIN and normalize
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 50) {
-    month -= 50;
-  }
-  if (month > 20) {
-    // Month-plus-twenty was only introduced in 2004
-    if (parseInt(full_year, 10) < 2004) {
-      return false;
-    }
-    month -= 20;
-  }
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Verify divisibility by 11
-  if (tin.length === 10) {
-    if (parseInt(tin, 10) % 11 !== 0) {
-      // Some numbers up to and including 1985 are still valid if
-      // check (last) digit equals 0 and modulo of first 9 digits equals 10
-      var checkdigit = parseInt(tin.slice(0, 9), 10) % 11;
-      if (parseInt(full_year, 10) < 1986 && checkdigit === 10) {
-        if (parseInt(tin.slice(9), 10) !== 0) {
-          return false;
-        }
-      } else {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * de-AT validation function
- * (Abgabenkontonummer, persons/entities)
- * Verify TIN validity by calling luhnCheck()
- */
-function deAtCheck(tin) {
-  return luhnCheck(tin);
-}
-
-/*
- * de-DE validation function
- * (Steueridentifikationsnummer (Steuer-IdNr.), persons only)
- * Tests for single duplicate/triplicate value, then calculates ISO 7064 check (last) digit
- * Partial implementation of spec (same result with both algorithms always)
- */
-function deDeCheck(tin) {
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-
-  // Fill array with strings of number positions
-  var occurrences = [];
-  for (var i = 0; i < digits.length - 1; i++) {
-    occurrences.push('');
-    for (var j = 0; j < digits.length - 1; j++) {
-      if (digits[i] === digits[j]) {
-        occurrences[i] += j;
-      }
-    }
-  }
-
-  // Remove digits with one occurrence and test for only one duplicate/triplicate
-  occurrences = occurrences.filter(function (a) {
-    return a.length > 1;
-  });
-  if (occurrences.length !== 2 && occurrences.length !== 3) {
-    return false;
-  }
-
-  // In case of triplicate value only two digits are allowed next to each other
-  if (occurrences[0].length === 3) {
-    var trip_locations = occurrences[0].split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var recurrent = 0; // Amount of neighbor occurrences
-    for (var _i = 0; _i < trip_locations.length - 1; _i++) {
-      if (trip_locations[_i] + 1 === trip_locations[_i + 1]) {
-        recurrent += 1;
-      }
-    }
-    if (recurrent === 2) {
-      return false;
-    }
-  }
-  return iso7064Check(tin);
-}
-
-/*
- * dk-DK validation function
- * (CPR-nummer (personnummer), persons only)
- * Checks if birth date (first six digits) is valid and assigned to century (seventh) digit,
- * and calculates check (last) digit
- */
-function dkDkCheck(tin) {
-  tin = tin.replace(/\W/, '');
-
-  // Extract year, check if valid for given century digit and add century
-  var year = parseInt(tin.slice(4, 6), 10);
-  var century_digit = tin.slice(6, 7);
-  switch (century_digit) {
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-      year = "19".concat(year);
-      break;
-    case '4':
-    case '9':
-      if (year < 37) {
-        year = "20".concat(year);
-      } else {
-        year = "19".concat(year);
-      }
-      break;
-    default:
-      if (year < 37) {
-        year = "20".concat(year);
-      } else if (year > 58) {
-        year = "18".concat(year);
-      } else {
-        return false;
-      }
-      break;
-  }
-  // Add missing zero if needed
-  if (year.length === 3) {
-    year = [year.slice(0, 2), '0', year.slice(2)].join('');
-  }
-  // Check date validity
-  var date = "".concat(year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 4;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 9; i++) {
-    checksum += digits[i] * weight;
-    weight -= 1;
-    if (weight === 1) {
-      weight = 7;
-    }
-  }
-  checksum %= 11;
-  if (checksum === 1) {
-    return false;
-  }
-  return checksum === 0 ? digits[9] === 0 : digits[9] === 11 - checksum;
-}
-
-/*
- * el-CY validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons only)
- * Verify TIN validity by calculating ASCII value of check (last) character
- */
-function elCyCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.slice(0, 8).split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  // add digits in even places
-  for (var i = 1; i < digits.length; i += 2) {
-    checksum += digits[i];
-  }
-
-  // add digits in odd places
-  for (var _i2 = 0; _i2 < digits.length; _i2 += 2) {
-    if (digits[_i2] < 2) {
-      checksum += 1 - digits[_i2];
-    } else {
-      checksum += 2 * (digits[_i2] - 2) + 5;
-      if (digits[_i2] > 4) {
-        checksum += 2;
-      }
-    }
-  }
-  return String.fromCharCode(checksum % 26 + 65) === tin.charAt(8);
-}
-
-/*
- * el-GR validation function
- * (Arithmos Forologikou Mitroou (AFM/ΑΦΜ), persons/entities)
- * Verify TIN validity by calculating check (last) digit
- * Algorithm not in DG TAXUD document- sourced from:
- * - `http://epixeirisi.gr/%CE%9A%CE%A1%CE%99%CE%A3%CE%99%CE%9C%CE%91-%CE%98%CE%95%CE%9C%CE%91%CE%A4%CE%91-%CE%A6%CE%9F%CE%A1%CE%9F%CE%9B%CE%9F%CE%93%CE%99%CE%91%CE%A3-%CE%9A%CE%91%CE%99-%CE%9B%CE%9F%CE%93%CE%99%CE%A3%CE%A4%CE%99%CE%9A%CE%97%CE%A3/23791/%CE%91%CF%81%CE%B9%CE%B8%CE%BC%CF%8C%CF%82-%CE%A6%CE%BF%CF%81%CE%BF%CE%BB%CE%BF%CE%B3%CE%B9%CE%BA%CE%BF%CF%8D-%CE%9C%CE%B7%CF%84%CF%81%CF%8E%CE%BF%CF%85`
- */
-function elGrCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  for (var i = 0; i < 8; i++) {
-    checksum += digits[i] * Math.pow(2, 8 - i);
-  }
-  return checksum % 11 % 10 === digits[8];
-}
-
-/*
- * en-GB validation function (should go here if needed)
- * (National Insurance Number (NINO) or Unique Taxpayer Reference (UTR),
- * persons/entities respectively)
- */
-
-/*
- * en-IE validation function
- * (Personal Public Service Number (PPS No), persons only)
- * Verify TIN validity by calculating check (second to last) character
- */
-function enIeCheck(tin) {
-  var checksum = reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8);
-  if (tin.length === 9 && tin[8] !== 'W') {
-    checksum += (tin[8].charCodeAt(0) - 64) * 9;
-  }
-  checksum %= 23;
-  if (checksum === 0) {
-    return tin[7].toUpperCase() === 'W';
-  }
-  return tin[7].toUpperCase() === String.fromCharCode(64 + checksum);
-}
-
-// Valid US IRS campus prefixes
-var enUsCampusPrefix = {
-  andover: ['10', '12'],
-  atlanta: ['60', '67'],
-  austin: ['50', '53'],
-  brookhaven: ['01', '02', '03', '04', '05', '06', '11', '13', '14', '16', '21', '22', '23', '25', '34', '51', '52', '54', '55', '56', '57', '58', '59', '65'],
-  cincinnati: ['30', '32', '35', '36', '37', '38', '61'],
-  fresno: ['15', '24'],
-  internet: ['20', '26', '27', '45', '46', '47'],
-  kansas: ['40', '44'],
-  memphis: ['94', '95'],
-  ogden: ['80', '90'],
-  philadelphia: ['33', '39', '41', '42', '43', '46', '48', '62', '63', '64', '66', '68', '71', '72', '73', '74', '75', '76', '77', '81', '82', '83', '84', '85', '86', '87', '88', '91', '92', '93', '98', '99'],
-  sba: ['31']
-};
-
-// Return an array of all US IRS campus prefixes
-function enUsGetPrefixes() {
-  var prefixes = [];
-  for (var location in enUsCampusPrefix) {
-    // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-    // istanbul ignore else
-    if (enUsCampusPrefix.hasOwnProperty(location)) {
-      prefixes.push.apply(prefixes, _toConsumableArray(enUsCampusPrefix[location]));
-    }
-  }
-  return prefixes;
-}
-
-/*
- * en-US validation function
- * Verify that the TIN starts with a valid IRS campus prefix
- */
-function enUsCheck(tin) {
-  return enUsGetPrefixes().indexOf(tin.slice(0, 2)) !== -1;
-}
-
-/*
- * es-AR validation function
- * Clave Única de Identificación Tributaria (CUIT/CUIL)
- * Sourced from:
- * - https://servicioscf.afip.gob.ar/publico/abc/ABCpaso2.aspx?id_nivel1=3036&id_nivel2=3040&p=Conceptos%20b%C3%A1sicos
- * - https://es.wikipedia.org/wiki/Clave_%C3%9Anica_de_Identificaci%C3%B3n_Tributaria
- */
-
-function esArCheck(tin) {
-  var accum = 0;
-  var digits = tin.split('');
-  var digit = parseInt(digits.pop(), 10);
-  for (var i = 0; i < digits.length; i++) {
-    accum += digits[9 - i] * (2 + i % 6);
-  }
-  var verif = 11 - accum % 11;
-  if (verif === 11) {
-    verif = 0;
-  } else if (verif === 10) {
-    verif = 9;
-  }
-  return digit === verif;
-}
-
-/*
- * es-ES validation function
- * (Documento Nacional de Identidad (DNI)
- * or Número de Identificación de Extranjero (NIE), persons only)
- * Verify TIN validity by calculating check (last) character
- */
-function esEsCheck(tin) {
-  // Split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Replace initial letter if needed
-  if (isNaN(parseInt(chars[0], 10)) && chars.length > 1) {
-    var lead_replace = 0;
-    switch (chars[0]) {
-      case 'Y':
-        lead_replace = 1;
-        break;
-      case 'Z':
-        lead_replace = 2;
-        break;
-      default:
-    }
-    chars.splice(0, 1, lead_replace);
-    // Fill with zeros if smaller than proper
-  } else {
-    while (chars.length < 9) {
-      chars.unshift(0);
-    }
-  }
-
-  // Calculate checksum and check according to lookup
-  var lookup = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E'];
-  chars = chars.join('');
-  var checksum = parseInt(chars.slice(0, 8), 10) % 23;
-  return chars[8] === lookup[checksum];
-}
-
-/*
- * et-EE validation function
- * (Isikukood (IK), persons only)
- * Checks if birth date (century digit and six following) is valid and calculates check (last) digit
- * Material not in DG TAXUD document sourced from:
- * - `https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Estonia-TIN.pdf`
- */
-function etEeCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(1, 3);
-  var century_digit = tin.slice(0, 1);
-  switch (century_digit) {
-    case '1':
-    case '2':
-      full_year = "18".concat(full_year);
-      break;
-    case '3':
-    case '4':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 0;
-  var weight = 1;
-  // Multiply by weight and add to checksum
-  for (var i = 0; i < 10; i++) {
-    checksum += digits[i] * weight;
-    weight += 1;
-    if (weight === 10) {
-      weight = 1;
-    }
-  }
-  // Do again if modulo 11 of checksum is 10
-  if (checksum % 11 === 10) {
-    checksum = 0;
-    weight = 3;
-    for (var _i3 = 0; _i3 < 10; _i3++) {
-      checksum += digits[_i3] * weight;
-      weight += 1;
-      if (weight === 10) {
-        weight = 1;
-      }
-    }
-    if (checksum % 11 === 10) {
-      return digits[10] === 0;
-    }
-  }
-  return checksum % 11 === digits[10];
-}
-
-/*
- * fi-FI validation function
- * (Henkilötunnus (HETU), persons only)
- * Checks if birth date (first six digits plus century symbol) is valid
- * and calculates check (last) digit
- */
-function fiFiCheck(tin) {
-  // Extract year and add century
-  var full_year = tin.slice(4, 6);
-  var century_symbol = tin.slice(6, 7);
-  switch (century_symbol) {
-    case '+':
-      full_year = "18".concat(full_year);
-      break;
-    case '-':
-      full_year = "19".concat(full_year);
-      break;
-    default:
-      full_year = "20".concat(full_year);
-      break;
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(tin.slice(0, 2));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character
-  var checksum = parseInt(tin.slice(0, 6) + tin.slice(7, 10), 10) % 31;
-  if (checksum < 10) {
-    return checksum === parseInt(tin.slice(10), 10);
-  }
-  checksum -= 10;
-  var letters_lookup = ['A', 'B', 'C', 'D', 'E', 'F', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y'];
-  return letters_lookup[checksum] === tin.slice(10);
-}
-
-/*
- * fr/nl-BE validation function
- * (Numéro national (N.N.), persons only)
- * Checks if birth date (first six digits) is valid and calculates check (last two) digits
- */
-function frBeCheck(tin) {
-  // Zero month/day value is acceptable
-  if (tin.slice(2, 4) !== '00' || tin.slice(4, 6) !== '00') {
-    // Extract date from first six digits of TIN
-    var date = "".concat(tin.slice(0, 2), "/").concat(tin.slice(2, 4), "/").concat(tin.slice(4, 6));
-    if (!isDate(date, 'YY/MM/DD')) {
-      return false;
-    }
-  }
-  var checksum = 97 - parseInt(tin.slice(0, 9), 10) % 97;
-  var checkdigits = parseInt(tin.slice(9, 11), 10);
-  if (checksum !== checkdigits) {
-    checksum = 97 - parseInt("2".concat(tin.slice(0, 9)), 10) % 97;
-    if (checksum !== checkdigits) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * fr-FR validation function
- * (Numéro fiscal de référence (numéro SPI), persons only)
- * Verify TIN validity by calculating check (last three) digits
- */
-function frFrCheck(tin) {
-  tin = tin.replace(/\s/g, '');
-  var checksum = parseInt(tin.slice(0, 10), 10) % 511;
-  var checkdigits = parseInt(tin.slice(10, 13), 10);
-  return checksum === checkdigits;
-}
-
-/*
- * fr/lb-LU validation function
- * (numéro d’identification personnelle, persons only)
- * Verify birth date validity and run Luhn and Verhoeff checks
- */
-function frLuCheck(tin) {
-  // Extract date and check validity
-  var date = "".concat(tin.slice(0, 4), "/").concat(tin.slice(4, 6), "/").concat(tin.slice(6, 8));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Run Luhn check
-  if (!luhnCheck(tin.slice(0, 12))) {
-    return false;
-  }
-  // Remove Luhn check digit and run Verhoeff check
-  return verhoeffCheck("".concat(tin.slice(0, 11)).concat(tin[12]));
-}
-
-/*
- * hr-HR validation function
- * (Osobni identifikacijski broj (OIB), persons/entities)
- * Verify TIN validity by calling iso7064Check(digits)
- */
-function hrHrCheck(tin) {
-  return iso7064Check(tin);
-}
-
-/*
- * hu-HU validation function
- * (Adóazonosító jel, persons only)
- * Verify TIN validity by calculating check (last) digit
- */
-function huHuCheck(tin) {
-  // split digits into an array for further processing
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var checksum = 8;
-  for (var i = 1; i < 9; i++) {
-    checksum += digits[i] * (i + 1);
-  }
-  return checksum % 11 === digits[9];
-}
-
-/*
- * lt-LT validation function (should go here if needed)
- * (Asmens kodas, persons/entities respectively)
- * Current validation check is alias of etEeCheck- same format applies
- */
-
-/*
- * it-IT first/last name validity check
- * Accepts it-IT TIN-encoded names as a three-element character array and checks their validity
- * Due to lack of clarity between resources ("Are only Italian consonants used?
- * What happens if a person has X in their name?" etc.) only two test conditions
- * have been implemented:
- * Vowels may only be followed by other vowels or an X character
- * and X characters after vowels may only be followed by other X characters.
- */
-function itItNameCheck(name) {
-  // true at the first occurrence of a vowel
-  var vowelflag = false;
-
-  // true at the first occurrence of an X AFTER vowel
-  // (to properly handle last names with X as consonant)
-  var xflag = false;
-  for (var i = 0; i < 3; i++) {
-    if (!vowelflag && /[AEIOU]/.test(name[i])) {
-      vowelflag = true;
-    } else if (!xflag && vowelflag && name[i] === 'X') {
-      xflag = true;
-    } else if (i > 0) {
-      if (vowelflag && !xflag) {
-        if (!/[AEIOU]/.test(name[i])) {
-          return false;
-        }
-      }
-      if (xflag) {
-        if (!/X/.test(name[i])) {
-          return false;
-        }
-      }
-    }
-  }
-  return true;
-}
-
-/*
- * it-IT validation function
- * (Codice fiscale (TIN-IT), persons only)
- * Verify name, birth date and codice catastale validity
- * and calculate check character.
- * Material not in DG-TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/Italian_fiscal_code`
- */
-function itItCheck(tin) {
-  // Capitalize and split characters into an array for further processing
-  var chars = tin.toUpperCase().split('');
-
-  // Check first and last name validity calling itItNameCheck()
-  if (!itItNameCheck(chars.slice(0, 3))) {
-    return false;
-  }
-  if (!itItNameCheck(chars.slice(3, 6))) {
-    return false;
-  }
-
-  // Convert letters in number spaces back to numbers if any
-  var number_locations = [6, 7, 9, 10, 12, 13, 14];
-  var number_replace = {
-    L: '0',
-    M: '1',
-    N: '2',
-    P: '3',
-    Q: '4',
-    R: '5',
-    S: '6',
-    T: '7',
-    U: '8',
-    V: '9'
-  };
-  for (var _i4 = 0, _number_locations = number_locations; _i4 < _number_locations.length; _i4++) {
-    var i = _number_locations[_i4];
-    if (chars[i] in number_replace) {
-      chars.splice(i, 1, number_replace[chars[i]]);
-    }
-  }
-
-  // Extract month and day, and check date validity
-  var month_replace = {
-    A: '01',
-    B: '02',
-    C: '03',
-    D: '04',
-    E: '05',
-    H: '06',
-    L: '07',
-    M: '08',
-    P: '09',
-    R: '10',
-    S: '11',
-    T: '12'
-  };
-  var month = month_replace[chars[8]];
-  var day = parseInt(chars[9] + chars[10], 10);
-  if (day > 40) {
-    day -= 40;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(chars[6]).concat(chars[7], "/").concat(month, "/").concat(day);
-  if (!isDate(date, 'YY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate check character by adding up even and odd characters as numbers
-  var checksum = 0;
-  for (var _i5 = 1; _i5 < chars.length - 1; _i5 += 2) {
-    var char_to_int = parseInt(chars[_i5], 10);
-    if (isNaN(char_to_int)) {
-      char_to_int = chars[_i5].charCodeAt(0) - 65;
-    }
-    checksum += char_to_int;
-  }
-  var odd_convert = {
-    // Maps of characters at odd places
-    A: 1,
-    B: 0,
-    C: 5,
-    D: 7,
-    E: 9,
-    F: 13,
-    G: 15,
-    H: 17,
-    I: 19,
-    J: 21,
-    K: 2,
-    L: 4,
-    M: 18,
-    N: 20,
-    O: 11,
-    P: 3,
-    Q: 6,
-    R: 8,
-    S: 12,
-    T: 14,
-    U: 16,
-    V: 10,
-    W: 22,
-    X: 25,
-    Y: 24,
-    Z: 23,
-    0: 1,
-    1: 0
-  };
-  for (var _i6 = 0; _i6 < chars.length - 1; _i6 += 2) {
-    var _char_to_int = 0;
-    if (chars[_i6] in odd_convert) {
-      _char_to_int = odd_convert[chars[_i6]];
-    } else {
-      var multiplier = parseInt(chars[_i6], 10);
-      _char_to_int = 2 * multiplier + 1;
-      if (multiplier > 4) {
-        _char_to_int += 2;
-      }
-    }
-    checksum += _char_to_int;
-  }
-  if (String.fromCharCode(65 + checksum % 26) !== chars[15]) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * lv-LV validation function
- * (Personas kods (PK), persons only)
- * Check validity of birth date and calculate check (last) digit
- * Support only for old format numbers (not starting with '32', issued before 2017/07/01)
- * Material not in DG TAXUD document sourced from:
- * `https://boot.ritakafija.lv/forums/index.php?/topic/88314-personas-koda-algoritms-%C4%8Deksumma/`
- */
-function lvLvCheck(tin) {
-  tin = tin.replace(/\W/, '');
-  // Extract date from TIN
-  var day = tin.slice(0, 2);
-  if (day !== '32') {
-    // No date/checksum check if new format
-    var month = tin.slice(2, 4);
-    if (month !== '00') {
-      // No date check if unknown month
-      var full_year = tin.slice(4, 6);
-      switch (tin[6]) {
-        case '0':
-          full_year = "18".concat(full_year);
-          break;
-        case '1':
-          full_year = "19".concat(full_year);
-          break;
-        default:
-          full_year = "20".concat(full_year);
-          break;
-      }
-      // Check date validity
-      var date = "".concat(full_year, "/").concat(tin.slice(2, 4), "/").concat(day);
-      if (!isDate(date, 'YYYY/MM/DD')) {
-        return false;
-      }
-    }
-
-    // Calculate check digit
-    var checksum = 1101;
-    var multip_lookup = [1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-    for (var i = 0; i < tin.length - 1; i++) {
-      checksum -= parseInt(tin[i], 10) * multip_lookup[i];
-    }
-    return parseInt(tin[10], 10) === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * mt-MT validation function
- * (Identity Card Number or Unique Taxpayer Reference, persons/entities)
- * Verify Identity Card Number structure (no other tests found)
- */
-function mtMtCheck(tin) {
-  if (tin.length !== 9) {
-    // No tests for UTR
-    var chars = tin.toUpperCase().split('');
-    // Fill with zeros if smaller than proper
-    while (chars.length < 8) {
-      chars.unshift(0);
-    }
-    // Validate format according to last character
-    switch (tin[7]) {
-      case 'A':
-      case 'P':
-        if (parseInt(chars[6], 10) === 0) {
-          return false;
-        }
-        break;
-      default:
-        {
-          var first_part = parseInt(chars.join('').slice(0, 5), 10);
-          if (first_part > 32000) {
-            return false;
-          }
-          var second_part = parseInt(chars.join('').slice(5, 7), 10);
-          if (first_part === second_part) {
-            return false;
-          }
-        }
-    }
-  }
-  return true;
-}
-
-/*
- * nl-NL validation function
- * (Burgerservicenummer (BSN) or Rechtspersonen Samenwerkingsverbanden Informatie Nummer (RSIN),
- * persons/entities respectively)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function nlNlCheck(tin) {
-  return reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11 === parseInt(tin[8], 10);
-}
-
-/*
- * pl-PL validation function
- * (Powszechny Elektroniczny System Ewidencji Ludności (PESEL)
- * or Numer identyfikacji podatkowej (NIP), persons/entities)
- * Verify TIN validity by validating birth date (PESEL) and calculating check (last) digit
- */
-function plPlCheck(tin) {
-  // NIP
-  if (tin.length === 10) {
-    // Calculate last digit by multiplying with lookup
-    var lookup = [6, 5, 7, 2, 3, 4, 5, 6, 7];
-    var _checksum = 0;
-    for (var i = 0; i < lookup.length; i++) {
-      _checksum += parseInt(tin[i], 10) * lookup[i];
-    }
-    _checksum %= 11;
-    if (_checksum === 10) {
-      return false;
-    }
-    return _checksum === parseInt(tin[9], 10);
-  }
-
-  // PESEL
-  // Extract full year using month
-  var full_year = tin.slice(0, 2);
-  var month = parseInt(tin.slice(2, 4), 10);
-  if (month > 80) {
-    full_year = "18".concat(full_year);
-    month -= 80;
-  } else if (month > 60) {
-    full_year = "22".concat(full_year);
-    month -= 60;
-  } else if (month > 40) {
-    full_year = "21".concat(full_year);
-    month -= 40;
-  } else if (month > 20) {
-    full_year = "20".concat(full_year);
-    month -= 20;
-  } else {
-    full_year = "19".concat(full_year);
-  }
-  // Add leading zero to month if needed
-  if (month < 10) {
-    month = "0".concat(month);
-  }
-  // Check date validity
-  var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-  if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-
-  // Calculate last digit by multiplying with odd one-digit numbers except 5
-  var checksum = 0;
-  var multiplier = 1;
-  for (var _i7 = 0; _i7 < tin.length - 1; _i7++) {
-    checksum += parseInt(tin[_i7], 10) * multiplier % 10;
-    multiplier += 2;
-    if (multiplier > 10) {
-      multiplier = 1;
-    } else if (multiplier === 5) {
-      multiplier += 2;
-    }
-  }
-  checksum = 10 - checksum % 10;
-  return checksum === parseInt(tin[10], 10);
-}
-
-/*
-* pt-BR validation function
-* (Cadastro de Pessoas Físicas (CPF, persons)
-* Cadastro Nacional de Pessoas Jurídicas (CNPJ, entities)
-* Both inputs will be validated
-*/
-
-function ptBrCheck(tin) {
-  if (tin.length === 11) {
-    var _sum;
-    var remainder;
-    _sum = 0;
-    if (
-    // Reject known invalid CPFs
-    tin === '11111111111' || tin === '22222222222' || tin === '33333333333' || tin === '44444444444' || tin === '55555555555' || tin === '66666666666' || tin === '77777777777' || tin === '88888888888' || tin === '99999999999' || tin === '00000000000') return false;
-    for (var i = 1; i <= 9; i++) _sum += parseInt(tin.substring(i - 1, i), 10) * (11 - i);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(9, 10), 10)) return false;
-    _sum = 0;
-    for (var _i8 = 1; _i8 <= 10; _i8++) _sum += parseInt(tin.substring(_i8 - 1, _i8), 10) * (12 - _i8);
-    remainder = _sum * 10 % 11;
-    if (remainder === 10) remainder = 0;
-    if (remainder !== parseInt(tin.substring(10, 11), 10)) return false;
-    return true;
-  }
-  if (
-  // Reject know invalid CNPJs
-  tin === '00000000000000' || tin === '11111111111111' || tin === '22222222222222' || tin === '33333333333333' || tin === '44444444444444' || tin === '55555555555555' || tin === '66666666666666' || tin === '77777777777777' || tin === '88888888888888' || tin === '99999999999999') {
-    return false;
-  }
-  var length = tin.length - 2;
-  var identifiers = tin.substring(0, length);
-  var verificators = tin.substring(length);
-  var sum = 0;
-  var pos = length - 7;
-  for (var _i9 = length; _i9 >= 1; _i9--) {
-    sum += identifiers.charAt(length - _i9) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  var result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(0), 10)) {
-    return false;
-  }
-  length += 1;
-  identifiers = tin.substring(0, length);
-  sum = 0;
-  pos = length - 7;
-  for (var _i0 = length; _i0 >= 1; _i0--) {
-    sum += identifiers.charAt(length - _i0) * pos;
-    pos -= 1;
-    if (pos < 2) {
-      pos = 9;
-    }
-  }
-  result = sum % 11 < 2 ? 0 : 11 - sum % 11;
-  if (result !== parseInt(verificators.charAt(1), 10)) {
-    return false;
-  }
-  return true;
-}
-
-/*
- * pt-PT validation function
- * (Número de identificação fiscal (NIF), persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ptPtCheck(tin) {
-  var checksum = 11 - reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-}
-
-/*
- * ro-RO validation function
- * (Cod Numeric Personal (CNP) or Cod de înregistrare fiscală (CIF),
- * persons only)
- * Verify CNP validity by calculating check (last) digit (test not found for CIF)
- * Material not in DG TAXUD document sourced from:
- * `https://en.wikipedia.org/wiki/National_identification_number#Romania`
- */
-function roRoCheck(tin) {
-  if (tin.slice(0, 4) !== '9000') {
-    // No test found for this format
-    // Extract full year using century digit if possible
-    var full_year = tin.slice(1, 3);
-    switch (tin[0]) {
-      case '1':
-      case '2':
-        full_year = "19".concat(full_year);
-        break;
-      case '3':
-      case '4':
-        full_year = "18".concat(full_year);
-        break;
-      case '5':
-      case '6':
-        full_year = "20".concat(full_year);
-        break;
-      default:
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(tin.slice(3, 5), "/").concat(tin.slice(5, 7));
-    if (date.length === 8) {
-      if (!isDate(date, 'YY/MM/DD')) {
-        return false;
-      }
-    } else if (!isDate(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-
-    // Calculate check digit
-    var digits = tin.split('').map(function (a) {
-      return parseInt(a, 10);
-    });
-    var multipliers = [2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9];
-    var checksum = 0;
-    for (var i = 0; i < multipliers.length; i++) {
-      checksum += digits[i] * multipliers[i];
-    }
-    if (checksum % 11 === 10) {
-      return digits[12] === 1;
-    }
-    return digits[12] === checksum % 11;
-  }
-  return true;
-}
-
-/*
- * sk-SK validation function
- * (Rodné číslo (RČ) or bezvýznamové identifikačné číslo (BIČ), persons only)
- * Checks validity of pre-1954 birth numbers (rodné číslo) only
- * Due to the introduction of the pseudo-random BIČ it is not possible to test
- * post-1954 birth numbers without knowing whether they are BIČ or RČ beforehand
- */
-function skSkCheck(tin) {
-  if (tin.length === 9) {
-    tin = tin.replace(/\W/, '');
-    if (tin.slice(6) === '000') {
-      return false;
-    } // Three-zero serial not assigned before 1954
-
-    // Extract full year from TIN length
-    var full_year = parseInt(tin.slice(0, 2), 10);
-    if (full_year > 53) {
-      return false;
-    }
-    if (full_year < 10) {
-      full_year = "190".concat(full_year);
-    } else {
-      full_year = "19".concat(full_year);
-    }
-
-    // Extract month from TIN and normalize
-    var month = parseInt(tin.slice(2, 4), 10);
-    if (month > 50) {
-      month -= 50;
-    }
-    if (month < 10) {
-      month = "0".concat(month);
-    }
-
-    // Check date validity
-    var date = "".concat(full_year, "/").concat(month, "/").concat(tin.slice(4, 6));
-    if (!isDate(date, 'YYYY/MM/DD')) {
-      return false;
-    }
-  }
-  return true;
-}
-
-/*
- * sl-SI validation function
- * (Davčna številka, persons/entities)
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function slSiCheck(tin) {
-  var checksum = 11 - reverseMultiplyAndSum(tin.split('').slice(0, 7).map(function (a) {
-    return parseInt(a, 10);
-  }), 8) % 11;
-  if (checksum === 10) {
-    return parseInt(tin[7], 10) === 0;
-  }
-  return checksum === parseInt(tin[7], 10);
-}
-
-/*
- * sv-SE validation function
- * (Personnummer or samordningsnummer, persons only)
- * Checks validity of birth date and calls luhnCheck() to validate check (last) digit
- */
-function svSeCheck(tin) {
-  // Make copy of TIN and normalize to two-digit year form
-  var tin_copy = tin.slice(0);
-  if (tin.length > 11) {
-    tin_copy = tin_copy.slice(2);
-  }
-
-  // Extract date of birth
-  var full_year = '';
-  var month = tin_copy.slice(2, 4);
-  var day = parseInt(tin_copy.slice(4, 6), 10);
-  if (tin.length > 11) {
-    full_year = tin.slice(0, 4);
-  } else {
-    full_year = tin.slice(0, 2);
-    if (tin.length === 11 && day < 60) {
-      // Extract full year from centenarian symbol
-      // Should work just fine until year 10000 or so
-      var current_year = new Date().getFullYear().toString();
-      var current_century = parseInt(current_year.slice(0, 2), 10);
-      current_year = parseInt(current_year, 10);
-      if (tin[6] === '-') {
-        if (parseInt("".concat(current_century).concat(full_year), 10) > current_year) {
-          full_year = "".concat(current_century - 1).concat(full_year);
-        } else {
-          full_year = "".concat(current_century).concat(full_year);
-        }
-      } else {
-        full_year = "".concat(current_century - 1).concat(full_year);
-        if (current_year - parseInt(full_year, 10) < 100) {
-          return false;
-        }
-      }
-    }
-  }
-
-  // Normalize day and check date validity
-  if (day > 60) {
-    day -= 60;
-  }
-  if (day < 10) {
-    day = "0".concat(day);
-  }
-  var date = "".concat(full_year, "/").concat(month, "/").concat(day);
-  if (date.length === 8) {
-    if (!isDate(date, 'YY/MM/DD')) {
-      return false;
-    }
-  } else if (!isDate(date, 'YYYY/MM/DD')) {
-    return false;
-  }
-  return luhnCheck(tin.replace(/\W/, ''));
-}
-
-/**
- * uk-UA validation function
- * Verify TIN validity by calculating check (last) digit (variant of MOD 11)
- */
-function ukUaCheck(tin) {
-  // Calculate check digit
-  var digits = tin.split('').map(function (a) {
-    return parseInt(a, 10);
-  });
-  var multipliers = [-1, 5, 7, 9, 4, 6, 10, 5, 7];
-  var checksum = 0;
-  for (var i = 0; i < multipliers.length; i++) {
-    checksum += digits[i] * multipliers[i];
-  }
-  return checksum % 11 === 10 ? digits[9] === 0 : digits[9] === checksum % 11;
-}
-
-// Locale lookup objects
-
-/*
- * Tax id regex formats for various locales
- *
- * Where not explicitly specified in DG-TAXUD document both
- * uppercase and lowercase letters are acceptable.
- */
-var taxIdFormat = {
-  'bg-BG': /^\d{10}$/,
-  'cs-CZ': /^\d{6}\/{0,1}\d{3,4}$/,
-  'de-AT': /^\d{9}$/,
-  'de-DE': /^[1-9]\d{10}$/,
-  'dk-DK': /^\d{6}-{0,1}\d{4}$/,
-  'el-CY': /^[09]\d{7}[A-Z]$/,
-  'el-GR': /^([0-4]|[7-9])\d{8}$/,
-  'en-CA': /^\d{9}$/,
-  'en-GB': /^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,
-  'en-IE': /^\d{7}[A-W][A-IW]{0,1}$/i,
-  'en-US': /^\d{2}[- ]{0,1}\d{7}$/,
-  'es-AR': /(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,
-  'es-ES': /^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,
-  'et-EE': /^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,
-  'fi-FI': /^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,
-  'fr-BE': /^\d{11}$/,
-  'fr-FR': /^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,
-  // Conforms both to official spec and provided example
-  'fr-LU': /^\d{13}$/,
-  'hr-HR': /^\d{11}$/,
-  'hu-HU': /^8\d{9}$/,
-  'it-IT': /^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,
-  'lv-LV': /^\d{6}-{0,1}\d{5}$/,
-  // Conforms both to DG TAXUD spec and original research
-  'mt-MT': /^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,
-  'nl-NL': /^\d{9}$/,
-  'pl-PL': /^\d{10,11}$/,
-  'pt-BR': /(?:^\d{11}$)|(?:^\d{14}$)/,
-  'pt-PT': /^\d{9}$/,
-  'ro-RO': /^\d{13}$/,
-  'sk-SK': /^\d{6}\/{0,1}\d{3,4}$/,
-  'sl-SI': /^[1-9]\d{7}$/,
-  'sv-SE': /^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/,
-  'uk-UA': /^\d{10}$/
-};
-// taxIdFormat locale aliases
-taxIdFormat['lb-LU'] = taxIdFormat['fr-LU'];
-taxIdFormat['lt-LT'] = taxIdFormat['et-EE'];
-taxIdFormat['nl-BE'] = taxIdFormat['fr-BE'];
-taxIdFormat['fr-CA'] = taxIdFormat['en-CA'];
-
-// Algorithmic tax id check functions for various locales
-var taxIdCheck = {
-  'bg-BG': bgBgCheck,
-  'cs-CZ': csCzCheck,
-  'de-AT': deAtCheck,
-  'de-DE': deDeCheck,
-  'dk-DK': dkDkCheck,
-  'el-CY': elCyCheck,
-  'el-GR': elGrCheck,
-  'en-CA': isCanadianSIN,
-  'en-IE': enIeCheck,
-  'en-US': enUsCheck,
-  'es-AR': esArCheck,
-  'es-ES': esEsCheck,
-  'et-EE': etEeCheck,
-  'fi-FI': fiFiCheck,
-  'fr-BE': frBeCheck,
-  'fr-FR': frFrCheck,
-  'fr-LU': frLuCheck,
-  'hr-HR': hrHrCheck,
-  'hu-HU': huHuCheck,
-  'it-IT': itItCheck,
-  'lv-LV': lvLvCheck,
-  'mt-MT': mtMtCheck,
-  'nl-NL': nlNlCheck,
-  'pl-PL': plPlCheck,
-  'pt-BR': ptBrCheck,
-  'pt-PT': ptPtCheck,
-  'ro-RO': roRoCheck,
-  'sk-SK': skSkCheck,
-  'sl-SI': slSiCheck,
-  'sv-SE': svSeCheck,
-  'uk-UA': ukUaCheck
-};
-// taxIdCheck locale aliases
-taxIdCheck['lb-LU'] = taxIdCheck['fr-LU'];
-taxIdCheck['lt-LT'] = taxIdCheck['et-EE'];
-taxIdCheck['nl-BE'] = taxIdCheck['fr-BE'];
-taxIdCheck['fr-CA'] = taxIdCheck['en-CA'];
-
-// Regexes for locales where characters should be omitted before checking format
-var allsymbols = /[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g;
-var sanitizeRegexes = {
-  'de-AT': allsymbols,
-  'de-DE': /[\/\\]/g,
-  'fr-BE': allsymbols
-};
-// sanitizeRegexes locale aliases
-sanitizeRegexes['nl-BE'] = sanitizeRegexes['fr-BE'];
-
-/*
- * Validator function
- * Return true if the passed string is a valid tax identification number
- * for the specified locale.
- * Throw an error exception if the locale is not supported.
- */
-function isTaxID(str) {
-  var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
-  assertString(str);
-  // Copy TIN to avoid replacement if sanitized
-  var strcopy = str.slice(0);
-  if (locale in taxIdFormat) {
-    if (locale in sanitizeRegexes) {
-      strcopy = strcopy.replace(sanitizeRegexes[locale], '');
-    }
-    if (!taxIdFormat[locale].test(strcopy)) {
-      return false;
-    }
-    if (locale in taxIdCheck) {
-      return taxIdCheck[locale](strcopy);
-    }
-    // Fallthrough; not all locales have algorithmic checks
-    return true;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-
-/* eslint-disable max-len */
-var phones = {
-  'am-AM': /^(\+?374|0)(33|4[134]|55|77|88|9[13-689])\d{6}$/,
-  'ar-AE': /^((\+?971)|0)?5[024568]\d{7}$/,
-  'ar-BH': /^(\+?973)?(3|6)\d{7}$/,
-  'ar-DZ': /^(\+?213|0)(5|6|7)\d{8}$/,
-  'ar-LB': /^(\+?961)?((3|81)\d{6}|7\d{7})$/,
-  'ar-EG': /^((\+?20)|0)?1[0125]\d{8}$/,
-  'ar-IQ': /^(\+?964|0)?7[0-9]\d{8}$/,
-  'ar-JO': /^(\+?962|0)?7[789]\d{7}$/,
-  'ar-KW': /^(\+?965)([569]\d{7}|41\d{6})$/,
-  'ar-LY': /^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,
-  'ar-MA': /^(?:(?:\+|00)212|0)[5-7]\d{8}$/,
-  'ar-OM': /^((\+|00)968)?([79][1-9])\d{6}$/,
-  'ar-PS': /^(\+?970|0)5[6|9](\d{7})$/,
-  'ar-SA': /^(!?(\+?966)|0)?5\d{8}$/,
-  'ar-SD': /^((\+?249)|0)?(9[012369]|1[012])\d{7}$/,
-  'ar-SY': /^(!?(\+?963)|0)?9\d{8}$/,
-  'ar-TN': /^(\+?216)?[2459]\d{7}$/,
-  'az-AZ': /^(\+994|0)(10|5[015]|7[07]|99)\d{7}$/,
-  'bs-BA': /^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,
-  'be-BY': /^(\+?375)?(24|25|29|33|44)\d{7}$/,
-  'bg-BG': /^(\+?359|0)?8[789]\d{7}$/,
-  'bn-BD': /^(\+?880|0)1[13456789][0-9]{8}$/,
-  'ca-AD': /^(\+376)?[346]\d{5}$/,
-  'cs-CZ': /^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'da-DK': /^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'de-DE': /^((\+49|0)1)(5[0-25-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,
-  'de-AT': /^(\+43|0)\d{1,4}\d{3,12}$/,
-  'de-CH': /^(\+41|0)([1-9])\d{1,9}$/,
-  'de-LU': /^(\+352)?((6\d1)\d{6})$/,
-  'dv-MV': /^(\+?960)?(7[2-9]|9[1-9])\d{5}$/,
-  'el-GR': /^(\+?30|0)?6(8[5-9]|9(?![26])[0-9])\d{7}$/,
-  'el-CY': /^(\+?357?)?(9(9|7|6|5|4)\d{6})$/,
-  'en-AI': /^(\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\d{4}$/,
-  'en-AU': /^(\+?61|0)4\d{8}$/,
-  'en-AG': /^(?:\+1|1)268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}$/,
-  'en-BM': /^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}$))/,
-  'en-BS': /^(\+?1[-\s]?|0)?\(?242\)?[-\s]?\d{3}[-\s]?\d{4}$/,
-  'en-GB': /^(\+?44|0)7[1-9]\d{8}$/,
-  'en-GG': /^(\+?44|0)1481\d{6}$/,
-  'en-GH': /^(\+233|0)(20|50|24|54|27|57|26|56|23|53|28|55|59)\d{7}$/,
-  'en-GY': /^(\+592|0)6\d{6}$/,
-  'en-HK': /^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,
-  'en-MO': /^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,
-  'en-IE': /^(\+?353|0)8[356789]\d{7}$/,
-  'en-IN': /^(\+?91|0)?[6789]\d{9}$/,
-  'en-JM': /^(\+?876)?\d{7}$/,
-  'en-KE': /^(\+?254|0)(7|1)\d{8}$/,
-  'fr-CF': /^(\+?236| ?)(70|75|77|72|21|22)\d{6}$/,
-  'en-SS': /^(\+?211|0)(9[1257])\d{7}$/,
-  'en-KI': /^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,
-  'en-KN': /^(?:\+1|1)869(?:46\d|48[89]|55[6-8]|66\d|76[02-7])\d{4}$/,
-  'en-LS': /^(\+?266)(22|28|57|58|59|27|52)\d{6}$/,
-  'en-MT': /^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,
-  'en-MU': /^(\+?230|0)?\d{8}$/,
-  'en-MW': /^(\+?265|0)(((77|88|31|99|98|21)\d{7})|(((111)|1)\d{6})|(32000\d{4}))$/,
-  'en-NA': /^(\+?264|0)(6|8)\d{7}$/,
-  'en-NG': /^(\+?234|0)?[789]\d{9}$/,
-  'en-NZ': /^(\+?64|0)[28]\d{7,9}$/,
-  'en-PG': /^(\+?675|0)?(7\d|8[18])\d{6}$/,
-  'en-PK': /^((00|\+)?92|0)3[0-6]\d{8}$/,
-  'en-PH': /^(09|\+639)\d{9}$/,
-  'en-RW': /^(\+?250|0)?[7]\d{8}$/,
-  'en-SG': /^(\+65)?[3689]\d{7}$/,
-  'en-SL': /^(\+?232|0)\d{8}$/,
-  'en-TZ': /^(\+?255|0)?[67]\d{8}$/,
-  'en-UG': /^(\+?256|0)?[7]\d{8}$/,
-  'en-US': /^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,
-  'en-ZA': /^(\+?27|0)\d{9}$/,
-  'en-ZM': /^(\+?26)?0[79][567]\d{7}$/,
-  'en-ZW': /^(\+263)[0-9]{9}$/,
-  'en-BW': /^(\+?267)?(7[1-8]{1})\d{6}$/,
-  'es-AR': /^\+?549(11|[2368]\d)\d{8}$/,
-  'es-BO': /^(\+?591)?(6|7)\d{7}$/,
-  'es-CO': /^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,
-  'es-CL': /^(\+?56|0)[2-9]\d{1}\d{7}$/,
-  'es-CR': /^(\+506)?[2-8]\d{7}$/,
-  'es-CU': /^(\+53|0053)?5\d{7}$/,
-  'es-DO': /^(\+?1)?8[024]9\d{7}$/,
-  'es-HN': /^(\+?504)?[9|8|3|2]\d{7}$/,
-  'es-EC': /^(\+?593|0)([2-7]|9[2-9])\d{7}$/,
-  'es-ES': /^(\+?34)?[6|7]\d{8}$/,
-  'es-GT': /^(\+?502)?[2|6|7]\d{7}$/,
-  'es-PE': /^(\+?51)?9\d{8}$/,
-  'es-MX': /^(\+?52)?(1|01)?\d{10,11}$/,
-  'es-NI': /^(\+?505)\d{7,8}$/,
-  'es-PA': /^(\+?507)\d{7,8}$/,
-  'es-PY': /^(\+?595|0)9[9876]\d{7}$/,
-  'es-SV': /^(\+?503)?[67]\d{7}$/,
-  'es-UY': /^(\+598|0)9[1-9][\d]{6}$/,
-  'es-VE': /^(\+?58)?(2|4)\d{9}$/,
-  'et-EE': /^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,
-  'fa-IR': /^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,
-  'fi-FI': /^(\+?358|0)\s?(4[0-6]|50)\s?(\d\s?){4,8}$/,
-  'fj-FJ': /^(\+?679)?\s?\d{3}\s?\d{4}$/,
-  'fo-FO': /^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'fr-BF': /^(\+226|0)[67]\d{7}$/,
-  'fr-BJ': /^(\+229)\d{8}$/,
-  'fr-CD': /^(\+?243|0)?(8|9)\d{8}$/,
-  'fr-CM': /^(\+?237)6[0-9]{8}$/,
-  'fr-FR': /^(\+?33|0)[67]\d{8}$/,
-  'fr-GF': /^(\+?594|0|00594)[67]\d{8}$/,
-  'fr-GP': /^(\+?590|0|00590)[67]\d{8}$/,
-  'fr-MQ': /^(\+?596|0|00596)[67]\d{8}$/,
-  'fr-PF': /^(\+?689)?8[789]\d{6}$/,
-  'fr-RE': /^(\+?262|0|00262)[67]\d{8}$/,
-  'fr-WF': /^(\+681)?\d{6}$/,
-  'he-IL': /^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,
-  'hu-HU': /^(\+?36|06)(20|30|31|50|70)\d{7}$/,
-  'id-ID': /^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,
-  'ir-IR': /^(\+98|0)?9\d{9}$/,
-  'it-IT': /^(\+?39)?\s?3\d{2} ?\d{6,7}$/,
-  'it-SM': /^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,
-  'ja-JP': /^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,
-  'ka-GE': /^(\+?995)?(79\d{7}|5\d{8})$/,
-  'kk-KZ': /^(\+?7|8)?7\d{9}$/,
-  'kl-GL': /^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,
-  'ko-KR': /^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,
-  'ky-KG': /^(\+996\s?)?(22[0-9]|50[0-9]|55[0-9]|70[0-9]|75[0-9]|77[0-9]|880|990|995|996|997|998)\s?\d{3}\s?\d{3}$/,
-  'lt-LT': /^(\+370|8)\d{8}$/,
-  'lv-LV': /^(\+?371)2\d{7}$/,
-  'mg-MG': /^((\+?261|0)(2|3)\d)?\d{7}$/,
-  'mn-MN': /^(\+|00|011)?976(77|81|88|91|94|95|96|99)\d{6}$/,
-  'my-MM': /^(\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,
-  'ms-MY': /^(\+?60|0)1(([0145](-|\s)?\d{7,8})|([236-9](-|\s)?\d{7}))$/,
-  'mz-MZ': /^(\+?258)?8[234567]\d{7}$/,
-  'nb-NO': /^(\+?47)?[49]\d{7}$/,
-  'ne-NP': /^(\+?977)?9[78]\d{8}$/,
-  'nl-BE': /^(\+?32|0)4\d{8}$/,
-  'nl-NL': /^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,
-  'nl-AW': /^(\+)?297(56|59|64|73|74|99)\d{5}$/,
-  'nn-NO': /^(\+?47)?[49]\d{7}$/,
-  'pl-PL': /^(\+?48)? ?([5-8]\d|45) ?\d{3} ?\d{2} ?\d{2}$/,
-  'pt-BR': /^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[1-9]{1}\d{3}\-?\d{4}))$/,
-  'pt-PT': /^(\+?351)?9[1236]\d{7}$/,
-  'pt-AO': /^(\+?244)?9\d{8}$/,
-  'ro-MD': /^(\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\d{6}$/,
-  'ro-RO': /^(\+?40|0)\s?7\d{2}(\/|\s|\.|-)?\d{3}(\s|\.|-)?\d{3}$/,
-  'ru-RU': /^(\+?7|8)?9\d{9}$/,
-  'si-LK': /^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,
-  'sl-SI': /^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,
-  'sk-SK': /^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,
-  'so-SO': /^(\+?252|0)((6[0-9])\d{7}|(7[1-9])\d{7})$/,
-  'sq-AL': /^(\+355|0)6[2-9]\d{7}$/,
-  'sr-RS': /^(\+3816|06)[- \d]{5,9}$/,
-  'sv-SE': /^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,
-  'tg-TJ': /^(\+?992)?[5][5]\d{7}$/,
-  'th-TH': /^(\+66|66|0)\d{9}$/,
-  'tr-TR': /^(\+?90|0)?5\d{9}$/,
-  'tk-TM': /^(\+993|993|8)\d{8}$/,
-  'uk-UA': /^(\+?38)?0(50|6[36-8]|7[357]|9[1-9])\d{7}$/,
-  'uz-UZ': /^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,
-  'vi-VN': /^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,
-  'zh-CN': /^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,
-  'zh-TW': /^(\+?886\-?|0)?9\d{8}$/,
-  'dz-BT': /^(\+?975|0)?(17|16|77|02)\d{6}$/,
-  'ar-YE': /^(((\+|00)9677|0?7)[0137]\d{7}|((\+|00)967|0)[1-7]\d{6})$/,
-  'ar-EH': /^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,
-  'fa-AF': /^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/,
-  'mk-MK': /^(\+?389|0)?((?:2[2-9]\d{6}|(?:3[1-4]|4[2-8])\d{6}|500\d{5}|5[2-9]\d{6}|7[0-9][2-9]\d{5}|8[1-9]\d{6}|800\d{5}|8009\d{4}))$/
-};
-/* eslint-enable max-len */
-
-// aliases
-phones['en-CA'] = phones['en-US'];
-phones['fr-CA'] = phones['en-CA'];
-phones['fr-BE'] = phones['nl-BE'];
-phones['zh-HK'] = phones['en-HK'];
-phones['zh-MO'] = phones['en-MO'];
-phones['ga-IE'] = phones['en-IE'];
-phones['fr-CH'] = phones['de-CH'];
-phones['it-CH'] = phones['fr-CH'];
-function isMobilePhone(str, locale, options) {
-  assertString(str);
-  if (options && options.strictMode && !str.startsWith('+')) {
-    return false;
-  }
-  if (Array.isArray(locale)) {
-    return locale.some(function (key) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-      return false;
-    });
-  } else if (locale in phones) {
-    return phones[locale].test(str);
-    // alias falsey locale as 'any'
-  } else if (!locale || locale === 'any') {
-    for (var key in phones) {
-      // istanbul ignore else
-      if (phones.hasOwnProperty(key)) {
-        var phone = phones[key];
-        if (phone.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-var locales$5 = Object.keys(phones);
-
-var eth = /^(0x)[0-9a-f]{40}$/i;
-function isEthereumAddress(str) {
-  assertString(str);
-  return eth.test(str);
-}
-
-function currencyRegex(options) {
-  var decimal_digits = "\\d{".concat(options.digits_after_decimal[0], "}");
-  options.digits_after_decimal.forEach(function (digit, index) {
-    if (index !== 0) decimal_digits = "".concat(decimal_digits, "|\\d{").concat(digit, "}");
-  });
-  var symbol = "(".concat(options.symbol.replace(/\W/, function (m) {
-      return "\\".concat(m);
-    }), ")").concat(options.require_symbol ? '' : '?'),
-    negative = '-?',
-    whole_dollar_amount_without_sep = '[1-9]\\d*',
-    whole_dollar_amount_with_sep = "[1-9]\\d{0,2}(\\".concat(options.thousands_separator, "\\d{3})*"),
-    valid_whole_dollar_amounts = ['0', whole_dollar_amount_without_sep, whole_dollar_amount_with_sep],
-    whole_dollar_amount = "(".concat(valid_whole_dollar_amounts.join('|'), ")?"),
-    decimal_amount = "(\\".concat(options.decimal_separator, "(").concat(decimal_digits, "))").concat(options.require_decimal ? '' : '?');
-  var pattern = whole_dollar_amount + (options.allow_decimal || options.require_decimal ? decimal_amount : '');
-
-  // default is negative sign before symbol, but there are two other options (besides parens)
-  if (options.allow_negatives && !options.parens_for_negatives) {
-    if (options.negative_sign_after_digits) {
-      pattern += negative;
-    } else if (options.negative_sign_before_digits) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // South African Rand, for example, uses R 123 (space) and R-123 (no space)
-  if (options.allow_negative_sign_placeholder) {
-    pattern = "( (?!\\-))?".concat(pattern);
-  } else if (options.allow_space_after_symbol) {
-    pattern = " ?".concat(pattern);
-  } else if (options.allow_space_after_digits) {
-    pattern += '( (?!$))?';
-  }
-  if (options.symbol_after_digits) {
-    pattern += symbol;
-  } else {
-    pattern = symbol + pattern;
-  }
-  if (options.allow_negatives) {
-    if (options.parens_for_negatives) {
-      pattern = "(\\(".concat(pattern, "\\)|").concat(pattern, ")");
-    } else if (!(options.negative_sign_before_digits || options.negative_sign_after_digits)) {
-      pattern = negative + pattern;
-    }
-  }
-
-  // ensure there's a dollar and/or decimal amount, and that
-  // it doesn't start with a space or a negative sign followed by a space
-  return new RegExp("^(?!-? )(?=.*\\d)".concat(pattern, "$"));
-}
-var default_currency_options = {
-  symbol: '$',
-  require_symbol: false,
-  allow_space_after_symbol: false,
-  symbol_after_digits: false,
-  allow_negatives: true,
-  parens_for_negatives: false,
-  negative_sign_before_digits: false,
-  negative_sign_after_digits: false,
-  allow_negative_sign_placeholder: false,
-  thousands_separator: ',',
-  decimal_separator: '.',
-  allow_decimal: true,
-  require_decimal: false,
-  digits_after_decimal: [2],
-  allow_space_after_digits: false
-};
-function isCurrency(str, options) {
-  assertString(str);
-  options = merge(options, default_currency_options);
-  return currencyRegex(options).test(str);
-}
-
-var bech32 = /^(bc1|tb1|bc1p|tb1p)[ac-hj-np-z02-9]{39,58}$/;
-var base58 = /^(1|2|3|m)[A-HJ-NP-Za-km-z1-9]{25,39}$/;
-function isBtcAddress(str) {
-  assertString(str);
-  return bech32.test(str) || base58.test(str);
-}
-
-// https://en.wikipedia.org/wiki/ISO_6346
-// according to ISO6346 standard, checksum digit is mandatory for freight container but recommended
-// for other container types (J and Z)
-var isISO6346Str = /^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/;
-var isDigit = /^[0-9]$/;
-function isISO6346(str) {
-  assertString(str);
-  str = str.toUpperCase();
-  if (!isISO6346Str.test(str)) return false;
-  if (str.length === 11) {
-    var sum = 0;
-    for (var i = 0; i < str.length - 1; i++) {
-      if (!isDigit.test(str[i])) {
-        var convertedCode = void 0;
-        var letterCode = str.charCodeAt(i) - 55;
-        if (letterCode < 11) convertedCode = letterCode;else if (letterCode >= 11 && letterCode <= 20) convertedCode = 12 + letterCode % 11;else if (letterCode >= 21 && letterCode <= 30) convertedCode = 23 + letterCode % 21;else convertedCode = 34 + letterCode % 31;
-        sum += convertedCode * Math.pow(2, i);
-      } else sum += str[i] * Math.pow(2, i);
-    }
-    var checkSumDigit = sum % 11;
-    if (checkSumDigit === 10) checkSumDigit = 0;
-    return Number(str[str.length - 1]) === checkSumDigit;
-  }
-  return true;
-}
-var isFreightContainerID = isISO6346;
-
-var isISO6391Set = new Set(['aa', 'ab', 'ae', 'af', 'ak', 'am', 'an', 'ar', 'as', 'av', 'ay', 'az', 'az', 'ba', 'be', 'bg', 'bh', 'bi', 'bm', 'bn', 'bo', 'br', 'bs', 'ca', 'ce', 'ch', 'co', 'cr', 'cs', 'cu', 'cv', 'cy', 'da', 'de', 'dv', 'dz', 'ee', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fa', 'ff', 'fi', 'fj', 'fo', 'fr', 'fy', 'ga', 'gd', 'gl', 'gn', 'gu', 'gv', 'ha', 'he', 'hi', 'ho', 'hr', 'ht', 'hu', 'hy', 'hz', 'ia', 'id', 'ie', 'ig', 'ii', 'ik', 'io', 'is', 'it', 'iu', 'ja', 'jv', 'ka', 'kg', 'ki', 'kj', 'kk', 'kl', 'km', 'kn', 'ko', 'kr', 'ks', 'ku', 'kv', 'kw', 'ky', 'la', 'lb', 'lg', 'li', 'ln', 'lo', 'lt', 'lu', 'lv', 'mg', 'mh', 'mi', 'mk', 'ml', 'mn', 'mr', 'ms', 'mt', 'my', 'na', 'nb', 'nd', 'ne', 'ng', 'nl', 'nn', 'no', 'nr', 'nv', 'ny', 'oc', 'oj', 'om', 'or', 'os', 'pa', 'pi', 'pl', 'ps', 'pt', 'qu', 'rm', 'rn', 'ro', 'ru', 'rw', 'sa', 'sc', 'sd', 'se', 'sg', 'si', 'sk', 'sl', 'sm', 'sn', 'so', 'sq', 'sr', 'ss', 'st', 'su', 'sv', 'sw', 'ta', 'te', 'tg', 'th', 'ti', 'tk', 'tl', 'tn', 'to', 'tr', 'ts', 'tt', 'tw', 'ty', 'ug', 'uk', 'ur', 'uz', 've', 'vi', 'vo', 'wa', 'wo', 'xh', 'yi', 'yo', 'za', 'zh', 'zu']);
-function isISO6391(str) {
-  assertString(str);
-  return isISO6391Set.has(str);
-}
-
-/* eslint-disable max-len */
-// from http://goo.gl/0ejHHW
-var iso8601 = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-// same as above, except with a strict 'T' separator between date and time
-var iso8601StrictSeparator = /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;
-/* eslint-enable max-len */
-var isValidDate = function isValidDate(str) {
-  // str must have passed the ISO8601 check
-  // this check is meant to catch invalid dates
-  // like 2009-02-31
-  // first check for ordinal dates
-  var ordinalMatch = str.match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/);
-  if (ordinalMatch) {
-    var oYear = Number(ordinalMatch[1]);
-    var oDay = Number(ordinalMatch[2]);
-    // if is leap year
-    if (oYear % 4 === 0 && oYear % 100 !== 0 || oYear % 400 === 0) return oDay <= 366;
-    return oDay <= 365;
-  }
-  var match = str.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number);
-  var year = match[1];
-  var month = match[2];
-  var day = match[3];
-  var monthString = month ? "0".concat(month).slice(-2) : month;
-  var dayString = day ? "0".concat(day).slice(-2) : day;
-
-  // create a date object and compare
-  var d = new Date("".concat(year, "-").concat(monthString || '01', "-").concat(dayString || '01'));
-  if (month && day) {
-    return d.getUTCFullYear() === year && d.getUTCMonth() + 1 === month && d.getUTCDate() === day;
-  }
-  return true;
-};
-function isISO8601(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-  assertString(str);
-  var check = options.strictSeparator ? iso8601StrictSeparator.test(str) : iso8601.test(str);
-  if (check && options.strict) return isValidDate(str);
-  return check;
-}
-
-/* Based on https://tools.ietf.org/html/rfc3339#section-5.6 */
-
-var dateFullYear = /[0-9]{4}/;
-var dateMonth = /(0[1-9]|1[0-2])/;
-var dateMDay = /([12]\d|0[1-9]|3[01])/;
-var timeHour = /([01][0-9]|2[0-3])/;
-var timeMinute = /[0-5][0-9]/;
-var timeSecond = /([0-5][0-9]|60)/;
-var timeSecFrac = /(\.[0-9]+)?/;
-var timeNumOffset = new RegExp("[-+]".concat(timeHour.source, ":").concat(timeMinute.source));
-var timeOffset = new RegExp("([zZ]|".concat(timeNumOffset.source, ")"));
-var partialTime = new RegExp("".concat(timeHour.source, ":").concat(timeMinute.source, ":").concat(timeSecond.source).concat(timeSecFrac.source));
-var fullDate = new RegExp("".concat(dateFullYear.source, "-").concat(dateMonth.source, "-").concat(dateMDay.source));
-var fullTime = new RegExp("".concat(partialTime.source).concat(timeOffset.source));
-var rfc3339 = new RegExp("^".concat(fullDate.source, "[ tT]").concat(fullTime.source, "$"));
-function isRFC3339(str) {
-  assertString(str);
-  return rfc3339.test(str);
-}
-
-// from https://www.unicode.org/iso15924/iso15924-codes.html
-var validISO15924Codes = new Set(['Adlm', 'Afak', 'Aghb', 'Ahom', 'Arab', 'Aran', 'Armi', 'Armn', 'Avst', 'Bali', 'Bamu', 'Bass', 'Batk', 'Beng', 'Bhks', 'Blis', 'Bopo', 'Brah', 'Brai', 'Bugi', 'Buhd', 'Cakm', 'Cans', 'Cari', 'Cham', 'Cher', 'Chis', 'Chrs', 'Cirt', 'Copt', 'Cpmn', 'Cprt', 'Cyrl', 'Cyrs', 'Deva', 'Diak', 'Dogr', 'Dsrt', 'Dupl', 'Egyd', 'Egyh', 'Egyp', 'Elba', 'Elym', 'Ethi', 'Gara', 'Geok', 'Geor', 'Glag', 'Gong', 'Gonm', 'Goth', 'Gran', 'Grek', 'Gujr', 'Gukh', 'Guru', 'Hanb', 'Hang', 'Hani', 'Hano', 'Hans', 'Hant', 'Hatr', 'Hebr', 'Hira', 'Hluw', 'Hmng', 'Hmnp', 'Hrkt', 'Hung', 'Inds', 'Ital', 'Jamo', 'Java', 'Jpan', 'Jurc', 'Kali', 'Kana', 'Kawi', 'Khar', 'Khmr', 'Khoj', 'Kitl', 'Kits', 'Knda', 'Kore', 'Kpel', 'Krai', 'Kthi', 'Lana', 'Laoo', 'Latf', 'Latg', 'Latn', 'Leke', 'Lepc', 'Limb', 'Lina', 'Linb', 'Lisu', 'Loma', 'Lyci', 'Lydi', 'Mahj', 'Maka', 'Mand', 'Mani', 'Marc', 'Maya', 'Medf', 'Mend', 'Merc', 'Mero', 'Mlym', 'Modi', 'Mong', 'Moon', 'Mroo', 'Mtei', 'Mult', 'Mymr', 'Nagm', 'Nand', 'Narb', 'Nbat', 'Newa', 'Nkdb', 'Nkgb', 'Nkoo', 'Nshu', 'Ogam', 'Olck', 'Onao', 'Orkh', 'Orya', 'Osge', 'Osma', 'Ougr', 'Palm', 'Pauc', 'Pcun', 'Pelm', 'Perm', 'Phag', 'Phli', 'Phlp', 'Phlv', 'Phnx', 'Plrd', 'Piqd', 'Prti', 'Psin', 'Qaaa', 'Qaab', 'Qaac', 'Qaad', 'Qaae', 'Qaaf', 'Qaag', 'Qaah', 'Qaai', 'Qaaj', 'Qaak', 'Qaal', 'Qaam', 'Qaan', 'Qaao', 'Qaap', 'Qaaq', 'Qaar', 'Qaas', 'Qaat', 'Qaau', 'Qaav', 'Qaaw', 'Qaax', 'Qaay', 'Qaaz', 'Qaba', 'Qabb', 'Qabc', 'Qabd', 'Qabe', 'Qabf', 'Qabg', 'Qabh', 'Qabi', 'Qabj', 'Qabk', 'Qabl', 'Qabm', 'Qabn', 'Qabo', 'Qabp', 'Qabq', 'Qabr', 'Qabs', 'Qabt', 'Qabu', 'Qabv', 'Qabw', 'Qabx', 'Ranj', 'Rjng', 'Rohg', 'Roro', 'Runr', 'Samr', 'Sara', 'Sarb', 'Saur', 'Sgnw', 'Shaw', 'Shrd', 'Shui', 'Sidd', 'Sidt', 'Sind', 'Sinh', 'Sogd', 'Sogo', 'Sora', 'Soyo', 'Sund', 'Sunu', 'Sylo', 'Syrc', 'Syre', 'Syrj', 'Syrn', 'Tagb', 'Takr', 'Tale', 'Talu', 'Taml', 'Tang', 'Tavt', 'Tayo', 'Telu', 'Teng', 'Tfng', 'Tglg', 'Thaa', 'Thai', 'Tibt', 'Tirh', 'Tnsa', 'Todr', 'Tols', 'Toto', 'Tutg', 'Ugar', 'Vaii', 'Visp', 'Vith', 'Wara', 'Wcho', 'Wole', 'Xpeo', 'Xsux', 'Yezi', 'Yiii', 'Zanb', 'Zinh', 'Zmth', 'Zsye', 'Zsym', 'Zxxx', 'Zyyy', 'Zzzz']);
-function isISO15924(str) {
-  assertString(str);
-  return validISO15924Codes.has(str);
-}
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
-var validISO31661Alpha3CountriesCodes = new Set(['AFG', 'ALA', 'ALB', 'DZA', 'ASM', 'AND', 'AGO', 'AIA', 'ATA', 'ATG', 'ARG', 'ARM', 'ABW', 'AUS', 'AUT', 'AZE', 'BHS', 'BHR', 'BGD', 'BRB', 'BLR', 'BEL', 'BLZ', 'BEN', 'BMU', 'BTN', 'BOL', 'BES', 'BIH', 'BWA', 'BVT', 'BRA', 'IOT', 'BRN', 'BGR', 'BFA', 'BDI', 'KHM', 'CMR', 'CAN', 'CPV', 'CYM', 'CAF', 'TCD', 'CHL', 'CHN', 'CXR', 'CCK', 'COL', 'COM', 'COG', 'COD', 'COK', 'CRI', 'CIV', 'HRV', 'CUB', 'CUW', 'CYP', 'CZE', 'DNK', 'DJI', 'DMA', 'DOM', 'ECU', 'EGY', 'SLV', 'GNQ', 'ERI', 'EST', 'ETH', 'FLK', 'FRO', 'FJI', 'FIN', 'FRA', 'GUF', 'PYF', 'ATF', 'GAB', 'GMB', 'GEO', 'DEU', 'GHA', 'GIB', 'GRC', 'GRL', 'GRD', 'GLP', 'GUM', 'GTM', 'GGY', 'GIN', 'GNB', 'GUY', 'HTI', 'HMD', 'VAT', 'HND', 'HKG', 'HUN', 'ISL', 'IND', 'IDN', 'IRN', 'IRQ', 'IRL', 'IMN', 'ISR', 'ITA', 'JAM', 'JPN', 'JEY', 'JOR', 'KAZ', 'KEN', 'KIR', 'PRK', 'KOR', 'KWT', 'KGZ', 'LAO', 'LVA', 'LBN', 'LSO', 'LBR', 'LBY', 'LIE', 'LTU', 'LUX', 'MAC', 'MKD', 'MDG', 'MWI', 'MYS', 'MDV', 'MLI', 'MLT', 'MHL', 'MTQ', 'MRT', 'MUS', 'MYT', 'MEX', 'FSM', 'MDA', 'MCO', 'MNG', 'MNE', 'MSR', 'MAR', 'MOZ', 'MMR', 'NAM', 'NRU', 'NPL', 'NLD', 'NCL', 'NZL', 'NIC', 'NER', 'NGA', 'NIU', 'NFK', 'MNP', 'NOR', 'OMN', 'PAK', 'PLW', 'PSE', 'PAN', 'PNG', 'PRY', 'PER', 'PHL', 'PCN', 'POL', 'PRT', 'PRI', 'QAT', 'REU', 'ROU', 'RUS', 'RWA', 'BLM', 'SHN', 'KNA', 'LCA', 'MAF', 'SPM', 'VCT', 'WSM', 'SMR', 'STP', 'SAU', 'SEN', 'SRB', 'SYC', 'SLE', 'SGP', 'SXM', 'SVK', 'SVN', 'SLB', 'SOM', 'ZAF', 'SGS', 'SSD', 'ESP', 'LKA', 'SDN', 'SUR', 'SJM', 'SWZ', 'SWE', 'CHE', 'SYR', 'TWN', 'TJK', 'TZA', 'THA', 'TLS', 'TGO', 'TKL', 'TON', 'TTO', 'TUN', 'TUR', 'TKM', 'TCA', 'TUV', 'UGA', 'UKR', 'ARE', 'GBR', 'USA', 'UMI', 'URY', 'UZB', 'VUT', 'VEN', 'VNM', 'VGB', 'VIR', 'WLF', 'ESH', 'YEM', 'ZMB', 'ZWE']);
-function isISO31661Alpha3(str) {
-  assertString(str);
-  return validISO31661Alpha3CountriesCodes.has(str.toUpperCase());
-}
-
-// from https://en.wikipedia.org/wiki/ISO_3166-1_numeric
-var validISO31661NumericCountriesCodes = new Set(['004', '008', '010', '012', '016', '020', '024', '028', '031', '032', '036', '040', '044', '048', '050', '051', '052', '056', '060', '064', '068', '070', '072', '074', '076', '084', '086', '090', '092', '096', '100', '104', '108', '112', '116', '120', '124', '132', '136', '140', '144', '148', '152', '156', '158', '162', '166', '170', '174', '175', '178', '180', '184', '188', '191', '192', '196', '203', '204', '208', '212', '214', '218', '222', '226', '231', '232', '233', '234', '238', '239', '242', '246', '248', '250', '254', '258', '260', '262', '266', '268', '270', '275', '276', '288', '292', '296', '300', '304', '308', '312', '316', '320', '324', '328', '332', '334', '336', '340', '344', '348', '352', '356', '360', '364', '368', '372', '376', '380', '384', '388', '392', '398', '400', '404', '408', '410', '414', '417', '418', '422', '426', '428', '430', '434', '438', '440', '442', '446', '450', '454', '458', '462', '466', '470', '474', '478', '480', '484', '492', '496', '498', '499', '500', '504', '508', '512', '516', '520', '524', '528', '531', '533', '534', '535', '540', '548', '554', '558', '562', '566', '570', '574', '578', '580', '581', '583', '584', '585', '586', '591', '598', '600', '604', '608', '612', '616', '620', '624', '626', '630', '634', '638', '642', '643', '646', '652', '654', '659', '660', '662', '663', '666', '670', '674', '678', '682', '686', '688', '690', '694', '702', '703', '704', '705', '706', '710', '716', '724', '728', '729', '732', '740', '744', '748', '752', '756', '760', '762', '764', '768', '772', '776', '780', '784', '788', '792', '795', '796', '798', '800', '804', '807', '818', '826', '831', '832', '833', '834', '840', '850', '854', '858', '860', '862', '876', '882', '887', '894']);
-function isISO31661Numeric(str) {
-  assertString(str);
-  return validISO31661NumericCountriesCodes.has(str);
-}
-
-// from https://en.wikipedia.org/wiki/ISO_4217
-var validISO4217CurrencyCodes = new Set(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BOV', 'BRL', 'BSD', 'BTN', 'BWP', 'BYN', 'BZD', 'CAD', 'CDF', 'CHE', 'CHF', 'CHW', 'CLF', 'CLP', 'CNY', 'COP', 'COU', 'CRC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'IQD', 'IRR', 'ISK', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRU', 'MUR', 'MVR', 'MWK', 'MXN', 'MXV', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLE', 'SLL', 'SOS', 'SRD', 'SSP', 'STN', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'USN', 'UYI', 'UYU', 'UYW', 'UZS', 'VED', 'VES', 'VND', 'VUV', 'WST', 'XAF', 'XAG', 'XAU', 'XBA', 'XBB', 'XBC', 'XBD', 'XCD', 'XDR', 'XOF', 'XPD', 'XPF', 'XPT', 'XSU', 'XTS', 'XUA', 'XXX', 'YER', 'ZAR', 'ZMW', 'ZWL']);
-function isISO4217(str) {
-  assertString(str);
-  return validISO4217CurrencyCodes.has(str.toUpperCase());
-}
-
-var base32 = /^[A-Z2-7]+=*$/;
-var crockfordBase32 = /^[A-HJKMNP-TV-Z0-9]+$/;
-var defaultBase32Options = {
-  crockford: false
-};
-function isBase32(str, options) {
-  assertString(str);
-  options = merge(options, defaultBase32Options);
-  if (options.crockford) {
-    return crockfordBase32.test(str);
-  }
-  var len = str.length;
-  if (len % 8 === 0 && base32.test(str)) {
-    return true;
-  }
-  return false;
-}
-
-// Accepted chars - 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz
-var base58Reg = /^[A-HJ-NP-Za-km-z1-9]*$/;
-function isBase58(str) {
-  assertString(str);
-  if (base58Reg.test(str)) {
-    return true;
-  }
-  return false;
-}
-
-var validMediaType = /^[a-z]+\/[a-z0-9\-\+\._]+$/i;
-var validAttribute = /^[a-z\-]+=[a-z0-9\-]+$/i;
-var validData = /^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i;
-function isDataURI(str) {
-  assertString(str);
-  var data = str.split(',');
-  if (data.length < 2) {
-    return false;
-  }
-  var attributes = data.shift().trim().split(';');
-  var schemeAndMediaType = attributes.shift();
-  if (schemeAndMediaType.slice(0, 5) !== 'data:') {
-    return false;
-  }
-  var mediaType = schemeAndMediaType.slice(5);
-  if (mediaType !== '' && !validMediaType.test(mediaType)) {
-    return false;
-  }
-  for (var i = 0; i < attributes.length; i++) {
-    if (!(i === attributes.length - 1 && attributes[i].toLowerCase() === 'base64') && !validAttribute.test(attributes[i])) {
-      return false;
-    }
-  }
-  for (var _i = 0; _i < data.length; _i++) {
-    if (!validData.test(data[_i])) {
-      return false;
-    }
-  }
-  return true;
-}
-
-var magnetURIComponent = /(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;
-function isMagnetURI(url) {
-  assertString(url);
-  if (url.indexOf('magnet:?') !== 0) {
-    return false;
-  }
-  return magnetURIComponent.test(url);
-}
-
-function rtrim(str, chars) {
-  assertString(str);
-  if (chars) {
-    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-    var pattern = new RegExp("[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+$"), 'g');
-    return str.replace(pattern, '');
-  }
-  // Use a faster and more safe than regex trim method https://blog.stevenlevithan.com/archives/faster-trim-javascript
-  var strIndex = str.length - 1;
-  while (/\s/.test(str.charAt(strIndex))) {
-    strIndex -= 1;
-  }
-  return str.slice(0, strIndex + 1);
-}
-
-function ltrim(str, chars) {
-  assertString(str);
-  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#Escaping
-  var pattern = chars ? new RegExp("^[".concat(chars.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), "]+"), 'g') : /^\s+/g;
-  return str.replace(pattern, '');
-}
-
-function trim(str, chars) {
-  return rtrim(ltrim(str, chars), chars);
-}
-
-function parseMailtoQueryString(queryString) {
-  var allowedParams = new Set(['subject', 'body', 'cc', 'bcc']),
-    query = {
-      cc: '',
-      bcc: ''
-    };
-  var isParseFailed = false;
-  var queryParams = queryString.split('&');
-  if (queryParams.length > 4) {
-    return false;
-  }
-  var _iterator = _createForOfIteratorHelper(queryParams),
-    _step;
-  try {
-    for (_iterator.s(); !(_step = _iterator.n()).done;) {
-      var q = _step.value;
-      var _q$split = q.split('='),
-        _q$split2 = _slicedToArray(_q$split, 2),
-        key = _q$split2[0],
-        value = _q$split2[1];
-
-      // checked for invalid and duplicated query params
-      if (key && !allowedParams.has(key)) {
-        isParseFailed = true;
-        break;
-      }
-      if (value && (key === 'cc' || key === 'bcc')) {
-        query[key] = value;
-      }
-      if (key) {
-        allowedParams["delete"](key);
-      }
-    }
-  } catch (err) {
-    _iterator.e(err);
-  } finally {
-    _iterator.f();
-  }
-  return isParseFailed ? false : query;
-}
-function isMailtoURI(url, options) {
-  assertString(url);
-  if (url.indexOf('mailto:') !== 0) {
-    return false;
-  }
-  var _url$replace$split = url.replace('mailto:', '').split('?'),
-    _url$replace$split2 = _slicedToArray(_url$replace$split, 2),
-    to = _url$replace$split2[0],
-    _url$replace$split2$ = _url$replace$split2[1],
-    queryString = _url$replace$split2$ === void 0 ? '' : _url$replace$split2$;
-  if (!to && !queryString) {
-    return true;
-  }
-  var query = parseMailtoQueryString(queryString);
-  if (!query) {
-    return false;
-  }
-  return "".concat(to, ",").concat(query.cc, ",").concat(query.bcc).split(',').every(function (email) {
-    email = trim(email, ' ');
-    if (email) {
-      return isEmail(email, options);
-    }
-    return true;
-  });
-}
-
-/*
-  Checks if the provided string matches to a correct Media type format (MIME type)
-
-  This function only checks is the string format follows the
-  established rules by the according RFC specifications.
-  This function supports 'charset' in textual media types
-  (https://tools.ietf.org/html/rfc6657).
-
-  This function does not check against all the media types listed
-  by the IANA (https://www.iana.org/assignments/media-types/media-types.xhtml)
-  because of lightness purposes : it would require to include
-  all these MIME types in this library, which would weigh it
-  significantly. This kind of effort maybe is not worth for the use that
-  this function has in this entire library.
-
-  More information in the RFC specifications :
-  - https://tools.ietf.org/html/rfc2045
-  - https://tools.ietf.org/html/rfc2046
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.1
-  - https://tools.ietf.org/html/rfc7231#section-3.1.1.5
-*/
-
-// Match simple MIME types
-// NB :
-//   Subtype length must not exceed 100 characters.
-//   This rule does not comply to the RFC specs (what is the max length ?).
-var mimeTypeSimple = /^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+_]{1,100}$/i; // eslint-disable-line max-len
-
-// Handle "charset" in "text/*"
-var mimeTypeText = /^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i; // eslint-disable-line max-len
-
-// Handle "boundary" in "multipart/*"
-var mimeTypeMultipart = /^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i; // eslint-disable-line max-len
-
-function isMimeType(str) {
-  assertString(str);
-  return mimeTypeSimple.test(str) || mimeTypeText.test(str) || mimeTypeMultipart.test(str);
-}
-
-var lat = /^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/;
-var _long = /^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/;
-var latDMS = /^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i;
-var longDMS = /^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i;
-var defaultLatLongOptions = {
-  checkDMS: false
-};
-function isLatLong(str, options) {
-  assertString(str);
-  options = merge(options, defaultLatLongOptions);
-  if (!includes(str, ',')) return false;
-  var pair = str.split(',');
-  if (pair[0].startsWith('(') && !pair[1].endsWith(')') || pair[1].endsWith(')') && !pair[0].startsWith('(')) return false;
-  if (options.checkDMS) {
-    return latDMS.test(pair[0]) && longDMS.test(pair[1]);
-  }
-  return lat.test(pair[0]) && _long.test(pair[1]);
-}
-
-// common patterns
-var threeDigit = /^\d{3}$/;
-var fourDigit = /^\d{4}$/;
-var fiveDigit = /^\d{5}$/;
-var sixDigit = /^\d{6}$/;
-var patterns = {
-  AD: /^AD\d{3}$/,
-  AT: fourDigit,
-  AU: fourDigit,
-  AZ: /^AZ\d{4}$/,
-  BA: /^([7-8]\d{4}$)/,
-  BD: /^([1-8][0-9]{3}|9[0-4][0-9]{2})$/,
-  BE: fourDigit,
-  BG: fourDigit,
-  BR: /^\d{5}-?\d{3}$/,
-  BY: /^2[1-4]\d{4}$/,
-  CA: /^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,
-  CH: fourDigit,
-  CN: /^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,
-  CO: /^(05|08|11|13|15|17|18|19|20|23|25|27|41|44|47|50|52|54|63|66|68|70|73|76|81|85|86|88|91|94|95|97|99)(\d{4})$/,
-  CZ: /^\d{3}\s?\d{2}$/,
-  DE: fiveDigit,
-  DK: fourDigit,
-  DO: fiveDigit,
-  DZ: fiveDigit,
-  EE: fiveDigit,
-  ES: /^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,
-  FI: fiveDigit,
-  FR: /^(?:(?:0[1-9]|[1-8]\d|9[0-5])\d{3}|97[1-46]\d{2})$/,
-  GB: /^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,
-  GR: /^\d{3}\s?\d{2}$/,
-  HR: /^([1-5]\d{4}$)/,
-  HT: /^HT\d{4}$/,
-  HU: fourDigit,
-  ID: fiveDigit,
-  IE: /^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,
-  IL: /^(\d{5}|\d{7})$/,
-  IN: /^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,
-  IR: /^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/,
-  IS: threeDigit,
-  IT: fiveDigit,
-  JP: /^\d{3}\-\d{4}$/,
-  KE: fiveDigit,
-  KR: /^(\d{5}|\d{6})$/,
-  LI: /^(948[5-9]|949[0-7])$/,
-  LT: /^LT\-\d{5}$/,
-  LU: fourDigit,
-  LV: /^LV\-\d{4}$/,
-  LK: fiveDigit,
-  MG: threeDigit,
-  MX: fiveDigit,
-  MT: /^[A-Za-z]{3}\s{0,1}\d{4}$/,
-  MY: fiveDigit,
-  NL: /^[1-9]\d{3}\s?(?!sa|sd|ss)[a-z]{2}$/i,
-  NO: fourDigit,
-  NP: /^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,
-  NZ: fourDigit,
-  // https://www.pakpost.gov.pk/postcodes.php
-  PK: fiveDigit,
-  PL: /^\d{2}\-\d{3}$/,
-  PR: /^00[679]\d{2}([ -]\d{4})?$/,
-  PT: /^\d{4}\-\d{3}?$/,
-  RO: sixDigit,
-  RU: sixDigit,
-  SA: fiveDigit,
-  SE: /^[1-9]\d{2}\s?\d{2}$/,
-  SG: sixDigit,
-  SI: fourDigit,
-  SK: /^\d{3}\s?\d{2}$/,
-  TH: fiveDigit,
-  TN: fourDigit,
-  TW: /^\d{3}(\d{2,3})?$/,
-  UA: fiveDigit,
-  US: /^\d{5}(-\d{4})?$/,
-  ZA: fourDigit,
-  ZM: fiveDigit
-};
-var locales$6 = Object.keys(patterns);
-function isPostalCode(str, locale) {
-  assertString(str);
-  if (locale in patterns) {
-    return patterns[locale].test(str);
-  } else if (locale === 'any') {
-    for (var key in patterns) {
-      // https://github.com/gotwarlost/istanbul/blob/master/ignoring-code-for-coverage.md#ignoring-code-for-coverage-purposes
-      // istanbul ignore else
-      if (patterns.hasOwnProperty(key)) {
-        var pattern = patterns[key];
-        if (pattern.test(str)) {
-          return true;
-        }
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-
-function escape(str) {
-  assertString(str);
-  return str.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\//g, '&#x2F;').replace(/\\/g, '&#x5C;').replace(/`/g, '&#96;');
-}
-
-function unescape(str) {
-  assertString(str);
-  return str.replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&#x2F;/g, '/').replace(/&#x5C;/g, '\\').replace(/&#96;/g, '`').replace(/&amp;/g, '&');
-  // &amp; replacement has to be the last one to prevent
-  // bugs with intermediate strings containing escape sequences
-  // See: https://github.com/validatorjs/validator.js/issues/1827
-}
-
-function blacklist$1(str, chars) {
-  assertString(str);
-  return str.replace(new RegExp("[".concat(chars, "]+"), 'g'), '');
-}
-
-function stripLow(str, keep_new_lines) {
-  assertString(str);
-  var chars = keep_new_lines ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F';
-  return blacklist$1(str, chars);
-}
-
-function whitelist(str, chars) {
-  assertString(str);
-  return str.replace(new RegExp("[^".concat(chars, "]+"), 'g'), '');
-}
-
-function isWhitelisted(str, chars) {
-  assertString(str);
-  for (var i = str.length - 1; i >= 0; i--) {
-    if (chars.indexOf(str[i]) === -1) {
-      return false;
-    }
-  }
-  return true;
-}
-
-var default_normalize_email_options = {
-  // The following options apply to all email addresses
-  // Lowercases the local part of the email address.
-  // Please note this may violate RFC 5321 as per http://stackoverflow.com/a/9808332/192024).
-  // The domain is always lowercased, as per RFC 1035
-  all_lowercase: true,
-  // The following conversions are specific to GMail
-  // Lowercases the local part of the GMail address (known to be case-insensitive)
-  gmail_lowercase: true,
-  // Removes dots from the local part of the email address, as that's ignored by GMail
-  gmail_remove_dots: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  gmail_remove_subaddress: true,
-  // Conversts the googlemail.com domain to gmail.com
-  gmail_convert_googlemaildotcom: true,
-  // The following conversions are specific to Outlook.com / Windows Live / Hotmail
-  // Lowercases the local part of the Outlook.com address (known to be case-insensitive)
-  outlookdotcom_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  outlookdotcom_remove_subaddress: true,
-  // The following conversions are specific to Yahoo
-  // Lowercases the local part of the Yahoo address (known to be case-insensitive)
-  yahoo_lowercase: true,
-  // Removes the subaddress (e.g. "-foo") from the email address
-  yahoo_remove_subaddress: true,
-  // The following conversions are specific to Yandex
-  // Lowercases the local part of the Yandex address (known to be case-insensitive)
-  yandex_lowercase: true,
-  // all yandex domains are equal, this explicitly sets the domain to 'yandex.ru'
-  yandex_convert_yandexru: true,
-  // The following conversions are specific to iCloud
-  // Lowercases the local part of the iCloud address (known to be case-insensitive)
-  icloud_lowercase: true,
-  // Removes the subaddress (e.g. "+foo") from the email address
-  icloud_remove_subaddress: true
-};
-
-// List of domains used by iCloud
-var icloud_domains = ['icloud.com', 'me.com'];
-
-// List of domains used by Outlook.com and its predecessors
-// This list is likely incomplete.
-// Partial reference:
-// https://blogs.office.com/2013/04/17/outlook-com-gets-two-step-verification-sign-in-by-alias-and-new-international-domains/
-var outlookdotcom_domains = ['hotmail.at', 'hotmail.be', 'hotmail.ca', 'hotmail.cl', 'hotmail.co.il', 'hotmail.co.nz', 'hotmail.co.th', 'hotmail.co.uk', 'hotmail.com', 'hotmail.com.ar', 'hotmail.com.au', 'hotmail.com.br', 'hotmail.com.gr', 'hotmail.com.mx', 'hotmail.com.pe', 'hotmail.com.tr', 'hotmail.com.vn', 'hotmail.cz', 'hotmail.de', 'hotmail.dk', 'hotmail.es', 'hotmail.fr', 'hotmail.hu', 'hotmail.id', 'hotmail.ie', 'hotmail.in', 'hotmail.it', 'hotmail.jp', 'hotmail.kr', 'hotmail.lv', 'hotmail.my', 'hotmail.ph', 'hotmail.pt', 'hotmail.sa', 'hotmail.sg', 'hotmail.sk', 'live.be', 'live.co.uk', 'live.com', 'live.com.ar', 'live.com.mx', 'live.de', 'live.es', 'live.eu', 'live.fr', 'live.it', 'live.nl', 'msn.com', 'outlook.at', 'outlook.be', 'outlook.cl', 'outlook.co.il', 'outlook.co.nz', 'outlook.co.th', 'outlook.com', 'outlook.com.ar', 'outlook.com.au', 'outlook.com.br', 'outlook.com.gr', 'outlook.com.pe', 'outlook.com.tr', 'outlook.com.vn', 'outlook.cz', 'outlook.de', 'outlook.dk', 'outlook.es', 'outlook.fr', 'outlook.hu', 'outlook.id', 'outlook.ie', 'outlook.in', 'outlook.it', 'outlook.jp', 'outlook.kr', 'outlook.lv', 'outlook.my', 'outlook.ph', 'outlook.pt', 'outlook.sa', 'outlook.sg', 'outlook.sk', 'passport.com'];
-
-// List of domains used by Yahoo Mail
-// This list is likely incomplete
-var yahoo_domains = ['rocketmail.com', 'yahoo.ca', 'yahoo.co.uk', 'yahoo.com', 'yahoo.de', 'yahoo.fr', 'yahoo.in', 'yahoo.it', 'ymail.com'];
-
-// List of domains used by yandex.ru
-var yandex_domains = ['yandex.ru', 'yandex.ua', 'yandex.kz', 'yandex.com', 'yandex.by', 'ya.ru'];
-
-// replace single dots, but not multiple consecutive dots
-function dotsReplacer(match) {
-  if (match.length > 1) {
-    return match;
-  }
-  return '';
-}
-function normalizeEmail(email, options) {
-  options = merge(options, default_normalize_email_options);
-  var raw_parts = email.split('@');
-  var domain = raw_parts.pop();
-  var user = raw_parts.join('@');
-  var parts = [user, domain];
-
-  // The domain is always lowercased, as it's case-insensitive per RFC 1035
-  parts[1] = parts[1].toLowerCase();
-  if (parts[1] === 'gmail.com' || parts[1] === 'googlemail.com') {
-    // Address is GMail
-    if (options.gmail_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (options.gmail_remove_dots) {
-      // this does not replace consecutive dots like example..email@gmail.com
-      parts[0] = parts[0].replace(/\.+/g, dotsReplacer);
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.gmail_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.gmail_convert_googlemaildotcom ? 'gmail.com' : parts[1];
-  } else if (icloud_domains.indexOf(parts[1]) >= 0) {
-    // Address is iCloud
-    if (options.icloud_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.icloud_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (outlookdotcom_domains.indexOf(parts[1]) >= 0) {
-    // Address is Outlook.com
-    if (options.outlookdotcom_remove_subaddress) {
-      parts[0] = parts[0].split('+')[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.outlookdotcom_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yahoo_domains.indexOf(parts[1]) >= 0) {
-    // Address is Yahoo
-    if (options.yahoo_remove_subaddress) {
-      var components = parts[0].split('-');
-      parts[0] = components.length > 1 ? components.slice(0, -1).join('-') : components[0];
-    }
-    if (!parts[0].length) {
-      return false;
-    }
-    if (options.all_lowercase || options.yahoo_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-  } else if (yandex_domains.indexOf(parts[1]) >= 0) {
-    if (options.all_lowercase || options.yandex_lowercase) {
-      parts[0] = parts[0].toLowerCase();
-    }
-    parts[1] = options.yandex_convert_yandexru ? 'yandex.ru' : parts[1];
-  } else if (options.all_lowercase) {
-    // Any other address
-    parts[0] = parts[0].toLowerCase();
-  }
-  return parts.join('@');
-}
-
-var charsetRegex = /^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/;
-function isSlug(str) {
-  assertString(str);
-  return charsetRegex.test(str);
-}
-
-var validators$1 = {
-  'cs-CZ': function csCZ(str) {
-    return /^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(str);
-  },
-  'de-DE': function deDE(str) {
-    return /^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(str);
-  },
-  'de-LI': function deLI(str) {
-    return /^FL[- ]?\d{1,5}[UZ]?$/.test(str);
-  },
-  'en-IN': function enIN(str) {
-    return /^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(str);
-  },
-  'en-SG': function enSG(str) {
-    return /^[A-Z]{3}[ -]?[\d]{4}[ -]?[A-Z]{1}$/.test(str);
-  },
-  'es-AR': function esAR(str) {
-    return /^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(str);
-  },
-  'fi-FI': function fiFI(str) {
-    return /^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(str);
-  },
-  'hu-HU': function huHU(str) {
-    return /^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\d{3})|(M\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \d{2}-\d{2})|(CD \d{3}-\d{3})|(C-(C|X) \d{4})|(X-(A|B|C) \d{4})|(([EPVZ]-\d{5}))|(S A[A-Z]{2} \d{2})|(SP \d{2}-\d{2}))$/.test(str);
-  },
-  'pt-BR': function ptBR(str) {
-    return /^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(str);
-  },
-  'pt-PT': function ptPT(str) {
-    return /^(([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[A-Z]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2})|([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2}))$/.test(str);
-  },
-  'sq-AL': function sqAL(str) {
-    return /^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(str);
-  },
-  'sv-SE': function svSE(str) {
-    return /^[A-HJ-PR-UW-Z]{3} ?[\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(str.trim());
-  },
-  'en-PK': function enPK(str) {
-    return /(^[A-Z]{2}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\s|-){0,1})[0-9]{4}((\s|-)[0-9]{2}){0,1}$)/.test(str.trim());
-  }
-};
-function isLicensePlate(str, locale) {
-  assertString(str);
-  if (locale in validators$1) {
-    return validators$1[locale](str);
-  } else if (locale === 'any') {
-    for (var key in validators$1) {
-      /* eslint guard-for-in: 0 */
-      var validator = validators$1[key];
-      if (validator(str)) {
-        return true;
-      }
-    }
-    return false;
-  }
-  throw new Error("Invalid locale '".concat(locale, "'"));
-}
-
-var upperCaseRegex = /^[A-Z]$/;
-var lowerCaseRegex = /^[a-z]$/;
-var numberRegex = /^[0-9]$/;
-var symbolRegex = /^[-#!$@£%^&*()_+|~=`{}\[\]:";'<>?,.\/\\ ]$/;
-var defaultOptions$1 = {
-  minLength: 8,
-  minLowercase: 1,
-  minUppercase: 1,
-  minNumbers: 1,
-  minSymbols: 1,
-  returnScore: false,
-  pointsPerUnique: 1,
-  pointsPerRepeat: 0.5,
-  pointsForContainingLower: 10,
-  pointsForContainingUpper: 10,
-  pointsForContainingNumber: 10,
-  pointsForContainingSymbol: 10
-};
-
-/* Counts number of occurrences of each char in a string
- * could be moved to util/ ?
-*/
-function countChars(str) {
-  var result = {};
-  Array.from(str).forEach(function (_char) {
-    var curVal = result[_char];
-    if (curVal) {
-      result[_char] += 1;
-    } else {
-      result[_char] = 1;
-    }
-  });
-  return result;
-}
-
-/* Return information about a password */
-function analyzePassword(password) {
-  var charMap = countChars(password);
-  var analysis = {
-    length: password.length,
-    uniqueChars: Object.keys(charMap).length,
-    uppercaseCount: 0,
-    lowercaseCount: 0,
-    numberCount: 0,
-    symbolCount: 0
-  };
-  Object.keys(charMap).forEach(function (_char2) {
-    /* istanbul ignore else */
-    if (upperCaseRegex.test(_char2)) {
-      analysis.uppercaseCount += charMap[_char2];
-    } else if (lowerCaseRegex.test(_char2)) {
-      analysis.lowercaseCount += charMap[_char2];
-    } else if (numberRegex.test(_char2)) {
-      analysis.numberCount += charMap[_char2];
-    } else if (symbolRegex.test(_char2)) {
-      analysis.symbolCount += charMap[_char2];
-    }
-  });
-  return analysis;
-}
-function scorePassword(analysis, scoringOptions) {
-  var points = 0;
-  points += analysis.uniqueChars * scoringOptions.pointsPerUnique;
-  points += (analysis.length - analysis.uniqueChars) * scoringOptions.pointsPerRepeat;
-  if (analysis.lowercaseCount > 0) {
-    points += scoringOptions.pointsForContainingLower;
-  }
-  if (analysis.uppercaseCount > 0) {
-    points += scoringOptions.pointsForContainingUpper;
-  }
-  if (analysis.numberCount > 0) {
-    points += scoringOptions.pointsForContainingNumber;
-  }
-  if (analysis.symbolCount > 0) {
-    points += scoringOptions.pointsForContainingSymbol;
-  }
-  return points;
-}
-function isStrongPassword(str) {
-  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-  assertString(str);
-  var analysis = analyzePassword(str);
-  options = merge(options || {}, defaultOptions$1);
-  if (options.returnScore) {
-    return scorePassword(analysis, options);
-  }
-  return analysis.length >= options.minLength && analysis.lowercaseCount >= options.minLowercase && analysis.uppercaseCount >= options.minUppercase && analysis.numberCount >= options.minNumbers && analysis.symbolCount >= options.minSymbols;
-}
-
-var AU = function AU(str) {
-  var match = str.match(/^(AU)?(\d{11})$/);
-  if (!match) {
-    return false;
-  }
-  // @see {@link https://abr.business.gov.au/Help/AbnFormat}
-  var weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
-  str = str.replace(/^AU/, '');
-  var ABN = (parseInt(str.slice(0, 1), 10) - 1).toString() + str.slice(1);
-  var total = 0;
-  for (var i = 0; i < 11; i++) {
-    total += weights[i] * ABN.charAt(i);
-  }
-  return total !== 0 && total % 89 === 0;
-};
-var CH = function CH(str) {
-  // @see {@link https://www.ech.ch/de/ech/ech-0097/5.2.0}
-  var hasValidCheckNumber = function hasValidCheckNumber(digits) {
-    var lastDigit = digits.pop(); // used as check number
-    var weights = [5, 4, 3, 2, 7, 6, 5, 4];
-    var calculatedCheckNumber = (11 - digits.reduce(function (acc, el, idx) {
-      return acc + el * weights[idx];
-    }, 0) % 11) % 11;
-    return lastDigit === calculatedCheckNumber;
-  };
-
-  // @see {@link https://www.estv.admin.ch/estv/de/home/mehrwertsteuer/uid/mwst-uid-nummer.html}
-  return /^(CHE[- ]?)?(\d{9}|(\d{3}\.\d{3}\.\d{3})|(\d{3} \d{3} \d{3})) ?(TVA|MWST|IVA)?$/.test(str) && hasValidCheckNumber(str.match(/\d/g).map(function (el) {
-    return +el;
-  }));
-};
-var PT = function PT(str) {
-  var match = str.match(/^(PT)?(\d{9})$/);
-  if (!match) {
-    return false;
-  }
-  var tin = match[2];
-  var checksum = 11 - reverseMultiplyAndSum(tin.split('').slice(0, 8).map(function (a) {
-    return parseInt(a, 10);
-  }), 9) % 11;
-  if (checksum > 9) {
-    return parseInt(tin[8], 10) === 0;
-  }
-  return checksum === parseInt(tin[8], 10);
-};
-var vatMatchers = {
-  /**
-   * European Union VAT identification numbers
-   */
-  AT: function AT(str) {
-    return /^(AT)?U\d{8}$/.test(str);
-  },
-  BE: function BE(str) {
-    return /^(BE)?\d{10}$/.test(str);
-  },
-  BG: function BG(str) {
-    return /^(BG)?\d{9,10}$/.test(str);
-  },
-  HR: function HR(str) {
-    return /^(HR)?\d{11}$/.test(str);
-  },
-  CY: function CY(str) {
-    return /^(CY)?\w{9}$/.test(str);
-  },
-  CZ: function CZ(str) {
-    return /^(CZ)?\d{8,10}$/.test(str);
-  },
-  DK: function DK(str) {
-    return /^(DK)?\d{8}$/.test(str);
-  },
-  EE: function EE(str) {
-    return /^(EE)?\d{9}$/.test(str);
-  },
-  FI: function FI(str) {
-    return /^(FI)?\d{8}$/.test(str);
-  },
-  FR: function FR(str) {
-    return /^(FR)?\w{2}\d{9}$/.test(str);
-  },
-  DE: function DE(str) {
-    return /^(DE)?\d{9}$/.test(str);
-  },
-  EL: function EL(str) {
-    return /^(EL)?\d{9}$/.test(str);
-  },
-  HU: function HU(str) {
-    return /^(HU)?\d{8}$/.test(str);
-  },
-  IE: function IE(str) {
-    return /^(IE)?\d{7}\w{1}(W)?$/.test(str);
-  },
-  IT: function IT(str) {
-    return /^(IT)?\d{11}$/.test(str);
-  },
-  LV: function LV(str) {
-    return /^(LV)?\d{11}$/.test(str);
-  },
-  LT: function LT(str) {
-    return /^(LT)?\d{9,12}$/.test(str);
-  },
-  LU: function LU(str) {
-    return /^(LU)?\d{8}$/.test(str);
-  },
-  MT: function MT(str) {
-    return /^(MT)?\d{8}$/.test(str);
-  },
-  NL: function NL(str) {
-    return /^(NL)?\d{9}B\d{2}$/.test(str);
-  },
-  PL: function PL(str) {
-    return /^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(str);
-  },
-  PT: PT,
-  RO: function RO(str) {
-    return /^(RO)?\d{2,10}$/.test(str);
-  },
-  SK: function SK(str) {
-    return /^(SK)?\d{10}$/.test(str);
-  },
-  SI: function SI(str) {
-    return /^(SI)?\d{8}$/.test(str);
-  },
-  ES: function ES(str) {
-    return /^(ES)?\w\d{7}[A-Z]$/.test(str);
-  },
-  SE: function SE(str) {
-    return /^(SE)?\d{12}$/.test(str);
-  },
-  /**
-   * VAT numbers of non-EU countries
-   */
-  AL: function AL(str) {
-    return /^(AL)?\w{9}[A-Z]$/.test(str);
-  },
-  MK: function MK(str) {
-    return /^(MK)?\d{13}$/.test(str);
-  },
-  AU: AU,
-  BY: function BY(str) {
-    return /^(УНП )?\d{9}$/.test(str);
-  },
-  CA: function CA(str) {
-    return /^(CA)?\d{9}$/.test(str);
-  },
-  IS: function IS(str) {
-    return /^(IS)?\d{5,6}$/.test(str);
-  },
-  IN: function IN(str) {
-    return /^(IN)?\d{15}$/.test(str);
-  },
-  ID: function ID(str) {
-    return /^(ID)?(\d{15}|(\d{2}.\d{3}.\d{3}.\d{1}-\d{3}.\d{3}))$/.test(str);
-  },
-  IL: function IL(str) {
-    return /^(IL)?\d{9}$/.test(str);
-  },
-  KZ: function KZ(str) {
-    return /^(KZ)?\d{12}$/.test(str);
-  },
-  NZ: function NZ(str) {
-    return /^(NZ)?\d{9}$/.test(str);
-  },
-  NG: function NG(str) {
-    return /^(NG)?(\d{12}|(\d{8}-\d{4}))$/.test(str);
-  },
-  NO: function NO(str) {
-    return /^(NO)?\d{9}MVA$/.test(str);
-  },
-  PH: function PH(str) {
-    return /^(PH)?(\d{12}|\d{3} \d{3} \d{3} \d{3})$/.test(str);
-  },
-  RU: function RU(str) {
-    return /^(RU)?(\d{10}|\d{12})$/.test(str);
-  },
-  SM: function SM(str) {
-    return /^(SM)?\d{5}$/.test(str);
-  },
-  SA: function SA(str) {
-    return /^(SA)?\d{15}$/.test(str);
-  },
-  RS: function RS(str) {
-    return /^(RS)?\d{9}$/.test(str);
-  },
-  CH: CH,
-  TR: function TR(str) {
-    return /^(TR)?\d{10}$/.test(str);
-  },
-  UA: function UA(str) {
-    return /^(UA)?\d{12}$/.test(str);
-  },
-  GB: function GB(str) {
-    return /^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(str);
-  },
-  UZ: function UZ(str) {
-    return /^(UZ)?\d{9}$/.test(str);
-  },
-  /**
-   * VAT numbers of Latin American countries
-   */
-  AR: function AR(str) {
-    return /^(AR)?\d{11}$/.test(str);
-  },
-  BO: function BO(str) {
-    return /^(BO)?\d{7}$/.test(str);
-  },
-  BR: function BR(str) {
-    return /^(BR)?((\d{2}.\d{3}.\d{3}\/\d{4}-\d{2})|(\d{3}.\d{3}.\d{3}-\d{2}))$/.test(str);
-  },
-  CL: function CL(str) {
-    return /^(CL)?\d{8}-\d{1}$/.test(str);
-  },
-  CO: function CO(str) {
-    return /^(CO)?\d{10}$/.test(str);
-  },
-  CR: function CR(str) {
-    return /^(CR)?\d{9,12}$/.test(str);
-  },
-  EC: function EC(str) {
-    return /^(EC)?\d{13}$/.test(str);
-  },
-  SV: function SV(str) {
-    return /^(SV)?\d{4}-\d{6}-\d{3}-\d{1}$/.test(str);
-  },
-  GT: function GT(str) {
-    return /^(GT)?\d{7}-\d{1}$/.test(str);
-  },
-  HN: function HN(str) {
-    return /^(HN)?$/.test(str);
-  },
-  MX: function MX(str) {
-    return /^(MX)?\w{3,4}\d{6}\w{3}$/.test(str);
-  },
-  NI: function NI(str) {
-    return /^(NI)?\d{3}-\d{6}-\d{4}\w{1}$/.test(str);
-  },
-  PA: function PA(str) {
-    return /^(PA)?$/.test(str);
-  },
-  PY: function PY(str) {
-    return /^(PY)?\d{6,8}-\d{1}$/.test(str);
-  },
-  PE: function PE(str) {
-    return /^(PE)?\d{11}$/.test(str);
-  },
-  DO: function DO(str) {
-    return /^(DO)?(\d{11}|(\d{3}-\d{7}-\d{1})|[1,4,5]{1}\d{8}|([1,4,5]{1})-\d{2}-\d{5}-\d{1})$/.test(str);
-  },
-  UY: function UY(str) {
-    return /^(UY)?\d{12}$/.test(str);
-  },
-  VE: function VE(str) {
-    return /^(VE)?[J,G,V,E]{1}-(\d{9}|(\d{8}-\d{1}))$/.test(str);
-  }
-};
-function isVAT(str, countryCode) {
-  assertString(str);
-  assertString(countryCode);
-  if (countryCode in vatMatchers) {
-    return vatMatchers[countryCode](str);
-  }
-  throw new Error("Invalid country code: '".concat(countryCode, "'"));
-}
-
-var version = '13.15.15';
-var validator = {
-  version: version,
-  toDate: toDate,
-  toFloat: toFloat,
-  toInt: toInt,
-  toBoolean: toBoolean,
-  equals: equals,
-  contains: contains,
-  matches: matches,
-  isEmail: isEmail,
-  isURL: isURL,
-  isMACAddress: isMACAddress,
-  isIP: isIP,
-  isIPRange: isIPRange,
-  isFQDN: isFQDN,
-  isBoolean: isBoolean,
-  isIBAN: isIBAN,
-  isBIC: isBIC,
-  isAbaRouting: isAbaRouting,
-  isAlpha: isAlpha,
-  isAlphaLocales: locales$1,
-  isAlphanumeric: isAlphanumeric,
-  isAlphanumericLocales: locales$2,
-  isNumeric: isNumeric,
-  isPassportNumber: isPassportNumber,
-  passportNumberLocales: locales$3,
-  isPort: isPort,
-  isLowercase: isLowercase,
-  isUppercase: isUppercase,
-  isAscii: isAscii,
-  isFullWidth: isFullWidth,
-  isHalfWidth: isHalfWidth,
-  isVariableWidth: isVariableWidth,
-  isMultibyte: isMultibyte,
-  isSemVer: isSemVer,
-  isSurrogatePair: isSurrogatePair,
-  isInt: isInt,
-  isIMEI: isIMEI,
-  isFloat: isFloat,
-  isFloatLocales: locales,
-  isDecimal: isDecimal,
-  isHexadecimal: isHexadecimal,
-  isOctal: isOctal,
-  isDivisibleBy: isDivisibleBy,
-  isHexColor: isHexColor,
-  isRgbColor: isRgbColor,
-  isHSL: isHSL,
-  isISRC: isISRC,
-  isMD5: isMD5,
-  isHash: isHash,
-  isJWT: isJWT,
-  isJSON: isJSON,
-  isEmpty: isEmpty,
-  isLength: isLength,
-  isLocale: isLocale,
-  isByteLength: isByteLength,
-  isULID: isULID,
-  isUUID: isUUID,
-  isMongoId: isMongoId,
-  isAfter: isAfter,
-  isBefore: isBefore,
-  isIn: isIn,
-  isLuhnNumber: isLuhnNumber,
-  isCreditCard: isCreditCard,
-  isIdentityCard: isIdentityCard,
-  isEAN: isEAN,
-  isISIN: isISIN,
-  isISBN: isISBN,
-  isISSN: isISSN,
-  isMobilePhone: isMobilePhone,
-  isMobilePhoneLocales: locales$5,
-  isPostalCode: isPostalCode,
-  isPostalCodeLocales: locales$6,
-  isEthereumAddress: isEthereumAddress,
-  isCurrency: isCurrency,
-  isBtcAddress: isBtcAddress,
-  isISO6346: isISO6346,
-  isFreightContainerID: isFreightContainerID,
-  isISO6391: isISO6391,
-  isISO8601: isISO8601,
-  isISO15924: isISO15924,
-  isRFC3339: isRFC3339,
-  isISO31661Alpha2: isISO31661Alpha2,
-  isISO31661Alpha3: isISO31661Alpha3,
-  isISO31661Numeric: isISO31661Numeric,
-  isISO4217: isISO4217,
-  isBase32: isBase32,
-  isBase58: isBase58,
-  isBase64: isBase64,
-  isDataURI: isDataURI,
-  isMagnetURI: isMagnetURI,
-  isMailtoURI: isMailtoURI,
-  isMimeType: isMimeType,
-  isLatLong: isLatLong,
-  ltrim: ltrim,
-  rtrim: rtrim,
-  trim: trim,
-  escape: escape,
-  unescape: unescape,
-  stripLow: stripLow,
-  whitelist: whitelist,
-  blacklist: blacklist$1,
-  isWhitelisted: isWhitelisted,
-  normalizeEmail: normalizeEmail,
-  toString: toString,
-  isSlug: isSlug,
-  isStrongPassword: isStrongPassword,
-  isTaxID: isTaxID,
-  isDate: isDate,
-  isTime: isTime,
-  isLicensePlate: isLicensePlate,
-  isVAT: isVAT,
-  ibanLocales: locales$4
-};
-
-return validator;
-
-})));
Index: ckend/node_modules/validator/validator.min.js
===================================================================
--- backend/node_modules/validator/validator.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,23 +1,0 @@
-/*!
- * Copyright (c) 2018 Chris O'Hara <cohara87@gmail.com>
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-((t,e)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.validator=e()})(this,function(){function u(t){if(null==t)throw new TypeError("Expected a string but received a ".concat(t));if("String"!==t.constructor.name)throw new TypeError("Expected a string but received a ".concat(t.constructor.name))}function r(t){return u(t),t=Date.parse(t),isNaN(t)?null:new Date(t)}function o(t){return null==t}for(var t,n={"en-US":/^[A-Z]+$/i,"az-AZ":/^[A-VXYZÇƏĞİıÖŞÜ]+$/i,"bg-BG":/^[А-Я]+$/i,"cs-CZ":/^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[A-ZÆØÅ]+$/i,"de-DE":/^[A-ZÄÖÜß]+$/i,"el-GR":/^[Α-ώ]+$/i,"es-ES":/^[A-ZÁÉÍÑÓÚÜ]+$/i,"fa-IR":/^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,"fi-FI":/^[A-ZÅÄÖ]+$/i,"fr-FR":/^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[A-ZÀÉÈÌÎÓÒÙ]+$/i,"ja-JP":/^[ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,"nb-NO":/^[A-ZÆØÅ]+$/i,"nl-NL":/^[A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[A-ZÆØÅ]+$/i,"hu-HU":/^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"pl-PL":/^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,"ru-RU":/^[А-ЯЁ]+$/i,"kk-KZ":/^[А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,"sl-SI":/^[A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[A-ZÅÄÖ]+$/i,"th-TH":/^[ก-๐\s]+$/i,"tr-TR":/^[A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[А-ЩЬЮЯЄIЇҐі]+$/i,"vi-VN":/^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,"ko-KR":/^[ㄱ-ㅎㅏ-ㅣ가-힣]*$/,"ku-IQ":/^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,ar:/^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,he:/^[א-ת]+$/,fa:/^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i,bn:/^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,eo:/^[ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,"hi-IN":/^[\u0900-\u0961]+[\u0972-\u097F]*$/i,"si-LK":/^[\u0D80-\u0DFF]+$/},a={"en-US":/^[0-9A-Z]+$/i,"az-AZ":/^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,"bg-BG":/^[0-9А-Я]+$/i,"cs-CZ":/^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,"da-DK":/^[0-9A-ZÆØÅ]+$/i,"de-DE":/^[0-9A-ZÄÖÜß]+$/i,"el-GR":/^[0-9Α-ω]+$/i,"es-ES":/^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,"fi-FI":/^[0-9A-ZÅÄÖ]+$/i,"fr-FR":/^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,"it-IT":/^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,"ja-JP":/^[0-9０-９ぁ-んァ-ヶｦ-ﾟ一-龠ー・。、]+$/i,"hu-HU":/^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,"nb-NO":/^[0-9A-ZÆØÅ]+$/i,"nl-NL":/^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,"nn-NO":/^[0-9A-ZÆØÅ]+$/i,"pl-PL":/^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,"pt-PT":/^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,"ru-RU":/^[0-9А-ЯЁ]+$/i,"kk-KZ":/^[0-9А-ЯЁ\u04D8\u04B0\u0406\u04A2\u0492\u04AE\u049A\u04E8\u04BA]+$/i,"sl-SI":/^[0-9A-ZČĆĐŠŽ]+$/i,"sk-SK":/^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,"sr-RS@latin":/^[0-9A-ZČĆŽŠĐ]+$/i,"sr-RS":/^[0-9А-ЯЂЈЉЊЋЏ]+$/i,"sv-SE":/^[0-9A-ZÅÄÖ]+$/i,"th-TH":/^[ก-๙\s]+$/i,"tr-TR":/^[0-9A-ZÇĞİıÖŞÜ]+$/i,"uk-UA":/^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,"ko-KR":/^[0-9ㄱ-ㅎㅏ-ㅣ가-힣]*$/,"ku-IQ":/^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,"vi-VN":/^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,ar:/^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,he:/^[0-9א-ת]+$/,fa:/^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i,bn:/^['ঀঁংঃঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহ়ঽািীুূৃৄেৈোৌ্ৎৗড়ঢ়য়ৠৡৢৣ০১২৩৪৫৬৭৮৯ৰৱ৲৳৴৵৶৷৸৹৺৻']+$/,eo:/^[0-9ABCĈD-GĜHĤIJĴK-PRSŜTUŬVZ]+$/i,"hi-IN":/^[\u0900-\u0963]+[\u0966-\u097F]*$/i,"si-LK":/^[0-9\u0D80-\u0DFF]+$/},i={"en-US":".",ar:"٫"},O=["AU","GB","HK","IN","NZ","ZA","ZM"],e=0;e<O.length;e++)t="en-".concat(O[e]),n[t]=n["en-US"],a[t]=a["en-US"],i[t]=i["en-US"];for(var s,H=["AE","BH","DZ","EG","IQ","JO","KW","LB","LY","MA","QM","QA","SA","SD","SY","TN","YE"],_=0;_<H.length;_++)s="ar-".concat(H[_]),n[s]=n.ar,a[s]=a.ar,i[s]=i.ar;for(var U,w=["IR","AF"],K=0;K<w.length;K++)U="fa-".concat(w[K]),a[U]=a.fa,i[U]=i.ar;for(var c,y=["BD","IN"],W=0;W<y.length;W++)c="bn-".concat(y[W]),n[c]=n.bn,a[c]=a.bn,i[c]=i["en-US"];for(var x=["ar-EG","ar-LB","ar-LY"],k=["bg-BG","cs-CZ","da-DK","de-DE","el-GR","en-ZM","eo","es-ES","fr-CA","fr-FR","id-ID","it-IT","ku-IQ","hi-IN","hu-HU","nb-NO","nn-NO","nl-NL","pl-PL","pt-PT","ru-RU","kk-KZ","si-LK","sl-SI","sr-RS@latin","sr-RS","sv-SE","tr-TR","uk-UA","vi-VN"],Y=0;Y<x.length;Y++)i[x[Y]]=i["en-US"];for(var V=0;V<k.length;V++)i[k[V]]=",";function z(t,e){u(t),e=e||{};var r,n=new RegExp("^(?:[-+])?(?:[0-9]+)?(?:\\".concat(e.locale?i[e.locale]:".","[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$"));return""!==t&&"."!==t&&","!==t&&"-"!==t&&"+"!==t&&(r=parseFloat(t.replace(",",".")),n.test(t))&&(!e.hasOwnProperty("min")||o(e.min)||r>=e.min)&&(!e.hasOwnProperty("max")||o(e.max)||r<=e.max)&&(!e.hasOwnProperty("lt")||o(e.lt)||r<e.lt)&&(!e.hasOwnProperty("gt")||o(e.gt)||r>e.gt)}n["fr-CA"]=n["fr-FR"],a["fr-CA"]=a["fr-FR"],n["pt-BR"]=n["pt-PT"],a["pt-BR"]=a["pt-PT"],i["pt-BR"]=i["pt-PT"],n["pl-Pl"]=n["pl-PL"],a["pl-Pl"]=a["pl-PL"],i["pl-Pl"]=i["pl-PL"],n["fa-AF"]=n.fa;var Q=Object.keys(i);function j(t){return z(t)?parseFloat(t):NaN}function J(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function X(t,e){var r,n,a,i,o="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(o)return a=!(n=!0),{s:function(){o=o.call(t)},n:function(){var t=o.next();return n=t.done,t},e:function(t){a=!0,r=t},f:function(){try{n||null==o.return||o.return()}finally{if(a)throw r}}};if(Array.isArray(t)||(o=tt(t))||e&&t&&"number"==typeof t.length)return o&&(t=o),i=0,{s:e=function(){},n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:e};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(t,e){return(t=>{if(Array.isArray(t))return t})(t)||((t,e)=>{var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,a,i,o,s=[],c=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);c=!0);}catch(t){u=!0,a=t}finally{try{if(!c&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}})(t,e)||tt(t,e)||(()=>{throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function q(t){return(t=>{if(Array.isArray(t))return J(t)})(t)||(t=>{if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)})(t)||tt(t)||(()=>{throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")})()}function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function tt(t,e){var r;if(t)return"string"==typeof t?J(t,e):"Map"===(r="Object"===(r={}.toString.call(t).slice(8,-1))&&t.constructor?t.constructor.name:r)||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?J(t,e):void 0}function et(t){return"object"===l(t)&&null!==t?t="function"==typeof t.toString?t.toString():"[object Object]":(null==t||isNaN(t)&&!t.length)&&(t=""),String(t)}function f(t,e){var r,n=0<arguments.length&&void 0!==t?t:{},a=1<arguments.length?e:void 0;for(r in a)void 0===n[r]&&(n[r]=a[r]);return n}var rt={ignoreCase:!1,minOccurrences:1};function A(t,e){for(var r=0;r<e.length;r++){var n=e[r];if(t===n||"[object RegExp]"===Object.prototype.toString.call(n)&&n.test(t))return!0}return!1}function $(t,e){u(t),e="object"===l(e)?(r=e.min||0,e.max):(r=e,arguments[2]);var r,t=encodeURI(t).split(/%..|./).length-1;return r<=t&&(void 0===e||t<=e)}var nt={require_tld:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_numeric_tld:!1,allow_wildcard:!1,ignore_max_length:!1};function at(t,e){u(t),(e=f(e,nt)).allow_trailing_dot&&"."===t[t.length-1]&&(t=t.substring(0,t.length-1));var t=(t=!0===e.allow_wildcard&&0===t.indexOf("*.")?t.substring(2):t).split("."),r=t[t.length-1];if(e.require_tld){if(t.length<2)return!1;if(!e.allow_numeric_tld&&!/^([a-z\u00A1-\u00A8\u00AA-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}|xn[a-z0-9-]{2,})$/i.test(r))return!1;if(/\s/.test(r))return!1}return!(!e.allow_numeric_tld&&/^\d+$/.test(r))&&t.every(function(t){return!(63<t.length&&!e.ignore_max_length||!/^[a-z_\u00a1-\uffff0-9-]+$/i.test(t)||/[\uff01-\uff5e]/.test(t)||/^-|-$/.test(t)||!e.allow_underscores&&/_/.test(t))})}var p="(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])",p="(".concat(p,"[.]){3}").concat(p),it=new RegExp("^".concat(p,"$")),h="(?:[0-9a-fA-F]{1,4})",ot=new RegExp("^("+"(?:".concat(h,":){7}(?:").concat(h,"|:)|")+"(?:".concat(h,":){6}(?:").concat(p,"|:").concat(h,"|:)|")+"(?:".concat(h,":){5}(?::").concat(p,"|(:").concat(h,"){1,2}|:)|")+"(?:".concat(h,":){4}(?:(:").concat(h,"){0,1}:").concat(p,"|(:").concat(h,"){1,3}|:)|")+"(?:".concat(h,":){3}(?:(:").concat(h,"){0,2}:").concat(p,"|(:").concat(h,"){1,4}|:)|")+"(?:".concat(h,":){2}(?:(:").concat(h,"){0,3}:").concat(p,"|(:").concat(h,"){1,5}|:)|")+"(?:".concat(h,":){1}(?:(:").concat(h,"){0,4}:").concat(p,"|(:").concat(h,"){1,6}|:)|")+"(?::((?::".concat(h,"){0,5}:").concat(p,"|(?::").concat(h,"){1,7}|:))")+")(%[0-9a-zA-Z.]{1,})?$");function g(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(u(t),("object"===l(e)?e.version:arguments[1])||"");return e?"4"===e.toString()?it.test(t):"6"===e.toString()&&ot.test(t):g(t,{version:4})||g(t,{version:6})}var st={allow_display_name:!1,allow_underscores:!1,require_display_name:!1,allow_utf8_local_part:!0,require_tld:!0,blacklisted_chars:"",ignore_max_length:!1,host_blacklist:[],host_whitelist:[]},ct=/^([^\x00-\x1F\x7F-\x9F\cX]+)</i,ut=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~]+$/i,lt=/^[a-z\d]+$/,dt=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f]))*$/i,ft=/^[a-z\d!#\$%&'\*\+\-\/=\?\^_`{\|}~\u00A1-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+$/i,At=/^([\s\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|(\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*$/i;function $t(t,e){if(u(t),(e=f(e,st)).require_display_name||e.allow_display_name){var r=t.match(ct);if(r){r=r[1];if(t=t.replace(r,"").replace(/(^<|>$)/g,""),!(t=>{var e=t.replace(/^"(.+)"$/,"$1");if(e.trim()){if(/[\.";<>]/.test(e)){if(e===t)return;if(!(e.split('"').length===e.split('\\"').length))return}return 1}})(r=r.endsWith(" ")?r.slice(0,-1):r))return!1}else if(e.require_display_name)return!1}if(!e.ignore_max_length&&254<t.length)return!1;var r=t.split("@"),t=r.pop(),n=t.toLowerCase();if(0<e.host_blacklist.length&&A(n,e.host_blacklist))return!1;if(0<e.host_whitelist.length&&!A(n,e.host_whitelist))return!1;r=r.join("@");if(e.domain_specific_validation&&("gmail.com"===n||"googlemail.com"===n)){n=(r=r.toLowerCase()).split("+")[0];if(!$(n.replace(/\./g,""),{min:6,max:30}))return!1;for(var a=n.split("."),i=0;i<a.length;i++)if(!lt.test(a[i]))return!1}if(!(!1!==e.ignore_max_length||$(r,{max:64})&&$(t,{max:254})))return!1;if(!at(t,{require_tld:e.require_tld,ignore_max_length:e.ignore_max_length,allow_underscores:e.allow_underscores})){if(!e.allow_ip_domain)return!1;if(!g(t)){if(!t.startsWith("[")||!t.endsWith("]"))return!1;n=t.slice(1,-1);if(0===n.length||!g(n))return!1}}if(e.blacklisted_chars&&-1!==r.search(new RegExp("[".concat(e.blacklisted_chars,"]+"),"g")))return!1;if('"'===r[0]&&'"'===r[r.length-1])return r=r.slice(1,r.length-1),(e.allow_utf8_local_part?At:dt).test(r);for(var o=e.allow_utf8_local_part?ft:ut,s=r.split("."),c=0;c<s.length;c++)if(!o.test(s[c]))return!1;return!0}function S(t,e){return-1!==t.indexOf(e)}var pt={protocols:["http","https","ftp"],require_tld:!0,require_protocol:!1,require_host:!0,require_port:!1,require_valid_protocol:!0,allow_underscores:!1,allow_trailing_dot:!1,allow_protocol_relative_urls:!1,allow_fragments:!0,allow_query_components:!0,validate_length:!0,max_allowed_length:2084},ht=/^\[([^\]]+)\](?::([0-9]+))?$/;var gt=/^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){4}([0-9a-fA-F]{2})$/,St=/^([0-9a-fA-F]){12}$/,mt=/^([0-9a-fA-F]{4}\.){2}([0-9a-fA-F]{4})$/,Zt=/^(?:[0-9a-fA-F]{2}([-:\s]))([0-9a-fA-F]{2}\1){6}([0-9a-fA-F]{2})$/,Et=/^([0-9a-fA-F]){16}$/,It=/^([0-9a-fA-F]{4}\.){3}([0-9a-fA-F]{4})$/;var Rt=/^\d{1,3}$/;var vt={format:"YYYY/MM/DD",delimiters:["/","-"],strictMode:!1};function m(e,r){if(r=f("string"==typeof r?{format:r}:r,vt),"string"==typeof e&&/(^(y{4}|y{2})[.\/-](m{1,2})[.\/-](d{1,2})$)|(^(m{1,2})[.\/-](d{1,2})[.\/-]((y{4}|y{2})$))|(^(d{1,2})[.\/-](m{1,2})[.\/-]((y{4}|y{2})$))/gi.test(r.format)){if(r.strictMode&&e.length!==r.format.length)return!1;var t,n=r.delimiters.find(function(t){return-1!==r.format.indexOf(t)}),a=r.strictMode?n:r.delimiters.find(function(t){return-1!==e.indexOf(t)}),i={},o=X(((t,e)=>{for(var r=[],n=Math.max(t.length,e.length),a=0;a<n;a++)r.push([t[a],e[a]]);return r})(e.split(a),r.format.toLowerCase().split(n)));try{for(o.s();!(t=o.n()).done;){var s=d(t.value,2),c=s[0],u=s[1];if(!c||!u||c.length!==u.length)return!1;i[u.charAt(0)]=c}}catch(t){o.e(t)}finally{o.f()}if((a=i.y).startsWith("-"))return!1;if(2===i.y.length){n=parseInt(i.y,10);if(isNaN(n))return!1;a=(n<(new Date).getFullYear()%100?"20":"19").concat(i.y)}var n=i.m,l=(1===i.m.length&&(n="0".concat(i.m)),i.d);return 1===i.d.length&&(l="0".concat(i.d)),new Date("".concat(a,"-").concat(n,"-").concat(l,"T00:00:00.000Z")).getUTCDate()===+i.d}return!r.strictMode&&"[object Date]"===Object.prototype.toString.call(e)&&isFinite(e)}var Lt={hourFormat:"hour24",mode:"default"},Mt={hour24:{default:/^([01]?[0-9]|2[0-3]):([0-5][0-9])$/,withSeconds:/^([01]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/,withOptionalSeconds:/^([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/},hour12:{default:/^(0?[1-9]|1[0-2]):([0-5][0-9]) (A|P)M$/,withSeconds:/^(0?[1-9]|1[0-2]):([0-5][0-9]):([0-5][0-9]) (A|P)M$/,withOptionalSeconds:/^(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9]))? (A|P)M$/}};var Z=function(t,e){return t.some(function(t){return e===t})},Bt={loose:!1},Ct=["true","false","1","0"],Nt=[].concat(Ct,["yes","no"]);var p="(([a-zA-Z]{2,3}(-".concat("([A-Za-z]{3}(-[A-Za-z]{3}){0,2})",")?)|([a-zA-Z]{5,8}))"),h="(".concat("(\\d|[A-W]|[Y-Z]|[a-w]|[y-z])","(-[A-Za-z0-9]{2,8})+)"),Ft="(x(-[A-Za-z0-9]{1,8})+)",E="(".concat("((en-GB-oed)|(i-ami)|(i-bnn)|(i-default)|(i-enochian)|(i-hak)|(i-klingon)|(i-lux)|(i-mingo)|(i-navajo)|(i-pwn)|(i-tao)|(i-tay)|(i-tsu)|(sgn-BE-FR)|(sgn-BE-NL)|(sgn-CH-DE))","|").concat("((art-lojban)|(cel-gaulish)|(no-bok)|(no-nyn)|(zh-guoyu)|(zh-hakka)|(zh-min)|(zh-min-nan)|(zh-xiang))",")"),I="(-|_)",p="".concat(p,"(").concat(I).concat("([A-Za-z]{4})",")?(").concat(I).concat("([A-Za-z]{2}|\\d{3})",")?(").concat(I).concat("([A-Za-z0-9]{5,8}|(\\d[A-Z-a-z0-9]{3}))",")*(").concat(I).concat(h,")*(").concat(I).concat(Ft,")?"),Dt=new RegExp("(^".concat(Ft,"$)|(^").concat(E,"$)|(^").concat(p,"$)"));var Tt=/^(?!(1[3-9])|(20)|(3[3-9])|(4[0-9])|(5[0-9])|(60)|(7[3-9])|(8[1-9])|(9[0-2])|(9[3-9]))[0-9]{9}$/;h=Object.keys(n);var I=Object.keys(a),bt=/^[0-9]+$/;var Gt={AM:/^[A-Z]{2}\d{7}$/,AR:/^[A-Z]{3}\d{6}$/,AT:/^[A-Z]\d{7}$/,AU:/^[A-Z]\d{7}$/,AZ:/^[A-Z]{1}\d{8}$/,BE:/^[A-Z]{2}\d{6}$/,BG:/^\d{9}$/,BR:/^[A-Z]{2}\d{6}$/,BY:/^[A-Z]{2}\d{7}$/,CA:/^[A-Z]{2}\d{6}$|^[A-Z]\d{6}[A-Z]{2}$/,CH:/^[A-Z]\d{7}$/,CN:/^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,CY:/^[A-Z](\d{6}|\d{8})$/,CZ:/^\d{8}$/,DE:/^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,DK:/^\d{9}$/,DZ:/^\d{9}$/,EE:/^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,ES:/^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,FI:/^[A-Z]{2}\d{7}$/,FR:/^\d{2}[A-Z]{2}\d{5}$/,GB:/^\d{9}$/,GR:/^[A-Z]{2}\d{7}$/,HR:/^\d{9}$/,HU:/^[A-Z]{2}(\d{6}|\d{7})$/,IE:/^[A-Z0-9]{2}\d{7}$/,IN:/^[A-Z]{1}-?\d{7}$/,ID:/^[A-C]\d{7}$/,IR:/^[A-Z]\d{8}$/,IS:/^(A)\d{7}$/,IT:/^[A-Z0-9]{2}\d{7}$/,JM:/^[Aa]\d{7}$/,JP:/^[A-Z]{2}\d{7}$/,KR:/^[MS]\d{8}$/,KZ:/^[a-zA-Z]\d{7}$/,LI:/^[a-zA-Z]\d{5}$/,LT:/^[A-Z0-9]{8}$/,LU:/^[A-Z0-9]{8}$/,LV:/^[A-Z0-9]{2}\d{7}$/,LY:/^[A-Z0-9]{8}$/,MT:/^\d{7}$/,MZ:/^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,MY:/^[AHK]\d{8}$/,MX:/^\d{10,11}$/,NL:/^[A-Z]{2}[A-Z0-9]{6}\d$/,NZ:/^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,PH:/^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,PK:/^[A-Z]{2}\d{7}$/,PL:/^[A-Z]{2}\d{7}$/,PT:/^[A-Z]\d{6}$/,RO:/^\d{8,9}$/,RU:/^\d{9}$/,SE:/^\d{8}$/,SL:/^(P)[A-Z]\d{7}$/,SK:/^[0-9A-Z]\d{7}$/,TH:/^[A-Z]{1,2}\d{6,7}$/,TR:/^[A-Z]\d{8}$/,UA:/^[A-Z]{2}\d{6}$/,US:/^\d{9}$|^[A-Z]\d{8}$/,ZA:/^[TAMD]\d{8}$/},Ft=Object.keys(Gt);var Pt=/^(?:[-+]?(?:0|[1-9][0-9]*))$/,Ot=/^[-+]?[0-9]+$/;function Ht(t,e){u(t);var r=!1===(e=e||{}).allow_leading_zeroes?Pt:Ot,n=!e.hasOwnProperty("min")||o(e.min)||t>=e.min,a=!e.hasOwnProperty("max")||o(e.max)||t<=e.max,i=!e.hasOwnProperty("lt")||o(e.lt)||t<e.lt,e=!e.hasOwnProperty("gt")||o(e.gt)||t>e.gt;return r.test(t)&&n&&a&&i&&e}var _t=/^[0-9]{15}$/,Ut=/^\d{2}-\d{6}-\d{6}-\d{1}$/;var wt=/^[\x00-\x7F]+$/;var Kt=/[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var yt=/[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]/;var Wt=/[^\x00-\x7F]/;E="i",p=(p=["^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)","(?:-((?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-z-][0-9a-z-]*))*))","?(?:\\+([0-9a-z-]+(?:\\.[0-9a-z-]+)*))?$"]).join("");var xt=new RegExp(p,E);var kt=/[\uD800-\uDBFF][\uDC00-\uDFFF]/;var Yt={force_decimal:!1,decimal_digits:"1,",locale:"en-US"},Vt=["","-","+"];var zt=/^(0x|0h)?[0-9A-F]+$/i;function Qt(t){return u(t),zt.test(t)}var jt=/^(0o)?[0-7]+$/i;var Jt=/^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i;var Xt=/^rgb\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\)$/,qt=/^rgba\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/,te=/^rgb\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\)$/,ee=/^rgba\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\.\d\d?|1(\.0)?|0(\.0)?)\)$/,re=/^rgba?/;var ne=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(,(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}(,((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?))?\)$/i,ae=/^hsla?\(((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?))(deg|grad|rad|turn)?(\s(\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%){2}\s?(\/\s((\+|\-)?([0-9]+(\.[0-9]+)?(e(\+|\-)?[0-9]+)?|\.[0-9]+(e(\+|\-)?[0-9]+)?)%?)\s?)?\)$/i;var ie=/^[A-Z]{2}[0-9A-Z]{3}\d{2}\d{5}$/;var R={AD:/^(AD[0-9]{2})\d{8}[A-Z0-9]{12}$/,AE:/^(AE[0-9]{2})\d{3}\d{16}$/,AL:/^(AL[0-9]{2})\d{8}[A-Z0-9]{16}$/,AT:/^(AT[0-9]{2})\d{16}$/,AZ:/^(AZ[0-9]{2})[A-Z0-9]{4}\d{20}$/,BA:/^(BA[0-9]{2})\d{16}$/,BE:/^(BE[0-9]{2})\d{12}$/,BG:/^(BG[0-9]{2})[A-Z]{4}\d{6}[A-Z0-9]{8}$/,BH:/^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,BR:/^(BR[0-9]{2})\d{23}[A-Z]{1}[A-Z0-9]{1}$/,BY:/^(BY[0-9]{2})[A-Z0-9]{4}\d{20}$/,CH:/^(CH[0-9]{2})\d{5}[A-Z0-9]{12}$/,CR:/^(CR[0-9]{2})\d{18}$/,CY:/^(CY[0-9]{2})\d{8}[A-Z0-9]{16}$/,CZ:/^(CZ[0-9]{2})\d{20}$/,DE:/^(DE[0-9]{2})\d{18}$/,DK:/^(DK[0-9]{2})\d{14}$/,DO:/^(DO[0-9]{2})[A-Z]{4}\d{20}$/,DZ:/^(DZ\d{24})$/,EE:/^(EE[0-9]{2})\d{16}$/,EG:/^(EG[0-9]{2})\d{25}$/,ES:/^(ES[0-9]{2})\d{20}$/,FI:/^(FI[0-9]{2})\d{14}$/,FO:/^(FO[0-9]{2})\d{14}$/,FR:/^(FR[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,GB:/^(GB[0-9]{2})[A-Z]{4}\d{14}$/,GE:/^(GE[0-9]{2})[A-Z0-9]{2}\d{16}$/,GI:/^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,GL:/^(GL[0-9]{2})\d{14}$/,GR:/^(GR[0-9]{2})\d{7}[A-Z0-9]{16}$/,GT:/^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,HR:/^(HR[0-9]{2})\d{17}$/,HU:/^(HU[0-9]{2})\d{24}$/,IE:/^(IE[0-9]{2})[A-Z]{4}\d{14}$/,IL:/^(IL[0-9]{2})\d{19}$/,IQ:/^(IQ[0-9]{2})[A-Z]{4}\d{15}$/,IR:/^(IR[0-9]{2})0\d{2}0\d{18}$/,IS:/^(IS[0-9]{2})\d{22}$/,IT:/^(IT[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,JO:/^(JO[0-9]{2})[A-Z]{4}\d{22}$/,KW:/^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,KZ:/^(KZ[0-9]{2})\d{3}[A-Z0-9]{13}$/,LB:/^(LB[0-9]{2})\d{4}[A-Z0-9]{20}$/,LC:/^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,LI:/^(LI[0-9]{2})\d{5}[A-Z0-9]{12}$/,LT:/^(LT[0-9]{2})\d{16}$/,LU:/^(LU[0-9]{2})\d{3}[A-Z0-9]{13}$/,LV:/^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,MA:/^(MA[0-9]{26})$/,MC:/^(MC[0-9]{2})\d{10}[A-Z0-9]{11}\d{2}$/,MD:/^(MD[0-9]{2})[A-Z0-9]{20}$/,ME:/^(ME[0-9]{2})\d{18}$/,MK:/^(MK[0-9]{2})\d{3}[A-Z0-9]{10}\d{2}$/,MR:/^(MR[0-9]{2})\d{23}$/,MT:/^(MT[0-9]{2})[A-Z]{4}\d{5}[A-Z0-9]{18}$/,MU:/^(MU[0-9]{2})[A-Z]{4}\d{19}[A-Z]{3}$/,MZ:/^(MZ[0-9]{2})\d{21}$/,NL:/^(NL[0-9]{2})[A-Z]{4}\d{10}$/,NO:/^(NO[0-9]{2})\d{11}$/,PK:/^(PK[0-9]{2})[A-Z0-9]{4}\d{16}$/,PL:/^(PL[0-9]{2})\d{24}$/,PS:/^(PS[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,PT:/^(PT[0-9]{2})\d{21}$/,QA:/^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,RO:/^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,RS:/^(RS[0-9]{2})\d{18}$/,SA:/^(SA[0-9]{2})\d{2}[A-Z0-9]{18}$/,SC:/^(SC[0-9]{2})[A-Z]{4}\d{20}[A-Z]{3}$/,SE:/^(SE[0-9]{2})\d{20}$/,SI:/^(SI[0-9]{2})\d{15}$/,SK:/^(SK[0-9]{2})\d{20}$/,SM:/^(SM[0-9]{2})[A-Z]{1}\d{10}[A-Z0-9]{12}$/,SV:/^(SV[0-9]{2})[A-Z0-9]{4}\d{20}$/,TL:/^(TL[0-9]{2})\d{19}$/,TN:/^(TN[0-9]{2})\d{20}$/,TR:/^(TR[0-9]{2})\d{5}[A-Z0-9]{17}$/,UA:/^(UA[0-9]{2})\d{6}[A-Z0-9]{19}$/,VA:/^(VA[0-9]{2})\d{18}$/,VG:/^(VG[0-9]{2})[A-Z]{4}\d{16}$/,XK:/^(XK[0-9]{2})\d{16}$/};function oe(t,e){var t=t.replace(/[\s\-]+/gi,"").toUpperCase(),r=t.slice(0,2).toUpperCase(),n=r in R;if(e.whitelist){if(0<e.whitelist.filter(function(t){return!(t in R)}).length)return!1;if(!Z(e.whitelist,r))return!1}if(e.blacklist&&Z(e.blacklist,r))return!1;return n&&R[r].test(t)}var p=Object.keys(R),se=new Set(["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW"]);var ce=se,ue=/^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$/;var le=/^[a-f0-9]{32}$/;var de={md5:32,md4:32,sha1:40,sha256:64,sha384:96,sha512:128,ripemd128:32,ripemd160:40,tiger128:32,tiger160:40,tiger192:48,crc32:8,crc32b:8};var fe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/,Ae=/^[A-Za-z0-9+/]+$/,$e=/^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2}==|[A-Za-z0-9_-]{3}=|[A-Za-z0-9_-]{4})$/,pe=/^[A-Za-z0-9_-]+$/;function he(t,e){var r;return u(t),e=f(e,{urlSafe:!1,padding:!(null!=(r=e)&&r.urlSafe)}),""===t||(r=e.urlSafe?e.padding?$e:pe:e.padding?fe:Ae,(!e.padding||t.length%4==0)&&r.test(t))}var ge={allow_primitives:!1};var Se={ignore_whitespace:!1};var me={1:/^[0-9A-F]{8}-[0-9A-F]{4}-1[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,2:/^[0-9A-F]{8}-[0-9A-F]{4}-2[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,3:/^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,4:/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,5:/^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,6:/^[0-9A-F]{8}-[0-9A-F]{4}-6[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,7:/^[0-9A-F]{8}-[0-9A-F]{4}-7[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,8:/^[0-9A-F]{8}-[0-9A-F]{4}-8[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,nil:/^00000000-0000-0000-0000-000000000000$/i,max:/^ffffffff-ffff-ffff-ffff-ffffffffffff$/i,loose:/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,all:/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i};function Ze(t){u(t);for(var e,r,n=t.replace(/[- ]+/g,""),a=0,i=n.length-1;0<=i;i--)e=n.substring(i,i+1),e=parseInt(e,10),a+=r&&10<=(e*=2)?e%10+1:e,r=!r;return!(a%10!=0||!n)}var v={amex:/^3[47][0-9]{13}$/,dinersclub:/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/,discover:/^6(?:011|5[0-9][0-9])[0-9]{12,15}$/,jcb:/^(?:2131|1800|35\d{3})\d{11}$/,mastercard:/^5[1-5][0-9]{2}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$/,unionpay:/^(6[27][0-9]{14}|^(81[0-9]{14,17}))$/,visa:/^(?:4[0-9]{12})(?:[0-9]{3,6})?$/},Ee=(()=>{var t,e=[];for(t in v)v.hasOwnProperty(t)&&e.push(v[t]);return e})();var L={PL:function(t){u(t);var n={1:1,2:3,3:7,4:9,5:1,6:3,7:7,8:9,9:1,10:3,11:0};if(null!=t&&11===t.length&&Ht(t,{allow_leading_zeroes:!0})){var e=t.split("").slice(0,-1).reduce(function(t,e,r){return t+Number(e)*n[r+1]},0)%10,t=Number(t.charAt(t.length-1));if(0==e&&0===t||t===10-e)return!0}return!1},ES:function(t){u(t);var e,r={X:0,Y:1,Z:2},t=t.trim().toUpperCase();return!!/^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/.test(t)&&(e=t.slice(0,-1).replace(/[X,Y,Z]/g,function(t){return r[t]}),t.endsWith(["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"][e%23]))},FI:function(t){return u(t),11===t.length&&!!t.match(/^\d{6}[\-A\+]\d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]{1}$/)&&"0123456789ABCDEFHJKLMNPRSTUVWXY"[(1e3*parseInt(t.slice(0,6),10)+parseInt(t.slice(7,10),10))%31]===t.slice(10,11)},IN:function(t){var r,n=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],a=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],t=t.trim();return!!/^[1-9]\d{3}\s?\d{4}\s?\d{4}$/.test(t)&&(r=0,t.replace(/\s/g,"").split("").map(Number).reverse().forEach(function(t,e){r=n[r][a[e%8][t]]}),0===r)},IR:function(t){if(!t.match(/^\d{10}$/))return!1;if(t="0000".concat(t).slice(t.length-6),0===parseInt(t.slice(3,9),10))return!1;for(var e=parseInt(t.slice(9,10),10),r=0,n=0;n<9;n++)r+=parseInt(t.slice(n,n+1),10)*(10-n);return(r%=11)<2&&e===r||2<=r&&e===11-r},IT:function(t){return 9===t.length&&"CA00000AA"!==t&&-1<t.search(/C[A-Z]\d{5}[A-Z]{2}/i)},NO:function(t){var e,t=t.trim();return!isNaN(Number(t))&&11===t.length&&"00000000000"!==t&&(e=(11-(3*(t=t.split("").map(Number))[0]+7*t[1]+6*t[2]+ +t[3]+8*t[4]+9*t[5]+4*t[6]+5*t[7]+2*t[8])%11)%11)===t[9]&&(11-(5*t[0]+4*t[1]+3*t[2]+2*t[3]+7*t[4]+6*t[5]+5*t[6]+4*t[7]+3*t[8]+2*e)%11)%11===t[10]},TH:function(t){if(!t.match(/^[1-8]\d{12}$/))return!1;for(var e=0,r=0;r<12;r++)e+=parseInt(t[r],10)*(13-r);return t[12]===((11-e%11)%10).toString()},LK:function(t){return!(10!==t.length||!/^[1-9]\d{8}[vx]$/i.test(t))||!(12!==t.length||!/^[1-9]\d{11}$/i.test(t))},"he-IL":function(t){t=t.trim();if(!/^\d{9}$/.test(t))return!1;for(var e,r=t,n=0,a=0;a<r.length;a++)n+=9<(e=Number(r[a])*(a%2+1))?e-9:e;return n%10==0},"ar-LY":function(t){t=t.trim();return!!/^(1|2)\d{11}$/.test(t)},"ar-TN":function(t){t=t.trim();return!!/^\d{8}$/.test(t)},"zh-CN":function(t){var e,r,n=["11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","71","81","82","91"],a=["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"],i=["1","0","X","9","8","7","6","5","4","3","2"],o=function(t){return Z(n,t)},s=function(t){var e=parseInt(t.substring(0,4),10),r=parseInt(t.substring(4,6),10),t=parseInt(t.substring(6),10),n=new Date(e,r-1,t);return!(n>new Date)&&n.getFullYear()===e&&n.getMonth()===r-1&&n.getDate()===t},c=function(t){for(var e=t.substring(0,17),r=0,n=0;n<17;n++)r+=parseInt(e.charAt(n),10)*parseInt(a[n],10);return i[r%11]},u=function(t){return c(t)===t.charAt(17).toUpperCase()};return t=t,!!/^\d{15}|(\d{17}(\d|x|X))$/.test(t)&&(15===t.length?!!/^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(e=t)&&(r=e.substring(0,2),!!o(r))&&(r="19".concat(e.substring(6,12)),!!s(r)):!!/^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(e=t)&&(r=e.substring(0,2),!!o(r))&&(r=e.substring(6,14),!!s(r))&&u(e))},"zh-HK":function(t){var e=/^[0-9]$/;if(t=(t=t.trim()).toUpperCase(),!/^[A-Z]{1,2}[0-9]{6}((\([0-9A]\))|(\[[0-9A]\])|([0-9A]))$/.test(t))return!1;8===(t=t.replace(/\[|\]|\(|\)/g,"")).length&&(t="3".concat(t));for(var r=0,n=0;n<=7;n++)r+=(e.test(t[n])?t[n]:(t[n].charCodeAt(0)-55)%11)*(9-n);return(0===(r%=11)?"0":1===r?"A":String(11-r))===t[t.length-1]},"zh-TW":function(t){var a={A:10,B:11,C:12,D:13,E:14,F:15,G:16,H:17,I:34,J:18,K:19,L:20,M:21,N:22,O:35,P:23,Q:24,R:25,S:26,T:27,U:28,V:29,W:32,X:30,Y:31,Z:33},t=t.trim().toUpperCase();return!!/^[A-Z][0-9]{9}$/.test(t)&&Array.from(t).reduce(function(t,e,r){var n;return 0===r?(n=a[e])%10*9+Math.floor(n/10):9===r?(10-t%10-Number(e))%10==0:t+Number(e)*(9-r)},0)},PK:function(t){t=t.trim();return/^[1-7][0-9]{4}-[0-9]{7}-[1-9]$/.test(t)}};var Ie=8,Re=14,ve=/^(\d{8}|\d{13}|\d{14})$/;function Le(r){var t=10-r.slice(0,-1).split("").map(function(t,e){return Number(t)*(t=r.length,e=e,t===Ie||t===Re?e%2==0?3:1:e%2==0?1:3)}).reduce(function(t,e){return t+e},0)%10;return t<10?t:0}var Me=/^[A-Z]{2}[0-9A-Z]{9}[0-9]$/;var Be=/^(?:[0-9]{9}X|[0-9]{10})$/,Ce=/^(?:[0-9]{13})$/,Ne=[1,3];function Fe(t){for(var e=10,r=0;r<t.length-1;r++)e=(parseInt(t[r],10)+e)%10==0?9:(parseInt(t[r],10)+e)%10*2%11;return(e=1===e?0:11-e)===parseInt(t[10],10)}function De(t){for(var e,r=0,n=!1,a=t.length-1;0<=a;a--)r+=n?9<(e=2*parseInt(t[a],10))?e.toString().split("").map(function(t){return parseInt(t,10)}).reduce(function(t,e){return t+e},0):e:parseInt(t[a],10),n=!n;return r%10==0}function M(t,e){for(var r=0,n=0;n<t.length;n++)r+=t[n]*(e-n);return r}var Te={andover:["10","12"],atlanta:["60","67"],austin:["50","53"],brookhaven:["01","02","03","04","05","06","11","13","14","16","21","22","23","25","34","51","52","54","55","56","57","58","59","65"],cincinnati:["30","32","35","36","37","38","61"],fresno:["15","24"],internet:["20","26","27","45","46","47"],kansas:["40","44"],memphis:["94","95"],ogden:["80","90"],philadelphia:["33","39","41","42","43","46","48","62","63","64","66","68","71","72","73","74","75","76","77","81","82","83","84","85","86","87","88","91","92","93","98","99"],sba:["31"]};function be(t){for(var e=!1,r=!1,n=0;n<3;n++)if(!e&&/[AEIOU]/.test(t[n]))e=!0;else if(!r&&e&&"X"===t[n])r=!0;else if(0<n){if(e&&!r&&!/[AEIOU]/.test(t[n]))return;if(r&&!/X/.test(t[n]))return}return 1}var B={"bg-BG":/^\d{10}$/,"cs-CZ":/^\d{6}\/{0,1}\d{3,4}$/,"de-AT":/^\d{9}$/,"de-DE":/^[1-9]\d{10}$/,"dk-DK":/^\d{6}-{0,1}\d{4}$/,"el-CY":/^[09]\d{7}[A-Z]$/,"el-GR":/^([0-4]|[7-9])\d{8}$/,"en-CA":/^\d{9}$/,"en-GB":/^\d{10}$|^(?!GB|NK|TN|ZZ)(?![DFIQUV])[A-Z](?![DFIQUVO])[A-Z]\d{6}[ABCD ]$/i,"en-IE":/^\d{7}[A-W][A-IW]{0,1}$/i,"en-US":/^\d{2}[- ]{0,1}\d{7}$/,"es-AR":/(20|23|24|27|30|33|34)[0-9]{8}[0-9]/,"es-ES":/^(\d{0,8}|[XYZKLM]\d{7})[A-HJ-NP-TV-Z]$/i,"et-EE":/^[1-6]\d{6}(00[1-9]|0[1-9][0-9]|[1-6][0-9]{2}|70[0-9]|710)\d$/,"fi-FI":/^\d{6}[-+A]\d{3}[0-9A-FHJ-NPR-Y]$/i,"fr-BE":/^\d{11}$/,"fr-FR":/^[0-3]\d{12}$|^[0-3]\d\s\d{2}(\s\d{3}){3}$/,"fr-LU":/^\d{13}$/,"hr-HR":/^\d{11}$/,"hu-HU":/^8\d{9}$/,"it-IT":/^[A-Z]{6}[L-NP-V0-9]{2}[A-EHLMPRST][L-NP-V0-9]{2}[A-ILMZ][L-NP-V0-9]{3}[A-Z]$/i,"lv-LV":/^\d{6}-{0,1}\d{5}$/,"mt-MT":/^\d{3,7}[APMGLHBZ]$|^([1-8])\1\d{7}$/i,"nl-NL":/^\d{9}$/,"pl-PL":/^\d{10,11}$/,"pt-BR":/(?:^\d{11}$)|(?:^\d{14}$)/,"pt-PT":/^\d{9}$/,"ro-RO":/^\d{13}$/,"sk-SK":/^\d{6}\/{0,1}\d{3,4}$/,"sl-SI":/^[1-9]\d{7}$/,"sv-SE":/^(\d{6}[-+]{0,1}\d{4}|(18|19|20)\d{6}[-+]{0,1}\d{4})$/,"uk-UA":/^\d{10}$/},C=(B["lb-LU"]=B["fr-LU"],B["lt-LT"]=B["et-EE"],B["nl-BE"]=B["fr-BE"],B["fr-CA"]=B["en-CA"],{"bg-BG":function(t){var e=t.slice(0,2),r=parseInt(t.slice(2,4),10),e=(40<r?(r-=40,"20"):20<r?(r-=20,"18"):"19").concat(e);if(r<10&&(r="0".concat(r)),!m("".concat(e,"/").concat(r,"/").concat(t.slice(4,6)),"YYYY/MM/DD"))return!1;for(var n=t.split("").map(function(t){return parseInt(t,10)}),a=[2,4,8,5,10,9,7,3,6],i=0,o=0;o<a.length;o++)i+=n[o]*a[o];return(i=i%11==10?0:i%11)===n[9]},"cs-CZ":function(t){t=t.replace(/\W/,"");var e=parseInt(t.slice(0,2),10);if(10===t.length)e=(e<54?"20":"19").concat(e);else{if("000"===t.slice(6))return!1;if(!(e<54))return!1;e="19".concat(e)}3===e.length&&(e=[e.slice(0,2),"0",e.slice(2)].join(""));var r=parseInt(t.slice(2,4),10);if(50<r&&(r-=50),20<r){if(parseInt(e,10)<2004)return!1;r-=20}if(r<10&&(r="0".concat(r)),!m("".concat(e,"/").concat(r,"/").concat(t.slice(4,6)),"YYYY/MM/DD"))return!1;if(10===t.length&&parseInt(t,10)%11!=0){r=parseInt(t.slice(0,9),10)%11;if(!(parseInt(e,10)<1986&&10==r))return!1;if(0!==parseInt(t.slice(9),10))return!1}return!0},"de-AT":De,"de-DE":function(t){for(var e=t.split("").map(function(t){return parseInt(t,10)}),r=[],n=0;n<e.length-1;n++){r.push("");for(var a=0;a<e.length-1;a++)e[n]===e[a]&&(r[n]+=a)}if(2!==(r=r.filter(function(t){return 1<t.length})).length&&3!==r.length)return!1;if(3===r[0].length){for(var i=r[0].split("").map(function(t){return parseInt(t,10)}),o=0,s=0;s<i.length-1;s++)i[s]+1===i[s+1]&&(o+=1);if(2===o)return!1}return Fe(t)},"dk-DK":function(t){t=t.replace(/\W/,"");var e=parseInt(t.slice(4,6),10);switch(t.slice(6,7)){case"0":case"1":case"2":case"3":e="19".concat(e);break;case"4":case"9":e=(e<37?"20":"19").concat(e);break;default:if(e<37)e="20".concat(e);else{if(!(58<e))return!1;e="18".concat(e)}}if(3===e.length&&(e=[e.slice(0,2),"0",e.slice(2)].join("")),!m("".concat(e,"/").concat(t.slice(2,4),"/").concat(t.slice(0,2)),"YYYY/MM/DD"))return!1;for(var r=t.split("").map(function(t){return parseInt(t,10)}),n=0,a=4,i=0;i<9;i++)n+=r[i]*a,1===--a&&(a=7);return 1!=(n%=11)&&(0===n?0===r[9]:r[9]===11-n)},"el-CY":function(t){for(var e=t.slice(0,8).split("").map(function(t){return parseInt(t,10)}),r=0,n=1;n<e.length;n+=2)r+=e[n];for(var a=0;a<e.length;a+=2)e[a]<2?r+=1-e[a]:(r+=2*(e[a]-2)+5,4<e[a]&&(r+=2));return String.fromCharCode(r%26+65)===t.charAt(8)},"el-GR":function(t){for(var e=t.split("").map(function(t){return parseInt(t,10)}),r=0,n=0;n<8;n++)r+=e[n]*Math.pow(2,8-n);return r%11%10===e[8]},"en-CA":function(t){var e=(t=t.split("")).filter(function(t,e){return e%2}).map(function(t){return 2*Number(t)}).join("").split("");return t.filter(function(t,e){return!(e%2)}).concat(e).map(function(t){return Number(t)}).reduce(function(t,e){return t+e})%10==0},"en-IE":function(t){var e=M(t.split("").slice(0,7).map(function(t){return parseInt(t,10)}),8);return 9===t.length&&"W"!==t[8]&&(e+=9*(t[8].charCodeAt(0)-64)),0===(e%=23)?"W"===t[7].toUpperCase():t[7].toUpperCase()===String.fromCharCode(64+e)},"en-US":function(t){return-1!==(()=>{var t,e=[];for(t in Te)Te.hasOwnProperty(t)&&e.push.apply(e,q(Te[t]));return e})().indexOf(t.slice(0,2))},"es-AR":function(t){for(var e=0,r=t.split(""),t=parseInt(r.pop(),10),n=0;n<r.length;n++)e+=r[9-n]*(2+n%6);var a=11-e%11;return 11===a?a=0:10===a&&(a=9),t===a},"es-ES":function(t){var e=t.toUpperCase().split("");if(isNaN(parseInt(e[0],10))&&1<e.length){var r=0;switch(e[0]){case"Y":r=1;break;case"Z":r=2}e.splice(0,1,r)}else for(;e.length<9;)e.unshift(0);return e=e.join(""),t=parseInt(e.slice(0,8),10)%23,e[8]===["T","R","W","A","G","M","Y","F","P","D","X","B","N","J","Z","S","Q","V","H","L","C","K","E"][t]},"et-EE":function(t){var e=t.slice(1,3);switch(t.slice(0,1)){case"1":case"2":e="18".concat(e);break;case"3":case"4":e="19".concat(e);break;default:e="20".concat(e)}if(!m("".concat(e,"/").concat(t.slice(3,5),"/").concat(t.slice(5,7)),"YYYY/MM/DD"))return!1;for(var r=t.split("").map(function(t){return parseInt(t,10)}),n=0,a=1,i=0;i<10;i++)n+=r[i]*a,10===(a+=1)&&(a=1);if(n%11==10){for(var n=0,a=3,o=0;o<10;o++)n+=r[o]*a,10===(a+=1)&&(a=1);if(n%11==10)return 0===r[10]}return n%11===r[10]},"fi-FI":function(t){var e,r=t.slice(4,6);switch(t.slice(6,7)){case"+":r="18".concat(r);break;case"-":r="19".concat(r);break;default:r="20".concat(r)}return!!m("".concat(r,"/").concat(t.slice(2,4),"/").concat(t.slice(0,2)),"YYYY/MM/DD")&&((e=parseInt(t.slice(0,6)+t.slice(7,10),10)%31)<10?e===parseInt(t.slice(10),10):["A","B","C","D","E","F","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y"][e-=10]===t.slice(10))},"fr-BE":function(t){var e,r;return!!("00"===t.slice(2,4)&&"00"===t.slice(4,6)||m("".concat(t.slice(0,2),"/").concat(t.slice(2,4),"/").concat(t.slice(4,6)),"YY/MM/DD"))&&(e=97-parseInt(t.slice(0,9),10)%97,r=parseInt(t.slice(9,11),10),e===r||97-parseInt("2".concat(t.slice(0,9)),10)%97===r)},"fr-FR":function(t){return t=t.replace(/\s/g,""),parseInt(t.slice(0,10),10)%511===parseInt(t.slice(10,13),10)},"fr-LU":function(t){if(m("".concat(t.slice(0,4),"/").concat(t.slice(4,6),"/").concat(t.slice(6,8)),"YYYY/MM/DD")&&De(t.slice(0,12))){for(var t="".concat(t.slice(0,11)).concat(t[12]),e=[[0,1,2,3,4,5,6,7,8,9],[1,2,3,4,0,6,7,8,9,5],[2,3,4,0,1,7,8,9,5,6],[3,4,0,1,2,8,9,5,6,7],[4,0,1,2,3,9,5,6,7,8],[5,9,8,7,6,0,4,3,2,1],[6,5,9,8,7,1,0,4,3,2],[7,6,5,9,8,2,1,0,4,3],[8,7,6,5,9,3,2,1,0,4],[9,8,7,6,5,4,3,2,1,0]],r=[[0,1,2,3,4,5,6,7,8,9],[1,5,7,6,2,8,3,0,9,4],[5,8,0,3,7,9,6,1,4,2],[8,9,1,6,0,4,3,5,2,7],[9,4,5,3,1,2,6,8,7,0],[4,2,8,6,5,7,3,9,0,1],[2,7,9,3,8,0,6,4,1,5],[7,0,4,6,9,1,3,2,5,8]],n=t.split("").reverse().join(""),a=0,i=0;i<n.length;i++)a=e[a][r[i%8][parseInt(n[i],10)]];return 0===a}return!1},"hr-HR":Fe,"hu-HU":function(t){for(var e=t.split("").map(function(t){return parseInt(t,10)}),r=8,n=1;n<9;n++)r+=e[n]*(n+1);return r%11===e[9]},"it-IT":function(t){var e=t.toUpperCase().split("");if(!be(e.slice(0,3)))return!1;if(!be(e.slice(3,6)))return!1;for(var r={L:"0",M:"1",N:"2",P:"3",Q:"4",R:"5",S:"6",T:"7",U:"8",V:"9"},n=0,a=[6,7,9,10,12,13,14];n<a.length;n++){var i=a[n];e[i]in r&&e.splice(i,1,r[e[i]])}var t={A:"01",B:"02",C:"03",D:"04",E:"05",H:"06",L:"07",M:"08",P:"09",R:"10",S:"11",T:"12"}[e[8]],o=parseInt(e[9]+e[10],10);if(40<o&&(o-=40),o<10&&(o="0".concat(o)),!m("".concat(e[6]).concat(e[7],"/").concat(t,"/").concat(o),"YY/MM/DD"))return!1;for(var s=0,c=1;c<e.length-1;c+=2){var u=parseInt(e[c],10);s+=u=isNaN(u)?e[c].charCodeAt(0)-65:u}for(var l={A:1,B:0,C:5,D:7,E:9,F:13,G:15,H:17,I:19,J:21,K:2,L:4,M:18,N:20,O:11,P:3,Q:6,R:8,S:12,T:14,U:16,V:10,W:22,X:25,Y:24,Z:23,0:1,1:0},d=0;d<e.length-1;d+=2){var f,A=0;e[d]in l?A=l[e[d]]:(A=2*(f=parseInt(e[d],10))+1,4<f&&(A+=2)),s+=A}return String.fromCharCode(65+s%26)===e[15]},"lv-LV":function(t){var e=(t=t.replace(/\W/,"")).slice(0,2);if("32"===e)return!0;if("00"!==t.slice(2,4)){var r=t.slice(4,6);switch(t[6]){case"0":r="18".concat(r);break;case"1":r="19".concat(r);break;default:r="20".concat(r)}if(!m("".concat(r,"/").concat(t.slice(2,4),"/").concat(e),"YYYY/MM/DD"))return!1}for(var n=1101,a=[1,6,3,7,9,10,5,8,4,2],i=0;i<t.length-1;i++)n-=parseInt(t[i],10)*a[i];return parseInt(t[10],10)===n%11},"mt-MT":function(t){if(9!==t.length){for(var e=t.toUpperCase().split("");e.length<8;)e.unshift(0);switch(t[7]){case"A":case"P":if(0===parseInt(e[6],10))return!1;break;default:var r=parseInt(e.join("").slice(0,5),10);if(32e3<r)return!1;if(r===parseInt(e.join("").slice(5,7),10))return!1}}return!0},"nl-NL":function(t){return M(t.split("").slice(0,8).map(function(t){return parseInt(t,10)}),9)%11===parseInt(t[8],10)},"pl-PL":function(t){if(10===t.length){for(var e=[6,5,7,2,3,4,5,6,7],r=0,n=0;n<e.length;n++)r+=parseInt(t[n],10)*e[n];return 10===(r%=11)?!1:r===parseInt(t[9],10)}var a=t.slice(0,2),i=parseInt(t.slice(2,4),10);if(80<i?(a="18".concat(a),i-=80):60<i?(a="22".concat(a),i-=60):40<i?(a="21".concat(a),i-=40):20<i?(a="20".concat(a),i-=20):a="19".concat(a),i<10&&(i="0".concat(i)),!m("".concat(a,"/").concat(i,"/").concat(t.slice(4,6)),"YYYY/MM/DD"))return!1;for(var o=0,s=1,c=0;c<t.length-1;c++)o+=parseInt(t[c],10)*s%10,10<(s+=2)?s=1:5===s&&(s+=2);return(o=10-o%10)===parseInt(t[10],10)},"pt-BR":function(t){if(11===t.length){var e=0;if("11111111111"===t||"22222222222"===t||"33333333333"===t||"44444444444"===t||"55555555555"===t||"66666666666"===t||"77777777777"===t||"88888888888"===t||"99999999999"===t||"00000000000"===t)return!1;for(var r=1;r<=9;r++)e+=parseInt(t.substring(r-1,r),10)*(11-r);if((o=10===(o=10*e%11)?0:o)!==parseInt(t.substring(9,10),10))return!1;e=0;for(var n=1;n<=10;n++)e+=parseInt(t.substring(n-1,n),10)*(12-n);return(o=10===(o=10*e%11)?0:o)!==parseInt(t.substring(10,11),10)?!1:!0}if("00000000000000"===t||"11111111111111"===t||"22222222222222"===t||"33333333333333"===t||"44444444444444"===t||"55555555555555"===t||"66666666666666"===t||"77777777777777"===t||"88888888888888"===t||"99999999999999"===t)return!1;for(var a=t.length-2,i=t.substring(0,a),o=t.substring(a),s=0,c=a-7,u=a;1<=u;u--)s+=i.charAt(a-u)*c,--c<2&&(c=9);if((s%11<2?0:11-s%11)!==parseInt(o.charAt(0),10))return!1;for(var i=t.substring(0,a+=1),s=0,c=a-7,l=a;1<=l;l--)s+=i.charAt(a-l)*c,--c<2&&(c=9);return(s%11<2?0:11-s%11)===parseInt(o.charAt(1),10)},"pt-PT":function(t){var e=11-M(t.split("").slice(0,8).map(function(t){return parseInt(t,10)}),9)%11;return 9<e?0===parseInt(t[8],10):e===parseInt(t[8],10)},"ro-RO":function(t){if("9000"===t.slice(0,4))return!0;var e=t.slice(1,3);switch(t[0]){case"1":case"2":e="19".concat(e);break;case"3":case"4":e="18".concat(e);break;case"5":case"6":e="20".concat(e)}var r="".concat(e,"/").concat(t.slice(3,5),"/").concat(t.slice(5,7));if(8===r.length){if(!m(r,"YY/MM/DD"))return!1}else if(!m(r,"YYYY/MM/DD"))return!1;for(var n=t.split("").map(function(t){return parseInt(t,10)}),a=[2,7,9,1,4,6,3,5,8,2,7,9],i=0,o=0;o<a.length;o++)i+=n[o]*a[o];return i%11==10?1===n[12]:n[12]===i%11},"sk-SK":function(t){if(9===t.length){if("000"===(t=t.replace(/\W/,"")).slice(6))return!1;if(53<(e=parseInt(t.slice(0,2),10)))return!1;var e=(e<10?"190":"19").concat(e),r=parseInt(t.slice(2,4),10);if(50<r&&(r-=50),r<10&&(r="0".concat(r)),!m("".concat(e,"/").concat(r,"/").concat(t.slice(4,6)),"YYYY/MM/DD"))return!1}return!0},"sl-SI":function(t){var e=11-M(t.split("").slice(0,7).map(function(t){return parseInt(t,10)}),8)%11;return 10==e?0===parseInt(t[7],10):e===parseInt(t[7],10)},"sv-SE":function(t){var e=t.slice(0),r="",n=(e=11<t.length?e.slice(2):e).slice(2,4),e=parseInt(e.slice(4,6),10);if(11<t.length)r=t.slice(0,4);else if(r=t.slice(0,2),11===t.length&&e<60){var a=(new Date).getFullYear().toString(),i=parseInt(a.slice(0,2),10),a=parseInt(a,10);if("-"===t[6])r=(parseInt("".concat(i).concat(r),10)>a?"".concat(i-1):"".concat(i)).concat(r);else if(r="".concat(i-1).concat(r),a-parseInt(r,10)<100)return!1}if(60<e&&(e-=60),e<10&&(e="0".concat(e)),8===(i="".concat(r,"/").concat(n,"/").concat(e)).length){if(!m(i,"YY/MM/DD"))return!1}else if(!m(i,"YYYY/MM/DD"))return!1;return De(t.replace(/\W/,""))},"uk-UA":function(t){for(var e=t.split("").map(function(t){return parseInt(t,10)}),r=[-1,5,7,9,4,6,10,5,7],n=0,a=0;a<r.length;a++)n+=e[a]*r[a];return n%11==10?0===e[9]:e[9]===n%11}}),E=(C["lb-LU"]=C["fr-LU"],C["lt-LT"]=C["et-EE"],C["nl-BE"]=C["fr-BE"],C["fr-CA"]=C["en-CA"],/[-\\\/!@#$%\^&\*\(\)\+\=\[\]]+/g),N={"de-AT":E,"de-DE":/[\/\\]/g,"fr-BE":E};N["nl-BE"]=N["fr-BE"];var F={"am-AM":/^(\+?374|0)(33|4[134]|55|77|88|9[13-689])\d{6}$/,"ar-AE":/^((\+?971)|0)?5[024568]\d{7}$/,"ar-BH":/^(\+?973)?(3|6)\d{7}$/,"ar-DZ":/^(\+?213|0)(5|6|7)\d{8}$/,"ar-LB":/^(\+?961)?((3|81)\d{6}|7\d{7})$/,"ar-EG":/^((\+?20)|0)?1[0125]\d{8}$/,"ar-IQ":/^(\+?964|0)?7[0-9]\d{8}$/,"ar-JO":/^(\+?962|0)?7[789]\d{7}$/,"ar-KW":/^(\+?965)([569]\d{7}|41\d{6})$/,"ar-LY":/^((\+?218)|0)?(9[1-6]\d{7}|[1-8]\d{7,9})$/,"ar-MA":/^(?:(?:\+|00)212|0)[5-7]\d{8}$/,"ar-OM":/^((\+|00)968)?([79][1-9])\d{6}$/,"ar-PS":/^(\+?970|0)5[6|9](\d{7})$/,"ar-SA":/^(!?(\+?966)|0)?5\d{8}$/,"ar-SD":/^((\+?249)|0)?(9[012369]|1[012])\d{7}$/,"ar-SY":/^(!?(\+?963)|0)?9\d{8}$/,"ar-TN":/^(\+?216)?[2459]\d{7}$/,"az-AZ":/^(\+994|0)(10|5[015]|7[07]|99)\d{7}$/,"bs-BA":/^((((\+|00)3876)|06))((([0-3]|[5-6])\d{6})|(4\d{7}))$/,"be-BY":/^(\+?375)?(24|25|29|33|44)\d{7}$/,"bg-BG":/^(\+?359|0)?8[789]\d{7}$/,"bn-BD":/^(\+?880|0)1[13456789][0-9]{8}$/,"ca-AD":/^(\+376)?[346]\d{5}$/,"cs-CZ":/^(\+?420)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"da-DK":/^(\+?45)?\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}$/,"de-DE":/^((\+49|0)1)(5[0-25-9]\d|6([23]|0\d?)|7([0-57-9]|6\d))\d{7,9}$/,"de-AT":/^(\+43|0)\d{1,4}\d{3,12}$/,"de-CH":/^(\+41|0)([1-9])\d{1,9}$/,"de-LU":/^(\+352)?((6\d1)\d{6})$/,"dv-MV":/^(\+?960)?(7[2-9]|9[1-9])\d{5}$/,"el-GR":/^(\+?30|0)?6(8[5-9]|9(?![26])[0-9])\d{7}$/,"el-CY":/^(\+?357?)?(9(9|7|6|5|4)\d{6})$/,"en-AI":/^(\+?1|0)264(?:2(35|92)|4(?:6[1-2]|76|97)|5(?:3[6-9]|8[1-4])|7(?:2(4|9)|72))\d{4}$/,"en-AU":/^(\+?61|0)4\d{8}$/,"en-AG":/^(?:\+1|1)268(?:464|7(?:1[3-9]|[28]\d|3[0246]|64|7[0-689]))\d{4}$/,"en-BM":/^(\+?1)?441(((3|7)\d{6}$)|(5[0-3][0-9]\d{4}$)|(59\d{5}$))/,"en-BS":/^(\+?1[-\s]?|0)?\(?242\)?[-\s]?\d{3}[-\s]?\d{4}$/,"en-GB":/^(\+?44|0)7[1-9]\d{8}$/,"en-GG":/^(\+?44|0)1481\d{6}$/,"en-GH":/^(\+233|0)(20|50|24|54|27|57|26|56|23|53|28|55|59)\d{7}$/,"en-GY":/^(\+592|0)6\d{6}$/,"en-HK":/^(\+?852[-\s]?)?[456789]\d{3}[-\s]?\d{4}$/,"en-MO":/^(\+?853[-\s]?)?[6]\d{3}[-\s]?\d{4}$/,"en-IE":/^(\+?353|0)8[356789]\d{7}$/,"en-IN":/^(\+?91|0)?[6789]\d{9}$/,"en-JM":/^(\+?876)?\d{7}$/,"en-KE":/^(\+?254|0)(7|1)\d{8}$/,"fr-CF":/^(\+?236| ?)(70|75|77|72|21|22)\d{6}$/,"en-SS":/^(\+?211|0)(9[1257])\d{7}$/,"en-KI":/^((\+686|686)?)?( )?((6|7)(2|3|8)[0-9]{6})$/,"en-KN":/^(?:\+1|1)869(?:46\d|48[89]|55[6-8]|66\d|76[02-7])\d{4}$/,"en-LS":/^(\+?266)(22|28|57|58|59|27|52)\d{6}$/,"en-MT":/^(\+?356|0)?(99|79|77|21|27|22|25)[0-9]{6}$/,"en-MU":/^(\+?230|0)?\d{8}$/,"en-MW":/^(\+?265|0)(((77|88|31|99|98|21)\d{7})|(((111)|1)\d{6})|(32000\d{4}))$/,"en-NA":/^(\+?264|0)(6|8)\d{7}$/,"en-NG":/^(\+?234|0)?[789]\d{9}$/,"en-NZ":/^(\+?64|0)[28]\d{7,9}$/,"en-PG":/^(\+?675|0)?(7\d|8[18])\d{6}$/,"en-PK":/^((00|\+)?92|0)3[0-6]\d{8}$/,"en-PH":/^(09|\+639)\d{9}$/,"en-RW":/^(\+?250|0)?[7]\d{8}$/,"en-SG":/^(\+65)?[3689]\d{7}$/,"en-SL":/^(\+?232|0)\d{8}$/,"en-TZ":/^(\+?255|0)?[67]\d{8}$/,"en-UG":/^(\+?256|0)?[7]\d{8}$/,"en-US":/^((\+1|1)?( |-)?)?(\([2-9][0-9]{2}\)|[2-9][0-9]{2})( |-)?([2-9][0-9]{2}( |-)?[0-9]{4})$/,"en-ZA":/^(\+?27|0)\d{9}$/,"en-ZM":/^(\+?26)?0[79][567]\d{7}$/,"en-ZW":/^(\+263)[0-9]{9}$/,"en-BW":/^(\+?267)?(7[1-8]{1})\d{6}$/,"es-AR":/^\+?549(11|[2368]\d)\d{8}$/,"es-BO":/^(\+?591)?(6|7)\d{7}$/,"es-CO":/^(\+?57)?3(0(0|1|2|4|5)|1\d|2[0-4]|5(0|1))\d{7}$/,"es-CL":/^(\+?56|0)[2-9]\d{1}\d{7}$/,"es-CR":/^(\+506)?[2-8]\d{7}$/,"es-CU":/^(\+53|0053)?5\d{7}$/,"es-DO":/^(\+?1)?8[024]9\d{7}$/,"es-HN":/^(\+?504)?[9|8|3|2]\d{7}$/,"es-EC":/^(\+?593|0)([2-7]|9[2-9])\d{7}$/,"es-ES":/^(\+?34)?[6|7]\d{8}$/,"es-GT":/^(\+?502)?[2|6|7]\d{7}$/,"es-PE":/^(\+?51)?9\d{8}$/,"es-MX":/^(\+?52)?(1|01)?\d{10,11}$/,"es-NI":/^(\+?505)\d{7,8}$/,"es-PA":/^(\+?507)\d{7,8}$/,"es-PY":/^(\+?595|0)9[9876]\d{7}$/,"es-SV":/^(\+?503)?[67]\d{7}$/,"es-UY":/^(\+598|0)9[1-9][\d]{6}$/,"es-VE":/^(\+?58)?(2|4)\d{9}$/,"et-EE":/^(\+?372)?\s?(5|8[1-4])\s?([0-9]\s?){6,7}$/,"fa-IR":/^(\+?98[\-\s]?|0)9[0-39]\d[\-\s]?\d{3}[\-\s]?\d{4}$/,"fi-FI":/^(\+?358|0)\s?(4[0-6]|50)\s?(\d\s?){4,8}$/,"fj-FJ":/^(\+?679)?\s?\d{3}\s?\d{4}$/,"fo-FO":/^(\+?298)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"fr-BF":/^(\+226|0)[67]\d{7}$/,"fr-BJ":/^(\+229)\d{8}$/,"fr-CD":/^(\+?243|0)?(8|9)\d{8}$/,"fr-CM":/^(\+?237)6[0-9]{8}$/,"fr-FR":/^(\+?33|0)[67]\d{8}$/,"fr-GF":/^(\+?594|0|00594)[67]\d{8}$/,"fr-GP":/^(\+?590|0|00590)[67]\d{8}$/,"fr-MQ":/^(\+?596|0|00596)[67]\d{8}$/,"fr-PF":/^(\+?689)?8[789]\d{6}$/,"fr-RE":/^(\+?262|0|00262)[67]\d{8}$/,"fr-WF":/^(\+681)?\d{6}$/,"he-IL":/^(\+972|0)([23489]|5[012345689]|77)[1-9]\d{6}$/,"hu-HU":/^(\+?36|06)(20|30|31|50|70)\d{7}$/,"id-ID":/^(\+?62|0)8(1[123456789]|2[1238]|3[1238]|5[12356789]|7[78]|9[56789]|8[123456789])([\s?|\d]{5,11})$/,"ir-IR":/^(\+98|0)?9\d{9}$/,"it-IT":/^(\+?39)?\s?3\d{2} ?\d{6,7}$/,"it-SM":/^((\+378)|(0549)|(\+390549)|(\+3780549))?6\d{5,9}$/,"ja-JP":/^(\+81[ \-]?(\(0\))?|0)[6789]0[ \-]?\d{4}[ \-]?\d{4}$/,"ka-GE":/^(\+?995)?(79\d{7}|5\d{8})$/,"kk-KZ":/^(\+?7|8)?7\d{9}$/,"kl-GL":/^(\+?299)?\s?\d{2}\s?\d{2}\s?\d{2}$/,"ko-KR":/^((\+?82)[ \-]?)?0?1([0|1|6|7|8|9]{1})[ \-]?\d{3,4}[ \-]?\d{4}$/,"ky-KG":/^(\+996\s?)?(22[0-9]|50[0-9]|55[0-9]|70[0-9]|75[0-9]|77[0-9]|880|990|995|996|997|998)\s?\d{3}\s?\d{3}$/,"lt-LT":/^(\+370|8)\d{8}$/,"lv-LV":/^(\+?371)2\d{7}$/,"mg-MG":/^((\+?261|0)(2|3)\d)?\d{7}$/,"mn-MN":/^(\+|00|011)?976(77|81|88|91|94|95|96|99)\d{6}$/,"my-MM":/^(\+?959|09|9)(2[5-7]|3[1-2]|4[0-5]|6[6-9]|7[5-9]|9[6-9])[0-9]{7}$/,"ms-MY":/^(\+?60|0)1(([0145](-|\s)?\d{7,8})|([236-9](-|\s)?\d{7}))$/,"mz-MZ":/^(\+?258)?8[234567]\d{7}$/,"nb-NO":/^(\+?47)?[49]\d{7}$/,"ne-NP":/^(\+?977)?9[78]\d{8}$/,"nl-BE":/^(\+?32|0)4\d{8}$/,"nl-NL":/^(((\+|00)?31\(0\))|((\+|00)?31)|0)6{1}\d{8}$/,"nl-AW":/^(\+)?297(56|59|64|73|74|99)\d{5}$/,"nn-NO":/^(\+?47)?[49]\d{7}$/,"pl-PL":/^(\+?48)? ?([5-8]\d|45) ?\d{3} ?\d{2} ?\d{2}$/,"pt-BR":/^((\+?55\ ?[1-9]{2}\ ?)|(\+?55\ ?\([1-9]{2}\)\ ?)|(0[1-9]{2}\ ?)|(\([1-9]{2}\)\ ?)|([1-9]{2}\ ?))((\d{4}\-?\d{4})|(9[1-9]{1}\d{3}\-?\d{4}))$/,"pt-PT":/^(\+?351)?9[1236]\d{7}$/,"pt-AO":/^(\+?244)?9\d{8}$/,"ro-MD":/^(\+?373|0)((6(0|1|2|6|7|8|9))|(7(6|7|8|9)))\d{6}$/,"ro-RO":/^(\+?40|0)\s?7\d{2}(\/|\s|\.|-)?\d{3}(\s|\.|-)?\d{3}$/,"ru-RU":/^(\+?7|8)?9\d{9}$/,"si-LK":/^(?:0|94|\+94)?(7(0|1|2|4|5|6|7|8)( |-)?)\d{7}$/,"sl-SI":/^(\+386\s?|0)(\d{1}\s?\d{3}\s?\d{2}\s?\d{2}|\d{2}\s?\d{3}\s?\d{3})$/,"sk-SK":/^(\+?421)? ?[1-9][0-9]{2} ?[0-9]{3} ?[0-9]{3}$/,"so-SO":/^(\+?252|0)((6[0-9])\d{7}|(7[1-9])\d{7})$/,"sq-AL":/^(\+355|0)6[2-9]\d{7}$/,"sr-RS":/^(\+3816|06)[- \d]{5,9}$/,"sv-SE":/^(\+?46|0)[\s\-]?7[\s\-]?[02369]([\s\-]?\d){7}$/,"tg-TJ":/^(\+?992)?[5][5]\d{7}$/,"th-TH":/^(\+66|66|0)\d{9}$/,"tr-TR":/^(\+?90|0)?5\d{9}$/,"tk-TM":/^(\+993|993|8)\d{8}$/,"uk-UA":/^(\+?38)?0(50|6[36-8]|7[357]|9[1-9])\d{7}$/,"uz-UZ":/^(\+?998)?(6[125-79]|7[1-69]|88|9\d)\d{7}$/,"vi-VN":/^((\+?84)|0)((3([2-9]))|(5([25689]))|(7([0|6-9]))|(8([1-9]))|(9([0-9])))([0-9]{7})$/,"zh-CN":/^((\+|00)86)?(1[3-9]|9[28])\d{9}$/,"zh-TW":/^(\+?886\-?|0)?9\d{8}$/,"dz-BT":/^(\+?975|0)?(17|16|77|02)\d{6}$/,"ar-YE":/^(((\+|00)9677|0?7)[0137]\d{7}|((\+|00)967|0)[1-7]\d{6})$/,"ar-EH":/^(\+?212|0)[\s\-]?(5288|5289)[\s\-]?\d{5}$/,"fa-AF":/^(\+93|0)?(2{1}[0-8]{1}|[3-5]{1}[0-4]{1})(\d{7})$/,"mk-MK":/^(\+?389|0)?((?:2[2-9]\d{6}|(?:3[1-4]|4[2-8])\d{6}|500\d{5}|5[2-9]\d{6}|7[0-9][2-9]\d{5}|8[1-9]\d{6}|800\d{5}|8009\d{4}))$/};F["en-CA"]=F["en-US"],F["fr-CA"]=F["en-CA"],F["fr-BE"]=F["nl-BE"],F["zh-HK"]=F["en-HK"],F["zh-MO"]=F["en-MO"],F["ga-IE"]=F["en-IE"],F["fr-CH"]=F["de-CH"],F["it-CH"]=F["fr-CH"];var E=Object.keys(F),Ge=/^(0x)[0-9a-f]{40}$/i;var Pe={symbol:"$",require_symbol:!1,allow_space_after_symbol:!1,symbol_after_digits:!1,allow_negatives:!0,parens_for_negatives:!1,negative_sign_before_digits:!1,negative_sign_after_digits:!1,allow_negative_sign_placeholder:!1,thousands_separator:",",decimal_separator:".",allow_decimal:!0,require_decimal:!1,digits_after_decimal:[2],allow_space_after_digits:!1};var Oe=/^(bc1|tb1|bc1p|tb1p)[ac-hj-np-z02-9]{39,58}$/,He=/^(1|2|3|m)[A-HJ-NP-Za-km-z1-9]{25,39}$/;var _e=/^[A-Z]{3}(U[0-9]{7})|([J,Z][0-9]{6,7})$/,Ue=/^[0-9]$/;function we(t){if(u(t),t=t.toUpperCase(),!_e.test(t))return!1;if(11!==t.length)return!0;for(var e,r=0,n=0;n<t.length-1;n++)Ue.test(t[n])?r+=t[n]*Math.pow(2,n):r+=((e=t.charCodeAt(n)-55)<11?e:11<=e&&e<=20?12+e%11:21<=e&&e<=30?23+e%21:34+e%31)*Math.pow(2,n);var a=r%11;return 10===a&&(a=0),Number(t[t.length-1])===a}var Ke=we,ye=new Set(["aa","ab","ae","af","ak","am","an","ar","as","av","ay","az","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu"]);var We=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,xe=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/;var D=/([01][0-9]|2[0-3])/,T=/[0-5][0-9]/,b=new RegExp("[-+]".concat(D.source,":").concat(T.source)),b=new RegExp("([zZ]|".concat(b.source,")")),D=new RegExp("".concat(D.source,":").concat(T.source,":").concat(/([0-5][0-9]|60)/.source).concat(/(\.[0-9]+)?/.source)),T=new RegExp("".concat(/[0-9]{4}/.source,"-").concat(/(0[1-9]|1[0-2])/.source,"-").concat(/([12]\d|0[1-9]|3[01])/.source)),D=new RegExp("".concat(D.source).concat(b.source)),ke=new RegExp("^".concat(T.source,"[ tT]").concat(D.source,"$"));var Ye=new Set(["Adlm","Afak","Aghb","Ahom","Arab","Aran","Armi","Armn","Avst","Bali","Bamu","Bass","Batk","Beng","Bhks","Blis","Bopo","Brah","Brai","Bugi","Buhd","Cakm","Cans","Cari","Cham","Cher","Chis","Chrs","Cirt","Copt","Cpmn","Cprt","Cyrl","Cyrs","Deva","Diak","Dogr","Dsrt","Dupl","Egyd","Egyh","Egyp","Elba","Elym","Ethi","Gara","Geok","Geor","Glag","Gong","Gonm","Goth","Gran","Grek","Gujr","Gukh","Guru","Hanb","Hang","Hani","Hano","Hans","Hant","Hatr","Hebr","Hira","Hluw","Hmng","Hmnp","Hrkt","Hung","Inds","Ital","Jamo","Java","Jpan","Jurc","Kali","Kana","Kawi","Khar","Khmr","Khoj","Kitl","Kits","Knda","Kore","Kpel","Krai","Kthi","Lana","Laoo","Latf","Latg","Latn","Leke","Lepc","Limb","Lina","Linb","Lisu","Loma","Lyci","Lydi","Mahj","Maka","Mand","Mani","Marc","Maya","Medf","Mend","Merc","Mero","Mlym","Modi","Mong","Moon","Mroo","Mtei","Mult","Mymr","Nagm","Nand","Narb","Nbat","Newa","Nkdb","Nkgb","Nkoo","Nshu","Ogam","Olck","Onao","Orkh","Orya","Osge","Osma","Ougr","Palm","Pauc","Pcun","Pelm","Perm","Phag","Phli","Phlp","Phlv","Phnx","Plrd","Piqd","Prti","Psin","Qaaa","Qaab","Qaac","Qaad","Qaae","Qaaf","Qaag","Qaah","Qaai","Qaaj","Qaak","Qaal","Qaam","Qaan","Qaao","Qaap","Qaaq","Qaar","Qaas","Qaat","Qaau","Qaav","Qaaw","Qaax","Qaay","Qaaz","Qaba","Qabb","Qabc","Qabd","Qabe","Qabf","Qabg","Qabh","Qabi","Qabj","Qabk","Qabl","Qabm","Qabn","Qabo","Qabp","Qabq","Qabr","Qabs","Qabt","Qabu","Qabv","Qabw","Qabx","Ranj","Rjng","Rohg","Roro","Runr","Samr","Sara","Sarb","Saur","Sgnw","Shaw","Shrd","Shui","Sidd","Sidt","Sind","Sinh","Sogd","Sogo","Sora","Soyo","Sund","Sunu","Sylo","Syrc","Syre","Syrj","Syrn","Tagb","Takr","Tale","Talu","Taml","Tang","Tavt","Tayo","Telu","Teng","Tfng","Tglg","Thaa","Thai","Tibt","Tirh","Tnsa","Todr","Tols","Toto","Tutg","Ugar","Vaii","Visp","Vith","Wara","Wcho","Wole","Xpeo","Xsux","Yezi","Yiii","Zanb","Zinh","Zmth","Zsye","Zsym","Zxxx","Zyyy","Zzzz"]);var Ve=new Set(["AFG","ALA","ALB","DZA","ASM","AND","AGO","AIA","ATA","ATG","ARG","ARM","ABW","AUS","AUT","AZE","BHS","BHR","BGD","BRB","BLR","BEL","BLZ","BEN","BMU","BTN","BOL","BES","BIH","BWA","BVT","BRA","IOT","BRN","BGR","BFA","BDI","KHM","CMR","CAN","CPV","CYM","CAF","TCD","CHL","CHN","CXR","CCK","COL","COM","COG","COD","COK","CRI","CIV","HRV","CUB","CUW","CYP","CZE","DNK","DJI","DMA","DOM","ECU","EGY","SLV","GNQ","ERI","EST","ETH","FLK","FRO","FJI","FIN","FRA","GUF","PYF","ATF","GAB","GMB","GEO","DEU","GHA","GIB","GRC","GRL","GRD","GLP","GUM","GTM","GGY","GIN","GNB","GUY","HTI","HMD","VAT","HND","HKG","HUN","ISL","IND","IDN","IRN","IRQ","IRL","IMN","ISR","ITA","JAM","JPN","JEY","JOR","KAZ","KEN","KIR","PRK","KOR","KWT","KGZ","LAO","LVA","LBN","LSO","LBR","LBY","LIE","LTU","LUX","MAC","MKD","MDG","MWI","MYS","MDV","MLI","MLT","MHL","MTQ","MRT","MUS","MYT","MEX","FSM","MDA","MCO","MNG","MNE","MSR","MAR","MOZ","MMR","NAM","NRU","NPL","NLD","NCL","NZL","NIC","NER","NGA","NIU","NFK","MNP","NOR","OMN","PAK","PLW","PSE","PAN","PNG","PRY","PER","PHL","PCN","POL","PRT","PRI","QAT","REU","ROU","RUS","RWA","BLM","SHN","KNA","LCA","MAF","SPM","VCT","WSM","SMR","STP","SAU","SEN","SRB","SYC","SLE","SGP","SXM","SVK","SVN","SLB","SOM","ZAF","SGS","SSD","ESP","LKA","SDN","SUR","SJM","SWZ","SWE","CHE","SYR","TWN","TJK","TZA","THA","TLS","TGO","TKL","TON","TTO","TUN","TUR","TKM","TCA","TUV","UGA","UKR","ARE","GBR","USA","UMI","URY","UZB","VUT","VEN","VNM","VGB","VIR","WLF","ESH","YEM","ZMB","ZWE"]);var ze=new Set(["004","008","010","012","016","020","024","028","031","032","036","040","044","048","050","051","052","056","060","064","068","070","072","074","076","084","086","090","092","096","100","104","108","112","116","120","124","132","136","140","144","148","152","156","158","162","166","170","174","175","178","180","184","188","191","192","196","203","204","208","212","214","218","222","226","231","232","233","234","238","239","242","246","248","250","254","258","260","262","266","268","270","275","276","288","292","296","300","304","308","312","316","320","324","328","332","334","336","340","344","348","352","356","360","364","368","372","376","380","384","388","392","398","400","404","408","410","414","417","418","422","426","428","430","434","438","440","442","446","450","454","458","462","466","470","474","478","480","484","492","496","498","499","500","504","508","512","516","520","524","528","531","533","534","535","540","548","554","558","562","566","570","574","578","580","581","583","584","585","586","591","598","600","604","608","612","616","620","624","626","630","634","638","642","643","646","652","654","659","660","662","663","666","670","674","678","682","686","688","690","694","702","703","704","705","706","710","716","724","728","729","732","740","744","748","752","756","760","762","764","768","772","776","780","784","788","792","795","796","798","800","804","807","818","826","831","832","833","834","840","850","854","858","860","862","876","882","887","894"]);var Qe=new Set(["AED","AFN","ALL","AMD","ANG","AOA","ARS","AUD","AWG","AZN","BAM","BBD","BDT","BGN","BHD","BIF","BMD","BND","BOB","BOV","BRL","BSD","BTN","BWP","BYN","BZD","CAD","CDF","CHE","CHF","CHW","CLF","CLP","CNY","COP","COU","CRC","CUP","CVE","CZK","DJF","DKK","DOP","DZD","EGP","ERN","ETB","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GMD","GNF","GTQ","GYD","HKD","HNL","HTG","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","JPY","KES","KGS","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LSL","LYD","MAD","MDL","MGA","MKD","MMK","MNT","MOP","MRU","MUR","MVR","MWK","MXN","MXV","MYR","MZN","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PAB","PEN","PGK","PHP","PKR","PLN","PYG","QAR","RON","RSD","RUB","RWF","SAR","SBD","SCR","SDG","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STN","SVC","SYP","SZL","THB","TJS","TMT","TND","TOP","TRY","TTD","TWD","TZS","UAH","UGX","USD","USN","UYI","UYU","UYW","UZS","VED","VES","VND","VUV","WST","XAF","XAG","XAU","XBA","XBB","XBC","XBD","XCD","XDR","XOF","XPD","XPF","XPT","XSU","XTS","XUA","XXX","YER","ZAR","ZMW","ZWL"]);var je=/^[A-Z2-7]+=*$/,Je=/^[A-HJKMNP-TV-Z0-9]+$/,Xe={crockford:!1};var qe=/^[A-HJ-NP-Za-km-z1-9]*$/;var tr=/^[a-z]+\/[a-z0-9\-\+\._]+$/i,er=/^[a-z\-]+=[a-z0-9\-]+$/i,rr=/^[a-z0-9!\$&'\(\)\*\+,;=\-\._~:@\/\?%\s]*$/i;var nr=/(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;function ar(t,e){if(u(t),e)return e=new RegExp("[".concat(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"]+$"),"g"),t.replace(e,"");for(var r=t.length-1;/\s/.test(t.charAt(r));)--r;return t.slice(0,r+1)}function ir(t,e){u(t);e=e?new RegExp("^[".concat(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"]+"),"g"):/^\s+/g;return t.replace(e,"")}function or(t,e){return ar(ir(t,e),e)}var sr=/^(application|audio|font|image|message|model|multipart|text|video)\/[a-zA-Z0-9\.\-\+_]{1,100}$/i,cr=/^text\/[a-zA-Z0-9\.\-\+]{1,100};\s?charset=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?$/i,ur=/^multipart\/[a-zA-Z0-9\.\-\+]{1,100}(;\s?(boundary|charset)=("[a-zA-Z0-9\.\-\+\s]{0,70}"|[a-zA-Z0-9\.\-\+]{0,70})(\s?\([a-zA-Z0-9\.\-\+\s]{1,20}\))?){0,2}$/i;var lr=/^\(?[+-]?(90(\.0+)?|[1-8]?\d(\.\d+)?)$/,dr=/^\s?[+-]?(180(\.0+)?|1[0-7]\d(\.\d+)?|\d{1,2}(\.\d+)?)\)?$/,fr=/^(([1-8]?\d)\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|90\D+0\D+0)\D+[NSns]?$/i,Ar=/^\s*([1-7]?\d{1,2}\D+([1-5]?\d|60)\D+([1-5]?\d|60)(\.\d+)?|180\D+0\D+0)\D+[EWew]?$/i,$r={checkDMS:!1};var b=/^\d{3}$/,T=/^\d{4}$/,D=/^\d{5}$/,pr=/^\d{6}$/,G={AD:/^AD\d{3}$/,AT:T,AU:T,AZ:/^AZ\d{4}$/,BA:/^([7-8]\d{4}$)/,BD:/^([1-8][0-9]{3}|9[0-4][0-9]{2})$/,BE:T,BG:T,BR:/^\d{5}-?\d{3}$/,BY:/^2[1-4]\d{4}$/,CA:/^[ABCEGHJKLMNPRSTVXY]\d[ABCEGHJ-NPRSTV-Z][\s\-]?\d[ABCEGHJ-NPRSTV-Z]\d$/i,CH:T,CN:/^(0[1-7]|1[012356]|2[0-7]|3[0-6]|4[0-7]|5[1-7]|6[1-7]|7[1-5]|8[1345]|9[09])\d{4}$/,CO:/^(05|08|11|13|15|17|18|19|20|23|25|27|41|44|47|50|52|54|63|66|68|70|73|76|81|85|86|88|91|94|95|97|99)(\d{4})$/,CZ:/^\d{3}\s?\d{2}$/,DE:D,DK:T,DO:D,DZ:D,EE:D,ES:/^(5[0-2]{1}|[0-4]{1}\d{1})\d{3}$/,FI:D,FR:/^(?:(?:0[1-9]|[1-8]\d|9[0-5])\d{3}|97[1-46]\d{2})$/,GB:/^(gir\s?0aa|[a-z]{1,2}\d[\da-z]?\s?(\d[a-z]{2})?)$/i,GR:/^\d{3}\s?\d{2}$/,HR:/^([1-5]\d{4}$)/,HT:/^HT\d{4}$/,HU:T,ID:D,IE:/^(?!.*(?:o))[A-Za-z]\d[\dw]\s\w{4}$/i,IL:/^(\d{5}|\d{7})$/,IN:/^((?!10|29|35|54|55|65|66|86|87|88|89)[1-9][0-9]{5})$/,IR:/^(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}$/,IS:b,IT:D,JP:/^\d{3}\-\d{4}$/,KE:D,KR:/^(\d{5}|\d{6})$/,LI:/^(948[5-9]|949[0-7])$/,LT:/^LT\-\d{5}$/,LU:T,LV:/^LV\-\d{4}$/,LK:D,MG:b,MX:D,MT:/^[A-Za-z]{3}\s{0,1}\d{4}$/,MY:D,NL:/^[1-9]\d{3}\s?(?!sa|sd|ss)[a-z]{2}$/i,NO:T,NP:/^(10|21|22|32|33|34|44|45|56|57)\d{3}$|^(977)$/i,NZ:T,PK:D,PL:/^\d{2}\-\d{3}$/,PR:/^00[679]\d{2}([ -]\d{4})?$/,PT:/^\d{4}\-\d{3}?$/,RO:pr,RU:pr,SA:D,SE:/^[1-9]\d{2}\s?\d{2}$/,SG:pr,SI:T,SK:/^\d{3}\s?\d{2}$/,TH:D,TN:T,TW:/^\d{3}(\d{2,3})?$/,UA:D,US:/^\d{5}(-\d{4})?$/,ZA:T,ZM:D},b=Object.keys(G);function hr(t,e){return u(t),t.replace(new RegExp("[".concat(e,"]+"),"g"),"")}var gr={all_lowercase:!0,gmail_lowercase:!0,gmail_remove_dots:!0,gmail_remove_subaddress:!0,gmail_convert_googlemaildotcom:!0,outlookdotcom_lowercase:!0,outlookdotcom_remove_subaddress:!0,yahoo_lowercase:!0,yahoo_remove_subaddress:!0,yandex_lowercase:!0,yandex_convert_yandexru:!0,icloud_lowercase:!0,icloud_remove_subaddress:!0},Sr=["icloud.com","me.com"],mr=["hotmail.at","hotmail.be","hotmail.ca","hotmail.cl","hotmail.co.il","hotmail.co.nz","hotmail.co.th","hotmail.co.uk","hotmail.com","hotmail.com.ar","hotmail.com.au","hotmail.com.br","hotmail.com.gr","hotmail.com.mx","hotmail.com.pe","hotmail.com.tr","hotmail.com.vn","hotmail.cz","hotmail.de","hotmail.dk","hotmail.es","hotmail.fr","hotmail.hu","hotmail.id","hotmail.ie","hotmail.in","hotmail.it","hotmail.jp","hotmail.kr","hotmail.lv","hotmail.my","hotmail.ph","hotmail.pt","hotmail.sa","hotmail.sg","hotmail.sk","live.be","live.co.uk","live.com","live.com.ar","live.com.mx","live.de","live.es","live.eu","live.fr","live.it","live.nl","msn.com","outlook.at","outlook.be","outlook.cl","outlook.co.il","outlook.co.nz","outlook.co.th","outlook.com","outlook.com.ar","outlook.com.au","outlook.com.br","outlook.com.gr","outlook.com.pe","outlook.com.tr","outlook.com.vn","outlook.cz","outlook.de","outlook.dk","outlook.es","outlook.fr","outlook.hu","outlook.id","outlook.ie","outlook.in","outlook.it","outlook.jp","outlook.kr","outlook.lv","outlook.my","outlook.ph","outlook.pt","outlook.sa","outlook.sg","outlook.sk","passport.com"],Zr=["rocketmail.com","yahoo.ca","yahoo.co.uk","yahoo.com","yahoo.de","yahoo.fr","yahoo.in","yahoo.it","ymail.com"],Er=["yandex.ru","yandex.ua","yandex.kz","yandex.com","yandex.by","ya.ru"];function Ir(t){return 1<t.length?t:""}var Rr=/^[^\s-_](?!.*?[-_]{2,})[a-z0-9-\\][^\s]*[^-_\s]$/;var P={"cs-CZ":function(t){return/^(([ABCDEFHIJKLMNPRSTUVXYZ]|[0-9])-?){5,8}$/.test(t)},"de-DE":function(t){return/^((A|AA|AB|AC|AE|AH|AK|AM|AN|AÖ|AP|AS|AT|AU|AW|AZ|B|BA|BB|BC|BE|BF|BH|BI|BK|BL|BM|BN|BO|BÖ|BS|BT|BZ|C|CA|CB|CE|CO|CR|CW|D|DA|DD|DE|DH|DI|DL|DM|DN|DO|DU|DW|DZ|E|EA|EB|ED|EE|EF|EG|EH|EI|EL|EM|EN|ER|ES|EU|EW|F|FB|FD|FF|FG|FI|FL|FN|FO|FR|FS|FT|FÜ|FW|FZ|G|GA|GC|GD|GE|GF|GG|GI|GK|GL|GM|GN|GÖ|GP|GR|GS|GT|GÜ|GV|GW|GZ|H|HA|HB|HC|HD|HE|HF|HG|HH|HI|HK|HL|HM|HN|HO|HP|HR|HS|HU|HV|HX|HY|HZ|IK|IL|IN|IZ|J|JE|JL|K|KA|KB|KC|KE|KF|KG|KH|KI|KK|KL|KM|KN|KO|KR|KS|KT|KU|KW|KY|L|LA|LB|LC|LD|LF|LG|LH|LI|LL|LM|LN|LÖ|LP|LR|LU|M|MA|MB|MC|MD|ME|MG|MH|MI|MK|ML|MM|MN|MO|MQ|MR|MS|MÜ|MW|MY|MZ|N|NB|ND|NE|NF|NH|NI|NK|NM|NÖ|NP|NR|NT|NU|NW|NY|NZ|OA|OB|OC|OD|OE|OF|OG|OH|OK|OL|OP|OS|OZ|P|PA|PB|PE|PF|PI|PL|PM|PN|PR|PS|PW|PZ|R|RA|RC|RD|RE|RG|RH|RI|RL|RM|RN|RO|RP|RS|RT|RU|RV|RW|RZ|S|SB|SC|SE|SG|SI|SK|SL|SM|SN|SO|SP|SR|ST|SU|SW|SY|SZ|TE|TF|TG|TO|TP|TR|TS|TT|TÜ|ÜB|UE|UH|UL|UM|UN|V|VB|VG|VK|VR|VS|W|WA|WB|WE|WF|WI|WK|WL|WM|WN|WO|WR|WS|WT|WÜ|WW|WZ|Z|ZE|ZI|ZP|ZR|ZW|ZZ)[- ]?[A-Z]{1,2}[- ]?\d{1,4}|(ABG|ABI|AIB|AIC|ALF|ALZ|ANA|ANG|ANK|APD|ARN|ART|ASL|ASZ|AUR|AZE|BAD|BAR|BBG|BCH|BED|BER|BGD|BGL|BID|BIN|BIR|BIT|BIW|BKS|BLB|BLK|BNA|BOG|BOH|BOR|BOT|BRA|BRB|BRG|BRK|BRL|BRV|BSB|BSK|BTF|BÜD|BUL|BÜR|BÜS|BÜZ|CAS|CHA|CLP|CLZ|COC|COE|CUX|DAH|DAN|DAU|DBR|DEG|DEL|DGF|DIL|DIN|DIZ|DKB|DLG|DON|DUD|DÜW|EBE|EBN|EBS|ECK|EIC|EIL|EIN|EIS|EMD|EMS|ERB|ERH|ERK|ERZ|ESB|ESW|FDB|FDS|FEU|FFB|FKB|FLÖ|FOR|FRG|FRI|FRW|FTL|FÜS|GAN|GAP|GDB|GEL|GEO|GER|GHA|GHC|GLA|GMN|GNT|GOA|GOH|GRA|GRH|GRI|GRM|GRZ|GTH|GUB|GUN|GVM|HAB|HAL|HAM|HAS|HBN|HBS|HCH|HDH|HDL|HEB|HEF|HEI|HER|HET|HGN|HGW|HHM|HIG|HIP|HMÜ|HOG|HOH|HOL|HOM|HOR|HÖS|HOT|HRO|HSK|HST|HVL|HWI|IGB|ILL|JÜL|KEH|KEL|KEM|KIB|KLE|KLZ|KÖN|KÖT|KÖZ|KRU|KÜN|KUS|KYF|LAN|LAU|LBS|LBZ|LDK|LDS|LEO|LER|LEV|LIB|LIF|LIP|LÖB|LOS|LRO|LSZ|LÜN|LUP|LWL|MAB|MAI|MAK|MAL|MED|MEG|MEI|MEK|MEL|MER|MET|MGH|MGN|MHL|MIL|MKK|MOD|MOL|MON|MOS|MSE|MSH|MSP|MST|MTK|MTL|MÜB|MÜR|MYK|MZG|NAB|NAI|NAU|NDH|NEA|NEB|NEC|NEN|NES|NEW|NMB|NMS|NOH|NOL|NOM|NOR|NVP|NWM|OAL|OBB|OBG|OCH|OHA|ÖHR|OHV|OHZ|OPR|OSL|OVI|OVL|OVP|PAF|PAN|PAR|PCH|PEG|PIR|PLÖ|PRÜ|QFT|QLB|RDG|REG|REH|REI|RID|RIE|ROD|ROF|ROK|ROL|ROS|ROT|ROW|RSL|RÜD|RÜG|SAB|SAD|SAN|SAW|SBG|SBK|SCZ|SDH|SDL|SDT|SEB|SEE|SEF|SEL|SFB|SFT|SGH|SHA|SHG|SHK|SHL|SIG|SIM|SLE|SLF|SLK|SLN|SLS|SLÜ|SLZ|SMÜ|SOB|SOG|SOK|SÖM|SON|SPB|SPN|SRB|SRO|STA|STB|STD|STE|STL|SUL|SÜW|SWA|SZB|TBB|TDO|TET|TIR|TÖL|TUT|UEM|UER|UFF|USI|VAI|VEC|VER|VIB|VIE|VIT|VOH|WAF|WAK|WAN|WAR|WAT|WBS|WDA|WEL|WEN|WER|WES|WHV|WIL|WIS|WIT|WIZ|WLG|WMS|WND|WOB|WOH|WOL|WOR|WOS|WRN|WSF|WST|WSW|WTL|WTM|WUG|WÜM|WUN|WUR|WZL|ZEL|ZIG)[- ]?(([A-Z][- ]?\d{1,4})|([A-Z]{2}[- ]?\d{1,3})))[- ]?(E|H)?$/.test(t)},"de-LI":function(t){return/^FL[- ]?\d{1,5}[UZ]?$/.test(t)},"en-IN":function(t){return/^[A-Z]{2}[ -]?[0-9]{1,2}(?:[ -]?[A-Z])(?:[ -]?[A-Z]*)?[ -]?[0-9]{4}$/.test(t)},"en-SG":function(t){return/^[A-Z]{3}[ -]?[\d]{4}[ -]?[A-Z]{1}$/.test(t)},"es-AR":function(t){return/^(([A-Z]{2} ?[0-9]{3} ?[A-Z]{2})|([A-Z]{3} ?[0-9]{3}))$/.test(t)},"fi-FI":function(t){return/^(?=.{4,7})(([A-Z]{1,3}|[0-9]{1,3})[\s-]?([A-Z]{1,3}|[0-9]{1,5}))$/.test(t)},"hu-HU":function(t){return/^((((?!AAA)(([A-NPRSTVZWXY]{1})([A-PR-Z]{1})([A-HJ-NPR-Z]))|(A[ABC]I)|A[ABC]O|A[A-W]Q|BPI|BPO|UCO|UDO|XAO)-(?!000)\d{3})|(M\d{6})|((CK|DT|CD|HC|H[ABEFIKLMNPRSTVX]|MA|OT|R[A-Z]) \d{2}-\d{2})|(CD \d{3}-\d{3})|(C-(C|X) \d{4})|(X-(A|B|C) \d{4})|(([EPVZ]-\d{5}))|(S A[A-Z]{2} \d{2})|(SP \d{2}-\d{2}))$/.test(t)},"pt-BR":function(t){return/^[A-Z]{3}[ -]?[0-9][A-Z][0-9]{2}|[A-Z]{3}[ -]?[0-9]{4}$/.test(t)},"pt-PT":function(t){return/^(([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[A-Z]{2}[ -·]?[0-9]{2})|([0-9]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2})|([A-Z]{2}[ -·]?[0-9]{2}[ -·]?[A-Z]{2}))$/.test(t)},"sq-AL":function(t){return/^[A-Z]{2}[- ]?((\d{3}[- ]?(([A-Z]{2})|T))|(R[- ]?\d{3}))$/.test(t)},"sv-SE":function(t){return/^[A-HJ-PR-UW-Z]{3} ?[\d]{2}[A-HJ-PR-UW-Z1-9]$|(^[A-ZÅÄÖ ]{2,7}$)/.test(t.trim())},"en-PK":function(t){return/(^[A-Z]{2}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{3}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]{4}((\s|-){0,1})[0-9]{3,4}((\s|-)[0-9]{2}){0,1}$)|(^[A-Z]((\s|-){0,1})[0-9]{4}((\s|-)[0-9]{2}){0,1}$)/.test(t.trim())}};var vr=/^[A-Z]$/,Lr=/^[a-z]$/,Mr=/^[0-9]$/,Br=/^[-#!$@£%^&*()_+|~=`{}\[\]:";'<>?,.\/\\ ]$/,Cr={minLength:8,minLowercase:1,minUppercase:1,minNumbers:1,minSymbols:1,returnScore:!1,pointsPerUnique:1,pointsPerRepeat:.5,pointsForContainingLower:10,pointsForContainingUpper:10,pointsForContainingNumber:10,pointsForContainingSymbol:10};function Nr(t){e={},Array.from(t).forEach(function(t){e[t]?e[t]+=1:e[t]=1});var e,r=e,n={length:t.length,uniqueChars:Object.keys(r).length,uppercaseCount:0,lowercaseCount:0,numberCount:0,symbolCount:0};return Object.keys(r).forEach(function(t){vr.test(t)?n.uppercaseCount+=r[t]:Lr.test(t)?n.lowercaseCount+=r[t]:Mr.test(t)?n.numberCount+=r[t]:Br.test(t)&&(n.symbolCount+=r[t])}),n}var Fr={AT:function(t){return/^(AT)?U\d{8}$/.test(t)},BE:function(t){return/^(BE)?\d{10}$/.test(t)},BG:function(t){return/^(BG)?\d{9,10}$/.test(t)},HR:function(t){return/^(HR)?\d{11}$/.test(t)},CY:function(t){return/^(CY)?\w{9}$/.test(t)},CZ:function(t){return/^(CZ)?\d{8,10}$/.test(t)},DK:function(t){return/^(DK)?\d{8}$/.test(t)},EE:function(t){return/^(EE)?\d{9}$/.test(t)},FI:function(t){return/^(FI)?\d{8}$/.test(t)},FR:function(t){return/^(FR)?\w{2}\d{9}$/.test(t)},DE:function(t){return/^(DE)?\d{9}$/.test(t)},EL:function(t){return/^(EL)?\d{9}$/.test(t)},HU:function(t){return/^(HU)?\d{8}$/.test(t)},IE:function(t){return/^(IE)?\d{7}\w{1}(W)?$/.test(t)},IT:function(t){return/^(IT)?\d{11}$/.test(t)},LV:function(t){return/^(LV)?\d{11}$/.test(t)},LT:function(t){return/^(LT)?\d{9,12}$/.test(t)},LU:function(t){return/^(LU)?\d{8}$/.test(t)},MT:function(t){return/^(MT)?\d{8}$/.test(t)},NL:function(t){return/^(NL)?\d{9}B\d{2}$/.test(t)},PL:function(t){return/^(PL)?(\d{10}|(\d{3}-\d{3}-\d{2}-\d{2})|(\d{3}-\d{2}-\d{2}-\d{3}))$/.test(t)},PT:function(t){var e,t=t.match(/^(PT)?(\d{9})$/);return!!t&&(9<(e=11-M((t=t[2]).split("").slice(0,8).map(function(t){return parseInt(t,10)}),9)%11)?0===parseInt(t[8],10):e===parseInt(t[8],10))},RO:function(t){return/^(RO)?\d{2,10}$/.test(t)},SK:function(t){return/^(SK)?\d{10}$/.test(t)},SI:function(t){return/^(SI)?\d{8}$/.test(t)},ES:function(t){return/^(ES)?\w\d{7}[A-Z]$/.test(t)},SE:function(t){return/^(SE)?\d{12}$/.test(t)},AL:function(t){return/^(AL)?\w{9}[A-Z]$/.test(t)},MK:function(t){return/^(MK)?\d{13}$/.test(t)},AU:function(t){if(!t.match(/^(AU)?(\d{11})$/))return!1;for(var e=[10,1,3,5,7,9,11,13,15,17,19],r=(t=t.replace(/^AU/,""),(parseInt(t.slice(0,1),10)-1).toString()+t.slice(1)),n=0,a=0;a<11;a++)n+=e[a]*r.charAt(a);return 0!==n&&n%89==0},BY:function(t){return/^(УНП )?\d{9}$/.test(t)},CA:function(t){return/^(CA)?\d{9}$/.test(t)},IS:function(t){return/^(IS)?\d{5,6}$/.test(t)},IN:function(t){return/^(IN)?\d{15}$/.test(t)},ID:function(t){return/^(ID)?(\d{15}|(\d{2}.\d{3}.\d{3}.\d{1}-\d{3}.\d{3}))$/.test(t)},IL:function(t){return/^(IL)?\d{9}$/.test(t)},KZ:function(t){return/^(KZ)?\d{12}$/.test(t)},NZ:function(t){return/^(NZ)?\d{9}$/.test(t)},NG:function(t){return/^(NG)?(\d{12}|(\d{8}-\d{4}))$/.test(t)},NO:function(t){return/^(NO)?\d{9}MVA$/.test(t)},PH:function(t){return/^(PH)?(\d{12}|\d{3} \d{3} \d{3} \d{3})$/.test(t)},RU:function(t){return/^(RU)?(\d{10}|\d{12})$/.test(t)},SM:function(t){return/^(SM)?\d{5}$/.test(t)},SA:function(t){return/^(SA)?\d{15}$/.test(t)},RS:function(t){return/^(RS)?\d{9}$/.test(t)},CH:function(t){var e,n;return/^(CHE[- ]?)?(\d{9}|(\d{3}\.\d{3}\.\d{3})|(\d{3} \d{3} \d{3})) ?(TVA|MWST|IVA)?$/.test(t)&&(t=t.match(/\d/g).map(function(t){return+t}),e=t.pop(),n=[5,4,3,2,7,6,5,4],e===(11-t.reduce(function(t,e,r){return t+e*n[r]},0)%11)%11)},TR:function(t){return/^(TR)?\d{10}$/.test(t)},UA:function(t){return/^(UA)?\d{12}$/.test(t)},GB:function(t){return/^GB((\d{3} \d{4} ([0-8][0-9]|9[0-6]))|(\d{9} \d{3})|(((GD[0-4])|(HA[5-9]))[0-9]{2}))$/.test(t)},UZ:function(t){return/^(UZ)?\d{9}$/.test(t)},AR:function(t){return/^(AR)?\d{11}$/.test(t)},BO:function(t){return/^(BO)?\d{7}$/.test(t)},BR:function(t){return/^(BR)?((\d{2}.\d{3}.\d{3}\/\d{4}-\d{2})|(\d{3}.\d{3}.\d{3}-\d{2}))$/.test(t)},CL:function(t){return/^(CL)?\d{8}-\d{1}$/.test(t)},CO:function(t){return/^(CO)?\d{10}$/.test(t)},CR:function(t){return/^(CR)?\d{9,12}$/.test(t)},EC:function(t){return/^(EC)?\d{13}$/.test(t)},SV:function(t){return/^(SV)?\d{4}-\d{6}-\d{3}-\d{1}$/.test(t)},GT:function(t){return/^(GT)?\d{7}-\d{1}$/.test(t)},HN:function(t){return/^(HN)?$/.test(t)},MX:function(t){return/^(MX)?\w{3,4}\d{6}\w{3}$/.test(t)},NI:function(t){return/^(NI)?\d{3}-\d{6}-\d{4}\w{1}$/.test(t)},PA:function(t){return/^(PA)?$/.test(t)},PY:function(t){return/^(PY)?\d{6,8}-\d{1}$/.test(t)},PE:function(t){return/^(PE)?\d{11}$/.test(t)},DO:function(t){return/^(DO)?(\d{11}|(\d{3}-\d{7}-\d{1})|[1,4,5]{1}\d{8}|([1,4,5]{1})-\d{2}-\d{5}-\d{1})$/.test(t)},UY:function(t){return/^(UY)?\d{12}$/.test(t)},VE:function(t){return/^(VE)?[J,G,V,E]{1}-(\d{9}|(\d{8}-\d{1}))$/.test(t)}};return{version:"13.15.15",toDate:r,toFloat:j,toInt:function(t,e){return u(t),parseInt(t,e||10)},toBoolean:function(t,e){return u(t),e?"1"===t||/^true$/i.test(t):"0"!==t&&!/^false$/i.test(t)&&""!==t},equals:function(t,e){return u(t),t===e},contains:function(t,e,r){return u(t),(r=f(r,rt)).ignoreCase?t.toLowerCase().split(et(e).toLowerCase()).length>r.minOccurrences:t.split(et(e)).length>r.minOccurrences},matches:function(t,e,r){return u(t),"[object RegExp]"!==Object.prototype.toString.call(e)&&(e=new RegExp(e,r)),!!t.match(e)},isEmail:$t,isURL:function(t,e){if(u(t),!t||/[\s<>]/.test(t))return!1;if(0===t.indexOf("mailto:"))return!1;if((e=f(e,pt)).validate_length&&t.length>e.max_allowed_length)return!1;if(!e.allow_fragments&&S(t,"#"))return!1;if(!e.allow_query_components&&(S(t,"?")||S(t,"&")))return!1;var r,n=t.split("#");if(1<(n=(t=(n=(t=n.shift()).split("?")).shift()).split("://")).length){if(i=n.shift().toLowerCase(),e.require_valid_protocol&&-1===e.protocols.indexOf(i))return!1}else{if(e.require_protocol)return!1;if("//"===t.slice(0,2)){if(!e.allow_protocol_relative_urls)return!1;n[0]=t.slice(2)}}if(""===(t=n.join("://")))return!1;if(""===(t=(n=t.split("/")).shift())&&!e.require_host)return!0;if(1<(n=t.split("@")).length){if(e.disallow_auth)return!1;if(""===n[0])return!1;if(0<=(i=n.shift()).indexOf(":")&&2<i.split(":").length)return!1;t=d(i.split(":"),2);if(""===t[0]&&""===t[1])return!1}var a,i=null,t=null,o=(a=n.join("@")).match(ht);if(o?(r="",t=o[1],i=o[2]||null):(r=(n=a.split(":")).shift(),n.length&&(i=n.join(":"))),null!==i&&0<i.length){if(o=parseInt(i,10),!/^[0-9]+$/.test(i)||o<=0||65535<o)return!1}else if(e.require_port)return!1;return e.host_whitelist?A(r,e.host_whitelist):""===r&&!e.require_host||!!(g(r)||at(r,e)||t&&g(t,6))&&(r=r||t,!e.host_blacklist||!A(r,e.host_blacklist))},isMACAddress:function t(e,r){return u(e),null!=r&&r.eui&&(r.eui=String(r.eui)),null!=r&&r.no_colons||null!=r&&r.no_separators?"48"===r.eui?St.test(e):"64"!==r.eui&&St.test(e)||Et.test(e):"48"===(null==r?void 0:r.eui)?gt.test(e)||mt.test(e):"64"===(null==r?void 0:r.eui)?Zt.test(e)||It.test(e):t(e,{eui:"48"})||t(e,{eui:"64"})},isIP:g,isIPRange:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"",r=(u(t),t.split("/"));if(2!==r.length)return!1;if(!Rt.test(r[1]))return!1;if(1<r[1].length&&r[1].startsWith("0"))return!1;if(!g(r[0],e))return!1;var n=null;switch(String(e)){case"4":n=32;break;case"6":n=128;break;default:n=g(r[0],"6")?128:32}return r[1]<=n&&0<=r[1]},isFQDN:at,isBoolean:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Bt;return u(t),e.loose?Z(Nt,t.toLowerCase()):Z(Ct,t)},isIBAN:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return u(t),oe(t,e)&&1===((e=(e=t).replace(/[^A-Z0-9]+/gi,"").toUpperCase()).slice(4)+e.slice(0,4)).replace(/[A-Z]/g,function(t){return t.charCodeAt(0)-55}).match(/\d{1,7}/g).reduce(function(t,e){return Number(t+e)%97},"")},isBIC:function(t){u(t);var e=t.slice(4,6).toUpperCase();return!(!ce.has(e)&&"XK"!==e)&&ue.test(t)},isAbaRouting:function(t){if(u(t),!Tt.test(t))return!1;for(var e=0,r=0;r<t.length;r++)e+=r%3==0?3*t[r]:r%3==1?7*t[r]:+t[r];return e%10==0},isAlpha:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"en-US",r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(u(t),r=r.ignore)if(r instanceof RegExp)t=t.replace(r,"");else{if("string"!=typeof r)throw new Error("ignore should be instance of a String or RegExp");t=t.replace(new RegExp("[".concat(r.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(e in n)return n[e].test(t);throw new Error("Invalid locale '".concat(e,"'"))},isAlphaLocales:h,isAlphanumeric:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"en-US",r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};if(u(t),r=r.ignore)if(r instanceof RegExp)t=t.replace(r,"");else{if("string"!=typeof r)throw new Error("ignore should be instance of a String or RegExp");t=t.replace(new RegExp("[".concat(r.replace(/[-[\]{}()*+?.,\\^$|#\\s]/g,"\\$&"),"]"),"g"),"")}if(e in a)return a[e].test(t);throw new Error("Invalid locale '".concat(e,"'"))},isAlphanumericLocales:I,isNumeric:function(t,e){return u(t),(e&&e.no_symbols?bt:new RegExp("^[+-]?([0-9]*[".concat((e||{}).locale?i[e.locale]:".","])?[0-9]+$"))).test(t)},isPassportNumber:function(t,e){return u(t),t=t.replace(/\s/g,"").toUpperCase(),e.toUpperCase()in Gt&&Gt[e].test(t)},passportNumberLocales:Ft,isPort:function(t){return Ht(t,{allow_leading_zeroes:!1,min:0,max:65535})},isLowercase:function(t){return u(t),t===t.toLowerCase()},isUppercase:function(t){return u(t),t===t.toUpperCase()},isAscii:function(t){return u(t),wt.test(t)},isFullWidth:function(t){return u(t),Kt.test(t)},isHalfWidth:function(t){return u(t),yt.test(t)},isVariableWidth:function(t){return u(t),Kt.test(t)&&yt.test(t)},isMultibyte:function(t){return u(t),Wt.test(t)},isSemVer:function(t){return u(t),xt.test(t)},isSurrogatePair:function(t){return u(t),kt.test(t)},isInt:Ht,isIMEI:function(t,e){u(t);var r=_t;if(!(r=(e=e||{}).allow_hyphens?Ut:r).test(t))return!1;t=t.replace(/-/g,"");for(var n=0,a=2,i=0;i<14;i++){var o=t.substring(14-i-1,14-i),o=parseInt(o,10)*a;n+=10<=o?o%10+1:o,1===a?a+=1:--a}return(10-n%10)%10===parseInt(t.substring(14,15),10)},isFloat:z,isFloatLocales:Q,isDecimal:function(t,e){if(u(t),(e=f(e,Yt)).locale in i)return!Z(Vt,t.replace(/ /g,""))&&(r=e,new RegExp("^[-+]?([0-9]+)?(\\".concat(i[r.locale],"[0-9]{").concat(r.decimal_digits,"})").concat(r.force_decimal?"":"?","$")).test(t));var r;throw new Error("Invalid locale '".concat(e.locale,"'"))},isHexadecimal:Qt,isOctal:function(t){return u(t),jt.test(t)},isDivisibleBy:function(t,e){return u(t),j(t)%parseInt(e,10)==0},isHexColor:function(t){return u(t),Jt.test(t)},isRgbColor:function(t,e){u(t);var r=!1,n=!0;if("object"!==l(e)?2<=arguments.length&&(n=e):(r=void 0!==e.allowSpaces?e.allowSpaces:r,n=void 0!==e.includePercentValues?e.includePercentValues:n),r){if(!re.test(t))return!1;t=t.replace(/\s/g,"")}return n?Xt.test(t)||qt.test(t)||te.test(t)||ee.test(t):Xt.test(t)||qt.test(t)},isHSL:function(t){return u(t),(-1!==(t=t.replace(/\s+/g," ").replace(/\s?(hsla?\(|\)|,)\s?/gi,"$1")).indexOf(",")?ne:ae).test(t)},isISRC:function(t){return u(t),ie.test(t)},isMD5:function(t){return u(t),le.test(t)},isHash:function(t,e){return u(t),new RegExp("^[a-fA-F0-9]{".concat(de[e],"}$")).test(t)},isJWT:function(t){return u(t),3===(t=t.split(".")).length&&t.reduce(function(t,e){return t&&he(e,{urlSafe:!0})},!0)},isJSON:function(t,e){u(t);try{e=f(e,ge);var r=[],n=(e.allow_primitives&&(r=[null,!1,!0]),JSON.parse(t));return Z(r,n)||!!n&&"object"===l(n)}catch(t){}return!1},isEmpty:function(t,e){return u(t),0===((e=f(e,Se)).ignore_whitespace?t.trim():t).length},isLength:function(t,e){u(t),n="object"===l(e)?(r=e.min||0,e.max):(r=e||0,arguments[2]);var r,n,a=t.match(/(\uFE0F|\uFE0E)/g)||[],i=t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g)||[],o=t.length-a.length-i.length,t=r<=o&&(void 0===n||o<=n);return t&&Array.isArray(null==e?void 0:e.discreteLengths)?e.discreteLengths.some(function(t){return t===o}):t},isLocale:function(t){return u(t),Dt.test(t)},isByteLength:$,isULID:function(t){return u(t),/^[0-7][0-9A-HJKMNP-TV-Z]{25}$/i.test(t)},isUUID:function(t,e){return u(t),(e=null==e?"all":e)in me&&me[e].test(t)},isMongoId:function(t){return u(t),Qt(t)&&24===t.length},isAfter:function(t,e){return e=r(("object"===l(e)?e.comparisonDate:e)||Date().toString()),!!((t=r(t))&&e&&e<t)},isBefore:function(t,e){return e=r(("object"===l(e)?e.comparisonDate:e)||Date().toString()),!!((t=r(t))&&e&&t<e)},isIn:function(t,e){if(u(t),"[object Array]"!==Object.prototype.toString.call(e))return"object"===l(e)?e.hasOwnProperty(t):!(!e||"function"!=typeof e.indexOf)&&0<=e.indexOf(t);var r,n=[];for(r in e)!{}.hasOwnProperty.call(e,r)||(n[r]=et(e[r]));return 0<=n.indexOf(t)},isLuhnNumber:Ze,isCreditCard:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(u(t),e.provider),r=t.replace(/[- ]+/g,"");if(e&&e.toLowerCase()in v){if(!v[e.toLowerCase()].test(r))return!1}else{if(e&&!(e.toLowerCase()in v))throw new Error("".concat(e," is not a valid credit card provider."));if(!Ee.some(function(t){return t.test(r)}))return!1}return Ze(t)},isIdentityCard:function(t,e){if(u(t),e in L)return L[e](t);if("any"!==e)throw new Error("Invalid locale '".concat(e,"'"));for(var r in L)if(L.hasOwnProperty(r))if((0,L[r])(t))return!0;return!1},isEAN:function(t){u(t);var e=Number(t.slice(-1));return ve.test(t)&&e===Le(t)},isISIN:function(t){if(u(t),!Me.test(t))return!1;for(var e=!0,r=0,n=t.length-2;0<=n;n--)if("A"<=t[n]&&t[n]<="Z")for(var a=t[n].charCodeAt(0)-55,i=0,o=[a%10,Math.trunc(a/10)];i<o.length;i++){var s=o[i];r+=e?5<=s?1+2*(s-5):2*s:s,e=!e}else{a=t[n].charCodeAt(0)-"0".charCodeAt(0);r+=e?5<=a?1+2*(a-5):2*a:a,e=!e}var c=10*Math.trunc((r+9)/10)-r;return+t[t.length-1]==c},isISBN:function t(e,r){u(e);var n=String((null==r?void 0:r.version)||r);if(!(null!=r&&r.version||r))return t(e,{version:10})||t(e,{version:13});var a=e.replace(/[\s-]+/g,""),i=0;if("10"===n){if(!Be.test(a))return!1;for(var o=0;o<n-1;o++)i+=(o+1)*a.charAt(o);if("X"===a.charAt(9)?i+=100:i+=10*a.charAt(9),i%11==0)return!0}else if("13"===n){if(!Ce.test(a))return!1;for(var s=0;s<12;s++)i+=Ne[s%2]*a.charAt(s);if(a.charAt(12)-(10-i%10)%10==0)return!0}return!1},isISSN:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=(u(t),"^\\d{4}-?\\d{3}[\\dX]$"),r=e.require_hyphen?r.replace("?",""):r;if(!(r=e.case_sensitive?new RegExp(r):new RegExp(r,"i")).test(t))return!1;for(var n=t.replace("-","").toUpperCase(),a=0,i=0;i<n.length;i++){var o=n[i];a+=("X"===o?10:+o)*(8-i)}return a%11==0},isMobilePhone:function(e,t,r){if(u(e),!r||!r.strictMode||e.startsWith("+")){if(Array.isArray(t))return t.some(function(t){if(F.hasOwnProperty(t)&&F[t].test(e))return!0;return!1});if(t in F)return F[t].test(e);if(t&&"any"!==t)throw new Error("Invalid locale '".concat(t,"'"));for(var n in F)if(F.hasOwnProperty(n))if(F[n].test(e))return!0}return!1},isMobilePhoneLocales:E,isPostalCode:function(t,e){if(u(t),e in G)return G[e].test(t);if("any"!==e)throw new Error("Invalid locale '".concat(e,"'"));for(var r in G)if(G.hasOwnProperty(r))if(G[r].test(t))return!0;return!1},isPostalCodeLocales:b,isEthereumAddress:function(t){return u(t),Ge.test(t)},isCurrency:function(t,e){return u(t),e=e=f(e,Pe),r="\\d{".concat(e.digits_after_decimal[0],"}"),e.digits_after_decimal.forEach(function(t,e){0!==e&&(r="".concat(r,"|\\d{").concat(t,"}"))}),n="(".concat(e.symbol.replace(/\W/,function(t){return"\\".concat(t)}),")").concat(e.require_symbol?"":"?"),a=["0","[1-9]\\d*","[1-9]\\d{0,2}(\\".concat(e.thousands_separator,"\\d{3})*")],a="(".concat(a.join("|"),")?"),i="(\\".concat(e.decimal_separator,"(").concat(r,"))").concat(e.require_decimal?"":"?"),a+=e.allow_decimal||e.require_decimal?i:"",e.allow_negatives&&!e.parens_for_negatives&&(e.negative_sign_after_digits?a+="-?":e.negative_sign_before_digits&&(a="-?"+a)),e.allow_negative_sign_placeholder?a="( (?!\\-))?".concat(a):e.allow_space_after_symbol?a=" ?".concat(a):e.allow_space_after_digits&&(a+="( (?!$))?"),e.symbol_after_digits?a+=n:a=n+a,e.allow_negatives&&(e.parens_for_negatives?a="(\\(".concat(a,"\\)|").concat(a,")"):e.negative_sign_before_digits||e.negative_sign_after_digits||(a="-?"+a)),new RegExp("^(?!-? )(?=.*\\d)".concat(a,"$")).test(t);var r,n,a,i},isBtcAddress:function(t){return u(t),Oe.test(t)||He.test(t)},isISO6346:we,isFreightContainerID:Ke,isISO6391:function(t){return u(t),ye.has(t)},isISO8601:function(t){var e,r,n,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=(u(t),(a.strictSeparator?xe:We).test(t));return i&&a.strict?(t=(a=t).match(/^(\d{4})-?(\d{3})([ T]{1}\.*|$)/))?(e=Number(t[1]),t=Number(t[2]),e%4==0&&e%100!=0||e%400==0?t<=366:t<=365):(t=(e=a.match(/(\d{4})-?(\d{0,2})-?(\d*)/).map(Number))[1],a=e[3],n=(e=e[2])&&"0".concat(e).slice(-2),r=a&&"0".concat(a).slice(-2),n=new Date("".concat(t,"-").concat(n||"01","-").concat(r||"01")),!e||!a||n.getUTCFullYear()===t&&n.getUTCMonth()+1===e&&n.getUTCDate()===a):i},isISO15924:function(t){return u(t),Ye.has(t)},isRFC3339:function(t){return u(t),ke.test(t)},isISO31661Alpha2:function(t){return u(t),se.has(t.toUpperCase())},isISO31661Alpha3:function(t){return u(t),Ve.has(t.toUpperCase())},isISO31661Numeric:function(t){return u(t),ze.has(t)},isISO4217:function(t){return u(t),Qe.has(t.toUpperCase())},isBase32:function(t,e){return u(t),(e=f(e,Xe)).crockford?Je.test(t):!(t.length%8!=0||!je.test(t))},isBase58:function(t){return u(t),!!qe.test(t)},isBase64:he,isDataURI:function(t){u(t);var e=t.split(",");if(e.length<2)return!1;var r=e.shift().trim().split(";");if("data:"!==(t=r.shift()).slice(0,5))return!1;if(""!==(t=t.slice(5))&&!tr.test(t))return!1;for(var n=0;n<r.length;n++)if((n!==r.length-1||"base64"!==r[n].toLowerCase())&&!er.test(r[n]))return!1;for(var a=0;a<e.length;a++)if(!rr.test(e[a]))return!1;return!0},isMagnetURI:function(t){return u(t),0===t.indexOf("magnet:?")&&nr.test(t)},isMailtoURI:function(t,e){var r;return u(t),0===t.indexOf("mailto:")&&(r=(t=d(t.replace("mailto:","").split("?"),2))[0],t=void 0===(t=t[1])?"":t,!r&&!t||!!(t=(t=>{var e=new Set(["subject","body","cc","bcc"]),r={cc:"",bcc:""},n=!1;if(4<(t=t.split("&")).length)return!1;var a,i=X(t);try{for(i.s();!(a=i.n()).done;){var o=d(a.value.split("="),2),s=o[0],c=o[1];if(s&&!e.has(s)){n=!0;break}!c||"cc"!==s&&"bcc"!==s||(r[s]=c),s&&e.delete(s)}}catch(t){i.e(t)}finally{i.f()}return!n&&r})(t))&&"".concat(r,",").concat(t.cc,",").concat(t.bcc).split(",").every(function(t){return!(t=or(t," "))||$t(t,e)}))},isMimeType:function(t){return u(t),sr.test(t)||cr.test(t)||ur.test(t)},isLatLong:function(t,e){return u(t),e=f(e,$r),!!S(t,",")&&!((t=t.split(","))[0].startsWith("(")&&!t[1].endsWith(")")||t[1].endsWith(")")&&!t[0].startsWith("("))&&(e.checkDMS?fr.test(t[0])&&Ar.test(t[1]):lr.test(t[0])&&dr.test(t[1]))},ltrim:ir,rtrim:ar,trim:or,escape:function(t){return u(t),t.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\//g,"&#x2F;").replace(/\\/g,"&#x5C;").replace(/`/g,"&#96;")},unescape:function(t){return u(t),t.replace(/&quot;/g,'"').replace(/&#x27;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&#x2F;/g,"/").replace(/&#x5C;/g,"\\").replace(/&#96;/g,"`").replace(/&amp;/g,"&")},stripLow:function(t,e){return u(t),hr(t,e?"\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F":"\\x00-\\x1F\\x7F")},whitelist:function(t,e){return u(t),t.replace(new RegExp("[^".concat(e,"]+"),"g"),"")},blacklist:hr,isWhitelisted:function(t,e){u(t);for(var r=t.length-1;0<=r;r--)if(-1===e.indexOf(t[r]))return!1;return!0},normalizeEmail:function(t,e){e=f(e,gr);var r=(t=t.split("@")).pop();if((t=[t.join("@"),r])[1]=t[1].toLowerCase(),"gmail.com"===t[1]||"googlemail.com"===t[1]){if(e.gmail_remove_subaddress&&(t[0]=t[0].split("+")[0]),e.gmail_remove_dots&&(t[0]=t[0].replace(/\.+/g,Ir)),!t[0].length)return!1;(e.all_lowercase||e.gmail_lowercase)&&(t[0]=t[0].toLowerCase()),t[1]=e.gmail_convert_googlemaildotcom?"gmail.com":t[1]}else if(0<=Sr.indexOf(t[1])){if(e.icloud_remove_subaddress&&(t[0]=t[0].split("+")[0]),!t[0].length)return!1;(e.all_lowercase||e.icloud_lowercase)&&(t[0]=t[0].toLowerCase())}else if(0<=mr.indexOf(t[1])){if(e.outlookdotcom_remove_subaddress&&(t[0]=t[0].split("+")[0]),!t[0].length)return!1;(e.all_lowercase||e.outlookdotcom_lowercase)&&(t[0]=t[0].toLowerCase())}else if(0<=Zr.indexOf(t[1])){if(e.yahoo_remove_subaddress&&(r=t[0].split("-"),t[0]=1<r.length?r.slice(0,-1).join("-"):r[0]),!t[0].length)return!1;(e.all_lowercase||e.yahoo_lowercase)&&(t[0]=t[0].toLowerCase())}else 0<=Er.indexOf(t[1])?((e.all_lowercase||e.yandex_lowercase)&&(t[0]=t[0].toLowerCase()),t[1]=e.yandex_convert_yandexru?"yandex.ru":t[1]):e.all_lowercase&&(t[0]=t[0].toLowerCase());return t.join("@")},toString:toString,isSlug:function(t){return u(t),Rr.test(t)},isStrongPassword:function(t){var e,r,n,a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,t=(u(t),Nr(t));return(a=f(a||{},Cr)).returnScore?(r=a,n=0,n=(n+=(e=t).uniqueChars*r.pointsPerUnique)+(e.length-e.uniqueChars)*r.pointsPerRepeat,0<e.lowercaseCount&&(n+=r.pointsForContainingLower),0<e.uppercaseCount&&(n+=r.pointsForContainingUpper),0<e.numberCount&&(n+=r.pointsForContainingNumber),0<e.symbolCount&&(n+=r.pointsForContainingSymbol),n):t.length>=a.minLength&&t.lowercaseCount>=a.minLowercase&&t.uppercaseCount>=a.minUppercase&&t.numberCount>=a.minNumbers&&t.symbolCount>=a.minSymbols},isTaxID:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"en-US",t=(u(t),t.slice(0));if(e in B)return e in N&&(t=t.replace(N[e],"")),!!B[e].test(t)&&(!(e in C)||C[e](t));throw new Error("Invalid locale '".concat(e,"'"))},isDate:m,isTime:function(t,e){return e=f(e,Lt),"string"==typeof t&&Mt[e.hourFormat][e.mode].test(t)},isLicensePlate:function(t,e){if(u(t),e in P)return P[e](t);if("any"!==e)throw new Error("Invalid locale '".concat(e,"'"));for(var r in P)if((0,P[r])(t))return!0;return!1},isVAT:function(t,e){if(u(t),u(e),e in Fr)return Fr[e](t);throw new Error("Invalid country code: '".concat(e,"'"))},ibanLocales:p}});
Index: ckend/node_modules/wkx/LICENSE.txt
===================================================================
--- backend/node_modules/wkx/LICENSE.txt	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Christian Schwarz
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Index: ckend/node_modules/wkx/README.md
===================================================================
--- backend/node_modules/wkx/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,92 +1,0 @@
-wkx [![Build Status](https://travis-ci.org/cschwarz/wkx.svg?branch=master)](https://travis-ci.org/cschwarz/wkx) [![Coverage Status](https://coveralls.io/repos/cschwarz/wkx/badge.svg?branch=master)](https://coveralls.io/r/cschwarz/wkx?branch=master)
-========
-
-A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer with support for
-
-- Point
-- LineString
-- Polygon
-- MultiPoint
-- MultiLineString
-- MultiPolygon
-- GeometryCollection
-
-Examples
---------
-
-The following examples show you how to work with wkx.
-
-```javascript
-var wkx = require('wkx');
-
-//Parsing a WKT string
-var geometry = wkx.Geometry.parse('POINT(1 2)');
-
-//Parsing an EWKT string
-var geometry = wkx.Geometry.parse('SRID=4326;POINT(1 2)');
-
-//Parsing a node Buffer containing a WKB object
-var geometry = wkx.Geometry.parse(wkbBuffer);
-
-//Parsing a node Buffer containing an EWKB object
-var geometry = wkx.Geometry.parse(ewkbBuffer);
-
-//Parsing a node Buffer containing a TWKB object
-var geometry = wkx.Geometry.parseTwkb(twkbBuffer);
-
-//Parsing a GeoJSON object
-var geometry = wkx.Geometry.parseGeoJSON({ type: 'Point', coordinates: [1, 2] });
-
-//Serializing a Point geometry to WKT
-var wktString = new wkx.Point(1, 2).toWkt();
-
-//Serializing a Point geometry to WKB
-var wkbBuffer = new wkx.Point(1, 2).toWkb();
-
-//Serializing a Point geometry to EWKT
-var ewktString = new wkx.Point(1, 2, undefined, undefined, 4326).toEwkt();
-
-//Serializing a Point geometry to EWKB
-var ewkbBuffer = new wkx.Point(1, 2, undefined, undefined, 4326).toEwkb();
-
-//Serializing a Point geometry to TWKB
-var twkbBuffer = new wkx.Point(1, 2).toTwkb();
-
-//Serializing a Point geometry to GeoJSON
-var geoJSONObject = new wkx.Point(1, 2).toGeoJSON();
-```
-
-Browser
--------
-
-To use `wkx` in a webpage, simply copy a built browser version from `dist/` into your project, and use a `script` tag
-to include it:
-```html
-<script src="wkx.js"></script>
-```
-
-If you use [browserify][] for your project, you can simply `npm install wkx --save`, and just require `wkx` as usual in
-your code.
-
-----
-
-Regardless of which of the preceeding options you choose, using `wkx` in the browser will look the same:
-```javascript
-var wkx = require('wkx');
-
-var geometry = wkx.Geometry.parse('POINT(1 2)');
-
-console.log(geometry.toGeoJSON());
-```
-
-In addition to the `wkx` module, the browser versions also export `buffer`, which is useful for parsing WKB:
-```javascript
-var Buffer = require('buffer').Buffer;
-var wkx = require('wkx');
-
-var wkbBuffer = new Buffer('0101000000000000000000f03f0000000000000040', 'hex');
-var geometry = wkx.Geometry.parse(wkbBuffer);
-
-console.log(geometry.toGeoJSON());
-```
-[browserify]: http://browserify.org/
Index: ckend/node_modules/wkx/dist/wkx.js
===================================================================
--- backend/node_modules/wkx/dist/wkx.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,5019 +1,0 @@
-require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
-(function (Buffer){
-module.exports = BinaryReader;
-
-function BinaryReader(buffer, isBigEndian) {
-    this.buffer = buffer;
-    this.position = 0;
-    this.isBigEndian = isBigEndian || false;
-}
-
-function _read(readLE, readBE, size) {
-    return function () {
-        var value;
-
-        if (this.isBigEndian)
-            value = readBE.call(this.buffer, this.position);
-        else
-            value = readLE.call(this.buffer, this.position);
-
-        this.position += size;
-
-        return value;
-    };
-}
-
-BinaryReader.prototype.readUInt8 = _read(Buffer.prototype.readUInt8, Buffer.prototype.readUInt8, 1);
-BinaryReader.prototype.readUInt16 = _read(Buffer.prototype.readUInt16LE, Buffer.prototype.readUInt16BE, 2);
-BinaryReader.prototype.readUInt32 = _read(Buffer.prototype.readUInt32LE, Buffer.prototype.readUInt32BE, 4);
-BinaryReader.prototype.readInt8 = _read(Buffer.prototype.readInt8, Buffer.prototype.readInt8, 1);
-BinaryReader.prototype.readInt16 = _read(Buffer.prototype.readInt16LE, Buffer.prototype.readInt16BE, 2);
-BinaryReader.prototype.readInt32 = _read(Buffer.prototype.readInt32LE, Buffer.prototype.readInt32BE, 4);
-BinaryReader.prototype.readFloat = _read(Buffer.prototype.readFloatLE, Buffer.prototype.readFloatBE, 4);
-BinaryReader.prototype.readDouble = _read(Buffer.prototype.readDoubleLE, Buffer.prototype.readDoubleBE, 8);
-
-BinaryReader.prototype.readVarInt = function () {
-    var nextByte,
-        result = 0,
-        bytesRead = 0;
-
-    do {
-        nextByte = this.buffer[this.position + bytesRead];
-        result += (nextByte & 0x7F) << (7 * bytesRead);
-        bytesRead++;
-    } while (nextByte >= 0x80);
-
-    this.position += bytesRead;
-
-    return result;
-};
-
-}).call(this,require("buffer").Buffer)
-},{"buffer":"buffer"}],2:[function(require,module,exports){
-(function (Buffer){
-module.exports = BinaryWriter;
-
-function BinaryWriter(size, allowResize) {
-    this.buffer = new Buffer(size);
-    this.position = 0;
-    this.allowResize = allowResize;
-}
-
-function _write(write, size) {
-    return function (value, noAssert) {
-        this.ensureSize(size);
-
-        write.call(this.buffer, value, this.position, noAssert);
-        this.position += size;
-    };
-}
-
-BinaryWriter.prototype.writeUInt8 = _write(Buffer.prototype.writeUInt8, 1);
-BinaryWriter.prototype.writeUInt16LE = _write(Buffer.prototype.writeUInt16LE, 2);
-BinaryWriter.prototype.writeUInt16BE = _write(Buffer.prototype.writeUInt16BE, 2);
-BinaryWriter.prototype.writeUInt32LE = _write(Buffer.prototype.writeUInt32LE, 4);
-BinaryWriter.prototype.writeUInt32BE = _write(Buffer.prototype.writeUInt32BE, 4);
-BinaryWriter.prototype.writeInt8 = _write(Buffer.prototype.writeInt8, 1);
-BinaryWriter.prototype.writeInt16LE = _write(Buffer.prototype.writeInt16LE, 2);
-BinaryWriter.prototype.writeInt16BE = _write(Buffer.prototype.writeInt16BE, 2);
-BinaryWriter.prototype.writeInt32LE = _write(Buffer.prototype.writeInt32LE, 4);
-BinaryWriter.prototype.writeInt32BE = _write(Buffer.prototype.writeInt32BE, 4);
-BinaryWriter.prototype.writeFloatLE = _write(Buffer.prototype.writeFloatLE, 4);
-BinaryWriter.prototype.writeFloatBE = _write(Buffer.prototype.writeFloatBE, 4);
-BinaryWriter.prototype.writeDoubleLE = _write(Buffer.prototype.writeDoubleLE, 8);
-BinaryWriter.prototype.writeDoubleBE = _write(Buffer.prototype.writeDoubleBE, 8);
-
-BinaryWriter.prototype.writeBuffer = function (buffer) {
-    this.ensureSize(buffer.length);
-
-    buffer.copy(this.buffer, this.position, 0, buffer.length);
-    this.position += buffer.length;
-};
-
-BinaryWriter.prototype.writeVarInt = function (value) {
-    var length = 1;
-
-    while ((value & 0xFFFFFF80) !== 0) {
-        this.writeUInt8((value & 0x7F) | 0x80);
-        value >>>= 7;
-        length++;
-    }
-
-    this.writeUInt8(value & 0x7F);
-
-    return length;
-};
-
-BinaryWriter.prototype.ensureSize = function (size) {
-    if (this.buffer.length < this.position + size) {
-        if (this.allowResize) {
-            var tempBuffer = new Buffer(this.position + size);
-            this.buffer.copy(tempBuffer, 0, 0, this.buffer.length);
-            this.buffer = tempBuffer;
-        }
-        else {
-            throw new RangeError('index out of range');
-        }
-    }
-};
-
-}).call(this,require("buffer").Buffer)
-},{"buffer":"buffer"}],3:[function(require,module,exports){
-(function (Buffer){
-module.exports = Geometry;
-
-var Types = require('./types');
-var Point = require('./point');
-var LineString = require('./linestring');
-var Polygon = require('./polygon');
-var MultiPoint = require('./multipoint');
-var MultiLineString = require('./multilinestring');
-var MultiPolygon = require('./multipolygon');
-var GeometryCollection = require('./geometrycollection');
-var BinaryReader = require('./binaryreader');
-var BinaryWriter = require('./binarywriter');
-var WktParser = require('./wktparser');
-var ZigZag = require('./zigzag.js');
-
-function Geometry() {
-    this.srid = undefined;
-    this.hasZ = false;
-    this.hasM = false;
-}
-
-Geometry.parse = function (value, options) {
-    var valueType = typeof value;
-
-    if (valueType === 'string' || value instanceof WktParser)
-        return Geometry._parseWkt(value);
-    else if (Buffer.isBuffer(value) || value instanceof BinaryReader)
-        return Geometry._parseWkb(value, options);
-    else
-        throw new Error('first argument must be a string or Buffer');
-};
-
-Geometry._parseWkt = function (value) {
-    var wktParser,
-        srid;
-
-    if (value instanceof WktParser)
-        wktParser = value;
-    else
-        wktParser = new WktParser(value);
-
-    var match = wktParser.matchRegex([/^SRID=(\d+);/]);
-    if (match)
-        srid = parseInt(match[1], 10);
-
-    var geometryType = wktParser.matchType();
-    var dimension = wktParser.matchDimension();
-
-    var options = {
-        srid: srid,
-        hasZ: dimension.hasZ,
-        hasM: dimension.hasM
-    };
-
-    switch (geometryType) {
-        case Types.wkt.Point:
-            return Point._parseWkt(wktParser, options);
-        case Types.wkt.LineString:
-            return LineString._parseWkt(wktParser, options);
-        case Types.wkt.Polygon:
-            return Polygon._parseWkt(wktParser, options);
-        case Types.wkt.MultiPoint:
-            return MultiPoint._parseWkt(wktParser, options);
-        case Types.wkt.MultiLineString:
-            return MultiLineString._parseWkt(wktParser, options);
-        case Types.wkt.MultiPolygon:
-            return MultiPolygon._parseWkt(wktParser, options);
-        case Types.wkt.GeometryCollection:
-            return GeometryCollection._parseWkt(wktParser, options);
-    }
-};
-
-Geometry._parseWkb = function (value, parentOptions) {
-    var binaryReader,
-        wkbType,
-        geometryType,
-        options = {};
-
-    if (value instanceof BinaryReader)
-        binaryReader = value;
-    else
-        binaryReader = new BinaryReader(value);
-
-    binaryReader.isBigEndian = !binaryReader.readInt8();
-
-    wkbType = binaryReader.readUInt32();
-
-    options.hasSrid = (wkbType & 0x20000000) === 0x20000000;
-    options.isEwkb = (wkbType & 0x20000000) || (wkbType & 0x40000000) || (wkbType & 0x80000000);
-
-    if (options.hasSrid)
-        options.srid = binaryReader.readUInt32();
-
-    options.hasZ = false;
-    options.hasM = false;
-
-    if (!options.isEwkb && (!parentOptions || !parentOptions.isEwkb)) {
-        if (wkbType >= 1000 && wkbType < 2000) {
-            options.hasZ = true;
-            geometryType = wkbType - 1000;
-        }
-        else if (wkbType >= 2000 && wkbType < 3000) {
-            options.hasM = true;
-            geometryType = wkbType - 2000;
-        }
-        else if (wkbType >= 3000 && wkbType < 4000) {
-            options.hasZ = true;
-            options.hasM = true;
-            geometryType = wkbType - 3000;
-        }
-        else {
-            geometryType = wkbType;
-        }
-    }
-    else {
-        if (wkbType & 0x80000000)
-            options.hasZ = true;
-        if (wkbType & 0x40000000)
-            options.hasM = true;
-
-        geometryType = wkbType & 0xF;
-    }
-
-    switch (geometryType) {
-        case Types.wkb.Point:
-            return Point._parseWkb(binaryReader, options);
-        case Types.wkb.LineString:
-            return LineString._parseWkb(binaryReader, options);
-        case Types.wkb.Polygon:
-            return Polygon._parseWkb(binaryReader, options);
-        case Types.wkb.MultiPoint:
-            return MultiPoint._parseWkb(binaryReader, options);
-        case Types.wkb.MultiLineString:
-            return MultiLineString._parseWkb(binaryReader, options);
-        case Types.wkb.MultiPolygon:
-            return MultiPolygon._parseWkb(binaryReader, options);
-        case Types.wkb.GeometryCollection:
-            return GeometryCollection._parseWkb(binaryReader, options);
-        default:
-            throw new Error('GeometryType ' + geometryType + ' not supported');
-    }
-};
-
-Geometry.parseTwkb = function (value) {
-    var binaryReader,
-        options = {};
-
-    if (value instanceof BinaryReader)
-        binaryReader = value;
-    else
-        binaryReader = new BinaryReader(value);
-
-    var type = binaryReader.readUInt8();
-    var metadataHeader = binaryReader.readUInt8();
-
-    var geometryType = type & 0x0F;
-    options.precision = ZigZag.decode(type >> 4);
-    options.precisionFactor = Math.pow(10, options.precision);
-
-    options.hasBoundingBox = metadataHeader >> 0 & 1;
-    options.hasSizeAttribute = metadataHeader >> 1 & 1;
-    options.hasIdList = metadataHeader >> 2 & 1;
-    options.hasExtendedPrecision = metadataHeader >> 3 & 1;
-    options.isEmpty = metadataHeader >> 4 & 1;
-
-    if (options.hasExtendedPrecision) {
-        var extendedPrecision = binaryReader.readUInt8();
-        options.hasZ = (extendedPrecision & 0x01) === 0x01;
-        options.hasM = (extendedPrecision & 0x02) === 0x02;
-
-        options.zPrecision = ZigZag.decode((extendedPrecision & 0x1C) >> 2);
-        options.zPrecisionFactor = Math.pow(10, options.zPrecision);
-
-        options.mPrecision = ZigZag.decode((extendedPrecision & 0xE0) >> 5);
-        options.mPrecisionFactor = Math.pow(10, options.mPrecision);
-    }
-    else {
-        options.hasZ = false;
-        options.hasM = false;
-    }
-
-    if (options.hasSizeAttribute)
-        binaryReader.readVarInt();
-    if (options.hasBoundingBox) {
-        var dimensions = 2;
-
-        if (options.hasZ)
-            dimensions++;
-        if (options.hasM)
-            dimensions++;
-
-        for (var i = 0; i < dimensions; i++) {
-            binaryReader.readVarInt();
-            binaryReader.readVarInt();
-        }
-    }
-
-    switch (geometryType) {
-        case Types.wkb.Point:
-            return Point._parseTwkb(binaryReader, options);
-        case Types.wkb.LineString:
-            return LineString._parseTwkb(binaryReader, options);
-        case Types.wkb.Polygon:
-            return Polygon._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiPoint:
-            return MultiPoint._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiLineString:
-            return MultiLineString._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiPolygon:
-            return MultiPolygon._parseTwkb(binaryReader, options);
-        case Types.wkb.GeometryCollection:
-            return GeometryCollection._parseTwkb(binaryReader, options);
-        default:
-            throw new Error('GeometryType ' + geometryType + ' not supported');
-    }
-};
-
-Geometry.parseGeoJSON = function (value) {
-    return Geometry._parseGeoJSON(value);
-};
-
-Geometry._parseGeoJSON = function (value, isSubGeometry) {
-    var geometry;
-
-    switch (value.type) {
-        case Types.geoJSON.Point:
-            geometry = Point._parseGeoJSON(value); break;
-        case Types.geoJSON.LineString:
-            geometry = LineString._parseGeoJSON(value); break;
-        case Types.geoJSON.Polygon:
-            geometry = Polygon._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiPoint:
-            geometry = MultiPoint._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiLineString:
-            geometry = MultiLineString._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiPolygon:
-            geometry = MultiPolygon._parseGeoJSON(value); break;
-        case Types.geoJSON.GeometryCollection:
-            geometry = GeometryCollection._parseGeoJSON(value); break;
-        default:
-            throw new Error('GeometryType ' + value.type + ' not supported');
-    }
-
-    if (value.crs && value.crs.type && value.crs.type === 'name' && value.crs.properties && value.crs.properties.name) {
-        var crs = value.crs.properties.name;
-
-        if (crs.indexOf('EPSG:') === 0)
-            geometry.srid = parseInt(crs.substring(5));
-        else if (crs.indexOf('urn:ogc:def:crs:EPSG::') === 0)
-            geometry.srid = parseInt(crs.substring(22));
-        else
-            throw new Error('Unsupported crs: ' + crs);
-    }
-    else if (!isSubGeometry) {
-        geometry.srid = 4326;
-    }
-
-    return geometry;
-};
-
-Geometry.prototype.toEwkt = function () {
-    return 'SRID=' + this.srid + ';' + this.toWkt();
-};
-
-Geometry.prototype.toEwkb = function () {
-    var ewkb = new BinaryWriter(this._getWkbSize() + 4);
-    var wkb = this.toWkb();
-
-    ewkb.writeInt8(1);
-    ewkb.writeUInt32LE((wkb.slice(1, 5).readUInt32LE(0) | 0x20000000) >>> 0, true);
-    ewkb.writeUInt32LE(this.srid);
-
-    ewkb.writeBuffer(wkb.slice(5));
-
-    return ewkb.buffer;
-};
-
-Geometry.prototype._getWktType = function (wktType, isEmpty) {
-    var wkt = wktType;
-
-    if (this.hasZ && this.hasM)
-        wkt += ' ZM ';
-    else if (this.hasZ)
-        wkt += ' Z ';
-    else if (this.hasM)
-        wkt += ' M ';
-
-    if (isEmpty && !this.hasZ && !this.hasM)
-        wkt += ' ';
-
-    if (isEmpty)
-        wkt += 'EMPTY';
-
-    return wkt;
-};
-
-Geometry.prototype._getWktCoordinate = function (point) {
-    var coordinates = point.x + ' ' + point.y;
-
-    if (this.hasZ)
-        coordinates += ' ' + point.z;
-    if (this.hasM)
-        coordinates += ' ' + point.m;
-
-    return coordinates;
-};
-
-Geometry.prototype._writeWkbType = function (wkb, geometryType, parentOptions) {
-    var dimensionType = 0;
-
-    if (typeof this.srid === 'undefined' && (!parentOptions || typeof parentOptions.srid === 'undefined')) {
-        if (this.hasZ && this.hasM)
-            dimensionType += 3000;
-        else if (this.hasZ)
-            dimensionType += 1000;
-        else if (this.hasM)
-            dimensionType += 2000;
-    }
-    else {
-        if (this.hasZ)
-            dimensionType |= 0x80000000;
-        if (this.hasM)
-            dimensionType |= 0x40000000;
-    }
-
-    wkb.writeUInt32LE((dimensionType + geometryType) >>> 0, true);
-};
-
-Geometry.getTwkbPrecision = function (xyPrecision, zPrecision, mPrecision) {
-    return {
-        xy: xyPrecision,
-        z: zPrecision,
-        m: mPrecision,
-        xyFactor: Math.pow(10, xyPrecision),
-        zFactor: Math.pow(10, zPrecision),
-        mFactor: Math.pow(10, mPrecision)
-    };
-};
-
-Geometry.prototype._writeTwkbHeader = function (twkb, geometryType, precision, isEmpty) {
-    var type = (ZigZag.encode(precision.xy) << 4) + geometryType;
-    var metadataHeader = (this.hasZ || this.hasM) << 3;
-    metadataHeader += isEmpty << 4;
-
-    twkb.writeUInt8(type);
-    twkb.writeUInt8(metadataHeader);
-
-    if (this.hasZ || this.hasM) {
-        var extendedPrecision = 0;
-        if (this.hasZ)
-            extendedPrecision |= 0x1;
-        if (this.hasM)
-            extendedPrecision |= 0x2;
-
-        twkb.writeUInt8(extendedPrecision);
-    }
-};
-
-Geometry.prototype.toGeoJSON = function (options) {
-    var geoJSON = {};
-
-    if (this.srid) {
-        if (options) {
-            if (options.shortCrs) {
-                geoJSON.crs = {
-                    type: 'name',
-                    properties: {
-                        name: 'EPSG:' + this.srid
-                    }
-                };
-            }
-            else if (options.longCrs) {
-                geoJSON.crs = {
-                    type: 'name',
-                    properties: {
-                        name: 'urn:ogc:def:crs:EPSG::' + this.srid
-                    }
-                };
-            }
-        }
-    }
-
-    return geoJSON;
-};
-
-}).call(this,{"isBuffer":require("../node_modules/is-buffer/index.js")})
-},{"../node_modules/is-buffer/index.js":17,"./binaryreader":1,"./binarywriter":2,"./geometrycollection":4,"./linestring":5,"./multilinestring":6,"./multipoint":7,"./multipolygon":8,"./point":9,"./polygon":10,"./types":11,"./wktparser":12,"./zigzag.js":13}],4:[function(require,module,exports){
-module.exports = GeometryCollection;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var BinaryWriter = require('./binarywriter');
-
-function GeometryCollection(geometries, srid) {
-    Geometry.call(this);
-
-    this.geometries = geometries || [];
-	this.srid = srid;
-
-    if (this.geometries.length > 0) {
-        this.hasZ = this.geometries[0].hasZ;
-        this.hasM = this.geometries[0].hasM;
-    }
-}
-
-util.inherits(GeometryCollection, Geometry);
-
-GeometryCollection.Z = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasZ = true;
-    return geometryCollection;
-};
-
-GeometryCollection.M = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasM = true;
-    return geometryCollection;
-};
-
-GeometryCollection.ZM = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasZ = true;
-    geometryCollection.hasM = true;
-    return geometryCollection;
-};
-
-GeometryCollection._parseWkt = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.srid = options.srid;
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return geometryCollection;
-
-    value.expectGroupStart();
-
-    do {
-        geometryCollection.geometries.push(Geometry.parse(value));
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseWkb = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.srid = options.srid;
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    var geometryCount = value.readUInt32();
-
-    for (var i = 0; i < geometryCount; i++)
-        geometryCollection.geometries.push(Geometry.parse(value, options));
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseTwkb = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return geometryCollection;
-
-    var geometryCount = value.readVarInt();
-
-    for (var i = 0; i < geometryCount; i++)
-        geometryCollection.geometries.push(Geometry.parseTwkb(value));
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseGeoJSON = function (value) {
-    var geometryCollection = new GeometryCollection();
-
-    for (var i = 0; i < value.geometries.length; i++)
-        geometryCollection.geometries.push(Geometry._parseGeoJSON(value.geometries[i], true));
-
-    if (geometryCollection.geometries.length > 0)
-        geometryCollection.hasZ = geometryCollection.geometries[0].hasZ;
-
-    return geometryCollection;
-};
-
-GeometryCollection.prototype.toWkt = function () {
-    if (this.geometries.length === 0)
-        return this._getWktType(Types.wkt.GeometryCollection, true);
-
-    var wkt = this._getWktType(Types.wkt.GeometryCollection, false) + '(';
-
-    for (var i = 0; i < this.geometries.length; i++)
-        wkt += this.geometries[i].toWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-GeometryCollection.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.GeometryCollection);
-    wkb.writeUInt32LE(this.geometries.length);
-
-    for (var i = 0; i < this.geometries.length; i++)
-        wkb.writeBuffer(this.geometries[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-GeometryCollection.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.geometries.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.GeometryCollection, precision, isEmpty);
-
-    if (this.geometries.length > 0) {
-        twkb.writeVarInt(this.geometries.length);
-
-        for (var i = 0; i < this.geometries.length; i++)
-            twkb.writeBuffer(this.geometries[i].toTwkb());
-    }
-
-    return twkb.buffer;
-};
-
-GeometryCollection.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.geometries.length; i++)
-        size += this.geometries[i]._getWkbSize();
-
-    return size;
-};
-
-GeometryCollection.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.GeometryCollection;
-    geoJSON.geometries = [];
-
-    for (var i = 0; i < this.geometries.length; i++)
-        geoJSON.geometries.push(this.geometries[i].toGeoJSON());
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./types":11,"util":20}],5:[function(require,module,exports){
-module.exports = LineString;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function LineString(points, srid) {
-    Geometry.call(this);
-
-    this.points = points || [];
-	this.srid = srid;
-
-    if (this.points.length > 0) {
-        this.hasZ = this.points[0].hasZ;
-        this.hasM = this.points[0].hasM;
-    }
-}
-
-util.inherits(LineString, Geometry);
-
-LineString.Z = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasZ = true;
-    return lineString;
-};
-
-LineString.M = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasM = true;
-    return lineString;
-};
-
-LineString.ZM = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasZ = true;
-    lineString.hasM = true;
-    return lineString;
-};
-
-LineString._parseWkt = function (value, options) {
-    var lineString = new LineString();
-    lineString.srid = options.srid;
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return lineString;
-
-    value.expectGroupStart();
-    lineString.points.push.apply(lineString.points, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    return lineString;
-};
-
-LineString._parseWkb = function (value, options) {
-    var lineString = new LineString();
-    lineString.srid = options.srid;
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    var pointCount = value.readUInt32();
-
-    for (var i = 0; i < pointCount; i++)
-        lineString.points.push(Point._readWkbPoint(value, options));
-
-    return lineString;
-};
-
-LineString._parseTwkb = function (value, options) {
-    var lineString = new LineString();
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return lineString;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var pointCount = value.readVarInt();
-
-    for (var i = 0; i < pointCount; i++)
-        lineString.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    return lineString;
-};
-
-LineString._parseGeoJSON = function (value) {
-    var lineString = new LineString();
-
-    if (value.coordinates.length > 0)
-        lineString.hasZ = value.coordinates[0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        lineString.points.push(Point._readGeoJSONPoint(value.coordinates[i]));
-
-    return lineString;
-};
-
-LineString.prototype.toWkt = function () {
-    if (this.points.length === 0)
-        return this._getWktType(Types.wkt.LineString, true);
-
-    return this._getWktType(Types.wkt.LineString, false) + this._toInnerWkt();
-};
-
-LineString.prototype._toInnerWkt = function () {
-    var innerWkt = '(';
-
-    for (var i = 0; i < this.points.length; i++)
-        innerWkt += this._getWktCoordinate(this.points[i]) + ',';
-
-    innerWkt = innerWkt.slice(0, -1);
-    innerWkt += ')';
-
-    return innerWkt;
-};
-
-LineString.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.LineString, parentOptions);
-    wkb.writeUInt32LE(this.points.length);
-
-    for (var i = 0; i < this.points.length; i++)
-        this.points[i]._writeWkbPoint(wkb);
-
-    return wkb.buffer;
-};
-
-LineString.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.points.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.LineString, precision, isEmpty);
-
-    if (this.points.length > 0) {
-        twkb.writeVarInt(this.points.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.points.length; i++)
-            this.points[i]._writeTwkbPoint(twkb, precision, previousPoint);
-    }
-
-    return twkb.buffer;
-};
-
-LineString.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    return 1 + 4 + 4 + (this.points.length * coordinateSize);
-};
-
-LineString.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.LineString;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.points.length; i++) {
-        if (this.hasZ)
-            geoJSON.coordinates.push([this.points[i].x, this.points[i].y, this.points[i].z]);
-        else
-            geoJSON.coordinates.push([this.points[i].x, this.points[i].y]);
-    }
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,"util":20}],6:[function(require,module,exports){
-module.exports = MultiLineString;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var LineString = require('./linestring');
-var BinaryWriter = require('./binarywriter');
-
-function MultiLineString(lineStrings, srid) {
-    Geometry.call(this);
-
-    this.lineStrings = lineStrings || [];
-	this.srid = srid;
-
-    if (this.lineStrings.length > 0) {
-        this.hasZ = this.lineStrings[0].hasZ;
-        this.hasM = this.lineStrings[0].hasM;
-    }
-}
-
-util.inherits(MultiLineString, Geometry);
-
-MultiLineString.Z = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasZ = true;
-    return multiLineString;
-};
-
-MultiLineString.M = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasM = true;
-    return multiLineString;
-};
-
-MultiLineString.ZM = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasZ = true;
-    multiLineString.hasM = true;
-    return multiLineString;
-};
-
-MultiLineString._parseWkt = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.srid = options.srid;
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiLineString;
-
-    value.expectGroupStart();
-
-    do {
-        value.expectGroupStart();
-        multiLineString.lineStrings.push(new LineString(value.matchCoordinates(options)));
-        value.expectGroupEnd();
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return multiLineString;
-};
-
-MultiLineString._parseWkb = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.srid = options.srid;
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    var lineStringCount = value.readUInt32();
-
-    for (var i = 0; i < lineStringCount; i++)
-        multiLineString.lineStrings.push(Geometry.parse(value, options));
-
-    return multiLineString;
-};
-
-MultiLineString._parseTwkb = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiLineString;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var lineStringCount = value.readVarInt();
-
-    for (var i = 0; i < lineStringCount; i++) {
-        var lineString = new LineString();
-        lineString.hasZ = options.hasZ;
-        lineString.hasM = options.hasM;
-
-        var pointCount = value.readVarInt();
-
-        for (var j = 0; j < pointCount; j++)
-            lineString.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        multiLineString.lineStrings.push(lineString);
-    }
-
-    return multiLineString;
-};
-
-MultiLineString._parseGeoJSON = function (value) {
-    var multiLineString = new MultiLineString();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0)
-        multiLineString.hasZ = value.coordinates[0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiLineString.lineStrings.push(LineString._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiLineString;
-};
-
-MultiLineString.prototype.toWkt = function () {
-    if (this.lineStrings.length === 0)
-        return this._getWktType(Types.wkt.MultiLineString, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiLineString, false) + '(';
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        wkt += this.lineStrings[i]._toInnerWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiLineString.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiLineString);
-    wkb.writeUInt32LE(this.lineStrings.length);
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        wkb.writeBuffer(this.lineStrings[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiLineString.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.lineStrings.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiLineString, precision, isEmpty);
-
-    if (this.lineStrings.length > 0) {
-        twkb.writeVarInt(this.lineStrings.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.lineStrings.length; i++) {
-            twkb.writeVarInt(this.lineStrings[i].points.length);
-
-            for (var j = 0; j < this.lineStrings[i].points.length; j++)
-                this.lineStrings[i].points[j]._writeTwkbPoint(twkb, precision, previousPoint);
-        }
-    }
-
-    return twkb.buffer;
-};
-
-MultiLineString.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        size += this.lineStrings[i]._getWkbSize();
-
-    return size;
-};
-
-MultiLineString.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiLineString;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        geoJSON.coordinates.push(this.lineStrings[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./linestring":5,"./point":9,"./types":11,"util":20}],7:[function(require,module,exports){
-module.exports = MultiPoint;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function MultiPoint(points, srid) {
-    Geometry.call(this);
-
-    this.points = points || [];
-	this.srid = srid;
-	
-    if (this.points.length > 0) {
-        this.hasZ = this.points[0].hasZ;
-        this.hasM = this.points[0].hasM;
-    }
-}
-
-util.inherits(MultiPoint, Geometry);
-
-MultiPoint.Z = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasZ = true;
-    return multiPoint;
-};
-
-MultiPoint.M = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasM = true;
-    return multiPoint;
-};
-
-MultiPoint.ZM = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasZ = true;
-    multiPoint.hasM = true;
-    return multiPoint;
-};
-
-MultiPoint._parseWkt = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.srid = options.srid;
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiPoint;
-
-    value.expectGroupStart();
-    multiPoint.points.push.apply(multiPoint.points, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    return multiPoint;
-};
-
-MultiPoint._parseWkb = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.srid = options.srid;
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    var pointCount = value.readUInt32();
-
-    for (var i = 0; i < pointCount; i++)
-        multiPoint.points.push(Geometry.parse(value, options));
-
-    return multiPoint;
-};
-
-MultiPoint._parseTwkb = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiPoint;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var pointCount = value.readVarInt();
-
-    for (var i = 0; i < pointCount; i++)
-        multiPoint.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    return multiPoint;
-};
-
-MultiPoint._parseGeoJSON = function (value) {
-    var multiPoint = new MultiPoint();
-
-    if (value.coordinates.length > 0)
-        multiPoint.hasZ = value.coordinates[0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiPoint.points.push(Point._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiPoint;
-};
-
-MultiPoint.prototype.toWkt = function () {
-    if (this.points.length === 0)
-        return this._getWktType(Types.wkt.MultiPoint, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiPoint, false) + '(';
-
-    for (var i = 0; i < this.points.length; i++)
-        wkt += this._getWktCoordinate(this.points[i]) + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiPoint.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiPoint);
-    wkb.writeUInt32LE(this.points.length);
-
-    for (var i = 0; i < this.points.length; i++)
-        wkb.writeBuffer(this.points[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiPoint.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.points.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiPoint, precision, isEmpty);
-
-    if (this.points.length > 0) {
-        twkb.writeVarInt(this.points.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.points.length; i++)
-            this.points[i]._writeTwkbPoint(twkb, precision, previousPoint);
-    }
-
-    return twkb.buffer;
-};
-
-MultiPoint.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    coordinateSize += 5;
-
-    return 1 + 4 + 4 + (this.points.length * coordinateSize);
-};
-
-MultiPoint.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiPoint;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.points.length; i++)
-        geoJSON.coordinates.push(this.points[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,"util":20}],8:[function(require,module,exports){
-module.exports = MultiPolygon;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var Polygon = require('./polygon');
-var BinaryWriter = require('./binarywriter');
-
-function MultiPolygon(polygons, srid) {
-    Geometry.call(this);
-
-    this.polygons = polygons || [];
-	this.srid = srid;
-
-    if (this.polygons.length > 0) {
-        this.hasZ = this.polygons[0].hasZ;
-        this.hasM = this.polygons[0].hasM;
-    }
-}
-
-util.inherits(MultiPolygon, Geometry);
-
-MultiPolygon.Z = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasZ = true;
-    return multiPolygon;
-};
-
-MultiPolygon.M = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasM = true;
-    return multiPolygon;
-};
-
-MultiPolygon.ZM = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasZ = true;
-    multiPolygon.hasM = true;
-    return multiPolygon;
-};
-
-MultiPolygon._parseWkt = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.srid = options.srid;
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiPolygon;
-
-    value.expectGroupStart();
-
-    do {
-        value.expectGroupStart();
-
-        var exteriorRing = [];
-        var interiorRings = [];
-
-        value.expectGroupStart();
-        exteriorRing.push.apply(exteriorRing, value.matchCoordinates(options));
-        value.expectGroupEnd();
-
-        while (value.isMatch([','])) {
-            value.expectGroupStart();
-            interiorRings.push(value.matchCoordinates(options));
-            value.expectGroupEnd();
-        }
-
-        multiPolygon.polygons.push(new Polygon(exteriorRing, interiorRings));
-
-        value.expectGroupEnd();
-
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseWkb = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.srid = options.srid;
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    var polygonCount = value.readUInt32();
-
-    for (var i = 0; i < polygonCount; i++)
-        multiPolygon.polygons.push(Geometry.parse(value, options));
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseTwkb = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiPolygon;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var polygonCount = value.readVarInt();
-
-    for (var i = 0; i < polygonCount; i++) {
-        var polygon = new Polygon();
-        polygon.hasZ = options.hasZ;
-        polygon.hasM = options.hasM;
-
-        var ringCount = value.readVarInt();
-        var exteriorRingCount = value.readVarInt();
-
-        for (var j = 0; j < exteriorRingCount; j++)
-            polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        for (j = 1; j < ringCount; j++) {
-            var interiorRing = [];
-
-            var interiorRingCount = value.readVarInt();
-
-            for (var k = 0; k < interiorRingCount; k++)
-                interiorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-            polygon.interiorRings.push(interiorRing);
-        }
-
-        multiPolygon.polygons.push(polygon);
-    }
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseGeoJSON = function (value) {
-    var multiPolygon = new MultiPolygon();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0 && value.coordinates[0][0].length > 0)
-        multiPolygon.hasZ = value.coordinates[0][0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiPolygon.polygons.push(Polygon._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiPolygon;
-};
-
-MultiPolygon.prototype.toWkt = function () {
-    if (this.polygons.length === 0)
-        return this._getWktType(Types.wkt.MultiPolygon, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiPolygon, false) + '(';
-
-    for (var i = 0; i < this.polygons.length; i++)
-        wkt += this.polygons[i]._toInnerWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiPolygon.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiPolygon);
-    wkb.writeUInt32LE(this.polygons.length);
-
-    for (var i = 0; i < this.polygons.length; i++)
-        wkb.writeBuffer(this.polygons[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiPolygon.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.polygons.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiPolygon, precision, isEmpty);
-
-    if (this.polygons.length > 0) {
-        twkb.writeVarInt(this.polygons.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.polygons.length; i++) {
-            twkb.writeVarInt(1 + this.polygons[i].interiorRings.length);
-
-            twkb.writeVarInt(this.polygons[i].exteriorRing.length);
-
-            for (var j = 0; j < this.polygons[i].exteriorRing.length; j++)
-                this.polygons[i].exteriorRing[j]._writeTwkbPoint(twkb, precision, previousPoint);
-
-            for (j = 0; j < this.polygons[i].interiorRings.length; j++) {
-                twkb.writeVarInt(this.polygons[i].interiorRings[j].length);
-
-                for (var k = 0; k < this.polygons[i].interiorRings[j].length; k++)
-                    this.polygons[i].interiorRings[j][k]._writeTwkbPoint(twkb, precision, previousPoint);
-            }
-        }
-    }
-
-    return twkb.buffer;
-};
-
-MultiPolygon.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.polygons.length; i++)
-        size += this.polygons[i]._getWkbSize();
-
-    return size;
-};
-
-MultiPolygon.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiPolygon;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.polygons.length; i++)
-        geoJSON.coordinates.push(this.polygons[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./point":9,"./polygon":10,"./types":11,"util":20}],9:[function(require,module,exports){
-module.exports = Point;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var BinaryWriter = require('./binarywriter');
-var ZigZag = require('./zigzag.js');
-
-function Point(x, y, z, m, srid) {
-    Geometry.call(this);
-
-    this.x = x;
-    this.y = y;
-    this.z = z;
-    this.m = m;
-	this.srid = srid;
-
-    this.hasZ = typeof this.z !== 'undefined';
-    this.hasM = typeof this.m !== 'undefined';
-}
-
-util.inherits(Point, Geometry);
-
-Point.Z = function (x, y, z, srid) {
-    var point = new Point(x, y, z, undefined, srid);
-    point.hasZ = true;
-    return point;
-};
-
-Point.M = function (x, y, m, srid) {
-    var point = new Point(x, y, undefined, m, srid);
-    point.hasM = true;
-    return point;
-};
-
-Point.ZM = function (x, y, z, m, srid) {
-    var point = new Point(x, y, z, m, srid);
-    point.hasZ = true;
-    point.hasM = true;
-    return point;
-};
-
-Point._parseWkt = function (value, options) {
-    var point = new Point();
-    point.srid = options.srid;
-    point.hasZ = options.hasZ;
-    point.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return point;
-
-    value.expectGroupStart();
-
-    var coordinate = value.matchCoordinate(options);
-
-    point.x = coordinate.x;
-    point.y = coordinate.y;
-    point.z = coordinate.z;
-    point.m = coordinate.m;
-
-    value.expectGroupEnd();
-
-    return point;
-};
-
-Point._parseWkb = function (value, options) {
-    var point = Point._readWkbPoint(value, options);
-    point.srid = options.srid;
-    return point;
-};
-
-Point._readWkbPoint = function (value, options) {
-    return new Point(value.readDouble(), value.readDouble(),
-        options.hasZ ? value.readDouble() : undefined,
-        options.hasM ? value.readDouble() : undefined);
-};
-
-Point._parseTwkb = function (value, options) {
-    var point = new Point();
-    point.hasZ = options.hasZ;
-    point.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return point;
-
-    point.x = ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    point.y = ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    point.z = options.hasZ ? ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor : undefined;
-    point.m = options.hasM ? ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor : undefined;
-
-    return point;
-};
-
-Point._readTwkbPoint = function (value, options, previousPoint) {
-    previousPoint.x += ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    previousPoint.y += ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-
-    if (options.hasZ)
-        previousPoint.z += ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor;
-    if (options.hasM)
-        previousPoint.m += ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor;
-
-    return new Point(previousPoint.x, previousPoint.y, previousPoint.z, previousPoint.m);
-};
-
-Point._parseGeoJSON = function (value) {
-    return Point._readGeoJSONPoint(value.coordinates);
-};
-
-Point._readGeoJSONPoint = function (coordinates) {
-    if (coordinates.length === 0)
-        return new Point();
-
-    if (coordinates.length > 2)
-        return new Point(coordinates[0], coordinates[1], coordinates[2]);
-
-    return new Point(coordinates[0], coordinates[1]);
-};
-
-Point.prototype.toWkt = function () {
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined' &&
-        typeof this.z === 'undefined' && typeof this.m === 'undefined')
-        return this._getWktType(Types.wkt.Point, true);
-
-    return this._getWktType(Types.wkt.Point, false) + '(' + this._getWktCoordinate(this) + ')';
-};
-
-Point.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-    this._writeWkbType(wkb, Types.wkb.Point, parentOptions);
-
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined') {
-        wkb.writeDoubleLE(NaN);
-        wkb.writeDoubleLE(NaN);
-
-        if (this.hasZ)
-            wkb.writeDoubleLE(NaN);
-        if (this.hasM)
-            wkb.writeDoubleLE(NaN);
-    }
-    else {
-        this._writeWkbPoint(wkb);
-    }
-
-    return wkb.buffer;
-};
-
-Point.prototype._writeWkbPoint = function (wkb) {
-    wkb.writeDoubleLE(this.x);
-    wkb.writeDoubleLE(this.y);
-
-    if (this.hasZ)
-        wkb.writeDoubleLE(this.z);
-    if (this.hasM)
-        wkb.writeDoubleLE(this.m);
-};
-
-Point.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = typeof this.x === 'undefined' && typeof this.y === 'undefined';
-
-    this._writeTwkbHeader(twkb, Types.wkb.Point, precision, isEmpty);
-
-    if (!isEmpty)
-        this._writeTwkbPoint(twkb, precision, new Point(0, 0, 0, 0));
-
-    return twkb.buffer;
-};
-
-Point.prototype._writeTwkbPoint = function (twkb, precision, previousPoint) {
-    var x = this.x * precision.xyFactor;
-    var y = this.y * precision.xyFactor;
-    var z = this.z * precision.zFactor;
-    var m = this.m * precision.mFactor;
-
-    twkb.writeVarInt(ZigZag.encode(x - previousPoint.x));
-    twkb.writeVarInt(ZigZag.encode(y - previousPoint.y));
-    if (this.hasZ)
-        twkb.writeVarInt(ZigZag.encode(z - previousPoint.z));
-    if (this.hasM)
-        twkb.writeVarInt(ZigZag.encode(m - previousPoint.m));
-
-    previousPoint.x = x;
-    previousPoint.y = y;
-    previousPoint.z = z;
-    previousPoint.m = m;
-};
-
-Point.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 8 + 8;
-
-    if (this.hasZ)
-        size += 8;
-    if (this.hasM)
-        size += 8;
-
-    return size;
-};
-
-Point.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.Point;
-
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined')
-        geoJSON.coordinates = [];
-    else if (typeof this.z !== 'undefined')
-        geoJSON.coordinates = [this.x, this.y, this.z];
-    else
-        geoJSON.coordinates = [this.x, this.y];
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./types":11,"./zigzag.js":13,"util":20}],10:[function(require,module,exports){
-module.exports = Polygon;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function Polygon(exteriorRing, interiorRings, srid) {
-    Geometry.call(this);
-
-    this.exteriorRing = exteriorRing || [];
-    this.interiorRings = interiorRings || [];
-	this.srid = srid;
-
-    if (this.exteriorRing.length > 0) {
-        this.hasZ = this.exteriorRing[0].hasZ;
-        this.hasM = this.exteriorRing[0].hasM;
-    }
-}
-
-util.inherits(Polygon, Geometry);
-
-Polygon.Z = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasZ = true;
-    return polygon;
-};
-
-Polygon.M = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasM = true;
-    return polygon;
-};
-
-Polygon.ZM = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasZ = true;
-    polygon.hasM = true;
-    return polygon;
-};
-
-Polygon._parseWkt = function (value, options) {
-    var polygon = new Polygon();
-    polygon.srid = options.srid;
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return polygon;
-
-    value.expectGroupStart();
-
-    value.expectGroupStart();
-    polygon.exteriorRing.push.apply(polygon.exteriorRing, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    while (value.isMatch([','])) {
-        value.expectGroupStart();
-        polygon.interiorRings.push(value.matchCoordinates(options));
-        value.expectGroupEnd();
-    }
-
-    value.expectGroupEnd();
-
-    return polygon;
-};
-
-Polygon._parseWkb = function (value, options) {
-    var polygon = new Polygon();
-    polygon.srid = options.srid;
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    var ringCount = value.readUInt32();
-
-    if (ringCount > 0) {
-        var exteriorRingCount = value.readUInt32();
-
-        for (var i = 0; i < exteriorRingCount; i++)
-            polygon.exteriorRing.push(Point._readWkbPoint(value, options));
-
-        for (i = 1; i < ringCount; i++) {
-            var interiorRing = [];
-
-            var interiorRingCount = value.readUInt32();
-
-            for (var j = 0; j < interiorRingCount; j++)
-                interiorRing.push(Point._readWkbPoint(value, options));
-
-            polygon.interiorRings.push(interiorRing);
-        }
-    }
-
-    return polygon;
-};
-
-Polygon._parseTwkb = function (value, options) {
-    var polygon = new Polygon();
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return polygon;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var ringCount = value.readVarInt();
-    var exteriorRingCount = value.readVarInt();
-
-    for (var i = 0; i < exteriorRingCount; i++)
-        polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    for (i = 1; i < ringCount; i++) {
-        var interiorRing = [];
-
-        var interiorRingCount = value.readVarInt();
-
-        for (var j = 0; j < interiorRingCount; j++)
-            interiorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        polygon.interiorRings.push(interiorRing);
-    }
-
-    return polygon;
-};
-
-Polygon._parseGeoJSON = function (value) {
-    var polygon = new Polygon();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0)
-        polygon.hasZ = value.coordinates[0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++) {
-        if (i > 0)
-            polygon.interiorRings.push([]);
-
-        for (var j = 0; j  < value.coordinates[i].length; j++) {
-            if (i === 0)
-                polygon.exteriorRing.push(Point._readGeoJSONPoint(value.coordinates[i][j]));
-            else
-                polygon.interiorRings[i - 1].push(Point._readGeoJSONPoint(value.coordinates[i][j]));
-        }
-    }
-
-    return polygon;
-};
-
-Polygon.prototype.toWkt = function () {
-    if (this.exteriorRing.length === 0)
-        return this._getWktType(Types.wkt.Polygon, true);
-
-    return this._getWktType(Types.wkt.Polygon, false) + this._toInnerWkt();
-};
-
-Polygon.prototype._toInnerWkt = function () {
-    var innerWkt = '((';
-
-    for (var i = 0; i < this.exteriorRing.length; i++)
-        innerWkt += this._getWktCoordinate(this.exteriorRing[i]) + ',';
-
-    innerWkt = innerWkt.slice(0, -1);
-    innerWkt += ')';
-
-    for (i = 0; i < this.interiorRings.length; i++) {
-        innerWkt += ',(';
-
-        for (var j = 0; j < this.interiorRings[i].length; j++) {
-            innerWkt += this._getWktCoordinate(this.interiorRings[i][j]) + ',';
-        }
-
-        innerWkt = innerWkt.slice(0, -1);
-        innerWkt += ')';
-    }
-
-    innerWkt += ')';
-
-    return innerWkt;
-};
-
-Polygon.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.Polygon, parentOptions);
-
-    if (this.exteriorRing.length > 0) {
-        wkb.writeUInt32LE(1 + this.interiorRings.length);
-        wkb.writeUInt32LE(this.exteriorRing.length);
-    }
-    else {
-        wkb.writeUInt32LE(0);
-    }
-
-    for (var i = 0; i < this.exteriorRing.length; i++)
-        this.exteriorRing[i]._writeWkbPoint(wkb);
-
-    for (i = 0; i < this.interiorRings.length; i++) {
-        wkb.writeUInt32LE(this.interiorRings[i].length);
-
-        for (var j = 0; j < this.interiorRings[i].length; j++)
-            this.interiorRings[i][j]._writeWkbPoint(wkb);
-    }
-
-    return wkb.buffer;
-};
-
-Polygon.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.exteriorRing.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.Polygon, precision, isEmpty);
-
-    if (this.exteriorRing.length > 0) {
-        twkb.writeVarInt(1 + this.interiorRings.length);
-
-        twkb.writeVarInt(this.exteriorRing.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.exteriorRing.length; i++)
-            this.exteriorRing[i]._writeTwkbPoint(twkb, precision, previousPoint);
-
-        for (i = 0; i < this.interiorRings.length; i++) {
-            twkb.writeVarInt(this.interiorRings[i].length);
-
-            for (var j = 0; j < this.interiorRings[i].length; j++)
-                this.interiorRings[i][j]._writeTwkbPoint(twkb, precision, previousPoint);
-        }
-    }
-
-    return twkb.buffer;
-};
-
-Polygon.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    var size = 1 + 4 + 4;
-
-    if (this.exteriorRing.length > 0)
-        size += 4 + (this.exteriorRing.length * coordinateSize);
-
-    for (var i = 0; i < this.interiorRings.length; i++)
-        size += 4 + (this.interiorRings[i].length * coordinateSize);
-
-    return size;
-};
-
-Polygon.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.Polygon;
-    geoJSON.coordinates = [];
-
-    if (this.exteriorRing.length > 0) {
-        var exteriorRing = [];
-
-        for (var i = 0; i < this.exteriorRing.length; i++) {
-            if (this.hasZ)
-                exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y, this.exteriorRing[i].z]);
-            else
-                exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y]);
-        }
-
-        geoJSON.coordinates.push(exteriorRing);
-    }
-
-    for (var j = 0; j < this.interiorRings.length; j++) {
-        var interiorRing = [];
-
-        for (var k = 0; k < this.interiorRings[j].length; k++) {
-            if (this.hasZ)
-                interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y, this.interiorRings[j][k].z]);
-            else
-                interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y]);
-        }
-
-        geoJSON.coordinates.push(interiorRing);
-    }
-
-    return geoJSON;
-};
-
-},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,"util":20}],11:[function(require,module,exports){
-module.exports = {
-    wkt: {
-        Point: 'POINT',
-        LineString: 'LINESTRING',
-        Polygon: 'POLYGON',
-        MultiPoint: 'MULTIPOINT',
-        MultiLineString: 'MULTILINESTRING',
-        MultiPolygon: 'MULTIPOLYGON',
-        GeometryCollection: 'GEOMETRYCOLLECTION'
-    },
-    wkb: {
-        Point: 1,
-        LineString: 2,
-        Polygon: 3,
-        MultiPoint: 4,
-        MultiLineString: 5,
-        MultiPolygon: 6,
-        GeometryCollection: 7
-    },
-    geoJSON: {
-        Point: 'Point',
-        LineString: 'LineString',
-        Polygon: 'Polygon',
-        MultiPoint: 'MultiPoint',
-        MultiLineString: 'MultiLineString',
-        MultiPolygon: 'MultiPolygon',
-        GeometryCollection: 'GeometryCollection'
-    }
-};
-
-},{}],12:[function(require,module,exports){
-module.exports = WktParser;
-
-var Types = require('./types');
-var Point = require('./point');
-
-function WktParser(value) {
-    this.value = value;
-    this.position = 0;
-}
-
-WktParser.prototype.match = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        if (this.value.substring(this.position).indexOf(tokens[i]) === 0) {
-            this.position += tokens[i].length;
-            return tokens[i];
-        }
-    }
-
-    return null;
-};
-
-WktParser.prototype.matchRegex = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        var match = this.value.substring(this.position).match(tokens[i]);
-
-        if (match) {
-            this.position += match[0].length;
-            return match;
-        }
-    }
-
-    return null;
-};
-
-WktParser.prototype.isMatch = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        if (this.value.substring(this.position).indexOf(tokens[i]) === 0) {
-            this.position += tokens[i].length;
-            return true;
-        }
-    }
-
-    return false;
-};
-
-WktParser.prototype.matchType = function () {
-    var geometryType = this.match([Types.wkt.Point, Types.wkt.LineString, Types.wkt.Polygon, Types.wkt.MultiPoint,
-    Types.wkt.MultiLineString, Types.wkt.MultiPolygon, Types.wkt.GeometryCollection]);
-
-    if (!geometryType)
-        throw new Error('Expected geometry type');
-
-    return geometryType;
-};
-
-WktParser.prototype.matchDimension = function () {
-    var dimension = this.match(['ZM', 'Z', 'M']);
-
-    switch (dimension) {
-        case 'ZM': return { hasZ: true, hasM: true };
-        case 'Z': return { hasZ: true, hasM: false };
-        case 'M': return { hasZ: false, hasM: true };
-        default: return { hasZ: false, hasM: false };
-    }
-};
-
-WktParser.prototype.expectGroupStart = function () {
-    if (!this.isMatch(['(']))
-        throw new Error('Expected group start');
-};
-
-WktParser.prototype.expectGroupEnd = function () {
-    if (!this.isMatch([')']))
-        throw new Error('Expected group end');
-};
-
-WktParser.prototype.matchCoordinate = function (options) {
-    var match;
-
-    if (options.hasZ && options.hasM)
-        match = this.matchRegex([/^(\S*)\s+(\S*)\s+(\S*)\s+([^\s,)]*)/]);
-    else if (options.hasZ || options.hasM)
-        match = this.matchRegex([/^(\S*)\s+(\S*)\s+([^\s,)]*)/]);
-    else
-        match = this.matchRegex([/^(\S*)\s+([^\s,)]*)/]);
-
-    if (!match)
-        throw new Error('Expected coordinates');
-
-    if (options.hasZ && options.hasM)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]), parseFloat(match[4]));
-    else if (options.hasZ)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]));
-    else if (options.hasM)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), undefined, parseFloat(match[3]));
-    else
-        return new Point(parseFloat(match[1]), parseFloat(match[2]));
-};
-
-WktParser.prototype.matchCoordinates = function (options) {
-    var coordinates = [];
-
-    do {
-        var startsWithBracket = this.isMatch(['(']);
-
-        coordinates.push(this.matchCoordinate(options));
-
-        if (startsWithBracket)
-            this.expectGroupEnd();
-    } while (this.isMatch([',']));
-
-    return coordinates;
-};
-
-WktParser.prototype.skipWhitespaces = function () {
-    while (this.position < this.value.length && this.value[this.position] === ' ')
-        this.position++;
-};
-
-},{"./point":9,"./types":11}],13:[function(require,module,exports){
-module.exports = {
-    encode: function (value) {
-        return (value << 1) ^ (value >> 31);
-    },
-    decode: function (value) {
-        return (value >> 1) ^ (-(value & 1));
-    }
-};
-
-},{}],14:[function(require,module,exports){
-'use strict'
-
-exports.byteLength = byteLength
-exports.toByteArray = toByteArray
-exports.fromByteArray = fromByteArray
-
-var lookup = []
-var revLookup = []
-var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
-
-var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
-for (var i = 0, len = code.length; i < len; ++i) {
-  lookup[i] = code[i]
-  revLookup[code.charCodeAt(i)] = i
-}
-
-// Support decoding URL-safe base64 strings, as Node.js does.
-// See: https://en.wikipedia.org/wiki/Base64#URL_applications
-revLookup['-'.charCodeAt(0)] = 62
-revLookup['_'.charCodeAt(0)] = 63
-
-function getLens (b64) {
-  var len = b64.length
-
-  if (len % 4 > 0) {
-    throw new Error('Invalid string. Length must be a multiple of 4')
-  }
-
-  // Trim off extra bytes after placeholder bytes are found
-  // See: https://github.com/beatgammit/base64-js/issues/42
-  var validLen = b64.indexOf('=')
-  if (validLen === -1) validLen = len
-
-  var placeHoldersLen = validLen === len
-    ? 0
-    : 4 - (validLen % 4)
-
-  return [validLen, placeHoldersLen]
-}
-
-// base64 is 4/3 + up to two characters of the original data
-function byteLength (b64) {
-  var lens = getLens(b64)
-  var validLen = lens[0]
-  var placeHoldersLen = lens[1]
-  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
-}
-
-function _byteLength (b64, validLen, placeHoldersLen) {
-  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
-}
-
-function toByteArray (b64) {
-  var tmp
-  var lens = getLens(b64)
-  var validLen = lens[0]
-  var placeHoldersLen = lens[1]
-
-  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
-
-  var curByte = 0
-
-  // if there are placeholders, only get up to the last complete 4 chars
-  var len = placeHoldersLen > 0
-    ? validLen - 4
-    : validLen
-
-  var i
-  for (i = 0; i < len; i += 4) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 18) |
-      (revLookup[b64.charCodeAt(i + 1)] << 12) |
-      (revLookup[b64.charCodeAt(i + 2)] << 6) |
-      revLookup[b64.charCodeAt(i + 3)]
-    arr[curByte++] = (tmp >> 16) & 0xFF
-    arr[curByte++] = (tmp >> 8) & 0xFF
-    arr[curByte++] = tmp & 0xFF
-  }
-
-  if (placeHoldersLen === 2) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 2) |
-      (revLookup[b64.charCodeAt(i + 1)] >> 4)
-    arr[curByte++] = tmp & 0xFF
-  }
-
-  if (placeHoldersLen === 1) {
-    tmp =
-      (revLookup[b64.charCodeAt(i)] << 10) |
-      (revLookup[b64.charCodeAt(i + 1)] << 4) |
-      (revLookup[b64.charCodeAt(i + 2)] >> 2)
-    arr[curByte++] = (tmp >> 8) & 0xFF
-    arr[curByte++] = tmp & 0xFF
-  }
-
-  return arr
-}
-
-function tripletToBase64 (num) {
-  return lookup[num >> 18 & 0x3F] +
-    lookup[num >> 12 & 0x3F] +
-    lookup[num >> 6 & 0x3F] +
-    lookup[num & 0x3F]
-}
-
-function encodeChunk (uint8, start, end) {
-  var tmp
-  var output = []
-  for (var i = start; i < end; i += 3) {
-    tmp =
-      ((uint8[i] << 16) & 0xFF0000) +
-      ((uint8[i + 1] << 8) & 0xFF00) +
-      (uint8[i + 2] & 0xFF)
-    output.push(tripletToBase64(tmp))
-  }
-  return output.join('')
-}
-
-function fromByteArray (uint8) {
-  var tmp
-  var len = uint8.length
-  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
-  var parts = []
-  var maxChunkLength = 16383 // must be multiple of 3
-
-  // go through the array every three bytes, we'll deal with trailing stuff later
-  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
-    parts.push(encodeChunk(
-      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)
-    ))
-  }
-
-  // pad the end with zeros, but make sure to not forget the extra bytes
-  if (extraBytes === 1) {
-    tmp = uint8[len - 1]
-    parts.push(
-      lookup[tmp >> 2] +
-      lookup[(tmp << 4) & 0x3F] +
-      '=='
-    )
-  } else if (extraBytes === 2) {
-    tmp = (uint8[len - 2] << 8) + uint8[len - 1]
-    parts.push(
-      lookup[tmp >> 10] +
-      lookup[(tmp >> 4) & 0x3F] +
-      lookup[(tmp << 2) & 0x3F] +
-      '='
-    )
-  }
-
-  return parts.join('')
-}
-
-},{}],15:[function(require,module,exports){
-exports.read = function (buffer, offset, isLE, mLen, nBytes) {
-  var e, m
-  var eLen = (nBytes * 8) - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var nBits = -7
-  var i = isLE ? (nBytes - 1) : 0
-  var d = isLE ? -1 : 1
-  var s = buffer[offset + i]
-
-  i += d
-
-  e = s & ((1 << (-nBits)) - 1)
-  s >>= (-nBits)
-  nBits += eLen
-  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
-
-  m = e & ((1 << (-nBits)) - 1)
-  e >>= (-nBits)
-  nBits += mLen
-  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
-
-  if (e === 0) {
-    e = 1 - eBias
-  } else if (e === eMax) {
-    return m ? NaN : ((s ? -1 : 1) * Infinity)
-  } else {
-    m = m + Math.pow(2, mLen)
-    e = e - eBias
-  }
-  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
-}
-
-exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
-  var e, m, c
-  var eLen = (nBytes * 8) - mLen - 1
-  var eMax = (1 << eLen) - 1
-  var eBias = eMax >> 1
-  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
-  var i = isLE ? 0 : (nBytes - 1)
-  var d = isLE ? 1 : -1
-  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
-
-  value = Math.abs(value)
-
-  if (isNaN(value) || value === Infinity) {
-    m = isNaN(value) ? 1 : 0
-    e = eMax
-  } else {
-    e = Math.floor(Math.log(value) / Math.LN2)
-    if (value * (c = Math.pow(2, -e)) < 1) {
-      e--
-      c *= 2
-    }
-    if (e + eBias >= 1) {
-      value += rt / c
-    } else {
-      value += rt * Math.pow(2, 1 - eBias)
-    }
-    if (value * c >= 2) {
-      e++
-      c /= 2
-    }
-
-    if (e + eBias >= eMax) {
-      m = 0
-      e = eMax
-    } else if (e + eBias >= 1) {
-      m = ((value * c) - 1) * Math.pow(2, mLen)
-      e = e + eBias
-    } else {
-      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
-      e = 0
-    }
-  }
-
-  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
-
-  e = (e << mLen) | m
-  eLen += mLen
-  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
-
-  buffer[offset + i - d] |= s * 128
-}
-
-},{}],16:[function(require,module,exports){
-if (typeof Object.create === 'function') {
-  // implementation from standard node.js 'util' module
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    ctor.prototype = Object.create(superCtor.prototype, {
-      constructor: {
-        value: ctor,
-        enumerable: false,
-        writable: true,
-        configurable: true
-      }
-    });
-  };
-} else {
-  // old school shim for old browsers
-  module.exports = function inherits(ctor, superCtor) {
-    ctor.super_ = superCtor
-    var TempCtor = function () {}
-    TempCtor.prototype = superCtor.prototype
-    ctor.prototype = new TempCtor()
-    ctor.prototype.constructor = ctor
-  }
-}
-
-},{}],17:[function(require,module,exports){
-/*!
- * Determine if an object is a Buffer
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */
-
-// The _isBuffer check is for Safari 5-7 support, because it's missing
-// Object.prototype.constructor. Remove this eventually
-module.exports = function (obj) {
-  return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)
-}
-
-function isBuffer (obj) {
-  return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
-}
-
-// For Node v0.10 support. Remove this eventually.
-function isSlowBuffer (obj) {
-  return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))
-}
-
-},{}],18:[function(require,module,exports){
-// shim for using process in browser
-var process = module.exports = {};
-
-// cached from whatever global is present so that test runners that stub it
-// don't break things.  But we need to wrap it in a try catch in case it is
-// wrapped in strict mode code which doesn't define any globals.  It's inside a
-// function because try/catches deoptimize in certain engines.
-
-var cachedSetTimeout;
-var cachedClearTimeout;
-
-function defaultSetTimout() {
-    throw new Error('setTimeout has not been defined');
-}
-function defaultClearTimeout () {
-    throw new Error('clearTimeout has not been defined');
-}
-(function () {
-    try {
-        if (typeof setTimeout === 'function') {
-            cachedSetTimeout = setTimeout;
-        } else {
-            cachedSetTimeout = defaultSetTimout;
-        }
-    } catch (e) {
-        cachedSetTimeout = defaultSetTimout;
-    }
-    try {
-        if (typeof clearTimeout === 'function') {
-            cachedClearTimeout = clearTimeout;
-        } else {
-            cachedClearTimeout = defaultClearTimeout;
-        }
-    } catch (e) {
-        cachedClearTimeout = defaultClearTimeout;
-    }
-} ())
-function runTimeout(fun) {
-    if (cachedSetTimeout === setTimeout) {
-        //normal enviroments in sane situations
-        return setTimeout(fun, 0);
-    }
-    // if setTimeout wasn't available but was latter defined
-    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
-        cachedSetTimeout = setTimeout;
-        return setTimeout(fun, 0);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedSetTimeout(fun, 0);
-    } catch(e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
-            return cachedSetTimeout.call(null, fun, 0);
-        } catch(e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
-            return cachedSetTimeout.call(this, fun, 0);
-        }
-    }
-
-
-}
-function runClearTimeout(marker) {
-    if (cachedClearTimeout === clearTimeout) {
-        //normal enviroments in sane situations
-        return clearTimeout(marker);
-    }
-    // if clearTimeout wasn't available but was latter defined
-    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
-        cachedClearTimeout = clearTimeout;
-        return clearTimeout(marker);
-    }
-    try {
-        // when when somebody has screwed with setTimeout but no I.E. maddness
-        return cachedClearTimeout(marker);
-    } catch (e){
-        try {
-            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
-            return cachedClearTimeout.call(null, marker);
-        } catch (e){
-            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
-            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
-            return cachedClearTimeout.call(this, marker);
-        }
-    }
-
-
-
-}
-var queue = [];
-var draining = false;
-var currentQueue;
-var queueIndex = -1;
-
-function cleanUpNextTick() {
-    if (!draining || !currentQueue) {
-        return;
-    }
-    draining = false;
-    if (currentQueue.length) {
-        queue = currentQueue.concat(queue);
-    } else {
-        queueIndex = -1;
-    }
-    if (queue.length) {
-        drainQueue();
-    }
-}
-
-function drainQueue() {
-    if (draining) {
-        return;
-    }
-    var timeout = runTimeout(cleanUpNextTick);
-    draining = true;
-
-    var len = queue.length;
-    while(len) {
-        currentQueue = queue;
-        queue = [];
-        while (++queueIndex < len) {
-            if (currentQueue) {
-                currentQueue[queueIndex].run();
-            }
-        }
-        queueIndex = -1;
-        len = queue.length;
-    }
-    currentQueue = null;
-    draining = false;
-    runClearTimeout(timeout);
-}
-
-process.nextTick = function (fun) {
-    var args = new Array(arguments.length - 1);
-    if (arguments.length > 1) {
-        for (var i = 1; i < arguments.length; i++) {
-            args[i - 1] = arguments[i];
-        }
-    }
-    queue.push(new Item(fun, args));
-    if (queue.length === 1 && !draining) {
-        runTimeout(drainQueue);
-    }
-};
-
-// v8 likes predictible objects
-function Item(fun, array) {
-    this.fun = fun;
-    this.array = array;
-}
-Item.prototype.run = function () {
-    this.fun.apply(null, this.array);
-};
-process.title = 'browser';
-process.browser = true;
-process.env = {};
-process.argv = [];
-process.version = ''; // empty string to avoid regexp issues
-process.versions = {};
-
-function noop() {}
-
-process.on = noop;
-process.addListener = noop;
-process.once = noop;
-process.off = noop;
-process.removeListener = noop;
-process.removeAllListeners = noop;
-process.emit = noop;
-process.prependListener = noop;
-process.prependOnceListener = noop;
-
-process.listeners = function (name) { return [] }
-
-process.binding = function (name) {
-    throw new Error('process.binding is not supported');
-};
-
-process.cwd = function () { return '/' };
-process.chdir = function (dir) {
-    throw new Error('process.chdir is not supported');
-};
-process.umask = function() { return 0; };
-
-},{}],19:[function(require,module,exports){
-module.exports = function isBuffer(arg) {
-  return arg && typeof arg === 'object'
-    && typeof arg.copy === 'function'
-    && typeof arg.fill === 'function'
-    && typeof arg.readUInt8 === 'function';
-}
-},{}],20:[function(require,module,exports){
-(function (process,global){
-// Copyright Joyent, Inc. and other Node contributors.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a
-// copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to permit
-// persons to whom the Software is furnished to do so, subject to the
-// following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
-// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-// USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-var formatRegExp = /%[sdj%]/g;
-exports.format = function(f) {
-  if (!isString(f)) {
-    var objects = [];
-    for (var i = 0; i < arguments.length; i++) {
-      objects.push(inspect(arguments[i]));
-    }
-    return objects.join(' ');
-  }
-
-  var i = 1;
-  var args = arguments;
-  var len = args.length;
-  var str = String(f).replace(formatRegExp, function(x) {
-    if (x === '%%') return '%';
-    if (i >= len) return x;
-    switch (x) {
-      case '%s': return String(args[i++]);
-      case '%d': return Number(args[i++]);
-      case '%j':
-        try {
-          return JSON.stringify(args[i++]);
-        } catch (_) {
-          return '[Circular]';
-        }
-      default:
-        return x;
-    }
-  });
-  for (var x = args[i]; i < len; x = args[++i]) {
-    if (isNull(x) || !isObject(x)) {
-      str += ' ' + x;
-    } else {
-      str += ' ' + inspect(x);
-    }
-  }
-  return str;
-};
-
-
-// Mark that a method should not be used.
-// Returns a modified function which warns once by default.
-// If --no-deprecation is set, then it is a no-op.
-exports.deprecate = function(fn, msg) {
-  // Allow for deprecating things in the process of starting up.
-  if (isUndefined(global.process)) {
-    return function() {
-      return exports.deprecate(fn, msg).apply(this, arguments);
-    };
-  }
-
-  if (process.noDeprecation === true) {
-    return fn;
-  }
-
-  var warned = false;
-  function deprecated() {
-    if (!warned) {
-      if (process.throwDeprecation) {
-        throw new Error(msg);
-      } else if (process.traceDeprecation) {
-        console.trace(msg);
-      } else {
-        console.error(msg);
-      }
-      warned = true;
-    }
-    return fn.apply(this, arguments);
-  }
-
-  return deprecated;
-};
-
-
-var debugs = {};
-var debugEnviron;
-exports.debuglog = function(set) {
-  if (isUndefined(debugEnviron))
-    debugEnviron = process.env.NODE_DEBUG || '';
-  set = set.toUpperCase();
-  if (!debugs[set]) {
-    if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
-      var pid = process.pid;
-      debugs[set] = function() {
-        var msg = exports.format.apply(exports, arguments);
-        console.error('%s %d: %s', set, pid, msg);
-      };
-    } else {
-      debugs[set] = function() {};
-    }
-  }
-  return debugs[set];
-};
-
-
-/**
- * Echos the value of a value. Trys to print the value out
- * in the best way possible given the different types.
- *
- * @param {Object} obj The object to print out.
- * @param {Object} opts Optional options object that alters the output.
- */
-/* legacy: obj, showHidden, depth, colors*/
-function inspect(obj, opts) {
-  // default options
-  var ctx = {
-    seen: [],
-    stylize: stylizeNoColor
-  };
-  // legacy...
-  if (arguments.length >= 3) ctx.depth = arguments[2];
-  if (arguments.length >= 4) ctx.colors = arguments[3];
-  if (isBoolean(opts)) {
-    // legacy...
-    ctx.showHidden = opts;
-  } else if (opts) {
-    // got an "options" object
-    exports._extend(ctx, opts);
-  }
-  // set default options
-  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
-  if (isUndefined(ctx.depth)) ctx.depth = 2;
-  if (isUndefined(ctx.colors)) ctx.colors = false;
-  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
-  if (ctx.colors) ctx.stylize = stylizeWithColor;
-  return formatValue(ctx, obj, ctx.depth);
-}
-exports.inspect = inspect;
-
-
-// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
-inspect.colors = {
-  'bold' : [1, 22],
-  'italic' : [3, 23],
-  'underline' : [4, 24],
-  'inverse' : [7, 27],
-  'white' : [37, 39],
-  'grey' : [90, 39],
-  'black' : [30, 39],
-  'blue' : [34, 39],
-  'cyan' : [36, 39],
-  'green' : [32, 39],
-  'magenta' : [35, 39],
-  'red' : [31, 39],
-  'yellow' : [33, 39]
-};
-
-// Don't use 'blue' not visible on cmd.exe
-inspect.styles = {
-  'special': 'cyan',
-  'number': 'yellow',
-  'boolean': 'yellow',
-  'undefined': 'grey',
-  'null': 'bold',
-  'string': 'green',
-  'date': 'magenta',
-  // "name": intentionally not styling
-  'regexp': 'red'
-};
-
-
-function stylizeWithColor(str, styleType) {
-  var style = inspect.styles[styleType];
-
-  if (style) {
-    return '\u001b[' + inspect.colors[style][0] + 'm' + str +
-           '\u001b[' + inspect.colors[style][1] + 'm';
-  } else {
-    return str;
-  }
-}
-
-
-function stylizeNoColor(str, styleType) {
-  return str;
-}
-
-
-function arrayToHash(array) {
-  var hash = {};
-
-  array.forEach(function(val, idx) {
-    hash[val] = true;
-  });
-
-  return hash;
-}
-
-
-function formatValue(ctx, value, recurseTimes) {
-  // Provide a hook for user-specified inspect functions.
-  // Check that value is an object with an inspect function on it
-  if (ctx.customInspect &&
-      value &&
-      isFunction(value.inspect) &&
-      // Filter out the util module, it's inspect function is special
-      value.inspect !== exports.inspect &&
-      // Also filter out any prototype objects using the circular check.
-      !(value.constructor && value.constructor.prototype === value)) {
-    var ret = value.inspect(recurseTimes, ctx);
-    if (!isString(ret)) {
-      ret = formatValue(ctx, ret, recurseTimes);
-    }
-    return ret;
-  }
-
-  // Primitive types cannot have properties
-  var primitive = formatPrimitive(ctx, value);
-  if (primitive) {
-    return primitive;
-  }
-
-  // Look up the keys of the object.
-  var keys = Object.keys(value);
-  var visibleKeys = arrayToHash(keys);
-
-  if (ctx.showHidden) {
-    keys = Object.getOwnPropertyNames(value);
-  }
-
-  // IE doesn't make error fields non-enumerable
-  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
-  if (isError(value)
-      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
-    return formatError(value);
-  }
-
-  // Some type of object without properties can be shortcutted.
-  if (keys.length === 0) {
-    if (isFunction(value)) {
-      var name = value.name ? ': ' + value.name : '';
-      return ctx.stylize('[Function' + name + ']', 'special');
-    }
-    if (isRegExp(value)) {
-      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-    }
-    if (isDate(value)) {
-      return ctx.stylize(Date.prototype.toString.call(value), 'date');
-    }
-    if (isError(value)) {
-      return formatError(value);
-    }
-  }
-
-  var base = '', array = false, braces = ['{', '}'];
-
-  // Make Array say that they are Array
-  if (isArray(value)) {
-    array = true;
-    braces = ['[', ']'];
-  }
-
-  // Make functions say that they are functions
-  if (isFunction(value)) {
-    var n = value.name ? ': ' + value.name : '';
-    base = ' [Function' + n + ']';
-  }
-
-  // Make RegExps say that they are RegExps
-  if (isRegExp(value)) {
-    base = ' ' + RegExp.prototype.toString.call(value);
-  }
-
-  // Make dates with properties first say the date
-  if (isDate(value)) {
-    base = ' ' + Date.prototype.toUTCString.call(value);
-  }
-
-  // Make error with message first say the error
-  if (isError(value)) {
-    base = ' ' + formatError(value);
-  }
-
-  if (keys.length === 0 && (!array || value.length == 0)) {
-    return braces[0] + base + braces[1];
-  }
-
-  if (recurseTimes < 0) {
-    if (isRegExp(value)) {
-      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
-    } else {
-      return ctx.stylize('[Object]', 'special');
-    }
-  }
-
-  ctx.seen.push(value);
-
-  var output;
-  if (array) {
-    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
-  } else {
-    output = keys.map(function(key) {
-      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
-    });
-  }
-
-  ctx.seen.pop();
-
-  return reduceToSingleString(output, base, braces);
-}
-
-
-function formatPrimitive(ctx, value) {
-  if (isUndefined(value))
-    return ctx.stylize('undefined', 'undefined');
-  if (isString(value)) {
-    var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
-                                             .replace(/'/g, "\\'")
-                                             .replace(/\\"/g, '"') + '\'';
-    return ctx.stylize(simple, 'string');
-  }
-  if (isNumber(value))
-    return ctx.stylize('' + value, 'number');
-  if (isBoolean(value))
-    return ctx.stylize('' + value, 'boolean');
-  // For some reason typeof null is "object", so special case here.
-  if (isNull(value))
-    return ctx.stylize('null', 'null');
-}
-
-
-function formatError(value) {
-  return '[' + Error.prototype.toString.call(value) + ']';
-}
-
-
-function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
-  var output = [];
-  for (var i = 0, l = value.length; i < l; ++i) {
-    if (hasOwnProperty(value, String(i))) {
-      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-          String(i), true));
-    } else {
-      output.push('');
-    }
-  }
-  keys.forEach(function(key) {
-    if (!key.match(/^\d+$/)) {
-      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
-          key, true));
-    }
-  });
-  return output;
-}
-
-
-function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
-  var name, str, desc;
-  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
-  if (desc.get) {
-    if (desc.set) {
-      str = ctx.stylize('[Getter/Setter]', 'special');
-    } else {
-      str = ctx.stylize('[Getter]', 'special');
-    }
-  } else {
-    if (desc.set) {
-      str = ctx.stylize('[Setter]', 'special');
-    }
-  }
-  if (!hasOwnProperty(visibleKeys, key)) {
-    name = '[' + key + ']';
-  }
-  if (!str) {
-    if (ctx.seen.indexOf(desc.value) < 0) {
-      if (isNull(recurseTimes)) {
-        str = formatValue(ctx, desc.value, null);
-      } else {
-        str = formatValue(ctx, desc.value, recurseTimes - 1);
-      }
-      if (str.indexOf('\n') > -1) {
-        if (array) {
-          str = str.split('\n').map(function(line) {
-            return '  ' + line;
-          }).join('\n').substr(2);
-        } else {
-          str = '\n' + str.split('\n').map(function(line) {
-            return '   ' + line;
-          }).join('\n');
-        }
-      }
-    } else {
-      str = ctx.stylize('[Circular]', 'special');
-    }
-  }
-  if (isUndefined(name)) {
-    if (array && key.match(/^\d+$/)) {
-      return str;
-    }
-    name = JSON.stringify('' + key);
-    if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
-      name = name.substr(1, name.length - 2);
-      name = ctx.stylize(name, 'name');
-    } else {
-      name = name.replace(/'/g, "\\'")
-                 .replace(/\\"/g, '"')
-                 .replace(/(^"|"$)/g, "'");
-      name = ctx.stylize(name, 'string');
-    }
-  }
-
-  return name + ': ' + str;
-}
-
-
-function reduceToSingleString(output, base, braces) {
-  var numLinesEst = 0;
-  var length = output.reduce(function(prev, cur) {
-    numLinesEst++;
-    if (cur.indexOf('\n') >= 0) numLinesEst++;
-    return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
-  }, 0);
-
-  if (length > 60) {
-    return braces[0] +
-           (base === '' ? '' : base + '\n ') +
-           ' ' +
-           output.join(',\n  ') +
-           ' ' +
-           braces[1];
-  }
-
-  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
-}
-
-
-// NOTE: These type checking functions intentionally don't use `instanceof`
-// because it is fragile and can be easily faked with `Object.create()`.
-function isArray(ar) {
-  return Array.isArray(ar);
-}
-exports.isArray = isArray;
-
-function isBoolean(arg) {
-  return typeof arg === 'boolean';
-}
-exports.isBoolean = isBoolean;
-
-function isNull(arg) {
-  return arg === null;
-}
-exports.isNull = isNull;
-
-function isNullOrUndefined(arg) {
-  return arg == null;
-}
-exports.isNullOrUndefined = isNullOrUndefined;
-
-function isNumber(arg) {
-  return typeof arg === 'number';
-}
-exports.isNumber = isNumber;
-
-function isString(arg) {
-  return typeof arg === 'string';
-}
-exports.isString = isString;
-
-function isSymbol(arg) {
-  return typeof arg === 'symbol';
-}
-exports.isSymbol = isSymbol;
-
-function isUndefined(arg) {
-  return arg === void 0;
-}
-exports.isUndefined = isUndefined;
-
-function isRegExp(re) {
-  return isObject(re) && objectToString(re) === '[object RegExp]';
-}
-exports.isRegExp = isRegExp;
-
-function isObject(arg) {
-  return typeof arg === 'object' && arg !== null;
-}
-exports.isObject = isObject;
-
-function isDate(d) {
-  return isObject(d) && objectToString(d) === '[object Date]';
-}
-exports.isDate = isDate;
-
-function isError(e) {
-  return isObject(e) &&
-      (objectToString(e) === '[object Error]' || e instanceof Error);
-}
-exports.isError = isError;
-
-function isFunction(arg) {
-  return typeof arg === 'function';
-}
-exports.isFunction = isFunction;
-
-function isPrimitive(arg) {
-  return arg === null ||
-         typeof arg === 'boolean' ||
-         typeof arg === 'number' ||
-         typeof arg === 'string' ||
-         typeof arg === 'symbol' ||  // ES6 symbol
-         typeof arg === 'undefined';
-}
-exports.isPrimitive = isPrimitive;
-
-exports.isBuffer = require('./support/isBuffer');
-
-function objectToString(o) {
-  return Object.prototype.toString.call(o);
-}
-
-
-function pad(n) {
-  return n < 10 ? '0' + n.toString(10) : n.toString(10);
-}
-
-
-var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
-              'Oct', 'Nov', 'Dec'];
-
-// 26 Feb 16:19:34
-function timestamp() {
-  var d = new Date();
-  var time = [pad(d.getHours()),
-              pad(d.getMinutes()),
-              pad(d.getSeconds())].join(':');
-  return [d.getDate(), months[d.getMonth()], time].join(' ');
-}
-
-
-// log is just a thin wrapper to console.log that prepends a timestamp
-exports.log = function() {
-  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
-};
-
-
-/**
- * Inherit the prototype methods from one constructor into another.
- *
- * The Function.prototype.inherits from lang.js rewritten as a standalone
- * function (not on Function.prototype). NOTE: If this file is to be loaded
- * during bootstrapping this function needs to be rewritten using some native
- * functions as prototype setup using normal JavaScript does not work as
- * expected during bootstrapping (see mirror.js in r114903).
- *
- * @param {function} ctor Constructor function which needs to inherit the
- *     prototype.
- * @param {function} superCtor Constructor function to inherit prototype from.
- */
-exports.inherits = require('inherits');
-
-exports._extend = function(origin, add) {
-  // Don't do anything if add isn't an object
-  if (!add || !isObject(add)) return origin;
-
-  var keys = Object.keys(add);
-  var i = keys.length;
-  while (i--) {
-    origin[keys[i]] = add[keys[i]];
-  }
-  return origin;
-};
-
-function hasOwnProperty(obj, prop) {
-  return Object.prototype.hasOwnProperty.call(obj, prop);
-}
-
-}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./support/isBuffer":19,"_process":18,"inherits":16}],"buffer":[function(require,module,exports){
-(function (Buffer){
-/*!
- * The buffer module from node.js, for the browser.
- *
- * @author   Feross Aboukhadijeh <https://feross.org>
- * @license  MIT
- */
-/* eslint-disable no-proto */
-
-'use strict'
-
-var base64 = require('base64-js')
-var ieee754 = require('ieee754')
-var customInspectSymbol =
-  (typeof Symbol === 'function' && typeof Symbol.for === 'function')
-    ? Symbol.for('nodejs.util.inspect.custom')
-    : null
-
-exports.Buffer = Buffer
-exports.SlowBuffer = SlowBuffer
-exports.INSPECT_MAX_BYTES = 50
-
-var K_MAX_LENGTH = 0x7fffffff
-exports.kMaxLength = K_MAX_LENGTH
-
-/**
- * If `Buffer.TYPED_ARRAY_SUPPORT`:
- *   === true    Use Uint8Array implementation (fastest)
- *   === false   Print warning and recommend using `buffer` v4.x which has an Object
- *               implementation (most compatible, even IE6)
- *
- * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
- * Opera 11.6+, iOS 4.2+.
- *
- * We report that the browser does not support typed arrays if the are not subclassable
- * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`
- * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support
- * for __proto__ and has a buggy typed array implementation.
- */
-Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport()
-
-if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&
-    typeof console.error === 'function') {
-  console.error(
-    'This browser lacks typed array (Uint8Array) support which is required by ' +
-    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
-  )
-}
-
-function typedArraySupport () {
-  // Can typed array instances can be augmented?
-  try {
-    var arr = new Uint8Array(1)
-    var proto = { foo: function () { return 42 } }
-    Object.setPrototypeOf(proto, Uint8Array.prototype)
-    Object.setPrototypeOf(arr, proto)
-    return arr.foo() === 42
-  } catch (e) {
-    return false
-  }
-}
-
-Object.defineProperty(Buffer.prototype, 'parent', {
-  enumerable: true,
-  get: function () {
-    if (!Buffer.isBuffer(this)) return undefined
-    return this.buffer
-  }
-})
-
-Object.defineProperty(Buffer.prototype, 'offset', {
-  enumerable: true,
-  get: function () {
-    if (!Buffer.isBuffer(this)) return undefined
-    return this.byteOffset
-  }
-})
-
-function createBuffer (length) {
-  if (length > K_MAX_LENGTH) {
-    throw new RangeError('The value "' + length + '" is invalid for option "size"')
-  }
-  // Return an augmented `Uint8Array` instance
-  var buf = new Uint8Array(length)
-  Object.setPrototypeOf(buf, Buffer.prototype)
-  return buf
-}
-
-/**
- * The Buffer constructor returns instances of `Uint8Array` that have their
- * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
- * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
- * and the `Uint8Array` methods. Square bracket notation works as expected -- it
- * returns a single octet.
- *
- * The `Uint8Array` prototype remains unmodified.
- */
-
-function Buffer (arg, encodingOrOffset, length) {
-  // Common case.
-  if (typeof arg === 'number') {
-    if (typeof encodingOrOffset === 'string') {
-      throw new TypeError(
-        'The "string" argument must be of type string. Received type number'
-      )
-    }
-    return allocUnsafe(arg)
-  }
-  return from(arg, encodingOrOffset, length)
-}
-
-// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
-if (typeof Symbol !== 'undefined' && Symbol.species != null &&
-    Buffer[Symbol.species] === Buffer) {
-  Object.defineProperty(Buffer, Symbol.species, {
-    value: null,
-    configurable: true,
-    enumerable: false,
-    writable: false
-  })
-}
-
-Buffer.poolSize = 8192 // not used by this implementation
-
-function from (value, encodingOrOffset, length) {
-  if (typeof value === 'string') {
-    return fromString(value, encodingOrOffset)
-  }
-
-  if (ArrayBuffer.isView(value)) {
-    return fromArrayLike(value)
-  }
-
-  if (value == null) {
-    throw new TypeError(
-      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
-      'or Array-like Object. Received type ' + (typeof value)
-    )
-  }
-
-  if (isInstance(value, ArrayBuffer) ||
-      (value && isInstance(value.buffer, ArrayBuffer))) {
-    return fromArrayBuffer(value, encodingOrOffset, length)
-  }
-
-  if (typeof SharedArrayBuffer !== 'undefined' &&
-      (isInstance(value, SharedArrayBuffer) ||
-      (value && isInstance(value.buffer, SharedArrayBuffer)))) {
-    return fromArrayBuffer(value, encodingOrOffset, length)
-  }
-
-  if (typeof value === 'number') {
-    throw new TypeError(
-      'The "value" argument must not be of type number. Received type number'
-    )
-  }
-
-  var valueOf = value.valueOf && value.valueOf()
-  if (valueOf != null && valueOf !== value) {
-    return Buffer.from(valueOf, encodingOrOffset, length)
-  }
-
-  var b = fromObject(value)
-  if (b) return b
-
-  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&
-      typeof value[Symbol.toPrimitive] === 'function') {
-    return Buffer.from(
-      value[Symbol.toPrimitive]('string'), encodingOrOffset, length
-    )
-  }
-
-  throw new TypeError(
-    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +
-    'or Array-like Object. Received type ' + (typeof value)
-  )
-}
-
-/**
- * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
- * if value is a number.
- * Buffer.from(str[, encoding])
- * Buffer.from(array)
- * Buffer.from(buffer)
- * Buffer.from(arrayBuffer[, byteOffset[, length]])
- **/
-Buffer.from = function (value, encodingOrOffset, length) {
-  return from(value, encodingOrOffset, length)
-}
-
-// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:
-// https://github.com/feross/buffer/pull/148
-Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)
-Object.setPrototypeOf(Buffer, Uint8Array)
-
-function assertSize (size) {
-  if (typeof size !== 'number') {
-    throw new TypeError('"size" argument must be of type number')
-  } else if (size < 0) {
-    throw new RangeError('The value "' + size + '" is invalid for option "size"')
-  }
-}
-
-function alloc (size, fill, encoding) {
-  assertSize(size)
-  if (size <= 0) {
-    return createBuffer(size)
-  }
-  if (fill !== undefined) {
-    // Only pay attention to encoding if it's a string. This
-    // prevents accidentally sending in a number that would
-    // be interpretted as a start offset.
-    return typeof encoding === 'string'
-      ? createBuffer(size).fill(fill, encoding)
-      : createBuffer(size).fill(fill)
-  }
-  return createBuffer(size)
-}
-
-/**
- * Creates a new filled Buffer instance.
- * alloc(size[, fill[, encoding]])
- **/
-Buffer.alloc = function (size, fill, encoding) {
-  return alloc(size, fill, encoding)
-}
-
-function allocUnsafe (size) {
-  assertSize(size)
-  return createBuffer(size < 0 ? 0 : checked(size) | 0)
-}
-
-/**
- * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
- * */
-Buffer.allocUnsafe = function (size) {
-  return allocUnsafe(size)
-}
-/**
- * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
- */
-Buffer.allocUnsafeSlow = function (size) {
-  return allocUnsafe(size)
-}
-
-function fromString (string, encoding) {
-  if (typeof encoding !== 'string' || encoding === '') {
-    encoding = 'utf8'
-  }
-
-  if (!Buffer.isEncoding(encoding)) {
-    throw new TypeError('Unknown encoding: ' + encoding)
-  }
-
-  var length = byteLength(string, encoding) | 0
-  var buf = createBuffer(length)
-
-  var actual = buf.write(string, encoding)
-
-  if (actual !== length) {
-    // Writing a hex string, for example, that contains invalid characters will
-    // cause everything after the first invalid character to be ignored. (e.g.
-    // 'abxxcd' will be treated as 'ab')
-    buf = buf.slice(0, actual)
-  }
-
-  return buf
-}
-
-function fromArrayLike (array) {
-  var length = array.length < 0 ? 0 : checked(array.length) | 0
-  var buf = createBuffer(length)
-  for (var i = 0; i < length; i += 1) {
-    buf[i] = array[i] & 255
-  }
-  return buf
-}
-
-function fromArrayBuffer (array, byteOffset, length) {
-  if (byteOffset < 0 || array.byteLength < byteOffset) {
-    throw new RangeError('"offset" is outside of buffer bounds')
-  }
-
-  if (array.byteLength < byteOffset + (length || 0)) {
-    throw new RangeError('"length" is outside of buffer bounds')
-  }
-
-  var buf
-  if (byteOffset === undefined && length === undefined) {
-    buf = new Uint8Array(array)
-  } else if (length === undefined) {
-    buf = new Uint8Array(array, byteOffset)
-  } else {
-    buf = new Uint8Array(array, byteOffset, length)
-  }
-
-  // Return an augmented `Uint8Array` instance
-  Object.setPrototypeOf(buf, Buffer.prototype)
-
-  return buf
-}
-
-function fromObject (obj) {
-  if (Buffer.isBuffer(obj)) {
-    var len = checked(obj.length) | 0
-    var buf = createBuffer(len)
-
-    if (buf.length === 0) {
-      return buf
-    }
-
-    obj.copy(buf, 0, 0, len)
-    return buf
-  }
-
-  if (obj.length !== undefined) {
-    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
-      return createBuffer(0)
-    }
-    return fromArrayLike(obj)
-  }
-
-  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
-    return fromArrayLike(obj.data)
-  }
-}
-
-function checked (length) {
-  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when
-  // length is NaN (which is otherwise coerced to zero.)
-  if (length >= K_MAX_LENGTH) {
-    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
-                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')
-  }
-  return length | 0
-}
-
-function SlowBuffer (length) {
-  if (+length != length) { // eslint-disable-line eqeqeq
-    length = 0
-  }
-  return Buffer.alloc(+length)
-}
-
-Buffer.isBuffer = function isBuffer (b) {
-  return b != null && b._isBuffer === true &&
-    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false
-}
-
-Buffer.compare = function compare (a, b) {
-  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)
-  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)
-  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
-    throw new TypeError(
-      'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
-    )
-  }
-
-  if (a === b) return 0
-
-  var x = a.length
-  var y = b.length
-
-  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
-    if (a[i] !== b[i]) {
-      x = a[i]
-      y = b[i]
-      break
-    }
-  }
-
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
-
-Buffer.isEncoding = function isEncoding (encoding) {
-  switch (String(encoding).toLowerCase()) {
-    case 'hex':
-    case 'utf8':
-    case 'utf-8':
-    case 'ascii':
-    case 'latin1':
-    case 'binary':
-    case 'base64':
-    case 'ucs2':
-    case 'ucs-2':
-    case 'utf16le':
-    case 'utf-16le':
-      return true
-    default:
-      return false
-  }
-}
-
-Buffer.concat = function concat (list, length) {
-  if (!Array.isArray(list)) {
-    throw new TypeError('"list" argument must be an Array of Buffers')
-  }
-
-  if (list.length === 0) {
-    return Buffer.alloc(0)
-  }
-
-  var i
-  if (length === undefined) {
-    length = 0
-    for (i = 0; i < list.length; ++i) {
-      length += list[i].length
-    }
-  }
-
-  var buffer = Buffer.allocUnsafe(length)
-  var pos = 0
-  for (i = 0; i < list.length; ++i) {
-    var buf = list[i]
-    if (isInstance(buf, Uint8Array)) {
-      buf = Buffer.from(buf)
-    }
-    if (!Buffer.isBuffer(buf)) {
-      throw new TypeError('"list" argument must be an Array of Buffers')
-    }
-    buf.copy(buffer, pos)
-    pos += buf.length
-  }
-  return buffer
-}
-
-function byteLength (string, encoding) {
-  if (Buffer.isBuffer(string)) {
-    return string.length
-  }
-  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
-    return string.byteLength
-  }
-  if (typeof string !== 'string') {
-    throw new TypeError(
-      'The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' +
-      'Received type ' + typeof string
-    )
-  }
-
-  var len = string.length
-  var mustMatch = (arguments.length > 2 && arguments[2] === true)
-  if (!mustMatch && len === 0) return 0
-
-  // Use a for loop to avoid recursion
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'ascii':
-      case 'latin1':
-      case 'binary':
-        return len
-      case 'utf8':
-      case 'utf-8':
-        return utf8ToBytes(string).length
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return len * 2
-      case 'hex':
-        return len >>> 1
-      case 'base64':
-        return base64ToBytes(string).length
-      default:
-        if (loweredCase) {
-          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8
-        }
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-Buffer.byteLength = byteLength
-
-function slowToString (encoding, start, end) {
-  var loweredCase = false
-
-  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
-  // property of a typed array.
-
-  // This behaves neither like String nor Uint8Array in that we set start/end
-  // to their upper/lower bounds if the value passed is out of range.
-  // undefined is handled specially as per ECMA-262 6th Edition,
-  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
-  if (start === undefined || start < 0) {
-    start = 0
-  }
-  // Return early if start > this.length. Done here to prevent potential uint32
-  // coercion fail below.
-  if (start > this.length) {
-    return ''
-  }
-
-  if (end === undefined || end > this.length) {
-    end = this.length
-  }
-
-  if (end <= 0) {
-    return ''
-  }
-
-  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
-  end >>>= 0
-  start >>>= 0
-
-  if (end <= start) {
-    return ''
-  }
-
-  if (!encoding) encoding = 'utf8'
-
-  while (true) {
-    switch (encoding) {
-      case 'hex':
-        return hexSlice(this, start, end)
-
-      case 'utf8':
-      case 'utf-8':
-        return utf8Slice(this, start, end)
-
-      case 'ascii':
-        return asciiSlice(this, start, end)
-
-      case 'latin1':
-      case 'binary':
-        return latin1Slice(this, start, end)
-
-      case 'base64':
-        return base64Slice(this, start, end)
-
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return utf16leSlice(this, start, end)
-
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = (encoding + '').toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-
-// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)
-// to detect a Buffer instance. It's not possible to use `instanceof Buffer`
-// reliably in a browserify context because there could be multiple different
-// copies of the 'buffer' package in use. This method works even for Buffer
-// instances that were created from another copy of the `buffer` package.
-// See: https://github.com/feross/buffer/issues/154
-Buffer.prototype._isBuffer = true
-
-function swap (b, n, m) {
-  var i = b[n]
-  b[n] = b[m]
-  b[m] = i
-}
-
-Buffer.prototype.swap16 = function swap16 () {
-  var len = this.length
-  if (len % 2 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 16-bits')
-  }
-  for (var i = 0; i < len; i += 2) {
-    swap(this, i, i + 1)
-  }
-  return this
-}
-
-Buffer.prototype.swap32 = function swap32 () {
-  var len = this.length
-  if (len % 4 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 32-bits')
-  }
-  for (var i = 0; i < len; i += 4) {
-    swap(this, i, i + 3)
-    swap(this, i + 1, i + 2)
-  }
-  return this
-}
-
-Buffer.prototype.swap64 = function swap64 () {
-  var len = this.length
-  if (len % 8 !== 0) {
-    throw new RangeError('Buffer size must be a multiple of 64-bits')
-  }
-  for (var i = 0; i < len; i += 8) {
-    swap(this, i, i + 7)
-    swap(this, i + 1, i + 6)
-    swap(this, i + 2, i + 5)
-    swap(this, i + 3, i + 4)
-  }
-  return this
-}
-
-Buffer.prototype.toString = function toString () {
-  var length = this.length
-  if (length === 0) return ''
-  if (arguments.length === 0) return utf8Slice(this, 0, length)
-  return slowToString.apply(this, arguments)
-}
-
-Buffer.prototype.toLocaleString = Buffer.prototype.toString
-
-Buffer.prototype.equals = function equals (b) {
-  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
-  if (this === b) return true
-  return Buffer.compare(this, b) === 0
-}
-
-Buffer.prototype.inspect = function inspect () {
-  var str = ''
-  var max = exports.INSPECT_MAX_BYTES
-  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()
-  if (this.length > max) str += ' ... '
-  return '<Buffer ' + str + '>'
-}
-if (customInspectSymbol) {
-  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect
-}
-
-Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
-  if (isInstance(target, Uint8Array)) {
-    target = Buffer.from(target, target.offset, target.byteLength)
-  }
-  if (!Buffer.isBuffer(target)) {
-    throw new TypeError(
-      'The "target" argument must be one of type Buffer or Uint8Array. ' +
-      'Received type ' + (typeof target)
-    )
-  }
-
-  if (start === undefined) {
-    start = 0
-  }
-  if (end === undefined) {
-    end = target ? target.length : 0
-  }
-  if (thisStart === undefined) {
-    thisStart = 0
-  }
-  if (thisEnd === undefined) {
-    thisEnd = this.length
-  }
-
-  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
-    throw new RangeError('out of range index')
-  }
-
-  if (thisStart >= thisEnd && start >= end) {
-    return 0
-  }
-  if (thisStart >= thisEnd) {
-    return -1
-  }
-  if (start >= end) {
-    return 1
-  }
-
-  start >>>= 0
-  end >>>= 0
-  thisStart >>>= 0
-  thisEnd >>>= 0
-
-  if (this === target) return 0
-
-  var x = thisEnd - thisStart
-  var y = end - start
-  var len = Math.min(x, y)
-
-  var thisCopy = this.slice(thisStart, thisEnd)
-  var targetCopy = target.slice(start, end)
-
-  for (var i = 0; i < len; ++i) {
-    if (thisCopy[i] !== targetCopy[i]) {
-      x = thisCopy[i]
-      y = targetCopy[i]
-      break
-    }
-  }
-
-  if (x < y) return -1
-  if (y < x) return 1
-  return 0
-}
-
-// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
-// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
-//
-// Arguments:
-// - buffer - a Buffer to search
-// - val - a string, Buffer, or number
-// - byteOffset - an index into `buffer`; will be clamped to an int32
-// - encoding - an optional encoding, relevant is val is a string
-// - dir - true for indexOf, false for lastIndexOf
-function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
-  // Empty buffer means no match
-  if (buffer.length === 0) return -1
-
-  // Normalize byteOffset
-  if (typeof byteOffset === 'string') {
-    encoding = byteOffset
-    byteOffset = 0
-  } else if (byteOffset > 0x7fffffff) {
-    byteOffset = 0x7fffffff
-  } else if (byteOffset < -0x80000000) {
-    byteOffset = -0x80000000
-  }
-  byteOffset = +byteOffset // Coerce to Number.
-  if (numberIsNaN(byteOffset)) {
-    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
-    byteOffset = dir ? 0 : (buffer.length - 1)
-  }
-
-  // Normalize byteOffset: negative offsets start from the end of the buffer
-  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
-  if (byteOffset >= buffer.length) {
-    if (dir) return -1
-    else byteOffset = buffer.length - 1
-  } else if (byteOffset < 0) {
-    if (dir) byteOffset = 0
-    else return -1
-  }
-
-  // Normalize val
-  if (typeof val === 'string') {
-    val = Buffer.from(val, encoding)
-  }
-
-  // Finally, search either indexOf (if dir is true) or lastIndexOf
-  if (Buffer.isBuffer(val)) {
-    // Special case: looking for empty string/buffer always fails
-    if (val.length === 0) {
-      return -1
-    }
-    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
-  } else if (typeof val === 'number') {
-    val = val & 0xFF // Search for a byte value [0-255]
-    if (typeof Uint8Array.prototype.indexOf === 'function') {
-      if (dir) {
-        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
-      } else {
-        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
-      }
-    }
-    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)
-  }
-
-  throw new TypeError('val must be string, number or Buffer')
-}
-
-function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
-  var indexSize = 1
-  var arrLength = arr.length
-  var valLength = val.length
-
-  if (encoding !== undefined) {
-    encoding = String(encoding).toLowerCase()
-    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
-        encoding === 'utf16le' || encoding === 'utf-16le') {
-      if (arr.length < 2 || val.length < 2) {
-        return -1
-      }
-      indexSize = 2
-      arrLength /= 2
-      valLength /= 2
-      byteOffset /= 2
-    }
-  }
-
-  function read (buf, i) {
-    if (indexSize === 1) {
-      return buf[i]
-    } else {
-      return buf.readUInt16BE(i * indexSize)
-    }
-  }
-
-  var i
-  if (dir) {
-    var foundIndex = -1
-    for (i = byteOffset; i < arrLength; i++) {
-      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
-        if (foundIndex === -1) foundIndex = i
-        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
-      } else {
-        if (foundIndex !== -1) i -= i - foundIndex
-        foundIndex = -1
-      }
-    }
-  } else {
-    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
-    for (i = byteOffset; i >= 0; i--) {
-      var found = true
-      for (var j = 0; j < valLength; j++) {
-        if (read(arr, i + j) !== read(val, j)) {
-          found = false
-          break
-        }
-      }
-      if (found) return i
-    }
-  }
-
-  return -1
-}
-
-Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
-  return this.indexOf(val, byteOffset, encoding) !== -1
-}
-
-Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
-}
-
-Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
-  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
-}
-
-function hexWrite (buf, string, offset, length) {
-  offset = Number(offset) || 0
-  var remaining = buf.length - offset
-  if (!length) {
-    length = remaining
-  } else {
-    length = Number(length)
-    if (length > remaining) {
-      length = remaining
-    }
-  }
-
-  var strLen = string.length
-
-  if (length > strLen / 2) {
-    length = strLen / 2
-  }
-  for (var i = 0; i < length; ++i) {
-    var parsed = parseInt(string.substr(i * 2, 2), 16)
-    if (numberIsNaN(parsed)) return i
-    buf[offset + i] = parsed
-  }
-  return i
-}
-
-function utf8Write (buf, string, offset, length) {
-  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-function asciiWrite (buf, string, offset, length) {
-  return blitBuffer(asciiToBytes(string), buf, offset, length)
-}
-
-function latin1Write (buf, string, offset, length) {
-  return asciiWrite(buf, string, offset, length)
-}
-
-function base64Write (buf, string, offset, length) {
-  return blitBuffer(base64ToBytes(string), buf, offset, length)
-}
-
-function ucs2Write (buf, string, offset, length) {
-  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
-}
-
-Buffer.prototype.write = function write (string, offset, length, encoding) {
-  // Buffer#write(string)
-  if (offset === undefined) {
-    encoding = 'utf8'
-    length = this.length
-    offset = 0
-  // Buffer#write(string, encoding)
-  } else if (length === undefined && typeof offset === 'string') {
-    encoding = offset
-    length = this.length
-    offset = 0
-  // Buffer#write(string, offset[, length][, encoding])
-  } else if (isFinite(offset)) {
-    offset = offset >>> 0
-    if (isFinite(length)) {
-      length = length >>> 0
-      if (encoding === undefined) encoding = 'utf8'
-    } else {
-      encoding = length
-      length = undefined
-    }
-  } else {
-    throw new Error(
-      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
-    )
-  }
-
-  var remaining = this.length - offset
-  if (length === undefined || length > remaining) length = remaining
-
-  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
-    throw new RangeError('Attempt to write outside buffer bounds')
-  }
-
-  if (!encoding) encoding = 'utf8'
-
-  var loweredCase = false
-  for (;;) {
-    switch (encoding) {
-      case 'hex':
-        return hexWrite(this, string, offset, length)
-
-      case 'utf8':
-      case 'utf-8':
-        return utf8Write(this, string, offset, length)
-
-      case 'ascii':
-        return asciiWrite(this, string, offset, length)
-
-      case 'latin1':
-      case 'binary':
-        return latin1Write(this, string, offset, length)
-
-      case 'base64':
-        // Warning: maxLength not taken into account in base64Write
-        return base64Write(this, string, offset, length)
-
-      case 'ucs2':
-      case 'ucs-2':
-      case 'utf16le':
-      case 'utf-16le':
-        return ucs2Write(this, string, offset, length)
-
-      default:
-        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
-        encoding = ('' + encoding).toLowerCase()
-        loweredCase = true
-    }
-  }
-}
-
-Buffer.prototype.toJSON = function toJSON () {
-  return {
-    type: 'Buffer',
-    data: Array.prototype.slice.call(this._arr || this, 0)
-  }
-}
-
-function base64Slice (buf, start, end) {
-  if (start === 0 && end === buf.length) {
-    return base64.fromByteArray(buf)
-  } else {
-    return base64.fromByteArray(buf.slice(start, end))
-  }
-}
-
-function utf8Slice (buf, start, end) {
-  end = Math.min(buf.length, end)
-  var res = []
-
-  var i = start
-  while (i < end) {
-    var firstByte = buf[i]
-    var codePoint = null
-    var bytesPerSequence = (firstByte > 0xEF) ? 4
-      : (firstByte > 0xDF) ? 3
-        : (firstByte > 0xBF) ? 2
-          : 1
-
-    if (i + bytesPerSequence <= end) {
-      var secondByte, thirdByte, fourthByte, tempCodePoint
-
-      switch (bytesPerSequence) {
-        case 1:
-          if (firstByte < 0x80) {
-            codePoint = firstByte
-          }
-          break
-        case 2:
-          secondByte = buf[i + 1]
-          if ((secondByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
-            if (tempCodePoint > 0x7F) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 3:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
-            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
-              codePoint = tempCodePoint
-            }
-          }
-          break
-        case 4:
-          secondByte = buf[i + 1]
-          thirdByte = buf[i + 2]
-          fourthByte = buf[i + 3]
-          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
-            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
-            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
-              codePoint = tempCodePoint
-            }
-          }
-      }
-    }
-
-    if (codePoint === null) {
-      // we did not generate a valid codePoint so insert a
-      // replacement char (U+FFFD) and advance only 1 byte
-      codePoint = 0xFFFD
-      bytesPerSequence = 1
-    } else if (codePoint > 0xFFFF) {
-      // encode to utf16 (surrogate pair dance)
-      codePoint -= 0x10000
-      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
-      codePoint = 0xDC00 | codePoint & 0x3FF
-    }
-
-    res.push(codePoint)
-    i += bytesPerSequence
-  }
-
-  return decodeCodePointsArray(res)
-}
-
-// Based on http://stackoverflow.com/a/22747272/680742, the browser with
-// the lowest limit is Chrome, with 0x10000 args.
-// We go 1 magnitude less, for safety
-var MAX_ARGUMENTS_LENGTH = 0x1000
-
-function decodeCodePointsArray (codePoints) {
-  var len = codePoints.length
-  if (len <= MAX_ARGUMENTS_LENGTH) {
-    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
-  }
-
-  // Decode in chunks to avoid "call stack size exceeded".
-  var res = ''
-  var i = 0
-  while (i < len) {
-    res += String.fromCharCode.apply(
-      String,
-      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
-    )
-  }
-  return res
-}
-
-function asciiSlice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
-
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i] & 0x7F)
-  }
-  return ret
-}
-
-function latin1Slice (buf, start, end) {
-  var ret = ''
-  end = Math.min(buf.length, end)
-
-  for (var i = start; i < end; ++i) {
-    ret += String.fromCharCode(buf[i])
-  }
-  return ret
-}
-
-function hexSlice (buf, start, end) {
-  var len = buf.length
-
-  if (!start || start < 0) start = 0
-  if (!end || end < 0 || end > len) end = len
-
-  var out = ''
-  for (var i = start; i < end; ++i) {
-    out += hexSliceLookupTable[buf[i]]
-  }
-  return out
-}
-
-function utf16leSlice (buf, start, end) {
-  var bytes = buf.slice(start, end)
-  var res = ''
-  for (var i = 0; i < bytes.length; i += 2) {
-    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))
-  }
-  return res
-}
-
-Buffer.prototype.slice = function slice (start, end) {
-  var len = this.length
-  start = ~~start
-  end = end === undefined ? len : ~~end
-
-  if (start < 0) {
-    start += len
-    if (start < 0) start = 0
-  } else if (start > len) {
-    start = len
-  }
-
-  if (end < 0) {
-    end += len
-    if (end < 0) end = 0
-  } else if (end > len) {
-    end = len
-  }
-
-  if (end < start) end = start
-
-  var newBuf = this.subarray(start, end)
-  // Return an augmented `Uint8Array` instance
-  Object.setPrototypeOf(newBuf, Buffer.prototype)
-
-  return newBuf
-}
-
-/*
- * Need to make sure that buffer isn't trying to write out of bounds.
- */
-function checkOffset (offset, ext, length) {
-  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
-  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
-}
-
-Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
-
-  return val
-}
-
-Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    checkOffset(offset, byteLength, this.length)
-  }
-
-  var val = this[offset + --byteLength]
-  var mul = 1
-  while (byteLength > 0 && (mul *= 0x100)) {
-    val += this[offset + --byteLength] * mul
-  }
-
-  return val
-}
-
-Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  return this[offset]
-}
-
-Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return this[offset] | (this[offset + 1] << 8)
-}
-
-Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  return (this[offset] << 8) | this[offset + 1]
-}
-
-Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return ((this[offset]) |
-      (this[offset + 1] << 8) |
-      (this[offset + 2] << 16)) +
-      (this[offset + 3] * 0x1000000)
-}
-
-Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset] * 0x1000000) +
-    ((this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    this[offset + 3])
-}
-
-Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var val = this[offset]
-  var mul = 1
-  var i = 0
-  while (++i < byteLength && (mul *= 0x100)) {
-    val += this[offset + i] * mul
-  }
-  mul *= 0x80
-
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
-  return val
-}
-
-Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) checkOffset(offset, byteLength, this.length)
-
-  var i = byteLength
-  var mul = 1
-  var val = this[offset + --i]
-  while (i > 0 && (mul *= 0x100)) {
-    val += this[offset + --i] * mul
-  }
-  mul *= 0x80
-
-  if (val >= mul) val -= Math.pow(2, 8 * byteLength)
-
-  return val
-}
-
-Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 1, this.length)
-  if (!(this[offset] & 0x80)) return (this[offset])
-  return ((0xff - this[offset] + 1) * -1)
-}
-
-Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset] | (this[offset + 1] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 2, this.length)
-  var val = this[offset + 1] | (this[offset] << 8)
-  return (val & 0x8000) ? val | 0xFFFF0000 : val
-}
-
-Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset]) |
-    (this[offset + 1] << 8) |
-    (this[offset + 2] << 16) |
-    (this[offset + 3] << 24)
-}
-
-Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-
-  return (this[offset] << 24) |
-    (this[offset + 1] << 16) |
-    (this[offset + 2] << 8) |
-    (this[offset + 3])
-}
-
-Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, true, 23, 4)
-}
-
-Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 4, this.length)
-  return ieee754.read(this, offset, false, 23, 4)
-}
-
-Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, true, 52, 8)
-}
-
-Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
-  offset = offset >>> 0
-  if (!noAssert) checkOffset(offset, 8, this.length)
-  return ieee754.read(this, offset, false, 52, 8)
-}
-
-function checkInt (buf, value, offset, ext, max, min) {
-  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
-  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-}
-
-Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
-  }
-
-  var mul = 1
-  var i = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  byteLength = byteLength >>> 0
-  if (!noAssert) {
-    var maxBytes = Math.pow(2, 8 * byteLength) - 1
-    checkInt(this, value, offset, byteLength, maxBytes, 0)
-  }
-
-  var i = byteLength - 1
-  var mul = 1
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    this[offset + i] = (value / mul) & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
-
-Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
-
-Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
-
-Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset + 3] = (value >>> 24)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 1] = (value >>> 8)
-  this[offset] = (value & 0xff)
-  return offset + 4
-}
-
-Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
-
-Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
-
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
-
-  var i = 0
-  var mul = 1
-  var sub = 0
-  this[offset] = value & 0xFF
-  while (++i < byteLength && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
-      sub = 1
-    }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    var limit = Math.pow(2, (8 * byteLength) - 1)
-
-    checkInt(this, value, offset, byteLength, limit - 1, -limit)
-  }
-
-  var i = byteLength - 1
-  var mul = 1
-  var sub = 0
-  this[offset + i] = value & 0xFF
-  while (--i >= 0 && (mul *= 0x100)) {
-    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
-      sub = 1
-    }
-    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
-  }
-
-  return offset + byteLength
-}
-
-Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
-  if (value < 0) value = 0xff + value + 1
-  this[offset] = (value & 0xff)
-  return offset + 1
-}
-
-Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  return offset + 2
-}
-
-Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
-  this[offset] = (value >>> 8)
-  this[offset + 1] = (value & 0xff)
-  return offset + 2
-}
-
-Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  this[offset] = (value & 0xff)
-  this[offset + 1] = (value >>> 8)
-  this[offset + 2] = (value >>> 16)
-  this[offset + 3] = (value >>> 24)
-  return offset + 4
-}
-
-Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
-  if (value < 0) value = 0xffffffff + value + 1
-  this[offset] = (value >>> 24)
-  this[offset + 1] = (value >>> 16)
-  this[offset + 2] = (value >>> 8)
-  this[offset + 3] = (value & 0xff)
-  return offset + 4
-}
-
-function checkIEEE754 (buf, value, offset, ext, max, min) {
-  if (offset + ext > buf.length) throw new RangeError('Index out of range')
-  if (offset < 0) throw new RangeError('Index out of range')
-}
-
-function writeFloat (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 23, 4)
-  return offset + 4
-}
-
-Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
-  return writeFloat(this, value, offset, false, noAssert)
-}
-
-function writeDouble (buf, value, offset, littleEndian, noAssert) {
-  value = +value
-  offset = offset >>> 0
-  if (!noAssert) {
-    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
-  }
-  ieee754.write(buf, value, offset, littleEndian, 52, 8)
-  return offset + 8
-}
-
-Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, true, noAssert)
-}
-
-Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
-  return writeDouble(this, value, offset, false, noAssert)
-}
-
-// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
-Buffer.prototype.copy = function copy (target, targetStart, start, end) {
-  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')
-  if (!start) start = 0
-  if (!end && end !== 0) end = this.length
-  if (targetStart >= target.length) targetStart = target.length
-  if (!targetStart) targetStart = 0
-  if (end > 0 && end < start) end = start
-
-  // Copy 0 bytes; we're done
-  if (end === start) return 0
-  if (target.length === 0 || this.length === 0) return 0
-
-  // Fatal error conditions
-  if (targetStart < 0) {
-    throw new RangeError('targetStart out of bounds')
-  }
-  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')
-  if (end < 0) throw new RangeError('sourceEnd out of bounds')
-
-  // Are we oob?
-  if (end > this.length) end = this.length
-  if (target.length - targetStart < end - start) {
-    end = target.length - targetStart + start
-  }
-
-  var len = end - start
-
-  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
-    // Use built-in when available, missing from IE11
-    this.copyWithin(targetStart, start, end)
-  } else if (this === target && start < targetStart && targetStart < end) {
-    // descending copy from end
-    for (var i = len - 1; i >= 0; --i) {
-      target[i + targetStart] = this[i + start]
-    }
-  } else {
-    Uint8Array.prototype.set.call(
-      target,
-      this.subarray(start, end),
-      targetStart
-    )
-  }
-
-  return len
-}
-
-// Usage:
-//    buffer.fill(number[, offset[, end]])
-//    buffer.fill(buffer[, offset[, end]])
-//    buffer.fill(string[, offset[, end]][, encoding])
-Buffer.prototype.fill = function fill (val, start, end, encoding) {
-  // Handle string cases:
-  if (typeof val === 'string') {
-    if (typeof start === 'string') {
-      encoding = start
-      start = 0
-      end = this.length
-    } else if (typeof end === 'string') {
-      encoding = end
-      end = this.length
-    }
-    if (encoding !== undefined && typeof encoding !== 'string') {
-      throw new TypeError('encoding must be a string')
-    }
-    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
-      throw new TypeError('Unknown encoding: ' + encoding)
-    }
-    if (val.length === 1) {
-      var code = val.charCodeAt(0)
-      if ((encoding === 'utf8' && code < 128) ||
-          encoding === 'latin1') {
-        // Fast path: If `val` fits into a single byte, use that numeric value.
-        val = code
-      }
-    }
-  } else if (typeof val === 'number') {
-    val = val & 255
-  } else if (typeof val === 'boolean') {
-    val = Number(val)
-  }
-
-  // Invalid ranges are not set to a default, so can range check early.
-  if (start < 0 || this.length < start || this.length < end) {
-    throw new RangeError('Out of range index')
-  }
-
-  if (end <= start) {
-    return this
-  }
-
-  start = start >>> 0
-  end = end === undefined ? this.length : end >>> 0
-
-  if (!val) val = 0
-
-  var i
-  if (typeof val === 'number') {
-    for (i = start; i < end; ++i) {
-      this[i] = val
-    }
-  } else {
-    var bytes = Buffer.isBuffer(val)
-      ? val
-      : Buffer.from(val, encoding)
-    var len = bytes.length
-    if (len === 0) {
-      throw new TypeError('The value "' + val +
-        '" is invalid for argument "value"')
-    }
-    for (i = 0; i < end - start; ++i) {
-      this[i + start] = bytes[i % len]
-    }
-  }
-
-  return this
-}
-
-// HELPER FUNCTIONS
-// ================
-
-var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g
-
-function base64clean (str) {
-  // Node takes equal signs as end of the Base64 encoding
-  str = str.split('=')[0]
-  // Node strips out invalid characters like \n and \t from the string, base64-js does not
-  str = str.trim().replace(INVALID_BASE64_RE, '')
-  // Node converts strings with length < 2 to ''
-  if (str.length < 2) return ''
-  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
-  while (str.length % 4 !== 0) {
-    str = str + '='
-  }
-  return str
-}
-
-function utf8ToBytes (string, units) {
-  units = units || Infinity
-  var codePoint
-  var length = string.length
-  var leadSurrogate = null
-  var bytes = []
-
-  for (var i = 0; i < length; ++i) {
-    codePoint = string.charCodeAt(i)
-
-    // is surrogate component
-    if (codePoint > 0xD7FF && codePoint < 0xE000) {
-      // last char was a lead
-      if (!leadSurrogate) {
-        // no lead yet
-        if (codePoint > 0xDBFF) {
-          // unexpected trail
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        } else if (i + 1 === length) {
-          // unpaired lead
-          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-          continue
-        }
-
-        // valid lead
-        leadSurrogate = codePoint
-
-        continue
-      }
-
-      // 2 leads in a row
-      if (codePoint < 0xDC00) {
-        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-        leadSurrogate = codePoint
-        continue
-      }
-
-      // valid surrogate pair
-      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
-    } else if (leadSurrogate) {
-      // valid bmp char, but last char was a lead
-      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
-    }
-
-    leadSurrogate = null
-
-    // encode utf8
-    if (codePoint < 0x80) {
-      if ((units -= 1) < 0) break
-      bytes.push(codePoint)
-    } else if (codePoint < 0x800) {
-      if ((units -= 2) < 0) break
-      bytes.push(
-        codePoint >> 0x6 | 0xC0,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x10000) {
-      if ((units -= 3) < 0) break
-      bytes.push(
-        codePoint >> 0xC | 0xE0,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else if (codePoint < 0x110000) {
-      if ((units -= 4) < 0) break
-      bytes.push(
-        codePoint >> 0x12 | 0xF0,
-        codePoint >> 0xC & 0x3F | 0x80,
-        codePoint >> 0x6 & 0x3F | 0x80,
-        codePoint & 0x3F | 0x80
-      )
-    } else {
-      throw new Error('Invalid code point')
-    }
-  }
-
-  return bytes
-}
-
-function asciiToBytes (str) {
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    // Node's code seems to be doing this and not & 0x7F..
-    byteArray.push(str.charCodeAt(i) & 0xFF)
-  }
-  return byteArray
-}
-
-function utf16leToBytes (str, units) {
-  var c, hi, lo
-  var byteArray = []
-  for (var i = 0; i < str.length; ++i) {
-    if ((units -= 2) < 0) break
-
-    c = str.charCodeAt(i)
-    hi = c >> 8
-    lo = c % 256
-    byteArray.push(lo)
-    byteArray.push(hi)
-  }
-
-  return byteArray
-}
-
-function base64ToBytes (str) {
-  return base64.toByteArray(base64clean(str))
-}
-
-function blitBuffer (src, dst, offset, length) {
-  for (var i = 0; i < length; ++i) {
-    if ((i + offset >= dst.length) || (i >= src.length)) break
-    dst[i + offset] = src[i]
-  }
-  return i
-}
-
-// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass
-// the `instanceof` check but they should be treated as of that type.
-// See: https://github.com/feross/buffer/issues/166
-function isInstance (obj, type) {
-  return obj instanceof type ||
-    (obj != null && obj.constructor != null && obj.constructor.name != null &&
-      obj.constructor.name === type.name)
-}
-function numberIsNaN (obj) {
-  // For IE11 support
-  return obj !== obj // eslint-disable-line no-self-compare
-}
-
-// Create lookup table for `toString('hex')`
-// See: https://github.com/feross/buffer/issues/219
-var hexSliceLookupTable = (function () {
-  var alphabet = '0123456789abcdef'
-  var table = new Array(256)
-  for (var i = 0; i < 16; ++i) {
-    var i16 = i * 16
-    for (var j = 0; j < 16; ++j) {
-      table[i16 + j] = alphabet[i] + alphabet[j]
-    }
-  }
-  return table
-})()
-
-}).call(this,require("buffer").Buffer)
-},{"base64-js":14,"buffer":"buffer","ieee754":15}],"wkx":[function(require,module,exports){
-exports.Types = require('./types');
-exports.Geometry = require('./geometry');
-exports.Point = require('./point');
-exports.LineString = require('./linestring');
-exports.Polygon = require('./polygon');
-exports.MultiPoint = require('./multipoint');
-exports.MultiLineString = require('./multilinestring');
-exports.MultiPolygon = require('./multipolygon');
-exports.GeometryCollection = require('./geometrycollection');
-},{"./geometry":3,"./geometrycollection":4,"./linestring":5,"./multilinestring":6,"./multipoint":7,"./multipolygon":8,"./point":9,"./polygon":10,"./types":11}]},{},["wkx"]);
Index: ckend/node_modules/wkx/dist/wkx.min.js
===================================================================
--- backend/node_modules/wkx/dist/wkx.min.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,1 +1,0 @@
-require=function o(s,a,h){function u(e,t){if(!a[e]){if(!s[e]){var r="function"==typeof require&&require;if(!t&&r)return r(e,!0);if(p)return p(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var i=a[e]={exports:{}};s[e][0].call(i.exports,function(t){return u(s[e][1][t]||t)},i,i.exports,o,s,a,h)}return a[e].exports}for(var p="function"==typeof require&&require,t=0;t<h.length;t++)u(h[t]);return u}({1:[function(t,n,e){(function(t){function e(t,e){this.buffer=t,this.position=0,this.isBigEndian=e||!1}function r(e,r,n){return function(){var t;return t=this.isBigEndian?r.call(this.buffer,this.position):e.call(this.buffer,this.position),this.position+=n,t}}(n.exports=e).prototype.readUInt8=r(t.prototype.readUInt8,t.prototype.readUInt8,1),e.prototype.readUInt16=r(t.prototype.readUInt16LE,t.prototype.readUInt16BE,2),e.prototype.readUInt32=r(t.prototype.readUInt32LE,t.prototype.readUInt32BE,4),e.prototype.readInt8=r(t.prototype.readInt8,t.prototype.readInt8,1),e.prototype.readInt16=r(t.prototype.readInt16LE,t.prototype.readInt16BE,2),e.prototype.readInt32=r(t.prototype.readInt32LE,t.prototype.readInt32BE,4),e.prototype.readFloat=r(t.prototype.readFloatLE,t.prototype.readFloatBE,4),e.prototype.readDouble=r(t.prototype.readDoubleLE,t.prototype.readDoubleBE,8),e.prototype.readVarInt=function(){for(var t,e=0,r=0;e+=(127&(t=this.buffer[this.position+r]))<<7*r,r++,128<=t;);return this.position+=r,e}}).call(this,t("buffer").Buffer)},{buffer:"buffer"}],2:[function(t,n,e){(function(r){function t(t,e){this.buffer=new r(t),this.position=0,this.allowResize=e}function e(r,n){return function(t,e){this.ensureSize(n),r.call(this.buffer,t,this.position,e),this.position+=n}}(n.exports=t).prototype.writeUInt8=e(r.prototype.writeUInt8,1),t.prototype.writeUInt16LE=e(r.prototype.writeUInt16LE,2),t.prototype.writeUInt16BE=e(r.prototype.writeUInt16BE,2),t.prototype.writeUInt32LE=e(r.prototype.writeUInt32LE,4),t.prototype.writeUInt32BE=e(r.prototype.writeUInt32BE,4),t.prototype.writeInt8=e(r.prototype.writeInt8,1),t.prototype.writeInt16LE=e(r.prototype.writeInt16LE,2),t.prototype.writeInt16BE=e(r.prototype.writeInt16BE,2),t.prototype.writeInt32LE=e(r.prototype.writeInt32LE,4),t.prototype.writeInt32BE=e(r.prototype.writeInt32BE,4),t.prototype.writeFloatLE=e(r.prototype.writeFloatLE,4),t.prototype.writeFloatBE=e(r.prototype.writeFloatBE,4),t.prototype.writeDoubleLE=e(r.prototype.writeDoubleLE,8),t.prototype.writeDoubleBE=e(r.prototype.writeDoubleBE,8),t.prototype.writeBuffer=function(t){this.ensureSize(t.length),t.copy(this.buffer,this.position,0,t.length),this.position+=t.length},t.prototype.writeVarInt=function(t){for(var e=1;0!=(4294967168&t);)this.writeUInt8(127&t|128),t>>>=7,e++;return this.writeUInt8(127&t),e},t.prototype.ensureSize=function(t){if(this.buffer.length<this.position+t){if(!this.allowResize)throw new RangeError("index out of range");var e=new r(this.position+t);this.buffer.copy(e,0,0,this.buffer.length),this.buffer=e}}}).call(this,t("buffer").Buffer)},{buffer:"buffer"}],3:[function(t,e,r){(function(r){e.exports=i;var u=t("./types"),p=t("./point"),f=t("./linestring"),c=t("./polygon"),l=t("./multipoint"),g=t("./multilinestring"),y=t("./multipolygon"),w=t("./geometrycollection"),d=t("./binaryreader"),n=t("./binarywriter"),a=t("./wktparser"),b=t("./zigzag.js");function i(){this.srid=void 0,this.hasZ=!1,this.hasM=!1}i.parse=function(t,e){if("string"==typeof t||t instanceof a)return i._parseWkt(t);if(r.isBuffer(t)||t instanceof d)return i._parseWkb(t,e);throw new Error("first argument must be a string or Buffer")},i._parseWkt=function(t){var e,r,n=(e=t instanceof a?t:new a(t)).matchRegex([/^SRID=(\d+);/]);n&&(r=parseInt(n[1],10));var i=e.matchType(),o=e.matchDimension(),s={srid:r,hasZ:o.hasZ,hasM:o.hasM};switch(i){case u.wkt.Point:return p._parseWkt(e,s);case u.wkt.LineString:return f._parseWkt(e,s);case u.wkt.Polygon:return c._parseWkt(e,s);case u.wkt.MultiPoint:return l._parseWkt(e,s);case u.wkt.MultiLineString:return g._parseWkt(e,s);case u.wkt.MultiPolygon:return y._parseWkt(e,s);case u.wkt.GeometryCollection:return w._parseWkt(e,s)}},i._parseWkb=function(t,e){var r,n,i,o={};switch((r=t instanceof d?t:new d(t)).isBigEndian=!r.readInt8(),n=r.readUInt32(),o.hasSrid=536870912==(536870912&n),o.isEwkb=536870912&n||1073741824&n||2147483648&n,o.hasSrid&&(o.srid=r.readUInt32()),o.hasZ=!1,o.hasM=!1,i=o.isEwkb||e&&e.isEwkb?(2147483648&n&&(o.hasZ=!0),1073741824&n&&(o.hasM=!0),15&n):1e3<=n&&n<2e3?(o.hasZ=!0,n-1e3):2e3<=n&&n<3e3?(o.hasM=!0,n-2e3):3e3<=n&&n<4e3?(o.hasZ=!0,o.hasM=!0,n-3e3):n){case u.wkb.Point:return p._parseWkb(r,o);case u.wkb.LineString:return f._parseWkb(r,o);case u.wkb.Polygon:return c._parseWkb(r,o);case u.wkb.MultiPoint:return l._parseWkb(r,o);case u.wkb.MultiLineString:return g._parseWkb(r,o);case u.wkb.MultiPolygon:return y._parseWkb(r,o);case u.wkb.GeometryCollection:return w._parseWkb(r,o);default:throw new Error("GeometryType "+i+" not supported")}},i.parseTwkb=function(t){var e,r={},n=(e=t instanceof d?t:new d(t)).readUInt8(),i=e.readUInt8(),o=15&n;if(r.precision=b.decode(n>>4),r.precisionFactor=Math.pow(10,r.precision),r.hasBoundingBox=i>>0&1,r.hasSizeAttribute=i>>1&1,r.hasIdList=i>>2&1,r.hasExtendedPrecision=i>>3&1,r.isEmpty=i>>4&1,r.hasExtendedPrecision){var s=e.readUInt8();r.hasZ=1==(1&s),r.hasM=2==(2&s),r.zPrecision=b.decode((28&s)>>2),r.zPrecisionFactor=Math.pow(10,r.zPrecision),r.mPrecision=b.decode((224&s)>>5),r.mPrecisionFactor=Math.pow(10,r.mPrecision)}else r.hasZ=!1,r.hasM=!1;if(r.hasSizeAttribute&&e.readVarInt(),r.hasBoundingBox){var a=2;r.hasZ&&a++,r.hasM&&a++;for(var h=0;h<a;h++)e.readVarInt(),e.readVarInt()}switch(o){case u.wkb.Point:return p._parseTwkb(e,r);case u.wkb.LineString:return f._parseTwkb(e,r);case u.wkb.Polygon:return c._parseTwkb(e,r);case u.wkb.MultiPoint:return l._parseTwkb(e,r);case u.wkb.MultiLineString:return g._parseTwkb(e,r);case u.wkb.MultiPolygon:return y._parseTwkb(e,r);case u.wkb.GeometryCollection:return w._parseTwkb(e,r);default:throw new Error("GeometryType "+o+" not supported")}},i.parseGeoJSON=function(t){return i._parseGeoJSON(t)},i._parseGeoJSON=function(t,e){var r;switch(t.type){case u.geoJSON.Point:r=p._parseGeoJSON(t);break;case u.geoJSON.LineString:r=f._parseGeoJSON(t);break;case u.geoJSON.Polygon:r=c._parseGeoJSON(t);break;case u.geoJSON.MultiPoint:r=l._parseGeoJSON(t);break;case u.geoJSON.MultiLineString:r=g._parseGeoJSON(t);break;case u.geoJSON.MultiPolygon:r=y._parseGeoJSON(t);break;case u.geoJSON.GeometryCollection:r=w._parseGeoJSON(t);break;default:throw new Error("GeometryType "+t.type+" not supported")}if(t.crs&&t.crs.type&&"name"===t.crs.type&&t.crs.properties&&t.crs.properties.name){var n=t.crs.properties.name;if(0===n.indexOf("EPSG:"))r.srid=parseInt(n.substring(5));else{if(0!==n.indexOf("urn:ogc:def:crs:EPSG::"))throw new Error("Unsupported crs: "+n);r.srid=parseInt(n.substring(22))}}else e||(r.srid=4326);return r},i.prototype.toEwkt=function(){return"SRID="+this.srid+";"+this.toWkt()},i.prototype.toEwkb=function(){var t=new n(this._getWkbSize()+4),e=this.toWkb();return t.writeInt8(1),t.writeUInt32LE((536870912|e.slice(1,5).readUInt32LE(0))>>>0,!0),t.writeUInt32LE(this.srid),t.writeBuffer(e.slice(5)),t.buffer},i.prototype._getWktType=function(t,e){var r=t;return this.hasZ&&this.hasM?r+=" ZM ":this.hasZ?r+=" Z ":this.hasM&&(r+=" M "),!e||this.hasZ||this.hasM||(r+=" "),e&&(r+="EMPTY"),r},i.prototype._getWktCoordinate=function(t){var e=t.x+" "+t.y;return this.hasZ&&(e+=" "+t.z),this.hasM&&(e+=" "+t.m),e},i.prototype._writeWkbType=function(t,e,r){var n=0;void 0!==this.srid||r&&void 0!==r.srid?(this.hasZ&&(n|=2147483648),this.hasM&&(n|=1073741824)):this.hasZ&&this.hasM?n+=3e3:this.hasZ?n+=1e3:this.hasM&&(n+=2e3),t.writeUInt32LE(n+e>>>0,!0)},i.getTwkbPrecision=function(t,e,r){return{xy:t,z:e,m:r,xyFactor:Math.pow(10,t),zFactor:Math.pow(10,e),mFactor:Math.pow(10,r)}},i.prototype._writeTwkbHeader=function(t,e,r,n){var i=(b.encode(r.xy)<<4)+e,o=(this.hasZ||this.hasM)<<3;if(o+=n<<4,t.writeUInt8(i),t.writeUInt8(o),this.hasZ||this.hasM){var s=0;this.hasZ&&(s|=1),this.hasM&&(s|=2),t.writeUInt8(s)}},i.prototype.toGeoJSON=function(t){var e={};return this.srid&&t&&(t.shortCrs?e.crs={type:"name",properties:{name:"EPSG:"+this.srid}}:t.longCrs&&(e.crs={type:"name",properties:{name:"urn:ogc:def:crs:EPSG::"+this.srid}})),e}}).call(this,{isBuffer:t("../node_modules/is-buffer/index.js")})},{"../node_modules/is-buffer/index.js":17,"./binaryreader":1,"./binarywriter":2,"./geometrycollection":4,"./linestring":5,"./multilinestring":6,"./multipoint":7,"./multipolygon":8,"./point":9,"./polygon":10,"./types":11,"./wktparser":12,"./zigzag.js":13}],4:[function(t,e,r){e.exports=a;var n=t("util"),i=t("./types"),o=t("./geometry"),s=t("./binarywriter");function a(t,e){o.call(this),this.geometries=t||[],this.srid=e,0<this.geometries.length&&(this.hasZ=this.geometries[0].hasZ,this.hasM=this.geometries[0].hasM)}n.inherits(a,o),a.Z=function(t,e){var r=new a(t,e);return r.hasZ=!0,r},a.M=function(t,e){var r=new a(t,e);return r.hasM=!0,r},a.ZM=function(t,e){var r=new a(t,e);return r.hasZ=!0,r.hasM=!0,r},a._parseWkt=function(t,e){var r=new a;if(r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"]))return r;for(t.expectGroupStart();r.geometries.push(o.parse(t)),t.isMatch([","]););return t.expectGroupEnd(),r},a._parseWkb=function(t,e){var r=new a;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;for(var n=t.readUInt32(),i=0;i<n;i++)r.geometries.push(o.parse(t,e));return r},a._parseTwkb=function(t,e){var r=new a;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=t.readVarInt(),i=0;i<n;i++)r.geometries.push(o.parseTwkb(t));return r},a._parseGeoJSON=function(t){for(var e=new a,r=0;r<t.geometries.length;r++)e.geometries.push(o._parseGeoJSON(t.geometries[r],!0));return 0<e.geometries.length&&(e.hasZ=e.geometries[0].hasZ),e},a.prototype.toWkt=function(){if(0===this.geometries.length)return this._getWktType(i.wkt.GeometryCollection,!0);for(var t=this._getWktType(i.wkt.GeometryCollection,!1)+"(",e=0;e<this.geometries.length;e++)t+=this.geometries[e].toWkt()+",";return t=t.slice(0,-1),t+=")"},a.prototype.toWkb=function(){var t=new s(this._getWkbSize());t.writeInt8(1),this._writeWkbType(t,i.wkb.GeometryCollection),t.writeUInt32LE(this.geometries.length);for(var e=0;e<this.geometries.length;e++)t.writeBuffer(this.geometries[e].toWkb({srid:this.srid}));return t.buffer},a.prototype.toTwkb=function(){var t=new s(0,!0),e=o.getTwkbPrecision(5,0,0),r=0===this.geometries.length;if(this._writeTwkbHeader(t,i.wkb.GeometryCollection,e,r),0<this.geometries.length){t.writeVarInt(this.geometries.length);for(var n=0;n<this.geometries.length;n++)t.writeBuffer(this.geometries[n].toTwkb())}return t.buffer},a.prototype._getWkbSize=function(){for(var t=9,e=0;e<this.geometries.length;e++)t+=this.geometries[e]._getWkbSize();return t},a.prototype.toGeoJSON=function(t){var e=o.prototype.toGeoJSON.call(this,t);e.type=i.geoJSON.GeometryCollection,e.geometries=[];for(var r=0;r<this.geometries.length;r++)e.geometries.push(this.geometries[r].toGeoJSON());return e}},{"./binarywriter":2,"./geometry":3,"./types":11,util:20}],5:[function(t,e,r){e.exports=u;var n=t("util"),o=t("./geometry"),s=t("./types"),a=t("./point"),h=t("./binarywriter");function u(t,e){o.call(this),this.points=t||[],this.srid=e,0<this.points.length&&(this.hasZ=this.points[0].hasZ,this.hasM=this.points[0].hasM)}n.inherits(u,o),u.Z=function(t,e){var r=new u(t,e);return r.hasZ=!0,r},u.M=function(t,e){var r=new u(t,e);return r.hasM=!0,r},u.ZM=function(t,e){var r=new u(t,e);return r.hasZ=!0,r.hasM=!0,r},u._parseWkt=function(t,e){var r=new u;return r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"])||(t.expectGroupStart(),r.points.push.apply(r.points,t.matchCoordinates(e)),t.expectGroupEnd()),r},u._parseWkb=function(t,e){var r=new u;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;for(var n=t.readUInt32(),i=0;i<n;i++)r.points.push(a._readWkbPoint(t,e));return r},u._parseTwkb=function(t,e){var r=new u;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=new a(0,0,e.hasZ?0:void 0,e.hasM?0:void 0),i=t.readVarInt(),o=0;o<i;o++)r.points.push(a._readTwkbPoint(t,e,n));return r},u._parseGeoJSON=function(t){var e=new u;0<t.coordinates.length&&(e.hasZ=2<t.coordinates[0].length);for(var r=0;r<t.coordinates.length;r++)e.points.push(a._readGeoJSONPoint(t.coordinates[r]));return e},u.prototype.toWkt=function(){return 0===this.points.length?this._getWktType(s.wkt.LineString,!0):this._getWktType(s.wkt.LineString,!1)+this._toInnerWkt()},u.prototype._toInnerWkt=function(){for(var t="(",e=0;e<this.points.length;e++)t+=this._getWktCoordinate(this.points[e])+",";return t=t.slice(0,-1),t+=")"},u.prototype.toWkb=function(t){var e=new h(this._getWkbSize());e.writeInt8(1),this._writeWkbType(e,s.wkb.LineString,t),e.writeUInt32LE(this.points.length);for(var r=0;r<this.points.length;r++)this.points[r]._writeWkbPoint(e);return e.buffer},u.prototype.toTwkb=function(){var t=new h(0,!0),e=o.getTwkbPrecision(5,0,0),r=0===this.points.length;if(this._writeTwkbHeader(t,s.wkb.LineString,e,r),0<this.points.length){t.writeVarInt(this.points.length);for(var n=new a(0,0,0,0),i=0;i<this.points.length;i++)this.points[i]._writeTwkbPoint(t,e,n)}return t.buffer},u.prototype._getWkbSize=function(){var t=16;return this.hasZ&&(t+=8),this.hasM&&(t+=8),9+this.points.length*t},u.prototype.toGeoJSON=function(t){var e=o.prototype.toGeoJSON.call(this,t);e.type=s.geoJSON.LineString,e.coordinates=[];for(var r=0;r<this.points.length;r++)this.hasZ?e.coordinates.push([this.points[r].x,this.points[r].y,this.points[r].z]):e.coordinates.push([this.points[r].x,this.points[r].y]);return e}},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,util:20}],6:[function(t,e,r){e.exports=f;var n=t("util"),s=t("./types"),a=t("./geometry"),u=t("./point"),p=t("./linestring"),h=t("./binarywriter");function f(t,e){a.call(this),this.lineStrings=t||[],this.srid=e,0<this.lineStrings.length&&(this.hasZ=this.lineStrings[0].hasZ,this.hasM=this.lineStrings[0].hasM)}n.inherits(f,a),f.Z=function(t,e){var r=new f(t,e);return r.hasZ=!0,r},f.M=function(t,e){var r=new f(t,e);return r.hasM=!0,r},f.ZM=function(t,e){var r=new f(t,e);return r.hasZ=!0,r.hasM=!0,r},f._parseWkt=function(t,e){var r=new f;if(r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"]))return r;for(t.expectGroupStart();t.expectGroupStart(),r.lineStrings.push(new p(t.matchCoordinates(e))),t.expectGroupEnd(),t.isMatch([","]););return t.expectGroupEnd(),r},f._parseWkb=function(t,e){var r=new f;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;for(var n=t.readUInt32(),i=0;i<n;i++)r.lineStrings.push(a.parse(t,e));return r},f._parseTwkb=function(t,e){var r=new f;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=new u(0,0,e.hasZ?0:void 0,e.hasM?0:void 0),i=t.readVarInt(),o=0;o<i;o++){var s=new p;s.hasZ=e.hasZ,s.hasM=e.hasM;for(var a=t.readVarInt(),h=0;h<a;h++)s.points.push(u._readTwkbPoint(t,e,n));r.lineStrings.push(s)}return r},f._parseGeoJSON=function(t){var e=new f;0<t.coordinates.length&&0<t.coordinates[0].length&&(e.hasZ=2<t.coordinates[0][0].length);for(var r=0;r<t.coordinates.length;r++)e.lineStrings.push(p._parseGeoJSON({coordinates:t.coordinates[r]}));return e},f.prototype.toWkt=function(){if(0===this.lineStrings.length)return this._getWktType(s.wkt.MultiLineString,!0);for(var t=this._getWktType(s.wkt.MultiLineString,!1)+"(",e=0;e<this.lineStrings.length;e++)t+=this.lineStrings[e]._toInnerWkt()+",";return t=t.slice(0,-1),t+=")"},f.prototype.toWkb=function(){var t=new h(this._getWkbSize());t.writeInt8(1),this._writeWkbType(t,s.wkb.MultiLineString),t.writeUInt32LE(this.lineStrings.length);for(var e=0;e<this.lineStrings.length;e++)t.writeBuffer(this.lineStrings[e].toWkb({srid:this.srid}));return t.buffer},f.prototype.toTwkb=function(){var t=new h(0,!0),e=a.getTwkbPrecision(5,0,0),r=0===this.lineStrings.length;if(this._writeTwkbHeader(t,s.wkb.MultiLineString,e,r),0<this.lineStrings.length){t.writeVarInt(this.lineStrings.length);for(var n=new u(0,0,0,0),i=0;i<this.lineStrings.length;i++){t.writeVarInt(this.lineStrings[i].points.length);for(var o=0;o<this.lineStrings[i].points.length;o++)this.lineStrings[i].points[o]._writeTwkbPoint(t,e,n)}}return t.buffer},f.prototype._getWkbSize=function(){for(var t=9,e=0;e<this.lineStrings.length;e++)t+=this.lineStrings[e]._getWkbSize();return t},f.prototype.toGeoJSON=function(t){var e=a.prototype.toGeoJSON.call(this,t);e.type=s.geoJSON.MultiLineString,e.coordinates=[];for(var r=0;r<this.lineStrings.length;r++)e.coordinates.push(this.lineStrings[r].toGeoJSON().coordinates);return e}},{"./binarywriter":2,"./geometry":3,"./linestring":5,"./point":9,"./types":11,util:20}],7:[function(t,e,r){e.exports=u;var n=t("util"),o=t("./types"),s=t("./geometry"),a=t("./point"),h=t("./binarywriter");function u(t,e){s.call(this),this.points=t||[],this.srid=e,0<this.points.length&&(this.hasZ=this.points[0].hasZ,this.hasM=this.points[0].hasM)}n.inherits(u,s),u.Z=function(t,e){var r=new u(t,e);return r.hasZ=!0,r},u.M=function(t,e){var r=new u(t,e);return r.hasM=!0,r},u.ZM=function(t,e){var r=new u(t,e);return r.hasZ=!0,r.hasM=!0,r},u._parseWkt=function(t,e){var r=new u;return r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"])||(t.expectGroupStart(),r.points.push.apply(r.points,t.matchCoordinates(e)),t.expectGroupEnd()),r},u._parseWkb=function(t,e){var r=new u;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;for(var n=t.readUInt32(),i=0;i<n;i++)r.points.push(s.parse(t,e));return r},u._parseTwkb=function(t,e){var r=new u;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=new a(0,0,e.hasZ?0:void 0,e.hasM?0:void 0),i=t.readVarInt(),o=0;o<i;o++)r.points.push(a._readTwkbPoint(t,e,n));return r},u._parseGeoJSON=function(t){var e=new u;0<t.coordinates.length&&(e.hasZ=2<t.coordinates[0].length);for(var r=0;r<t.coordinates.length;r++)e.points.push(a._parseGeoJSON({coordinates:t.coordinates[r]}));return e},u.prototype.toWkt=function(){if(0===this.points.length)return this._getWktType(o.wkt.MultiPoint,!0);for(var t=this._getWktType(o.wkt.MultiPoint,!1)+"(",e=0;e<this.points.length;e++)t+=this._getWktCoordinate(this.points[e])+",";return t=t.slice(0,-1),t+=")"},u.prototype.toWkb=function(){var t=new h(this._getWkbSize());t.writeInt8(1),this._writeWkbType(t,o.wkb.MultiPoint),t.writeUInt32LE(this.points.length);for(var e=0;e<this.points.length;e++)t.writeBuffer(this.points[e].toWkb({srid:this.srid}));return t.buffer},u.prototype.toTwkb=function(){var t=new h(0,!0),e=s.getTwkbPrecision(5,0,0),r=0===this.points.length;if(this._writeTwkbHeader(t,o.wkb.MultiPoint,e,r),0<this.points.length){t.writeVarInt(this.points.length);for(var n=new a(0,0,0,0),i=0;i<this.points.length;i++)this.points[i]._writeTwkbPoint(t,e,n)}return t.buffer},u.prototype._getWkbSize=function(){var t=16;return this.hasZ&&(t+=8),this.hasM&&(t+=8),t+=5,9+this.points.length*t},u.prototype.toGeoJSON=function(t){var e=s.prototype.toGeoJSON.call(this,t);e.type=o.geoJSON.MultiPoint,e.coordinates=[];for(var r=0;r<this.points.length;r++)e.coordinates.push(this.points[r].toGeoJSON().coordinates);return e}},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,util:20}],8:[function(t,e,r){e.exports=y;var n=t("util"),a=t("./types"),h=t("./geometry"),l=t("./point"),g=t("./polygon"),u=t("./binarywriter");function y(t,e){h.call(this),this.polygons=t||[],this.srid=e,0<this.polygons.length&&(this.hasZ=this.polygons[0].hasZ,this.hasM=this.polygons[0].hasM)}n.inherits(y,h),y.Z=function(t,e){var r=new y(t,e);return r.hasZ=!0,r},y.M=function(t,e){var r=new y(t,e);return r.hasM=!0,r},y.ZM=function(t,e){var r=new y(t,e);return r.hasZ=!0,r.hasM=!0,r},y._parseWkt=function(t,e){var r=new y;if(r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"]))return r;t.expectGroupStart();do{t.expectGroupStart();var n=[],i=[];for(t.expectGroupStart(),n.push.apply(n,t.matchCoordinates(e)),t.expectGroupEnd();t.isMatch([","]);)t.expectGroupStart(),i.push(t.matchCoordinates(e)),t.expectGroupEnd();r.polygons.push(new g(n,i)),t.expectGroupEnd()}while(t.isMatch([","]));return t.expectGroupEnd(),r},y._parseWkb=function(t,e){var r=new y;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;for(var n=t.readUInt32(),i=0;i<n;i++)r.polygons.push(h.parse(t,e));return r},y._parseTwkb=function(t,e){var r=new y;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=new l(0,0,e.hasZ?0:void 0,e.hasM?0:void 0),i=t.readVarInt(),o=0;o<i;o++){var s=new g;s.hasZ=e.hasZ,s.hasM=e.hasM;for(var a=t.readVarInt(),h=t.readVarInt(),u=0;u<h;u++)s.exteriorRing.push(l._readTwkbPoint(t,e,n));for(u=1;u<a;u++){for(var p=[],f=t.readVarInt(),c=0;c<f;c++)p.push(l._readTwkbPoint(t,e,n));s.interiorRings.push(p)}r.polygons.push(s)}return r},y._parseGeoJSON=function(t){var e=new y;0<t.coordinates.length&&0<t.coordinates[0].length&&0<t.coordinates[0][0].length&&(e.hasZ=2<t.coordinates[0][0][0].length);for(var r=0;r<t.coordinates.length;r++)e.polygons.push(g._parseGeoJSON({coordinates:t.coordinates[r]}));return e},y.prototype.toWkt=function(){if(0===this.polygons.length)return this._getWktType(a.wkt.MultiPolygon,!0);for(var t=this._getWktType(a.wkt.MultiPolygon,!1)+"(",e=0;e<this.polygons.length;e++)t+=this.polygons[e]._toInnerWkt()+",";return t=t.slice(0,-1),t+=")"},y.prototype.toWkb=function(){var t=new u(this._getWkbSize());t.writeInt8(1),this._writeWkbType(t,a.wkb.MultiPolygon),t.writeUInt32LE(this.polygons.length);for(var e=0;e<this.polygons.length;e++)t.writeBuffer(this.polygons[e].toWkb({srid:this.srid}));return t.buffer},y.prototype.toTwkb=function(){var t=new u(0,!0),e=h.getTwkbPrecision(5,0,0),r=0===this.polygons.length;if(this._writeTwkbHeader(t,a.wkb.MultiPolygon,e,r),0<this.polygons.length){t.writeVarInt(this.polygons.length);for(var n=new l(0,0,0,0),i=0;i<this.polygons.length;i++){t.writeVarInt(1+this.polygons[i].interiorRings.length),t.writeVarInt(this.polygons[i].exteriorRing.length);for(var o=0;o<this.polygons[i].exteriorRing.length;o++)this.polygons[i].exteriorRing[o]._writeTwkbPoint(t,e,n);for(o=0;o<this.polygons[i].interiorRings.length;o++){t.writeVarInt(this.polygons[i].interiorRings[o].length);for(var s=0;s<this.polygons[i].interiorRings[o].length;s++)this.polygons[i].interiorRings[o][s]._writeTwkbPoint(t,e,n)}}}return t.buffer},y.prototype._getWkbSize=function(){for(var t=9,e=0;e<this.polygons.length;e++)t+=this.polygons[e]._getWkbSize();return t},y.prototype.toGeoJSON=function(t){var e=h.prototype.toGeoJSON.call(this,t);e.type=a.geoJSON.MultiPolygon,e.coordinates=[];for(var r=0;r<this.polygons.length;r++)e.coordinates.push(this.polygons[r].toGeoJSON().coordinates);return e}},{"./binarywriter":2,"./geometry":3,"./point":9,"./polygon":10,"./types":11,util:20}],9:[function(t,e,r){e.exports=h;var n=t("util"),o=t("./geometry"),i=t("./types"),s=t("./binarywriter"),a=t("./zigzag.js");function h(t,e,r,n,i){o.call(this),this.x=t,this.y=e,this.z=r,this.m=n,this.srid=i,this.hasZ=void 0!==this.z,this.hasM=void 0!==this.m}n.inherits(h,o),h.Z=function(t,e,r,n){var i=new h(t,e,r,void 0,n);return i.hasZ=!0,i},h.M=function(t,e,r,n){var i=new h(t,e,void 0,r,n);return i.hasM=!0,i},h.ZM=function(t,e,r,n,i){var o=new h(t,e,r,n,i);return o.hasZ=!0,o.hasM=!0,o},h._parseWkt=function(t,e){var r=new h;if(r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"]))return r;t.expectGroupStart();var n=t.matchCoordinate(e);return r.x=n.x,r.y=n.y,r.z=n.z,r.m=n.m,t.expectGroupEnd(),r},h._parseWkb=function(t,e){var r=h._readWkbPoint(t,e);return r.srid=e.srid,r},h._readWkbPoint=function(t,e){return new h(t.readDouble(),t.readDouble(),e.hasZ?t.readDouble():void 0,e.hasM?t.readDouble():void 0)},h._parseTwkb=function(t,e){var r=new h;return r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty||(r.x=a.decode(t.readVarInt())/e.precisionFactor,r.y=a.decode(t.readVarInt())/e.precisionFactor,r.z=e.hasZ?a.decode(t.readVarInt())/e.zPrecisionFactor:void 0,r.m=e.hasM?a.decode(t.readVarInt())/e.mPrecisionFactor:void 0),r},h._readTwkbPoint=function(t,e,r){return r.x+=a.decode(t.readVarInt())/e.precisionFactor,r.y+=a.decode(t.readVarInt())/e.precisionFactor,e.hasZ&&(r.z+=a.decode(t.readVarInt())/e.zPrecisionFactor),e.hasM&&(r.m+=a.decode(t.readVarInt())/e.mPrecisionFactor),new h(r.x,r.y,r.z,r.m)},h._parseGeoJSON=function(t){return h._readGeoJSONPoint(t.coordinates)},h._readGeoJSONPoint=function(t){return 0===t.length?new h:2<t.length?new h(t[0],t[1],t[2]):new h(t[0],t[1])},h.prototype.toWkt=function(){return void 0===this.x&&void 0===this.y&&void 0===this.z&&void 0===this.m?this._getWktType(i.wkt.Point,!0):this._getWktType(i.wkt.Point,!1)+"("+this._getWktCoordinate(this)+")"},h.prototype.toWkb=function(t){var e=new s(this._getWkbSize());return e.writeInt8(1),this._writeWkbType(e,i.wkb.Point,t),void 0===this.x&&void 0===this.y?(e.writeDoubleLE(NaN),e.writeDoubleLE(NaN),this.hasZ&&e.writeDoubleLE(NaN),this.hasM&&e.writeDoubleLE(NaN)):this._writeWkbPoint(e),e.buffer},h.prototype._writeWkbPoint=function(t){t.writeDoubleLE(this.x),t.writeDoubleLE(this.y),this.hasZ&&t.writeDoubleLE(this.z),this.hasM&&t.writeDoubleLE(this.m)},h.prototype.toTwkb=function(){var t=new s(0,!0),e=o.getTwkbPrecision(5,0,0),r=void 0===this.x&&void 0===this.y;return this._writeTwkbHeader(t,i.wkb.Point,e,r),r||this._writeTwkbPoint(t,e,new h(0,0,0,0)),t.buffer},h.prototype._writeTwkbPoint=function(t,e,r){var n=this.x*e.xyFactor,i=this.y*e.xyFactor,o=this.z*e.zFactor,s=this.m*e.mFactor;t.writeVarInt(a.encode(n-r.x)),t.writeVarInt(a.encode(i-r.y)),this.hasZ&&t.writeVarInt(a.encode(o-r.z)),this.hasM&&t.writeVarInt(a.encode(s-r.m)),r.x=n,r.y=i,r.z=o,r.m=s},h.prototype._getWkbSize=function(){var t=21;return this.hasZ&&(t+=8),this.hasM&&(t+=8),t},h.prototype.toGeoJSON=function(t){var e=o.prototype.toGeoJSON.call(this,t);return e.type=i.geoJSON.Point,void 0===this.x&&void 0===this.y?e.coordinates=[]:void 0!==this.z?e.coordinates=[this.x,this.y,this.z]:e.coordinates=[this.x,this.y],e}},{"./binarywriter":2,"./geometry":3,"./types":11,"./zigzag.js":13,util:20}],10:[function(t,e,r){e.exports=f;var n=t("util"),a=t("./geometry"),h=t("./types"),p=t("./point"),s=t("./binarywriter");function f(t,e,r){a.call(this),this.exteriorRing=t||[],this.interiorRings=e||[],this.srid=r,0<this.exteriorRing.length&&(this.hasZ=this.exteriorRing[0].hasZ,this.hasM=this.exteriorRing[0].hasM)}n.inherits(f,a),f.Z=function(t,e,r){var n=new f(t,e,r);return n.hasZ=!0,n},f.M=function(t,e,r){var n=new f(t,e,r);return n.hasM=!0,n},f.ZM=function(t,e,r){var n=new f(t,e,r);return n.hasZ=!0,n.hasM=!0,n},f._parseWkt=function(t,e){var r=new f;if(r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM,t.isMatch(["EMPTY"]))return r;for(t.expectGroupStart(),t.expectGroupStart(),r.exteriorRing.push.apply(r.exteriorRing,t.matchCoordinates(e)),t.expectGroupEnd();t.isMatch([","]);)t.expectGroupStart(),r.interiorRings.push(t.matchCoordinates(e)),t.expectGroupEnd();return t.expectGroupEnd(),r},f._parseWkb=function(t,e){var r=new f;r.srid=e.srid,r.hasZ=e.hasZ,r.hasM=e.hasM;var n=t.readUInt32();if(0<n){for(var i=t.readUInt32(),o=0;o<i;o++)r.exteriorRing.push(p._readWkbPoint(t,e));for(o=1;o<n;o++){for(var s=[],a=t.readUInt32(),h=0;h<a;h++)s.push(p._readWkbPoint(t,e));r.interiorRings.push(s)}}return r},f._parseTwkb=function(t,e){var r=new f;if(r.hasZ=e.hasZ,r.hasM=e.hasM,e.isEmpty)return r;for(var n=new p(0,0,e.hasZ?0:void 0,e.hasM?0:void 0),i=t.readVarInt(),o=t.readVarInt(),s=0;s<o;s++)r.exteriorRing.push(p._readTwkbPoint(t,e,n));for(s=1;s<i;s++){for(var a=[],h=t.readVarInt(),u=0;u<h;u++)a.push(p._readTwkbPoint(t,e,n));r.interiorRings.push(a)}return r},f._parseGeoJSON=function(t){var e=new f;0<t.coordinates.length&&0<t.coordinates[0].length&&(e.hasZ=2<t.coordinates[0][0].length);for(var r=0;r<t.coordinates.length;r++){0<r&&e.interiorRings.push([]);for(var n=0;n<t.coordinates[r].length;n++)0===r?e.exteriorRing.push(p._readGeoJSONPoint(t.coordinates[r][n])):e.interiorRings[r-1].push(p._readGeoJSONPoint(t.coordinates[r][n]))}return e},f.prototype.toWkt=function(){return 0===this.exteriorRing.length?this._getWktType(h.wkt.Polygon,!0):this._getWktType(h.wkt.Polygon,!1)+this._toInnerWkt()},f.prototype._toInnerWkt=function(){for(var t="((",e=0;e<this.exteriorRing.length;e++)t+=this._getWktCoordinate(this.exteriorRing[e])+",";for(t=t.slice(0,-1),t+=")",e=0;e<this.interiorRings.length;e++){t+=",(";for(var r=0;r<this.interiorRings[e].length;r++)t+=this._getWktCoordinate(this.interiorRings[e][r])+",";t=t.slice(0,-1),t+=")"}return t+=")"},f.prototype.toWkb=function(t){var e=new s(this._getWkbSize());e.writeInt8(1),this._writeWkbType(e,h.wkb.Polygon,t),0<this.exteriorRing.length?(e.writeUInt32LE(1+this.interiorRings.length),e.writeUInt32LE(this.exteriorRing.length)):e.writeUInt32LE(0);for(var r=0;r<this.exteriorRing.length;r++)this.exteriorRing[r]._writeWkbPoint(e);for(r=0;r<this.interiorRings.length;r++){e.writeUInt32LE(this.interiorRings[r].length);for(var n=0;n<this.interiorRings[r].length;n++)this.interiorRings[r][n]._writeWkbPoint(e)}return e.buffer},f.prototype.toTwkb=function(){var t=new s(0,!0),e=a.getTwkbPrecision(5,0,0),r=0===this.exteriorRing.length;if(this._writeTwkbHeader(t,h.wkb.Polygon,e,r),0<this.exteriorRing.length){t.writeVarInt(1+this.interiorRings.length),t.writeVarInt(this.exteriorRing.length);for(var n=new p(0,0,0,0),i=0;i<this.exteriorRing.length;i++)this.exteriorRing[i]._writeTwkbPoint(t,e,n);for(i=0;i<this.interiorRings.length;i++){t.writeVarInt(this.interiorRings[i].length);for(var o=0;o<this.interiorRings[i].length;o++)this.interiorRings[i][o]._writeTwkbPoint(t,e,n)}}return t.buffer},f.prototype._getWkbSize=function(){var t=16;this.hasZ&&(t+=8),this.hasM&&(t+=8);var e=9;0<this.exteriorRing.length&&(e+=4+this.exteriorRing.length*t);for(var r=0;r<this.interiorRings.length;r++)e+=4+this.interiorRings[r].length*t;return e},f.prototype.toGeoJSON=function(t){var e=a.prototype.toGeoJSON.call(this,t);if(e.type=h.geoJSON.Polygon,e.coordinates=[],0<this.exteriorRing.length){for(var r=[],n=0;n<this.exteriorRing.length;n++)this.hasZ?r.push([this.exteriorRing[n].x,this.exteriorRing[n].y,this.exteriorRing[n].z]):r.push([this.exteriorRing[n].x,this.exteriorRing[n].y]);e.coordinates.push(r)}for(var i=0;i<this.interiorRings.length;i++){for(var o=[],s=0;s<this.interiorRings[i].length;s++)this.hasZ?o.push([this.interiorRings[i][s].x,this.interiorRings[i][s].y,this.interiorRings[i][s].z]):o.push([this.interiorRings[i][s].x,this.interiorRings[i][s].y]);e.coordinates.push(o)}return e}},{"./binarywriter":2,"./geometry":3,"./point":9,"./types":11,util:20}],11:[function(t,e,r){e.exports={wkt:{Point:"POINT",LineString:"LINESTRING",Polygon:"POLYGON",MultiPoint:"MULTIPOINT",MultiLineString:"MULTILINESTRING",MultiPolygon:"MULTIPOLYGON",GeometryCollection:"GEOMETRYCOLLECTION"},wkb:{Point:1,LineString:2,Polygon:3,MultiPoint:4,MultiLineString:5,MultiPolygon:6,GeometryCollection:7},geoJSON:{Point:"Point",LineString:"LineString",Polygon:"Polygon",MultiPoint:"MultiPoint",MultiLineString:"MultiLineString",MultiPolygon:"MultiPolygon",GeometryCollection:"GeometryCollection"}}},{}],12:[function(t,e,r){e.exports=o;var n=t("./types"),i=t("./point");function o(t){this.value=t,this.position=0}o.prototype.match=function(t){this.skipWhitespaces();for(var e=0;e<t.length;e++)if(0===this.value.substring(this.position).indexOf(t[e]))return this.position+=t[e].length,t[e];return null},o.prototype.matchRegex=function(t){this.skipWhitespaces();for(var e=0;e<t.length;e++){var r=this.value.substring(this.position).match(t[e]);if(r)return this.position+=r[0].length,r}return null},o.prototype.isMatch=function(t){this.skipWhitespaces();for(var e=0;e<t.length;e++)if(0===this.value.substring(this.position).indexOf(t[e]))return this.position+=t[e].length,!0;return!1},o.prototype.matchType=function(){var t=this.match([n.wkt.Point,n.wkt.LineString,n.wkt.Polygon,n.wkt.MultiPoint,n.wkt.MultiLineString,n.wkt.MultiPolygon,n.wkt.GeometryCollection]);if(!t)throw new Error("Expected geometry type");return t},o.prototype.matchDimension=function(){switch(this.match(["ZM","Z","M"])){case"ZM":return{hasZ:!0,hasM:!0};case"Z":return{hasZ:!0,hasM:!1};case"M":return{hasZ:!1,hasM:!0};default:return{hasZ:!1,hasM:!1}}},o.prototype.expectGroupStart=function(){if(!this.isMatch(["("]))throw new Error("Expected group start")},o.prototype.expectGroupEnd=function(){if(!this.isMatch([")"]))throw new Error("Expected group end")},o.prototype.matchCoordinate=function(t){var e;if(!(e=t.hasZ&&t.hasM?this.matchRegex([/^(\S*)\s+(\S*)\s+(\S*)\s+([^\s,)]*)/]):t.hasZ||t.hasM?this.matchRegex([/^(\S*)\s+(\S*)\s+([^\s,)]*)/]):this.matchRegex([/^(\S*)\s+([^\s,)]*)/])))throw new Error("Expected coordinates");return t.hasZ&&t.hasM?new i(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]),parseFloat(e[4])):t.hasZ?new i(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3])):t.hasM?new i(parseFloat(e[1]),parseFloat(e[2]),void 0,parseFloat(e[3])):new i(parseFloat(e[1]),parseFloat(e[2]))},o.prototype.matchCoordinates=function(t){var e=[];do{var r=this.isMatch(["("]);e.push(this.matchCoordinate(t)),r&&this.expectGroupEnd()}while(this.isMatch([","]));return e},o.prototype.skipWhitespaces=function(){for(;this.position<this.value.length&&" "===this.value[this.position];)this.position++}},{"./point":9,"./types":11}],13:[function(t,e,r){e.exports={encode:function(t){return t<<1^t>>31},decode:function(t){return t>>1^-(1&t)}}},{}],14:[function(t,e,r){"use strict";r.byteLength=function(t){var e=f(t),r=e[0],n=e[1];return 3*(r+n)/4-n},r.toByteArray=function(t){var e,r,n=f(t),i=n[0],o=n[1],s=new p(function(t,e){return 3*(t+e)/4-e}(i,o)),a=0,h=0<o?i-4:i;for(r=0;r<h;r+=4)e=u[t.charCodeAt(r)]<<18|u[t.charCodeAt(r+1)]<<12|u[t.charCodeAt(r+2)]<<6|u[t.charCodeAt(r+3)],s[a++]=e>>16&255,s[a++]=e>>8&255,s[a++]=255&e;2===o&&(e=u[t.charCodeAt(r)]<<2|u[t.charCodeAt(r+1)]>>4,s[a++]=255&e);1===o&&(e=u[t.charCodeAt(r)]<<10|u[t.charCodeAt(r+1)]<<4|u[t.charCodeAt(r+2)]>>2,s[a++]=e>>8&255,s[a++]=255&e);return s},r.fromByteArray=function(t){for(var e,r=t.length,n=r%3,i=[],o=0,s=r-n;o<s;o+=16383)i.push(h(t,o,s<o+16383?s:o+16383));1==n?(e=t[r-1],i.push(a[e>>2]+a[e<<4&63]+"==")):2==n&&(e=(t[r-2]<<8)+t[r-1],i.push(a[e>>10]+a[e>>4&63]+a[e<<2&63]+"="));return i.join("")};for(var a=[],u=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=n.length;i<o;++i)a[i]=n[i],u[n.charCodeAt(i)]=i;function f(t){var e=t.length;if(0<e%4)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function h(t,e,r){for(var n,i,o=[],s=e;s<r;s+=3)n=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(255&t[s+2]),o.push(a[(i=n)>>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}u["-".charCodeAt(0)]=62,u["_".charCodeAt(0)]=63},{}],15:[function(t,e,r){r.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,h=(1<<a)-1,u=h>>1,p=-7,f=r?i-1:0,c=r?-1:1,l=t[e+f];for(f+=c,o=l&(1<<-p)-1,l>>=-p,p+=a;0<p;o=256*o+t[e+f],f+=c,p-=8);for(s=o&(1<<-p)-1,o>>=-p,p+=n;0<p;s=256*s+t[e+f],f+=c,p-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(l?-1:1);s+=Math.pow(2,n),o-=u}return(l?-1:1)*s*Math.pow(2,o-n)},r.write=function(t,e,r,n,i,o){var s,a,h,u=8*o-i-1,p=(1<<u)-1,f=p>>1,c=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,l=n?0:o-1,g=n?1:-1,y=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=p):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),2<=(e+=1<=s+f?c/h:c*Math.pow(2,1-f))*h&&(s++,h/=2),p<=s+f?(a=0,s=p):1<=s+f?(a=(e*h-1)*Math.pow(2,i),s+=f):(a=e*Math.pow(2,f-1)*Math.pow(2,i),s=0));8<=i;t[r+l]=255&a,l+=g,a/=256,i-=8);for(s=s<<i|a,u+=i;0<u;t[r+l]=255&s,l+=g,s/=256,u-=8);t[r+l-g]|=128*y}},{}],16:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(t,e){t.super_=e;function r(){}r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],17:[function(t,e,r){function n(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}e.exports=function(t){return null!=t&&(n(t)||"function"==typeof(e=t).readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))||!!t._isBuffer);var e}},{}],18:[function(t,e,r){var n,i,o=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function h(e){if(n===setTimeout)return setTimeout(e,0);if((n===s||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:s}catch(t){n=s}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(t){i=a}}();var u,p=[],f=!1,c=-1;function l(){f&&u&&(f=!1,u.length?p=u.concat(p):c=-1,p.length&&g())}function g(){if(!f){var t=h(l);f=!0;for(var e=p.length;e;){for(u=p,p=[];++c<e;)u&&u[c].run();c=-1,e=p.length}u=null,f=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(t)}}function y(t,e){this.fun=t,this.array=e}function w(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(1<arguments.length)for(var r=1;r<arguments.length;r++)e[r-1]=arguments[r];p.push(new y(t,e)),1!==p.length||f||h(g)},y.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=w,o.addListener=w,o.once=w,o.off=w,o.removeListener=w,o.removeAllListeners=w,o.emit=w,o.prependListener=w,o.prependOnceListener=w,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],19:[function(t,e,r){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],20:[function(c,t,x){(function(n,i){var a=/%[sdj%]/g;x.format=function(t){if(!m(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(h(arguments[r]));return e.join(" ")}r=1;for(var n=arguments,i=n.length,o=String(t).replace(a,function(t){if("%%"===t)return"%";if(i<=r)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),s=n[r];r<i;s=n[++r])b(s)||!p(s)?o+=" "+s:o+=" "+h(s);return o},x.deprecate=function(t,e){if(k(i.process))return function(){return x.deprecate(t,e).apply(this,arguments)};if(!0===n.noDeprecation)return t;var r=!1;return function(){if(!r){if(n.throwDeprecation)throw new Error(e);n.traceDeprecation?console.trace(e):console.error(e),r=!0}return t.apply(this,arguments)}};var t,o={};function h(t,e){var r={seen:[],stylize:u};return 3<=arguments.length&&(r.depth=arguments[2]),4<=arguments.length&&(r.colors=arguments[3]),d(e)?r.showHidden=e:e&&x._extend(r,e),k(r.showHidden)&&(r.showHidden=!1),k(r.depth)&&(r.depth=2),k(r.colors)&&(r.colors=!1),k(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=s),l(r,t,r.depth)}function s(t,e){var r=h.styles[e];return r?"["+h.colors[r][0]+"m"+t+"["+h.colors[r][1]+"m":t}function u(t,e){return t}function l(e,r,n){if(e.customInspect&&r&&I(r.inspect)&&r.inspect!==x.inspect&&(!r.constructor||r.constructor.prototype!==r)){var t=r.inspect(n,e);return m(t)||(t=l(e,t,n)),t}var i=function(t,e){if(k(e))return t.stylize("undefined","undefined");if(m(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(v(e))return t.stylize(""+e,"number");if(d(e))return t.stylize(""+e,"boolean");if(b(e))return t.stylize("null","null")}(e,r);if(i)return i;var o,s=Object.keys(r),a=(o={},s.forEach(function(t,e){o[t]=!0}),o);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),S(r)&&(0<=s.indexOf("message")||0<=s.indexOf("description")))return g(r);if(0===s.length){if(I(r)){var h=r.name?": "+r.name:"";return e.stylize("[Function"+h+"]","special")}if(M(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(E(r))return e.stylize(Date.prototype.toString.call(r),"date");if(S(r))return g(r)}var u,p="",f=!1,c=["{","}"];w(r)&&(f=!0,c=["[","]"]),I(r)&&(p=" [Function"+(r.name?": "+r.name:"")+"]");return M(r)&&(p=" "+RegExp.prototype.toString.call(r)),E(r)&&(p=" "+Date.prototype.toUTCString.call(r)),S(r)&&(p=" "+g(r)),0!==s.length||f&&0!=r.length?n<0?M(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),u=f?function(e,r,n,i,t){for(var o=[],s=0,a=r.length;s<a;++s)_(r,String(s))?o.push(y(e,r,n,i,String(s),!0)):o.push("");return t.forEach(function(t){t.match(/^\d+$/)||o.push(y(e,r,n,i,t,!0))}),o}(e,r,n,a,s):s.map(function(t){return y(e,r,n,a,t,f)}),e.seen.pop(),function(t,e,r){if(60<t.reduce(function(t,e){return 0<=e.indexOf("\n")&&0,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0))return r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1];return r[0]+e+" "+t.join(", ")+" "+r[1]}(u,p,c)):c[0]+p+c[1]}function g(t){return"["+Error.prototype.toString.call(t)+"]"}function y(t,e,r,n,i,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),_(n,i)||(s="["+i+"]"),a||(t.seen.indexOf(h.value)<0?-1<(a=b(r)?l(t,h.value,null):l(t,h.value,r-1)).indexOf("\n")&&(a=o?a.split("\n").map(function(t){return"  "+t}).join("\n").substr(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n")):a=t.stylize("[Circular]","special")),k(s)){if(o&&i.match(/^\d+$/))return a;s=(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),t.stylize(s,"string"))}return s+": "+a}function w(t){return Array.isArray(t)}function d(t){return"boolean"==typeof t}function b(t){return null===t}function v(t){return"number"==typeof t}function m(t){return"string"==typeof t}function k(t){return void 0===t}function M(t){return p(t)&&"[object RegExp]"===e(t)}function p(t){return"object"==typeof t&&null!==t}function E(t){return p(t)&&"[object Date]"===e(t)}function S(t){return p(t)&&("[object Error]"===e(t)||t instanceof Error)}function I(t){return"function"==typeof t}function e(t){return Object.prototype.toString.call(t)}function r(t){return t<10?"0"+t.toString(10):t.toString(10)}x.debuglog=function(e){if(k(t)&&(t=n.env.NODE_DEBUG||""),e=e.toUpperCase(),!o[e])if(new RegExp("\\b"+e+"\\b","i").test(t)){var r=n.pid;o[e]=function(){var t=x.format.apply(x,arguments);console.error("%s %d: %s",e,r,t)}}else o[e]=function(){};return o[e]},(x.inspect=h).colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},h.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},x.isArray=w,x.isBoolean=d,x.isNull=b,x.isNullOrUndefined=function(t){return null==t},x.isNumber=v,x.isString=m,x.isSymbol=function(t){return"symbol"==typeof t},x.isUndefined=k,x.isRegExp=M,x.isObject=p,x.isDate=E,x.isError=S,x.isFunction=I,x.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},x.isBuffer=c("./support/isBuffer");var f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function _(t,e){return Object.prototype.hasOwnProperty.call(t,e)}x.log=function(){var t,e;console.log("%s - %s",(t=new Date,e=[r(t.getHours()),r(t.getMinutes()),r(t.getSeconds())].join(":"),[t.getDate(),f[t.getMonth()],e].join(" ")),x.format.apply(x,arguments))},x.inherits=c("inherits"),x._extend=function(t,e){if(!e||!p(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}}).call(this,c("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":19,_process:18,inherits:16}],buffer:[function(N,t,z){(function(f){"use strict";var n=N("base64-js"),o=N("ieee754"),t="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;z.Buffer=f,z.SlowBuffer=function(t){+t!=t&&(t=0);return f.alloc(+t)},z.INSPECT_MAX_BYTES=50;var r=2147483647;function s(t){if(r<t)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,f.prototype),e}function f(t,e,r){if("number"!=typeof t)return i(t,e,r);if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return h(t)}function i(t,e,r){if("string"==typeof t)return function(t,e){"string"==typeof e&&""!==e||(e="utf8");if(!f.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|l(t,e),n=s(r),i=n.write(t,e);i!==r&&(n=n.slice(0,i));return n}(t,e);if(ArrayBuffer.isView(t))return u(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(R(t,ArrayBuffer)||t&&R(t.buffer,ArrayBuffer))return p(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(R(t,SharedArrayBuffer)||t&&R(t.buffer,SharedArrayBuffer)))return p(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return f.from(n,e,r);var i=function(t){if(f.isBuffer(t)){var e=0|c(t.length),r=s(e);return 0===r.length?r:(t.copy(r,0,0,e),r)}if(void 0!==t.length)return"number"!=typeof t.length||U(t.length)?s(0):u(t);if("Buffer"===t.type&&Array.isArray(t.data))return u(t.data)}(t);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return f.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function a(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function h(t){return a(t),s(t<0?0:0|c(t))}function u(t){for(var e=t.length<0?0:0|c(t.length),r=s(e),n=0;n<e;n+=1)r[n]=255&t[n];return r}function p(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');var n;return n=void 0===e&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,e):new Uint8Array(t,e,r),Object.setPrototypeOf(n,f.prototype),n}function c(t){if(r<=t)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|t}function l(t,e){if(f.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||R(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var r=t.length,n=2<arguments.length&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return L(t).length;default:if(i)return n?-1:W(t).length;e=(""+e).toLowerCase(),i=!0}}function g(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):2147483647<r?r=2147483647:r<-2147483648&&(r=-2147483648),U(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=f.from(e,n)),f.isBuffer(e))return 0===e.length?-1:w(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):w(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function w(t,e,r,n,i){var o,s=1,a=t.length,h=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a/=s=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var p=-1;for(o=r;o<a;o++)if(u(t,o)===u(e,-1===p?0:o-p)){if(-1===p&&(p=o),o-p+1===h)return p*s}else-1!==p&&(o-=o-p),p=-1}else for(a<r+h&&(r=a-h),o=r;0<=o;o--){for(var f=!0,c=0;c<h;c++)if(u(t,o+c)!==u(e,c)){f=!1;break}if(f)return o}return-1}function d(t,e,r,n){r=Number(r)||0;var i=t.length-r;(!n||i<(n=Number(n)))&&(n=i);var o=e.length;o/2<n&&(n=o/2);for(var s=0;s<n;++s){var a=parseInt(e.substr(2*s,2),16);if(U(a))return s;t[r+s]=a}return s}function b(t,e,r,n){return B(function(t){for(var e=[],r=0;r<t.length;++r)e.push(255&t.charCodeAt(r));return e}(e),t,r,n)}function v(t,e,r,n){return B(function(t,e){for(var r,n,i,o=[],s=0;s<t.length&&!((e-=2)<0);++s)r=t.charCodeAt(s),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function m(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function k(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i<r;){var o,s,a,h,u=t[i],p=null,f=239<u?4:223<u?3:191<u?2:1;if(i+f<=r)switch(f){case 1:u<128&&(p=u);break;case 2:128==(192&(o=t[i+1]))&&127<(h=(31&u)<<6|63&o)&&(p=h);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&2047<(h=(15&u)<<12|(63&o)<<6|63&s)&&(h<55296||57343<h)&&(p=h);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&65535<(h=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)&&h<1114112&&(p=h)}null===p?(p=65533,f=1):65535<p&&(p-=65536,n.push(p>>>10&1023|55296),p=56320|1023&p),n.push(p),i+=f}return function(t){var e=t.length;if(e<=M)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n<e;)r+=String.fromCharCode.apply(String,t.slice(n,n+=M));return r}(n)}z.kMaxLength=r,(f.TYPED_ARRAY_SUPPORT=function(){try{var t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),42===t.foo()}catch(t){return!1}}())||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(f.prototype,"parent",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.buffer}}),Object.defineProperty(f.prototype,"offset",{enumerable:!0,get:function(){if(f.isBuffer(this))return this.byteOffset}}),"undefined"!=typeof Symbol&&null!=Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}),f.poolSize=8192,f.from=function(t,e,r){return i(t,e,r)},Object.setPrototypeOf(f.prototype,Uint8Array.prototype),Object.setPrototypeOf(f,Uint8Array),f.alloc=function(t,e,r){return i=e,o=r,a(n=t),n<=0||void 0===i?s(n):"string"==typeof o?s(n).fill(i,o):s(n).fill(i);var n,i,o},f.allocUnsafe=function(t){return h(t)},f.allocUnsafeSlow=function(t){return h(t)},f.isBuffer=function(t){return null!=t&&!0===t._isBuffer&&t!==f.prototype},f.compare=function(t,e){if(R(t,Uint8Array)&&(t=f.from(t,t.offset,t.byteLength)),R(e,Uint8Array)&&(e=f.from(e,e.offset,e.byteLength)),!f.isBuffer(t)||!f.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);i<o;++i)if(t[i]!==e[i]){r=t[i],n=e[i];break}return r<n?-1:n<r?1:0},f.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},f.concat=function(t,e){if(!Array.isArray(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return f.alloc(0);var r;if(void 0===e)for(r=e=0;r<t.length;++r)e+=t[r].length;var n=f.allocUnsafe(e),i=0;for(r=0;r<t.length;++r){var o=t[r];if(R(o,Uint8Array)&&(o=f.from(o)),!f.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,i),i+=o.length}return n},f.byteLength=l,f.prototype._isBuffer=!0,f.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)g(this,e,e+1);return this},f.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)g(this,e,e+3),g(this,e+1,e+2);return this},f.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)g(this,e,e+7),g(this,e+1,e+6),g(this,e+2,e+5),g(this,e+3,e+4);return this},f.prototype.toLocaleString=f.prototype.toString=function(){var t=this.length;return 0===t?"":0===arguments.length?k(this,0,t):function(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t=t||"utf8";;)switch(t){case"hex":return I(this,e,r);case"utf8":case"utf-8":return k(this,e,r);case"ascii":return E(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return m(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}.apply(this,arguments)},f.prototype.equals=function(t){if(!f.isBuffer(t))throw new TypeError("Argument must be a Buffer");return this===t||0===f.compare(this,t)},f.prototype.inspect=function(){var t="",e=z.INSPECT_MAX_BYTES;return t=this.toString("hex",0,e).replace(/(.{2})/g,"$1 ").trim(),this.length>e&&(t+=" ... "),"<Buffer "+t+">"},t&&(f.prototype[t]=f.prototype.inspect),f.prototype.compare=function(t,e,r,n,i){if(R(t,Uint8Array)&&(t=f.from(t,t.offset,t.byteLength)),!f.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(i<=n&&r<=e)return 0;if(i<=n)return-1;if(r<=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),h=this.slice(n,i),u=t.slice(e,r),p=0;p<a;++p)if(h[p]!==u[p]){o=h[p],s=u[p];break}return o<s?-1:s<o?1:0},f.prototype.includes=function(t,e,r){return-1!==this.indexOf(t,e,r)},f.prototype.indexOf=function(t,e,r){return y(this,t,e,r,!0)},f.prototype.lastIndexOf=function(t,e,r){return y(this,t,e,r,!1)},f.prototype.write=function(t,e,r,n){if(void 0===e)n="utf8",r=this.length,e=0;else if(void 0===r&&"string"==typeof e)n=e,r=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||i<r)&&(r=i),0<t.length&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n=n||"utf8";for(var o,s,a,h,u,p,f=!1;;)switch(n){case"hex":return d(this,t,e,r);case"utf8":case"utf-8":return u=e,p=r,B(W(t,(h=this).length-u),h,u,p);case"ascii":return b(this,t,e,r);case"latin1":case"binary":return b(this,t,e,r);case"base64":return o=this,s=e,a=r,B(L(t),o,s,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,t,e,r);default:if(f)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),f=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var M=4096;function E(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(127&t[i]);return n}function S(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;i<r;++i)n+=String.fromCharCode(t[i]);return n}function I(t,e,r){var n=t.length;(!e||e<0)&&(e=0),(!r||r<0||n<r)&&(r=n);for(var i="",o=e;o<r;++o)i+=G[t[o]];return i}function _(t,e,r){for(var n=t.slice(e,r),i="",o=0;o<n.length;o+=2)i+=String.fromCharCode(n[o]+256*n[o+1]);return i}function x(t,e,r){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(r<t+e)throw new RangeError("Trying to access beyond buffer length")}function T(t,e,r,n,i,o){if(!f.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(i<e||e<o)throw new RangeError('"value" argument is out of bounds');if(r+n>t.length)throw new RangeError("Index out of range")}function P(t,e,r,n){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Z(t,e,r,n,i){return e=+e,r>>>=0,i||P(t,0,r,4),o.write(t,e,r,n,23,4),r+4}function O(t,e,r,n,i){return e=+e,r>>>=0,i||P(t,0,r,8),o.write(t,e,r,n,52,8),r+8}f.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):r<t&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):r<e&&(e=r),e<t&&(e=t);var n=this.subarray(t,e);return Object.setPrototypeOf(n,f.prototype),n},f.prototype.readUIntLE=function(t,e,r){t>>>=0,e>>>=0,r||x(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return n},f.prototype.readUIntBE=function(t,e,r){t>>>=0,e>>>=0,r||x(t,e,this.length);for(var n=this[t+--e],i=1;0<e&&(i*=256);)n+=this[t+--e]*i;return n},f.prototype.readUInt8=function(t,e){return t>>>=0,e||x(t,1,this.length),this[t]},f.prototype.readUInt16LE=function(t,e){return t>>>=0,e||x(t,2,this.length),this[t]|this[t+1]<<8},f.prototype.readUInt16BE=function(t,e){return t>>>=0,e||x(t,2,this.length),this[t]<<8|this[t+1]},f.prototype.readUInt32LE=function(t,e){return t>>>=0,e||x(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},f.prototype.readUInt32BE=function(t,e){return t>>>=0,e||x(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},f.prototype.readIntLE=function(t,e,r){t>>>=0,e>>>=0,r||x(t,e,this.length);for(var n=this[t],i=1,o=0;++o<e&&(i*=256);)n+=this[t+o]*i;return(i*=128)<=n&&(n-=Math.pow(2,8*e)),n},f.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||x(t,e,this.length);for(var n=e,i=1,o=this[t+--n];0<n&&(i*=256);)o+=this[t+--n]*i;return(i*=128)<=o&&(o-=Math.pow(2,8*e)),o},f.prototype.readInt8=function(t,e){return t>>>=0,e||x(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},f.prototype.readInt16LE=function(t,e){t>>>=0,e||x(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt16BE=function(t,e){t>>>=0,e||x(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt32LE=function(t,e){return t>>>=0,e||x(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},f.prototype.readInt32BE=function(t,e){return t>>>=0,e||x(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},f.prototype.readFloatLE=function(t,e){return t>>>=0,e||x(t,4,this.length),o.read(this,t,!0,23,4)},f.prototype.readFloatBE=function(t,e){return t>>>=0,e||x(t,4,this.length),o.read(this,t,!1,23,4)},f.prototype.readDoubleLE=function(t,e){return t>>>=0,e||x(t,8,this.length),o.read(this,t,!0,52,8)},f.prototype.readDoubleBE=function(t,e){return t>>>=0,e||x(t,8,this.length),o.read(this,t,!1,52,8)},f.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||T(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o<r&&(i*=256);)this[e+o]=t/i&255;return e+r},f.prototype.writeUIntBE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||T(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,o=1;for(this[e+i]=255&t;0<=--i&&(o*=256);)this[e+i]=t/o&255;return e+r},f.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,1,255,0),this[e]=255&t,e+1},f.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},f.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},f.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},f.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},f.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);T(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o<r&&(s*=256);)t<0&&0===a&&0!==this[e+o-1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},f.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);T(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;0<=--o&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},f.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},f.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},f.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},f.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},f.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||T(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},f.prototype.writeFloatLE=function(t,e,r){return Z(this,t,e,!0,r)},f.prototype.writeFloatBE=function(t,e,r){return Z(this,t,e,!1,r)},f.prototype.writeDoubleLE=function(t,e,r){return O(this,t,e,!0,r)},f.prototype.writeDoubleBE=function(t,e,r){return O(this,t,e,!1,r)},f.prototype.copy=function(t,e,r,n){if(!f.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r=r||0,n||0===n||(n=this.length),e>=t.length&&(e=t.length),e=e||0,0<n&&n<r&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e<n-r&&(n=t.length-e+r);var i=n-r;if(this===t&&"function"==typeof Uint8Array.prototype.copyWithin)this.copyWithin(e,r,n);else if(this===t&&r<e&&e<n)for(var o=i-1;0<=o;--o)t[o+e]=this[o+r];else Uint8Array.prototype.set.call(t,this.subarray(r,n),e);return i},f.prototype.fill=function(t,e,r,n){if("string"==typeof t){if("string"==typeof e?(n=e,e=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!f.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===t.length){var i=t.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(t=i)}}else"number"==typeof t?t&=255:"boolean"==typeof t&&(t=Number(t));if(e<0||this.length<e||this.length<r)throw new RangeError("Out of range index");if(r<=e)return this;var o;if(e>>>=0,r=void 0===r?this.length:r>>>0,"number"==typeof(t=t||0))for(o=e;o<r;++o)this[o]=t;else{var s=f.isBuffer(t)?t:f.from(t,n),a=s.length;if(0===a)throw new TypeError('The value "'+t+'" is invalid for argument "value"');for(o=0;o<r-e;++o)this[o+e]=s[o%a]}return this};var e=/[^+/0-9A-Za-z-_]/g;function W(t,e){var r;e=e||1/0;for(var n=t.length,i=null,o=[],s=0;s<n;++s){if(55295<(r=t.charCodeAt(s))&&r<57344){if(!i){if(56319<r){-1<(e-=3)&&o.push(239,191,189);continue}if(s+1===n){-1<(e-=3)&&o.push(239,191,189);continue}i=r;continue}if(r<56320){-1<(e-=3)&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&-1<(e-=3)&&o.push(239,191,189);if(i=null,r<128){if(--e<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function L(t){return n.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(e,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function B(t,e,r,n){for(var i=0;i<n&&!(i+r>=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function R(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function U(t){return t!=t}var G=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)e[n+i]=t[r]+t[i];return e}()}).call(this,N("buffer").Buffer)},{"base64-js":14,buffer:"buffer",ieee754:15}],wkx:[function(t,e,r){r.Types=t("./types"),r.Geometry=t("./geometry"),r.Point=t("./point"),r.LineString=t("./linestring"),r.Polygon=t("./polygon"),r.MultiPoint=t("./multipoint"),r.MultiLineString=t("./multilinestring"),r.MultiPolygon=t("./multipolygon"),r.GeometryCollection=t("./geometrycollection")},{"./geometry":3,"./geometrycollection":4,"./linestring":5,"./multilinestring":6,"./multipoint":7,"./multipolygon":8,"./point":9,"./polygon":10,"./types":11}]},{},["wkx"]);
Index: ckend/node_modules/wkx/lib/binaryreader.js
===================================================================
--- backend/node_modules/wkx/lib/binaryreader.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,47 +1,0 @@
-module.exports = BinaryReader;
-
-function BinaryReader(buffer, isBigEndian) {
-    this.buffer = buffer;
-    this.position = 0;
-    this.isBigEndian = isBigEndian || false;
-}
-
-function _read(readLE, readBE, size) {
-    return function () {
-        var value;
-
-        if (this.isBigEndian)
-            value = readBE.call(this.buffer, this.position);
-        else
-            value = readLE.call(this.buffer, this.position);
-
-        this.position += size;
-
-        return value;
-    };
-}
-
-BinaryReader.prototype.readUInt8 = _read(Buffer.prototype.readUInt8, Buffer.prototype.readUInt8, 1);
-BinaryReader.prototype.readUInt16 = _read(Buffer.prototype.readUInt16LE, Buffer.prototype.readUInt16BE, 2);
-BinaryReader.prototype.readUInt32 = _read(Buffer.prototype.readUInt32LE, Buffer.prototype.readUInt32BE, 4);
-BinaryReader.prototype.readInt8 = _read(Buffer.prototype.readInt8, Buffer.prototype.readInt8, 1);
-BinaryReader.prototype.readInt16 = _read(Buffer.prototype.readInt16LE, Buffer.prototype.readInt16BE, 2);
-BinaryReader.prototype.readInt32 = _read(Buffer.prototype.readInt32LE, Buffer.prototype.readInt32BE, 4);
-BinaryReader.prototype.readFloat = _read(Buffer.prototype.readFloatLE, Buffer.prototype.readFloatBE, 4);
-BinaryReader.prototype.readDouble = _read(Buffer.prototype.readDoubleLE, Buffer.prototype.readDoubleBE, 8);
-
-BinaryReader.prototype.readVarInt = function () {
-    var nextByte,
-        result = 0,
-        bytesRead = 0;
-
-    do {
-        nextByte = this.buffer[this.position + bytesRead];
-        result += (nextByte & 0x7F) << (7 * bytesRead);
-        bytesRead++;
-    } while (nextByte >= 0x80);
-
-    this.position += bytesRead;
-
-    return result;
-};
Index: ckend/node_modules/wkx/lib/binarywriter.js
===================================================================
--- backend/node_modules/wkx/lib/binarywriter.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,65 +1,0 @@
-module.exports = BinaryWriter;
-
-function BinaryWriter(size, allowResize) {
-    this.buffer = new Buffer(size);
-    this.position = 0;
-    this.allowResize = allowResize;
-}
-
-function _write(write, size) {
-    return function (value, noAssert) {
-        this.ensureSize(size);
-
-        write.call(this.buffer, value, this.position, noAssert);
-        this.position += size;
-    };
-}
-
-BinaryWriter.prototype.writeUInt8 = _write(Buffer.prototype.writeUInt8, 1);
-BinaryWriter.prototype.writeUInt16LE = _write(Buffer.prototype.writeUInt16LE, 2);
-BinaryWriter.prototype.writeUInt16BE = _write(Buffer.prototype.writeUInt16BE, 2);
-BinaryWriter.prototype.writeUInt32LE = _write(Buffer.prototype.writeUInt32LE, 4);
-BinaryWriter.prototype.writeUInt32BE = _write(Buffer.prototype.writeUInt32BE, 4);
-BinaryWriter.prototype.writeInt8 = _write(Buffer.prototype.writeInt8, 1);
-BinaryWriter.prototype.writeInt16LE = _write(Buffer.prototype.writeInt16LE, 2);
-BinaryWriter.prototype.writeInt16BE = _write(Buffer.prototype.writeInt16BE, 2);
-BinaryWriter.prototype.writeInt32LE = _write(Buffer.prototype.writeInt32LE, 4);
-BinaryWriter.prototype.writeInt32BE = _write(Buffer.prototype.writeInt32BE, 4);
-BinaryWriter.prototype.writeFloatLE = _write(Buffer.prototype.writeFloatLE, 4);
-BinaryWriter.prototype.writeFloatBE = _write(Buffer.prototype.writeFloatBE, 4);
-BinaryWriter.prototype.writeDoubleLE = _write(Buffer.prototype.writeDoubleLE, 8);
-BinaryWriter.prototype.writeDoubleBE = _write(Buffer.prototype.writeDoubleBE, 8);
-
-BinaryWriter.prototype.writeBuffer = function (buffer) {
-    this.ensureSize(buffer.length);
-
-    buffer.copy(this.buffer, this.position, 0, buffer.length);
-    this.position += buffer.length;
-};
-
-BinaryWriter.prototype.writeVarInt = function (value) {
-    var length = 1;
-
-    while ((value & 0xFFFFFF80) !== 0) {
-        this.writeUInt8((value & 0x7F) | 0x80);
-        value >>>= 7;
-        length++;
-    }
-
-    this.writeUInt8(value & 0x7F);
-
-    return length;
-};
-
-BinaryWriter.prototype.ensureSize = function (size) {
-    if (this.buffer.length < this.position + size) {
-        if (this.allowResize) {
-            var tempBuffer = new Buffer(this.position + size);
-            this.buffer.copy(tempBuffer, 0, 0, this.buffer.length);
-            this.buffer = tempBuffer;
-        }
-        else {
-            throw new RangeError('index out of range');
-        }
-    }
-};
Index: ckend/node_modules/wkx/lib/geometry.js
===================================================================
--- backend/node_modules/wkx/lib/geometry.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,384 +1,0 @@
-module.exports = Geometry;
-
-var Types = require('./types');
-var Point = require('./point');
-var LineString = require('./linestring');
-var Polygon = require('./polygon');
-var MultiPoint = require('./multipoint');
-var MultiLineString = require('./multilinestring');
-var MultiPolygon = require('./multipolygon');
-var GeometryCollection = require('./geometrycollection');
-var BinaryReader = require('./binaryreader');
-var BinaryWriter = require('./binarywriter');
-var WktParser = require('./wktparser');
-var ZigZag = require('./zigzag.js');
-
-function Geometry() {
-    this.srid = undefined;
-    this.hasZ = false;
-    this.hasM = false;
-}
-
-Geometry.parse = function (value, options) {
-    var valueType = typeof value;
-
-    if (valueType === 'string' || value instanceof WktParser)
-        return Geometry._parseWkt(value);
-    else if (Buffer.isBuffer(value) || value instanceof BinaryReader)
-        return Geometry._parseWkb(value, options);
-    else
-        throw new Error('first argument must be a string or Buffer');
-};
-
-Geometry._parseWkt = function (value) {
-    var wktParser,
-        srid;
-
-    if (value instanceof WktParser)
-        wktParser = value;
-    else
-        wktParser = new WktParser(value);
-
-    var match = wktParser.matchRegex([/^SRID=(\d+);/]);
-    if (match)
-        srid = parseInt(match[1], 10);
-
-    var geometryType = wktParser.matchType();
-    var dimension = wktParser.matchDimension();
-
-    var options = {
-        srid: srid,
-        hasZ: dimension.hasZ,
-        hasM: dimension.hasM
-    };
-
-    switch (geometryType) {
-        case Types.wkt.Point:
-            return Point._parseWkt(wktParser, options);
-        case Types.wkt.LineString:
-            return LineString._parseWkt(wktParser, options);
-        case Types.wkt.Polygon:
-            return Polygon._parseWkt(wktParser, options);
-        case Types.wkt.MultiPoint:
-            return MultiPoint._parseWkt(wktParser, options);
-        case Types.wkt.MultiLineString:
-            return MultiLineString._parseWkt(wktParser, options);
-        case Types.wkt.MultiPolygon:
-            return MultiPolygon._parseWkt(wktParser, options);
-        case Types.wkt.GeometryCollection:
-            return GeometryCollection._parseWkt(wktParser, options);
-    }
-};
-
-Geometry._parseWkb = function (value, parentOptions) {
-    var binaryReader,
-        wkbType,
-        geometryType,
-        options = {};
-
-    if (value instanceof BinaryReader)
-        binaryReader = value;
-    else
-        binaryReader = new BinaryReader(value);
-
-    binaryReader.isBigEndian = !binaryReader.readInt8();
-
-    wkbType = binaryReader.readUInt32();
-
-    options.hasSrid = (wkbType & 0x20000000) === 0x20000000;
-    options.isEwkb = (wkbType & 0x20000000) || (wkbType & 0x40000000) || (wkbType & 0x80000000);
-
-    if (options.hasSrid)
-        options.srid = binaryReader.readUInt32();
-
-    options.hasZ = false;
-    options.hasM = false;
-
-    if (!options.isEwkb && (!parentOptions || !parentOptions.isEwkb)) {
-        if (wkbType >= 1000 && wkbType < 2000) {
-            options.hasZ = true;
-            geometryType = wkbType - 1000;
-        }
-        else if (wkbType >= 2000 && wkbType < 3000) {
-            options.hasM = true;
-            geometryType = wkbType - 2000;
-        }
-        else if (wkbType >= 3000 && wkbType < 4000) {
-            options.hasZ = true;
-            options.hasM = true;
-            geometryType = wkbType - 3000;
-        }
-        else {
-            geometryType = wkbType;
-        }
-    }
-    else {
-        if (wkbType & 0x80000000)
-            options.hasZ = true;
-        if (wkbType & 0x40000000)
-            options.hasM = true;
-
-        geometryType = wkbType & 0xF;
-    }
-
-    switch (geometryType) {
-        case Types.wkb.Point:
-            return Point._parseWkb(binaryReader, options);
-        case Types.wkb.LineString:
-            return LineString._parseWkb(binaryReader, options);
-        case Types.wkb.Polygon:
-            return Polygon._parseWkb(binaryReader, options);
-        case Types.wkb.MultiPoint:
-            return MultiPoint._parseWkb(binaryReader, options);
-        case Types.wkb.MultiLineString:
-            return MultiLineString._parseWkb(binaryReader, options);
-        case Types.wkb.MultiPolygon:
-            return MultiPolygon._parseWkb(binaryReader, options);
-        case Types.wkb.GeometryCollection:
-            return GeometryCollection._parseWkb(binaryReader, options);
-        default:
-            throw new Error('GeometryType ' + geometryType + ' not supported');
-    }
-};
-
-Geometry.parseTwkb = function (value) {
-    var binaryReader,
-        options = {};
-
-    if (value instanceof BinaryReader)
-        binaryReader = value;
-    else
-        binaryReader = new BinaryReader(value);
-
-    var type = binaryReader.readUInt8();
-    var metadataHeader = binaryReader.readUInt8();
-
-    var geometryType = type & 0x0F;
-    options.precision = ZigZag.decode(type >> 4);
-    options.precisionFactor = Math.pow(10, options.precision);
-
-    options.hasBoundingBox = metadataHeader >> 0 & 1;
-    options.hasSizeAttribute = metadataHeader >> 1 & 1;
-    options.hasIdList = metadataHeader >> 2 & 1;
-    options.hasExtendedPrecision = metadataHeader >> 3 & 1;
-    options.isEmpty = metadataHeader >> 4 & 1;
-
-    if (options.hasExtendedPrecision) {
-        var extendedPrecision = binaryReader.readUInt8();
-        options.hasZ = (extendedPrecision & 0x01) === 0x01;
-        options.hasM = (extendedPrecision & 0x02) === 0x02;
-
-        options.zPrecision = ZigZag.decode((extendedPrecision & 0x1C) >> 2);
-        options.zPrecisionFactor = Math.pow(10, options.zPrecision);
-
-        options.mPrecision = ZigZag.decode((extendedPrecision & 0xE0) >> 5);
-        options.mPrecisionFactor = Math.pow(10, options.mPrecision);
-    }
-    else {
-        options.hasZ = false;
-        options.hasM = false;
-    }
-
-    if (options.hasSizeAttribute)
-        binaryReader.readVarInt();
-    if (options.hasBoundingBox) {
-        var dimensions = 2;
-
-        if (options.hasZ)
-            dimensions++;
-        if (options.hasM)
-            dimensions++;
-
-        for (var i = 0; i < dimensions; i++) {
-            binaryReader.readVarInt();
-            binaryReader.readVarInt();
-        }
-    }
-
-    switch (geometryType) {
-        case Types.wkb.Point:
-            return Point._parseTwkb(binaryReader, options);
-        case Types.wkb.LineString:
-            return LineString._parseTwkb(binaryReader, options);
-        case Types.wkb.Polygon:
-            return Polygon._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiPoint:
-            return MultiPoint._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiLineString:
-            return MultiLineString._parseTwkb(binaryReader, options);
-        case Types.wkb.MultiPolygon:
-            return MultiPolygon._parseTwkb(binaryReader, options);
-        case Types.wkb.GeometryCollection:
-            return GeometryCollection._parseTwkb(binaryReader, options);
-        default:
-            throw new Error('GeometryType ' + geometryType + ' not supported');
-    }
-};
-
-Geometry.parseGeoJSON = function (value) {
-    return Geometry._parseGeoJSON(value);
-};
-
-Geometry._parseGeoJSON = function (value, isSubGeometry) {
-    var geometry;
-
-    switch (value.type) {
-        case Types.geoJSON.Point:
-            geometry = Point._parseGeoJSON(value); break;
-        case Types.geoJSON.LineString:
-            geometry = LineString._parseGeoJSON(value); break;
-        case Types.geoJSON.Polygon:
-            geometry = Polygon._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiPoint:
-            geometry = MultiPoint._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiLineString:
-            geometry = MultiLineString._parseGeoJSON(value); break;
-        case Types.geoJSON.MultiPolygon:
-            geometry = MultiPolygon._parseGeoJSON(value); break;
-        case Types.geoJSON.GeometryCollection:
-            geometry = GeometryCollection._parseGeoJSON(value); break;
-        default:
-            throw new Error('GeometryType ' + value.type + ' not supported');
-    }
-
-    if (value.crs && value.crs.type && value.crs.type === 'name' && value.crs.properties && value.crs.properties.name) {
-        var crs = value.crs.properties.name;
-
-        if (crs.indexOf('EPSG:') === 0)
-            geometry.srid = parseInt(crs.substring(5));
-        else if (crs.indexOf('urn:ogc:def:crs:EPSG::') === 0)
-            geometry.srid = parseInt(crs.substring(22));
-        else
-            throw new Error('Unsupported crs: ' + crs);
-    }
-    else if (!isSubGeometry) {
-        geometry.srid = 4326;
-    }
-
-    return geometry;
-};
-
-Geometry.prototype.toEwkt = function () {
-    return 'SRID=' + this.srid + ';' + this.toWkt();
-};
-
-Geometry.prototype.toEwkb = function () {
-    var ewkb = new BinaryWriter(this._getWkbSize() + 4);
-    var wkb = this.toWkb();
-
-    ewkb.writeInt8(1);
-    ewkb.writeUInt32LE((wkb.slice(1, 5).readUInt32LE(0) | 0x20000000) >>> 0, true);
-    ewkb.writeUInt32LE(this.srid);
-
-    ewkb.writeBuffer(wkb.slice(5));
-
-    return ewkb.buffer;
-};
-
-Geometry.prototype._getWktType = function (wktType, isEmpty) {
-    var wkt = wktType;
-
-    if (this.hasZ && this.hasM)
-        wkt += ' ZM ';
-    else if (this.hasZ)
-        wkt += ' Z ';
-    else if (this.hasM)
-        wkt += ' M ';
-
-    if (isEmpty && !this.hasZ && !this.hasM)
-        wkt += ' ';
-
-    if (isEmpty)
-        wkt += 'EMPTY';
-
-    return wkt;
-};
-
-Geometry.prototype._getWktCoordinate = function (point) {
-    var coordinates = point.x + ' ' + point.y;
-
-    if (this.hasZ)
-        coordinates += ' ' + point.z;
-    if (this.hasM)
-        coordinates += ' ' + point.m;
-
-    return coordinates;
-};
-
-Geometry.prototype._writeWkbType = function (wkb, geometryType, parentOptions) {
-    var dimensionType = 0;
-
-    if (typeof this.srid === 'undefined' && (!parentOptions || typeof parentOptions.srid === 'undefined')) {
-        if (this.hasZ && this.hasM)
-            dimensionType += 3000;
-        else if (this.hasZ)
-            dimensionType += 1000;
-        else if (this.hasM)
-            dimensionType += 2000;
-    }
-    else {
-        if (this.hasZ)
-            dimensionType |= 0x80000000;
-        if (this.hasM)
-            dimensionType |= 0x40000000;
-    }
-
-    wkb.writeUInt32LE((dimensionType + geometryType) >>> 0, true);
-};
-
-Geometry.getTwkbPrecision = function (xyPrecision, zPrecision, mPrecision) {
-    return {
-        xy: xyPrecision,
-        z: zPrecision,
-        m: mPrecision,
-        xyFactor: Math.pow(10, xyPrecision),
-        zFactor: Math.pow(10, zPrecision),
-        mFactor: Math.pow(10, mPrecision)
-    };
-};
-
-Geometry.prototype._writeTwkbHeader = function (twkb, geometryType, precision, isEmpty) {
-    var type = (ZigZag.encode(precision.xy) << 4) + geometryType;
-    var metadataHeader = (this.hasZ || this.hasM) << 3;
-    metadataHeader += isEmpty << 4;
-
-    twkb.writeUInt8(type);
-    twkb.writeUInt8(metadataHeader);
-
-    if (this.hasZ || this.hasM) {
-        var extendedPrecision = 0;
-        if (this.hasZ)
-            extendedPrecision |= 0x1;
-        if (this.hasM)
-            extendedPrecision |= 0x2;
-
-        twkb.writeUInt8(extendedPrecision);
-    }
-};
-
-Geometry.prototype.toGeoJSON = function (options) {
-    var geoJSON = {};
-
-    if (this.srid) {
-        if (options) {
-            if (options.shortCrs) {
-                geoJSON.crs = {
-                    type: 'name',
-                    properties: {
-                        name: 'EPSG:' + this.srid
-                    }
-                };
-            }
-            else if (options.longCrs) {
-                geoJSON.crs = {
-                    type: 'name',
-                    properties: {
-                        name: 'urn:ogc:def:crs:EPSG::' + this.srid
-                    }
-                };
-            }
-        }
-    }
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/geometrycollection.js
===================================================================
--- backend/node_modules/wkx/lib/geometrycollection.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,169 +1,0 @@
-module.exports = GeometryCollection;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var BinaryWriter = require('./binarywriter');
-
-function GeometryCollection(geometries, srid) {
-    Geometry.call(this);
-
-    this.geometries = geometries || [];
-	this.srid = srid;
-
-    if (this.geometries.length > 0) {
-        this.hasZ = this.geometries[0].hasZ;
-        this.hasM = this.geometries[0].hasM;
-    }
-}
-
-util.inherits(GeometryCollection, Geometry);
-
-GeometryCollection.Z = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasZ = true;
-    return geometryCollection;
-};
-
-GeometryCollection.M = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasM = true;
-    return geometryCollection;
-};
-
-GeometryCollection.ZM = function (geometries, srid) {
-    var geometryCollection = new GeometryCollection(geometries, srid);
-    geometryCollection.hasZ = true;
-    geometryCollection.hasM = true;
-    return geometryCollection;
-};
-
-GeometryCollection._parseWkt = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.srid = options.srid;
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return geometryCollection;
-
-    value.expectGroupStart();
-
-    do {
-        geometryCollection.geometries.push(Geometry.parse(value));
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseWkb = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.srid = options.srid;
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    var geometryCount = value.readUInt32();
-
-    for (var i = 0; i < geometryCount; i++)
-        geometryCollection.geometries.push(Geometry.parse(value, options));
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseTwkb = function (value, options) {
-    var geometryCollection = new GeometryCollection();
-    geometryCollection.hasZ = options.hasZ;
-    geometryCollection.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return geometryCollection;
-
-    var geometryCount = value.readVarInt();
-
-    for (var i = 0; i < geometryCount; i++)
-        geometryCollection.geometries.push(Geometry.parseTwkb(value));
-
-    return geometryCollection;
-};
-
-GeometryCollection._parseGeoJSON = function (value) {
-    var geometryCollection = new GeometryCollection();
-
-    for (var i = 0; i < value.geometries.length; i++)
-        geometryCollection.geometries.push(Geometry._parseGeoJSON(value.geometries[i], true));
-
-    if (geometryCollection.geometries.length > 0)
-        geometryCollection.hasZ = geometryCollection.geometries[0].hasZ;
-
-    return geometryCollection;
-};
-
-GeometryCollection.prototype.toWkt = function () {
-    if (this.geometries.length === 0)
-        return this._getWktType(Types.wkt.GeometryCollection, true);
-
-    var wkt = this._getWktType(Types.wkt.GeometryCollection, false) + '(';
-
-    for (var i = 0; i < this.geometries.length; i++)
-        wkt += this.geometries[i].toWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-GeometryCollection.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.GeometryCollection);
-    wkb.writeUInt32LE(this.geometries.length);
-
-    for (var i = 0; i < this.geometries.length; i++)
-        wkb.writeBuffer(this.geometries[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-GeometryCollection.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.geometries.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.GeometryCollection, precision, isEmpty);
-
-    if (this.geometries.length > 0) {
-        twkb.writeVarInt(this.geometries.length);
-
-        for (var i = 0; i < this.geometries.length; i++)
-            twkb.writeBuffer(this.geometries[i].toTwkb());
-    }
-
-    return twkb.buffer;
-};
-
-GeometryCollection.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.geometries.length; i++)
-        size += this.geometries[i]._getWkbSize();
-
-    return size;
-};
-
-GeometryCollection.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.GeometryCollection;
-    geoJSON.geometries = [];
-
-    for (var i = 0; i < this.geometries.length; i++)
-        geoJSON.geometries.push(this.geometries[i].toGeoJSON());
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/linestring.js
===================================================================
--- backend/node_modules/wkx/lib/linestring.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,178 +1,0 @@
-module.exports = LineString;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function LineString(points, srid) {
-    Geometry.call(this);
-
-    this.points = points || [];
-	this.srid = srid;
-
-    if (this.points.length > 0) {
-        this.hasZ = this.points[0].hasZ;
-        this.hasM = this.points[0].hasM;
-    }
-}
-
-util.inherits(LineString, Geometry);
-
-LineString.Z = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasZ = true;
-    return lineString;
-};
-
-LineString.M = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasM = true;
-    return lineString;
-};
-
-LineString.ZM = function (points, srid) {
-    var lineString = new LineString(points, srid);
-    lineString.hasZ = true;
-    lineString.hasM = true;
-    return lineString;
-};
-
-LineString._parseWkt = function (value, options) {
-    var lineString = new LineString();
-    lineString.srid = options.srid;
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return lineString;
-
-    value.expectGroupStart();
-    lineString.points.push.apply(lineString.points, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    return lineString;
-};
-
-LineString._parseWkb = function (value, options) {
-    var lineString = new LineString();
-    lineString.srid = options.srid;
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    var pointCount = value.readUInt32();
-
-    for (var i = 0; i < pointCount; i++)
-        lineString.points.push(Point._readWkbPoint(value, options));
-
-    return lineString;
-};
-
-LineString._parseTwkb = function (value, options) {
-    var lineString = new LineString();
-    lineString.hasZ = options.hasZ;
-    lineString.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return lineString;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var pointCount = value.readVarInt();
-
-    for (var i = 0; i < pointCount; i++)
-        lineString.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    return lineString;
-};
-
-LineString._parseGeoJSON = function (value) {
-    var lineString = new LineString();
-
-    if (value.coordinates.length > 0)
-        lineString.hasZ = value.coordinates[0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        lineString.points.push(Point._readGeoJSONPoint(value.coordinates[i]));
-
-    return lineString;
-};
-
-LineString.prototype.toWkt = function () {
-    if (this.points.length === 0)
-        return this._getWktType(Types.wkt.LineString, true);
-
-    return this._getWktType(Types.wkt.LineString, false) + this._toInnerWkt();
-};
-
-LineString.prototype._toInnerWkt = function () {
-    var innerWkt = '(';
-
-    for (var i = 0; i < this.points.length; i++)
-        innerWkt += this._getWktCoordinate(this.points[i]) + ',';
-
-    innerWkt = innerWkt.slice(0, -1);
-    innerWkt += ')';
-
-    return innerWkt;
-};
-
-LineString.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.LineString, parentOptions);
-    wkb.writeUInt32LE(this.points.length);
-
-    for (var i = 0; i < this.points.length; i++)
-        this.points[i]._writeWkbPoint(wkb);
-
-    return wkb.buffer;
-};
-
-LineString.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.points.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.LineString, precision, isEmpty);
-
-    if (this.points.length > 0) {
-        twkb.writeVarInt(this.points.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.points.length; i++)
-            this.points[i]._writeTwkbPoint(twkb, precision, previousPoint);
-    }
-
-    return twkb.buffer;
-};
-
-LineString.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    return 1 + 4 + 4 + (this.points.length * coordinateSize);
-};
-
-LineString.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.LineString;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.points.length; i++) {
-        if (this.hasZ)
-            geoJSON.coordinates.push([this.points[i].x, this.points[i].y, this.points[i].z]);
-        else
-            geoJSON.coordinates.push([this.points[i].x, this.points[i].y]);
-    }
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/multilinestring.js
===================================================================
--- backend/node_modules/wkx/lib/multilinestring.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,189 +1,0 @@
-module.exports = MultiLineString;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var LineString = require('./linestring');
-var BinaryWriter = require('./binarywriter');
-
-function MultiLineString(lineStrings, srid) {
-    Geometry.call(this);
-
-    this.lineStrings = lineStrings || [];
-	this.srid = srid;
-
-    if (this.lineStrings.length > 0) {
-        this.hasZ = this.lineStrings[0].hasZ;
-        this.hasM = this.lineStrings[0].hasM;
-    }
-}
-
-util.inherits(MultiLineString, Geometry);
-
-MultiLineString.Z = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasZ = true;
-    return multiLineString;
-};
-
-MultiLineString.M = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasM = true;
-    return multiLineString;
-};
-
-MultiLineString.ZM = function (lineStrings, srid) {
-    var multiLineString = new MultiLineString(lineStrings, srid);
-    multiLineString.hasZ = true;
-    multiLineString.hasM = true;
-    return multiLineString;
-};
-
-MultiLineString._parseWkt = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.srid = options.srid;
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiLineString;
-
-    value.expectGroupStart();
-
-    do {
-        value.expectGroupStart();
-        multiLineString.lineStrings.push(new LineString(value.matchCoordinates(options)));
-        value.expectGroupEnd();
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return multiLineString;
-};
-
-MultiLineString._parseWkb = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.srid = options.srid;
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    var lineStringCount = value.readUInt32();
-
-    for (var i = 0; i < lineStringCount; i++)
-        multiLineString.lineStrings.push(Geometry.parse(value, options));
-
-    return multiLineString;
-};
-
-MultiLineString._parseTwkb = function (value, options) {
-    var multiLineString = new MultiLineString();
-    multiLineString.hasZ = options.hasZ;
-    multiLineString.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiLineString;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var lineStringCount = value.readVarInt();
-
-    for (var i = 0; i < lineStringCount; i++) {
-        var lineString = new LineString();
-        lineString.hasZ = options.hasZ;
-        lineString.hasM = options.hasM;
-
-        var pointCount = value.readVarInt();
-
-        for (var j = 0; j < pointCount; j++)
-            lineString.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        multiLineString.lineStrings.push(lineString);
-    }
-
-    return multiLineString;
-};
-
-MultiLineString._parseGeoJSON = function (value) {
-    var multiLineString = new MultiLineString();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0)
-        multiLineString.hasZ = value.coordinates[0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiLineString.lineStrings.push(LineString._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiLineString;
-};
-
-MultiLineString.prototype.toWkt = function () {
-    if (this.lineStrings.length === 0)
-        return this._getWktType(Types.wkt.MultiLineString, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiLineString, false) + '(';
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        wkt += this.lineStrings[i]._toInnerWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiLineString.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiLineString);
-    wkb.writeUInt32LE(this.lineStrings.length);
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        wkb.writeBuffer(this.lineStrings[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiLineString.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.lineStrings.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiLineString, precision, isEmpty);
-
-    if (this.lineStrings.length > 0) {
-        twkb.writeVarInt(this.lineStrings.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.lineStrings.length; i++) {
-            twkb.writeVarInt(this.lineStrings[i].points.length);
-
-            for (var j = 0; j < this.lineStrings[i].points.length; j++)
-                this.lineStrings[i].points[j]._writeTwkbPoint(twkb, precision, previousPoint);
-        }
-    }
-
-    return twkb.buffer;
-};
-
-MultiLineString.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        size += this.lineStrings[i]._getWkbSize();
-
-    return size;
-};
-
-MultiLineString.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiLineString;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.lineStrings.length; i++)
-        geoJSON.coordinates.push(this.lineStrings[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/multipoint.js
===================================================================
--- backend/node_modules/wkx/lib/multipoint.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,172 +1,0 @@
-module.exports = MultiPoint;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function MultiPoint(points, srid) {
-    Geometry.call(this);
-
-    this.points = points || [];
-	this.srid = srid;
-	
-    if (this.points.length > 0) {
-        this.hasZ = this.points[0].hasZ;
-        this.hasM = this.points[0].hasM;
-    }
-}
-
-util.inherits(MultiPoint, Geometry);
-
-MultiPoint.Z = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasZ = true;
-    return multiPoint;
-};
-
-MultiPoint.M = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasM = true;
-    return multiPoint;
-};
-
-MultiPoint.ZM = function (points, srid) {
-    var multiPoint = new MultiPoint(points, srid);
-    multiPoint.hasZ = true;
-    multiPoint.hasM = true;
-    return multiPoint;
-};
-
-MultiPoint._parseWkt = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.srid = options.srid;
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiPoint;
-
-    value.expectGroupStart();
-    multiPoint.points.push.apply(multiPoint.points, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    return multiPoint;
-};
-
-MultiPoint._parseWkb = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.srid = options.srid;
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    var pointCount = value.readUInt32();
-
-    for (var i = 0; i < pointCount; i++)
-        multiPoint.points.push(Geometry.parse(value, options));
-
-    return multiPoint;
-};
-
-MultiPoint._parseTwkb = function (value, options) {
-    var multiPoint = new MultiPoint();
-    multiPoint.hasZ = options.hasZ;
-    multiPoint.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiPoint;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var pointCount = value.readVarInt();
-
-    for (var i = 0; i < pointCount; i++)
-        multiPoint.points.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    return multiPoint;
-};
-
-MultiPoint._parseGeoJSON = function (value) {
-    var multiPoint = new MultiPoint();
-
-    if (value.coordinates.length > 0)
-        multiPoint.hasZ = value.coordinates[0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiPoint.points.push(Point._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiPoint;
-};
-
-MultiPoint.prototype.toWkt = function () {
-    if (this.points.length === 0)
-        return this._getWktType(Types.wkt.MultiPoint, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiPoint, false) + '(';
-
-    for (var i = 0; i < this.points.length; i++)
-        wkt += this._getWktCoordinate(this.points[i]) + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiPoint.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiPoint);
-    wkb.writeUInt32LE(this.points.length);
-
-    for (var i = 0; i < this.points.length; i++)
-        wkb.writeBuffer(this.points[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiPoint.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.points.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiPoint, precision, isEmpty);
-
-    if (this.points.length > 0) {
-        twkb.writeVarInt(this.points.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.points.length; i++)
-            this.points[i]._writeTwkbPoint(twkb, precision, previousPoint);
-    }
-
-    return twkb.buffer;
-};
-
-MultiPoint.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    coordinateSize += 5;
-
-    return 1 + 4 + 4 + (this.points.length * coordinateSize);
-};
-
-MultiPoint.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiPoint;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.points.length; i++)
-        geoJSON.coordinates.push(this.points[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/multipolygon.js
===================================================================
--- backend/node_modules/wkx/lib/multipolygon.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,226 +1,0 @@
-module.exports = MultiPolygon;
-
-var util = require('util');
-
-var Types = require('./types');
-var Geometry = require('./geometry');
-var Point = require('./point');
-var Polygon = require('./polygon');
-var BinaryWriter = require('./binarywriter');
-
-function MultiPolygon(polygons, srid) {
-    Geometry.call(this);
-
-    this.polygons = polygons || [];
-	this.srid = srid;
-
-    if (this.polygons.length > 0) {
-        this.hasZ = this.polygons[0].hasZ;
-        this.hasM = this.polygons[0].hasM;
-    }
-}
-
-util.inherits(MultiPolygon, Geometry);
-
-MultiPolygon.Z = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasZ = true;
-    return multiPolygon;
-};
-
-MultiPolygon.M = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasM = true;
-    return multiPolygon;
-};
-
-MultiPolygon.ZM = function (polygons, srid) {
-    var multiPolygon = new MultiPolygon(polygons, srid);
-    multiPolygon.hasZ = true;
-    multiPolygon.hasM = true;
-    return multiPolygon;
-};
-
-MultiPolygon._parseWkt = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.srid = options.srid;
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return multiPolygon;
-
-    value.expectGroupStart();
-
-    do {
-        value.expectGroupStart();
-
-        var exteriorRing = [];
-        var interiorRings = [];
-
-        value.expectGroupStart();
-        exteriorRing.push.apply(exteriorRing, value.matchCoordinates(options));
-        value.expectGroupEnd();
-
-        while (value.isMatch([','])) {
-            value.expectGroupStart();
-            interiorRings.push(value.matchCoordinates(options));
-            value.expectGroupEnd();
-        }
-
-        multiPolygon.polygons.push(new Polygon(exteriorRing, interiorRings));
-
-        value.expectGroupEnd();
-
-    } while (value.isMatch([',']));
-
-    value.expectGroupEnd();
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseWkb = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.srid = options.srid;
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    var polygonCount = value.readUInt32();
-
-    for (var i = 0; i < polygonCount; i++)
-        multiPolygon.polygons.push(Geometry.parse(value, options));
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseTwkb = function (value, options) {
-    var multiPolygon = new MultiPolygon();
-    multiPolygon.hasZ = options.hasZ;
-    multiPolygon.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return multiPolygon;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var polygonCount = value.readVarInt();
-
-    for (var i = 0; i < polygonCount; i++) {
-        var polygon = new Polygon();
-        polygon.hasZ = options.hasZ;
-        polygon.hasM = options.hasM;
-
-        var ringCount = value.readVarInt();
-        var exteriorRingCount = value.readVarInt();
-
-        for (var j = 0; j < exteriorRingCount; j++)
-            polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        for (j = 1; j < ringCount; j++) {
-            var interiorRing = [];
-
-            var interiorRingCount = value.readVarInt();
-
-            for (var k = 0; k < interiorRingCount; k++)
-                interiorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-            polygon.interiorRings.push(interiorRing);
-        }
-
-        multiPolygon.polygons.push(polygon);
-    }
-
-    return multiPolygon;
-};
-
-MultiPolygon._parseGeoJSON = function (value) {
-    var multiPolygon = new MultiPolygon();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0 && value.coordinates[0][0].length > 0)
-        multiPolygon.hasZ = value.coordinates[0][0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++)
-        multiPolygon.polygons.push(Polygon._parseGeoJSON({ coordinates: value.coordinates[i] }));
-
-    return multiPolygon;
-};
-
-MultiPolygon.prototype.toWkt = function () {
-    if (this.polygons.length === 0)
-        return this._getWktType(Types.wkt.MultiPolygon, true);
-
-    var wkt = this._getWktType(Types.wkt.MultiPolygon, false) + '(';
-
-    for (var i = 0; i < this.polygons.length; i++)
-        wkt += this.polygons[i]._toInnerWkt() + ',';
-
-    wkt = wkt.slice(0, -1);
-    wkt += ')';
-
-    return wkt;
-};
-
-MultiPolygon.prototype.toWkb = function () {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.MultiPolygon);
-    wkb.writeUInt32LE(this.polygons.length);
-
-    for (var i = 0; i < this.polygons.length; i++)
-        wkb.writeBuffer(this.polygons[i].toWkb({ srid: this.srid }));
-
-    return wkb.buffer;
-};
-
-MultiPolygon.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.polygons.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.MultiPolygon, precision, isEmpty);
-
-    if (this.polygons.length > 0) {
-        twkb.writeVarInt(this.polygons.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.polygons.length; i++) {
-            twkb.writeVarInt(1 + this.polygons[i].interiorRings.length);
-
-            twkb.writeVarInt(this.polygons[i].exteriorRing.length);
-
-            for (var j = 0; j < this.polygons[i].exteriorRing.length; j++)
-                this.polygons[i].exteriorRing[j]._writeTwkbPoint(twkb, precision, previousPoint);
-
-            for (j = 0; j < this.polygons[i].interiorRings.length; j++) {
-                twkb.writeVarInt(this.polygons[i].interiorRings[j].length);
-
-                for (var k = 0; k < this.polygons[i].interiorRings[j].length; k++)
-                    this.polygons[i].interiorRings[j][k]._writeTwkbPoint(twkb, precision, previousPoint);
-            }
-        }
-    }
-
-    return twkb.buffer;
-};
-
-MultiPolygon.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 4;
-
-    for (var i = 0; i < this.polygons.length; i++)
-        size += this.polygons[i]._getWkbSize();
-
-    return size;
-};
-
-MultiPolygon.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.MultiPolygon;
-    geoJSON.coordinates = [];
-
-    for (var i = 0; i < this.polygons.length; i++)
-        geoJSON.coordinates.push(this.polygons[i].toGeoJSON().coordinates);
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/point.js
===================================================================
--- backend/node_modules/wkx/lib/point.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,217 +1,0 @@
-module.exports = Point;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var BinaryWriter = require('./binarywriter');
-var ZigZag = require('./zigzag.js');
-
-function Point(x, y, z, m, srid) {
-    Geometry.call(this);
-
-    this.x = x;
-    this.y = y;
-    this.z = z;
-    this.m = m;
-	this.srid = srid;
-
-    this.hasZ = typeof this.z !== 'undefined';
-    this.hasM = typeof this.m !== 'undefined';
-}
-
-util.inherits(Point, Geometry);
-
-Point.Z = function (x, y, z, srid) {
-    var point = new Point(x, y, z, undefined, srid);
-    point.hasZ = true;
-    return point;
-};
-
-Point.M = function (x, y, m, srid) {
-    var point = new Point(x, y, undefined, m, srid);
-    point.hasM = true;
-    return point;
-};
-
-Point.ZM = function (x, y, z, m, srid) {
-    var point = new Point(x, y, z, m, srid);
-    point.hasZ = true;
-    point.hasM = true;
-    return point;
-};
-
-Point._parseWkt = function (value, options) {
-    var point = new Point();
-    point.srid = options.srid;
-    point.hasZ = options.hasZ;
-    point.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return point;
-
-    value.expectGroupStart();
-
-    var coordinate = value.matchCoordinate(options);
-
-    point.x = coordinate.x;
-    point.y = coordinate.y;
-    point.z = coordinate.z;
-    point.m = coordinate.m;
-
-    value.expectGroupEnd();
-
-    return point;
-};
-
-Point._parseWkb = function (value, options) {
-    var point = Point._readWkbPoint(value, options);
-    point.srid = options.srid;
-    return point;
-};
-
-Point._readWkbPoint = function (value, options) {
-    return new Point(value.readDouble(), value.readDouble(),
-        options.hasZ ? value.readDouble() : undefined,
-        options.hasM ? value.readDouble() : undefined);
-};
-
-Point._parseTwkb = function (value, options) {
-    var point = new Point();
-    point.hasZ = options.hasZ;
-    point.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return point;
-
-    point.x = ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    point.y = ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    point.z = options.hasZ ? ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor : undefined;
-    point.m = options.hasM ? ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor : undefined;
-
-    return point;
-};
-
-Point._readTwkbPoint = function (value, options, previousPoint) {
-    previousPoint.x += ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-    previousPoint.y += ZigZag.decode(value.readVarInt()) / options.precisionFactor;
-
-    if (options.hasZ)
-        previousPoint.z += ZigZag.decode(value.readVarInt()) / options.zPrecisionFactor;
-    if (options.hasM)
-        previousPoint.m += ZigZag.decode(value.readVarInt()) / options.mPrecisionFactor;
-
-    return new Point(previousPoint.x, previousPoint.y, previousPoint.z, previousPoint.m);
-};
-
-Point._parseGeoJSON = function (value) {
-    return Point._readGeoJSONPoint(value.coordinates);
-};
-
-Point._readGeoJSONPoint = function (coordinates) {
-    if (coordinates.length === 0)
-        return new Point();
-
-    if (coordinates.length > 2)
-        return new Point(coordinates[0], coordinates[1], coordinates[2]);
-
-    return new Point(coordinates[0], coordinates[1]);
-};
-
-Point.prototype.toWkt = function () {
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined' &&
-        typeof this.z === 'undefined' && typeof this.m === 'undefined')
-        return this._getWktType(Types.wkt.Point, true);
-
-    return this._getWktType(Types.wkt.Point, false) + '(' + this._getWktCoordinate(this) + ')';
-};
-
-Point.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-    this._writeWkbType(wkb, Types.wkb.Point, parentOptions);
-
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined') {
-        wkb.writeDoubleLE(NaN);
-        wkb.writeDoubleLE(NaN);
-
-        if (this.hasZ)
-            wkb.writeDoubleLE(NaN);
-        if (this.hasM)
-            wkb.writeDoubleLE(NaN);
-    }
-    else {
-        this._writeWkbPoint(wkb);
-    }
-
-    return wkb.buffer;
-};
-
-Point.prototype._writeWkbPoint = function (wkb) {
-    wkb.writeDoubleLE(this.x);
-    wkb.writeDoubleLE(this.y);
-
-    if (this.hasZ)
-        wkb.writeDoubleLE(this.z);
-    if (this.hasM)
-        wkb.writeDoubleLE(this.m);
-};
-
-Point.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = typeof this.x === 'undefined' && typeof this.y === 'undefined';
-
-    this._writeTwkbHeader(twkb, Types.wkb.Point, precision, isEmpty);
-
-    if (!isEmpty)
-        this._writeTwkbPoint(twkb, precision, new Point(0, 0, 0, 0));
-
-    return twkb.buffer;
-};
-
-Point.prototype._writeTwkbPoint = function (twkb, precision, previousPoint) {
-    var x = this.x * precision.xyFactor;
-    var y = this.y * precision.xyFactor;
-    var z = this.z * precision.zFactor;
-    var m = this.m * precision.mFactor;
-
-    twkb.writeVarInt(ZigZag.encode(x - previousPoint.x));
-    twkb.writeVarInt(ZigZag.encode(y - previousPoint.y));
-    if (this.hasZ)
-        twkb.writeVarInt(ZigZag.encode(z - previousPoint.z));
-    if (this.hasM)
-        twkb.writeVarInt(ZigZag.encode(m - previousPoint.m));
-
-    previousPoint.x = x;
-    previousPoint.y = y;
-    previousPoint.z = z;
-    previousPoint.m = m;
-};
-
-Point.prototype._getWkbSize = function () {
-    var size = 1 + 4 + 8 + 8;
-
-    if (this.hasZ)
-        size += 8;
-    if (this.hasM)
-        size += 8;
-
-    return size;
-};
-
-Point.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.Point;
-
-    if (typeof this.x === 'undefined' && typeof this.y === 'undefined')
-        geoJSON.coordinates = [];
-    else if (typeof this.z !== 'undefined')
-        geoJSON.coordinates = [this.x, this.y, this.z];
-    else
-        geoJSON.coordinates = [this.x, this.y];
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/polygon.js
===================================================================
--- backend/node_modules/wkx/lib/polygon.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,288 +1,0 @@
-module.exports = Polygon;
-
-var util = require('util');
-
-var Geometry = require('./geometry');
-var Types = require('./types');
-var Point = require('./point');
-var BinaryWriter = require('./binarywriter');
-
-function Polygon(exteriorRing, interiorRings, srid) {
-    Geometry.call(this);
-
-    this.exteriorRing = exteriorRing || [];
-    this.interiorRings = interiorRings || [];
-	this.srid = srid;
-
-    if (this.exteriorRing.length > 0) {
-        this.hasZ = this.exteriorRing[0].hasZ;
-        this.hasM = this.exteriorRing[0].hasM;
-    }
-}
-
-util.inherits(Polygon, Geometry);
-
-Polygon.Z = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasZ = true;
-    return polygon;
-};
-
-Polygon.M = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasM = true;
-    return polygon;
-};
-
-Polygon.ZM = function (exteriorRing, interiorRings, srid) {
-    var polygon = new Polygon(exteriorRing, interiorRings, srid);
-    polygon.hasZ = true;
-    polygon.hasM = true;
-    return polygon;
-};
-
-Polygon._parseWkt = function (value, options) {
-    var polygon = new Polygon();
-    polygon.srid = options.srid;
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    if (value.isMatch(['EMPTY']))
-        return polygon;
-
-    value.expectGroupStart();
-
-    value.expectGroupStart();
-    polygon.exteriorRing.push.apply(polygon.exteriorRing, value.matchCoordinates(options));
-    value.expectGroupEnd();
-
-    while (value.isMatch([','])) {
-        value.expectGroupStart();
-        polygon.interiorRings.push(value.matchCoordinates(options));
-        value.expectGroupEnd();
-    }
-
-    value.expectGroupEnd();
-
-    return polygon;
-};
-
-Polygon._parseWkb = function (value, options) {
-    var polygon = new Polygon();
-    polygon.srid = options.srid;
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    var ringCount = value.readUInt32();
-
-    if (ringCount > 0) {
-        var exteriorRingCount = value.readUInt32();
-
-        for (var i = 0; i < exteriorRingCount; i++)
-            polygon.exteriorRing.push(Point._readWkbPoint(value, options));
-
-        for (i = 1; i < ringCount; i++) {
-            var interiorRing = [];
-
-            var interiorRingCount = value.readUInt32();
-
-            for (var j = 0; j < interiorRingCount; j++)
-                interiorRing.push(Point._readWkbPoint(value, options));
-
-            polygon.interiorRings.push(interiorRing);
-        }
-    }
-
-    return polygon;
-};
-
-Polygon._parseTwkb = function (value, options) {
-    var polygon = new Polygon();
-    polygon.hasZ = options.hasZ;
-    polygon.hasM = options.hasM;
-
-    if (options.isEmpty)
-        return polygon;
-
-    var previousPoint = new Point(0, 0, options.hasZ ? 0 : undefined, options.hasM ? 0 : undefined);
-    var ringCount = value.readVarInt();
-    var exteriorRingCount = value.readVarInt();
-
-    for (var i = 0; i < exteriorRingCount; i++)
-        polygon.exteriorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-    for (i = 1; i < ringCount; i++) {
-        var interiorRing = [];
-
-        var interiorRingCount = value.readVarInt();
-
-        for (var j = 0; j < interiorRingCount; j++)
-            interiorRing.push(Point._readTwkbPoint(value, options, previousPoint));
-
-        polygon.interiorRings.push(interiorRing);
-    }
-
-    return polygon;
-};
-
-Polygon._parseGeoJSON = function (value) {
-    var polygon = new Polygon();
-
-    if (value.coordinates.length > 0 && value.coordinates[0].length > 0)
-        polygon.hasZ = value.coordinates[0][0].length > 2;
-
-    for (var i = 0; i < value.coordinates.length; i++) {
-        if (i > 0)
-            polygon.interiorRings.push([]);
-
-        for (var j = 0; j  < value.coordinates[i].length; j++) {
-            if (i === 0)
-                polygon.exteriorRing.push(Point._readGeoJSONPoint(value.coordinates[i][j]));
-            else
-                polygon.interiorRings[i - 1].push(Point._readGeoJSONPoint(value.coordinates[i][j]));
-        }
-    }
-
-    return polygon;
-};
-
-Polygon.prototype.toWkt = function () {
-    if (this.exteriorRing.length === 0)
-        return this._getWktType(Types.wkt.Polygon, true);
-
-    return this._getWktType(Types.wkt.Polygon, false) + this._toInnerWkt();
-};
-
-Polygon.prototype._toInnerWkt = function () {
-    var innerWkt = '((';
-
-    for (var i = 0; i < this.exteriorRing.length; i++)
-        innerWkt += this._getWktCoordinate(this.exteriorRing[i]) + ',';
-
-    innerWkt = innerWkt.slice(0, -1);
-    innerWkt += ')';
-
-    for (i = 0; i < this.interiorRings.length; i++) {
-        innerWkt += ',(';
-
-        for (var j = 0; j < this.interiorRings[i].length; j++) {
-            innerWkt += this._getWktCoordinate(this.interiorRings[i][j]) + ',';
-        }
-
-        innerWkt = innerWkt.slice(0, -1);
-        innerWkt += ')';
-    }
-
-    innerWkt += ')';
-
-    return innerWkt;
-};
-
-Polygon.prototype.toWkb = function (parentOptions) {
-    var wkb = new BinaryWriter(this._getWkbSize());
-
-    wkb.writeInt8(1);
-
-    this._writeWkbType(wkb, Types.wkb.Polygon, parentOptions);
-
-    if (this.exteriorRing.length > 0) {
-        wkb.writeUInt32LE(1 + this.interiorRings.length);
-        wkb.writeUInt32LE(this.exteriorRing.length);
-    }
-    else {
-        wkb.writeUInt32LE(0);
-    }
-
-    for (var i = 0; i < this.exteriorRing.length; i++)
-        this.exteriorRing[i]._writeWkbPoint(wkb);
-
-    for (i = 0; i < this.interiorRings.length; i++) {
-        wkb.writeUInt32LE(this.interiorRings[i].length);
-
-        for (var j = 0; j < this.interiorRings[i].length; j++)
-            this.interiorRings[i][j]._writeWkbPoint(wkb);
-    }
-
-    return wkb.buffer;
-};
-
-Polygon.prototype.toTwkb = function () {
-    var twkb = new BinaryWriter(0, true);
-
-    var precision = Geometry.getTwkbPrecision(5, 0, 0);
-    var isEmpty = this.exteriorRing.length === 0;
-
-    this._writeTwkbHeader(twkb, Types.wkb.Polygon, precision, isEmpty);
-
-    if (this.exteriorRing.length > 0) {
-        twkb.writeVarInt(1 + this.interiorRings.length);
-
-        twkb.writeVarInt(this.exteriorRing.length);
-
-        var previousPoint = new Point(0, 0, 0, 0);
-        for (var i = 0; i < this.exteriorRing.length; i++)
-            this.exteriorRing[i]._writeTwkbPoint(twkb, precision, previousPoint);
-
-        for (i = 0; i < this.interiorRings.length; i++) {
-            twkb.writeVarInt(this.interiorRings[i].length);
-
-            for (var j = 0; j < this.interiorRings[i].length; j++)
-                this.interiorRings[i][j]._writeTwkbPoint(twkb, precision, previousPoint);
-        }
-    }
-
-    return twkb.buffer;
-};
-
-Polygon.prototype._getWkbSize = function () {
-    var coordinateSize = 16;
-
-    if (this.hasZ)
-        coordinateSize += 8;
-    if (this.hasM)
-        coordinateSize += 8;
-
-    var size = 1 + 4 + 4;
-
-    if (this.exteriorRing.length > 0)
-        size += 4 + (this.exteriorRing.length * coordinateSize);
-
-    for (var i = 0; i < this.interiorRings.length; i++)
-        size += 4 + (this.interiorRings[i].length * coordinateSize);
-
-    return size;
-};
-
-Polygon.prototype.toGeoJSON = function (options) {
-    var geoJSON = Geometry.prototype.toGeoJSON.call(this, options);
-    geoJSON.type = Types.geoJSON.Polygon;
-    geoJSON.coordinates = [];
-
-    if (this.exteriorRing.length > 0) {
-        var exteriorRing = [];
-
-        for (var i = 0; i < this.exteriorRing.length; i++) {
-            if (this.hasZ)
-                exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y, this.exteriorRing[i].z]);
-            else
-                exteriorRing.push([this.exteriorRing[i].x, this.exteriorRing[i].y]);
-        }
-
-        geoJSON.coordinates.push(exteriorRing);
-    }
-
-    for (var j = 0; j < this.interiorRings.length; j++) {
-        var interiorRing = [];
-
-        for (var k = 0; k < this.interiorRings[j].length; k++) {
-            if (this.hasZ)
-                interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y, this.interiorRings[j][k].z]);
-            else
-                interiorRing.push([this.interiorRings[j][k].x, this.interiorRings[j][k].y]);
-        }
-
-        geoJSON.coordinates.push(interiorRing);
-    }
-
-    return geoJSON;
-};
Index: ckend/node_modules/wkx/lib/types.js
===================================================================
--- backend/node_modules/wkx/lib/types.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,29 +1,0 @@
-module.exports = {
-    wkt: {
-        Point: 'POINT',
-        LineString: 'LINESTRING',
-        Polygon: 'POLYGON',
-        MultiPoint: 'MULTIPOINT',
-        MultiLineString: 'MULTILINESTRING',
-        MultiPolygon: 'MULTIPOLYGON',
-        GeometryCollection: 'GEOMETRYCOLLECTION'
-    },
-    wkb: {
-        Point: 1,
-        LineString: 2,
-        Polygon: 3,
-        MultiPoint: 4,
-        MultiLineString: 5,
-        MultiPolygon: 6,
-        GeometryCollection: 7
-    },
-    geoJSON: {
-        Point: 'Point',
-        LineString: 'LineString',
-        Polygon: 'Polygon',
-        MultiPoint: 'MultiPoint',
-        MultiLineString: 'MultiLineString',
-        MultiPolygon: 'MultiPolygon',
-        GeometryCollection: 'GeometryCollection'
-    }
-};
Index: ckend/node_modules/wkx/lib/wktparser.js
===================================================================
--- backend/node_modules/wkx/lib/wktparser.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,124 +1,0 @@
-module.exports = WktParser;
-
-var Types = require('./types');
-var Point = require('./point');
-
-function WktParser(value) {
-    this.value = value;
-    this.position = 0;
-}
-
-WktParser.prototype.match = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        if (this.value.substring(this.position).indexOf(tokens[i]) === 0) {
-            this.position += tokens[i].length;
-            return tokens[i];
-        }
-    }
-
-    return null;
-};
-
-WktParser.prototype.matchRegex = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        var match = this.value.substring(this.position).match(tokens[i]);
-
-        if (match) {
-            this.position += match[0].length;
-            return match;
-        }
-    }
-
-    return null;
-};
-
-WktParser.prototype.isMatch = function (tokens) {
-    this.skipWhitespaces();
-
-    for (var i = 0; i < tokens.length; i++) {
-        if (this.value.substring(this.position).indexOf(tokens[i]) === 0) {
-            this.position += tokens[i].length;
-            return true;
-        }
-    }
-
-    return false;
-};
-
-WktParser.prototype.matchType = function () {
-    var geometryType = this.match([Types.wkt.Point, Types.wkt.LineString, Types.wkt.Polygon, Types.wkt.MultiPoint,
-    Types.wkt.MultiLineString, Types.wkt.MultiPolygon, Types.wkt.GeometryCollection]);
-
-    if (!geometryType)
-        throw new Error('Expected geometry type');
-
-    return geometryType;
-};
-
-WktParser.prototype.matchDimension = function () {
-    var dimension = this.match(['ZM', 'Z', 'M']);
-
-    switch (dimension) {
-        case 'ZM': return { hasZ: true, hasM: true };
-        case 'Z': return { hasZ: true, hasM: false };
-        case 'M': return { hasZ: false, hasM: true };
-        default: return { hasZ: false, hasM: false };
-    }
-};
-
-WktParser.prototype.expectGroupStart = function () {
-    if (!this.isMatch(['(']))
-        throw new Error('Expected group start');
-};
-
-WktParser.prototype.expectGroupEnd = function () {
-    if (!this.isMatch([')']))
-        throw new Error('Expected group end');
-};
-
-WktParser.prototype.matchCoordinate = function (options) {
-    var match;
-
-    if (options.hasZ && options.hasM)
-        match = this.matchRegex([/^(\S*)\s+(\S*)\s+(\S*)\s+([^\s,)]*)/]);
-    else if (options.hasZ || options.hasM)
-        match = this.matchRegex([/^(\S*)\s+(\S*)\s+([^\s,)]*)/]);
-    else
-        match = this.matchRegex([/^(\S*)\s+([^\s,)]*)/]);
-
-    if (!match)
-        throw new Error('Expected coordinates');
-
-    if (options.hasZ && options.hasM)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]), parseFloat(match[4]));
-    else if (options.hasZ)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), parseFloat(match[3]));
-    else if (options.hasM)
-        return new Point(parseFloat(match[1]), parseFloat(match[2]), undefined, parseFloat(match[3]));
-    else
-        return new Point(parseFloat(match[1]), parseFloat(match[2]));
-};
-
-WktParser.prototype.matchCoordinates = function (options) {
-    var coordinates = [];
-
-    do {
-        var startsWithBracket = this.isMatch(['(']);
-
-        coordinates.push(this.matchCoordinate(options));
-
-        if (startsWithBracket)
-            this.expectGroupEnd();
-    } while (this.isMatch([',']));
-
-    return coordinates;
-};
-
-WktParser.prototype.skipWhitespaces = function () {
-    while (this.position < this.value.length && this.value[this.position] === ' ')
-        this.position++;
-};
Index: ckend/node_modules/wkx/lib/wkx.d.ts
===================================================================
--- backend/node_modules/wkx/lib/wkx.d.ts	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,100 +1,0 @@
-/// <reference types="node" />
-
-declare module "wkx" {
-
-    export class Geometry {
-        srid: number;
-        hasZ: boolean;
-        hasM: boolean;
-
-        static parse(value: string | Buffer): Geometry;
-        static parseTwkb(value: Buffer): Geometry;
-        static parseGeoJSON(value: {}): Geometry;
-
-        toWkt(): string;
-        toEwkt(): string;
-        toWkb(): Buffer;
-        toEwkb(): Buffer;
-        toTwkb(): Buffer;
-        toGeoJSON(options?: GeoJSONOptions): {};
-    }
-
-    export interface GeoJSONOptions {
-        shortCrs?: boolean;
-        longCrs?: boolean;
-    }
-
-    export class Point extends Geometry {
-        x: number;
-        y: number;
-        z: number;
-        m: number;
-
-        constructor(x?: number, y?: number, z?: number, m?: number, srid?: number);
-
-        static Z(x: number, y: number, z: number, srid?: number): Point;
-        static M(x: number, y: number, m: number, srid?: number): Point;
-        static ZM(x: number, y: number, z: number, m: number, srid?: number): Point;
-    }
-
-    export class LineString extends Geometry {
-        points: Point[];
-
-        constructor(points?: Point[], srid?: number);
-        
-        static Z(points?: Point[], srid?: number): LineString;
-        static M(points?: Point[], srid?: number): LineString;
-        static ZM(points?: Point[], srid?: number): LineString;
-    }
-
-    export class Polygon extends Geometry {
-        exteriorRing: Point[];
-        interiorRings: Point[][];
-
-        constructor(exteriorRing?: Point[], interiorRings?: Point[][], srid?: number);
-
-        static Z(exteriorRing?: Point[], interiorRings?: Point[][], srid?: number): Polygon;
-        static M(exteriorRing?: Point[], interiorRings?: Point[][], srid?: number): Polygon;
-        static ZM(exteriorRing?: Point[], interiorRings?: Point[][], srid?: number): Polygon;
-    }
-
-    export class MultiPoint extends Geometry {
-        points: Point[];
-
-        constructor(points?: Point[], srid?: number);
-        
-        static Z(points?: Point[], srid?: number): MultiPoint;
-        static M(points?: Point[], srid?: number): MultiPoint;
-        static ZM(points?: Point[], srid?: number): MultiPoint;
-    }
-
-    export class MultiLineString extends Geometry {
-        lineStrings: LineString[];
-
-        constructor(lineStrings?: LineString[], srid?: number);
-        
-        static Z(lineStrings?: LineString[], srid?: number): MultiLineString;
-        static M(lineStrings?: LineString[], srid?: number): MultiLineString;
-        static ZM(lineStrings?: LineString[], srid?: number): MultiLineString;
-    }
-
-    export class MultiPolygon extends Geometry {
-        polygons: Polygon[];
-
-        constructor(polygons?: Polygon[], srid?: number);
-        
-        static Z(polygons?: Polygon[], srid?: number): MultiPolygon;
-        static M(polygons?: Polygon[], srid?: number): MultiPolygon;
-        static ZM(polygons?: Polygon[], srid?: number): MultiPolygon;
-    }
-
-    export class GeometryCollection extends Geometry {
-        geometries: Geometry[];
-
-        constructor(geometries?: Geometry[], srid?: number);
-        
-        static Z(geometries?: Geometry[], srid?: number): GeometryCollection;
-        static M(geometries?: Geometry[], srid?: number): GeometryCollection;
-        static ZM(geometries?: Geometry[], srid?: number): GeometryCollection;
-    }
-}
Index: ckend/node_modules/wkx/lib/wkx.js
===================================================================
--- backend/node_modules/wkx/lib/wkx.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,9 +1,0 @@
-exports.Types = require('./types');
-exports.Geometry = require('./geometry');
-exports.Point = require('./point');
-exports.LineString = require('./linestring');
-exports.Polygon = require('./polygon');
-exports.MultiPoint = require('./multipoint');
-exports.MultiLineString = require('./multilinestring');
-exports.MultiPolygon = require('./multipolygon');
-exports.GeometryCollection = require('./geometrycollection');
Index: ckend/node_modules/wkx/lib/zigzag.js
===================================================================
--- backend/node_modules/wkx/lib/zigzag.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,8 +1,0 @@
-module.exports = {
-    encode: function (value) {
-        return (value << 1) ^ (value >> 31);
-    },
-    decode: function (value) {
-        return (value >> 1) ^ (-(value & 1));
-    }
-};
Index: ckend/node_modules/wkx/package.json
===================================================================
--- backend/node_modules/wkx/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,50 +1,0 @@
-{
-  "name": "wkx",
-  "version": "0.5.0",
-  "description": "A WKT/WKB/EWKT/EWKB/TWKB/GeoJSON parser and serializer",
-  "main": "lib/wkx.js",
-  "types": "lib/wkx.d.ts",
-  "files": [
-    "dist/",
-    "lib/"
-  ],
-  "scripts": {
-    "test": "jshint . && nyc mocha",
-    "build": "mkdirp ./dist && browserify -r buffer -r ./lib/wkx.js:wkx ./lib/wkx.js > ./dist/wkx.js && uglifyjs -c -m -- ./dist/wkx.js > ./dist/wkx.min.js",
-    "coverage": "nyc report --reporter=text-lcov | coveralls"
-  },
-  "author": "Christian Schwarz",
-  "license": "MIT",
-  "devDependencies": {
-    "async": "^3.2.0",
-    "browserify": "^16.5.0",
-    "coveralls": "^3.0.11",
-    "deep-eql": "^4.0.0",
-    "jshint": "^2.11.0",
-    "json-stringify-pretty-compact": "^2.0.0",
-    "mkdirp": "^1.0.3",
-    "mocha": "^7.1.1",
-    "nyc": "^15.0.0",
-    "pg": "^7.18.2",
-    "uglify-js": "^3.8.0"
-  },
-  "repository": {
-    "type": "git",
-    "url": "http://github.com/cschwarz/wkx.git"
-  },
-  "keywords": [
-    "wkt",
-    "wkb",
-    "ewkt",
-    "ewkb",
-    "twkb",
-    "geojson",
-    "ogc",
-    "geometry",
-    "geography",
-    "spatial"
-  ],
-  "dependencies": {
-    "@types/node": "*"
-  }
-}
Index: ckend/node_modules/xtend/.jshintrc
===================================================================
--- backend/node_modules/xtend/.jshintrc	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,30 +1,0 @@
-{
-    "maxdepth": 4,
-    "maxstatements": 200,
-    "maxcomplexity": 12,
-    "maxlen": 80,
-    "maxparams": 5,
-
-    "curly": true,
-    "eqeqeq": true,
-    "immed": true,
-    "latedef": false,
-    "noarg": true,
-    "noempty": true,
-    "nonew": true,
-    "undef": true,
-    "unused": "vars",
-    "trailing": true,
-
-    "quotmark": true,
-    "expr": true,
-    "asi": true,
-
-    "browser": false,
-    "esnext": true,
-    "devel": false,
-    "node": false,
-    "nonstandard": false,
-
-    "predef": ["require", "module", "__dirname", "__filename"]
-}
Index: ckend/node_modules/xtend/LICENSE
===================================================================
--- backend/node_modules/xtend/LICENSE	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,20 +1,0 @@
-The MIT License (MIT)
-Copyright (c) 2012-2014 Raynos.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
Index: ckend/node_modules/xtend/README.md
===================================================================
--- backend/node_modules/xtend/README.md	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,32 +1,0 @@
-# xtend
-
-[![browser support][3]][4]
-
-[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges)
-
-Extend like a boss
-
-xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence.
-
-## Examples
-
-```js
-var extend = require("xtend")
-
-// extend returns a new object. Does not mutate arguments
-var combination = extend({
-    a: "a",
-    b: "c"
-}, {
-    b: "b"
-})
-// { a: "a", b: "b" }
-```
-
-## Stability status: Locked
-
-## MIT Licensed 
-
-
-  [3]: http://ci.testling.com/Raynos/xtend.png
-  [4]: http://ci.testling.com/Raynos/xtend
Index: ckend/node_modules/xtend/immutable.js
===================================================================
--- backend/node_modules/xtend/immutable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,19 +1,0 @@
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend() {
-    var target = {}
-
-    for (var i = 0; i < arguments.length; i++) {
-        var source = arguments[i]
-
-        for (var key in source) {
-            if (hasOwnProperty.call(source, key)) {
-                target[key] = source[key]
-            }
-        }
-    }
-
-    return target
-}
Index: ckend/node_modules/xtend/mutable.js
===================================================================
--- backend/node_modules/xtend/mutable.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,17 +1,0 @@
-module.exports = extend
-
-var hasOwnProperty = Object.prototype.hasOwnProperty;
-
-function extend(target) {
-    for (var i = 1; i < arguments.length; i++) {
-        var source = arguments[i]
-
-        for (var key in source) {
-            if (hasOwnProperty.call(source, key)) {
-                target[key] = source[key]
-            }
-        }
-    }
-
-    return target
-}
Index: ckend/node_modules/xtend/package.json
===================================================================
--- backend/node_modules/xtend/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,55 +1,0 @@
-{
-  "name": "xtend",
-  "version": "4.0.2",
-  "description": "extend like a boss",
-  "keywords": [
-    "extend",
-    "merge",
-    "options",
-    "opts",
-    "object",
-    "array"
-  ],
-  "author": "Raynos <raynos2@gmail.com>",
-  "repository": "git://github.com/Raynos/xtend.git",
-  "main": "immutable",
-  "scripts": {
-    "test": "node test"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "tape": "~1.1.0"
-  },
-  "homepage": "https://github.com/Raynos/xtend",
-  "contributors": [
-    {
-      "name": "Jake Verbaten"
-    },
-    {
-      "name": "Matt Esch"
-    }
-  ],
-  "bugs": {
-    "url": "https://github.com/Raynos/xtend/issues",
-    "email": "raynos2@gmail.com"
-  },
-  "license": "MIT",
-  "testling": {
-    "files": "test.js",
-    "browsers": [
-      "ie/7..latest",
-      "firefox/16..latest",
-      "firefox/nightly",
-      "chrome/22..latest",
-      "chrome/canary",
-      "opera/12..latest",
-      "opera/next",
-      "safari/5.1..latest",
-      "ipad/6.0..latest",
-      "iphone/6.0..latest"
-    ]
-  },
-  "engines": {
-    "node": ">=0.4"
-  }
-}
Index: ckend/node_modules/xtend/test.js
===================================================================
--- backend/node_modules/xtend/test.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,103 +1,0 @@
-var test = require("tape")
-var extend = require("./")
-var mutableExtend = require("./mutable")
-
-test("merge", function(assert) {
-    var a = { a: "foo" }
-    var b = { b: "bar" }
-
-    assert.deepEqual(extend(a, b), { a: "foo", b: "bar" })
-    assert.end()
-})
-
-test("replace", function(assert) {
-    var a = { a: "foo" }
-    var b = { a: "bar" }
-
-    assert.deepEqual(extend(a, b), { a: "bar" })
-    assert.end()
-})
-
-test("undefined", function(assert) {
-    var a = { a: undefined }
-    var b = { b: "foo" }
-
-    assert.deepEqual(extend(a, b), { a: undefined, b: "foo" })
-    assert.deepEqual(extend(b, a), { a: undefined, b: "foo" })
-    assert.end()
-})
-
-test("handle 0", function(assert) {
-    var a = { a: "default" }
-    var b = { a: 0 }
-
-    assert.deepEqual(extend(a, b), { a: 0 })
-    assert.deepEqual(extend(b, a), { a: "default" })
-    assert.end()
-})
-
-test("is immutable", function (assert) {
-    var record = {}
-
-    extend(record, { foo: "bar" })
-    assert.equal(record.foo, undefined)
-    assert.end()
-})
-
-test("null as argument", function (assert) {
-    var a = { foo: "bar" }
-    var b = null
-    var c = void 0
-
-    assert.deepEqual(extend(b, a, c), { foo: "bar" })
-    assert.end()
-})
-
-test("mutable", function (assert) {
-    var a = { foo: "bar" }
-
-    mutableExtend(a, { bar: "baz" })
-
-    assert.equal(a.bar, "baz")
-    assert.end()
-})
-
-test("null prototype", function(assert) {
-    var a = { a: "foo" }
-    var b = Object.create(null)
-    b.b = "bar";
-
-    assert.deepEqual(extend(a, b), { a: "foo", b: "bar" })
-    assert.end()
-})
-
-test("null prototype mutable", function (assert) {
-    var a = { foo: "bar" }
-    var b = Object.create(null)
-    b.bar = "baz";
-
-    mutableExtend(a, b)
-
-    assert.equal(a.bar, "baz")
-    assert.end()
-})
-
-test("prototype pollution", function (assert) {
-    var a = {}
-    var maliciousPayload = '{"__proto__":{"oops":"It works!"}}'
-
-    assert.strictEqual(a.oops, undefined)
-    extend({}, maliciousPayload)
-    assert.strictEqual(a.oops, undefined)
-    assert.end()
-})
-
-test("prototype pollution mutable", function (assert) {
-    var a = {}
-    var maliciousPayload = '{"__proto__":{"oops":"It works!"}}'
-
-    assert.strictEqual(a.oops, undefined)
-    mutableExtend({}, maliciousPayload)
-    assert.strictEqual(a.oops, undefined)
-    assert.end()
-})
Index: backend/package-lock.json
===================================================================
--- backend/package-lock.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/package-lock.json	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -10,9 +10,8 @@
       "license": "ISC",
       "dependencies": {
+        "@supabase/supabase-js": "^2.39.7",
         "bcrypt": "^6.0.0",
         "dotenv": "^16.5.0",
-        "express": "^5.1.0",
-        "pg": "^8.16.0",
-        "sequelize": "^6.37.7"
+        "express": "^5.1.0"
       },
       "devDependencies": {
@@ -20,18 +19,77 @@
       }
     },
-    "node_modules/@types/debug": {
-      "version": "4.1.12",
-      "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
-      "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/ms": "*"
-      }
-    },
-    "node_modules/@types/ms": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
-      "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
-      "license": "MIT"
+    "node_modules/@supabase/auth-js": {
+      "version": "2.69.1",
+      "resolved": "https://registry.npmjs.org/@supabase/auth-js/-/auth-js-2.69.1.tgz",
+      "integrity": "sha512-FILtt5WjCNzmReeRLq5wRs3iShwmnWgBvxHfqapC/VoljJl+W8hDAyFmf1NVw3zH+ZjZ05AKxiKxVeb0HNWRMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/functions-js": {
+      "version": "2.4.4",
+      "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.4.4.tgz",
+      "integrity": "sha512-WL2p6r4AXNGwop7iwvul2BvOtuJ1YQy8EbOd0dhG1oN1q8el/BIRSFCFnWAMM/vJJlHWLi4ad22sKbKr9mvjoA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/node-fetch": {
+      "version": "2.6.15",
+      "resolved": "https://registry.npmjs.org/@supabase/node-fetch/-/node-fetch-2.6.15.tgz",
+      "integrity": "sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==",
+      "license": "MIT",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      }
+    },
+    "node_modules/@supabase/postgrest-js": {
+      "version": "1.19.4",
+      "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.19.4.tgz",
+      "integrity": "sha512-O4soKqKtZIW3olqmbXXbKugUtByD2jPa8kL2m2c1oozAO11uCcGrRhkZL0kVxjBLrXHE0mdSkFsMj7jDSfyNpw==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/realtime-js": {
+      "version": "2.11.10",
+      "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.11.10.tgz",
+      "integrity": "sha512-SJKVa7EejnuyfImrbzx+HaD9i6T784khuw1zP+MBD7BmJYChegGxYigPzkKX8CK8nGuDntmeSD3fvriaH0EGZA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.13",
+        "@types/phoenix": "^1.6.6",
+        "@types/ws": "^8.18.1",
+        "ws": "^8.18.2"
+      }
+    },
+    "node_modules/@supabase/storage-js": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.7.1.tgz",
+      "integrity": "sha512-asYHcyDR1fKqrMpytAS1zjyEfvxuOIp1CIXX7ji4lHHcJKqyk+sLl/Vxgm4sN6u8zvuUtae9e4kDxQP2qrwWBA==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/node-fetch": "^2.6.14"
+      }
+    },
+    "node_modules/@supabase/supabase-js": {
+      "version": "2.49.10",
+      "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.49.10.tgz",
+      "integrity": "sha512-IRPcIdncuhD2m1eZ2Fkg0S1fq9SXlHfmAetBxPN66kVFtTucR8b01xKuVmKqcIJokB17umMf1bmqyS8yboXGsw==",
+      "license": "MIT",
+      "dependencies": {
+        "@supabase/auth-js": "2.69.1",
+        "@supabase/functions-js": "2.4.4",
+        "@supabase/node-fetch": "2.6.15",
+        "@supabase/postgrest-js": "1.19.4",
+        "@supabase/realtime-js": "2.11.10",
+        "@supabase/storage-js": "2.7.1"
+      }
     },
     "node_modules/@types/node": {
@@ -44,9 +102,18 @@
       }
     },
-    "node_modules/@types/validator": {
-      "version": "13.15.1",
-      "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.1.tgz",
-      "integrity": "sha512-9gG6ogYcoI2mCMLdcO0NYI0AYrbxIjv0MDmy/5Ywo6CpWWrqYayc+mmgxRsCgtcGJm9BSbXkMsmxGah1iGHAAQ==",
+    "node_modules/@types/phoenix": {
+      "version": "1.6.6",
+      "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz",
+      "integrity": "sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==",
       "license": "MIT"
+    },
+    "node_modules/@types/ws": {
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
     },
     "node_modules/accepts": {
@@ -301,10 +368,4 @@
         "url": "https://dotenvx.com"
       }
-    },
-    "node_modules/dottie": {
-      "version": "2.0.6",
-      "resolved": "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz",
-      "integrity": "sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA==",
-      "license": "MIT"
     },
     "node_modules/dunder-proto": {
@@ -627,13 +688,4 @@
       "license": "ISC"
     },
-    "node_modules/inflection": {
-      "version": "1.13.4",
-      "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz",
-      "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==",
-      "engines": [
-        "node >= 0.4.0"
-      ],
-      "license": "MIT"
-    },
     "node_modules/inherits": {
       "version": "2.0.4",
@@ -703,10 +755,4 @@
       "license": "MIT"
     },
-    "node_modules/lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
-      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
-      "license": "MIT"
-    },
     "node_modules/math-intrinsics": {
       "version": "1.1.0",
@@ -768,25 +814,4 @@
       "dependencies": {
         "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/moment": {
-      "version": "2.30.1",
-      "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
-      "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
-      "license": "MIT",
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/moment-timezone": {
-      "version": "0.5.48",
-      "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz",
-      "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==",
-      "license": "MIT",
-      "dependencies": {
-        "moment": "^2.29.4"
       },
       "engines": {
@@ -919,93 +944,4 @@
       }
     },
-    "node_modules/pg": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.0.tgz",
-      "integrity": "sha512-7SKfdvP8CTNXjMUzfcVTaI+TDzBEeaUnVwiVGZQD1Hh33Kpev7liQba9uLd4CfN8r9mCVsD0JIpq03+Unpz+kg==",
-      "license": "MIT",
-      "dependencies": {
-        "pg-connection-string": "^2.9.0",
-        "pg-pool": "^3.10.0",
-        "pg-protocol": "^1.10.0",
-        "pg-types": "2.2.0",
-        "pgpass": "1.0.5"
-      },
-      "engines": {
-        "node": ">= 8.0.0"
-      },
-      "optionalDependencies": {
-        "pg-cloudflare": "^1.2.5"
-      },
-      "peerDependencies": {
-        "pg-native": ">=3.0.1"
-      },
-      "peerDependenciesMeta": {
-        "pg-native": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/pg-cloudflare": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.5.tgz",
-      "integrity": "sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==",
-      "license": "MIT",
-      "optional": true
-    },
-    "node_modules/pg-connection-string": {
-      "version": "2.9.0",
-      "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.0.tgz",
-      "integrity": "sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==",
-      "license": "MIT"
-    },
-    "node_modules/pg-int8": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
-      "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/pg-pool": {
-      "version": "3.10.0",
-      "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.0.tgz",
-      "integrity": "sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==",
-      "license": "MIT",
-      "peerDependencies": {
-        "pg": ">=8.0"
-      }
-    },
-    "node_modules/pg-protocol": {
-      "version": "1.10.0",
-      "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.0.tgz",
-      "integrity": "sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==",
-      "license": "MIT"
-    },
-    "node_modules/pg-types": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
-      "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
-      "license": "MIT",
-      "dependencies": {
-        "pg-int8": "1.0.1",
-        "postgres-array": "~2.0.0",
-        "postgres-bytea": "~1.0.0",
-        "postgres-date": "~1.0.4",
-        "postgres-interval": "^1.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/pgpass": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
-      "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
-      "license": "MIT",
-      "dependencies": {
-        "split2": "^4.1.0"
-      }
-    },
     "node_modules/picomatch": {
       "version": "2.3.1",
@@ -1019,43 +955,4 @@
       "funding": {
         "url": "https://github.com/sponsors/jonschlinkert"
-      }
-    },
-    "node_modules/postgres-array": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
-      "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/postgres-bytea": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz",
-      "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postgres-date": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
-      "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/postgres-interval": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
-      "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
-      "license": "MIT",
-      "dependencies": {
-        "xtend": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
       }
     },
@@ -1131,10 +1028,4 @@
         "node": ">=8.10.0"
       }
-    },
-    "node_modules/retry-as-promised": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.1.1.tgz",
-      "integrity": "sha512-hMD7odLOt3LkTjcif8aRZqi/hybjpLNgSk5oF5FCowfCjok6LukpN2bDX7R5wDmbgBQFn7YoBxSagmtXHaJYJw==",
-      "license": "MIT"
     },
     "node_modules/router": {
@@ -1184,4 +1075,5 @@
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
       "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+      "dev": true,
       "license": "ISC",
       "bin": {
@@ -1214,75 +1106,4 @@
       }
     },
-    "node_modules/sequelize": {
-      "version": "6.37.7",
-      "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-6.37.7.tgz",
-      "integrity": "sha512-mCnh83zuz7kQxxJirtFD7q6Huy6liPanI67BSlbzSYgVNl5eXVdE2CN1FuAeZwG1SNpGsNRCV+bJAVVnykZAFA==",
-      "funding": [
-        {
-          "type": "opencollective",
-          "url": "https://opencollective.com/sequelize"
-        }
-      ],
-      "license": "MIT",
-      "dependencies": {
-        "@types/debug": "^4.1.8",
-        "@types/validator": "^13.7.17",
-        "debug": "^4.3.4",
-        "dottie": "^2.0.6",
-        "inflection": "^1.13.4",
-        "lodash": "^4.17.21",
-        "moment": "^2.29.4",
-        "moment-timezone": "^0.5.43",
-        "pg-connection-string": "^2.6.1",
-        "retry-as-promised": "^7.0.4",
-        "semver": "^7.5.4",
-        "sequelize-pool": "^7.1.0",
-        "toposort-class": "^1.0.1",
-        "uuid": "^8.3.2",
-        "validator": "^13.9.0",
-        "wkx": "^0.5.0"
-      },
-      "engines": {
-        "node": ">=10.0.0"
-      },
-      "peerDependenciesMeta": {
-        "ibm_db": {
-          "optional": true
-        },
-        "mariadb": {
-          "optional": true
-        },
-        "mysql2": {
-          "optional": true
-        },
-        "oracledb": {
-          "optional": true
-        },
-        "pg": {
-          "optional": true
-        },
-        "pg-hstore": {
-          "optional": true
-        },
-        "snowflake-sdk": {
-          "optional": true
-        },
-        "sqlite3": {
-          "optional": true
-        },
-        "tedious": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/sequelize-pool": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-7.1.0.tgz",
-      "integrity": "sha512-G9c0qlIWQSK29pR/5U2JF5dDQeqqHRragoyahj/Nx4KOOQ3CPPfzxnfqFPCSB7x5UgjOgnZ61nSxz+fjDpRlJg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
     "node_modules/serve-static": {
       "version": "2.2.0",
@@ -1391,13 +1212,4 @@
       }
     },
-    "node_modules/split2": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
-      "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
-      "license": "ISC",
-      "engines": {
-        "node": ">= 10.x"
-      }
-    },
     "node_modules/statuses": {
       "version": "2.0.1",
@@ -1444,10 +1256,4 @@
       }
     },
-    "node_modules/toposort-class": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz",
-      "integrity": "sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg==",
-      "license": "MIT"
-    },
     "node_modules/touch": {
       "version": "3.1.1",
@@ -1459,4 +1265,10 @@
         "nodetouch": "bin/nodetouch.js"
       }
+    },
+    "node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+      "license": "MIT"
     },
     "node_modules/type-is": {
@@ -1496,22 +1308,4 @@
       }
     },
-    "node_modules/uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
-      "license": "MIT",
-      "bin": {
-        "uuid": "dist/bin/uuid"
-      }
-    },
-    "node_modules/validator": {
-      "version": "13.15.15",
-      "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz",
-      "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.10"
-      }
-    },
     "node_modules/vary": {
       "version": "1.1.2",
@@ -1523,11 +1317,18 @@
       }
     },
-    "node_modules/wkx": {
-      "version": "0.5.0",
-      "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz",
-      "integrity": "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==",
-      "license": "MIT",
-      "dependencies": {
-        "@types/node": "*"
+    "node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "license": "MIT",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
       }
     },
@@ -1538,11 +1339,23 @@
       "license": "ISC"
     },
-    "node_modules/xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.4"
+    "node_modules/ws": {
+      "version": "8.18.2",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz",
+      "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
       }
     }
Index: backend/package.json
===================================================================
--- backend/package.json	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/package.json	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -16,6 +16,5 @@
     "dotenv": "^16.5.0",
     "express": "^5.1.0",
-    "pg": "^8.16.0",
-    "sequelize": "^6.37.7"
+    "@supabase/supabase-js": "^2.39.7"
   },
   "devDependencies": {
Index: backend/server.js
===================================================================
--- backend/server.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ backend/server.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -3,7 +3,4 @@
 const indexRouter = require('./routers/indexRouter');
 const path = require('path');
-const { syncDatabase } = require('./db/dbInit');
-
-syncDatabase();
 
 app.use(express.json());
Index: ckend/services/userService.js
===================================================================
--- backend/services/userService.js	(revision 43ad9980da88fa7f1246861403cede91968ac854)
+++ 	(revision )
@@ -1,35 +1,0 @@
-// const User = require('../models/User');
-const sequelize = require('../db/dbConfig');
-const createUser = async (userData) => {
-  try {
-    const User = sequelize.models.User;
-
-    if (!User) {
-      throw new Error('User model not found');
-    }
-    const newUser = await User.create({
-      username: userData.username,
-      email: userData.email,
-      password: userData.password,
-    });
-
-    // Return user data without password
-    return {
-      id: newUser.id,
-      username: newUser.username,
-      email: newUser.email,
-      createdAt: newUser.createdAt,
-    };
-  } catch (error) {
-    // Handle specific database errors
-    if (error.name === 'SequelizeUniqueConstraintError') {
-      const field = error.errors[0].path;
-      throw new Error(`${field} already exists`);
-    }
-    throw error;
-  }
-};
-
-module.exports = {
-  createUser,
-};
Index: backend/supabaseClient.js
===================================================================
--- backend/supabaseClient.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
+++ backend/supabaseClient.js	(revision 9fbde3d9419257ac06da3da5412bc97aae0426e7)
@@ -0,0 +1,13 @@
+const { createClient } = require('@supabase/supabase-js');
+require('dotenv').config();
+
+const supabaseUrl = process.env.SUPABASE_URL;
+const supabaseKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
+
+if (!supabaseUrl || !supabaseKey) {
+  throw new Error('Missing SUPABASE_URL or SUPABASE_SERVICE_ROLE_KEY in environment variables');
+}
+
+const supabase = createClient(supabaseUrl, supabaseKey);
+
+module.exports = supabase;
